├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ ├── metadata.js │ └── ci.yml ├── .eslintignore ├── .gitignore ├── .vscodeignore ├── assets └── logo.png ├── .prettierignore ├── src ├── utils │ ├── function.ts │ ├── fs.ts │ ├── color.ts │ ├── neon.ts │ ├── path.ts │ ├── process.ts │ ├── async.ts │ ├── phpstan.ts │ └── vscode.ts ├── commands │ ├── showOutput.ts │ ├── clearProblems.ts │ ├── stopAnalyse.ts │ ├── toggleFileWatcher.ts │ ├── analyseCurrentPath.ts │ ├── pauseFileWatcher.ts │ ├── resumeFileWatcher.ts │ ├── findPHPStanConfigPath.ts │ ├── loadPHPStanConfig.ts │ ├── index.ts │ ├── clearCache.ts │ └── analyse.ts ├── index.ts └── extension.ts ├── .prettierrc.js ├── tsconfig.json ├── .eslintrc.json ├── .vscode ├── launch.json └── settings.json ├── .changeset └── config.json ├── vite.config.ts ├── LICENSE ├── scripts └── build-vsce.mjs ├── README.md ├── package.json ├── CHANGELOG.md └── pnpm-lock.yaml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [juanrgm] 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .history 2 | dist 3 | lib 4 | node_modules 5 | package-lock.json -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .eslintcache 2 | .history 3 | *.vsix 4 | dist 5 | lib 6 | node_modules -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | ** 2 | !assets 3 | !dist 4 | !README.md 5 | !CHANGELOG.md 6 | !LICENSE -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swordev/phpstan-vscode/HEAD/assets/logo.png -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .eslintcache 2 | .history 3 | CHANGELOG.md 4 | dist 5 | lib 6 | pnpm-lock.yaml -------------------------------------------------------------------------------- /src/utils/function.ts: -------------------------------------------------------------------------------- 1 | export function getFunctionName(cb: (...args: never[]) => unknown) { 2 | return cb.name.split("$")[0]; 3 | } 4 | -------------------------------------------------------------------------------- /src/commands/showOutput.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | 3 | export default function showOutput(ext: Ext) { 4 | ext.outputChannel.show(); 5 | } 6 | -------------------------------------------------------------------------------- /src/commands/clearProblems.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | 3 | export default function clearProblems(ext: Ext) { 4 | ext.diagnostic.clear(); 5 | } 6 | -------------------------------------------------------------------------------- /src/commands/stopAnalyse.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | 3 | export default function stopAnalyse(ext: Ext) { 4 | ext.store.analyse.channel.emit("stop"); 5 | } 6 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require("@trivago/prettier-plugin-sort-imports"), 4 | require("prettier-plugin-sort-json"), 5 | require("prettier-plugin-packagejson"), 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "target": "ES6", 5 | "outDir": "lib", 6 | "strict": true, 7 | "incremental": true 8 | }, 9 | "include": ["./src/**/*.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "node": true 4 | }, 5 | "extends": [ 6 | "eslint:recommended", 7 | "plugin:@typescript-eslint/eslint-recommended", 8 | "plugin:@typescript-eslint/recommended" 9 | ], 10 | "parser": "@typescript-eslint/parser", 11 | "root": true 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/fs.ts: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs"; 2 | 3 | export async function checkFile(path: string): Promise { 4 | try { 5 | return !!(await fs.stat(path)); 6 | } catch (error) { 7 | if ((error as NodeJS.ErrnoException).code === "ENOENT") return false; 8 | throw error; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Run Extension", 5 | "type": "extensionHost", 6 | "request": "launch", 7 | "args": ["--extensionDevelopmentPath=${workspaceFolder}"], 8 | "outFiles": ["${workspaceFolder}/dist/**/*.js"] 9 | } 10 | ], 11 | "version": "0.2.0" 12 | } 13 | -------------------------------------------------------------------------------- /src/commands/toggleFileWatcher.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import pauseFileWatcher from "./pauseFileWatcher"; 3 | import resumeFileWatcher from "./resumeFileWatcher"; 4 | 5 | export default function toggleFileWatcher(ext: Ext) { 6 | ext.store.fileWatcher.enabled 7 | ? pauseFileWatcher(ext) 8 | : resumeFileWatcher(ext); 9 | } 10 | -------------------------------------------------------------------------------- /src/utils/color.ts: -------------------------------------------------------------------------------- 1 | export function uncolorize(text: string): string { 2 | const pattern = [ 3 | "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", 4 | "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))", 5 | ].join("|"); 6 | 7 | return text.replace(new RegExp(pattern, "g"), ""); 8 | } 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.1.1/schema.json", 3 | "access": "public", 4 | "baseBranch": "main", 5 | "changelog": [ 6 | "@changesets/changelog-github", 7 | { 8 | "repo": "swordev/phpstan-vscode" 9 | } 10 | ], 11 | "commit": false, 12 | "fixed": [], 13 | "ignore": [], 14 | "linked": [], 15 | "updateInternalDependencies": "patch" 16 | } 17 | -------------------------------------------------------------------------------- /src/commands/analyseCurrentPath.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import { sanitizeFsPath } from "../utils/path"; 3 | import analyse from "./analyse"; 4 | import { Uri, window } from "vscode"; 5 | 6 | export default async function analyseCurrentPath(ext: Ext, uri?: Uri) { 7 | const fsPath = uri?.fsPath || window.activeTextEditor?.document.uri.fsPath; 8 | if (fsPath) await analyse(ext, 0, [sanitizeFsPath(fsPath)]); 9 | } 10 | -------------------------------------------------------------------------------- /src/commands/pauseFileWatcher.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import resumeFileWatcher from "./resumeFileWatcher"; 3 | 4 | export default function pauseFileWatcher(ext: Ext) { 5 | ext.setStatusBar( 6 | (ext.store.fileWatcher.statusBarFixed = { 7 | text: "$(debug-pause) PHPStan", 8 | tooltip: "Resume file watcher", 9 | command: resumeFileWatcher, 10 | }) 11 | ); 12 | ext.store.fileWatcher.enabled = false; 13 | } 14 | -------------------------------------------------------------------------------- /src/commands/resumeFileWatcher.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import analyse from "./analyse"; 3 | 4 | export default async function resumeFileWatcher(ext: Ext) { 5 | ext.setStatusBar({ 6 | text: "$(debug-pause) PHPStan", 7 | tooltip: "Resume file watcher", 8 | command: resumeFileWatcher, 9 | }); 10 | ext.store.fileWatcher.statusBarFixed = undefined; 11 | ext.store.fileWatcher.enabled = true; 12 | await analyse(ext, 0); 13 | } 14 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[json]": { 3 | "editor.defaultFormatter": "esbenp.prettier-vscode" 4 | }, 5 | "[jsonc]": { 6 | "editor.defaultFormatter": "esbenp.prettier-vscode" 7 | }, 8 | "[typescript]": { 9 | "editor.defaultFormatter": "esbenp.prettier-vscode" 10 | }, 11 | "[yaml]": { 12 | "editor.defaultFormatter": "esbenp.prettier-vscode" 13 | }, 14 | "editor.defaultFormatter": "esbenp.prettier-vscode", 15 | "editor.formatOnSave": true 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/neon.ts: -------------------------------------------------------------------------------- 1 | import { readFile } from "fs/promises"; 2 | import { load } from "js-yaml"; 3 | 4 | export function resolveNeon(contents: string, env: Record) { 5 | return contents.replace(/(?:%(\w+)%)/g, (_, name) => env[name] ?? ""); 6 | } 7 | 8 | export async function parseNeonFile( 9 | path: string, 10 | env: Record = {} 11 | ): Promise { 12 | const contents = (await readFile(path)).toString(); 13 | const yaml = resolveNeon(contents.replace(/\t/g, " "), env); 14 | return load(yaml) as Promise; 15 | } 16 | -------------------------------------------------------------------------------- /src/commands/findPHPStanConfigPath.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import { RelativePattern, workspace } from "vscode"; 3 | 4 | export default async function findPHPStanConfigPath(ext: Ext) { 5 | const { settings, cwd } = ext; 6 | const [configUri] = await workspace.findFiles( 7 | new RelativePattern(cwd, settings.configPath), 8 | null, 9 | 1 10 | ); 11 | if (!configUri) throw new Error(`Config path not found.`); 12 | const configPath = configUri.fsPath; 13 | ext.log({ tag: "configPath", message: configPath }); 14 | return configPath; 15 | } 16 | -------------------------------------------------------------------------------- /src/utils/path.ts: -------------------------------------------------------------------------------- 1 | import { isAbsolute, join, normalize } from "path"; 2 | 3 | /** 4 | * @link https://github.com/microsoft/vscode/blob/84a3473d/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts#L227 5 | */ 6 | export function sanitizeFsPath(path: string) { 7 | if (process.platform === "win32" && path[1] === ":") { 8 | return path[0].toUpperCase() + path.substr(1); 9 | } else { 10 | return path; 11 | } 12 | } 13 | 14 | export function resolvePath(path: string, cwd: string): string { 15 | if (!isAbsolute(path)) path = join(cwd, path); 16 | return normalize(path); 17 | } 18 | -------------------------------------------------------------------------------- /src/commands/loadPHPStanConfig.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import { parsePHPStanConfigFile } from "../utils/phpstan"; 3 | import { dirname, join, normalize } from "path"; 4 | 5 | export default async function loadPHPStanConfig(ext: Ext) { 6 | if (!ext.store.phpstan.configPath) throw new Error("Config path is required"); 7 | const config = await parsePHPStanConfigFile(ext.store.phpstan.configPath, { 8 | currentWorkingDirectory: ext.cwd, 9 | rootDir: normalize(dirname(join(ext.cwd, ext.settings.path))), 10 | }); 11 | ext.log({ tag: "config", message: JSON.stringify(config, null, 2) }); 12 | return config; 13 | } 14 | -------------------------------------------------------------------------------- /src/utils/process.ts: -------------------------------------------------------------------------------- 1 | import { ChildProcess } from "child_process"; 2 | 3 | export async function killProcess(p: ChildProcess) { 4 | p.stdout?.removeAllListeners(); 5 | p.stderr?.removeAllListeners(); 6 | try { 7 | return p.kill("SIGKILL"); 8 | } catch (error) { 9 | return false; 10 | } 11 | } 12 | 13 | export async function waitForClose(childProcess: ChildProcess) { 14 | return new Promise((resolve, reject) => { 15 | childProcess.on("error", reject); 16 | childProcess.on("exit", (exitCode) => { 17 | if (childProcess.killed) resolve(exitCode); 18 | }); 19 | childProcess.on("close", (exitCode) => resolve(exitCode)); 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { commands } from "./commands"; 2 | import { Ext } from "./extension"; 3 | import { waitForWorkspaceReady } from "./utils/vscode"; 4 | 5 | let ext: Ext | undefined; 6 | 7 | export const name = "phpstan"; 8 | 9 | export function activate(): void { 10 | ext = new Ext({ 11 | name, 12 | commands, 13 | }); 14 | waitForWorkspaceReady(ext.cwd, { 15 | tries: 30, 16 | tryTimeout: 1000, 17 | onTry: (tryNumber) => { 18 | ext?.log({ 19 | tag: "activate", 20 | message: `Waiting for workspace to be ready (${tryNumber})`, 21 | }); 22 | }, 23 | }) 24 | .finally(() => ext?.activate()) 25 | .catch((error) => ext?.log(error)); 26 | } 27 | 28 | export function deactivate(): void { 29 | ext?.deactivate(); 30 | ext = undefined; 31 | } 32 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { builtinModules } from "module"; 2 | import { resolve } from "path"; 3 | import { defineConfig } from "vite"; 4 | import checker from "vite-plugin-checker"; 5 | 6 | export default defineConfig({ 7 | plugins: [ 8 | checker({ 9 | typescript: true, 10 | }), 11 | ], 12 | build: { 13 | minify: false, 14 | sourcemap: true, 15 | lib: { 16 | entry: resolve(__dirname, "src/index.ts"), 17 | fileName: "index", 18 | formats: ["cjs"], 19 | }, 20 | rollupOptions: { 21 | external: [ 22 | "vscode", 23 | ...builtinModules, 24 | ...builtinModules.map((v) => `node:${v}`), 25 | ], 26 | output: { 27 | manualChunks: { 28 | vendor: ["js-yaml"], 29 | }, 30 | }, 31 | }, 32 | }, 33 | }); 34 | -------------------------------------------------------------------------------- /src/utils/async.ts: -------------------------------------------------------------------------------- 1 | export type DelayedTimeout = { 2 | readonly running: boolean; 3 | readonly pending: boolean; 4 | run: (cb: () => unknown, ms?: number) => void; 5 | }; 6 | 7 | export function createDelayedTimeout(defaultsMs?: number) { 8 | let timeout: NodeJS.Timeout | undefined; 9 | let running = false; 10 | let pending = false; 11 | return { 12 | get pending() { 13 | return pending; 14 | }, 15 | get running() { 16 | return running; 17 | }, 18 | run: (cb: () => unknown, ms = defaultsMs) => { 19 | pending = true; 20 | if (timeout) clearTimeout(timeout); 21 | timeout = setTimeout(async () => { 22 | running = true; 23 | try { 24 | await cb(); 25 | } finally { 26 | running = pending = false; 27 | } 28 | }, ms); 29 | }, 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /src/commands/index.ts: -------------------------------------------------------------------------------- 1 | import analyse from "./analyse"; 2 | import analyseCurrentPath from "./analyseCurrentPath"; 3 | import { clearCache } from "./clearCache"; 4 | import clearProblems from "./clearProblems"; 5 | import findPHPStanConfigPath from "./findPHPStanConfigPath"; 6 | import loadPHPStanConfig from "./loadPHPStanConfig"; 7 | import pauseFileWatcher from "./pauseFileWatcher"; 8 | import resumeFileWatcher from "./resumeFileWatcher"; 9 | import showOutput from "./showOutput"; 10 | import stopAnalyse from "./stopAnalyse"; 11 | import toggleFileWatcher from "./toggleFileWatcher"; 12 | 13 | export const commands = { 14 | analyse, 15 | analyseCurrentPath, 16 | clearCache, 17 | clearProblems, 18 | findPHPStanConfigPath, 19 | loadPHPStanConfig, 20 | pauseFileWatcher, 21 | resumeFileWatcher, 22 | showOutput, 23 | stopAnalyse, 24 | toggleFileWatcher, 25 | }; 26 | export default commands; 27 | -------------------------------------------------------------------------------- /src/commands/clearCache.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import { waitForClose } from "../utils/process"; 3 | import showOutput from "./showOutput"; 4 | import { spawn } from "child_process"; 5 | 6 | export async function clearCache(ext: Ext) { 7 | const { settings } = ext; 8 | 9 | ext.setStatusBar({ 10 | text: "$(sync~spin) PHPStan clearing cache...", 11 | command: showOutput, 12 | }); 13 | 14 | const childProcess = spawn( 15 | settings.phpPath, 16 | [ 17 | "-f", 18 | settings.path, 19 | "--", 20 | "clear-result-cache", 21 | ...(ext.store.phpstan.configPath 22 | ? ["-c", ext.store.phpstan.configPath] 23 | : []), 24 | ], 25 | { 26 | cwd: ext.cwd, 27 | } 28 | ); 29 | 30 | childProcess.stdout.on("data", (buffer: Buffer) => ext.log(buffer)); 31 | 32 | childProcess.stderr.on("data", (buffer: Buffer) => { 33 | ext.log(buffer); 34 | }); 35 | 36 | await waitForClose(childProcess); 37 | 38 | ext.clearStatusBar(); 39 | } 40 | -------------------------------------------------------------------------------- /.github/workflows/metadata.js: -------------------------------------------------------------------------------- 1 | const { spawnSync } = require("child_process"); 2 | const { readFileSync } = require("fs"); 3 | const { join } = require("path"); 4 | 5 | module.exports = async ({ core }) => { 6 | const output = {}; 7 | const rootPath = `${__dirname}/../..`; 8 | const vsceResult = spawnSync(`node`, [ 9 | join(rootPath, "./node_modules/vsce/vsce"), 10 | "show", 11 | "swordev.phpstan", 12 | "--json", 13 | ]); 14 | if (vsceResult.error) throw vsceResult.error; 15 | const vsceJson = JSON.parse(vsceResult.stdout.toString()); 16 | const pkgPath = `${rootPath}/package.json`; 17 | const pkg = JSON.parse(readFileSync(pkgPath).toString()); 18 | 19 | output["currentVersion"] = pkg.version; 20 | output["publishedVersion"] = vsceJson.versions[0].version; 21 | output["publish"] = output["currentVersion"] !== output["publishedVersion"]; 22 | 23 | for (const name in output) { 24 | core.setOutput(name, output[name]); 25 | } 26 | 27 | console.log(output); 28 | }; 29 | 30 | module.exports({ 31 | core: { 32 | setOutput: () => {}, 33 | }, 34 | }); 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Juanra Gálvez 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. -------------------------------------------------------------------------------- /src/utils/phpstan.ts: -------------------------------------------------------------------------------- 1 | import { parseNeonFile } from "./neon"; 2 | import { resolvePath } from "./path"; 3 | 4 | export type PHPStanAnalyseResult = { 5 | totals: { 6 | errors: number; 7 | file_errors: number; 8 | }; 9 | files: { 10 | [path: string]: { 11 | errors: number; 12 | messages: PHPStanAnalyseMessageItem[]; 13 | }; 14 | }; 15 | errors: string[]; 16 | }; 17 | 18 | export type PHPStanAnalyseMessageItem = { 19 | message: string; 20 | line: number | null; 21 | ignorable: boolean; 22 | tip?: string; 23 | }; 24 | 25 | export type PHPStanConfig = { 26 | parameters?: { 27 | paths?: string[]; 28 | excludes_analyse?: string[]; 29 | fileExtensions?: string[]; 30 | bootstrapFiles?: string[]; 31 | }; 32 | }; 33 | 34 | export type PHPStanConfigEnv = { 35 | rootDir: string; 36 | currentWorkingDirectory: string; 37 | }; 38 | 39 | export function parsePHPStanAnalyseResult( 40 | stdout: string 41 | ): PHPStanAnalyseResult { 42 | return JSON.parse(stdout); 43 | } 44 | 45 | export async function parsePHPStanConfigFile( 46 | path: string, 47 | env: PHPStanConfigEnv 48 | ): Promise { 49 | const config = await parseNeonFile(path, env); 50 | return normalizePHPStanConfig(config, env.currentWorkingDirectory); 51 | } 52 | 53 | export function normalizePHPStanConfig( 54 | config: PHPStanConfig, 55 | cwd: string 56 | ): PHPStanConfig { 57 | config = Object.assign({}, config); 58 | config.parameters = Object.assign({}, config.parameters); 59 | const params = config.parameters; 60 | const resolve = (v: string) => resolvePath(v, cwd); 61 | 62 | params.paths = params.paths?.map(resolve); 63 | params.excludes_analyse = params.excludes_analyse?.map(resolve); 64 | params.bootstrapFiles = params.bootstrapFiles?.map(resolve); 65 | 66 | return config; 67 | } 68 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | push: 4 | branches: 5 | - main 6 | - develop 7 | env: 8 | NODE_VERSION: 16 9 | PNPM_VERSION: 7 10 | jobs: 11 | release: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v3 15 | with: 16 | fetch-depth: 0 17 | - uses: pnpm/action-setup@v2 18 | with: 19 | version: ${{ env.PNPM_VERSION }} 20 | - uses: actions/setup-node@v2 21 | with: 22 | node-version: ${{ env.NODE_VERSION }} 23 | cache: "pnpm" 24 | - run: pnpm install 25 | env: 26 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 27 | - run: pnpm build 28 | - name: Upload extension 29 | uses: actions/upload-artifact@v3 30 | with: 31 | name: swordev.phpstan.vsix 32 | path: "*.vsix" 33 | - name: Publish NPM package 34 | id: changesets 35 | uses: changesets/action@v1 36 | with: 37 | commit: "chore: update versions" 38 | title: Update versions 39 | publish: npx changeset publish 40 | env: 41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 42 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 43 | - name: Build metadata 44 | id: metadata 45 | uses: actions/github-script@v5 46 | env: 47 | PUBLISHED_PACKAGES: ${{ steps.changesets.outputs.publishedPackages }} 48 | with: 49 | script: | 50 | const metadata = require('./.github/workflows/metadata.js') 51 | await metadata({ github, context, core }) 52 | - name: Publish VSCode extension 53 | if: steps.metadata.outputs['publish'] == 'true' && steps.changesets.outputs.hasChangesets == 'false' 54 | run: npx vsce publish --packagePath $(find . -iname *.vsix) 55 | env: 56 | VSCE_PAT: ${{secrets.VSCODE_MARKETPLACE_TOKEN}} 57 | -------------------------------------------------------------------------------- /scripts/build-vsce.mjs: -------------------------------------------------------------------------------- 1 | import getReleasePlan from "@changesets/get-release-plan"; 2 | import { spawnSync } from "child_process"; 3 | import { readFile, writeFile } from "fs/promises"; 4 | import { dirname, join } from "path"; 5 | import { fileURLToPath } from "url"; 6 | 7 | const __filename = fileURLToPath(import.meta.url); 8 | const rootPath = dirname(dirname(__filename)); 9 | const vsc = `${rootPath}/node_modules/vsce/vsce`; 10 | const pkgPath = `${rootPath}/package.json`; 11 | const pkgContents = await readFile(pkgPath); 12 | const pkg = JSON.parse(pkgContents.toString()); 13 | 14 | async function getBranchName() { 15 | const contents = (await readFile(join(rootPath, ".git/HEAD"))).toString(); 16 | const parts = contents.trim().split("/"); 17 | return parts[parts.length - 1]; 18 | } 19 | 20 | async function getCommitId(branch) { 21 | if (!branch) branch = await getBranchName(); 22 | const contents = await readFile(join(rootPath, ".git/refs/heads", branch)); 23 | return contents.toString().trim(); 24 | } 25 | 26 | async function getNextVersion() { 27 | const result = await getReleasePlan.default(rootPath); 28 | const newVersion = result.releases.find( 29 | (release) => release.name === pkg.name 30 | )?.newVersion; 31 | return newVersion 32 | ? `${newVersion}-${(await getCommitId()).slice(0, 8)}` 33 | : pkg.version; 34 | } 35 | 36 | async function writePackageFile(pkg) { 37 | await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n"); 38 | } 39 | 40 | try { 41 | const newPkg = { ...pkg }; 42 | newPkg.name = "phpstan"; 43 | newPkg.version = await getNextVersion(); 44 | await writePackageFile(newPkg); 45 | spawnSync( 46 | "node", 47 | [ 48 | vsc, 49 | "package", 50 | "--no-dependencies", 51 | "--out", 52 | `swordev.phpstan-${newPkg.version}.vsix`, 53 | ], 54 | { 55 | stdio: "inherit", 56 | } 57 | ); 58 | } finally { 59 | await writePackageFile(pkg); 60 | } 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # phpstan-vscode 2 | 3 | [![version]](https://marketplace.visualstudio.com/items?itemName=swordev.phpstan) [![ci]](https://github.com/swordev/phpstan-vscode/actions/workflows/ci.yml) [![downloads]](https://marketplace.visualstudio.com/items?itemName=swordev.phpstan) 4 | 5 | [ci]: https://img.shields.io/github/workflow/status/swordev/phpstan-vscode/CI?label=CI 6 | [version]: https://img.shields.io/visual-studio-marketplace/v/swordev.phpstan?logo= 7 | [downloads]: https://img.shields.io/visual-studio-marketplace/d/swordev.phpstan 8 | 9 | [PHPStan](https://phpstan.org) extension for VSCode. 10 | 11 | > Analyzes your PHP project manually or on every file change with PHPStan and shows the result in the VSCode problems tab. 12 | 13 | ## Features 14 | 15 | - Runs PHPStan analyse on every PHP file change. 16 | - Shows all PHPStan problems of the whole project. 17 | - Parses the PHPStan config file for configuring the extension. 18 | - Commands: 19 | - `phpstan.showOutput`: show output. 20 | - `phpstan.analyse`: analyse. 21 | - `phpstan.analyseCurrentPath`: analyse current path. 22 | - Also available in the explorer context menu. 23 | - `phpstan.stopAnalyse`: stop analyse. 24 | - `phpstan.pauseFileWatcher`: pause file watcher. 25 | - `phpstan.resumeFileWatcher`: resume file watcher. 26 | - `phpstan.toggleFileWatcher`: toggle file watcher. 27 | - `phpstan.clearProblems`: clear problems. 28 | - `phpstan.clearCache`: clear cache. 29 | 30 | ## Usage 31 | 32 | 1. Install [PHPStan extension](https://marketplace.visualstudio.com/items?itemName=swordev.phpstan). 33 | 2. Provide a [phpstan.neon](https://phpstan.org/config-reference#neon-format) file on the project root dir. 34 | 3. Install PHPStan on the project. 35 | 36 | ```sh 37 | composer require phpstan/phpstan --dev 38 | ``` 39 | 40 | ## Contributing 41 | 42 | To contribute to the project, follow these steps: 43 | 44 | 1. Fork this repository. 45 | 2. Create a branch: `git checkout -b `. 46 | 3. Make your changes and check them: `pnpm changeset`. 47 | 4. Commit your changes: `git commit -m ''`. 48 | 5. Push to the original branch: `git push origin `. 49 | 6. Create the pull request. 50 | 51 | Alternatively see the GitHub documentation on [creating a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request). 52 | 53 | ## License 54 | 55 | Distributed under the MIT License. See LICENSE for more information. 56 | -------------------------------------------------------------------------------- /src/utils/vscode.ts: -------------------------------------------------------------------------------- 1 | import { sanitizeFsPath } from "./path"; 2 | import { readdir } from "fs/promises"; 3 | import { setTimeout } from "timers/promises"; 4 | import { 5 | Disposable, 6 | FileSystemWatcher, 7 | RelativePattern, 8 | Uri, 9 | workspace, 10 | } from "vscode"; 11 | 12 | export function getWorkspacePath() { 13 | const [folder] = workspace.workspaceFolders || []; 14 | const result = folder ? folder.uri.fsPath : undefined; 15 | if (!result) throw new Error(`Workspace path is not defined`); 16 | return sanitizeFsPath(result); 17 | } 18 | 19 | export function isDisposable(object: unknown): object is Disposable { 20 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 21 | return !!object && typeof (object as any)["dispose"] === "function"; 22 | } 23 | 24 | export function onFileWatcherEvent( 25 | watcher: FileSystemWatcher, 26 | cb: (uri: Uri, eventName: "created" | "deleted" | "changed") => void 27 | ) { 28 | watcher.onDidCreate((uri) => cb(uri, "created")); 29 | watcher.onDidDelete((uri) => cb(uri, "deleted")); 30 | watcher.onDidChange((uri) => cb(uri, "changed")); 31 | } 32 | 33 | export function onChangeExtensionSettings(extName: string, cb: () => void) { 34 | return workspace.onDidChangeConfiguration((event) => { 35 | if (event.affectsConfiguration(extName)) { 36 | cb(); 37 | } 38 | }); 39 | } 40 | 41 | export type FileWatcherInput = 42 | | string 43 | | { extensions: string[] } 44 | | RelativePattern 45 | | FileSystemWatcher; 46 | export type FileWatcherCb = (uri: Uri, eventName: string) => void; 47 | 48 | export function createFileWatcher(input: FileWatcherInput, cb: FileWatcherCb) { 49 | const watcher = 50 | typeof input === "string" || input instanceof RelativePattern 51 | ? workspace.createFileSystemWatcher(input) 52 | : isDisposable(input) 53 | ? input 54 | : workspace.createFileSystemWatcher( 55 | `**/*.{${input.extensions.join(",")}}` 56 | ); 57 | 58 | onFileWatcherEvent(watcher, cb); 59 | 60 | return watcher; 61 | } 62 | 63 | export function createFileExtensionWatcher(options: { 64 | extensions: string[]; 65 | onPaths: () => string[]; 66 | onMatch: (uri: Uri, eventName: string) => void; 67 | }) { 68 | return createFileWatcher( 69 | `**/*.{${options.extensions.join(",")}}`, 70 | (uri, eventName) => { 71 | const subjectPath = sanitizeFsPath(uri.fsPath); 72 | const found = options 73 | .onPaths() 74 | .some((patternPath) => subjectPath.startsWith(patternPath)); 75 | if (found) return options.onMatch(uri, eventName); 76 | } 77 | ); 78 | } 79 | 80 | export function createFileWatcherManager() { 81 | let fileWatchers: FileSystemWatcher[] = []; 82 | return { 83 | register: (input: FileWatcherInput, cb: FileWatcherCb) => { 84 | return fileWatchers.push(createFileWatcher(input, cb)); 85 | }, 86 | dispose: () => { 87 | fileWatchers.forEach((v) => v.dispose()); 88 | fileWatchers = []; 89 | }, 90 | }; 91 | } 92 | 93 | export async function isWorkspaceReady(path: string) { 94 | const nodeHaveFiles = !!(await readdir(path)); 95 | if (!nodeHaveFiles) return true; 96 | const vscodeHaveFiles = !!(await workspace.findFiles("*", undefined, 1)); 97 | return vscodeHaveFiles ? true : false; 98 | } 99 | 100 | export async function waitForWorkspaceReady( 101 | path: string, 102 | options: { 103 | tries?: number; 104 | tryTimeout?: number; 105 | onTry?: (value: number) => void; 106 | } = {} 107 | ) { 108 | const tries = Math.max(0, options.tries || 0); 109 | for (let value = 1; !tries || value <= tries; ++value) { 110 | options.onTry?.(value); 111 | if (await isWorkspaceReady(path)) return; 112 | if (options.tryTimeout) await setTimeout(options.tryTimeout); 113 | } 114 | throw new Error(`Workspace is not ready`); 115 | } 116 | -------------------------------------------------------------------------------- /src/commands/analyse.ts: -------------------------------------------------------------------------------- 1 | import { Ext } from "../extension"; 2 | import { 3 | parsePHPStanAnalyseResult, 4 | PHPStanAnalyseMessageItem, 5 | PHPStanAnalyseResult, 6 | } from "../utils/phpstan"; 7 | import { killProcess, waitForClose } from "../utils/process"; 8 | import showOutput from "./showOutput"; 9 | import stopAnalyse from "./stopAnalyse"; 10 | import { spawn } from "child_process"; 11 | import { Diagnostic, DiagnosticSeverity, Range, Uri } from "vscode"; 12 | 13 | function setStatusBarProgress(ext: Ext, progress?: number) { 14 | let text = "$(sync~spin) PHPStan analysing..."; 15 | if (!!progress && progress > 0) text += ` (${progress}%)`; 16 | 17 | ext.setStatusBar({ text, command: showOutput }); 18 | } 19 | 20 | function handleDiagnosticMessage(messageItem: PHPStanAnalyseMessageItem) { 21 | return messageItem.tip 22 | ? messageItem.message + "\n💡 " + messageItem.tip 23 | : messageItem.message; 24 | } 25 | 26 | async function refreshDiagnostics(ext: Ext, result: PHPStanAnalyseResult) { 27 | const { diagnostic } = ext; 28 | diagnostic.clear(); 29 | 30 | const globalDiagnostics: Diagnostic[] = []; 31 | 32 | for (const error of result.errors) { 33 | const range = new Range(0, 0, 0, 0); 34 | const diagnostic = new Diagnostic(range, error, DiagnosticSeverity.Error); 35 | globalDiagnostics.push(diagnostic); 36 | } 37 | 38 | if (globalDiagnostics.length) { 39 | ext.diagnostic.set( 40 | Uri.file(ext.store.phpstan.configPath ?? "."), 41 | globalDiagnostics 42 | ); 43 | } 44 | 45 | // https://github.com/phpstan/phpstan-src/blob/6d228a53/src/Analyser/MutatingScope.php#L289 46 | const contextRegex = / \(in context of .+\)$/; 47 | 48 | for (let path in result.files) { 49 | const pathItem = result.files[path]; 50 | const diagnostics: Diagnostic[] = []; 51 | for (const messageItem of pathItem.messages) { 52 | const line = messageItem.line ? messageItem.line - 1 : 0; 53 | const range = new Range(line, 0, line, 0); 54 | const diagnostic = new Diagnostic( 55 | range, 56 | handleDiagnosticMessage(messageItem), 57 | DiagnosticSeverity.Error 58 | ); 59 | 60 | diagnostics.push(diagnostic); 61 | } 62 | 63 | const matches = contextRegex.exec(path); 64 | 65 | if (matches) path = path.slice(0, matches.index); 66 | 67 | diagnostic.set(Uri.file(path), diagnostics); 68 | } 69 | } 70 | 71 | async function runAnalyse(ext: Ext, args?: string[]) { 72 | setStatusBarProgress(ext); 73 | 74 | const childProcess = spawn( 75 | ext.settings.phpPath, 76 | [ 77 | "-f", 78 | ext.settings.path, 79 | "--", 80 | "analyse", 81 | ...(ext.store.phpstan.configPath 82 | ? ["-c", ext.store.phpstan.configPath] 83 | : []), 84 | ...(ext.settings.memoryLimit 85 | ? [`--memory-limit=${ext.settings.memoryLimit}`] 86 | : []), 87 | "--error-format=json", 88 | ...(args ?? []), 89 | ], 90 | { 91 | cwd: ext.cwd, 92 | } 93 | ); 94 | 95 | let stdout = ""; 96 | let skipCloseError = false; 97 | const { channel } = ext.store.analyse; 98 | 99 | channel.once("stop", async () => { 100 | skipCloseError = true; 101 | try { 102 | const killed = await killProcess(childProcess); 103 | ext.log({ 104 | tag: "call", 105 | message: `killProcess (${killed ? "true" : "false"})`, 106 | }); 107 | } catch (error) { 108 | ext.log(error as Error); 109 | } 110 | }); 111 | 112 | try { 113 | childProcess.stdout.on("data", (buffer: Buffer) => { 114 | stdout += buffer.toString(); 115 | ext.log(buffer); 116 | }); 117 | childProcess.stderr.on("data", (buffer: Buffer) => { 118 | const progress = /(\d{1,3})%\s*$/.exec(buffer.toString())?.[1]; 119 | if (progress) setStatusBarProgress(ext, Number(progress)); 120 | ext.log(buffer); 121 | }); 122 | try { 123 | await waitForClose(childProcess); 124 | } catch (error) { 125 | if (skipCloseError) { 126 | ext.clearStatusBar(); 127 | return; 128 | } 129 | throw error; 130 | } 131 | } finally { 132 | channel.removeAllListeners(); 133 | } 134 | 135 | if (stdout) { 136 | const phpstanResult = parsePHPStanAnalyseResult(stdout); 137 | refreshDiagnostics(ext, phpstanResult); 138 | } 139 | 140 | ext.clearStatusBar(); 141 | } 142 | 143 | export default async function analyse(ext: Ext, ms?: number, args?: string[]) { 144 | stopAnalyse(ext); 145 | ext.store.analyse.timeout.run(async () => { 146 | await runAnalyse(ext, args); 147 | }, ms ?? ext.settings.analysedDelay); 148 | } 149 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phpstan-vscode", 3 | "displayName": "PHPStan", 4 | "version": "2.0.3", 5 | "description": "PHPStan for VSCode", 6 | "categories": [ 7 | "Linters", 8 | "Programming Languages" 9 | ], 10 | "keywords": [ 11 | "php", 12 | "phpstan", 13 | "linter", 14 | "problems", 15 | "errors", 16 | "analyse" 17 | ], 18 | "bugs": { 19 | "url": "https://github.com/swordev/phpstan-vscode/issues" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "https://github.com/swordev/phpstan-vscode.git" 24 | }, 25 | "license": "MIT", 26 | "author": "Juanra Gálvez ", 27 | "publisher": "swordev", 28 | "main": "./dist/index.js", 29 | "files": [ 30 | "assets", 31 | "dist" 32 | ], 33 | "scripts": { 34 | "build": "pnpm build:src && pnpm build:vsce", 35 | "build:src": "vite build", 36 | "build:vsce": "node scripts/build-vsce.mjs", 37 | "check": "pnpm check:format && pnpm check:lint", 38 | "check:format": "prettier --cache -c .", 39 | "check:lint": "eslint --cache . --ext .ts,.js,.json", 40 | "format": "prettier --cache -w .", 41 | "start": "vite build --watch" 42 | }, 43 | "contributes": { 44 | "commands": [ 45 | { 46 | "command": "phpstan.analyse", 47 | "title": "PHPStan: Analyse" 48 | }, 49 | { 50 | "command": "phpstan.analyseCurrentPath", 51 | "title": "PHPStan: Analyse current path" 52 | }, 53 | { 54 | "command": "phpstan.clearCache", 55 | "title": "PHPStan: Clear cache" 56 | }, 57 | { 58 | "command": "phpstan.clearProblems", 59 | "title": "PHPStan: Clear problems" 60 | }, 61 | { 62 | "command": "phpstan.pauseFileWatcher", 63 | "title": "PHPStan: Pause file watcher" 64 | }, 65 | { 66 | "command": "phpstan.resumeFileWatcher", 67 | "title": "PHPStan: Resume file watcher" 68 | }, 69 | { 70 | "command": "phpstan.showOutput", 71 | "title": "PHPStan: Show output" 72 | }, 73 | { 74 | "command": "phpstan.stopAnalyse", 75 | "title": "PHPStan: Stop analyse" 76 | }, 77 | { 78 | "command": "phpstan.toggleFileWatcher", 79 | "title": "PHPStan: Toggle file watcher" 80 | } 81 | ], 82 | "configuration": { 83 | "type": "object", 84 | "title": "PHPStan", 85 | "properties": { 86 | "phpstan.enabled": { 87 | "type": "boolean", 88 | "description": "Enables PHPStan", 89 | "default": true 90 | }, 91 | "phpstan.path": { 92 | "type": "string", 93 | "description": "PHPStan binary path", 94 | "default": "./vendor/phpstan/phpstan/phpstan" 95 | }, 96 | "phpstan.phpPath": { 97 | "type": "string", 98 | "description": "PHP binary path", 99 | "default": "php" 100 | }, 101 | "phpstan.memoryLimit": { 102 | "type": "string", 103 | "description": "PHP memory limit", 104 | "default": "-1" 105 | }, 106 | "phpstan.fileWatcher": { 107 | "type": "boolean", 108 | "description": "Enables file watcher", 109 | "default": true 110 | }, 111 | "phpstan.configFileWatcher": { 112 | "type": "boolean", 113 | "description": "Enables config file watcher", 114 | "default": true 115 | }, 116 | "phpstan.configPath": { 117 | "type": "string", 118 | "description": "PHPStan config path", 119 | "default": "{phpstan.neon,phpstan.neon.dist}" 120 | }, 121 | "phpstan.analysedDelay": { 122 | "type": "integer", 123 | "description": "Milliseconds delay between file changes before run analyse", 124 | "default": 200 125 | }, 126 | "phpstan.initialAnalysis": { 127 | "type": "boolean", 128 | "description": "Runs the analyse command on startup", 129 | "default": true 130 | } 131 | } 132 | }, 133 | "menus": { 134 | "explorer/context": [ 135 | { 136 | "command": "phpstan.analyseCurrentPath", 137 | "when": "resourceLangId == php && phpstan:enabled" 138 | }, 139 | { 140 | "command": "phpstan.analyseCurrentPath", 141 | "when": "explorerResourceIsFolder && phpstan:enabled" 142 | } 143 | ] 144 | } 145 | }, 146 | "activationEvents": [ 147 | "onLanguage:php", 148 | "workspaceContains:**/phpstan.neon", 149 | "workspaceContains:**/phpstan.neon.dist" 150 | ], 151 | "dependencies": { 152 | "js-yaml": "^4.1.0" 153 | }, 154 | "devDependencies": { 155 | "@changesets/changelog-github": "^0.4.6", 156 | "@changesets/cli": "^2.24.4", 157 | "@changesets/get-release-plan": "^3.0.14", 158 | "@trivago/prettier-plugin-sort-imports": "^3.3.0", 159 | "@types/js-yaml": "^4.0.5", 160 | "@types/node": "^18.7.18", 161 | "@types/vscode": "^1.71.0", 162 | "@typescript-eslint/eslint-plugin": "^5.37.0", 163 | "@typescript-eslint/parser": "^5.37.0", 164 | "eslint": "^8.23.1", 165 | "prettier": "2.7.1", 166 | "prettier-plugin-packagejson": "^2.2.18", 167 | "prettier-plugin-sort-json": "^0.0.3", 168 | "rimraf": "^3.0.2", 169 | "typescript": "^4.8.3", 170 | "vite": "^3.1.2", 171 | "vite-plugin-checker": "^0.5.1", 172 | "vsce": "^2.11.0" 173 | }, 174 | "engines": { 175 | "vscode": "^1.71.0" 176 | }, 177 | "icon": "assets/logo.png", 178 | "sponsor": { 179 | "url": "https://github.com/sponsors/juanrgm" 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import findPHPStanConfigPath from "./commands/findPHPStanConfigPath"; 2 | import loadPHPStanConfig from "./commands/loadPHPStanConfig"; 3 | import { createDelayedTimeout, DelayedTimeout } from "./utils/async"; 4 | import { uncolorize } from "./utils/color"; 5 | import { getFunctionName } from "./utils/function"; 6 | import { sanitizeFsPath } from "./utils/path"; 7 | import { 8 | createFileWatcherManager, 9 | getWorkspacePath, 10 | onChangeExtensionSettings, 11 | } from "./utils/vscode"; 12 | import { EventEmitter } from "events"; 13 | import { 14 | DiagnosticCollection, 15 | Disposable, 16 | OutputChannel, 17 | StatusBarItem, 18 | commands as cmd, 19 | window, 20 | languages, 21 | workspace, 22 | RelativePattern, 23 | } from "vscode"; 24 | 25 | export type ExtCommand = (ext: Ext) => unknown; 26 | 27 | export type ExtSettings = { 28 | enabled: boolean; 29 | path: string; 30 | phpPath: string; 31 | configPath: string; 32 | fileWatcher: boolean; 33 | configFileWatcher: boolean; 34 | analysedDelay: number; 35 | memoryLimit: string; 36 | initialAnalysis: boolean; 37 | }; 38 | 39 | export type ExtStore = { 40 | phpstan: { 41 | configPath?: string; 42 | }; 43 | activate: { 44 | timeout: DelayedTimeout; 45 | }; 46 | analyse: { 47 | channel: EventEmitter; 48 | timeout: DelayedTimeout; 49 | }; 50 | fileWatcher: { 51 | enabled: boolean; 52 | statusBarFixed?: StatusBarData | undefined; 53 | }; 54 | }; 55 | 56 | export type StatusBarData = { 57 | text: string; 58 | tooltip?: string; 59 | command?: string | ((ext: Ext) => void); 60 | }; 61 | 62 | export class Ext< 63 | T extends { analyse: ExtCommand; showOutput: ExtCommand } = { 64 | analyse: ExtCommand; 65 | showOutput: ExtCommand; 66 | } 67 | > { 68 | readonly settings: ExtSettings; 69 | readonly store: ExtStore; 70 | readonly cwd: string; 71 | readonly outputChannel: OutputChannel; 72 | readonly settingsListener: Disposable; 73 | readonly diagnostic: DiagnosticCollection; 74 | readonly statusBarItem: StatusBarItem; 75 | readonly commandListeners: Disposable[] = []; 76 | protected fileWatchers = createFileWatcherManager(); 77 | protected activations = 0; 78 | 79 | constructor( 80 | readonly options: { 81 | name: string; 82 | commands: T; 83 | } 84 | ) { 85 | const { name } = this.options; 86 | this.settings = this.readSettings(); 87 | this.cwd = getWorkspacePath(); 88 | this.outputChannel = window.createOutputChannel(name); 89 | this.diagnostic = languages.createDiagnosticCollection(name); 90 | this.statusBarItem = window.createStatusBarItem(); 91 | this.settingsListener = onChangeExtensionSettings(name, () => { 92 | (this as { settings: ExtSettings }).settings = this.readSettings(); 93 | this.reactivate(); 94 | }); 95 | this.store = { 96 | phpstan: {}, 97 | activate: { 98 | timeout: createDelayedTimeout(500), 99 | }, 100 | analyse: { 101 | timeout: createDelayedTimeout(), 102 | channel: new EventEmitter(), 103 | }, 104 | fileWatcher: { 105 | enabled: true, 106 | }, 107 | }; 108 | 109 | for (const name in this.options.commands) { 110 | const command = this.options.commands[name] as ExtCommand; 111 | this.registerCommand(name, command); 112 | } 113 | } 114 | 115 | log(data: { tag: string; message: string } | string | Buffer | Error) { 116 | if (typeof data === "string") { 117 | this.outputChannel.appendLine(data); 118 | } else if (data instanceof Error) { 119 | this.log({ 120 | tag: "error", 121 | message: `${data.stack ?? data.message ?? data}`, 122 | }); 123 | } else if (Buffer.isBuffer(data)) { 124 | this.outputChannel.appendLine(uncolorize(data.toString())); 125 | } else { 126 | this.outputChannel.appendLine(`# [${data.tag}] ${data.message}`); 127 | } 128 | } 129 | 130 | registerCommand(name: string, command: ExtCommand) { 131 | const listener = cmd.registerCommand(`${this.options.name}.${name}`, () => { 132 | this.call(() => command(this), name); 133 | }); 134 | this.commandListeners.push(listener); 135 | return listener; 136 | } 137 | 138 | async call(cb: () => unknown, name = getFunctionName(cb)) { 139 | try { 140 | this.log({ tag: "call", message: name }); 141 | return await cb(); 142 | } catch (error) { 143 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 144 | const e: Error = error as any; 145 | this.setStatusBarError(error, name); 146 | this.log(e); 147 | } 148 | } 149 | 150 | readSettings(): ExtSettings { 151 | const config = workspace.getConfiguration(this.options.name); 152 | const get = (name: T) => 153 | config.get(name) as ExtSettings[T]; 154 | return { 155 | enabled: get("enabled"), 156 | path: get("path"), 157 | phpPath: get("phpPath"), 158 | configPath: get("configPath"), 159 | fileWatcher: get("fileWatcher"), 160 | configFileWatcher: get("configFileWatcher"), 161 | analysedDelay: get("analysedDelay"), 162 | memoryLimit: get("memoryLimit"), 163 | initialAnalysis: get("initialAnalysis"), 164 | }; 165 | } 166 | 167 | setStatusBar(data: StatusBarData) { 168 | this.statusBarItem.text = data.text; 169 | this.statusBarItem.tooltip = 170 | typeof data.tooltip === "string" ? data.tooltip : undefined; 171 | if (typeof data.command === "string") { 172 | this.statusBarItem.command = data.command; 173 | } else if (typeof data.command === "function") { 174 | this.statusBarItem.command = this.getCommandName(data.command); 175 | } else { 176 | this.statusBarItem.command = undefined; 177 | } 178 | this.statusBarItem.show(); 179 | } 180 | 181 | clearStatusBar() { 182 | if (this.store.fileWatcher.statusBarFixed) { 183 | this.setStatusBar(this.store.fileWatcher.statusBarFixed); 184 | } else { 185 | this.statusBarItem.text = ""; 186 | this.statusBarItem.tooltip = undefined; 187 | this.statusBarItem.command = undefined; 188 | this.statusBarItem.hide(); 189 | } 190 | } 191 | 192 | setStatusBarError(error: unknown, source: string) { 193 | const errorMessage = 194 | error instanceof Error ? error.message : new String(error).toString(); 195 | const { statusBarItem } = this; 196 | statusBarItem.text = `$(error) PHPStan`; 197 | statusBarItem.tooltip = `${source}: ${errorMessage}`; 198 | statusBarItem.command = this.getCommandName( 199 | this.options.commands.showOutput 200 | ); 201 | statusBarItem.show(); 202 | return false; 203 | } 204 | 205 | getCommandName(command: ExtCommand) { 206 | return `${this.options.name}.${getFunctionName(command)}`; 207 | } 208 | 209 | async reactivate() { 210 | this.fileWatchers.dispose(); 211 | await this.activate(); 212 | } 213 | 214 | async activate() { 215 | this.activations++; 216 | await this.call(async () => await this.runActivate(), "activate"); 217 | } 218 | 219 | protected async runActivate() { 220 | cmd.executeCommand( 221 | "setContext", 222 | `${this.options.name}:enabled`, 223 | this.settings.enabled 224 | ); 225 | 226 | if (!this.settings.enabled) return; 227 | 228 | this.store.phpstan.configPath = await findPHPStanConfigPath(this); 229 | 230 | if (this.settings.configFileWatcher) 231 | this.fileWatchers.register( 232 | new RelativePattern(getWorkspacePath(), this.settings.configPath), 233 | (uri, eventName) => { 234 | if (!this.store.fileWatcher.enabled) return; 235 | const path = sanitizeFsPath(uri.fsPath); 236 | this.log({ 237 | tag: `event:${eventName}`, 238 | message: path, 239 | }); 240 | this.store.activate.timeout.run(() => this.reactivate()); 241 | } 242 | ); 243 | 244 | if (this.settings.fileWatcher) { 245 | const config = await loadPHPStanConfig(this); 246 | const extensions = config.parameters?.fileExtensions ?? ["php"]; 247 | this.fileWatchers.register({ extensions }, async (uri, eventName) => { 248 | if (!this.store.fileWatcher.enabled) return; 249 | for (const patternPath of config.parameters?.paths || []) { 250 | const path = sanitizeFsPath(uri.fsPath); 251 | if (path.startsWith(patternPath)) { 252 | this.log({ 253 | tag: `event:${eventName}`, 254 | message: path, 255 | }); 256 | await this.call( 257 | async () => await this.options.commands.analyse(this), 258 | "analyse" 259 | ); 260 | } 261 | } 262 | }); 263 | } 264 | 265 | if (this.settings.initialAnalysis || this.activations > 1) 266 | this.options.commands.analyse(this); 267 | } 268 | 269 | deactivate() { 270 | if (this.outputChannel) { 271 | this.outputChannel.clear(); 272 | this.outputChannel.dispose(); 273 | } 274 | if (this.settingsListener) { 275 | this.settingsListener.dispose(); 276 | } 277 | if (this.diagnostic) { 278 | this.diagnostic.clear(); 279 | this.diagnostic.dispose(); 280 | } 281 | if (this.statusBarItem) { 282 | this.statusBarItem.hide(); 283 | this.statusBarItem.dispose(); 284 | } 285 | this.commandListeners.forEach((v) => v.dispose); 286 | this.fileWatchers.dispose(); 287 | cmd.executeCommand("setContext", `${this.options.name}:enabled`, false); 288 | } 289 | } 290 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # phpstan-vscode 2 | 3 | ## 2.0.3 4 | 5 | ### Patch Changes 6 | 7 | - [`a39a0f4`](https://github.com/swordev/phpstan-vscode/commit/a39a0f490313322e621555c6b3423f80b1725446) Thanks [@juanrgm](https://github.com/juanrgm)! - Fix memory leak when the process is killed 8 | 9 | - [`39e35c8`](https://github.com/swordev/phpstan-vscode/commit/39e35c8c4948d2c0ff8166298ce5a74281de6e06) Thanks [@juanrgm](https://github.com/juanrgm)! - Fix status bar on `clearCache` and `pauseFileWatcher` commands 10 | 11 | ## 2.0.2 12 | 13 | ### Patch Changes 14 | 15 | - [`233f4fa`](https://github.com/swordev/phpstan-vscode/commit/233f4fa46d6e3ad96a47437455c30db0a962ef78) Thanks [@juanrgm](https://github.com/juanrgm)! - Wait for workspace to be ready 16 | 17 | ## 2.0.1 18 | 19 | ### Patch Changes 20 | 21 | - [`6859b56`](https://github.com/swordev/phpstan-vscode/commit/6859b560068f281f41ba5cb549abfaef3310fd7a) Thanks [@juanrgm](https://github.com/juanrgm)! - Update the readme file 22 | 23 | ## 2.0.0 24 | 25 | ### Major Changes 26 | 27 | - [`2421df9`](https://github.com/swordev/phpstan-vscode/commit/2421df956698a3305a872308e8f3d98e02039062) Thanks [@juanrgm](https://github.com/juanrgm)! - Restructure the entire project 28 | 29 | ### Minor Changes 30 | 31 | - [`e857090`](https://github.com/swordev/phpstan-vscode/commit/e85709074cac13ab31f94bcfea8b4af15ff7b82e) Thanks [@juanrgm](https://github.com/juanrgm)! - Add the `stopAnalyse` command 32 | 33 | - [`b486f60`](https://github.com/swordev/phpstan-vscode/commit/b486f60d687f0c5234d27829469c9991d46ac89c) Thanks [@juanrgm](https://github.com/juanrgm)! - Enable the extension only with the PHP language 34 | 35 | - [`2819cd8`](https://github.com/swordev/phpstan-vscode/commit/2819cd8a3f3b7ae1d13c35ebd0cd0ceb79cbdd3b) Thanks [@juanrgm](https://github.com/juanrgm)! - Replace the `configFileWatcherBasenames` setting by `configPath` 36 | 37 | - [`59a2a80`](https://github.com/swordev/phpstan-vscode/commit/59a2a804a3901055d05a213c417b4f7a319f06cc) Thanks [@juanrgm](https://github.com/juanrgm)! - Add `initialAnalysis` setting 38 | 39 | ### Patch Changes 40 | 41 | - [`bc7f2cc`](https://github.com/swordev/phpstan-vscode/commit/bc7f2ccbaff312badba00cb07c96bb62942fba9d) Thanks [@juanrgm](https://github.com/juanrgm)! - Stop the process successful 42 | 43 | ## [1.4.6](https://github.com/swordev/phpstan-vscode/compare/v1.4.5...v1.4.6) (2022-03-25) 44 | 45 | ## [1.4.5](https://github.com/swordev/phpstan-vscode/compare/v1.4.4...v1.4.5) (2022-03-25) 46 | 47 | ### Bug Fixes 48 | 49 | - allow tab char ([23e0949](https://github.com/swordev/phpstan-vscode/commit/23e0949206fe48ed4bda1cc3f14e904107a44cc3)) 50 | - uncolorize phpstan progress ([f34fd12](https://github.com/swordev/phpstan-vscode/commit/f34fd12763f911035adf5b37e96df45986ed0a12)) 51 | 52 | ## [1.4.4](https://github.com/swordev/phpstan-vscode/compare/v1.4.3...v1.4.4) (2021-02-19) 53 | 54 | ### Bug Fixes 55 | 56 | - avoid use satinized path as file watcher pattern ([068363b](https://github.com/swordev/phpstan-vscode/commit/068363b7458affeb7dab0d892b06aaeddfcee436)) 57 | 58 | ## [1.4.3](https://github.com/swordev/phpstan-vscode/compare/v1.4.2...v1.4.3) (2021-02-19) 59 | 60 | ### Bug Fixes 61 | 62 | - avoid activate the extension if there is not a workspace opened ([60f0b85](https://github.com/swordev/phpstan-vscode/commit/e7de9e8a6b0854b0c8b42c10218f763e4efd4354)) 63 | - sanitize all `fsPath` ([ac2f811](https://github.com/swordev/phpstan-vscode/commit/89c146075f1d06af693e4fcdf176e7dbfb5e54ea)) 64 | 65 | ## [1.4.2](https://github.com/swordev/phpstan-vscode/compare/v1.4.1...v1.4.2) (2021-02-19) 66 | 67 | ### Bug Fixes 68 | 69 | - change diagnostic error line ([010dd81](https://github.com/swordev/phpstan-vscode/commit/010dd81b14b601a8d360bfcf728679939ff2d3e5)) 70 | - diagnose global errors ([a4a1cd6](https://github.com/swordev/phpstan-vscode/commit/a4a1cd68ebe1390988fbdaed5cba498cab6a6e2e)) 71 | - parse diagnostic path ([742a614](https://github.com/swordev/phpstan-vscode/commit/256048b0192328e5d5714194d6ee670916aa46f1)) 72 | - sanitize workspace path ([fb2c07d](https://github.com/swordev/phpstan-vscode/commit/7bd58740b07c416aefd3080374e226537d311daf)) 73 | 74 | ## [1.4.1](https://github.com/swordev/phpstan-vscode/compare/v1.4.0...v1.4.1) (2021-02-19) 75 | 76 | ### Bug Fixes 77 | 78 | - normalize message line ([81c2b38](https://github.com/swordev/phpstan-vscode/commit/81c2b38b053725315a441ef9c5cb9f9525c101fa)) 79 | 80 | # [1.4.0](https://github.com/swordev/phpstan-vscode/compare/v1.3.3...v1.4.0) (2020-12-07) 81 | 82 | ### Features 83 | 84 | - `analyseCurrentPath` command in the explorer context menu ([ecbec20](https://github.com/swordev/phpstan-vscode/commit/ecbec20c5d783c64b820fe5ad79511e093a309ff)) 85 | - analyse command in the output channel ([d1e7d26](https://github.com/swordev/phpstan-vscode/commit/d1e7d2651ddccf90f3e2dbf66a811a63232d1f13)) 86 | - analyse current path command ([2a19232](https://github.com/swordev/phpstan-vscode/commit/2a1923212b8ce9bd67d96fec1bf9d67657a2589d)) 87 | - clear cache command ([f08a7ae](https://github.com/swordev/phpstan-vscode/commit/f08a7ae74c2b0409b4466430a4f1fe97afe16622)) 88 | - clear problems command ([9839c23](https://github.com/swordev/phpstan-vscode/commit/9839c23917e288aca99e9bba720b351fd26b054a)) 89 | 90 | ## [1.3.3](https://github.com/swordev/phpstan-vscode/compare/v1.3.2...v1.3.3) (2020-12-06) 91 | 92 | ### Bug Fixes 93 | 94 | - unwaited call ([414f5dd](https://github.com/swordev/phpstan-vscode/commit/414f5dd90e65ac4d2db71907aeabc71588136767)) 95 | 96 | ### Features 97 | 98 | - **build:** v1.3.3 ([8459291](https://github.com/swordev/phpstan-vscode/commit/845929160e16ce00528599a536eae2a7f6673a86)) 99 | 100 | ## [1.3.2](https://github.com/swordev/phpstan-vscode/compare/v1.3.1...v1.3.2) (2020-12-04) 101 | 102 | ### Bug Fixes 103 | 104 | - large json broken on stdout ([67fa868](https://github.com/swordev/phpstan-vscode/commit/67fa868cc5ee3813f9b4844253c5695c40617025)) 105 | 106 | ### Features 107 | 108 | - **build:** v1.3.2 ([93ab613](https://github.com/swordev/phpstan-vscode/commit/93ab61326183e011c3e32c8f718c742b26d8c2cc)) 109 | - **docs:** badges ([d4b21fc](https://github.com/swordev/phpstan-vscode/commit/d4b21fc380c8178d46368b9d9fef7b7993fb21c4)) 110 | 111 | ## [1.3.1](https://github.com/swordev/phpstan-vscode/compare/v1.3.0...v1.3.1) (2020-11-26) 112 | 113 | ### Bug Fixes 114 | 115 | - created/deleted file watcher event not captured ([f36ea24](https://github.com/swordev/phpstan-vscode/commit/f36ea24fa945b8b64cb075fd4658320b0a6094ce)) 116 | - orphan process on windows ([30a124c](https://github.com/swordev/phpstan-vscode/commit/30a124cdcc1527f7d089131797659dcb67e47060)) 117 | 118 | ### Features 119 | 120 | - **build:** v1.3.1 ([6cd7680](https://github.com/swordev/phpstan-vscode/commit/6cd76803b4e242ab2014c0b33699c6fe28103d27)) 121 | 122 | # [1.3.0](https://github.com/swordev/phpstan-vscode/compare/v1.2.0...v1.3.0) (2020-11-17) 123 | 124 | ### Features 125 | 126 | - **build:** v1.3.0 ([11e308f](https://github.com/swordev/phpstan-vscode/commit/11e308f58cb8e85312d6be319017efab044f1d82)) 127 | - pause/resume/toggle file watcher commands ([40f544c](https://github.com/swordev/phpstan-vscode/commit/40f544caf81afcdcecd6b47d664cf6362172a7a7)) 128 | 129 | # [1.2.0](https://github.com/swordev/phpstan-vscode/compare/v1.1.2...v1.2.0) (2020-11-14) 130 | 131 | ### Bug Fixes 132 | 133 | - catch parse error config ([81910da](https://github.com/swordev/phpstan-vscode/commit/81910da7d4cfeea5784411e5766d0f2d442b3fa6)) 134 | 135 | ### Features 136 | 137 | - **build:** v1.2.0 ([3023c3e](https://github.com/swordev/phpstan-vscode/commit/3023c3e977bbdfb12d4e519c414284ea3f17939e)) 138 | - analyse command ([b9588e9](https://github.com/swordev/phpstan-vscode/commit/b9588e972171df81e7784b5ff50637846fb3354d)) 139 | - on click status bar leads to output channel ([0e1c746](https://github.com/swordev/phpstan-vscode/commit/0e1c746a85f5458505144f28533ce3173aaf2a52)) 140 | - show error source ([99d30c0](https://github.com/swordev/phpstan-vscode/commit/99d30c08dd8e0fa37a5a9f213eda42875264c36d)) 141 | 142 | ## [1.1.2](https://github.com/swordev/phpstan-vscode/compare/v1.1.1...v1.1.2) (2020-11-07) 143 | 144 | ### Features 145 | 146 | - **build:** check vsce package ([25072c9](https://github.com/swordev/phpstan-vscode/commit/25072c9bef666caf3fccfea96ff93f75b9bddddd)) 147 | - **build:** v1.1.2 ([ae60ce9](https://github.com/swordev/phpstan-vscode/commit/ae60ce9815041f890953fe5d2d1da0d2b413e97a)) 148 | 149 | ## [1.1.1](https://github.com/swordev/phpstan-vscode/compare/v1.1.0...v1.1.1) (2020-11-07) 150 | 151 | ### Features 152 | 153 | - **build:** v1.1.1 ([5a6e25c](https://github.com/swordev/phpstan-vscode/commit/5a6e25c7bcab6347ebef903dd1cf49349638fbf8)) 154 | 155 | # [1.1.0](https://github.com/swordev/phpstan-vscode/compare/v1.0.0...v1.1.0) (2020-11-07) 156 | 157 | ### Bug Fixes 158 | 159 | - graceful restart ([6ccd789](https://github.com/swordev/phpstan-vscode/commit/6ccd7895e12146bd5c71c7101f9b314a92f94ddc)) 160 | 161 | ### Features 162 | 163 | - **build:** v1.1.0 ([20c58f0](https://github.com/swordev/phpstan-vscode/commit/20c58f0f1f4afb6cdd3d8f2d156764a2b93abdda)) 164 | - analysis on phpstan config change ([c2c608a](https://github.com/swordev/phpstan-vscode/commit/c2c608ab962b0fcc592ae623755953509bfb8973)) 165 | - info on file change ([b2d608e](https://github.com/swordev/phpstan-vscode/commit/b2d608e6b470e5e5bf603f1ebdf9713750d8aeb2)) 166 | - uses phpstan config for file watching ([2125e1e](https://github.com/swordev/phpstan-vscode/commit/2125e1e4115e88d8a694685bf603040bfb5c249a)) 167 | - **ui:** progress ([3e5faf6](https://github.com/swordev/phpstan-vscode/commit/3e5faf6ef20cd12723a362beb22a3206d0dd4cd1)) 168 | 169 | # [1.0.0](https://github.com/swordev/phpstan-vscode/compare/3ecd4d1c61fb76549a68b13d436228b7de7f4411...v1.0.0) (2020-11-02) 170 | 171 | ### Features 172 | 173 | - phpstan extension ([3ecd4d1](https://github.com/swordev/phpstan-vscode/commit/3ecd4d1c61fb76549a68b13d436228b7de7f4411)) 174 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@changesets/changelog-github': ^0.4.6 5 | '@changesets/cli': ^2.24.4 6 | '@changesets/get-release-plan': ^3.0.14 7 | '@trivago/prettier-plugin-sort-imports': ^3.3.0 8 | '@types/js-yaml': ^4.0.5 9 | '@types/node': ^18.7.18 10 | '@types/vscode': ^1.71.0 11 | '@typescript-eslint/eslint-plugin': ^5.37.0 12 | '@typescript-eslint/parser': ^5.37.0 13 | eslint: ^8.23.1 14 | js-yaml: ^4.1.0 15 | prettier: 2.7.1 16 | prettier-plugin-packagejson: ^2.2.18 17 | prettier-plugin-sort-json: ^0.0.3 18 | rimraf: ^3.0.2 19 | typescript: ^4.8.3 20 | vite: ^3.1.2 21 | vite-plugin-checker: ^0.5.1 22 | vsce: ^2.11.0 23 | 24 | dependencies: 25 | js-yaml: 4.1.0 26 | 27 | devDependencies: 28 | '@changesets/changelog-github': 0.4.6 29 | '@changesets/cli': 2.24.4 30 | '@changesets/get-release-plan': 3.0.14 31 | '@trivago/prettier-plugin-sort-imports': 3.3.0_prettier@2.7.1 32 | '@types/js-yaml': 4.0.5 33 | '@types/node': 18.7.18 34 | '@types/vscode': 1.71.0 35 | '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi 36 | '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha 37 | eslint: 8.23.1 38 | prettier: 2.7.1 39 | prettier-plugin-packagejson: 2.2.18_prettier@2.7.1 40 | prettier-plugin-sort-json: 0.0.3_prettier@2.7.1 41 | rimraf: 3.0.2 42 | typescript: 4.8.3 43 | vite: 3.1.2 44 | vite-plugin-checker: 0.5.1_fchw6yt2eby3v5rhssi26iz33u 45 | vsce: 2.11.0 46 | 47 | packages: 48 | 49 | /@ampproject/remapping/2.2.0: 50 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 51 | engines: {node: '>=6.0.0'} 52 | dependencies: 53 | '@jridgewell/gen-mapping': 0.1.1 54 | '@jridgewell/trace-mapping': 0.3.15 55 | dev: true 56 | 57 | /@babel/code-frame/7.18.6: 58 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 59 | engines: {node: '>=6.9.0'} 60 | dependencies: 61 | '@babel/highlight': 7.18.6 62 | dev: true 63 | 64 | /@babel/compat-data/7.19.1: 65 | resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==} 66 | engines: {node: '>=6.9.0'} 67 | dev: true 68 | 69 | /@babel/core/7.17.8: 70 | resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} 71 | engines: {node: '>=6.9.0'} 72 | dependencies: 73 | '@ampproject/remapping': 2.2.0 74 | '@babel/code-frame': 7.18.6 75 | '@babel/generator': 7.17.7 76 | '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.17.8 77 | '@babel/helper-module-transforms': 7.19.0 78 | '@babel/helpers': 7.19.0 79 | '@babel/parser': 7.17.8 80 | '@babel/template': 7.18.10 81 | '@babel/traverse': 7.17.3 82 | '@babel/types': 7.17.0 83 | convert-source-map: 1.8.0 84 | debug: 4.3.4 85 | gensync: 1.0.0-beta.2 86 | json5: 2.2.1 87 | semver: 6.3.0 88 | transitivePeerDependencies: 89 | - supports-color 90 | dev: true 91 | 92 | /@babel/generator/7.17.7: 93 | resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} 94 | engines: {node: '>=6.9.0'} 95 | dependencies: 96 | '@babel/types': 7.17.0 97 | jsesc: 2.5.2 98 | source-map: 0.5.7 99 | dev: true 100 | 101 | /@babel/generator/7.19.0: 102 | resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} 103 | engines: {node: '>=6.9.0'} 104 | dependencies: 105 | '@babel/types': 7.19.0 106 | '@jridgewell/gen-mapping': 0.3.2 107 | jsesc: 2.5.2 108 | dev: true 109 | 110 | /@babel/helper-compilation-targets/7.19.1_@babel+core@7.17.8: 111 | resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} 112 | engines: {node: '>=6.9.0'} 113 | peerDependencies: 114 | '@babel/core': ^7.0.0 115 | dependencies: 116 | '@babel/compat-data': 7.19.1 117 | '@babel/core': 7.17.8 118 | '@babel/helper-validator-option': 7.18.6 119 | browserslist: 4.21.4 120 | semver: 6.3.0 121 | dev: true 122 | 123 | /@babel/helper-environment-visitor/7.18.9: 124 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 125 | engines: {node: '>=6.9.0'} 126 | dev: true 127 | 128 | /@babel/helper-function-name/7.19.0: 129 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 130 | engines: {node: '>=6.9.0'} 131 | dependencies: 132 | '@babel/template': 7.18.10 133 | '@babel/types': 7.19.0 134 | dev: true 135 | 136 | /@babel/helper-hoist-variables/7.18.6: 137 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 138 | engines: {node: '>=6.9.0'} 139 | dependencies: 140 | '@babel/types': 7.19.0 141 | dev: true 142 | 143 | /@babel/helper-module-imports/7.18.6: 144 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 145 | engines: {node: '>=6.9.0'} 146 | dependencies: 147 | '@babel/types': 7.19.0 148 | dev: true 149 | 150 | /@babel/helper-module-transforms/7.19.0: 151 | resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} 152 | engines: {node: '>=6.9.0'} 153 | dependencies: 154 | '@babel/helper-environment-visitor': 7.18.9 155 | '@babel/helper-module-imports': 7.18.6 156 | '@babel/helper-simple-access': 7.18.6 157 | '@babel/helper-split-export-declaration': 7.18.6 158 | '@babel/helper-validator-identifier': 7.19.1 159 | '@babel/template': 7.18.10 160 | '@babel/traverse': 7.19.1 161 | '@babel/types': 7.19.0 162 | transitivePeerDependencies: 163 | - supports-color 164 | dev: true 165 | 166 | /@babel/helper-simple-access/7.18.6: 167 | resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} 168 | engines: {node: '>=6.9.0'} 169 | dependencies: 170 | '@babel/types': 7.19.0 171 | dev: true 172 | 173 | /@babel/helper-split-export-declaration/7.18.6: 174 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/types': 7.19.0 178 | dev: true 179 | 180 | /@babel/helper-string-parser/7.18.10: 181 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} 182 | engines: {node: '>=6.9.0'} 183 | dev: true 184 | 185 | /@babel/helper-validator-identifier/7.19.1: 186 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 187 | engines: {node: '>=6.9.0'} 188 | dev: true 189 | 190 | /@babel/helper-validator-option/7.18.6: 191 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 192 | engines: {node: '>=6.9.0'} 193 | dev: true 194 | 195 | /@babel/helpers/7.19.0: 196 | resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} 197 | engines: {node: '>=6.9.0'} 198 | dependencies: 199 | '@babel/template': 7.18.10 200 | '@babel/traverse': 7.19.1 201 | '@babel/types': 7.19.0 202 | transitivePeerDependencies: 203 | - supports-color 204 | dev: true 205 | 206 | /@babel/highlight/7.18.6: 207 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 208 | engines: {node: '>=6.9.0'} 209 | dependencies: 210 | '@babel/helper-validator-identifier': 7.19.1 211 | chalk: 2.4.2 212 | js-tokens: 4.0.0 213 | dev: true 214 | 215 | /@babel/parser/7.17.8: 216 | resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} 217 | engines: {node: '>=6.0.0'} 218 | hasBin: true 219 | dependencies: 220 | '@babel/types': 7.17.0 221 | dev: true 222 | 223 | /@babel/parser/7.19.1: 224 | resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} 225 | engines: {node: '>=6.0.0'} 226 | hasBin: true 227 | dependencies: 228 | '@babel/types': 7.19.0 229 | dev: true 230 | 231 | /@babel/runtime/7.19.0: 232 | resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} 233 | engines: {node: '>=6.9.0'} 234 | dependencies: 235 | regenerator-runtime: 0.13.9 236 | dev: true 237 | 238 | /@babel/template/7.18.10: 239 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 240 | engines: {node: '>=6.9.0'} 241 | dependencies: 242 | '@babel/code-frame': 7.18.6 243 | '@babel/parser': 7.19.1 244 | '@babel/types': 7.19.0 245 | dev: true 246 | 247 | /@babel/traverse/7.17.3: 248 | resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} 249 | engines: {node: '>=6.9.0'} 250 | dependencies: 251 | '@babel/code-frame': 7.18.6 252 | '@babel/generator': 7.17.7 253 | '@babel/helper-environment-visitor': 7.18.9 254 | '@babel/helper-function-name': 7.19.0 255 | '@babel/helper-hoist-variables': 7.18.6 256 | '@babel/helper-split-export-declaration': 7.18.6 257 | '@babel/parser': 7.17.8 258 | '@babel/types': 7.17.0 259 | debug: 4.3.4 260 | globals: 11.12.0 261 | transitivePeerDependencies: 262 | - supports-color 263 | dev: true 264 | 265 | /@babel/traverse/7.19.1: 266 | resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} 267 | engines: {node: '>=6.9.0'} 268 | dependencies: 269 | '@babel/code-frame': 7.18.6 270 | '@babel/generator': 7.19.0 271 | '@babel/helper-environment-visitor': 7.18.9 272 | '@babel/helper-function-name': 7.19.0 273 | '@babel/helper-hoist-variables': 7.18.6 274 | '@babel/helper-split-export-declaration': 7.18.6 275 | '@babel/parser': 7.19.1 276 | '@babel/types': 7.19.0 277 | debug: 4.3.4 278 | globals: 11.12.0 279 | transitivePeerDependencies: 280 | - supports-color 281 | dev: true 282 | 283 | /@babel/types/7.17.0: 284 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 285 | engines: {node: '>=6.9.0'} 286 | dependencies: 287 | '@babel/helper-validator-identifier': 7.19.1 288 | to-fast-properties: 2.0.0 289 | dev: true 290 | 291 | /@babel/types/7.19.0: 292 | resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} 293 | engines: {node: '>=6.9.0'} 294 | dependencies: 295 | '@babel/helper-string-parser': 7.18.10 296 | '@babel/helper-validator-identifier': 7.19.1 297 | to-fast-properties: 2.0.0 298 | dev: true 299 | 300 | /@changesets/apply-release-plan/6.1.0: 301 | resolution: {integrity: sha512-fMNBUAEc013qaA4KUVjdwgYMmKrf5Mlgf6o+f97MJVNzVnikwpWY47Lc3YR1jhC874Fonn5MkjkWK9DAZsdQ5g==} 302 | dependencies: 303 | '@babel/runtime': 7.19.0 304 | '@changesets/config': 2.1.1 305 | '@changesets/get-version-range-type': 0.3.2 306 | '@changesets/git': 1.4.1 307 | '@changesets/types': 5.1.0 308 | '@manypkg/get-packages': 1.1.3 309 | detect-indent: 6.1.0 310 | fs-extra: 7.0.1 311 | lodash.startcase: 4.4.0 312 | outdent: 0.5.0 313 | prettier: 2.7.1 314 | resolve-from: 5.0.0 315 | semver: 5.7.1 316 | dev: true 317 | 318 | /@changesets/assemble-release-plan/5.2.1: 319 | resolution: {integrity: sha512-d6ckasOWlKF9Mzs82jhl6TKSCgVvfLoUK1ERySrTg2TQJdrVUteZue6uEIYUTA7SgMu67UOSwol6R9yj1nTdjw==} 320 | dependencies: 321 | '@babel/runtime': 7.19.0 322 | '@changesets/errors': 0.1.4 323 | '@changesets/get-dependents-graph': 1.3.3 324 | '@changesets/types': 5.1.0 325 | '@manypkg/get-packages': 1.1.3 326 | semver: 5.7.1 327 | dev: true 328 | 329 | /@changesets/changelog-git/0.1.12: 330 | resolution: {integrity: sha512-Xv2CPjTBmwjl8l4ZyQ3xrsXZMq8WafPUpEonDpTmcb24XY8keVzt7ZSCJuDz035EiqrjmDKDhODoQ6XiHudlig==} 331 | dependencies: 332 | '@changesets/types': 5.1.0 333 | dev: true 334 | 335 | /@changesets/changelog-github/0.4.6: 336 | resolution: {integrity: sha512-ahR/+o3OPodzfG9kucEMU/tEtBgwy6QoJiWi1sDBPme8n3WjT6pBlbhqNYpWAJKilomwfjBGY0MTUTs6r9d1RQ==} 337 | dependencies: 338 | '@changesets/get-github-info': 0.5.1 339 | '@changesets/types': 5.1.0 340 | dotenv: 8.6.0 341 | transitivePeerDependencies: 342 | - encoding 343 | dev: true 344 | 345 | /@changesets/cli/2.24.4: 346 | resolution: {integrity: sha512-87JSwMv38zS3QW3062jXZYLsCNRtA08wa7vt3VnMmkGLfUMn2TTSfD+eSGVnKPJ/ycDCvAcCDnrv/B+gSX5KVA==} 347 | hasBin: true 348 | dependencies: 349 | '@babel/runtime': 7.19.0 350 | '@changesets/apply-release-plan': 6.1.0 351 | '@changesets/assemble-release-plan': 5.2.1 352 | '@changesets/changelog-git': 0.1.12 353 | '@changesets/config': 2.1.1 354 | '@changesets/errors': 0.1.4 355 | '@changesets/get-dependents-graph': 1.3.3 356 | '@changesets/get-release-plan': 3.0.14 357 | '@changesets/git': 1.4.1 358 | '@changesets/logger': 0.0.5 359 | '@changesets/pre': 1.0.12 360 | '@changesets/read': 0.5.7 361 | '@changesets/types': 5.1.0 362 | '@changesets/write': 0.2.0 363 | '@manypkg/get-packages': 1.1.3 364 | '@types/is-ci': 3.0.0 365 | '@types/semver': 6.2.3 366 | ansi-colors: 4.1.3 367 | chalk: 2.4.2 368 | enquirer: 2.3.6 369 | external-editor: 3.1.0 370 | fs-extra: 7.0.1 371 | human-id: 1.0.2 372 | is-ci: 3.0.1 373 | meow: 6.1.1 374 | outdent: 0.5.0 375 | p-limit: 2.3.0 376 | preferred-pm: 3.0.3 377 | resolve-from: 5.0.0 378 | semver: 5.7.1 379 | spawndamnit: 2.0.0 380 | term-size: 2.2.1 381 | tty-table: 4.1.6 382 | dev: true 383 | 384 | /@changesets/config/2.1.1: 385 | resolution: {integrity: sha512-nSRINMqHpdtBpNVT9Eh9HtmLhOwOTAeSbaqKM5pRmGfsvyaROTBXV84ujF9UsWNlV71YxFbxTbeZnwXSGQlyTw==} 386 | dependencies: 387 | '@changesets/errors': 0.1.4 388 | '@changesets/get-dependents-graph': 1.3.3 389 | '@changesets/logger': 0.0.5 390 | '@changesets/types': 5.1.0 391 | '@manypkg/get-packages': 1.1.3 392 | fs-extra: 7.0.1 393 | micromatch: 4.0.5 394 | dev: true 395 | 396 | /@changesets/errors/0.1.4: 397 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 398 | dependencies: 399 | extendable-error: 0.1.7 400 | dev: true 401 | 402 | /@changesets/get-dependents-graph/1.3.3: 403 | resolution: {integrity: sha512-h4fHEIt6X+zbxdcznt1e8QD7xgsXRAXd2qzLlyxoRDFSa6SxJrDAUyh7ZUNdhjBU4Byvp4+6acVWVgzmTy4UNQ==} 404 | dependencies: 405 | '@changesets/types': 5.1.0 406 | '@manypkg/get-packages': 1.1.3 407 | chalk: 2.4.2 408 | fs-extra: 7.0.1 409 | semver: 5.7.1 410 | dev: true 411 | 412 | /@changesets/get-github-info/0.5.1: 413 | resolution: {integrity: sha512-w2yl3AuG+hFuEEmT6j1zDlg7GQLM/J2UxTmk0uJBMdRqHni4zXGe/vUlPfLom5KfX3cRfHc0hzGvloDPjWFNZw==} 414 | dependencies: 415 | dataloader: 1.4.0 416 | node-fetch: 2.6.7 417 | transitivePeerDependencies: 418 | - encoding 419 | dev: true 420 | 421 | /@changesets/get-release-plan/3.0.14: 422 | resolution: {integrity: sha512-xzSfeyIOvUnbqMuQXVKTYUizreWQfICwoQpvEHoePVbERLocc1tPo5lzR7dmVCFcaA/DcnbP6mxyioeq+JuzSg==} 423 | dependencies: 424 | '@babel/runtime': 7.19.0 425 | '@changesets/assemble-release-plan': 5.2.1 426 | '@changesets/config': 2.1.1 427 | '@changesets/pre': 1.0.12 428 | '@changesets/read': 0.5.7 429 | '@changesets/types': 5.1.0 430 | '@manypkg/get-packages': 1.1.3 431 | dev: true 432 | 433 | /@changesets/get-version-range-type/0.3.2: 434 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 435 | dev: true 436 | 437 | /@changesets/git/1.4.1: 438 | resolution: {integrity: sha512-GWwRXEqBsQ3nEYcyvY/u2xUK86EKAevSoKV/IhELoZ13caZ1A1TSak/71vyKILtzuLnFPk5mepP5HjBxr7lZ9Q==} 439 | dependencies: 440 | '@babel/runtime': 7.19.0 441 | '@changesets/errors': 0.1.4 442 | '@changesets/types': 5.1.0 443 | '@manypkg/get-packages': 1.1.3 444 | is-subdir: 1.2.0 445 | spawndamnit: 2.0.0 446 | dev: true 447 | 448 | /@changesets/logger/0.0.5: 449 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 450 | dependencies: 451 | chalk: 2.4.2 452 | dev: true 453 | 454 | /@changesets/parse/0.3.14: 455 | resolution: {integrity: sha512-SWnNVyC9vz61ueTbuxvA6b4HXcSx2iaWr2VEa37lPg1Vw+cEyQp7lOB219P7uow1xFfdtIEEsxbzXnqLAAaY8w==} 456 | dependencies: 457 | '@changesets/types': 5.1.0 458 | js-yaml: 3.14.1 459 | dev: true 460 | 461 | /@changesets/pre/1.0.12: 462 | resolution: {integrity: sha512-RFzWYBZx56MtgMesXjxx7ymyI829/rcIw/41hvz3VJPnY8mDscN7RJyYu7Xm7vts2Fcd+SRcO0T/Ws3I1/6J7g==} 463 | dependencies: 464 | '@babel/runtime': 7.19.0 465 | '@changesets/errors': 0.1.4 466 | '@changesets/types': 5.1.0 467 | '@manypkg/get-packages': 1.1.3 468 | fs-extra: 7.0.1 469 | dev: true 470 | 471 | /@changesets/read/0.5.7: 472 | resolution: {integrity: sha512-Iteg0ccTPpkJ+qFzY97k7qqdVE5Kz30TqPo9GibpBk2g8tcLFUqf+Qd0iXPLcyhUZpPL1U6Hia1gINHNKIKx4g==} 473 | dependencies: 474 | '@babel/runtime': 7.19.0 475 | '@changesets/git': 1.4.1 476 | '@changesets/logger': 0.0.5 477 | '@changesets/parse': 0.3.14 478 | '@changesets/types': 5.1.0 479 | chalk: 2.4.2 480 | fs-extra: 7.0.1 481 | p-filter: 2.1.0 482 | dev: true 483 | 484 | /@changesets/types/4.1.0: 485 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 486 | dev: true 487 | 488 | /@changesets/types/5.1.0: 489 | resolution: {integrity: sha512-uUByGATZCdaPkaO9JkBsgGDjEvHyY2Sb0e/J23+cwxBi5h0fxpLF/HObggO/Fw8T2nxK6zDfJbPsdQt5RwYFJA==} 490 | dev: true 491 | 492 | /@changesets/write/0.2.0: 493 | resolution: {integrity: sha512-iKHqGYXZvneRzRfvEBpPqKfpGELOEOEP63MKdM/SdSRon40rsUijkTmsGCHT1ueLi3iJPZPmYuZJvjjKrMzumA==} 494 | dependencies: 495 | '@babel/runtime': 7.19.0 496 | '@changesets/types': 5.1.0 497 | fs-extra: 7.0.1 498 | human-id: 1.0.2 499 | prettier: 2.7.1 500 | dev: true 501 | 502 | /@esbuild/linux-loong64/0.15.7: 503 | resolution: {integrity: sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==} 504 | engines: {node: '>=12'} 505 | cpu: [loong64] 506 | os: [linux] 507 | requiresBuild: true 508 | dev: true 509 | optional: true 510 | 511 | /@eslint/eslintrc/1.3.2: 512 | resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} 513 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 514 | dependencies: 515 | ajv: 6.12.6 516 | debug: 4.3.4 517 | espree: 9.4.0 518 | globals: 13.17.0 519 | ignore: 5.2.0 520 | import-fresh: 3.3.0 521 | js-yaml: 4.1.0 522 | minimatch: 3.1.2 523 | strip-json-comments: 3.1.1 524 | transitivePeerDependencies: 525 | - supports-color 526 | dev: true 527 | 528 | /@humanwhocodes/config-array/0.10.4: 529 | resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} 530 | engines: {node: '>=10.10.0'} 531 | dependencies: 532 | '@humanwhocodes/object-schema': 1.2.1 533 | debug: 4.3.4 534 | minimatch: 3.1.2 535 | transitivePeerDependencies: 536 | - supports-color 537 | dev: true 538 | 539 | /@humanwhocodes/gitignore-to-minimatch/1.0.2: 540 | resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} 541 | dev: true 542 | 543 | /@humanwhocodes/module-importer/1.0.1: 544 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 545 | engines: {node: '>=12.22'} 546 | dev: true 547 | 548 | /@humanwhocodes/object-schema/1.2.1: 549 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 550 | dev: true 551 | 552 | /@jridgewell/gen-mapping/0.1.1: 553 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 554 | engines: {node: '>=6.0.0'} 555 | dependencies: 556 | '@jridgewell/set-array': 1.1.2 557 | '@jridgewell/sourcemap-codec': 1.4.14 558 | dev: true 559 | 560 | /@jridgewell/gen-mapping/0.3.2: 561 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 562 | engines: {node: '>=6.0.0'} 563 | dependencies: 564 | '@jridgewell/set-array': 1.1.2 565 | '@jridgewell/sourcemap-codec': 1.4.14 566 | '@jridgewell/trace-mapping': 0.3.15 567 | dev: true 568 | 569 | /@jridgewell/resolve-uri/3.1.0: 570 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 571 | engines: {node: '>=6.0.0'} 572 | dev: true 573 | 574 | /@jridgewell/set-array/1.1.2: 575 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 576 | engines: {node: '>=6.0.0'} 577 | dev: true 578 | 579 | /@jridgewell/sourcemap-codec/1.4.14: 580 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 581 | dev: true 582 | 583 | /@jridgewell/trace-mapping/0.3.15: 584 | resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} 585 | dependencies: 586 | '@jridgewell/resolve-uri': 3.1.0 587 | '@jridgewell/sourcemap-codec': 1.4.14 588 | dev: true 589 | 590 | /@manypkg/find-root/1.1.0: 591 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 592 | dependencies: 593 | '@babel/runtime': 7.19.0 594 | '@types/node': 12.20.55 595 | find-up: 4.1.0 596 | fs-extra: 8.1.0 597 | dev: true 598 | 599 | /@manypkg/get-packages/1.1.3: 600 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 601 | dependencies: 602 | '@babel/runtime': 7.19.0 603 | '@changesets/types': 4.1.0 604 | '@manypkg/find-root': 1.1.0 605 | fs-extra: 8.1.0 606 | globby: 11.1.0 607 | read-yaml-file: 1.1.0 608 | dev: true 609 | 610 | /@nodelib/fs.scandir/2.1.5: 611 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 612 | engines: {node: '>= 8'} 613 | dependencies: 614 | '@nodelib/fs.stat': 2.0.5 615 | run-parallel: 1.2.0 616 | dev: true 617 | 618 | /@nodelib/fs.stat/2.0.5: 619 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 620 | engines: {node: '>= 8'} 621 | dev: true 622 | 623 | /@nodelib/fs.walk/1.2.8: 624 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 625 | engines: {node: '>= 8'} 626 | dependencies: 627 | '@nodelib/fs.scandir': 2.1.5 628 | fastq: 1.13.0 629 | dev: true 630 | 631 | /@trivago/prettier-plugin-sort-imports/3.3.0_prettier@2.7.1: 632 | resolution: {integrity: sha512-1y44bVZuIN0RsS3oIiGd5k8Vm3IZXYZnp4VsP2Z/S5L9WAOw43HE2clso66M2S/dDeJ+8sKPqnHsEfh39Vjs3w==} 633 | peerDependencies: 634 | prettier: 2.x 635 | dependencies: 636 | '@babel/core': 7.17.8 637 | '@babel/generator': 7.17.7 638 | '@babel/parser': 7.17.8 639 | '@babel/traverse': 7.17.3 640 | '@babel/types': 7.17.0 641 | javascript-natural-sort: 0.7.1 642 | lodash: 4.17.21 643 | prettier: 2.7.1 644 | transitivePeerDependencies: 645 | - supports-color 646 | dev: true 647 | 648 | /@types/glob/7.2.0: 649 | resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} 650 | dependencies: 651 | '@types/minimatch': 5.1.2 652 | '@types/node': 18.7.18 653 | dev: true 654 | 655 | /@types/is-ci/3.0.0: 656 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 657 | dependencies: 658 | ci-info: 3.4.0 659 | dev: true 660 | 661 | /@types/js-yaml/4.0.5: 662 | resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} 663 | dev: true 664 | 665 | /@types/json-schema/7.0.11: 666 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 667 | dev: true 668 | 669 | /@types/minimatch/5.1.2: 670 | resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} 671 | dev: true 672 | 673 | /@types/minimist/1.2.2: 674 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 675 | dev: true 676 | 677 | /@types/node/12.20.55: 678 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 679 | dev: true 680 | 681 | /@types/node/18.7.18: 682 | resolution: {integrity: sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==} 683 | dev: true 684 | 685 | /@types/normalize-package-data/2.4.1: 686 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 687 | dev: true 688 | 689 | /@types/prettier/2.7.0: 690 | resolution: {integrity: sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==} 691 | dev: true 692 | 693 | /@types/semver/6.2.3: 694 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} 695 | dev: true 696 | 697 | /@types/vscode/1.71.0: 698 | resolution: {integrity: sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==} 699 | dev: true 700 | 701 | /@typescript-eslint/eslint-plugin/5.37.0_22c5fnooleyfkzrkkgdmel5kmi: 702 | resolution: {integrity: sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==} 703 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 704 | peerDependencies: 705 | '@typescript-eslint/parser': ^5.0.0 706 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 707 | typescript: '*' 708 | peerDependenciesMeta: 709 | typescript: 710 | optional: true 711 | dependencies: 712 | '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha 713 | '@typescript-eslint/scope-manager': 5.37.0 714 | '@typescript-eslint/type-utils': 5.37.0_irgkl5vooow2ydyo6aokmferha 715 | '@typescript-eslint/utils': 5.37.0_irgkl5vooow2ydyo6aokmferha 716 | debug: 4.3.4 717 | eslint: 8.23.1 718 | functional-red-black-tree: 1.0.1 719 | ignore: 5.2.0 720 | regexpp: 3.2.0 721 | semver: 7.3.7 722 | tsutils: 3.21.0_typescript@4.8.3 723 | typescript: 4.8.3 724 | transitivePeerDependencies: 725 | - supports-color 726 | dev: true 727 | 728 | /@typescript-eslint/parser/5.37.0_irgkl5vooow2ydyo6aokmferha: 729 | resolution: {integrity: sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==} 730 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 731 | peerDependencies: 732 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 733 | typescript: '*' 734 | peerDependenciesMeta: 735 | typescript: 736 | optional: true 737 | dependencies: 738 | '@typescript-eslint/scope-manager': 5.37.0 739 | '@typescript-eslint/types': 5.37.0 740 | '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 741 | debug: 4.3.4 742 | eslint: 8.23.1 743 | typescript: 4.8.3 744 | transitivePeerDependencies: 745 | - supports-color 746 | dev: true 747 | 748 | /@typescript-eslint/scope-manager/5.37.0: 749 | resolution: {integrity: sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==} 750 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 751 | dependencies: 752 | '@typescript-eslint/types': 5.37.0 753 | '@typescript-eslint/visitor-keys': 5.37.0 754 | dev: true 755 | 756 | /@typescript-eslint/type-utils/5.37.0_irgkl5vooow2ydyo6aokmferha: 757 | resolution: {integrity: sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==} 758 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 759 | peerDependencies: 760 | eslint: '*' 761 | typescript: '*' 762 | peerDependenciesMeta: 763 | typescript: 764 | optional: true 765 | dependencies: 766 | '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 767 | '@typescript-eslint/utils': 5.37.0_irgkl5vooow2ydyo6aokmferha 768 | debug: 4.3.4 769 | eslint: 8.23.1 770 | tsutils: 3.21.0_typescript@4.8.3 771 | typescript: 4.8.3 772 | transitivePeerDependencies: 773 | - supports-color 774 | dev: true 775 | 776 | /@typescript-eslint/types/5.37.0: 777 | resolution: {integrity: sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==} 778 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 779 | dev: true 780 | 781 | /@typescript-eslint/typescript-estree/5.37.0_typescript@4.8.3: 782 | resolution: {integrity: sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==} 783 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 784 | peerDependencies: 785 | typescript: '*' 786 | peerDependenciesMeta: 787 | typescript: 788 | optional: true 789 | dependencies: 790 | '@typescript-eslint/types': 5.37.0 791 | '@typescript-eslint/visitor-keys': 5.37.0 792 | debug: 4.3.4 793 | globby: 11.1.0 794 | is-glob: 4.0.3 795 | semver: 7.3.7 796 | tsutils: 3.21.0_typescript@4.8.3 797 | typescript: 4.8.3 798 | transitivePeerDependencies: 799 | - supports-color 800 | dev: true 801 | 802 | /@typescript-eslint/utils/5.37.0_irgkl5vooow2ydyo6aokmferha: 803 | resolution: {integrity: sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==} 804 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 805 | peerDependencies: 806 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 807 | dependencies: 808 | '@types/json-schema': 7.0.11 809 | '@typescript-eslint/scope-manager': 5.37.0 810 | '@typescript-eslint/types': 5.37.0 811 | '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 812 | eslint: 8.23.1 813 | eslint-scope: 5.1.1 814 | eslint-utils: 3.0.0_eslint@8.23.1 815 | transitivePeerDependencies: 816 | - supports-color 817 | - typescript 818 | dev: true 819 | 820 | /@typescript-eslint/visitor-keys/5.37.0: 821 | resolution: {integrity: sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==} 822 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 823 | dependencies: 824 | '@typescript-eslint/types': 5.37.0 825 | eslint-visitor-keys: 3.3.0 826 | dev: true 827 | 828 | /acorn-jsx/5.3.2_acorn@8.8.0: 829 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 830 | peerDependencies: 831 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 832 | dependencies: 833 | acorn: 8.8.0 834 | dev: true 835 | 836 | /acorn/8.8.0: 837 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 838 | engines: {node: '>=0.4.0'} 839 | hasBin: true 840 | dev: true 841 | 842 | /ajv/6.12.6: 843 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 844 | dependencies: 845 | fast-deep-equal: 3.1.3 846 | fast-json-stable-stringify: 2.1.0 847 | json-schema-traverse: 0.4.1 848 | uri-js: 4.4.1 849 | dev: true 850 | 851 | /ansi-colors/4.1.3: 852 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 853 | engines: {node: '>=6'} 854 | dev: true 855 | 856 | /ansi-escapes/4.3.2: 857 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 858 | engines: {node: '>=8'} 859 | dependencies: 860 | type-fest: 0.21.3 861 | dev: true 862 | 863 | /ansi-regex/5.0.1: 864 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 865 | engines: {node: '>=8'} 866 | dev: true 867 | 868 | /ansi-styles/3.2.1: 869 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 870 | engines: {node: '>=4'} 871 | dependencies: 872 | color-convert: 1.9.3 873 | dev: true 874 | 875 | /ansi-styles/4.3.0: 876 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 877 | engines: {node: '>=8'} 878 | dependencies: 879 | color-convert: 2.0.1 880 | dev: true 881 | 882 | /anymatch/3.1.2: 883 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 884 | engines: {node: '>= 8'} 885 | dependencies: 886 | normalize-path: 3.0.0 887 | picomatch: 2.3.1 888 | dev: true 889 | 890 | /argparse/1.0.10: 891 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 892 | dependencies: 893 | sprintf-js: 1.0.3 894 | dev: true 895 | 896 | /argparse/2.0.1: 897 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 898 | 899 | /array-union/2.1.0: 900 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 901 | engines: {node: '>=8'} 902 | dev: true 903 | 904 | /array.prototype.flat/1.3.0: 905 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 906 | engines: {node: '>= 0.4'} 907 | dependencies: 908 | call-bind: 1.0.2 909 | define-properties: 1.1.4 910 | es-abstract: 1.20.2 911 | es-shim-unscopables: 1.0.0 912 | dev: true 913 | 914 | /arrify/1.0.1: 915 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 916 | engines: {node: '>=0.10.0'} 917 | dev: true 918 | 919 | /azure-devops-node-api/11.2.0: 920 | resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} 921 | dependencies: 922 | tunnel: 0.0.6 923 | typed-rest-client: 1.8.9 924 | dev: true 925 | 926 | /balanced-match/1.0.2: 927 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 928 | dev: true 929 | 930 | /base64-js/1.5.1: 931 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 932 | dev: true 933 | 934 | /better-path-resolve/1.0.0: 935 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 936 | engines: {node: '>=4'} 937 | dependencies: 938 | is-windows: 1.0.2 939 | dev: true 940 | 941 | /binary-extensions/2.2.0: 942 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 943 | engines: {node: '>=8'} 944 | dev: true 945 | 946 | /bl/4.1.0: 947 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 948 | dependencies: 949 | buffer: 5.7.1 950 | inherits: 2.0.4 951 | readable-stream: 3.6.0 952 | dev: true 953 | 954 | /boolbase/1.0.0: 955 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 956 | dev: true 957 | 958 | /brace-expansion/1.1.11: 959 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 960 | dependencies: 961 | balanced-match: 1.0.2 962 | concat-map: 0.0.1 963 | dev: true 964 | 965 | /braces/3.0.2: 966 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 967 | engines: {node: '>=8'} 968 | dependencies: 969 | fill-range: 7.0.1 970 | dev: true 971 | 972 | /breakword/1.0.5: 973 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} 974 | dependencies: 975 | wcwidth: 1.0.1 976 | dev: true 977 | 978 | /browserslist/4.21.4: 979 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 980 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 981 | hasBin: true 982 | dependencies: 983 | caniuse-lite: 1.0.30001402 984 | electron-to-chromium: 1.4.254 985 | node-releases: 2.0.6 986 | update-browserslist-db: 1.0.9_browserslist@4.21.4 987 | dev: true 988 | 989 | /buffer-crc32/0.2.13: 990 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 991 | dev: true 992 | 993 | /buffer/5.7.1: 994 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 995 | dependencies: 996 | base64-js: 1.5.1 997 | ieee754: 1.2.1 998 | dev: true 999 | 1000 | /call-bind/1.0.2: 1001 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1002 | dependencies: 1003 | function-bind: 1.1.1 1004 | get-intrinsic: 1.1.3 1005 | dev: true 1006 | 1007 | /callsites/3.1.0: 1008 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1009 | engines: {node: '>=6'} 1010 | dev: true 1011 | 1012 | /camelcase-keys/6.2.2: 1013 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 1014 | engines: {node: '>=8'} 1015 | dependencies: 1016 | camelcase: 5.3.1 1017 | map-obj: 4.3.0 1018 | quick-lru: 4.0.1 1019 | dev: true 1020 | 1021 | /camelcase/5.3.1: 1022 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1023 | engines: {node: '>=6'} 1024 | dev: true 1025 | 1026 | /caniuse-lite/1.0.30001402: 1027 | resolution: {integrity: sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==} 1028 | dev: true 1029 | 1030 | /chalk/2.4.2: 1031 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1032 | engines: {node: '>=4'} 1033 | dependencies: 1034 | ansi-styles: 3.2.1 1035 | escape-string-regexp: 1.0.5 1036 | supports-color: 5.5.0 1037 | dev: true 1038 | 1039 | /chalk/4.1.2: 1040 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1041 | engines: {node: '>=10'} 1042 | dependencies: 1043 | ansi-styles: 4.3.0 1044 | supports-color: 7.2.0 1045 | dev: true 1046 | 1047 | /chardet/0.7.0: 1048 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 1049 | dev: true 1050 | 1051 | /cheerio-select/2.1.0: 1052 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 1053 | dependencies: 1054 | boolbase: 1.0.0 1055 | css-select: 5.1.0 1056 | css-what: 6.1.0 1057 | domelementtype: 2.3.0 1058 | domhandler: 5.0.3 1059 | domutils: 3.0.1 1060 | dev: true 1061 | 1062 | /cheerio/1.0.0-rc.12: 1063 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} 1064 | engines: {node: '>= 6'} 1065 | dependencies: 1066 | cheerio-select: 2.1.0 1067 | dom-serializer: 2.0.0 1068 | domhandler: 5.0.3 1069 | domutils: 3.0.1 1070 | htmlparser2: 8.0.1 1071 | parse5: 7.1.1 1072 | parse5-htmlparser2-tree-adapter: 7.0.0 1073 | dev: true 1074 | 1075 | /chokidar/3.5.3: 1076 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1077 | engines: {node: '>= 8.10.0'} 1078 | dependencies: 1079 | anymatch: 3.1.2 1080 | braces: 3.0.2 1081 | glob-parent: 5.1.2 1082 | is-binary-path: 2.1.0 1083 | is-glob: 4.0.3 1084 | normalize-path: 3.0.0 1085 | readdirp: 3.6.0 1086 | optionalDependencies: 1087 | fsevents: 2.3.2 1088 | dev: true 1089 | 1090 | /chownr/1.1.4: 1091 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 1092 | dev: true 1093 | 1094 | /ci-info/3.4.0: 1095 | resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} 1096 | dev: true 1097 | 1098 | /cliui/6.0.0: 1099 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 1100 | dependencies: 1101 | string-width: 4.2.3 1102 | strip-ansi: 6.0.1 1103 | wrap-ansi: 6.2.0 1104 | dev: true 1105 | 1106 | /cliui/7.0.4: 1107 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1108 | dependencies: 1109 | string-width: 4.2.3 1110 | strip-ansi: 6.0.1 1111 | wrap-ansi: 7.0.0 1112 | dev: true 1113 | 1114 | /clone/1.0.4: 1115 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 1116 | engines: {node: '>=0.8'} 1117 | dev: true 1118 | 1119 | /color-convert/1.9.3: 1120 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1121 | dependencies: 1122 | color-name: 1.1.3 1123 | dev: true 1124 | 1125 | /color-convert/2.0.1: 1126 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1127 | engines: {node: '>=7.0.0'} 1128 | dependencies: 1129 | color-name: 1.1.4 1130 | dev: true 1131 | 1132 | /color-name/1.1.3: 1133 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1134 | dev: true 1135 | 1136 | /color-name/1.1.4: 1137 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1138 | dev: true 1139 | 1140 | /commander/6.2.1: 1141 | resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} 1142 | engines: {node: '>= 6'} 1143 | dev: true 1144 | 1145 | /commander/8.3.0: 1146 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1147 | engines: {node: '>= 12'} 1148 | dev: true 1149 | 1150 | /concat-map/0.0.1: 1151 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1152 | dev: true 1153 | 1154 | /convert-source-map/1.8.0: 1155 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1156 | dependencies: 1157 | safe-buffer: 5.1.2 1158 | dev: true 1159 | 1160 | /cross-spawn/5.1.0: 1161 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} 1162 | dependencies: 1163 | lru-cache: 4.1.5 1164 | shebang-command: 1.2.0 1165 | which: 1.3.1 1166 | dev: true 1167 | 1168 | /cross-spawn/7.0.3: 1169 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1170 | engines: {node: '>= 8'} 1171 | dependencies: 1172 | path-key: 3.1.1 1173 | shebang-command: 2.0.0 1174 | which: 2.0.2 1175 | dev: true 1176 | 1177 | /css-select/5.1.0: 1178 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 1179 | dependencies: 1180 | boolbase: 1.0.0 1181 | css-what: 6.1.0 1182 | domhandler: 5.0.3 1183 | domutils: 3.0.1 1184 | nth-check: 2.1.1 1185 | dev: true 1186 | 1187 | /css-what/6.1.0: 1188 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 1189 | engines: {node: '>= 6'} 1190 | dev: true 1191 | 1192 | /csv-generate/3.4.3: 1193 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 1194 | dev: true 1195 | 1196 | /csv-parse/4.16.3: 1197 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 1198 | dev: true 1199 | 1200 | /csv-stringify/5.6.5: 1201 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 1202 | dev: true 1203 | 1204 | /csv/5.5.3: 1205 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 1206 | engines: {node: '>= 0.1.90'} 1207 | dependencies: 1208 | csv-generate: 3.4.3 1209 | csv-parse: 4.16.3 1210 | csv-stringify: 5.6.5 1211 | stream-transform: 2.1.3 1212 | dev: true 1213 | 1214 | /dataloader/1.4.0: 1215 | resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} 1216 | dev: true 1217 | 1218 | /debug/4.3.4: 1219 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1220 | engines: {node: '>=6.0'} 1221 | peerDependencies: 1222 | supports-color: '*' 1223 | peerDependenciesMeta: 1224 | supports-color: 1225 | optional: true 1226 | dependencies: 1227 | ms: 2.1.2 1228 | dev: true 1229 | 1230 | /decamelize-keys/1.1.0: 1231 | resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} 1232 | engines: {node: '>=0.10.0'} 1233 | dependencies: 1234 | decamelize: 1.2.0 1235 | map-obj: 1.0.1 1236 | dev: true 1237 | 1238 | /decamelize/1.2.0: 1239 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 1240 | engines: {node: '>=0.10.0'} 1241 | dev: true 1242 | 1243 | /decompress-response/6.0.0: 1244 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 1245 | engines: {node: '>=10'} 1246 | dependencies: 1247 | mimic-response: 3.1.0 1248 | dev: true 1249 | 1250 | /deep-extend/0.6.0: 1251 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 1252 | engines: {node: '>=4.0.0'} 1253 | dev: true 1254 | 1255 | /deep-is/0.1.4: 1256 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1257 | dev: true 1258 | 1259 | /defaults/1.0.3: 1260 | resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} 1261 | dependencies: 1262 | clone: 1.0.4 1263 | dev: true 1264 | 1265 | /define-properties/1.1.4: 1266 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 1267 | engines: {node: '>= 0.4'} 1268 | dependencies: 1269 | has-property-descriptors: 1.0.0 1270 | object-keys: 1.1.1 1271 | dev: true 1272 | 1273 | /detect-indent/6.1.0: 1274 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1275 | engines: {node: '>=8'} 1276 | dev: true 1277 | 1278 | /detect-libc/2.0.1: 1279 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 1280 | engines: {node: '>=8'} 1281 | dev: true 1282 | 1283 | /detect-newline/3.1.0: 1284 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1285 | engines: {node: '>=8'} 1286 | dev: true 1287 | 1288 | /dir-glob/3.0.1: 1289 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1290 | engines: {node: '>=8'} 1291 | dependencies: 1292 | path-type: 4.0.0 1293 | dev: true 1294 | 1295 | /doctrine/3.0.0: 1296 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1297 | engines: {node: '>=6.0.0'} 1298 | dependencies: 1299 | esutils: 2.0.3 1300 | dev: true 1301 | 1302 | /dom-serializer/2.0.0: 1303 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1304 | dependencies: 1305 | domelementtype: 2.3.0 1306 | domhandler: 5.0.3 1307 | entities: 4.4.0 1308 | dev: true 1309 | 1310 | /domelementtype/2.3.0: 1311 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1312 | dev: true 1313 | 1314 | /domhandler/5.0.3: 1315 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1316 | engines: {node: '>= 4'} 1317 | dependencies: 1318 | domelementtype: 2.3.0 1319 | dev: true 1320 | 1321 | /domutils/3.0.1: 1322 | resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} 1323 | dependencies: 1324 | dom-serializer: 2.0.0 1325 | domelementtype: 2.3.0 1326 | domhandler: 5.0.3 1327 | dev: true 1328 | 1329 | /dotenv/8.6.0: 1330 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} 1331 | engines: {node: '>=10'} 1332 | dev: true 1333 | 1334 | /electron-to-chromium/1.4.254: 1335 | resolution: {integrity: sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==} 1336 | dev: true 1337 | 1338 | /emoji-regex/8.0.0: 1339 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1340 | dev: true 1341 | 1342 | /end-of-stream/1.4.4: 1343 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1344 | dependencies: 1345 | once: 1.4.0 1346 | dev: true 1347 | 1348 | /enquirer/2.3.6: 1349 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1350 | engines: {node: '>=8.6'} 1351 | dependencies: 1352 | ansi-colors: 4.1.3 1353 | dev: true 1354 | 1355 | /entities/2.1.0: 1356 | resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} 1357 | dev: true 1358 | 1359 | /entities/4.4.0: 1360 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 1361 | engines: {node: '>=0.12'} 1362 | dev: true 1363 | 1364 | /error-ex/1.3.2: 1365 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1366 | dependencies: 1367 | is-arrayish: 0.2.1 1368 | dev: true 1369 | 1370 | /es-abstract/1.20.2: 1371 | resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} 1372 | engines: {node: '>= 0.4'} 1373 | dependencies: 1374 | call-bind: 1.0.2 1375 | es-to-primitive: 1.2.1 1376 | function-bind: 1.1.1 1377 | function.prototype.name: 1.1.5 1378 | get-intrinsic: 1.1.3 1379 | get-symbol-description: 1.0.0 1380 | has: 1.0.3 1381 | has-property-descriptors: 1.0.0 1382 | has-symbols: 1.0.3 1383 | internal-slot: 1.0.3 1384 | is-callable: 1.2.6 1385 | is-negative-zero: 2.0.2 1386 | is-regex: 1.1.4 1387 | is-shared-array-buffer: 1.0.2 1388 | is-string: 1.0.7 1389 | is-weakref: 1.0.2 1390 | object-inspect: 1.12.2 1391 | object-keys: 1.1.1 1392 | object.assign: 4.1.4 1393 | regexp.prototype.flags: 1.4.3 1394 | string.prototype.trimend: 1.0.5 1395 | string.prototype.trimstart: 1.0.5 1396 | unbox-primitive: 1.0.2 1397 | dev: true 1398 | 1399 | /es-shim-unscopables/1.0.0: 1400 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1401 | dependencies: 1402 | has: 1.0.3 1403 | dev: true 1404 | 1405 | /es-to-primitive/1.2.1: 1406 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1407 | engines: {node: '>= 0.4'} 1408 | dependencies: 1409 | is-callable: 1.2.6 1410 | is-date-object: 1.0.5 1411 | is-symbol: 1.0.4 1412 | dev: true 1413 | 1414 | /esbuild-android-64/0.15.7: 1415 | resolution: {integrity: sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==} 1416 | engines: {node: '>=12'} 1417 | cpu: [x64] 1418 | os: [android] 1419 | requiresBuild: true 1420 | dev: true 1421 | optional: true 1422 | 1423 | /esbuild-android-arm64/0.15.7: 1424 | resolution: {integrity: sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==} 1425 | engines: {node: '>=12'} 1426 | cpu: [arm64] 1427 | os: [android] 1428 | requiresBuild: true 1429 | dev: true 1430 | optional: true 1431 | 1432 | /esbuild-darwin-64/0.15.7: 1433 | resolution: {integrity: sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==} 1434 | engines: {node: '>=12'} 1435 | cpu: [x64] 1436 | os: [darwin] 1437 | requiresBuild: true 1438 | dev: true 1439 | optional: true 1440 | 1441 | /esbuild-darwin-arm64/0.15.7: 1442 | resolution: {integrity: sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==} 1443 | engines: {node: '>=12'} 1444 | cpu: [arm64] 1445 | os: [darwin] 1446 | requiresBuild: true 1447 | dev: true 1448 | optional: true 1449 | 1450 | /esbuild-freebsd-64/0.15.7: 1451 | resolution: {integrity: sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==} 1452 | engines: {node: '>=12'} 1453 | cpu: [x64] 1454 | os: [freebsd] 1455 | requiresBuild: true 1456 | dev: true 1457 | optional: true 1458 | 1459 | /esbuild-freebsd-arm64/0.15.7: 1460 | resolution: {integrity: sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==} 1461 | engines: {node: '>=12'} 1462 | cpu: [arm64] 1463 | os: [freebsd] 1464 | requiresBuild: true 1465 | dev: true 1466 | optional: true 1467 | 1468 | /esbuild-linux-32/0.15.7: 1469 | resolution: {integrity: sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==} 1470 | engines: {node: '>=12'} 1471 | cpu: [ia32] 1472 | os: [linux] 1473 | requiresBuild: true 1474 | dev: true 1475 | optional: true 1476 | 1477 | /esbuild-linux-64/0.15.7: 1478 | resolution: {integrity: sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==} 1479 | engines: {node: '>=12'} 1480 | cpu: [x64] 1481 | os: [linux] 1482 | requiresBuild: true 1483 | dev: true 1484 | optional: true 1485 | 1486 | /esbuild-linux-arm/0.15.7: 1487 | resolution: {integrity: sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==} 1488 | engines: {node: '>=12'} 1489 | cpu: [arm] 1490 | os: [linux] 1491 | requiresBuild: true 1492 | dev: true 1493 | optional: true 1494 | 1495 | /esbuild-linux-arm64/0.15.7: 1496 | resolution: {integrity: sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==} 1497 | engines: {node: '>=12'} 1498 | cpu: [arm64] 1499 | os: [linux] 1500 | requiresBuild: true 1501 | dev: true 1502 | optional: true 1503 | 1504 | /esbuild-linux-mips64le/0.15.7: 1505 | resolution: {integrity: sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==} 1506 | engines: {node: '>=12'} 1507 | cpu: [mips64el] 1508 | os: [linux] 1509 | requiresBuild: true 1510 | dev: true 1511 | optional: true 1512 | 1513 | /esbuild-linux-ppc64le/0.15.7: 1514 | resolution: {integrity: sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==} 1515 | engines: {node: '>=12'} 1516 | cpu: [ppc64] 1517 | os: [linux] 1518 | requiresBuild: true 1519 | dev: true 1520 | optional: true 1521 | 1522 | /esbuild-linux-riscv64/0.15.7: 1523 | resolution: {integrity: sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==} 1524 | engines: {node: '>=12'} 1525 | cpu: [riscv64] 1526 | os: [linux] 1527 | requiresBuild: true 1528 | dev: true 1529 | optional: true 1530 | 1531 | /esbuild-linux-s390x/0.15.7: 1532 | resolution: {integrity: sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==} 1533 | engines: {node: '>=12'} 1534 | cpu: [s390x] 1535 | os: [linux] 1536 | requiresBuild: true 1537 | dev: true 1538 | optional: true 1539 | 1540 | /esbuild-netbsd-64/0.15.7: 1541 | resolution: {integrity: sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==} 1542 | engines: {node: '>=12'} 1543 | cpu: [x64] 1544 | os: [netbsd] 1545 | requiresBuild: true 1546 | dev: true 1547 | optional: true 1548 | 1549 | /esbuild-openbsd-64/0.15.7: 1550 | resolution: {integrity: sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==} 1551 | engines: {node: '>=12'} 1552 | cpu: [x64] 1553 | os: [openbsd] 1554 | requiresBuild: true 1555 | dev: true 1556 | optional: true 1557 | 1558 | /esbuild-sunos-64/0.15.7: 1559 | resolution: {integrity: sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==} 1560 | engines: {node: '>=12'} 1561 | cpu: [x64] 1562 | os: [sunos] 1563 | requiresBuild: true 1564 | dev: true 1565 | optional: true 1566 | 1567 | /esbuild-windows-32/0.15.7: 1568 | resolution: {integrity: sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==} 1569 | engines: {node: '>=12'} 1570 | cpu: [ia32] 1571 | os: [win32] 1572 | requiresBuild: true 1573 | dev: true 1574 | optional: true 1575 | 1576 | /esbuild-windows-64/0.15.7: 1577 | resolution: {integrity: sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==} 1578 | engines: {node: '>=12'} 1579 | cpu: [x64] 1580 | os: [win32] 1581 | requiresBuild: true 1582 | dev: true 1583 | optional: true 1584 | 1585 | /esbuild-windows-arm64/0.15.7: 1586 | resolution: {integrity: sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==} 1587 | engines: {node: '>=12'} 1588 | cpu: [arm64] 1589 | os: [win32] 1590 | requiresBuild: true 1591 | dev: true 1592 | optional: true 1593 | 1594 | /esbuild/0.15.7: 1595 | resolution: {integrity: sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==} 1596 | engines: {node: '>=12'} 1597 | hasBin: true 1598 | requiresBuild: true 1599 | optionalDependencies: 1600 | '@esbuild/linux-loong64': 0.15.7 1601 | esbuild-android-64: 0.15.7 1602 | esbuild-android-arm64: 0.15.7 1603 | esbuild-darwin-64: 0.15.7 1604 | esbuild-darwin-arm64: 0.15.7 1605 | esbuild-freebsd-64: 0.15.7 1606 | esbuild-freebsd-arm64: 0.15.7 1607 | esbuild-linux-32: 0.15.7 1608 | esbuild-linux-64: 0.15.7 1609 | esbuild-linux-arm: 0.15.7 1610 | esbuild-linux-arm64: 0.15.7 1611 | esbuild-linux-mips64le: 0.15.7 1612 | esbuild-linux-ppc64le: 0.15.7 1613 | esbuild-linux-riscv64: 0.15.7 1614 | esbuild-linux-s390x: 0.15.7 1615 | esbuild-netbsd-64: 0.15.7 1616 | esbuild-openbsd-64: 0.15.7 1617 | esbuild-sunos-64: 0.15.7 1618 | esbuild-windows-32: 0.15.7 1619 | esbuild-windows-64: 0.15.7 1620 | esbuild-windows-arm64: 0.15.7 1621 | dev: true 1622 | 1623 | /escalade/3.1.1: 1624 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1625 | engines: {node: '>=6'} 1626 | dev: true 1627 | 1628 | /escape-string-regexp/1.0.5: 1629 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1630 | engines: {node: '>=0.8.0'} 1631 | dev: true 1632 | 1633 | /escape-string-regexp/4.0.0: 1634 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1635 | engines: {node: '>=10'} 1636 | dev: true 1637 | 1638 | /eslint-scope/5.1.1: 1639 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1640 | engines: {node: '>=8.0.0'} 1641 | dependencies: 1642 | esrecurse: 4.3.0 1643 | estraverse: 4.3.0 1644 | dev: true 1645 | 1646 | /eslint-scope/7.1.1: 1647 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1648 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1649 | dependencies: 1650 | esrecurse: 4.3.0 1651 | estraverse: 5.3.0 1652 | dev: true 1653 | 1654 | /eslint-utils/3.0.0_eslint@8.23.1: 1655 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1656 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1657 | peerDependencies: 1658 | eslint: '>=5' 1659 | dependencies: 1660 | eslint: 8.23.1 1661 | eslint-visitor-keys: 2.1.0 1662 | dev: true 1663 | 1664 | /eslint-visitor-keys/2.1.0: 1665 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1666 | engines: {node: '>=10'} 1667 | dev: true 1668 | 1669 | /eslint-visitor-keys/3.3.0: 1670 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1671 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1672 | dev: true 1673 | 1674 | /eslint/8.23.1: 1675 | resolution: {integrity: sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==} 1676 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1677 | hasBin: true 1678 | dependencies: 1679 | '@eslint/eslintrc': 1.3.2 1680 | '@humanwhocodes/config-array': 0.10.4 1681 | '@humanwhocodes/gitignore-to-minimatch': 1.0.2 1682 | '@humanwhocodes/module-importer': 1.0.1 1683 | ajv: 6.12.6 1684 | chalk: 4.1.2 1685 | cross-spawn: 7.0.3 1686 | debug: 4.3.4 1687 | doctrine: 3.0.0 1688 | escape-string-regexp: 4.0.0 1689 | eslint-scope: 7.1.1 1690 | eslint-utils: 3.0.0_eslint@8.23.1 1691 | eslint-visitor-keys: 3.3.0 1692 | espree: 9.4.0 1693 | esquery: 1.4.0 1694 | esutils: 2.0.3 1695 | fast-deep-equal: 3.1.3 1696 | file-entry-cache: 6.0.1 1697 | find-up: 5.0.0 1698 | glob-parent: 6.0.2 1699 | globals: 13.17.0 1700 | globby: 11.1.0 1701 | grapheme-splitter: 1.0.4 1702 | ignore: 5.2.0 1703 | import-fresh: 3.3.0 1704 | imurmurhash: 0.1.4 1705 | is-glob: 4.0.3 1706 | js-sdsl: 4.1.4 1707 | js-yaml: 4.1.0 1708 | json-stable-stringify-without-jsonify: 1.0.1 1709 | levn: 0.4.1 1710 | lodash.merge: 4.6.2 1711 | minimatch: 3.1.2 1712 | natural-compare: 1.4.0 1713 | optionator: 0.9.1 1714 | regexpp: 3.2.0 1715 | strip-ansi: 6.0.1 1716 | strip-json-comments: 3.1.1 1717 | text-table: 0.2.0 1718 | transitivePeerDependencies: 1719 | - supports-color 1720 | dev: true 1721 | 1722 | /espree/9.4.0: 1723 | resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} 1724 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1725 | dependencies: 1726 | acorn: 8.8.0 1727 | acorn-jsx: 5.3.2_acorn@8.8.0 1728 | eslint-visitor-keys: 3.3.0 1729 | dev: true 1730 | 1731 | /esprima/4.0.1: 1732 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1733 | engines: {node: '>=4'} 1734 | hasBin: true 1735 | dev: true 1736 | 1737 | /esquery/1.4.0: 1738 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1739 | engines: {node: '>=0.10'} 1740 | dependencies: 1741 | estraverse: 5.3.0 1742 | dev: true 1743 | 1744 | /esrecurse/4.3.0: 1745 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1746 | engines: {node: '>=4.0'} 1747 | dependencies: 1748 | estraverse: 5.3.0 1749 | dev: true 1750 | 1751 | /estraverse/4.3.0: 1752 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1753 | engines: {node: '>=4.0'} 1754 | dev: true 1755 | 1756 | /estraverse/5.3.0: 1757 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1758 | engines: {node: '>=4.0'} 1759 | dev: true 1760 | 1761 | /esutils/2.0.3: 1762 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1763 | engines: {node: '>=0.10.0'} 1764 | dev: true 1765 | 1766 | /expand-template/2.0.3: 1767 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 1768 | engines: {node: '>=6'} 1769 | dev: true 1770 | 1771 | /extendable-error/0.1.7: 1772 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1773 | dev: true 1774 | 1775 | /external-editor/3.1.0: 1776 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1777 | engines: {node: '>=4'} 1778 | dependencies: 1779 | chardet: 0.7.0 1780 | iconv-lite: 0.4.24 1781 | tmp: 0.0.33 1782 | dev: true 1783 | 1784 | /fast-deep-equal/3.1.3: 1785 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1786 | dev: true 1787 | 1788 | /fast-glob/3.2.12: 1789 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1790 | engines: {node: '>=8.6.0'} 1791 | dependencies: 1792 | '@nodelib/fs.stat': 2.0.5 1793 | '@nodelib/fs.walk': 1.2.8 1794 | glob-parent: 5.1.2 1795 | merge2: 1.4.1 1796 | micromatch: 4.0.5 1797 | dev: true 1798 | 1799 | /fast-json-stable-stringify/2.1.0: 1800 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1801 | dev: true 1802 | 1803 | /fast-levenshtein/2.0.6: 1804 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1805 | dev: true 1806 | 1807 | /fastq/1.13.0: 1808 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1809 | dependencies: 1810 | reusify: 1.0.4 1811 | dev: true 1812 | 1813 | /fd-slicer/1.1.0: 1814 | resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} 1815 | dependencies: 1816 | pend: 1.2.0 1817 | dev: true 1818 | 1819 | /file-entry-cache/6.0.1: 1820 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1821 | engines: {node: ^10.12.0 || >=12.0.0} 1822 | dependencies: 1823 | flat-cache: 3.0.4 1824 | dev: true 1825 | 1826 | /fill-range/7.0.1: 1827 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1828 | engines: {node: '>=8'} 1829 | dependencies: 1830 | to-regex-range: 5.0.1 1831 | dev: true 1832 | 1833 | /find-up/4.1.0: 1834 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1835 | engines: {node: '>=8'} 1836 | dependencies: 1837 | locate-path: 5.0.0 1838 | path-exists: 4.0.0 1839 | dev: true 1840 | 1841 | /find-up/5.0.0: 1842 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1843 | engines: {node: '>=10'} 1844 | dependencies: 1845 | locate-path: 6.0.0 1846 | path-exists: 4.0.0 1847 | dev: true 1848 | 1849 | /find-yarn-workspace-root2/1.2.16: 1850 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1851 | dependencies: 1852 | micromatch: 4.0.5 1853 | pkg-dir: 4.2.0 1854 | dev: true 1855 | 1856 | /flat-cache/3.0.4: 1857 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1858 | engines: {node: ^10.12.0 || >=12.0.0} 1859 | dependencies: 1860 | flatted: 3.2.7 1861 | rimraf: 3.0.2 1862 | dev: true 1863 | 1864 | /flatted/3.2.7: 1865 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1866 | dev: true 1867 | 1868 | /fs-constants/1.0.0: 1869 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 1870 | dev: true 1871 | 1872 | /fs-extra/7.0.1: 1873 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1874 | engines: {node: '>=6 <7 || >=8'} 1875 | dependencies: 1876 | graceful-fs: 4.2.10 1877 | jsonfile: 4.0.0 1878 | universalify: 0.1.2 1879 | dev: true 1880 | 1881 | /fs-extra/8.1.0: 1882 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1883 | engines: {node: '>=6 <7 || >=8'} 1884 | dependencies: 1885 | graceful-fs: 4.2.10 1886 | jsonfile: 4.0.0 1887 | universalify: 0.1.2 1888 | dev: true 1889 | 1890 | /fs.realpath/1.0.0: 1891 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1892 | dev: true 1893 | 1894 | /fsevents/2.3.2: 1895 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1896 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1897 | os: [darwin] 1898 | requiresBuild: true 1899 | dev: true 1900 | optional: true 1901 | 1902 | /function-bind/1.1.1: 1903 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1904 | dev: true 1905 | 1906 | /function.prototype.name/1.1.5: 1907 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1908 | engines: {node: '>= 0.4'} 1909 | dependencies: 1910 | call-bind: 1.0.2 1911 | define-properties: 1.1.4 1912 | es-abstract: 1.20.2 1913 | functions-have-names: 1.2.3 1914 | dev: true 1915 | 1916 | /functional-red-black-tree/1.0.1: 1917 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 1918 | dev: true 1919 | 1920 | /functions-have-names/1.2.3: 1921 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1922 | dev: true 1923 | 1924 | /gensync/1.0.0-beta.2: 1925 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1926 | engines: {node: '>=6.9.0'} 1927 | dev: true 1928 | 1929 | /get-caller-file/2.0.5: 1930 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1931 | engines: {node: 6.* || 8.* || >= 10.*} 1932 | dev: true 1933 | 1934 | /get-intrinsic/1.1.3: 1935 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1936 | dependencies: 1937 | function-bind: 1.1.1 1938 | has: 1.0.3 1939 | has-symbols: 1.0.3 1940 | dev: true 1941 | 1942 | /get-symbol-description/1.0.0: 1943 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1944 | engines: {node: '>= 0.4'} 1945 | dependencies: 1946 | call-bind: 1.0.2 1947 | get-intrinsic: 1.1.3 1948 | dev: true 1949 | 1950 | /git-hooks-list/1.0.3: 1951 | resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} 1952 | dev: true 1953 | 1954 | /github-from-package/0.0.0: 1955 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 1956 | dev: true 1957 | 1958 | /glob-parent/5.1.2: 1959 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1960 | engines: {node: '>= 6'} 1961 | dependencies: 1962 | is-glob: 4.0.3 1963 | dev: true 1964 | 1965 | /glob-parent/6.0.2: 1966 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1967 | engines: {node: '>=10.13.0'} 1968 | dependencies: 1969 | is-glob: 4.0.3 1970 | dev: true 1971 | 1972 | /glob/7.2.3: 1973 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1974 | dependencies: 1975 | fs.realpath: 1.0.0 1976 | inflight: 1.0.6 1977 | inherits: 2.0.4 1978 | minimatch: 3.1.2 1979 | once: 1.4.0 1980 | path-is-absolute: 1.0.1 1981 | dev: true 1982 | 1983 | /globals/11.12.0: 1984 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1985 | engines: {node: '>=4'} 1986 | dev: true 1987 | 1988 | /globals/13.17.0: 1989 | resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} 1990 | engines: {node: '>=8'} 1991 | dependencies: 1992 | type-fest: 0.20.2 1993 | dev: true 1994 | 1995 | /globby/10.0.0: 1996 | resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} 1997 | engines: {node: '>=8'} 1998 | dependencies: 1999 | '@types/glob': 7.2.0 2000 | array-union: 2.1.0 2001 | dir-glob: 3.0.1 2002 | fast-glob: 3.2.12 2003 | glob: 7.2.3 2004 | ignore: 5.2.0 2005 | merge2: 1.4.1 2006 | slash: 3.0.0 2007 | dev: true 2008 | 2009 | /globby/11.1.0: 2010 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2011 | engines: {node: '>=10'} 2012 | dependencies: 2013 | array-union: 2.1.0 2014 | dir-glob: 3.0.1 2015 | fast-glob: 3.2.12 2016 | ignore: 5.2.0 2017 | merge2: 1.4.1 2018 | slash: 3.0.0 2019 | dev: true 2020 | 2021 | /graceful-fs/4.2.10: 2022 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 2023 | dev: true 2024 | 2025 | /grapheme-splitter/1.0.4: 2026 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 2027 | dev: true 2028 | 2029 | /hard-rejection/2.1.0: 2030 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 2031 | engines: {node: '>=6'} 2032 | dev: true 2033 | 2034 | /has-bigints/1.0.2: 2035 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 2036 | dev: true 2037 | 2038 | /has-flag/3.0.0: 2039 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 2040 | engines: {node: '>=4'} 2041 | dev: true 2042 | 2043 | /has-flag/4.0.0: 2044 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2045 | engines: {node: '>=8'} 2046 | dev: true 2047 | 2048 | /has-property-descriptors/1.0.0: 2049 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 2050 | dependencies: 2051 | get-intrinsic: 1.1.3 2052 | dev: true 2053 | 2054 | /has-symbols/1.0.3: 2055 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2056 | engines: {node: '>= 0.4'} 2057 | dev: true 2058 | 2059 | /has-tostringtag/1.0.0: 2060 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 2061 | engines: {node: '>= 0.4'} 2062 | dependencies: 2063 | has-symbols: 1.0.3 2064 | dev: true 2065 | 2066 | /has/1.0.3: 2067 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2068 | engines: {node: '>= 0.4.0'} 2069 | dependencies: 2070 | function-bind: 1.1.1 2071 | dev: true 2072 | 2073 | /hosted-git-info/2.8.9: 2074 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 2075 | dev: true 2076 | 2077 | /hosted-git-info/4.1.0: 2078 | resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} 2079 | engines: {node: '>=10'} 2080 | dependencies: 2081 | lru-cache: 6.0.0 2082 | dev: true 2083 | 2084 | /htmlparser2/8.0.1: 2085 | resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} 2086 | dependencies: 2087 | domelementtype: 2.3.0 2088 | domhandler: 5.0.3 2089 | domutils: 3.0.1 2090 | entities: 4.4.0 2091 | dev: true 2092 | 2093 | /human-id/1.0.2: 2094 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 2095 | dev: true 2096 | 2097 | /iconv-lite/0.4.24: 2098 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2099 | engines: {node: '>=0.10.0'} 2100 | dependencies: 2101 | safer-buffer: 2.1.2 2102 | dev: true 2103 | 2104 | /ieee754/1.2.1: 2105 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2106 | dev: true 2107 | 2108 | /ignore/5.2.0: 2109 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 2110 | engines: {node: '>= 4'} 2111 | dev: true 2112 | 2113 | /import-fresh/3.3.0: 2114 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2115 | engines: {node: '>=6'} 2116 | dependencies: 2117 | parent-module: 1.0.1 2118 | resolve-from: 4.0.0 2119 | dev: true 2120 | 2121 | /imurmurhash/0.1.4: 2122 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2123 | engines: {node: '>=0.8.19'} 2124 | dev: true 2125 | 2126 | /indent-string/4.0.0: 2127 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2128 | engines: {node: '>=8'} 2129 | dev: true 2130 | 2131 | /inflight/1.0.6: 2132 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2133 | dependencies: 2134 | once: 1.4.0 2135 | wrappy: 1.0.2 2136 | dev: true 2137 | 2138 | /inherits/2.0.4: 2139 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2140 | dev: true 2141 | 2142 | /ini/1.3.8: 2143 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 2144 | dev: true 2145 | 2146 | /internal-slot/1.0.3: 2147 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 2148 | engines: {node: '>= 0.4'} 2149 | dependencies: 2150 | get-intrinsic: 1.1.3 2151 | has: 1.0.3 2152 | side-channel: 1.0.4 2153 | dev: true 2154 | 2155 | /is-arrayish/0.2.1: 2156 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 2157 | dev: true 2158 | 2159 | /is-bigint/1.0.4: 2160 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2161 | dependencies: 2162 | has-bigints: 1.0.2 2163 | dev: true 2164 | 2165 | /is-binary-path/2.1.0: 2166 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2167 | engines: {node: '>=8'} 2168 | dependencies: 2169 | binary-extensions: 2.2.0 2170 | dev: true 2171 | 2172 | /is-boolean-object/1.1.2: 2173 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2174 | engines: {node: '>= 0.4'} 2175 | dependencies: 2176 | call-bind: 1.0.2 2177 | has-tostringtag: 1.0.0 2178 | dev: true 2179 | 2180 | /is-callable/1.2.6: 2181 | resolution: {integrity: sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==} 2182 | engines: {node: '>= 0.4'} 2183 | dev: true 2184 | 2185 | /is-ci/3.0.1: 2186 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 2187 | hasBin: true 2188 | dependencies: 2189 | ci-info: 3.4.0 2190 | dev: true 2191 | 2192 | /is-core-module/2.10.0: 2193 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 2194 | dependencies: 2195 | has: 1.0.3 2196 | dev: true 2197 | 2198 | /is-date-object/1.0.5: 2199 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2200 | engines: {node: '>= 0.4'} 2201 | dependencies: 2202 | has-tostringtag: 1.0.0 2203 | dev: true 2204 | 2205 | /is-extglob/2.1.1: 2206 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2207 | engines: {node: '>=0.10.0'} 2208 | dev: true 2209 | 2210 | /is-fullwidth-code-point/3.0.0: 2211 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2212 | engines: {node: '>=8'} 2213 | dev: true 2214 | 2215 | /is-glob/4.0.3: 2216 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2217 | engines: {node: '>=0.10.0'} 2218 | dependencies: 2219 | is-extglob: 2.1.1 2220 | dev: true 2221 | 2222 | /is-negative-zero/2.0.2: 2223 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2224 | engines: {node: '>= 0.4'} 2225 | dev: true 2226 | 2227 | /is-number-object/1.0.7: 2228 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2229 | engines: {node: '>= 0.4'} 2230 | dependencies: 2231 | has-tostringtag: 1.0.0 2232 | dev: true 2233 | 2234 | /is-number/7.0.0: 2235 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2236 | engines: {node: '>=0.12.0'} 2237 | dev: true 2238 | 2239 | /is-plain-obj/1.1.0: 2240 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} 2241 | engines: {node: '>=0.10.0'} 2242 | dev: true 2243 | 2244 | /is-plain-obj/2.1.0: 2245 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 2246 | engines: {node: '>=8'} 2247 | dev: true 2248 | 2249 | /is-regex/1.1.4: 2250 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2251 | engines: {node: '>= 0.4'} 2252 | dependencies: 2253 | call-bind: 1.0.2 2254 | has-tostringtag: 1.0.0 2255 | dev: true 2256 | 2257 | /is-shared-array-buffer/1.0.2: 2258 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2259 | dependencies: 2260 | call-bind: 1.0.2 2261 | dev: true 2262 | 2263 | /is-string/1.0.7: 2264 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2265 | engines: {node: '>= 0.4'} 2266 | dependencies: 2267 | has-tostringtag: 1.0.0 2268 | dev: true 2269 | 2270 | /is-subdir/1.2.0: 2271 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 2272 | engines: {node: '>=4'} 2273 | dependencies: 2274 | better-path-resolve: 1.0.0 2275 | dev: true 2276 | 2277 | /is-symbol/1.0.4: 2278 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2279 | engines: {node: '>= 0.4'} 2280 | dependencies: 2281 | has-symbols: 1.0.3 2282 | dev: true 2283 | 2284 | /is-weakref/1.0.2: 2285 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2286 | dependencies: 2287 | call-bind: 1.0.2 2288 | dev: true 2289 | 2290 | /is-windows/1.0.2: 2291 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 2292 | engines: {node: '>=0.10.0'} 2293 | dev: true 2294 | 2295 | /isexe/2.0.0: 2296 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2297 | dev: true 2298 | 2299 | /javascript-natural-sort/0.7.1: 2300 | resolution: {integrity: sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=} 2301 | dev: true 2302 | 2303 | /js-sdsl/4.1.4: 2304 | resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} 2305 | dev: true 2306 | 2307 | /js-tokens/4.0.0: 2308 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2309 | dev: true 2310 | 2311 | /js-yaml/3.14.1: 2312 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2313 | hasBin: true 2314 | dependencies: 2315 | argparse: 1.0.10 2316 | esprima: 4.0.1 2317 | dev: true 2318 | 2319 | /js-yaml/4.1.0: 2320 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2321 | hasBin: true 2322 | dependencies: 2323 | argparse: 2.0.1 2324 | 2325 | /jsesc/2.5.2: 2326 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2327 | engines: {node: '>=4'} 2328 | hasBin: true 2329 | dev: true 2330 | 2331 | /json-parse-even-better-errors/2.3.1: 2332 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2333 | dev: true 2334 | 2335 | /json-schema-traverse/0.4.1: 2336 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2337 | dev: true 2338 | 2339 | /json-stable-stringify-without-jsonify/1.0.1: 2340 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2341 | dev: true 2342 | 2343 | /json5/2.2.1: 2344 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2345 | engines: {node: '>=6'} 2346 | hasBin: true 2347 | dev: true 2348 | 2349 | /jsonfile/4.0.0: 2350 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 2351 | optionalDependencies: 2352 | graceful-fs: 4.2.10 2353 | dev: true 2354 | 2355 | /keytar/7.9.0: 2356 | resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} 2357 | requiresBuild: true 2358 | dependencies: 2359 | node-addon-api: 4.3.0 2360 | prebuild-install: 7.1.1 2361 | dev: true 2362 | 2363 | /kind-of/6.0.3: 2364 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 2365 | engines: {node: '>=0.10.0'} 2366 | dev: true 2367 | 2368 | /kleur/4.1.5: 2369 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 2370 | engines: {node: '>=6'} 2371 | dev: true 2372 | 2373 | /leven/3.1.0: 2374 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2375 | engines: {node: '>=6'} 2376 | dev: true 2377 | 2378 | /levn/0.4.1: 2379 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2380 | engines: {node: '>= 0.8.0'} 2381 | dependencies: 2382 | prelude-ls: 1.2.1 2383 | type-check: 0.4.0 2384 | dev: true 2385 | 2386 | /lines-and-columns/1.2.4: 2387 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2388 | dev: true 2389 | 2390 | /linkify-it/3.0.3: 2391 | resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} 2392 | dependencies: 2393 | uc.micro: 1.0.6 2394 | dev: true 2395 | 2396 | /load-yaml-file/0.2.0: 2397 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 2398 | engines: {node: '>=6'} 2399 | dependencies: 2400 | graceful-fs: 4.2.10 2401 | js-yaml: 3.14.1 2402 | pify: 4.0.1 2403 | strip-bom: 3.0.0 2404 | dev: true 2405 | 2406 | /locate-path/5.0.0: 2407 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2408 | engines: {node: '>=8'} 2409 | dependencies: 2410 | p-locate: 4.1.0 2411 | dev: true 2412 | 2413 | /locate-path/6.0.0: 2414 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2415 | engines: {node: '>=10'} 2416 | dependencies: 2417 | p-locate: 5.0.0 2418 | dev: true 2419 | 2420 | /lodash.debounce/4.0.8: 2421 | resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} 2422 | dev: true 2423 | 2424 | /lodash.merge/4.6.2: 2425 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2426 | dev: true 2427 | 2428 | /lodash.pick/4.4.0: 2429 | resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} 2430 | dev: true 2431 | 2432 | /lodash.startcase/4.4.0: 2433 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 2434 | dev: true 2435 | 2436 | /lodash/4.17.21: 2437 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2438 | dev: true 2439 | 2440 | /lru-cache/4.1.5: 2441 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 2442 | dependencies: 2443 | pseudomap: 1.0.2 2444 | yallist: 2.1.2 2445 | dev: true 2446 | 2447 | /lru-cache/6.0.0: 2448 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2449 | engines: {node: '>=10'} 2450 | dependencies: 2451 | yallist: 4.0.0 2452 | dev: true 2453 | 2454 | /map-obj/1.0.1: 2455 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} 2456 | engines: {node: '>=0.10.0'} 2457 | dev: true 2458 | 2459 | /map-obj/4.3.0: 2460 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 2461 | engines: {node: '>=8'} 2462 | dev: true 2463 | 2464 | /markdown-it/12.3.2: 2465 | resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} 2466 | hasBin: true 2467 | dependencies: 2468 | argparse: 2.0.1 2469 | entities: 2.1.0 2470 | linkify-it: 3.0.3 2471 | mdurl: 1.0.1 2472 | uc.micro: 1.0.6 2473 | dev: true 2474 | 2475 | /mdurl/1.0.1: 2476 | resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} 2477 | dev: true 2478 | 2479 | /meow/6.1.1: 2480 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 2481 | engines: {node: '>=8'} 2482 | dependencies: 2483 | '@types/minimist': 1.2.2 2484 | camelcase-keys: 6.2.2 2485 | decamelize-keys: 1.1.0 2486 | hard-rejection: 2.1.0 2487 | minimist-options: 4.1.0 2488 | normalize-package-data: 2.5.0 2489 | read-pkg-up: 7.0.1 2490 | redent: 3.0.0 2491 | trim-newlines: 3.0.1 2492 | type-fest: 0.13.1 2493 | yargs-parser: 18.1.3 2494 | dev: true 2495 | 2496 | /merge2/1.4.1: 2497 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2498 | engines: {node: '>= 8'} 2499 | dev: true 2500 | 2501 | /micromatch/4.0.5: 2502 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2503 | engines: {node: '>=8.6'} 2504 | dependencies: 2505 | braces: 3.0.2 2506 | picomatch: 2.3.1 2507 | dev: true 2508 | 2509 | /mime/1.6.0: 2510 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 2511 | engines: {node: '>=4'} 2512 | hasBin: true 2513 | dev: true 2514 | 2515 | /mimic-response/3.1.0: 2516 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 2517 | engines: {node: '>=10'} 2518 | dev: true 2519 | 2520 | /min-indent/1.0.1: 2521 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2522 | engines: {node: '>=4'} 2523 | dev: true 2524 | 2525 | /minimatch/3.1.2: 2526 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2527 | dependencies: 2528 | brace-expansion: 1.1.11 2529 | dev: true 2530 | 2531 | /minimist-options/4.1.0: 2532 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 2533 | engines: {node: '>= 6'} 2534 | dependencies: 2535 | arrify: 1.0.1 2536 | is-plain-obj: 1.1.0 2537 | kind-of: 6.0.3 2538 | dev: true 2539 | 2540 | /minimist/1.2.6: 2541 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2542 | dev: true 2543 | 2544 | /mixme/0.5.4: 2545 | resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} 2546 | engines: {node: '>= 8.0.0'} 2547 | dev: true 2548 | 2549 | /mkdirp-classic/0.5.3: 2550 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 2551 | dev: true 2552 | 2553 | /ms/2.1.2: 2554 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2555 | dev: true 2556 | 2557 | /mute-stream/0.0.8: 2558 | resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} 2559 | dev: true 2560 | 2561 | /nanoid/3.3.4: 2562 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2563 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2564 | hasBin: true 2565 | dev: true 2566 | 2567 | /napi-build-utils/1.0.2: 2568 | resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} 2569 | dev: true 2570 | 2571 | /natural-compare/1.4.0: 2572 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2573 | dev: true 2574 | 2575 | /node-abi/3.24.0: 2576 | resolution: {integrity: sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==} 2577 | engines: {node: '>=10'} 2578 | dependencies: 2579 | semver: 7.3.7 2580 | dev: true 2581 | 2582 | /node-addon-api/4.3.0: 2583 | resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} 2584 | dev: true 2585 | 2586 | /node-fetch/2.6.7: 2587 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 2588 | engines: {node: 4.x || >=6.0.0} 2589 | peerDependencies: 2590 | encoding: ^0.1.0 2591 | peerDependenciesMeta: 2592 | encoding: 2593 | optional: true 2594 | dependencies: 2595 | whatwg-url: 5.0.0 2596 | dev: true 2597 | 2598 | /node-releases/2.0.6: 2599 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 2600 | dev: true 2601 | 2602 | /normalize-package-data/2.5.0: 2603 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2604 | dependencies: 2605 | hosted-git-info: 2.8.9 2606 | resolve: 1.22.1 2607 | semver: 5.7.1 2608 | validate-npm-package-license: 3.0.4 2609 | dev: true 2610 | 2611 | /normalize-path/3.0.0: 2612 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2613 | engines: {node: '>=0.10.0'} 2614 | dev: true 2615 | 2616 | /npm-run-path/4.0.1: 2617 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2618 | engines: {node: '>=8'} 2619 | dependencies: 2620 | path-key: 3.1.1 2621 | dev: true 2622 | 2623 | /nth-check/2.1.1: 2624 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2625 | dependencies: 2626 | boolbase: 1.0.0 2627 | dev: true 2628 | 2629 | /object-inspect/1.12.2: 2630 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2631 | dev: true 2632 | 2633 | /object-keys/1.1.1: 2634 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2635 | engines: {node: '>= 0.4'} 2636 | dev: true 2637 | 2638 | /object.assign/4.1.4: 2639 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2640 | engines: {node: '>= 0.4'} 2641 | dependencies: 2642 | call-bind: 1.0.2 2643 | define-properties: 1.1.4 2644 | has-symbols: 1.0.3 2645 | object-keys: 1.1.1 2646 | dev: true 2647 | 2648 | /once/1.4.0: 2649 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2650 | dependencies: 2651 | wrappy: 1.0.2 2652 | dev: true 2653 | 2654 | /optionator/0.9.1: 2655 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2656 | engines: {node: '>= 0.8.0'} 2657 | dependencies: 2658 | deep-is: 0.1.4 2659 | fast-levenshtein: 2.0.6 2660 | levn: 0.4.1 2661 | prelude-ls: 1.2.1 2662 | type-check: 0.4.0 2663 | word-wrap: 1.2.3 2664 | dev: true 2665 | 2666 | /os-tmpdir/1.0.2: 2667 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 2668 | engines: {node: '>=0.10.0'} 2669 | dev: true 2670 | 2671 | /outdent/0.5.0: 2672 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 2673 | dev: true 2674 | 2675 | /p-filter/2.1.0: 2676 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 2677 | engines: {node: '>=8'} 2678 | dependencies: 2679 | p-map: 2.1.0 2680 | dev: true 2681 | 2682 | /p-limit/2.3.0: 2683 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2684 | engines: {node: '>=6'} 2685 | dependencies: 2686 | p-try: 2.2.0 2687 | dev: true 2688 | 2689 | /p-limit/3.1.0: 2690 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2691 | engines: {node: '>=10'} 2692 | dependencies: 2693 | yocto-queue: 0.1.0 2694 | dev: true 2695 | 2696 | /p-locate/4.1.0: 2697 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2698 | engines: {node: '>=8'} 2699 | dependencies: 2700 | p-limit: 2.3.0 2701 | dev: true 2702 | 2703 | /p-locate/5.0.0: 2704 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2705 | engines: {node: '>=10'} 2706 | dependencies: 2707 | p-limit: 3.1.0 2708 | dev: true 2709 | 2710 | /p-map/2.1.0: 2711 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 2712 | engines: {node: '>=6'} 2713 | dev: true 2714 | 2715 | /p-try/2.2.0: 2716 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2717 | engines: {node: '>=6'} 2718 | dev: true 2719 | 2720 | /parent-module/1.0.1: 2721 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2722 | engines: {node: '>=6'} 2723 | dependencies: 2724 | callsites: 3.1.0 2725 | dev: true 2726 | 2727 | /parse-json/5.2.0: 2728 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2729 | engines: {node: '>=8'} 2730 | dependencies: 2731 | '@babel/code-frame': 7.18.6 2732 | error-ex: 1.3.2 2733 | json-parse-even-better-errors: 2.3.1 2734 | lines-and-columns: 1.2.4 2735 | dev: true 2736 | 2737 | /parse-semver/1.1.1: 2738 | resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} 2739 | dependencies: 2740 | semver: 5.7.1 2741 | dev: true 2742 | 2743 | /parse5-htmlparser2-tree-adapter/7.0.0: 2744 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 2745 | dependencies: 2746 | domhandler: 5.0.3 2747 | parse5: 7.1.1 2748 | dev: true 2749 | 2750 | /parse5/7.1.1: 2751 | resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} 2752 | dependencies: 2753 | entities: 4.4.0 2754 | dev: true 2755 | 2756 | /path-exists/4.0.0: 2757 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2758 | engines: {node: '>=8'} 2759 | dev: true 2760 | 2761 | /path-is-absolute/1.0.1: 2762 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2763 | engines: {node: '>=0.10.0'} 2764 | dev: true 2765 | 2766 | /path-key/3.1.1: 2767 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2768 | engines: {node: '>=8'} 2769 | dev: true 2770 | 2771 | /path-parse/1.0.7: 2772 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2773 | dev: true 2774 | 2775 | /path-type/4.0.0: 2776 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2777 | engines: {node: '>=8'} 2778 | dev: true 2779 | 2780 | /pend/1.2.0: 2781 | resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 2782 | dev: true 2783 | 2784 | /picocolors/1.0.0: 2785 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2786 | dev: true 2787 | 2788 | /picomatch/2.3.1: 2789 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2790 | engines: {node: '>=8.6'} 2791 | dev: true 2792 | 2793 | /pify/4.0.1: 2794 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 2795 | engines: {node: '>=6'} 2796 | dev: true 2797 | 2798 | /pkg-dir/4.2.0: 2799 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2800 | engines: {node: '>=8'} 2801 | dependencies: 2802 | find-up: 4.1.0 2803 | dev: true 2804 | 2805 | /postcss/8.4.16: 2806 | resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} 2807 | engines: {node: ^10 || ^12 || >=14} 2808 | dependencies: 2809 | nanoid: 3.3.4 2810 | picocolors: 1.0.0 2811 | source-map-js: 1.0.2 2812 | dev: true 2813 | 2814 | /prebuild-install/7.1.1: 2815 | resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} 2816 | engines: {node: '>=10'} 2817 | hasBin: true 2818 | dependencies: 2819 | detect-libc: 2.0.1 2820 | expand-template: 2.0.3 2821 | github-from-package: 0.0.0 2822 | minimist: 1.2.6 2823 | mkdirp-classic: 0.5.3 2824 | napi-build-utils: 1.0.2 2825 | node-abi: 3.24.0 2826 | pump: 3.0.0 2827 | rc: 1.2.8 2828 | simple-get: 4.0.1 2829 | tar-fs: 2.1.1 2830 | tunnel-agent: 0.6.0 2831 | dev: true 2832 | 2833 | /preferred-pm/3.0.3: 2834 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 2835 | engines: {node: '>=10'} 2836 | dependencies: 2837 | find-up: 5.0.0 2838 | find-yarn-workspace-root2: 1.2.16 2839 | path-exists: 4.0.0 2840 | which-pm: 2.0.0 2841 | dev: true 2842 | 2843 | /prelude-ls/1.2.1: 2844 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2845 | engines: {node: '>= 0.8.0'} 2846 | dev: true 2847 | 2848 | /prettier-plugin-packagejson/2.2.18_prettier@2.7.1: 2849 | resolution: {integrity: sha512-iBjQ3IY6IayFrQHhXvg+YvKprPUUiIJ04Vr9+EbeQPfwGajznArIqrN33c5bi4JcIvmLHGROIMOm9aYakJj/CA==} 2850 | peerDependencies: 2851 | prettier: '>= 1.16.0' 2852 | dependencies: 2853 | prettier: 2.7.1 2854 | sort-package-json: 1.57.0 2855 | dev: true 2856 | 2857 | /prettier-plugin-sort-json/0.0.3_prettier@2.7.1: 2858 | resolution: {integrity: sha512-1WLOaeaRJRyVzDmuPif32xRn77+K6J00XIin1O/XuXpD5wy3XX8XyoQH/BSlzwdZ3GpnTOJRyIGXhxDCUb4L9Q==} 2859 | engines: {node: '>=14.0.0'} 2860 | peerDependencies: 2861 | prettier: ^2.3.2 2862 | dependencies: 2863 | '@types/prettier': 2.7.0 2864 | prettier: 2.7.1 2865 | dev: true 2866 | 2867 | /prettier/2.7.1: 2868 | resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} 2869 | engines: {node: '>=10.13.0'} 2870 | hasBin: true 2871 | dev: true 2872 | 2873 | /pseudomap/1.0.2: 2874 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 2875 | dev: true 2876 | 2877 | /pump/3.0.0: 2878 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 2879 | dependencies: 2880 | end-of-stream: 1.4.4 2881 | once: 1.4.0 2882 | dev: true 2883 | 2884 | /punycode/2.1.1: 2885 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2886 | engines: {node: '>=6'} 2887 | dev: true 2888 | 2889 | /qs/6.11.0: 2890 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 2891 | engines: {node: '>=0.6'} 2892 | dependencies: 2893 | side-channel: 1.0.4 2894 | dev: true 2895 | 2896 | /queue-microtask/1.2.3: 2897 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2898 | dev: true 2899 | 2900 | /quick-lru/4.0.1: 2901 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 2902 | engines: {node: '>=8'} 2903 | dev: true 2904 | 2905 | /rc/1.2.8: 2906 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 2907 | hasBin: true 2908 | dependencies: 2909 | deep-extend: 0.6.0 2910 | ini: 1.3.8 2911 | minimist: 1.2.6 2912 | strip-json-comments: 2.0.1 2913 | dev: true 2914 | 2915 | /read-pkg-up/7.0.1: 2916 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2917 | engines: {node: '>=8'} 2918 | dependencies: 2919 | find-up: 4.1.0 2920 | read-pkg: 5.2.0 2921 | type-fest: 0.8.1 2922 | dev: true 2923 | 2924 | /read-pkg/5.2.0: 2925 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2926 | engines: {node: '>=8'} 2927 | dependencies: 2928 | '@types/normalize-package-data': 2.4.1 2929 | normalize-package-data: 2.5.0 2930 | parse-json: 5.2.0 2931 | type-fest: 0.6.0 2932 | dev: true 2933 | 2934 | /read-yaml-file/1.1.0: 2935 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 2936 | engines: {node: '>=6'} 2937 | dependencies: 2938 | graceful-fs: 4.2.10 2939 | js-yaml: 3.14.1 2940 | pify: 4.0.1 2941 | strip-bom: 3.0.0 2942 | dev: true 2943 | 2944 | /read/1.0.7: 2945 | resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} 2946 | engines: {node: '>=0.8'} 2947 | dependencies: 2948 | mute-stream: 0.0.8 2949 | dev: true 2950 | 2951 | /readable-stream/3.6.0: 2952 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 2953 | engines: {node: '>= 6'} 2954 | dependencies: 2955 | inherits: 2.0.4 2956 | string_decoder: 1.3.0 2957 | util-deprecate: 1.0.2 2958 | dev: true 2959 | 2960 | /readdirp/3.6.0: 2961 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2962 | engines: {node: '>=8.10.0'} 2963 | dependencies: 2964 | picomatch: 2.3.1 2965 | dev: true 2966 | 2967 | /redent/3.0.0: 2968 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 2969 | engines: {node: '>=8'} 2970 | dependencies: 2971 | indent-string: 4.0.0 2972 | strip-indent: 3.0.0 2973 | dev: true 2974 | 2975 | /regenerator-runtime/0.13.9: 2976 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2977 | dev: true 2978 | 2979 | /regexp.prototype.flags/1.4.3: 2980 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2981 | engines: {node: '>= 0.4'} 2982 | dependencies: 2983 | call-bind: 1.0.2 2984 | define-properties: 1.1.4 2985 | functions-have-names: 1.2.3 2986 | dev: true 2987 | 2988 | /regexpp/3.2.0: 2989 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2990 | engines: {node: '>=8'} 2991 | dev: true 2992 | 2993 | /require-directory/2.1.1: 2994 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2995 | engines: {node: '>=0.10.0'} 2996 | dev: true 2997 | 2998 | /require-main-filename/2.0.0: 2999 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 3000 | dev: true 3001 | 3002 | /resolve-from/4.0.0: 3003 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3004 | engines: {node: '>=4'} 3005 | dev: true 3006 | 3007 | /resolve-from/5.0.0: 3008 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3009 | engines: {node: '>=8'} 3010 | dev: true 3011 | 3012 | /resolve/1.22.1: 3013 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 3014 | hasBin: true 3015 | dependencies: 3016 | is-core-module: 2.10.0 3017 | path-parse: 1.0.7 3018 | supports-preserve-symlinks-flag: 1.0.0 3019 | dev: true 3020 | 3021 | /reusify/1.0.4: 3022 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3023 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3024 | dev: true 3025 | 3026 | /rimraf/3.0.2: 3027 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3028 | hasBin: true 3029 | dependencies: 3030 | glob: 7.2.3 3031 | dev: true 3032 | 3033 | /rollup/2.78.1: 3034 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 3035 | engines: {node: '>=10.0.0'} 3036 | hasBin: true 3037 | optionalDependencies: 3038 | fsevents: 2.3.2 3039 | dev: true 3040 | 3041 | /run-parallel/1.2.0: 3042 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3043 | dependencies: 3044 | queue-microtask: 1.2.3 3045 | dev: true 3046 | 3047 | /safe-buffer/5.1.2: 3048 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 3049 | dev: true 3050 | 3051 | /safe-buffer/5.2.1: 3052 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3053 | dev: true 3054 | 3055 | /safer-buffer/2.1.2: 3056 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3057 | dev: true 3058 | 3059 | /sax/1.2.4: 3060 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 3061 | dev: true 3062 | 3063 | /semver/5.7.1: 3064 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 3065 | hasBin: true 3066 | dev: true 3067 | 3068 | /semver/6.3.0: 3069 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 3070 | hasBin: true 3071 | dev: true 3072 | 3073 | /semver/7.3.7: 3074 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 3075 | engines: {node: '>=10'} 3076 | hasBin: true 3077 | dependencies: 3078 | lru-cache: 6.0.0 3079 | dev: true 3080 | 3081 | /set-blocking/2.0.0: 3082 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 3083 | dev: true 3084 | 3085 | /shebang-command/1.2.0: 3086 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 3087 | engines: {node: '>=0.10.0'} 3088 | dependencies: 3089 | shebang-regex: 1.0.0 3090 | dev: true 3091 | 3092 | /shebang-command/2.0.0: 3093 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3094 | engines: {node: '>=8'} 3095 | dependencies: 3096 | shebang-regex: 3.0.0 3097 | dev: true 3098 | 3099 | /shebang-regex/1.0.0: 3100 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 3101 | engines: {node: '>=0.10.0'} 3102 | dev: true 3103 | 3104 | /shebang-regex/3.0.0: 3105 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3106 | engines: {node: '>=8'} 3107 | dev: true 3108 | 3109 | /side-channel/1.0.4: 3110 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3111 | dependencies: 3112 | call-bind: 1.0.2 3113 | get-intrinsic: 1.1.3 3114 | object-inspect: 1.12.2 3115 | dev: true 3116 | 3117 | /signal-exit/3.0.7: 3118 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3119 | dev: true 3120 | 3121 | /simple-concat/1.0.1: 3122 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 3123 | dev: true 3124 | 3125 | /simple-get/4.0.1: 3126 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 3127 | dependencies: 3128 | decompress-response: 6.0.0 3129 | once: 1.4.0 3130 | simple-concat: 1.0.1 3131 | dev: true 3132 | 3133 | /slash/3.0.0: 3134 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3135 | engines: {node: '>=8'} 3136 | dev: true 3137 | 3138 | /smartwrap/2.0.2: 3139 | resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} 3140 | engines: {node: '>=6'} 3141 | hasBin: true 3142 | dependencies: 3143 | array.prototype.flat: 1.3.0 3144 | breakword: 1.0.5 3145 | grapheme-splitter: 1.0.4 3146 | strip-ansi: 6.0.1 3147 | wcwidth: 1.0.1 3148 | yargs: 15.4.1 3149 | dev: true 3150 | 3151 | /sort-object-keys/1.1.3: 3152 | resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} 3153 | dev: true 3154 | 3155 | /sort-package-json/1.57.0: 3156 | resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} 3157 | hasBin: true 3158 | dependencies: 3159 | detect-indent: 6.1.0 3160 | detect-newline: 3.1.0 3161 | git-hooks-list: 1.0.3 3162 | globby: 10.0.0 3163 | is-plain-obj: 2.1.0 3164 | sort-object-keys: 1.1.3 3165 | dev: true 3166 | 3167 | /source-map-js/1.0.2: 3168 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3169 | engines: {node: '>=0.10.0'} 3170 | dev: true 3171 | 3172 | /source-map/0.5.7: 3173 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} 3174 | engines: {node: '>=0.10.0'} 3175 | dev: true 3176 | 3177 | /spawndamnit/2.0.0: 3178 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 3179 | dependencies: 3180 | cross-spawn: 5.1.0 3181 | signal-exit: 3.0.7 3182 | dev: true 3183 | 3184 | /spdx-correct/3.1.1: 3185 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 3186 | dependencies: 3187 | spdx-expression-parse: 3.0.1 3188 | spdx-license-ids: 3.0.12 3189 | dev: true 3190 | 3191 | /spdx-exceptions/2.3.0: 3192 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 3193 | dev: true 3194 | 3195 | /spdx-expression-parse/3.0.1: 3196 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 3197 | dependencies: 3198 | spdx-exceptions: 2.3.0 3199 | spdx-license-ids: 3.0.12 3200 | dev: true 3201 | 3202 | /spdx-license-ids/3.0.12: 3203 | resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} 3204 | dev: true 3205 | 3206 | /sprintf-js/1.0.3: 3207 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 3208 | dev: true 3209 | 3210 | /stream-transform/2.1.3: 3211 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 3212 | dependencies: 3213 | mixme: 0.5.4 3214 | dev: true 3215 | 3216 | /string-width/4.2.3: 3217 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3218 | engines: {node: '>=8'} 3219 | dependencies: 3220 | emoji-regex: 8.0.0 3221 | is-fullwidth-code-point: 3.0.0 3222 | strip-ansi: 6.0.1 3223 | dev: true 3224 | 3225 | /string.prototype.trimend/1.0.5: 3226 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 3227 | dependencies: 3228 | call-bind: 1.0.2 3229 | define-properties: 1.1.4 3230 | es-abstract: 1.20.2 3231 | dev: true 3232 | 3233 | /string.prototype.trimstart/1.0.5: 3234 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 3235 | dependencies: 3236 | call-bind: 1.0.2 3237 | define-properties: 1.1.4 3238 | es-abstract: 1.20.2 3239 | dev: true 3240 | 3241 | /string_decoder/1.3.0: 3242 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3243 | dependencies: 3244 | safe-buffer: 5.2.1 3245 | dev: true 3246 | 3247 | /strip-ansi/6.0.1: 3248 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3249 | engines: {node: '>=8'} 3250 | dependencies: 3251 | ansi-regex: 5.0.1 3252 | dev: true 3253 | 3254 | /strip-bom/3.0.0: 3255 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3256 | engines: {node: '>=4'} 3257 | dev: true 3258 | 3259 | /strip-indent/3.0.0: 3260 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 3261 | engines: {node: '>=8'} 3262 | dependencies: 3263 | min-indent: 1.0.1 3264 | dev: true 3265 | 3266 | /strip-json-comments/2.0.1: 3267 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 3268 | engines: {node: '>=0.10.0'} 3269 | dev: true 3270 | 3271 | /strip-json-comments/3.1.1: 3272 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3273 | engines: {node: '>=8'} 3274 | dev: true 3275 | 3276 | /supports-color/5.5.0: 3277 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3278 | engines: {node: '>=4'} 3279 | dependencies: 3280 | has-flag: 3.0.0 3281 | dev: true 3282 | 3283 | /supports-color/7.2.0: 3284 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3285 | engines: {node: '>=8'} 3286 | dependencies: 3287 | has-flag: 4.0.0 3288 | dev: true 3289 | 3290 | /supports-preserve-symlinks-flag/1.0.0: 3291 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3292 | engines: {node: '>= 0.4'} 3293 | dev: true 3294 | 3295 | /tar-fs/2.1.1: 3296 | resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} 3297 | dependencies: 3298 | chownr: 1.1.4 3299 | mkdirp-classic: 0.5.3 3300 | pump: 3.0.0 3301 | tar-stream: 2.2.0 3302 | dev: true 3303 | 3304 | /tar-stream/2.2.0: 3305 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 3306 | engines: {node: '>=6'} 3307 | dependencies: 3308 | bl: 4.1.0 3309 | end-of-stream: 1.4.4 3310 | fs-constants: 1.0.0 3311 | inherits: 2.0.4 3312 | readable-stream: 3.6.0 3313 | dev: true 3314 | 3315 | /term-size/2.2.1: 3316 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 3317 | engines: {node: '>=8'} 3318 | dev: true 3319 | 3320 | /text-table/0.2.0: 3321 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3322 | dev: true 3323 | 3324 | /tiny-invariant/1.2.0: 3325 | resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} 3326 | dev: true 3327 | 3328 | /tmp/0.0.33: 3329 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 3330 | engines: {node: '>=0.6.0'} 3331 | dependencies: 3332 | os-tmpdir: 1.0.2 3333 | dev: true 3334 | 3335 | /tmp/0.2.1: 3336 | resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} 3337 | engines: {node: '>=8.17.0'} 3338 | dependencies: 3339 | rimraf: 3.0.2 3340 | dev: true 3341 | 3342 | /to-fast-properties/2.0.0: 3343 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3344 | engines: {node: '>=4'} 3345 | dev: true 3346 | 3347 | /to-regex-range/5.0.1: 3348 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3349 | engines: {node: '>=8.0'} 3350 | dependencies: 3351 | is-number: 7.0.0 3352 | dev: true 3353 | 3354 | /tr46/0.0.3: 3355 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3356 | dev: true 3357 | 3358 | /trim-newlines/3.0.1: 3359 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 3360 | engines: {node: '>=8'} 3361 | dev: true 3362 | 3363 | /tslib/1.14.1: 3364 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3365 | dev: true 3366 | 3367 | /tsutils/3.21.0_typescript@4.8.3: 3368 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3369 | engines: {node: '>= 6'} 3370 | peerDependencies: 3371 | 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' 3372 | dependencies: 3373 | tslib: 1.14.1 3374 | typescript: 4.8.3 3375 | dev: true 3376 | 3377 | /tty-table/4.1.6: 3378 | resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} 3379 | engines: {node: '>=8.0.0'} 3380 | hasBin: true 3381 | dependencies: 3382 | chalk: 4.1.2 3383 | csv: 5.5.3 3384 | kleur: 4.1.5 3385 | smartwrap: 2.0.2 3386 | strip-ansi: 6.0.1 3387 | wcwidth: 1.0.1 3388 | yargs: 17.5.1 3389 | dev: true 3390 | 3391 | /tunnel-agent/0.6.0: 3392 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 3393 | dependencies: 3394 | safe-buffer: 5.2.1 3395 | dev: true 3396 | 3397 | /tunnel/0.0.6: 3398 | resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} 3399 | engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} 3400 | dev: true 3401 | 3402 | /type-check/0.4.0: 3403 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3404 | engines: {node: '>= 0.8.0'} 3405 | dependencies: 3406 | prelude-ls: 1.2.1 3407 | dev: true 3408 | 3409 | /type-fest/0.13.1: 3410 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 3411 | engines: {node: '>=10'} 3412 | dev: true 3413 | 3414 | /type-fest/0.20.2: 3415 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3416 | engines: {node: '>=10'} 3417 | dev: true 3418 | 3419 | /type-fest/0.21.3: 3420 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 3421 | engines: {node: '>=10'} 3422 | dev: true 3423 | 3424 | /type-fest/0.6.0: 3425 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 3426 | engines: {node: '>=8'} 3427 | dev: true 3428 | 3429 | /type-fest/0.8.1: 3430 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 3431 | engines: {node: '>=8'} 3432 | dev: true 3433 | 3434 | /typed-rest-client/1.8.9: 3435 | resolution: {integrity: sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==} 3436 | dependencies: 3437 | qs: 6.11.0 3438 | tunnel: 0.0.6 3439 | underscore: 1.13.4 3440 | dev: true 3441 | 3442 | /typescript/4.8.3: 3443 | resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} 3444 | engines: {node: '>=4.2.0'} 3445 | hasBin: true 3446 | dev: true 3447 | 3448 | /uc.micro/1.0.6: 3449 | resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} 3450 | dev: true 3451 | 3452 | /unbox-primitive/1.0.2: 3453 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3454 | dependencies: 3455 | call-bind: 1.0.2 3456 | has-bigints: 1.0.2 3457 | has-symbols: 1.0.3 3458 | which-boxed-primitive: 1.0.2 3459 | dev: true 3460 | 3461 | /underscore/1.13.4: 3462 | resolution: {integrity: sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==} 3463 | dev: true 3464 | 3465 | /universalify/0.1.2: 3466 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3467 | engines: {node: '>= 4.0.0'} 3468 | dev: true 3469 | 3470 | /update-browserslist-db/1.0.9_browserslist@4.21.4: 3471 | resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} 3472 | hasBin: true 3473 | peerDependencies: 3474 | browserslist: '>= 4.21.0' 3475 | dependencies: 3476 | browserslist: 4.21.4 3477 | escalade: 3.1.1 3478 | picocolors: 1.0.0 3479 | dev: true 3480 | 3481 | /uri-js/4.4.1: 3482 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3483 | dependencies: 3484 | punycode: 2.1.1 3485 | dev: true 3486 | 3487 | /url-join/4.0.1: 3488 | resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} 3489 | dev: true 3490 | 3491 | /util-deprecate/1.0.2: 3492 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3493 | dev: true 3494 | 3495 | /validate-npm-package-license/3.0.4: 3496 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 3497 | dependencies: 3498 | spdx-correct: 3.1.1 3499 | spdx-expression-parse: 3.0.1 3500 | dev: true 3501 | 3502 | /vite-plugin-checker/0.5.1_fchw6yt2eby3v5rhssi26iz33u: 3503 | resolution: {integrity: sha512-NFiO1PyK9yGuaeSnJ7Whw9fnxLc1AlELnZoyFURnauBYhbIkx9n+PmIXxSFUuC9iFyACtbJQUAEuQi6yHs2Adg==} 3504 | engines: {node: '>=14.16'} 3505 | peerDependencies: 3506 | eslint: '>=7' 3507 | typescript: '*' 3508 | vite: ^2.0.0 || ^3.0.0-0 3509 | vls: '*' 3510 | vti: '*' 3511 | peerDependenciesMeta: 3512 | eslint: 3513 | optional: true 3514 | typescript: 3515 | optional: true 3516 | vls: 3517 | optional: true 3518 | vti: 3519 | optional: true 3520 | dependencies: 3521 | '@babel/code-frame': 7.18.6 3522 | ansi-escapes: 4.3.2 3523 | chalk: 4.1.2 3524 | chokidar: 3.5.3 3525 | commander: 8.3.0 3526 | eslint: 8.23.1 3527 | fast-glob: 3.2.12 3528 | lodash.debounce: 4.0.8 3529 | lodash.pick: 4.4.0 3530 | npm-run-path: 4.0.1 3531 | strip-ansi: 6.0.1 3532 | tiny-invariant: 1.2.0 3533 | typescript: 4.8.3 3534 | vite: 3.1.2 3535 | vscode-languageclient: 7.0.0 3536 | vscode-languageserver: 7.0.0 3537 | vscode-languageserver-textdocument: 1.0.7 3538 | vscode-uri: 3.0.5 3539 | dev: true 3540 | 3541 | /vite/3.1.2: 3542 | resolution: {integrity: sha512-wTDKPkiVbeT+drTPdkuvjVIC/2vKKUc1w3qNOuwgpyvPCZF6fvdxB5v5WEcCsqaYea0zrwA4+XialJKCHM3oVQ==} 3543 | engines: {node: ^14.18.0 || >=16.0.0} 3544 | hasBin: true 3545 | peerDependencies: 3546 | less: '*' 3547 | sass: '*' 3548 | stylus: '*' 3549 | terser: ^5.4.0 3550 | peerDependenciesMeta: 3551 | less: 3552 | optional: true 3553 | sass: 3554 | optional: true 3555 | stylus: 3556 | optional: true 3557 | terser: 3558 | optional: true 3559 | dependencies: 3560 | esbuild: 0.15.7 3561 | postcss: 8.4.16 3562 | resolve: 1.22.1 3563 | rollup: 2.78.1 3564 | optionalDependencies: 3565 | fsevents: 2.3.2 3566 | dev: true 3567 | 3568 | /vsce/2.11.0: 3569 | resolution: {integrity: sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==} 3570 | engines: {node: '>= 14'} 3571 | hasBin: true 3572 | dependencies: 3573 | azure-devops-node-api: 11.2.0 3574 | chalk: 2.4.2 3575 | cheerio: 1.0.0-rc.12 3576 | commander: 6.2.1 3577 | glob: 7.2.3 3578 | hosted-git-info: 4.1.0 3579 | keytar: 7.9.0 3580 | leven: 3.1.0 3581 | markdown-it: 12.3.2 3582 | mime: 1.6.0 3583 | minimatch: 3.1.2 3584 | parse-semver: 1.1.1 3585 | read: 1.0.7 3586 | semver: 5.7.1 3587 | tmp: 0.2.1 3588 | typed-rest-client: 1.8.9 3589 | url-join: 4.0.1 3590 | xml2js: 0.4.23 3591 | yauzl: 2.10.0 3592 | yazl: 2.5.1 3593 | dev: true 3594 | 3595 | /vscode-jsonrpc/6.0.0: 3596 | resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} 3597 | engines: {node: '>=8.0.0 || >=10.0.0'} 3598 | dev: true 3599 | 3600 | /vscode-languageclient/7.0.0: 3601 | resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} 3602 | engines: {vscode: ^1.52.0} 3603 | dependencies: 3604 | minimatch: 3.1.2 3605 | semver: 7.3.7 3606 | vscode-languageserver-protocol: 3.16.0 3607 | dev: true 3608 | 3609 | /vscode-languageserver-protocol/3.16.0: 3610 | resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} 3611 | dependencies: 3612 | vscode-jsonrpc: 6.0.0 3613 | vscode-languageserver-types: 3.16.0 3614 | dev: true 3615 | 3616 | /vscode-languageserver-textdocument/1.0.7: 3617 | resolution: {integrity: sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==} 3618 | dev: true 3619 | 3620 | /vscode-languageserver-types/3.16.0: 3621 | resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} 3622 | dev: true 3623 | 3624 | /vscode-languageserver/7.0.0: 3625 | resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} 3626 | hasBin: true 3627 | dependencies: 3628 | vscode-languageserver-protocol: 3.16.0 3629 | dev: true 3630 | 3631 | /vscode-uri/3.0.5: 3632 | resolution: {integrity: sha512-bBp2pi1o6ynwlnGL8Tt6UBL1w3VsVZtHCU/Sl73bRfqjno3jMcVSCybdY+hj+31A8FQOELZJWwY+shLVLtcNew==} 3633 | dev: true 3634 | 3635 | /wcwidth/1.0.1: 3636 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 3637 | dependencies: 3638 | defaults: 1.0.3 3639 | dev: true 3640 | 3641 | /webidl-conversions/3.0.1: 3642 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 3643 | dev: true 3644 | 3645 | /whatwg-url/5.0.0: 3646 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 3647 | dependencies: 3648 | tr46: 0.0.3 3649 | webidl-conversions: 3.0.1 3650 | dev: true 3651 | 3652 | /which-boxed-primitive/1.0.2: 3653 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3654 | dependencies: 3655 | is-bigint: 1.0.4 3656 | is-boolean-object: 1.1.2 3657 | is-number-object: 1.0.7 3658 | is-string: 1.0.7 3659 | is-symbol: 1.0.4 3660 | dev: true 3661 | 3662 | /which-module/2.0.0: 3663 | resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} 3664 | dev: true 3665 | 3666 | /which-pm/2.0.0: 3667 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 3668 | engines: {node: '>=8.15'} 3669 | dependencies: 3670 | load-yaml-file: 0.2.0 3671 | path-exists: 4.0.0 3672 | dev: true 3673 | 3674 | /which/1.3.1: 3675 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 3676 | hasBin: true 3677 | dependencies: 3678 | isexe: 2.0.0 3679 | dev: true 3680 | 3681 | /which/2.0.2: 3682 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3683 | engines: {node: '>= 8'} 3684 | hasBin: true 3685 | dependencies: 3686 | isexe: 2.0.0 3687 | dev: true 3688 | 3689 | /word-wrap/1.2.3: 3690 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3691 | engines: {node: '>=0.10.0'} 3692 | dev: true 3693 | 3694 | /wrap-ansi/6.2.0: 3695 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 3696 | engines: {node: '>=8'} 3697 | dependencies: 3698 | ansi-styles: 4.3.0 3699 | string-width: 4.2.3 3700 | strip-ansi: 6.0.1 3701 | dev: true 3702 | 3703 | /wrap-ansi/7.0.0: 3704 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3705 | engines: {node: '>=10'} 3706 | dependencies: 3707 | ansi-styles: 4.3.0 3708 | string-width: 4.2.3 3709 | strip-ansi: 6.0.1 3710 | dev: true 3711 | 3712 | /wrappy/1.0.2: 3713 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3714 | dev: true 3715 | 3716 | /xml2js/0.4.23: 3717 | resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} 3718 | engines: {node: '>=4.0.0'} 3719 | dependencies: 3720 | sax: 1.2.4 3721 | xmlbuilder: 11.0.1 3722 | dev: true 3723 | 3724 | /xmlbuilder/11.0.1: 3725 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} 3726 | engines: {node: '>=4.0'} 3727 | dev: true 3728 | 3729 | /y18n/4.0.3: 3730 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 3731 | dev: true 3732 | 3733 | /y18n/5.0.8: 3734 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3735 | engines: {node: '>=10'} 3736 | dev: true 3737 | 3738 | /yallist/2.1.2: 3739 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 3740 | dev: true 3741 | 3742 | /yallist/4.0.0: 3743 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3744 | dev: true 3745 | 3746 | /yargs-parser/18.1.3: 3747 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 3748 | engines: {node: '>=6'} 3749 | dependencies: 3750 | camelcase: 5.3.1 3751 | decamelize: 1.2.0 3752 | dev: true 3753 | 3754 | /yargs-parser/21.1.1: 3755 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3756 | engines: {node: '>=12'} 3757 | dev: true 3758 | 3759 | /yargs/15.4.1: 3760 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 3761 | engines: {node: '>=8'} 3762 | dependencies: 3763 | cliui: 6.0.0 3764 | decamelize: 1.2.0 3765 | find-up: 4.1.0 3766 | get-caller-file: 2.0.5 3767 | require-directory: 2.1.1 3768 | require-main-filename: 2.0.0 3769 | set-blocking: 2.0.0 3770 | string-width: 4.2.3 3771 | which-module: 2.0.0 3772 | y18n: 4.0.3 3773 | yargs-parser: 18.1.3 3774 | dev: true 3775 | 3776 | /yargs/17.5.1: 3777 | resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} 3778 | engines: {node: '>=12'} 3779 | dependencies: 3780 | cliui: 7.0.4 3781 | escalade: 3.1.1 3782 | get-caller-file: 2.0.5 3783 | require-directory: 2.1.1 3784 | string-width: 4.2.3 3785 | y18n: 5.0.8 3786 | yargs-parser: 21.1.1 3787 | dev: true 3788 | 3789 | /yauzl/2.10.0: 3790 | resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} 3791 | dependencies: 3792 | buffer-crc32: 0.2.13 3793 | fd-slicer: 1.1.0 3794 | dev: true 3795 | 3796 | /yazl/2.5.1: 3797 | resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} 3798 | dependencies: 3799 | buffer-crc32: 0.2.13 3800 | dev: true 3801 | 3802 | /yocto-queue/0.1.0: 3803 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3804 | engines: {node: '>=10'} 3805 | dev: true 3806 | --------------------------------------------------------------------------------