├── .eslintrc.js
├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── esbuild.js
├── package.json
├── src
├── action.ts
├── downloader.ts
├── index.ts
├── neonLint.ts
├── phpstanLint.ts
└── types.ts
├── tsconfig.json
└── yarn.lock
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | node: true,
4 | },
5 | parser: '@typescript-eslint/parser',
6 | extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
7 | rules: {
8 | '@typescript-eslint/ban-ts-comment': 'off',
9 | '@typescript-eslint/no-explicit-any': 'off',
10 | '@typescript-eslint/no-non-null-assertion': 'off',
11 | '@typescript-eslint/no-namespace': 'off',
12 | '@typescript-eslint/no-empty-function': 'off',
13 | '@typescript-eslint/explicit-function-return-type': 'off',
14 | '@typescript-eslint/explicit-module-boundary-types': 'off',
15 | },
16 | };
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### ADD
2 |
3 | lib
4 | _ref
5 |
6 | ### https://raw.github.com/github/gitignore/3bb7b4b767f3f8df07e362dfa03c8bd425f16d32/Node.gitignore
7 |
8 | # Logs
9 | logs
10 | *.log
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | lerna-debug.log*
15 | .pnpm-debug.log*
16 |
17 | # Diagnostic reports (https://nodejs.org/api/report.html)
18 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
19 |
20 | # Runtime data
21 | pids
22 | *.pid
23 | *.seed
24 | *.pid.lock
25 |
26 | # Directory for instrumented libs generated by jscoverage/JSCover
27 | lib-cov
28 |
29 | # Coverage directory used by tools like istanbul
30 | coverage
31 | *.lcov
32 |
33 | # nyc test coverage
34 | .nyc_output
35 |
36 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
37 | .grunt
38 |
39 | # Bower dependency directory (https://bower.io/)
40 | bower_components
41 |
42 | # node-waf configuration
43 | .lock-wscript
44 |
45 | # Compiled binary addons (https://nodejs.org/api/addons.html)
46 | build/Release
47 |
48 | # Dependency directories
49 | node_modules/
50 | jspm_packages/
51 |
52 | # Snowpack dependency directory (https://snowpack.dev/)
53 | web_modules/
54 |
55 | # TypeScript cache
56 | *.tsbuildinfo
57 |
58 | # Optional npm cache directory
59 | .npm
60 |
61 | # Optional eslint cache
62 | .eslintcache
63 |
64 | # Microbundle cache
65 | .rpt2_cache/
66 | .rts2_cache_cjs/
67 | .rts2_cache_es/
68 | .rts2_cache_umd/
69 |
70 | # Optional REPL history
71 | .node_repl_history
72 |
73 | # Output of 'npm pack'
74 | *.tgz
75 |
76 | # Yarn Integrity file
77 | .yarn-integrity
78 |
79 | # dotenv environment variables file
80 | .env
81 | .env.test
82 | .env.production
83 |
84 | # parcel-bundler cache (https://parceljs.org/)
85 | .cache
86 | .parcel-cache
87 |
88 | # Next.js build output
89 | .next
90 | out
91 |
92 | # Nuxt.js build / generate output
93 | .nuxt
94 | dist
95 |
96 | # Gatsby files
97 | .cache/
98 | # Comment in the public line in if your project uses Gatsby and not Next.js
99 | # https://nextjs.org/blog/next-9-1#public-directory-support
100 | # public
101 |
102 | # vuepress build output
103 | .vuepress/dist
104 |
105 | # Serverless directories
106 | .serverless/
107 |
108 | # FuseBox cache
109 | .fusebox/
110 |
111 | # DynamoDB Local files
112 | .dynamodb/
113 |
114 | # TernJS port file
115 | .tern-port
116 |
117 | # Stores VSCode versions used for testing VSCode extensions
118 | .vscode-test
119 |
120 | # yarn v2
121 | .yarn/cache
122 | .yarn/unplugged
123 | .yarn/build-state.yml
124 | .yarn/install-state.gz
125 | .pnp.*
126 |
127 |
128 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | node_modules
3 | tsconfig.json
4 | *.map
5 | .tags
6 | .DS_Store
7 | webpack.config.js
8 | esbuild.js
9 | yarn.lock
10 | yarn-error.log
11 | .github
12 | .eslintrc.js
13 | .prettierrc
14 | _ref
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 yaegassy
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # coc-phpstan
2 |
3 | [PHPStan](https://phpstan.org/) (PHP Static Analysis tool) extension for [coc.nvim](https://github.com/neoclide/coc.nvim).
4 |
5 |
6 |
7 | ## Install
8 |
9 | **CocInstall**:
10 |
11 | ```vim
12 | :CocInstall @yaegassy/coc-phpstan
13 | ```
14 |
15 | > scoped package
16 |
17 | **vim-plug**:
18 |
19 | ```vim
20 | Plug 'yaegassy/coc-phpstan', {'do': 'yarn install --frozen-lockfile'}
21 | ```
22 |
23 | ## Features
24 |
25 | - Linter
26 | - CodeAction
27 | - Downloader
28 |
29 | ## Detect tool: phpstan
30 |
31 | 1. `phpstan.toolPath` setting
32 | 1. `vendor/bin/phpstan` (project)
33 | 1. Extension-only `phpstan` retrieved by the download feature (`:CocCommand phpstan.download`)
34 | - Mac/Linux: `~/.config/coc/extensions/@yaegassy/coc-phpstan-data/phpstan`
35 | - Windows: `~/AppData/Local/coc/extensions/@yaegassy/coc-phpstan-data/phpstan`
36 |
37 | ## "phpstan.neon", "phpstan.neon.dist" or "phpstan.dist.neon" configuration file
38 |
39 | If you wish to use a [configuration file](https://phpstan.org/config-reference) you should place the `phpstan.neon`, `phpstan.neon.dist` or `phpstan.dist.neon` file in the root of your project folder
40 |
41 | ## Linting of NEON file
42 |
43 | This extension includes a feature to perform linting using the `neon-js` library in a phpstan configuration file (`phpstan.neon`, `phpstan.neon.dist` or `phpstan.dist.neon`).
44 |
45 | To run this linting feature, the filetype must be `neon`.
46 |
47 | Install "neon" related plugin (e.g. [yaegassy/nette-neon.vim](https://github.com/yaegassy/nette-neon.vim)).
48 |
49 | ---
50 |
51 | - [DEMO](https://github.com/yaegassy/coc-phpstan/pull/2#issue-1700077931)
52 |
53 | ## Configuration options ("coc-settings.json" or ".vim/coc-settings.json")
54 |
55 | - `phpstan.enable`: Enable coc-phpstan extension, default: `true`
56 | - `phpstan.toolPath`: The path to the phpstan (Absolute path), default: `""`
57 | - `phpstan.level`: Specifies the rule level (0 - 9 and max) to run, If you apply this setting, the level setting in the phpstan.neon file will be ignored, e.g. valid option `"9"`, `"max"`, default: `null`
58 | - `phpstan.configuration`: Specifies the path to a configuration file, default: `null`
59 | - `phpstan.memoryLimit`: Specifies the memory limit in the same format php.ini accepts, Example: -1, 1024M, 2G, default: `"-1"`
60 | - `phpstan.download.checkOnStartup`: Perform built-in download if phpstan is not present at startup, default: `true`
61 | - `phpstan.neonLint.enable`: Enable neon-js lint (diagnostics). It will only work if the file name is `phpstan.neon`, `phpstan.neon.dist` or `phpstan.dist.neon`, default: `true`
62 |
63 | ## Commands
64 |
65 | - `phpstan.download`: Download PHPStan
66 | - `phpstan.showOutput`: Show phpstan output channel
67 |
68 | ## Code Actions
69 |
70 | **Example key mapping (Code Action related)**:
71 |
72 | ```vim
73 | nmap ga (coc-codeaction-line)
74 | ```
75 |
76 | **Usage**:
77 |
78 | In the line with diagnostic message, enter the mapped key (e.g. `ga`) and you will see a list of code actions that can be performed.
79 |
80 | **Actions**:
81 |
82 | - `Add @phpstan-ignore-next-line`
83 | - `Add @phpstan-ignore-line`
84 |
85 | ## Thanks
86 |
87 | - [phpstan/phpstan](https://github.com/phpstan/phpstan)
88 | - [matej21/neon-js](https://github.com/matej21/neon-js)
89 |
90 | ## License
91 |
92 | MIT
93 |
94 | ---
95 |
96 | > This extension is built with [create-coc-extension](https://github.com/fannheyward/create-coc-extension)
97 |
--------------------------------------------------------------------------------
/esbuild.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-var-requires */
2 | async function start(watch) {
3 | await require('esbuild').build({
4 | entryPoints: ['src/index.ts'],
5 | bundle: true,
6 | watch,
7 | minify: process.env.NODE_ENV === 'production',
8 | sourcemap: process.env.NODE_ENV === 'development',
9 | mainFields: ['module', 'main'],
10 | external: ['coc.nvim'],
11 | platform: 'node',
12 | target: 'node14.14',
13 | outfile: 'lib/index.js',
14 | });
15 | }
16 |
17 | let watch = false;
18 | if (process.argv.length > 2 && process.argv[2] === '--watch') {
19 | console.log('watching...');
20 | watch = {
21 | onRebuild(error) {
22 | if (error) {
23 | console.error('watch build failed:', error);
24 | } else {
25 | console.log('watch build succeeded');
26 | }
27 | },
28 | };
29 | }
30 |
31 | start(watch).catch((e) => {
32 | console.error(e);
33 | });
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@yaegassy/coc-phpstan",
3 | "version": "0.5.1",
4 | "description": "PHPStan (PHP Static Analysis tool) extension for coc.nvim",
5 | "author": "yaegassy ",
6 | "license": "MIT",
7 | "main": "lib/index.js",
8 | "keywords": [
9 | "coc.nvim",
10 | "php",
11 | "linter",
12 | "phpstan",
13 | "vim",
14 | "neovim"
15 | ],
16 | "engines": {
17 | "coc": "^0.0.80"
18 | },
19 | "repository": {
20 | "type": "git",
21 | "url": "https://github.com/yaegassy/coc-phpstan"
22 | },
23 | "publishConfig": {
24 | "access": "public"
25 | },
26 | "scripts": {
27 | "lint": "eslint src --ext ts",
28 | "clean": "rimraf lib",
29 | "watch": "node esbuild.js --watch",
30 | "build": "node esbuild.js",
31 | "prepare": "node esbuild.js"
32 | },
33 | "prettier": {
34 | "singleQuote": true,
35 | "printWidth": 120,
36 | "semi": true
37 | },
38 | "devDependencies": {
39 | "@types/node": "^18.16.5",
40 | "@types/node-fetch": "^2.6.2",
41 | "@typescript-eslint/eslint-plugin": "^5.59.2",
42 | "@typescript-eslint/parser": "^5.59.2",
43 | "coc.nvim": "^0.0.82",
44 | "esbuild": "^0.16.17",
45 | "eslint": "^8.40.0",
46 | "eslint-config-prettier": "^8.8.0",
47 | "eslint-plugin-prettier": "^4.2.1",
48 | "https-proxy-agent": "^5.0.1",
49 | "node-fetch": "^2.6.7",
50 | "prettier": "^2.8.8",
51 | "rimraf": "^3.0.2",
52 | "typescript": "^5.0.4"
53 | },
54 | "activationEvents": [
55 | "onLanguage:php",
56 | "onLanguage:neon"
57 | ],
58 | "contributes": {
59 | "rootPatterns": [
60 | {
61 | "filetype": "php",
62 | "patterns": [
63 | "phpstan.neon",
64 | "phpstan.neon.dist",
65 | "phpstan.dist.neon"
66 | ]
67 | }
68 | ],
69 | "configuration": {
70 | "type": "object",
71 | "title": "coc-phpstan configuration",
72 | "properties": {
73 | "phpstan.enable": {
74 | "type": "boolean",
75 | "default": true,
76 | "description": "Enable coc-phpstan extension"
77 | },
78 | "phpstan.toolPath": {
79 | "type": "string",
80 | "default": "",
81 | "description": "The path to the phpstan (Absolute path)"
82 | },
83 | "phpstan.level": {
84 | "type": "string",
85 | "default": null,
86 | "description": "Specifies the rule level (0 - 9 and max) to run, If you apply this setting, the level setting in the phpstan.neon file will be ignored"
87 | },
88 | "phpstan.configuration": {
89 | "type": "string",
90 | "default": null,
91 | "description": "Specifies the path to a configuration file"
92 | },
93 | "phpstan.memoryLimit": {
94 | "type": "string",
95 | "default": "-1",
96 | "description": "Specifies the memory limit in the same format php.ini accepts, Example: -1, 1024M, 2G"
97 | },
98 | "phpstan.download.checkOnStartup": {
99 | "type": "boolean",
100 | "default": true,
101 | "description": "Perform built-in download if phpstan is not present at startup"
102 | },
103 | "phpstan.neonLint.enable": {
104 | "type": "boolean",
105 | "default": true,
106 | "description": "Enable neon-js lint (diagnostics). It will only work if the file name is `phpstan.neon`, `phpstan.neon.dist` or `phpstan.dist.neon`"
107 | }
108 | }
109 | },
110 | "commands": [
111 | {
112 | "command": "phpstan.download",
113 | "title": "Download PHPStan"
114 | },
115 | {
116 | "command": "phpstan.showOutput",
117 | "title": "Show phpstan output channel"
118 | }
119 | ]
120 | },
121 | "dependencies": {
122 | "neon-js": "^1.1.2"
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/src/action.ts:
--------------------------------------------------------------------------------
1 | import {
2 | CodeAction,
3 | CodeActionContext,
4 | CodeActionProvider,
5 | DocumentSelector,
6 | ExtensionContext,
7 | languages,
8 | Position,
9 | Range,
10 | TextDocument,
11 | TextEdit,
12 | workspace,
13 | } from 'coc.nvim';
14 |
15 | export function register(context: ExtensionContext) {
16 | const languageSelector: DocumentSelector = [{ language: 'php', scheme: 'file' }];
17 | const codeActionProvider = new PHPStanCodeActionProvider();
18 | context.subscriptions.push(languages.registerCodeActionProvider(languageSelector, codeActionProvider, 'phpstan'));
19 | }
20 |
21 | class PHPStanCodeActionProvider implements CodeActionProvider {
22 | public async provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext) {
23 | const doc = workspace.getDocument(document.uri);
24 | const wholeRange = Range.create(0, 0, doc.lineCount, 0);
25 | let whole = false;
26 | if (
27 | range.start.line === wholeRange.start.line &&
28 | range.start.character === wholeRange.start.character &&
29 | range.end.line === wholeRange.end.line &&
30 | range.end.character === wholeRange.end.character
31 | ) {
32 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
33 | whole = true;
34 | }
35 | const codeActions: CodeAction[] = [];
36 |
37 | /** Add phpstan ignore comment */
38 | if (this.lineRange(range) && context.diagnostics.length > 0) {
39 | let existsPHPStanDiagnostics = false;
40 | context.diagnostics.forEach((d) => {
41 | if (d.source === 'phpstan') {
42 | existsPHPStanDiagnostics = true;
43 | }
44 | });
45 |
46 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
47 | const line = doc.getline(range.start.line);
48 |
49 | const thisLineFullLength = doc.getline(range.start.line).length;
50 | const thisLineTrimLength = doc.getline(range.start.line).trim().length;
51 | const suppressLineLength = thisLineFullLength - thisLineTrimLength;
52 |
53 | let suppressLineNewText = '/** @phpstan-ignore-next-line */\n';
54 | if (suppressLineLength > 0) {
55 | const addIndentSpace = ' '.repeat(suppressLineLength);
56 | suppressLineNewText = '/** @phpstan-ignore-next-line */\n' + addIndentSpace;
57 | }
58 |
59 | let thisLineContent = doc.getline(range.start.line);
60 | thisLineContent = thisLineContent.trim();
61 |
62 | // Add @phpstan-ignore-next-line
63 | if (!thisLineContent.startsWith('/**') && !thisLineContent.startsWith('*') && existsPHPStanDiagnostics) {
64 | const edit = TextEdit.insert(Position.create(range.start.line, suppressLineLength), suppressLineNewText);
65 | codeActions.push({
66 | title: 'Add @phpstan-ignore-next-line',
67 | edit: {
68 | changes: {
69 | [doc.uri]: [edit],
70 | },
71 | },
72 | });
73 | }
74 |
75 | // Add @phpstan-ignore-line
76 | if (!thisLineContent.startsWith('/**') && !thisLineContent.startsWith('*') && existsPHPStanDiagnostics) {
77 | const edit = TextEdit.replace(
78 | range,
79 | `${line} /* @phpstan-ignore-line */${range.start.line + 1 === range.end.line ? '\n' : ''}`
80 | );
81 | codeActions.push({
82 | title: 'Add @phpstan-ignore-line',
83 | edit: {
84 | changes: {
85 | [doc.uri]: [edit],
86 | },
87 | },
88 | });
89 | }
90 | }
91 |
92 | return codeActions;
93 | }
94 |
95 | private lineRange(r: Range): boolean {
96 | return (
97 | (r.start.line + 1 === r.end.line && r.start.character === 0 && r.end.character === 0) ||
98 | (r.start.line === r.end.line && r.start.character === 0)
99 | );
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/downloader.ts:
--------------------------------------------------------------------------------
1 | import { ExtensionContext, window } from 'coc.nvim';
2 | import { randomBytes } from 'crypto';
3 | import { createWriteStream, promises as fs } from 'fs';
4 | import { HttpsProxyAgent } from 'https-proxy-agent';
5 | import fetch from 'node-fetch';
6 | import path from 'path';
7 | import stream from 'stream';
8 | import util from 'util';
9 |
10 | const pipeline = util.promisify(stream.pipeline);
11 | const agent = process.env.https_proxy ? new HttpsProxyAgent(process.env.https_proxy as string) : null;
12 |
13 | export async function download(context: ExtensionContext): Promise {
14 | const statusItem = window.createStatusBarItem(0, { progress: true });
15 | statusItem.text = `Downloading phpstan`;
16 | statusItem.show();
17 |
18 | const downloadUrl = 'https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar';
19 |
20 | // @ts-ignore
21 | const resp = await fetch(downloadUrl, { agent });
22 | if (!resp.ok) {
23 | statusItem.hide();
24 | throw new Error('Download failed');
25 | }
26 |
27 | let cur = 0;
28 | const len = Number(resp.headers.get('content-length'));
29 | resp.body.on('data', (chunk: Buffer) => {
30 | cur += chunk.length;
31 | const p = ((cur / len) * 100).toFixed(2);
32 | statusItem.text = `${p}% Downloading phpstan`;
33 | });
34 |
35 | const _path = path.join(context.storagePath, 'phpstan');
36 | const randomHex = randomBytes(5).toString('hex');
37 | const tempFile = path.join(context.storagePath, `phpstan-${randomHex}`);
38 |
39 | const destFileStream = createWriteStream(tempFile, { mode: 0o755 });
40 | await pipeline(resp.body, destFileStream);
41 | await new Promise((resolve) => {
42 | destFileStream.on('close', resolve);
43 | destFileStream.destroy();
44 | setTimeout(resolve, 1000);
45 | });
46 |
47 | await fs.unlink(_path).catch((err) => {
48 | if (err.code !== 'ENOENT') throw err;
49 | });
50 | await fs.rename(tempFile, _path);
51 |
52 | statusItem.hide();
53 | }
54 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { commands, ExtensionContext, window, workspace } from 'coc.nvim';
2 |
3 | import fs from 'fs';
4 | import path from 'path';
5 |
6 | import * as phpstanCodeActionFeature from './action';
7 | import { download } from './downloader';
8 | import * as neonLintFeature from './neonLint';
9 | import * as phpstanLintFeature from './phpstanLint';
10 |
11 | export async function activate(context: ExtensionContext): Promise {
12 | if (!workspace.getConfiguration('phpstan').get('enable')) return;
13 |
14 | const extensionStoragePath = context.storagePath;
15 | if (!fs.existsSync(extensionStoragePath)) {
16 | fs.mkdirSync(extensionStoragePath, { recursive: true });
17 | }
18 |
19 | const outputChannel = window.createOutputChannel('phpstan');
20 |
21 | context.subscriptions.push(
22 | commands.registerCommand('phpstan.showOutput', () => {
23 | if (outputChannel) {
24 | outputChannel.show();
25 | }
26 | })
27 | );
28 |
29 | context.subscriptions.push(
30 | commands.registerCommand('phpstan.download', async () => {
31 | await downloadWrapper(context);
32 | })
33 | );
34 |
35 | // 1. phpstan.toolPath
36 | let toolPath = workspace.getConfiguration('phpstan').get('toolPath', '');
37 | if (!toolPath) {
38 | if (fs.existsSync(path.join(workspace.root, 'vendor', 'bin', 'phpstan'))) {
39 | // 2. Project's "phpstan"
40 | toolPath = path.join(workspace.root, 'vendor', 'bin', 'phpstan');
41 | } else if (fs.existsSync(path.join(context.storagePath, 'phpstan'))) {
42 | // 3. builtin "phpstan"
43 | toolPath = path.join(context.storagePath, 'phpstan');
44 | }
45 | }
46 |
47 | // Donwload "phpstan" if it does not exist.
48 | if (workspace.getConfiguration('phpstan').get('download.checkOnStartup', true)) {
49 | if (!toolPath) {
50 | await downloadWrapper(context);
51 | if (fs.existsSync(path.join(context.storagePath, 'phpstan'))) {
52 | toolPath = path.join(context.storagePath, 'phpstan');
53 | } else {
54 | return;
55 | }
56 | }
57 | }
58 |
59 | if (!toolPath) return;
60 |
61 | phpstanLintFeature.register(context, toolPath, outputChannel);
62 | neonLintFeature.register(context, outputChannel);
63 | phpstanCodeActionFeature.register(context);
64 | }
65 |
66 | async function downloadWrapper(context: ExtensionContext) {
67 | let msg = 'Do you want to download "phpstan"?';
68 | const ret = await window.showPrompt(msg);
69 | if (ret) {
70 | try {
71 | await download(context);
72 | } catch (e) {
73 | console.error(e);
74 | msg = 'Download phpstan failed, you can get it from https://github.com/phpstan/phpstan';
75 | window.showErrorMessage(msg);
76 | return;
77 | }
78 | } else {
79 | return;
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/neonLint.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Diagnostic,
3 | DiagnosticCollection,
4 | DiagnosticSeverity,
5 | ExtensionContext,
6 | languages,
7 | OutputChannel,
8 | Position,
9 | Range,
10 | TextDocument,
11 | workspace,
12 | } from 'coc.nvim';
13 |
14 | import neon from 'neon-js';
15 |
16 | export function register(context: ExtensionContext, outputChannel: OutputChannel) {
17 | if (!workspace.getConfiguration('phpstan').get('neonLint.enable')) return;
18 |
19 | const engine = new NeonLintEngine(outputChannel);
20 |
21 | workspace.documents.map(async (doc) => {
22 | await engine.lint(doc.textDocument);
23 | });
24 |
25 | workspace.onDidOpenTextDocument(
26 | async (e) => {
27 | await engine.lint(e);
28 | },
29 | null,
30 | context.subscriptions
31 | );
32 |
33 | workspace.onDidChangeTextDocument(
34 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
35 | async (_e) => {
36 | const doc = await workspace.document;
37 | await engine.lint(doc.textDocument);
38 | },
39 | null,
40 | context.subscriptions
41 | );
42 |
43 | workspace.onDidSaveTextDocument(
44 | async (e) => {
45 | await engine.lint(e);
46 | },
47 | null,
48 | context.subscriptions
49 | );
50 | }
51 |
52 | class NeonLintEngine {
53 | private collection: DiagnosticCollection;
54 | private outputChannel: OutputChannel;
55 |
56 | constructor(outputChannel: OutputChannel) {
57 | this.collection = languages.createDiagnosticCollection('phpstan-neon');
58 | this.outputChannel = outputChannel;
59 | }
60 |
61 | public async lint(textDocument: TextDocument): Promise {
62 | if (
63 | !textDocument.uri.endsWith('phpstan.neon') &&
64 | !textDocument.uri.endsWith('phpstan.neon.dist') &&
65 | !textDocument.uri.endsWith('phpstan.dist.neon')
66 | )
67 | return;
68 |
69 | const text = textDocument.getText();
70 |
71 | this.outputChannel.appendLine(`${'#'.repeat(10)} phpstan-neon\n`);
72 |
73 | try {
74 | neon.decode(text);
75 | this.outputChannel.appendLine(`RES: success\n`);
76 | this.collection.set(textDocument.uri, null);
77 | } catch (e: any) {
78 | if (e instanceof neon.Error) {
79 | this.collection.set(textDocument.uri, this.getDiagnostics(e));
80 | this.outputChannel.appendLine(`ERR: ${e.message}\n`);
81 | }
82 | }
83 | }
84 |
85 | private getDiagnostics(e: any): Diagnostic[] {
86 | const diagnostics: Diagnostic[] = [];
87 |
88 | if ('line' in e && 'column' in e && 'message' in e) {
89 | const line = e.line - 1;
90 | const column = e.column - 1;
91 |
92 | const range = Range.create(Position.create(line, column), Position.create(line, column));
93 |
94 | diagnostics.push(Diagnostic.create(range, e.message, DiagnosticSeverity.Error));
95 | }
96 |
97 | return diagnostics;
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/src/phpstanLint.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Diagnostic,
3 | DiagnosticCollection,
4 | DiagnosticSeverity,
5 | ExtensionContext,
6 | languages,
7 | OutputChannel,
8 | Position,
9 | Range,
10 | TextDocument,
11 | Uri,
12 | workspace,
13 | WorkspaceConfiguration,
14 | } from 'coc.nvim';
15 |
16 | import cp from 'child_process';
17 | import fs from 'fs';
18 |
19 | export function register(context: ExtensionContext, toolPath: string, outputChannel: OutputChannel) {
20 | const engine = new LintEngine(toolPath, outputChannel);
21 |
22 | // lint onOpen
23 | workspace.documents.map(async (doc) => {
24 | await engine.lint(doc.textDocument);
25 | });
26 |
27 | workspace.onDidOpenTextDocument(
28 | async (e) => {
29 | await engine.lint(e);
30 | },
31 | null,
32 | context.subscriptions
33 | );
34 |
35 | // lint onSave
36 | workspace.onDidSaveTextDocument(
37 | async (e) => {
38 | await engine.lint(e);
39 | },
40 | null,
41 | context.subscriptions
42 | );
43 | }
44 |
45 | type PHPStanDiagnosticsType = {
46 | totals: {
47 | errors: number;
48 | file_errors: number;
49 | };
50 | files: {
51 | [filepath: string]: {
52 | errors: number;
53 | messages: {
54 | message: string;
55 | line: number | null;
56 | ignorable: boolean;
57 | }[];
58 | };
59 | };
60 | errors: string[];
61 | };
62 |
63 | class LintEngine {
64 | private collection: DiagnosticCollection;
65 | private toolPath: string;
66 | private outputChannel: OutputChannel;
67 | private extensionConfig: WorkspaceConfiguration;
68 |
69 | constructor(toolPath: string, outputChannel: OutputChannel) {
70 | this.collection = languages.createDiagnosticCollection('phpstan');
71 | this.toolPath = toolPath;
72 | this.outputChannel = outputChannel;
73 |
74 | const extensionConfig = workspace.getConfiguration('phpstan');
75 | this.extensionConfig = extensionConfig;
76 | }
77 |
78 | public async lint(textDocument: TextDocument): Promise {
79 | if (textDocument.languageId !== 'php') return;
80 |
81 | // eslint-disable-next-line @typescript-eslint/no-this-alias
82 | const self = this;
83 | const filePath = Uri.parse(textDocument.uri).fsPath;
84 | const args: string[] = [];
85 | const cwd = Uri.file(workspace.root).fsPath;
86 | const opts = { cwd, shell: true };
87 |
88 | args.push('analyze');
89 | args.push('--no-progress');
90 | args.push('--no-ansi');
91 | args.push('--no-interaction');
92 | args.push('--error-format=json');
93 |
94 | const ruleLevel = this.extensionConfig.get('level', null);
95 | if (ruleLevel !== null) {
96 | args.push(`--level=${ruleLevel}`);
97 | }
98 |
99 | const analyzeMemoryLimit = this.extensionConfig.get('memoryLimit', '-1');
100 | if (analyzeMemoryLimit) {
101 | // MEMO: Since the value -1 is also valid, we pass the value with =
102 | args.push(`--memory-limit=${analyzeMemoryLimit}`);
103 | }
104 |
105 | const configrationFile = this.extensionConfig.get('configuration', null);
106 | if (configrationFile && fs.existsSync(configrationFile)) {
107 | args.push(`--configuration=${configrationFile}`);
108 | }
109 |
110 | this.outputChannel.appendLine(`${'#'.repeat(10)} phpstan\n`);
111 | this.outputChannel.appendLine(`Cwd: ${opts.cwd}`);
112 | this.outputChannel.appendLine(`Tool: ${this.toolPath}`);
113 | this.outputChannel.appendLine(`Args: ${args.join(' ')}`);
114 | this.outputChannel.appendLine(`File: ${filePath}\n`);
115 |
116 | this.collection.set(textDocument.uri);
117 |
118 | return new Promise(function (resolve) {
119 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
120 | cp.execFile(self.toolPath, [...args, filePath], opts, function (_error, stdout, stderr) {
121 | if (stderr) {
122 | self.outputChannel.appendLine(`**STDERR**\n\n${stderr}`);
123 | }
124 |
125 | self.outputChannel.appendLine(`**STDOUT**\n\n${stdout}\n`);
126 | self.collection.set(textDocument.uri, self.getDiagnostics(stdout));
127 | resolve();
128 | });
129 | });
130 | }
131 |
132 | private getDiagnostics(decoded: string): Diagnostic[] {
133 | const diagnostics: Diagnostic[] = [];
134 |
135 | if (!this.IsJsonString(decoded)) {
136 | return diagnostics;
137 | }
138 |
139 | const phpstanDiagnostics: PHPStanDiagnosticsType = JSON.parse(decoded);
140 |
141 | for (const filepath in phpstanDiagnostics.files) {
142 | const filepathItem = phpstanDiagnostics.files[filepath];
143 | for (const messageItem of filepathItem.messages) {
144 | const line = messageItem.line ? messageItem.line - 1 : 0;
145 | const range = Range.create(Position.create(line, 0), Position.create(line, 0));
146 | diagnostics.push(
147 | Diagnostic.create(
148 | range,
149 | messageItem.message + ` (ignorable: ${messageItem.ignorable})`,
150 | DiagnosticSeverity.Error,
151 | 'analyze'
152 | )
153 | );
154 | }
155 | }
156 |
157 | return diagnostics;
158 | }
159 |
160 | private IsJsonString(str: string): boolean {
161 | try {
162 | JSON.parse(str);
163 | } catch (e) {
164 | return false;
165 | }
166 | return true;
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | declare module 'neon-js';
2 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2017",
4 | "lib": ["es2017", "es2018"],
5 | "module": "commonjs",
6 | "declaration": false,
7 | "sourceMap": true,
8 | "outDir": "lib",
9 | "strict": true,
10 | "moduleResolution": "node",
11 | "noImplicitAny": false,
12 | "esModuleInterop": true
13 | },
14 | "include": ["src"]
15 | }
16 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@esbuild/android-arm64@0.16.17":
6 | version "0.16.17"
7 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23"
8 | integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==
9 |
10 | "@esbuild/android-arm@0.16.17":
11 | version "0.16.17"
12 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2"
13 | integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==
14 |
15 | "@esbuild/android-x64@0.16.17":
16 | version "0.16.17"
17 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e"
18 | integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==
19 |
20 | "@esbuild/darwin-arm64@0.16.17":
21 | version "0.16.17"
22 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220"
23 | integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==
24 |
25 | "@esbuild/darwin-x64@0.16.17":
26 | version "0.16.17"
27 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4"
28 | integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==
29 |
30 | "@esbuild/freebsd-arm64@0.16.17":
31 | version "0.16.17"
32 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27"
33 | integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==
34 |
35 | "@esbuild/freebsd-x64@0.16.17":
36 | version "0.16.17"
37 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72"
38 | integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==
39 |
40 | "@esbuild/linux-arm64@0.16.17":
41 | version "0.16.17"
42 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca"
43 | integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==
44 |
45 | "@esbuild/linux-arm@0.16.17":
46 | version "0.16.17"
47 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196"
48 | integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==
49 |
50 | "@esbuild/linux-ia32@0.16.17":
51 | version "0.16.17"
52 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54"
53 | integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==
54 |
55 | "@esbuild/linux-loong64@0.16.17":
56 | version "0.16.17"
57 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8"
58 | integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==
59 |
60 | "@esbuild/linux-mips64el@0.16.17":
61 | version "0.16.17"
62 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726"
63 | integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==
64 |
65 | "@esbuild/linux-ppc64@0.16.17":
66 | version "0.16.17"
67 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8"
68 | integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==
69 |
70 | "@esbuild/linux-riscv64@0.16.17":
71 | version "0.16.17"
72 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9"
73 | integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==
74 |
75 | "@esbuild/linux-s390x@0.16.17":
76 | version "0.16.17"
77 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87"
78 | integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==
79 |
80 | "@esbuild/linux-x64@0.16.17":
81 | version "0.16.17"
82 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f"
83 | integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==
84 |
85 | "@esbuild/netbsd-x64@0.16.17":
86 | version "0.16.17"
87 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775"
88 | integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==
89 |
90 | "@esbuild/openbsd-x64@0.16.17":
91 | version "0.16.17"
92 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35"
93 | integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==
94 |
95 | "@esbuild/sunos-x64@0.16.17":
96 | version "0.16.17"
97 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c"
98 | integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==
99 |
100 | "@esbuild/win32-arm64@0.16.17":
101 | version "0.16.17"
102 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a"
103 | integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==
104 |
105 | "@esbuild/win32-ia32@0.16.17":
106 | version "0.16.17"
107 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09"
108 | integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==
109 |
110 | "@esbuild/win32-x64@0.16.17":
111 | version "0.16.17"
112 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
113 | integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
114 |
115 | "@eslint-community/eslint-utils@^4.2.0":
116 | version "4.4.0"
117 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
118 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
119 | dependencies:
120 | eslint-visitor-keys "^3.3.0"
121 |
122 | "@eslint-community/regexpp@^4.4.0":
123 | version "4.5.1"
124 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
125 | integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
126 |
127 | "@eslint/eslintrc@^2.0.3":
128 | version "2.0.3"
129 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331"
130 | integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==
131 | dependencies:
132 | ajv "^6.12.4"
133 | debug "^4.3.2"
134 | espree "^9.5.2"
135 | globals "^13.19.0"
136 | ignore "^5.2.0"
137 | import-fresh "^3.2.1"
138 | js-yaml "^4.1.0"
139 | minimatch "^3.1.2"
140 | strip-json-comments "^3.1.1"
141 |
142 | "@eslint/js@8.40.0":
143 | version "8.40.0"
144 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec"
145 | integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==
146 |
147 | "@humanwhocodes/config-array@^0.11.8":
148 | version "0.11.8"
149 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
150 | integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
151 | dependencies:
152 | "@humanwhocodes/object-schema" "^1.2.1"
153 | debug "^4.1.1"
154 | minimatch "^3.0.5"
155 |
156 | "@humanwhocodes/module-importer@^1.0.1":
157 | version "1.0.1"
158 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
159 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
160 |
161 | "@humanwhocodes/object-schema@^1.2.1":
162 | version "1.2.1"
163 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
164 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
165 |
166 | "@nodelib/fs.scandir@2.1.4":
167 | version "2.1.4"
168 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
169 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
170 | dependencies:
171 | "@nodelib/fs.stat" "2.0.4"
172 | run-parallel "^1.1.9"
173 |
174 | "@nodelib/fs.scandir@2.1.5":
175 | version "2.1.5"
176 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
177 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
178 | dependencies:
179 | "@nodelib/fs.stat" "2.0.5"
180 | run-parallel "^1.1.9"
181 |
182 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
183 | version "2.0.4"
184 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
185 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
186 |
187 | "@nodelib/fs.stat@2.0.5":
188 | version "2.0.5"
189 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
190 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
191 |
192 | "@nodelib/fs.walk@^1.2.3":
193 | version "1.2.6"
194 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
195 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
196 | dependencies:
197 | "@nodelib/fs.scandir" "2.1.4"
198 | fastq "^1.6.0"
199 |
200 | "@nodelib/fs.walk@^1.2.8":
201 | version "1.2.8"
202 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
203 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
204 | dependencies:
205 | "@nodelib/fs.scandir" "2.1.5"
206 | fastq "^1.6.0"
207 |
208 | "@types/json-schema@^7.0.9":
209 | version "7.0.11"
210 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
211 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
212 |
213 | "@types/node-fetch@^2.6.2":
214 | version "2.6.2"
215 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da"
216 | integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==
217 | dependencies:
218 | "@types/node" "*"
219 | form-data "^3.0.0"
220 |
221 | "@types/node@*":
222 | version "15.6.1"
223 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08"
224 | integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==
225 |
226 | "@types/node@^18.16.5":
227 | version "18.16.5"
228 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.5.tgz#bf64e42719dc2e74da24709a2e1c0b50a966120a"
229 | integrity sha512-seOA34WMo9KB+UA78qaJoCO20RJzZGVXQ5Sh6FWu0g/hfT44nKXnej3/tCQl7FL97idFpBhisLYCTB50S0EirA==
230 |
231 | "@types/semver@^7.3.12":
232 | version "7.3.13"
233 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
234 | integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
235 |
236 | "@typescript-eslint/eslint-plugin@^5.59.2":
237 | version "5.59.2"
238 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz#684a2ce7182f3b4dac342eef7caa1c2bae476abd"
239 | integrity sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==
240 | dependencies:
241 | "@eslint-community/regexpp" "^4.4.0"
242 | "@typescript-eslint/scope-manager" "5.59.2"
243 | "@typescript-eslint/type-utils" "5.59.2"
244 | "@typescript-eslint/utils" "5.59.2"
245 | debug "^4.3.4"
246 | grapheme-splitter "^1.0.4"
247 | ignore "^5.2.0"
248 | natural-compare-lite "^1.4.0"
249 | semver "^7.3.7"
250 | tsutils "^3.21.0"
251 |
252 | "@typescript-eslint/parser@^5.59.2":
253 | version "5.59.2"
254 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.2.tgz#c2c443247901d95865b9f77332d9eee7c55655e8"
255 | integrity sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==
256 | dependencies:
257 | "@typescript-eslint/scope-manager" "5.59.2"
258 | "@typescript-eslint/types" "5.59.2"
259 | "@typescript-eslint/typescript-estree" "5.59.2"
260 | debug "^4.3.4"
261 |
262 | "@typescript-eslint/scope-manager@5.59.2":
263 | version "5.59.2"
264 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz#f699fe936ee4e2c996d14f0fdd3a7da5ba7b9a4c"
265 | integrity sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==
266 | dependencies:
267 | "@typescript-eslint/types" "5.59.2"
268 | "@typescript-eslint/visitor-keys" "5.59.2"
269 |
270 | "@typescript-eslint/type-utils@5.59.2":
271 | version "5.59.2"
272 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz#0729c237503604cd9a7084b5af04c496c9a4cdcf"
273 | integrity sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==
274 | dependencies:
275 | "@typescript-eslint/typescript-estree" "5.59.2"
276 | "@typescript-eslint/utils" "5.59.2"
277 | debug "^4.3.4"
278 | tsutils "^3.21.0"
279 |
280 | "@typescript-eslint/types@5.59.2":
281 | version "5.59.2"
282 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.2.tgz#b511d2b9847fe277c5cb002a2318bd329ef4f655"
283 | integrity sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==
284 |
285 | "@typescript-eslint/typescript-estree@5.59.2":
286 | version "5.59.2"
287 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz#6e2fabd3ba01db5d69df44e0b654c0b051fe9936"
288 | integrity sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==
289 | dependencies:
290 | "@typescript-eslint/types" "5.59.2"
291 | "@typescript-eslint/visitor-keys" "5.59.2"
292 | debug "^4.3.4"
293 | globby "^11.1.0"
294 | is-glob "^4.0.3"
295 | semver "^7.3.7"
296 | tsutils "^3.21.0"
297 |
298 | "@typescript-eslint/utils@5.59.2":
299 | version "5.59.2"
300 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.2.tgz#0c45178124d10cc986115885688db6abc37939f4"
301 | integrity sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==
302 | dependencies:
303 | "@eslint-community/eslint-utils" "^4.2.0"
304 | "@types/json-schema" "^7.0.9"
305 | "@types/semver" "^7.3.12"
306 | "@typescript-eslint/scope-manager" "5.59.2"
307 | "@typescript-eslint/types" "5.59.2"
308 | "@typescript-eslint/typescript-estree" "5.59.2"
309 | eslint-scope "^5.1.1"
310 | semver "^7.3.7"
311 |
312 | "@typescript-eslint/visitor-keys@5.59.2":
313 | version "5.59.2"
314 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz#37a419dc2723a3eacbf722512b86d6caf7d3b750"
315 | integrity sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==
316 | dependencies:
317 | "@typescript-eslint/types" "5.59.2"
318 | eslint-visitor-keys "^3.3.0"
319 |
320 | acorn-jsx@^5.3.2:
321 | version "5.3.2"
322 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
323 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
324 |
325 | acorn@^8.8.0:
326 | version "8.8.2"
327 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
328 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
329 |
330 | agent-base@6:
331 | version "6.0.2"
332 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
333 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
334 | dependencies:
335 | debug "4"
336 |
337 | ajv@^6.10.0, ajv@^6.12.4:
338 | version "6.12.6"
339 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
340 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
341 | dependencies:
342 | fast-deep-equal "^3.1.1"
343 | fast-json-stable-stringify "^2.0.0"
344 | json-schema-traverse "^0.4.1"
345 | uri-js "^4.2.2"
346 |
347 | ansi-regex@^5.0.1:
348 | version "5.0.1"
349 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
350 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
351 |
352 | ansi-styles@^4.1.0:
353 | version "4.3.0"
354 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
355 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
356 | dependencies:
357 | color-convert "^2.0.1"
358 |
359 | argparse@^2.0.1:
360 | version "2.0.1"
361 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
362 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
363 |
364 | array-union@^2.1.0:
365 | version "2.1.0"
366 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
367 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
368 |
369 | asynckit@^0.4.0:
370 | version "0.4.0"
371 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
372 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
373 |
374 | balanced-match@^1.0.0:
375 | version "1.0.2"
376 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
377 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
378 |
379 | brace-expansion@^1.1.7:
380 | version "1.1.11"
381 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
382 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
383 | dependencies:
384 | balanced-match "^1.0.0"
385 | concat-map "0.0.1"
386 |
387 | braces@^3.0.2:
388 | version "3.0.2"
389 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
390 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
391 | dependencies:
392 | fill-range "^7.0.1"
393 |
394 | callsites@^3.0.0:
395 | version "3.1.0"
396 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
397 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
398 |
399 | chalk@^4.0.0:
400 | version "4.1.1"
401 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
402 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
403 | dependencies:
404 | ansi-styles "^4.1.0"
405 | supports-color "^7.1.0"
406 |
407 | coc.nvim@^0.0.82:
408 | version "0.0.82"
409 | resolved "https://registry.yarnpkg.com/coc.nvim/-/coc.nvim-0.0.82.tgz#5230e2eb17e8499a60a97b46d844f2d08c593b29"
410 | integrity sha512-+70ap6FH8FSdaQ0CPijaasQzg6ue84j4/LkX6ZSpALX7YKBcGGDkCcd6adgaC/86b/ZqT3iTTEbMh3mdaI5qPA==
411 |
412 | color-convert@^2.0.1:
413 | version "2.0.1"
414 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
415 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
416 | dependencies:
417 | color-name "~1.1.4"
418 |
419 | color-name@~1.1.4:
420 | version "1.1.4"
421 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
422 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
423 |
424 | combined-stream@^1.0.8:
425 | version "1.0.8"
426 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
427 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
428 | dependencies:
429 | delayed-stream "~1.0.0"
430 |
431 | concat-map@0.0.1:
432 | version "0.0.1"
433 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
434 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
435 |
436 | cross-spawn@^7.0.2:
437 | version "7.0.3"
438 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
439 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
440 | dependencies:
441 | path-key "^3.1.0"
442 | shebang-command "^2.0.0"
443 | which "^2.0.1"
444 |
445 | debug@4, debug@^4.1.1:
446 | version "4.3.1"
447 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
448 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
449 | dependencies:
450 | ms "2.1.2"
451 |
452 | debug@^4.3.2, debug@^4.3.4:
453 | version "4.3.4"
454 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
455 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
456 | dependencies:
457 | ms "2.1.2"
458 |
459 | deep-is@^0.1.3:
460 | version "0.1.3"
461 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
462 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
463 |
464 | delayed-stream@~1.0.0:
465 | version "1.0.0"
466 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
467 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
468 |
469 | dir-glob@^3.0.1:
470 | version "3.0.1"
471 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
472 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
473 | dependencies:
474 | path-type "^4.0.0"
475 |
476 | doctrine@^3.0.0:
477 | version "3.0.0"
478 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
479 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
480 | dependencies:
481 | esutils "^2.0.2"
482 |
483 | esbuild@^0.16.17:
484 | version "0.16.17"
485 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259"
486 | integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==
487 | optionalDependencies:
488 | "@esbuild/android-arm" "0.16.17"
489 | "@esbuild/android-arm64" "0.16.17"
490 | "@esbuild/android-x64" "0.16.17"
491 | "@esbuild/darwin-arm64" "0.16.17"
492 | "@esbuild/darwin-x64" "0.16.17"
493 | "@esbuild/freebsd-arm64" "0.16.17"
494 | "@esbuild/freebsd-x64" "0.16.17"
495 | "@esbuild/linux-arm" "0.16.17"
496 | "@esbuild/linux-arm64" "0.16.17"
497 | "@esbuild/linux-ia32" "0.16.17"
498 | "@esbuild/linux-loong64" "0.16.17"
499 | "@esbuild/linux-mips64el" "0.16.17"
500 | "@esbuild/linux-ppc64" "0.16.17"
501 | "@esbuild/linux-riscv64" "0.16.17"
502 | "@esbuild/linux-s390x" "0.16.17"
503 | "@esbuild/linux-x64" "0.16.17"
504 | "@esbuild/netbsd-x64" "0.16.17"
505 | "@esbuild/openbsd-x64" "0.16.17"
506 | "@esbuild/sunos-x64" "0.16.17"
507 | "@esbuild/win32-arm64" "0.16.17"
508 | "@esbuild/win32-ia32" "0.16.17"
509 | "@esbuild/win32-x64" "0.16.17"
510 |
511 | escape-string-regexp@^4.0.0:
512 | version "4.0.0"
513 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
514 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
515 |
516 | eslint-config-prettier@^8.8.0:
517 | version "8.8.0"
518 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348"
519 | integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==
520 |
521 | eslint-plugin-prettier@^4.2.1:
522 | version "4.2.1"
523 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
524 | integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
525 | dependencies:
526 | prettier-linter-helpers "^1.0.0"
527 |
528 | eslint-scope@^5.1.1:
529 | version "5.1.1"
530 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
531 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
532 | dependencies:
533 | esrecurse "^4.3.0"
534 | estraverse "^4.1.1"
535 |
536 | eslint-scope@^7.2.0:
537 | version "7.2.0"
538 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b"
539 | integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
540 | dependencies:
541 | esrecurse "^4.3.0"
542 | estraverse "^5.2.0"
543 |
544 | eslint-visitor-keys@^3.3.0:
545 | version "3.3.0"
546 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
547 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
548 |
549 | eslint-visitor-keys@^3.4.1:
550 | version "3.4.1"
551 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
552 | integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
553 |
554 | eslint@^8.40.0:
555 | version "8.40.0"
556 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4"
557 | integrity sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==
558 | dependencies:
559 | "@eslint-community/eslint-utils" "^4.2.0"
560 | "@eslint-community/regexpp" "^4.4.0"
561 | "@eslint/eslintrc" "^2.0.3"
562 | "@eslint/js" "8.40.0"
563 | "@humanwhocodes/config-array" "^0.11.8"
564 | "@humanwhocodes/module-importer" "^1.0.1"
565 | "@nodelib/fs.walk" "^1.2.8"
566 | ajv "^6.10.0"
567 | chalk "^4.0.0"
568 | cross-spawn "^7.0.2"
569 | debug "^4.3.2"
570 | doctrine "^3.0.0"
571 | escape-string-regexp "^4.0.0"
572 | eslint-scope "^7.2.0"
573 | eslint-visitor-keys "^3.4.1"
574 | espree "^9.5.2"
575 | esquery "^1.4.2"
576 | esutils "^2.0.2"
577 | fast-deep-equal "^3.1.3"
578 | file-entry-cache "^6.0.1"
579 | find-up "^5.0.0"
580 | glob-parent "^6.0.2"
581 | globals "^13.19.0"
582 | grapheme-splitter "^1.0.4"
583 | ignore "^5.2.0"
584 | import-fresh "^3.0.0"
585 | imurmurhash "^0.1.4"
586 | is-glob "^4.0.0"
587 | is-path-inside "^3.0.3"
588 | js-sdsl "^4.1.4"
589 | js-yaml "^4.1.0"
590 | json-stable-stringify-without-jsonify "^1.0.1"
591 | levn "^0.4.1"
592 | lodash.merge "^4.6.2"
593 | minimatch "^3.1.2"
594 | natural-compare "^1.4.0"
595 | optionator "^0.9.1"
596 | strip-ansi "^6.0.1"
597 | strip-json-comments "^3.1.0"
598 | text-table "^0.2.0"
599 |
600 | espree@^9.5.2:
601 | version "9.5.2"
602 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b"
603 | integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==
604 | dependencies:
605 | acorn "^8.8.0"
606 | acorn-jsx "^5.3.2"
607 | eslint-visitor-keys "^3.4.1"
608 |
609 | esquery@^1.4.2:
610 | version "1.5.0"
611 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
612 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
613 | dependencies:
614 | estraverse "^5.1.0"
615 |
616 | esrecurse@^4.3.0:
617 | version "4.3.0"
618 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
619 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
620 | dependencies:
621 | estraverse "^5.2.0"
622 |
623 | estraverse@^4.1.1:
624 | version "4.3.0"
625 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
626 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
627 |
628 | estraverse@^5.1.0, estraverse@^5.2.0:
629 | version "5.2.0"
630 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
631 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
632 |
633 | esutils@^2.0.2:
634 | version "2.0.3"
635 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
636 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
637 |
638 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
639 | version "3.1.3"
640 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
641 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
642 |
643 | fast-diff@^1.1.2:
644 | version "1.2.0"
645 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
646 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
647 |
648 | fast-glob@^3.2.9:
649 | version "3.2.11"
650 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
651 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
652 | dependencies:
653 | "@nodelib/fs.stat" "^2.0.2"
654 | "@nodelib/fs.walk" "^1.2.3"
655 | glob-parent "^5.1.2"
656 | merge2 "^1.3.0"
657 | micromatch "^4.0.4"
658 |
659 | fast-json-stable-stringify@^2.0.0:
660 | version "2.1.0"
661 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
662 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
663 |
664 | fast-levenshtein@^2.0.6:
665 | version "2.0.6"
666 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
667 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
668 |
669 | fastq@^1.6.0:
670 | version "1.11.0"
671 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
672 | integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==
673 | dependencies:
674 | reusify "^1.0.4"
675 |
676 | file-entry-cache@^6.0.1:
677 | version "6.0.1"
678 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
679 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
680 | dependencies:
681 | flat-cache "^3.0.4"
682 |
683 | fill-range@^7.0.1:
684 | version "7.0.1"
685 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
686 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
687 | dependencies:
688 | to-regex-range "^5.0.1"
689 |
690 | find-up@^5.0.0:
691 | version "5.0.0"
692 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
693 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
694 | dependencies:
695 | locate-path "^6.0.0"
696 | path-exists "^4.0.0"
697 |
698 | flat-cache@^3.0.4:
699 | version "3.0.4"
700 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
701 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
702 | dependencies:
703 | flatted "^3.1.0"
704 | rimraf "^3.0.2"
705 |
706 | flatted@^3.1.0:
707 | version "3.1.1"
708 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
709 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
710 |
711 | form-data@^3.0.0:
712 | version "3.0.1"
713 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
714 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
715 | dependencies:
716 | asynckit "^0.4.0"
717 | combined-stream "^1.0.8"
718 | mime-types "^2.1.12"
719 |
720 | fs.realpath@^1.0.0:
721 | version "1.0.0"
722 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
723 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
724 |
725 | glob-parent@^5.1.2:
726 | version "5.1.2"
727 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
728 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
729 | dependencies:
730 | is-glob "^4.0.1"
731 |
732 | glob-parent@^6.0.2:
733 | version "6.0.2"
734 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
735 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
736 | dependencies:
737 | is-glob "^4.0.3"
738 |
739 | glob@^7.1.3:
740 | version "7.1.7"
741 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
742 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
743 | dependencies:
744 | fs.realpath "^1.0.0"
745 | inflight "^1.0.4"
746 | inherits "2"
747 | minimatch "^3.0.4"
748 | once "^1.3.0"
749 | path-is-absolute "^1.0.0"
750 |
751 | globals@^13.19.0:
752 | version "13.20.0"
753 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
754 | integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
755 | dependencies:
756 | type-fest "^0.20.2"
757 |
758 | globby@^11.1.0:
759 | version "11.1.0"
760 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
761 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
762 | dependencies:
763 | array-union "^2.1.0"
764 | dir-glob "^3.0.1"
765 | fast-glob "^3.2.9"
766 | ignore "^5.2.0"
767 | merge2 "^1.4.1"
768 | slash "^3.0.0"
769 |
770 | grapheme-splitter@^1.0.4:
771 | version "1.0.4"
772 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
773 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
774 |
775 | has-flag@^4.0.0:
776 | version "4.0.0"
777 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
778 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
779 |
780 | https-proxy-agent@^5.0.1:
781 | version "5.0.1"
782 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
783 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
784 | dependencies:
785 | agent-base "6"
786 | debug "4"
787 |
788 | ignore@^5.2.0:
789 | version "5.2.0"
790 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
791 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
792 |
793 | import-fresh@^3.0.0, import-fresh@^3.2.1:
794 | version "3.3.0"
795 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
796 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
797 | dependencies:
798 | parent-module "^1.0.0"
799 | resolve-from "^4.0.0"
800 |
801 | imurmurhash@^0.1.4:
802 | version "0.1.4"
803 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
804 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
805 |
806 | inflight@^1.0.4:
807 | version "1.0.6"
808 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
809 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
810 | dependencies:
811 | once "^1.3.0"
812 | wrappy "1"
813 |
814 | inherits@2:
815 | version "2.0.4"
816 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
817 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
818 |
819 | is-extglob@^2.1.1:
820 | version "2.1.1"
821 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
822 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
823 |
824 | is-glob@^4.0.0, is-glob@^4.0.1:
825 | version "4.0.1"
826 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
827 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
828 | dependencies:
829 | is-extglob "^2.1.1"
830 |
831 | is-glob@^4.0.3:
832 | version "4.0.3"
833 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
834 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
835 | dependencies:
836 | is-extglob "^2.1.1"
837 |
838 | is-number@^7.0.0:
839 | version "7.0.0"
840 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
841 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
842 |
843 | is-path-inside@^3.0.3:
844 | version "3.0.3"
845 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
846 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
847 |
848 | isexe@^2.0.0:
849 | version "2.0.0"
850 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
851 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
852 |
853 | js-sdsl@^4.1.4:
854 | version "4.4.0"
855 | resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430"
856 | integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==
857 |
858 | js-yaml@^4.1.0:
859 | version "4.1.0"
860 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
861 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
862 | dependencies:
863 | argparse "^2.0.1"
864 |
865 | json-schema-traverse@^0.4.1:
866 | version "0.4.1"
867 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
868 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
869 |
870 | json-stable-stringify-without-jsonify@^1.0.1:
871 | version "1.0.1"
872 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
873 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
874 |
875 | levn@^0.4.1:
876 | version "0.4.1"
877 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
878 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
879 | dependencies:
880 | prelude-ls "^1.2.1"
881 | type-check "~0.4.0"
882 |
883 | locate-path@^6.0.0:
884 | version "6.0.0"
885 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
886 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
887 | dependencies:
888 | p-locate "^5.0.0"
889 |
890 | lodash.merge@^4.6.2:
891 | version "4.6.2"
892 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
893 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
894 |
895 | lru-cache@^6.0.0:
896 | version "6.0.0"
897 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
898 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
899 | dependencies:
900 | yallist "^4.0.0"
901 |
902 | merge2@^1.3.0, merge2@^1.4.1:
903 | version "1.4.1"
904 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
905 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
906 |
907 | micromatch@^4.0.4:
908 | version "4.0.5"
909 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
910 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
911 | dependencies:
912 | braces "^3.0.2"
913 | picomatch "^2.3.1"
914 |
915 | mime-db@1.47.0:
916 | version "1.47.0"
917 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
918 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
919 |
920 | mime-types@^2.1.12:
921 | version "2.1.30"
922 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
923 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
924 | dependencies:
925 | mime-db "1.47.0"
926 |
927 | minimatch@^3.0.4:
928 | version "3.0.4"
929 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
930 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
931 | dependencies:
932 | brace-expansion "^1.1.7"
933 |
934 | minimatch@^3.0.5, minimatch@^3.1.2:
935 | version "3.1.2"
936 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
937 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
938 | dependencies:
939 | brace-expansion "^1.1.7"
940 |
941 | ms@2.1.2:
942 | version "2.1.2"
943 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
944 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
945 |
946 | natural-compare-lite@^1.4.0:
947 | version "1.4.0"
948 | resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
949 | integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
950 |
951 | natural-compare@^1.4.0:
952 | version "1.4.0"
953 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
954 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
955 |
956 | neon-js@^1.1.2:
957 | version "1.1.2"
958 | resolved "https://registry.yarnpkg.com/neon-js/-/neon-js-1.1.2.tgz#af85d8e2bb8099cfc7f6fe256a896a5464b00623"
959 | integrity sha512-sAZ4KZ0jbEetYJ+Pt38yTsDevueF2zJXZjYbOVNcvyThJZy+tJ4DEe8J482JeGLYHJXzdEoWLcnEZHsnjsBtwA==
960 |
961 | node-fetch@^2.6.7:
962 | version "2.6.7"
963 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
964 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
965 | dependencies:
966 | whatwg-url "^5.0.0"
967 |
968 | once@^1.3.0:
969 | version "1.4.0"
970 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
971 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
972 | dependencies:
973 | wrappy "1"
974 |
975 | optionator@^0.9.1:
976 | version "0.9.1"
977 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
978 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
979 | dependencies:
980 | deep-is "^0.1.3"
981 | fast-levenshtein "^2.0.6"
982 | levn "^0.4.1"
983 | prelude-ls "^1.2.1"
984 | type-check "^0.4.0"
985 | word-wrap "^1.2.3"
986 |
987 | p-limit@^3.0.2:
988 | version "3.1.0"
989 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
990 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
991 | dependencies:
992 | yocto-queue "^0.1.0"
993 |
994 | p-locate@^5.0.0:
995 | version "5.0.0"
996 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
997 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
998 | dependencies:
999 | p-limit "^3.0.2"
1000 |
1001 | parent-module@^1.0.0:
1002 | version "1.0.1"
1003 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1004 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1005 | dependencies:
1006 | callsites "^3.0.0"
1007 |
1008 | path-exists@^4.0.0:
1009 | version "4.0.0"
1010 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1011 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1012 |
1013 | path-is-absolute@^1.0.0:
1014 | version "1.0.1"
1015 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1016 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1017 |
1018 | path-key@^3.1.0:
1019 | version "3.1.1"
1020 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1021 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1022 |
1023 | path-type@^4.0.0:
1024 | version "4.0.0"
1025 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1026 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1027 |
1028 | picomatch@^2.3.1:
1029 | version "2.3.1"
1030 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1031 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1032 |
1033 | prelude-ls@^1.2.1:
1034 | version "1.2.1"
1035 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1036 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1037 |
1038 | prettier-linter-helpers@^1.0.0:
1039 | version "1.0.0"
1040 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
1041 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
1042 | dependencies:
1043 | fast-diff "^1.1.2"
1044 |
1045 | prettier@^2.8.8:
1046 | version "2.8.8"
1047 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
1048 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
1049 |
1050 | punycode@^2.1.0:
1051 | version "2.1.1"
1052 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1053 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1054 |
1055 | queue-microtask@^1.2.2:
1056 | version "1.2.3"
1057 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1058 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1059 |
1060 | resolve-from@^4.0.0:
1061 | version "4.0.0"
1062 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1063 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1064 |
1065 | reusify@^1.0.4:
1066 | version "1.0.4"
1067 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1068 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1069 |
1070 | rimraf@^3.0.2:
1071 | version "3.0.2"
1072 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1073 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1074 | dependencies:
1075 | glob "^7.1.3"
1076 |
1077 | run-parallel@^1.1.9:
1078 | version "1.2.0"
1079 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1080 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1081 | dependencies:
1082 | queue-microtask "^1.2.2"
1083 |
1084 | semver@^7.3.7:
1085 | version "7.3.7"
1086 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
1087 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
1088 | dependencies:
1089 | lru-cache "^6.0.0"
1090 |
1091 | shebang-command@^2.0.0:
1092 | version "2.0.0"
1093 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1094 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1095 | dependencies:
1096 | shebang-regex "^3.0.0"
1097 |
1098 | shebang-regex@^3.0.0:
1099 | version "3.0.0"
1100 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1101 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1102 |
1103 | slash@^3.0.0:
1104 | version "3.0.0"
1105 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1106 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1107 |
1108 | strip-ansi@^6.0.1:
1109 | version "6.0.1"
1110 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1111 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1112 | dependencies:
1113 | ansi-regex "^5.0.1"
1114 |
1115 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
1116 | version "3.1.1"
1117 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1118 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1119 |
1120 | supports-color@^7.1.0:
1121 | version "7.2.0"
1122 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1123 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1124 | dependencies:
1125 | has-flag "^4.0.0"
1126 |
1127 | text-table@^0.2.0:
1128 | version "0.2.0"
1129 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1130 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
1131 |
1132 | to-regex-range@^5.0.1:
1133 | version "5.0.1"
1134 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1135 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1136 | dependencies:
1137 | is-number "^7.0.0"
1138 |
1139 | tr46@~0.0.3:
1140 | version "0.0.3"
1141 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1142 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
1143 |
1144 | tslib@^1.8.1:
1145 | version "1.14.1"
1146 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1147 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
1148 |
1149 | tsutils@^3.21.0:
1150 | version "3.21.0"
1151 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
1152 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
1153 | dependencies:
1154 | tslib "^1.8.1"
1155 |
1156 | type-check@^0.4.0, type-check@~0.4.0:
1157 | version "0.4.0"
1158 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1159 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1160 | dependencies:
1161 | prelude-ls "^1.2.1"
1162 |
1163 | type-fest@^0.20.2:
1164 | version "0.20.2"
1165 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1166 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1167 |
1168 | typescript@^5.0.4:
1169 | version "5.0.4"
1170 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
1171 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
1172 |
1173 | uri-js@^4.2.2:
1174 | version "4.4.1"
1175 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1176 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1177 | dependencies:
1178 | punycode "^2.1.0"
1179 |
1180 | webidl-conversions@^3.0.0:
1181 | version "3.0.1"
1182 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
1183 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
1184 |
1185 | whatwg-url@^5.0.0:
1186 | version "5.0.0"
1187 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
1188 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
1189 | dependencies:
1190 | tr46 "~0.0.3"
1191 | webidl-conversions "^3.0.0"
1192 |
1193 | which@^2.0.1:
1194 | version "2.0.2"
1195 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1196 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1197 | dependencies:
1198 | isexe "^2.0.0"
1199 |
1200 | word-wrap@^1.2.3:
1201 | version "1.2.3"
1202 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1203 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1204 |
1205 | wrappy@1:
1206 | version "1.0.2"
1207 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1208 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1209 |
1210 | yallist@^4.0.0:
1211 | version "4.0.0"
1212 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1213 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1214 |
1215 | yocto-queue@^0.1.0:
1216 | version "0.1.0"
1217 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1218 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1219 |
--------------------------------------------------------------------------------