├── .envrc ├── .gitignore ├── assets └── icon.png ├── .github ├── FUNDING.yml └── workflows │ └── nix.yaml ├── .vscodeignore ├── .vscode ├── settings.json ├── tasks.json └── launch.json ├── tsconfig.json ├── shell.nix ├── default.nix ├── .eslintrc.js ├── src ├── utils.ts ├── constants.ts ├── command.ts └── main.ts ├── LICENSE ├── flake.lock ├── flake.nix ├── README.md ├── package.json └── yarn.lock /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | out 3 | node_modules 4 | .direnv 5 | *.vsix 6 | -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cab404/vscode-direnv/HEAD/assets/icon.png -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | liberapay: cab404 3 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | out/test/** 2 | test/** 3 | src/** 4 | .* 5 | .*/** 6 | *.lock 7 | *.nix 8 | tsconfig.json 9 | !assets/icon.png 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "./node_modules/typescript/lib", // we want to use the TS server from our node_modules folder to control its version 4 | "terminal.integrated.defaultProfile.linux": "direnv-extended terminal", 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es5", 5 | "outDir": "out", 6 | "lib": ["es2015"], 7 | "sourceMap": true, 8 | "rootDir": "." 9 | }, 10 | "exclude": [ 11 | "node_modules", 12 | ".vscode-test" 13 | ] 14 | } -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | (import 2 | ( 3 | let 4 | lock = builtins.fromJSON (builtins.readFile ./flake.lock); 5 | in 6 | fetchTarball { 7 | url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.compat.locked.rev}.tar.gz"; 8 | sha256 = lock.nodes.compat.locked.narHash; 9 | } 10 | ) 11 | { 12 | src = ./.; 13 | }).shellNix 14 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | (import 2 | ( 3 | let 4 | lock = builtins.fromJSON (builtins.readFile ./flake.lock); 5 | in 6 | fetchTarball { 7 | url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.compat.locked.rev}.tar.gz"; 8 | sha256 = lock.nodes.compat.locked.narHash; 9 | } 10 | ) 11 | { 12 | src = ./.; 13 | }).defaultNix 14 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | plugins: [ 5 | '@typescript-eslint', 6 | ], 7 | extends: [ 8 | 'eslint:recommended', 9 | 'plugin:@typescript-eslint/recommended', 10 | ], 11 | rules: { 12 | 'semi': [2, "never"], 13 | '@typescript-eslint/no-unused-vars': 0, 14 | '@typescript-eslint/no-explicit-any': 0, 15 | '@typescript-eslint/explicit-module-boundary-types': 0, 16 | '@typescript-eslint/no-non-null-assertion': 0, 17 | } 18 | }; -------------------------------------------------------------------------------- /.github/workflows/nix.yaml: -------------------------------------------------------------------------------- 1 | name: Build extension 2 | on: [push] 3 | 4 | jobs: 5 | nix: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Install Nix 9 | uses: cachix/install-nix-action@v13 10 | 11 | - uses: actions/checkout@v2.3.4 12 | 13 | - run: | 14 | nix-build 15 | cp result $(readlink result | tail -c+45) 16 | 17 | - name: Upload built extension 18 | uses: actions/upload-artifact@v2 19 | with: 20 | name: 'vscode-direnv.vsix' 21 | path: './*.vsix' 22 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | export type ChangeList = any 4 | 5 | export function assign(destination: any, ...sources: any[]): ChangeList { 6 | const changes = {} 7 | sources.forEach(source => Object.keys(source).forEach((key) => { 8 | if (source[key] != destination[key]) { 9 | if (source[key] == null) { 10 | changes[key] = null 11 | delete destination[key] 12 | } else { 13 | changes[key] = destination[key] 14 | destination[key] = source[key] 15 | } 16 | } 17 | })) 18 | return changes 19 | } 20 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "command": "yarn", 4 | "options": { 5 | "shell": { 6 | "executable": "direnv", 7 | "args": [ 8 | "exec", 9 | ".", 10 | "sh", 11 | "-c" 12 | ] 13 | } 14 | }, 15 | "type": "shell", 16 | "tasks": [ 17 | { 18 | "label": "compile", 19 | "isBackground": false, 20 | "args": [ 21 | "run", 22 | "compile", 23 | ], 24 | "group": "build" 25 | }, 26 | { 27 | "label": "watch", 28 | "isBackground": true, 29 | "args": [ 30 | "run", 31 | "watch", 32 | ], 33 | "problemMatcher": "$tsc-watch", 34 | "group": "build" 35 | } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | export const direnv = { 4 | name: 'direnv', 5 | cmd: 'direnv', 6 | rc: '.envrc' 7 | } 8 | 9 | export const vscode = { 10 | commands: { 11 | open: 'vscode.open' 12 | }, 13 | extension: { 14 | actions: { 15 | allow: 'Allow', 16 | revert: 'Revert', 17 | view: 'View' 18 | } 19 | } 20 | } 21 | 22 | export const messages = { 23 | error: (e) => `direnv error: ` + (e.message || e), 24 | version: (v) => `direnv version: ` + v, 25 | reverted: `direnv: You are now using the old environment.`, 26 | assign: { 27 | success: `direnv: loaded successfully!`, 28 | warn: `direnv: Your .envrc is blocked!`, 29 | allow: `direnv: Would you like to allow this .envrc?` 30 | }, 31 | rc: { 32 | changed: `direnv: Your .envrc has changed.`, 33 | deleted: `direnv: You deleted the .envrc. Would you like to revert to the old environment?` 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], 11 | "stopOnEntry": false, 12 | "sourceMaps": true, 13 | "outFiles": ["${workspaceRoot}/out/src"], 14 | "preLaunchTask": "watch" 15 | }, 16 | { 17 | "name": "Launch Tests", 18 | "type": "extensionHost", 19 | "request": "launch", 20 | "runtimeExecutable": "${execPath}", 21 | "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ], 22 | "stopOnEntry": false, 23 | "sourceMaps": true, 24 | "outFiles": ["${workspaceRoot}/out/test"], 25 | "preLaunchTask": "compile" 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) rubymaniac, cab404 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. -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "compat": { 4 | "flake": false, 5 | "locked": { 6 | "lastModified": 1627913399, 7 | "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", 8 | "owner": "edolstra", 9 | "repo": "flake-compat", 10 | "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", 11 | "type": "github" 12 | }, 13 | "original": { 14 | "owner": "edolstra", 15 | "repo": "flake-compat", 16 | "type": "github" 17 | } 18 | }, 19 | "nixpkgs": { 20 | "locked": { 21 | "lastModified": 1633329294, 22 | "narHash": "sha256-0LpQLS4KMgxslMgmDHmxG/5twFlXDBW9z4Or1iOrCvU=", 23 | "owner": "nixos", 24 | "repo": "nixpkgs", 25 | "rev": "ee084c02040e864eeeb4cf4f8538d92f7c675671", 26 | "type": "github" 27 | }, 28 | "original": { 29 | "owner": "nixos", 30 | "ref": "nixpkgs-unstable", 31 | "repo": "nixpkgs", 32 | "type": "github" 33 | } 34 | }, 35 | "root": { 36 | "inputs": { 37 | "compat": "compat", 38 | "nixpkgs": "nixpkgs", 39 | "utils": "utils" 40 | } 41 | }, 42 | "utils": { 43 | "locked": { 44 | "lastModified": 1631561581, 45 | "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", 46 | "owner": "numtide", 47 | "repo": "flake-utils", 48 | "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", 49 | "type": "github" 50 | }, 51 | "original": { 52 | "owner": "numtide", 53 | "repo": "flake-utils", 54 | "type": "github" 55 | } 56 | } 57 | }, 58 | "root": "root", 59 | "version": 7 60 | } 61 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | compat.url = "github:edolstra/flake-compat"; 4 | compat.flake = false; 5 | 6 | utils.url = "github:numtide/flake-utils"; 7 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 8 | }; 9 | 10 | outputs = { self, nixpkgs, utils, ... }: 11 | utils.lib.eachDefaultSystem (system: 12 | let 13 | attrs = with builtins; fromJSON (readFile ./package.json); 14 | pkgs = import nixpkgs { inherit system; }; 15 | in { 16 | defaultPackage = self.packages.${system}.vsix; 17 | 18 | packages.vsix = pkgs.mkYarnPackage { 19 | src = ./.; 20 | name = with attrs; "${name}-${version}.vsix"; 21 | # Not sure how it happened that vscode-direnv symlink gets through .vscodeignore. 22 | # But it completely destroys vsce with mystic symlink message, which actually mean that it's gets broken. 23 | # Took a long time to solve 24 | buildPhase = with attrs; '' 25 | rm deps/${name}/${name} 26 | yarn vsce package --yarn 27 | ''; 28 | # Nothing needed out there. 29 | distPhase = ":"; 30 | # Just move vsix to result, without any smartness. 31 | installPhase = with attrs; '' 32 | mv deps/${name}/${name}-${version}.vsix $out 33 | ''; 34 | passthru = { 35 | extId = with attrs; "${publisher}.${name}"; 36 | }; 37 | }; 38 | 39 | packages.extension = let 40 | vsix = self.packages.${system}.defaultPackage; 41 | in 42 | pkgs.vscode-utils.buildVscodeExtension { 43 | name = attrs.name; 44 | vscodeExtUniqueId = vsix.extId; 45 | src = vsix; 46 | unpackPhase = "unzip $src; cd extension"; 47 | }; 48 | 49 | devShell = with pkgs; mkShell { 50 | nativeBuildInputs = [ yarn ]; 51 | }; 52 | } 53 | ); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :warning: You probably 2 | ➡️ [want to take a look at extension we are currently developing to end all the direnv extensions out there.](https://github.com/direnv/direnv-vscode) ⬅️ 3 | 4 | _This extension will be archived and will start redirecting to it as soon as we are done with the rest of the nitpicks left :heart:_ 5 | 6 | # [direnv](https://github.com/direnv/direnv) for Visual Studio Code 7 | 8 | [![Develop this project with Nix + direnv](https://raw.githubusercontent.com/cab404/nixdirenv/master/shield-long.baked.png)](https://github.com/cab404/nixdirenv/#development) 9 | 10 | This extension adds support for direnv to VS Code, including: 11 | 12 | * Auto-load the environment if the .envrc file is allowed 13 | * Prompt to allow the .envrc if it is not when VS Code opens 14 | * View / Allow the .envrc via commands 15 | * Auto-detect .envrc when it is created 16 | * Auto-detect changes to .envrc 17 | * Auto-detect deletion of .envrc and prompt to revert your environment 18 | 19 | ### Changes since 1.0.0 20 | + Added direnv terminal profile. You can select it with `> Terminal: Select default profile`. 21 | * Fixed "view .envrc" on projects where .envrc is not in the root 22 | 23 | ## Prerequisites 24 | 25 | This extension needs direnv installed to work. Please refer [here](https://github.com/direnv/direnv#install) for installation instructions. 26 | ## Install 27 | 28 | Via Quick Open: 29 | 30 | 1. [Download](https://vscodium.com/#install), install and open VS Codium (or VS Code) 31 | 2. Press `ctrl+p` to open the Quick Open dialog 32 | 3. Type `ext install direnv` 33 | 4. Click the *Install* button, then the *Enable* button 34 | 35 | Via the Extensions tab: 36 | 37 | 1. Click the extensions tab or press `cmd+shift+x` 38 | 2. Search for *direnv* 39 | 3. Click the *Install* button, then the *Enable* button 40 | 41 | Via the command line: 42 | 43 | 1. Open a command-line prompt 44 | 2. Run `codium --install-extension cab404.vscode-direnv` 45 | 46 | ## Usage 47 | 48 | The following describes the usage of this extension that is automatically enabled each time you open up VS Code. 49 | 50 | ### Automation 51 | 52 | * If you have a `.envrc` file on the workspace root it will try to load it to the environment. If you haven't allowed it yet then it will prompt you to do so. 53 | * If you have no `.envrc` and you try to view it or allow it you get a prompt to create it. 54 | * If you edit and save the `.envrc` it will prompt you to allow it. 55 | * If you delete the `.envrc` it will prompt you to revert the environment. 56 | 57 | ### Commands 58 | 59 | In order to run a command press `cmd+shift+p` to view the Command Palette. There type: 60 | 61 | * `direnv allow` to allow and load the current `.envrc` 62 | * `direnv view` to view your `.envrc` and make changes 63 | * `direnv version` to view the current `direnv` version 64 | * `direnv reload` to reload `.envrc` file 65 | -------------------------------------------------------------------------------- /src/command.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | import * as path from 'path' 4 | import { exec, execSync, ExecOptionsWithStringEncoding } from 'child_process' 5 | import * as constants from './constants' 6 | import * as utils from './utils' 7 | import { threadId } from 'worker_threads' 8 | import { env } from 'process' 9 | 10 | interface CommandExecOptions { 11 | cmd: string, 12 | env?: { [k: string]: string } 13 | } 14 | 15 | /** 16 | * Command class 17 | */ 18 | export class Command { 19 | rootPath: string 20 | rcPath: string 21 | 22 | constructor(rootPath: string) { 23 | this.rootPath = rootPath 24 | // TODO: add exception on non-existent direnv binary 25 | try { 26 | this.rcPath = this.envrcPath() 27 | } catch (err) { 28 | // Not really interested in catching this error. 29 | console.log("Failed to get .envrc path") 30 | this.rcPath = null 31 | } 32 | } 33 | 34 | // Private methods 35 | private execAsync(options: CommandExecOptions): Promise { 36 | return >this.exec(false, options) 37 | } 38 | 39 | private execSync(options: CommandExecOptions): string { 40 | return this.exec(true, options) 41 | } 42 | 43 | private exec(sync: boolean, options: CommandExecOptions): Promise | string { 44 | const direnvCmd = [constants.direnv.cmd, options.cmd].join(' ') 45 | const execOptions: ExecOptionsWithStringEncoding = { encoding: 'utf8', cwd: this.rootPath } 46 | 47 | if (options.env != undefined) { 48 | // this one is not as straightforward as one would want. 49 | execOptions.env = {} 50 | Object.assign(execOptions.env, process.env) 51 | Object.assign(execOptions.env, options.env) 52 | } 53 | 54 | if (sync) { 55 | console.log("NOTE: executing command synchronously", direnvCmd) 56 | return execSync(direnvCmd, execOptions) 57 | } else { 58 | return new Promise((resolve, reject) => { 59 | exec(direnvCmd, execOptions, (err, stdout, stderr) => { 60 | if (err) { 61 | err.message = stderr 62 | reject(err) 63 | } else { 64 | resolve(stdout) 65 | } 66 | }) 67 | }) 68 | } 69 | } 70 | 71 | private envrcPath = () => this.execSync({ cmd: 'edit', env: { "EDITOR": "echo" } }).trimEnd() 72 | 73 | // Public methods 74 | envrcExists = () => this.rcPath != null 75 | version = () => this.execAsync({ cmd: 'version' }) 76 | allow = () => this.execAsync({ cmd: 'allow' }) 77 | exportJSON = () => this.execAsync({ cmd: 'export json' }).then(f => f ? JSON.parse(f) : {}) 78 | exportJSONSync = () => { 79 | const o = this.execSync({ cmd: 'export json' }) 80 | return o ? JSON.parse(o) : {} 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-direnv", 3 | "displayName": "direnv", 4 | "description": "Automatically detect and load .envrc when opening VS Code", 5 | "version": "1.0.1", 6 | "publisher": "cab404", 7 | "license": "MIT", 8 | "icon": "assets/icon.png", 9 | "extensionKind": [ 10 | "ui", 11 | "workspace" 12 | ], 13 | "maintainers": [ 14 | { 15 | "name": "cab404", 16 | "url": "https://github.com/cab404" 17 | } 18 | ], 19 | "contributors": [ 20 | { 21 | "name": "rubymaniac", 22 | "url": "https://github.com/rubymaniac" 23 | }, 24 | { 25 | "name": "timbertson", 26 | "url": "https://github.com/timbertson" 27 | } 28 | ], 29 | "engines": { 30 | "vscode": "^1.59.0" 31 | }, 32 | "bugs": { 33 | "url": "https://github.com/cab404/vscode-direnv/issues" 34 | }, 35 | "repository": { 36 | "type": "git", 37 | "url": "https://github.com/cab404/vscode-direnv.git" 38 | }, 39 | "scripts": { 40 | "vscode:prepublish": "yarn run compile", 41 | "package": "vsce package", 42 | "install": "yarn run compile; vsce package; cp *.vsix $out", 43 | "compile": "tsc -p ./", 44 | "lint": "eslint . --ext .ts,.tsx", 45 | "watch": "tsc -watch -p ./" 46 | }, 47 | "devDependencies": { 48 | "@types/node": "^12.20.28", 49 | "@types/vscode": "^1.59.0", 50 | "@typescript-eslint/eslint-plugin": "^4.33.0", 51 | "@typescript-eslint/parser": "^4.33.0", 52 | "eslint": "^7.32.0", 53 | "typescript": "^4.4.3", 54 | "vsce": "^1.100.1" 55 | }, 56 | "categories": [ 57 | "Other" 58 | ], 59 | "activationEvents": [ 60 | "*", 61 | "onTerminalProfile:direnv" 62 | ], 63 | "main": "./out/src/main", 64 | "contributes": { 65 | "terminal": { 66 | "profiles": [ 67 | { 68 | "id": "direnv", 69 | "title": "direnv-extended terminal" 70 | } 71 | ] 72 | }, 73 | "commands": [ 74 | { 75 | "command": "direnv.version", 76 | "title": "direnv: view version", 77 | "description": "Shows the version of the direnv installed." 78 | }, 79 | { 80 | "command": "direnv.view", 81 | "title": "direnv: view .envrc", 82 | "description": "Opens up the .envrc file." 83 | }, 84 | { 85 | "command": "direnv.allow", 86 | "title": "direnv: allow .envrc", 87 | "description": "Allows direnv to load the .envrc." 88 | }, 89 | { 90 | "command": "direnv.reload", 91 | "title": "direnv: reload .envrc", 92 | "description": "Triggers an env reload" 93 | } 94 | ] 95 | }, 96 | "dependencies": {} 97 | } 98 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | import * as vscode from 'vscode' 4 | import * as utils from './utils' 5 | import * as constants from './constants' 6 | import { Command } from './command' 7 | import { TerminalProfileProvider } from 'vscode' 8 | 9 | const restartExtensionHost = () => vscode.commands.executeCommand("workbench.action.restartExtensionHost") 10 | const command = new Command(vscode.workspace.rootPath) 11 | 12 | const displayError = (e) => vscode.window.showErrorMessage(constants.messages.error(e)) 13 | const handleError = (t: Thenable) => t.then(undefined, displayError) 14 | 15 | const version = () => 16 | command.version().then(v => vscode.window.showInformationMessage(constants.messages.version(v)), displayError) 17 | const revertFromOption = (option) => { 18 | if (option === constants.vscode.extension.actions.revert) { 19 | restartExtensionHost() 20 | } 21 | } 22 | 23 | const statusOverrides = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 0) 24 | 25 | const envrcBlockedMessage = async () => { 26 | const opts = [ 27 | "Allow", "View .envrc" 28 | ] 29 | const option = await vscode.window.showWarningMessage( 30 | `direnv: Your .envrc is blocked!`, 31 | ...opts 32 | ) 33 | switch (opts.indexOf(option)) { 34 | case 0: return allow() 35 | case 1: return viewThenAllow() 36 | } 37 | } 38 | 39 | /** Contains current difference from system environment */ 40 | const envDiff: any = {} 41 | 42 | class DirenvTerminalProfile implements TerminalProfileProvider { 43 | provideTerminalProfile(token: vscode.CancellationToken): vscode.ProviderResult { 44 | if (!command.envrcExists()) { 45 | // Nothing new will be added, don't add anything silently. 46 | return new vscode.TerminalProfile({}) 47 | } 48 | return new vscode.TerminalProfile({ message: `loaded ${Object.keys(envDiff).length} var(s) from ${command.rcPath};`, env: envDiff }) 49 | } 50 | } 51 | vscode.window.registerTerminalProfileProvider("direnv", new DirenvTerminalProfile()) 52 | 53 | /** Returns a promise with decoded JSON from `direnv export`. 54 | * @param sync Whether returned promise is already resolved. 55 | */ 56 | const direnvExport = (sync: boolean) => { 57 | if (sync) { 58 | try { 59 | return Promise.resolve(command.exportJSONSync()) 60 | } catch (err) { 61 | return Promise.reject(err) 62 | } 63 | } else { 64 | return command.exportJSON() 65 | } 66 | } 67 | 68 | /** Applies changes from direnv export to envDiff and process.env */ 69 | const applyDirenvJson = (changes: any) => { 70 | utils.assign(process.env, changes) 71 | return utils.assign(envDiff, changes) 72 | } 73 | 74 | /** Updates direnv indicator with a current overridden env variable count */ 75 | const refreshIndicator = async () => { 76 | // ignoring direnv variables in total count of variables 77 | const len = Object.keys(envDiff).filter((k) => !k.startsWith("DIRENV_")).length 78 | statusOverrides.text = `$(find-replace)${len}` 79 | statusOverrides.tooltip = `direnv: ${len} overridden variables` 80 | statusOverrides.show() 81 | } 82 | 83 | /** Gives user an option to restart extension host if there are changes in given change list. */ 84 | const reloadIfChanged = async (changes: utils.ChangeList) => { 85 | // ignoring direnv changes, they happen every change of file. 86 | changes = Object.keys(changes).filter((k) => !k.startsWith("DIRENV_")) 87 | if (changes.length > 0) { 88 | const action = await vscode.window.showWarningMessage(`${changes.length} variables changed, reload extensions?`, "Reload") 89 | if (action == "Reload") 90 | restartExtensionHost() 91 | } 92 | } 93 | 94 | const allow = () => { 95 | return command.allow() 96 | .then(() => direnvExport(false)) 97 | .then(applyDirenvJson) 98 | .then((changes) => { 99 | reloadIfChanged(changes) 100 | refreshIndicator() 101 | }) 102 | } 103 | 104 | const allowFromOption = (option) => { 105 | if (option === constants.vscode.extension.actions.allow) { 106 | return allow() 107 | } 108 | } 109 | 110 | const handleDirenvError = async (err) => { 111 | console.log("direnv error:", err) 112 | if (err.message.indexOf(`.envrc is blocked`) !== -1) { 113 | envrcBlockedMessage() 114 | } else 115 | if (err.message.indexOf(`.envrc not found`) !== -1) { 116 | console.log("No .envrc found, doing nothing.") 117 | } else 118 | { 119 | vscode.window.showErrorMessage(constants.messages.error(err)) 120 | } 121 | } 122 | 123 | // commands 124 | const reloadAsync = () => direnvExport(false) 125 | .then(applyDirenvJson) 126 | .then((changes) => { 127 | reloadIfChanged(changes) 128 | refreshIndicator() 129 | }) 130 | .catch(handleDirenvError) 131 | 132 | const viewEnvrc = () => handleError(vscode.commands.executeCommand('vscode.open', vscode.Uri.file(command.rcPath))) 133 | const viewThenAllow = () => viewEnvrc().then(() => 134 | vscode.window.showInformationMessage(constants.messages.assign.allow, 135 | constants.vscode.extension.actions.allow)).then(allowFromOption) 136 | 137 | // .envrc changes 138 | { 139 | const watcher = vscode.workspace.createFileSystemWatcher(command.rcPath, true) 140 | 141 | watcher.onDidChange((e) => vscode.window.showWarningMessage( 142 | `direnv: Your .envrc has changed.`, 143 | constants.vscode.extension.actions.allow).then(allowFromOption) 144 | ) 145 | watcher.onDidDelete((e) => vscode.window.showWarningMessage( 146 | `direnv: You deleted the .envrc. Would you like to revert to the old environment?`, 147 | constants.vscode.extension.actions.revert).then(revertFromOption) 148 | ) 149 | } 150 | 151 | // Actual initialization below 152 | 153 | // These would execute synchronously, this is just a nice syntax to do dependent operations. 154 | const changes = direnvExport(true).then(applyDirenvJson) 155 | 156 | export function activate(context: vscode.ExtensionContext) { 157 | context.subscriptions.push(vscode.commands.registerCommand('direnv.version', version)) 158 | context.subscriptions.push(vscode.commands.registerCommand('direnv.view', viewEnvrc)) 159 | context.subscriptions.push(vscode.commands.registerCommand('direnv.allow', allow)) 160 | context.subscriptions.push(vscode.commands.registerCommand('direnv.reload', reloadAsync)) 161 | 162 | // Now is the time to show errors (if any) and refresh (env var count) indicator 163 | changes 164 | .then(refreshIndicator) 165 | .catch(handleDirenvError) 166 | } 167 | 168 | export function deactivate(): void { 169 | /* okay to be empty */ 170 | } 171 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.15.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 15 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.14.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.3": 27 | version "0.4.3" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 29 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@humanwhocodes/config-array@^0.5.0": 42 | version "0.5.0" 43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 44 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 45 | dependencies: 46 | "@humanwhocodes/object-schema" "^1.2.0" 47 | debug "^4.1.1" 48 | minimatch "^3.0.4" 49 | 50 | "@humanwhocodes/object-schema@^1.2.0": 51 | version "1.2.0" 52 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" 53 | integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== 54 | 55 | "@nodelib/fs.scandir@2.1.5": 56 | version "2.1.5" 57 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 58 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 59 | dependencies: 60 | "@nodelib/fs.stat" "2.0.5" 61 | run-parallel "^1.1.9" 62 | 63 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 64 | version "2.0.5" 65 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 66 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 67 | 68 | "@nodelib/fs.walk@^1.2.3": 69 | version "1.2.8" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 71 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 72 | dependencies: 73 | "@nodelib/fs.scandir" "2.1.5" 74 | fastq "^1.6.0" 75 | 76 | "@types/json-schema@^7.0.7": 77 | version "7.0.9" 78 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" 79 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== 80 | 81 | "@types/node@^12.20.28": 82 | version "12.20.29" 83 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.29.tgz#f80f1e2156a376a23838d90905f68b816d486733" 84 | integrity sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw== 85 | 86 | "@types/vscode@^1.59.0": 87 | version "1.61.0" 88 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.61.0.tgz#c54335b6f84c19c69b1435b17cc0ce3b2cecfeec" 89 | integrity sha512-9k5Nwq45hkRwdfCFY+eKXeQQSbPoA114mF7U/4uJXRBJeGIO7MuJdhF1PnaDN+lllL9iKGQtd6FFXShBXMNaFg== 90 | 91 | "@typescript-eslint/eslint-plugin@^4.33.0": 92 | version "4.33.0" 93 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" 94 | integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== 95 | dependencies: 96 | "@typescript-eslint/experimental-utils" "4.33.0" 97 | "@typescript-eslint/scope-manager" "4.33.0" 98 | debug "^4.3.1" 99 | functional-red-black-tree "^1.0.1" 100 | ignore "^5.1.8" 101 | regexpp "^3.1.0" 102 | semver "^7.3.5" 103 | tsutils "^3.21.0" 104 | 105 | "@typescript-eslint/experimental-utils@4.33.0": 106 | version "4.33.0" 107 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" 108 | integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== 109 | dependencies: 110 | "@types/json-schema" "^7.0.7" 111 | "@typescript-eslint/scope-manager" "4.33.0" 112 | "@typescript-eslint/types" "4.33.0" 113 | "@typescript-eslint/typescript-estree" "4.33.0" 114 | eslint-scope "^5.1.1" 115 | eslint-utils "^3.0.0" 116 | 117 | "@typescript-eslint/parser@^4.33.0": 118 | version "4.33.0" 119 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" 120 | integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== 121 | dependencies: 122 | "@typescript-eslint/scope-manager" "4.33.0" 123 | "@typescript-eslint/types" "4.33.0" 124 | "@typescript-eslint/typescript-estree" "4.33.0" 125 | debug "^4.3.1" 126 | 127 | "@typescript-eslint/scope-manager@4.33.0": 128 | version "4.33.0" 129 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" 130 | integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== 131 | dependencies: 132 | "@typescript-eslint/types" "4.33.0" 133 | "@typescript-eslint/visitor-keys" "4.33.0" 134 | 135 | "@typescript-eslint/types@4.33.0": 136 | version "4.33.0" 137 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" 138 | integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== 139 | 140 | "@typescript-eslint/typescript-estree@4.33.0": 141 | version "4.33.0" 142 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" 143 | integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== 144 | dependencies: 145 | "@typescript-eslint/types" "4.33.0" 146 | "@typescript-eslint/visitor-keys" "4.33.0" 147 | debug "^4.3.1" 148 | globby "^11.0.3" 149 | is-glob "^4.0.1" 150 | semver "^7.3.5" 151 | tsutils "^3.21.0" 152 | 153 | "@typescript-eslint/visitor-keys@4.33.0": 154 | version "4.33.0" 155 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" 156 | integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== 157 | dependencies: 158 | "@typescript-eslint/types" "4.33.0" 159 | eslint-visitor-keys "^2.0.0" 160 | 161 | acorn-jsx@^5.3.1: 162 | version "5.3.2" 163 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 164 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 165 | 166 | acorn@^7.4.0: 167 | version "7.4.1" 168 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 169 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 170 | 171 | ajv@^6.10.0, ajv@^6.12.4: 172 | version "6.12.6" 173 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 174 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 175 | dependencies: 176 | fast-deep-equal "^3.1.1" 177 | fast-json-stable-stringify "^2.0.0" 178 | json-schema-traverse "^0.4.1" 179 | uri-js "^4.2.2" 180 | 181 | ajv@^8.0.1: 182 | version "8.6.3" 183 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" 184 | integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== 185 | dependencies: 186 | fast-deep-equal "^3.1.1" 187 | json-schema-traverse "^1.0.0" 188 | require-from-string "^2.0.2" 189 | uri-js "^4.2.2" 190 | 191 | ansi-colors@^4.1.1: 192 | version "4.1.1" 193 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 194 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 195 | 196 | ansi-regex@^5.0.1: 197 | version "5.0.1" 198 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 199 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 200 | 201 | ansi-styles@^3.2.1: 202 | version "3.2.1" 203 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 204 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 205 | dependencies: 206 | color-convert "^1.9.0" 207 | 208 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 209 | version "4.3.0" 210 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 211 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 212 | dependencies: 213 | color-convert "^2.0.1" 214 | 215 | argparse@^1.0.7: 216 | version "1.0.10" 217 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 218 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 219 | dependencies: 220 | sprintf-js "~1.0.2" 221 | 222 | array-union@^2.1.0: 223 | version "2.1.0" 224 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 225 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 226 | 227 | astral-regex@^2.0.0: 228 | version "2.0.0" 229 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 230 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 231 | 232 | azure-devops-node-api@^11.0.1: 233 | version "11.0.1" 234 | resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz#b7ec4783230e1de8fc972b23effe7ed2ebac17ff" 235 | integrity sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A== 236 | dependencies: 237 | tunnel "0.0.6" 238 | typed-rest-client "^1.8.4" 239 | 240 | balanced-match@^1.0.0: 241 | version "1.0.2" 242 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 243 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 244 | 245 | boolbase@^1.0.0: 246 | version "1.0.0" 247 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 248 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= 249 | 250 | brace-expansion@^1.1.7: 251 | version "1.1.11" 252 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 253 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 254 | dependencies: 255 | balanced-match "^1.0.0" 256 | concat-map "0.0.1" 257 | 258 | braces@^3.0.1: 259 | version "3.0.2" 260 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 261 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 262 | dependencies: 263 | fill-range "^7.0.1" 264 | 265 | buffer-crc32@~0.2.3: 266 | version "0.2.13" 267 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 268 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 269 | 270 | call-bind@^1.0.0: 271 | version "1.0.2" 272 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 273 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 274 | dependencies: 275 | function-bind "^1.1.1" 276 | get-intrinsic "^1.0.2" 277 | 278 | callsites@^3.0.0: 279 | version "3.1.0" 280 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 281 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 282 | 283 | chalk@^2.0.0, chalk@^2.4.2: 284 | version "2.4.2" 285 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 286 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 287 | dependencies: 288 | ansi-styles "^3.2.1" 289 | escape-string-regexp "^1.0.5" 290 | supports-color "^5.3.0" 291 | 292 | chalk@^4.0.0: 293 | version "4.1.2" 294 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 295 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 296 | dependencies: 297 | ansi-styles "^4.1.0" 298 | supports-color "^7.1.0" 299 | 300 | cheerio-select@^1.5.0: 301 | version "1.5.0" 302 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" 303 | integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== 304 | dependencies: 305 | css-select "^4.1.3" 306 | css-what "^5.0.1" 307 | domelementtype "^2.2.0" 308 | domhandler "^4.2.0" 309 | domutils "^2.7.0" 310 | 311 | cheerio@^1.0.0-rc.9: 312 | version "1.0.0-rc.10" 313 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" 314 | integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== 315 | dependencies: 316 | cheerio-select "^1.5.0" 317 | dom-serializer "^1.3.2" 318 | domhandler "^4.2.0" 319 | htmlparser2 "^6.1.0" 320 | parse5 "^6.0.1" 321 | parse5-htmlparser2-tree-adapter "^6.0.1" 322 | tslib "^2.2.0" 323 | 324 | color-convert@^1.9.0: 325 | version "1.9.3" 326 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 327 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 328 | dependencies: 329 | color-name "1.1.3" 330 | 331 | color-convert@^2.0.1: 332 | version "2.0.1" 333 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 334 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 335 | dependencies: 336 | color-name "~1.1.4" 337 | 338 | color-name@1.1.3: 339 | version "1.1.3" 340 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 341 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 342 | 343 | color-name@~1.1.4: 344 | version "1.1.4" 345 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 346 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 347 | 348 | commander@^6.1.0: 349 | version "6.2.1" 350 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 351 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 352 | 353 | concat-map@0.0.1: 354 | version "0.0.1" 355 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 356 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 357 | 358 | cross-spawn@^7.0.2: 359 | version "7.0.3" 360 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 361 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 362 | dependencies: 363 | path-key "^3.1.0" 364 | shebang-command "^2.0.0" 365 | which "^2.0.1" 366 | 367 | css-select@^4.1.3: 368 | version "4.1.3" 369 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" 370 | integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== 371 | dependencies: 372 | boolbase "^1.0.0" 373 | css-what "^5.0.0" 374 | domhandler "^4.2.0" 375 | domutils "^2.6.0" 376 | nth-check "^2.0.0" 377 | 378 | css-what@^5.0.0, css-what@^5.0.1: 379 | version "5.1.0" 380 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" 381 | integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== 382 | 383 | debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: 384 | version "4.3.2" 385 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 386 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 387 | dependencies: 388 | ms "2.1.2" 389 | 390 | deep-is@^0.1.3: 391 | version "0.1.4" 392 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 393 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 394 | 395 | denodeify@^1.2.1: 396 | version "1.2.1" 397 | resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" 398 | integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= 399 | 400 | dir-glob@^3.0.1: 401 | version "3.0.1" 402 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 403 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 404 | dependencies: 405 | path-type "^4.0.0" 406 | 407 | doctrine@^3.0.0: 408 | version "3.0.0" 409 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 410 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 411 | dependencies: 412 | esutils "^2.0.2" 413 | 414 | dom-serializer@^1.0.1, dom-serializer@^1.3.2: 415 | version "1.3.2" 416 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" 417 | integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== 418 | dependencies: 419 | domelementtype "^2.0.1" 420 | domhandler "^4.2.0" 421 | entities "^2.0.0" 422 | 423 | domelementtype@^2.0.1, domelementtype@^2.2.0: 424 | version "2.2.0" 425 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" 426 | integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== 427 | 428 | domhandler@^4.0.0, domhandler@^4.2.0: 429 | version "4.2.2" 430 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" 431 | integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== 432 | dependencies: 433 | domelementtype "^2.2.0" 434 | 435 | domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: 436 | version "2.8.0" 437 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" 438 | integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== 439 | dependencies: 440 | dom-serializer "^1.0.1" 441 | domelementtype "^2.2.0" 442 | domhandler "^4.2.0" 443 | 444 | emoji-regex@^8.0.0: 445 | version "8.0.0" 446 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 447 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 448 | 449 | enquirer@^2.3.5: 450 | version "2.3.6" 451 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 452 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 453 | dependencies: 454 | ansi-colors "^4.1.1" 455 | 456 | entities@^2.0.0: 457 | version "2.2.0" 458 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" 459 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 460 | 461 | entities@~2.0.0: 462 | version "2.0.3" 463 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" 464 | integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== 465 | 466 | escape-string-regexp@^1.0.5: 467 | version "1.0.5" 468 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 469 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 470 | 471 | escape-string-regexp@^4.0.0: 472 | version "4.0.0" 473 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 474 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 475 | 476 | eslint-scope@^5.1.1: 477 | version "5.1.1" 478 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 479 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 480 | dependencies: 481 | esrecurse "^4.3.0" 482 | estraverse "^4.1.1" 483 | 484 | eslint-utils@^2.1.0: 485 | version "2.1.0" 486 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 487 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 488 | dependencies: 489 | eslint-visitor-keys "^1.1.0" 490 | 491 | eslint-utils@^3.0.0: 492 | version "3.0.0" 493 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 494 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 495 | dependencies: 496 | eslint-visitor-keys "^2.0.0" 497 | 498 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 499 | version "1.3.0" 500 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 501 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 502 | 503 | eslint-visitor-keys@^2.0.0: 504 | version "2.1.0" 505 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 506 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 507 | 508 | eslint@^7.32.0: 509 | version "7.32.0" 510 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 511 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 512 | dependencies: 513 | "@babel/code-frame" "7.12.11" 514 | "@eslint/eslintrc" "^0.4.3" 515 | "@humanwhocodes/config-array" "^0.5.0" 516 | ajv "^6.10.0" 517 | chalk "^4.0.0" 518 | cross-spawn "^7.0.2" 519 | debug "^4.0.1" 520 | doctrine "^3.0.0" 521 | enquirer "^2.3.5" 522 | escape-string-regexp "^4.0.0" 523 | eslint-scope "^5.1.1" 524 | eslint-utils "^2.1.0" 525 | eslint-visitor-keys "^2.0.0" 526 | espree "^7.3.1" 527 | esquery "^1.4.0" 528 | esutils "^2.0.2" 529 | fast-deep-equal "^3.1.3" 530 | file-entry-cache "^6.0.1" 531 | functional-red-black-tree "^1.0.1" 532 | glob-parent "^5.1.2" 533 | globals "^13.6.0" 534 | ignore "^4.0.6" 535 | import-fresh "^3.0.0" 536 | imurmurhash "^0.1.4" 537 | is-glob "^4.0.0" 538 | js-yaml "^3.13.1" 539 | json-stable-stringify-without-jsonify "^1.0.1" 540 | levn "^0.4.1" 541 | lodash.merge "^4.6.2" 542 | minimatch "^3.0.4" 543 | natural-compare "^1.4.0" 544 | optionator "^0.9.1" 545 | progress "^2.0.0" 546 | regexpp "^3.1.0" 547 | semver "^7.2.1" 548 | strip-ansi "^6.0.0" 549 | strip-json-comments "^3.1.0" 550 | table "^6.0.9" 551 | text-table "^0.2.0" 552 | v8-compile-cache "^2.0.3" 553 | 554 | espree@^7.3.0, espree@^7.3.1: 555 | version "7.3.1" 556 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 557 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 558 | dependencies: 559 | acorn "^7.4.0" 560 | acorn-jsx "^5.3.1" 561 | eslint-visitor-keys "^1.3.0" 562 | 563 | esprima@^4.0.0: 564 | version "4.0.1" 565 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 566 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 567 | 568 | esquery@^1.4.0: 569 | version "1.4.0" 570 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 571 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 572 | dependencies: 573 | estraverse "^5.1.0" 574 | 575 | esrecurse@^4.3.0: 576 | version "4.3.0" 577 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 578 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 579 | dependencies: 580 | estraverse "^5.2.0" 581 | 582 | estraverse@^4.1.1: 583 | version "4.3.0" 584 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 585 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 586 | 587 | estraverse@^5.1.0, estraverse@^5.2.0: 588 | version "5.2.0" 589 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 590 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 591 | 592 | esutils@^2.0.2: 593 | version "2.0.3" 594 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 595 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 596 | 597 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 598 | version "3.1.3" 599 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 600 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 601 | 602 | fast-glob@^3.1.1: 603 | version "3.2.7" 604 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 605 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 606 | dependencies: 607 | "@nodelib/fs.stat" "^2.0.2" 608 | "@nodelib/fs.walk" "^1.2.3" 609 | glob-parent "^5.1.2" 610 | merge2 "^1.3.0" 611 | micromatch "^4.0.4" 612 | 613 | fast-json-stable-stringify@^2.0.0: 614 | version "2.1.0" 615 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 616 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 617 | 618 | fast-levenshtein@^2.0.6: 619 | version "2.0.6" 620 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 621 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 622 | 623 | fastq@^1.6.0: 624 | version "1.13.0" 625 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 626 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 627 | dependencies: 628 | reusify "^1.0.4" 629 | 630 | fd-slicer@~1.1.0: 631 | version "1.1.0" 632 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 633 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 634 | dependencies: 635 | pend "~1.2.0" 636 | 637 | file-entry-cache@^6.0.1: 638 | version "6.0.1" 639 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 640 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 641 | dependencies: 642 | flat-cache "^3.0.4" 643 | 644 | fill-range@^7.0.1: 645 | version "7.0.1" 646 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 647 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 648 | dependencies: 649 | to-regex-range "^5.0.1" 650 | 651 | flat-cache@^3.0.4: 652 | version "3.0.4" 653 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 654 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 655 | dependencies: 656 | flatted "^3.1.0" 657 | rimraf "^3.0.2" 658 | 659 | flatted@^3.1.0: 660 | version "3.2.2" 661 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" 662 | integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== 663 | 664 | fs.realpath@^1.0.0: 665 | version "1.0.0" 666 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 667 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 668 | 669 | function-bind@^1.1.1: 670 | version "1.1.1" 671 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 672 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 673 | 674 | functional-red-black-tree@^1.0.1: 675 | version "1.0.1" 676 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 677 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 678 | 679 | get-intrinsic@^1.0.2: 680 | version "1.1.1" 681 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 682 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 683 | dependencies: 684 | function-bind "^1.1.1" 685 | has "^1.0.3" 686 | has-symbols "^1.0.1" 687 | 688 | glob-parent@^5.1.2: 689 | version "5.1.2" 690 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 691 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 692 | dependencies: 693 | is-glob "^4.0.1" 694 | 695 | glob@^7.0.6, glob@^7.1.3: 696 | version "7.2.0" 697 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 698 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 699 | dependencies: 700 | fs.realpath "^1.0.0" 701 | inflight "^1.0.4" 702 | inherits "2" 703 | minimatch "^3.0.4" 704 | once "^1.3.0" 705 | path-is-absolute "^1.0.0" 706 | 707 | globals@^13.6.0, globals@^13.9.0: 708 | version "13.11.0" 709 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" 710 | integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== 711 | dependencies: 712 | type-fest "^0.20.2" 713 | 714 | globby@^11.0.3: 715 | version "11.0.4" 716 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" 717 | integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== 718 | dependencies: 719 | array-union "^2.1.0" 720 | dir-glob "^3.0.1" 721 | fast-glob "^3.1.1" 722 | ignore "^5.1.4" 723 | merge2 "^1.3.0" 724 | slash "^3.0.0" 725 | 726 | has-flag@^3.0.0: 727 | version "3.0.0" 728 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 729 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 730 | 731 | has-flag@^4.0.0: 732 | version "4.0.0" 733 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 734 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 735 | 736 | has-symbols@^1.0.1: 737 | version "1.0.2" 738 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 739 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 740 | 741 | has@^1.0.3: 742 | version "1.0.3" 743 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 744 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 745 | dependencies: 746 | function-bind "^1.1.1" 747 | 748 | hosted-git-info@^4.0.2: 749 | version "4.0.2" 750 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" 751 | integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== 752 | dependencies: 753 | lru-cache "^6.0.0" 754 | 755 | htmlparser2@^6.1.0: 756 | version "6.1.0" 757 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" 758 | integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== 759 | dependencies: 760 | domelementtype "^2.0.1" 761 | domhandler "^4.0.0" 762 | domutils "^2.5.2" 763 | entities "^2.0.0" 764 | 765 | ignore@^4.0.6: 766 | version "4.0.6" 767 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 768 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 769 | 770 | ignore@^5.1.4, ignore@^5.1.8: 771 | version "5.1.8" 772 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 773 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 774 | 775 | import-fresh@^3.0.0, import-fresh@^3.2.1: 776 | version "3.3.0" 777 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 778 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 779 | dependencies: 780 | parent-module "^1.0.0" 781 | resolve-from "^4.0.0" 782 | 783 | imurmurhash@^0.1.4: 784 | version "0.1.4" 785 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 786 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 787 | 788 | inflight@^1.0.4: 789 | version "1.0.6" 790 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 791 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 792 | dependencies: 793 | once "^1.3.0" 794 | wrappy "1" 795 | 796 | inherits@2: 797 | version "2.0.4" 798 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 799 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 800 | 801 | is-extglob@^2.1.1: 802 | version "2.1.1" 803 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 804 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 805 | 806 | is-fullwidth-code-point@^3.0.0: 807 | version "3.0.0" 808 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 809 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 810 | 811 | is-glob@^4.0.0, is-glob@^4.0.1: 812 | version "4.0.3" 813 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 814 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 815 | dependencies: 816 | is-extglob "^2.1.1" 817 | 818 | is-number@^7.0.0: 819 | version "7.0.0" 820 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 821 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 822 | 823 | isexe@^2.0.0: 824 | version "2.0.0" 825 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 826 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 827 | 828 | js-tokens@^4.0.0: 829 | version "4.0.0" 830 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 831 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 832 | 833 | js-yaml@^3.13.1: 834 | version "3.14.1" 835 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 836 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 837 | dependencies: 838 | argparse "^1.0.7" 839 | esprima "^4.0.0" 840 | 841 | json-schema-traverse@^0.4.1: 842 | version "0.4.1" 843 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 844 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 845 | 846 | json-schema-traverse@^1.0.0: 847 | version "1.0.0" 848 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 849 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 850 | 851 | json-stable-stringify-without-jsonify@^1.0.1: 852 | version "1.0.1" 853 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 854 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 855 | 856 | leven@^3.1.0: 857 | version "3.1.0" 858 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 859 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 860 | 861 | levn@^0.4.1: 862 | version "0.4.1" 863 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 864 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 865 | dependencies: 866 | prelude-ls "^1.2.1" 867 | type-check "~0.4.0" 868 | 869 | linkify-it@^2.0.0: 870 | version "2.2.0" 871 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" 872 | integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== 873 | dependencies: 874 | uc.micro "^1.0.1" 875 | 876 | lodash.clonedeep@^4.5.0: 877 | version "4.5.0" 878 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 879 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 880 | 881 | lodash.merge@^4.6.2: 882 | version "4.6.2" 883 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 884 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 885 | 886 | lodash.truncate@^4.4.2: 887 | version "4.4.2" 888 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 889 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 890 | 891 | lodash@^4.17.15: 892 | version "4.17.21" 893 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 894 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 895 | 896 | lru-cache@^6.0.0: 897 | version "6.0.0" 898 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 899 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 900 | dependencies: 901 | yallist "^4.0.0" 902 | 903 | markdown-it@^10.0.0: 904 | version "10.0.0" 905 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" 906 | integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== 907 | dependencies: 908 | argparse "^1.0.7" 909 | entities "~2.0.0" 910 | linkify-it "^2.0.0" 911 | mdurl "^1.0.1" 912 | uc.micro "^1.0.5" 913 | 914 | mdurl@^1.0.1: 915 | version "1.0.1" 916 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 917 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 918 | 919 | merge2@^1.3.0: 920 | version "1.4.1" 921 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 922 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 923 | 924 | micromatch@^4.0.4: 925 | version "4.0.4" 926 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 927 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 928 | dependencies: 929 | braces "^3.0.1" 930 | picomatch "^2.2.3" 931 | 932 | mime@^1.3.4: 933 | version "1.6.0" 934 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 935 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 936 | 937 | minimatch@^3.0.3, minimatch@^3.0.4: 938 | version "3.0.4" 939 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 940 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 941 | dependencies: 942 | brace-expansion "^1.1.7" 943 | 944 | ms@2.1.2: 945 | version "2.1.2" 946 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 947 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 948 | 949 | mute-stream@~0.0.4: 950 | version "0.0.8" 951 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 952 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 953 | 954 | natural-compare@^1.4.0: 955 | version "1.4.0" 956 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 957 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 958 | 959 | nth-check@^2.0.0: 960 | version "2.0.1" 961 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" 962 | integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== 963 | dependencies: 964 | boolbase "^1.0.0" 965 | 966 | object-inspect@^1.9.0: 967 | version "1.11.0" 968 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" 969 | integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== 970 | 971 | once@^1.3.0: 972 | version "1.4.0" 973 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 974 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 975 | dependencies: 976 | wrappy "1" 977 | 978 | optionator@^0.9.1: 979 | version "0.9.1" 980 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 981 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 982 | dependencies: 983 | deep-is "^0.1.3" 984 | fast-levenshtein "^2.0.6" 985 | levn "^0.4.1" 986 | prelude-ls "^1.2.1" 987 | type-check "^0.4.0" 988 | word-wrap "^1.2.3" 989 | 990 | os-homedir@^1.0.0: 991 | version "1.0.2" 992 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 993 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 994 | 995 | os-tmpdir@^1.0.0: 996 | version "1.0.2" 997 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 998 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 999 | 1000 | osenv@^0.1.3: 1001 | version "0.1.5" 1002 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1003 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 1004 | dependencies: 1005 | os-homedir "^1.0.0" 1006 | os-tmpdir "^1.0.0" 1007 | 1008 | parent-module@^1.0.0: 1009 | version "1.0.1" 1010 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1011 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1012 | dependencies: 1013 | callsites "^3.0.0" 1014 | 1015 | parse-semver@^1.1.1: 1016 | version "1.1.1" 1017 | resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" 1018 | integrity sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= 1019 | dependencies: 1020 | semver "^5.1.0" 1021 | 1022 | parse5-htmlparser2-tree-adapter@^6.0.1: 1023 | version "6.0.1" 1024 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" 1025 | integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== 1026 | dependencies: 1027 | parse5 "^6.0.1" 1028 | 1029 | parse5@^6.0.1: 1030 | version "6.0.1" 1031 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 1032 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 1033 | 1034 | path-is-absolute@^1.0.0: 1035 | version "1.0.1" 1036 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1037 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1038 | 1039 | path-key@^3.1.0: 1040 | version "3.1.1" 1041 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1042 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1043 | 1044 | path-type@^4.0.0: 1045 | version "4.0.0" 1046 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1047 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1048 | 1049 | pend@~1.2.0: 1050 | version "1.2.0" 1051 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1052 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1053 | 1054 | picomatch@^2.2.3: 1055 | version "2.3.0" 1056 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1057 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1058 | 1059 | prelude-ls@^1.2.1: 1060 | version "1.2.1" 1061 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1062 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1063 | 1064 | progress@^2.0.0: 1065 | version "2.0.3" 1066 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1067 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1068 | 1069 | punycode@^2.1.0: 1070 | version "2.1.1" 1071 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1072 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1073 | 1074 | qs@^6.9.1: 1075 | version "6.10.1" 1076 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" 1077 | integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== 1078 | dependencies: 1079 | side-channel "^1.0.4" 1080 | 1081 | queue-microtask@^1.2.2: 1082 | version "1.2.3" 1083 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1084 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1085 | 1086 | read@^1.0.7: 1087 | version "1.0.7" 1088 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1089 | integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= 1090 | dependencies: 1091 | mute-stream "~0.0.4" 1092 | 1093 | regexpp@^3.1.0: 1094 | version "3.2.0" 1095 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1096 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1097 | 1098 | require-from-string@^2.0.2: 1099 | version "2.0.2" 1100 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1101 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1102 | 1103 | resolve-from@^4.0.0: 1104 | version "4.0.0" 1105 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1106 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1107 | 1108 | reusify@^1.0.4: 1109 | version "1.0.4" 1110 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1111 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1112 | 1113 | rimraf@^3.0.0, rimraf@^3.0.2: 1114 | version "3.0.2" 1115 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1116 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1117 | dependencies: 1118 | glob "^7.1.3" 1119 | 1120 | run-parallel@^1.1.9: 1121 | version "1.2.0" 1122 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1123 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1124 | dependencies: 1125 | queue-microtask "^1.2.2" 1126 | 1127 | sax@>=0.6.0: 1128 | version "1.2.4" 1129 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1130 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1131 | 1132 | semver@^5.1.0: 1133 | version "5.7.1" 1134 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1135 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1136 | 1137 | semver@^7.2.1, semver@^7.3.5: 1138 | version "7.3.5" 1139 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1140 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1141 | dependencies: 1142 | lru-cache "^6.0.0" 1143 | 1144 | shebang-command@^2.0.0: 1145 | version "2.0.0" 1146 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1147 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1148 | dependencies: 1149 | shebang-regex "^3.0.0" 1150 | 1151 | shebang-regex@^3.0.0: 1152 | version "3.0.0" 1153 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1154 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1155 | 1156 | side-channel@^1.0.4: 1157 | version "1.0.4" 1158 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1159 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1160 | dependencies: 1161 | call-bind "^1.0.0" 1162 | get-intrinsic "^1.0.2" 1163 | object-inspect "^1.9.0" 1164 | 1165 | slash@^3.0.0: 1166 | version "3.0.0" 1167 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1168 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1169 | 1170 | slice-ansi@^4.0.0: 1171 | version "4.0.0" 1172 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1173 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1174 | dependencies: 1175 | ansi-styles "^4.0.0" 1176 | astral-regex "^2.0.0" 1177 | is-fullwidth-code-point "^3.0.0" 1178 | 1179 | sprintf-js@~1.0.2: 1180 | version "1.0.3" 1181 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1182 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1183 | 1184 | string-width@^4.2.3: 1185 | version "4.2.3" 1186 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1187 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1188 | dependencies: 1189 | emoji-regex "^8.0.0" 1190 | is-fullwidth-code-point "^3.0.0" 1191 | strip-ansi "^6.0.1" 1192 | 1193 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1194 | version "6.0.1" 1195 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1196 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1197 | dependencies: 1198 | ansi-regex "^5.0.1" 1199 | 1200 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1201 | version "3.1.1" 1202 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1203 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1204 | 1205 | supports-color@^5.3.0: 1206 | version "5.5.0" 1207 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1208 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1209 | dependencies: 1210 | has-flag "^3.0.0" 1211 | 1212 | supports-color@^7.1.0: 1213 | version "7.2.0" 1214 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1215 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1216 | dependencies: 1217 | has-flag "^4.0.0" 1218 | 1219 | table@^6.0.9: 1220 | version "6.7.2" 1221 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" 1222 | integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== 1223 | dependencies: 1224 | ajv "^8.0.1" 1225 | lodash.clonedeep "^4.5.0" 1226 | lodash.truncate "^4.4.2" 1227 | slice-ansi "^4.0.0" 1228 | string-width "^4.2.3" 1229 | strip-ansi "^6.0.1" 1230 | 1231 | text-table@^0.2.0: 1232 | version "0.2.0" 1233 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1234 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1235 | 1236 | tmp@^0.2.1: 1237 | version "0.2.1" 1238 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1239 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1240 | dependencies: 1241 | rimraf "^3.0.0" 1242 | 1243 | to-regex-range@^5.0.1: 1244 | version "5.0.1" 1245 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1246 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1247 | dependencies: 1248 | is-number "^7.0.0" 1249 | 1250 | tslib@^1.8.1: 1251 | version "1.14.1" 1252 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1253 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1254 | 1255 | tslib@^2.2.0: 1256 | version "2.3.1" 1257 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 1258 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1259 | 1260 | tsutils@^3.21.0: 1261 | version "3.21.0" 1262 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1263 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1264 | dependencies: 1265 | tslib "^1.8.1" 1266 | 1267 | tunnel@0.0.6: 1268 | version "0.0.6" 1269 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 1270 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 1271 | 1272 | type-check@^0.4.0, type-check@~0.4.0: 1273 | version "0.4.0" 1274 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1275 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1276 | dependencies: 1277 | prelude-ls "^1.2.1" 1278 | 1279 | type-fest@^0.20.2: 1280 | version "0.20.2" 1281 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1282 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1283 | 1284 | typed-rest-client@^1.8.4: 1285 | version "1.8.6" 1286 | resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" 1287 | integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== 1288 | dependencies: 1289 | qs "^6.9.1" 1290 | tunnel "0.0.6" 1291 | underscore "^1.12.1" 1292 | 1293 | typescript@^4.4.3: 1294 | version "4.4.4" 1295 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" 1296 | integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== 1297 | 1298 | uc.micro@^1.0.1, uc.micro@^1.0.5: 1299 | version "1.0.6" 1300 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 1301 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 1302 | 1303 | underscore@^1.12.1: 1304 | version "1.13.1" 1305 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" 1306 | integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== 1307 | 1308 | uri-js@^4.2.2: 1309 | version "4.4.1" 1310 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1311 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1312 | dependencies: 1313 | punycode "^2.1.0" 1314 | 1315 | url-join@^1.1.0: 1316 | version "1.1.0" 1317 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" 1318 | integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= 1319 | 1320 | v8-compile-cache@^2.0.3: 1321 | version "2.3.0" 1322 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1323 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1324 | 1325 | vsce@^1.100.1: 1326 | version "1.100.1" 1327 | resolved "https://registry.yarnpkg.com/vsce/-/vsce-1.100.1.tgz#6ea04464abe3ccf3a5a8a05de25692f1780b1104" 1328 | integrity sha512-1VjLyse5g6e2eQ6jUpslu7IDq44velwF8Jy8s7ePdwGNuG8EzfmaOfVyig3ZSMJ0l8DiJmZllx5bRAB4RMdnHg== 1329 | dependencies: 1330 | azure-devops-node-api "^11.0.1" 1331 | chalk "^2.4.2" 1332 | cheerio "^1.0.0-rc.9" 1333 | commander "^6.1.0" 1334 | denodeify "^1.2.1" 1335 | glob "^7.0.6" 1336 | hosted-git-info "^4.0.2" 1337 | leven "^3.1.0" 1338 | lodash "^4.17.15" 1339 | markdown-it "^10.0.0" 1340 | mime "^1.3.4" 1341 | minimatch "^3.0.3" 1342 | osenv "^0.1.3" 1343 | parse-semver "^1.1.1" 1344 | read "^1.0.7" 1345 | semver "^5.1.0" 1346 | tmp "^0.2.1" 1347 | typed-rest-client "^1.8.4" 1348 | url-join "^1.1.0" 1349 | xml2js "^0.4.23" 1350 | yauzl "^2.3.1" 1351 | yazl "^2.2.2" 1352 | 1353 | which@^2.0.1: 1354 | version "2.0.2" 1355 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1356 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1357 | dependencies: 1358 | isexe "^2.0.0" 1359 | 1360 | word-wrap@^1.2.3: 1361 | version "1.2.3" 1362 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1363 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1364 | 1365 | wrappy@1: 1366 | version "1.0.2" 1367 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1368 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1369 | 1370 | xml2js@^0.4.23: 1371 | version "0.4.23" 1372 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" 1373 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 1374 | dependencies: 1375 | sax ">=0.6.0" 1376 | xmlbuilder "~11.0.0" 1377 | 1378 | xmlbuilder@~11.0.0: 1379 | version "11.0.1" 1380 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1381 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1382 | 1383 | yallist@^4.0.0: 1384 | version "4.0.0" 1385 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1386 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1387 | 1388 | yauzl@^2.3.1: 1389 | version "2.10.0" 1390 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1391 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1392 | dependencies: 1393 | buffer-crc32 "~0.2.3" 1394 | fd-slicer "~1.1.0" 1395 | 1396 | yazl@^2.2.2: 1397 | version "2.5.1" 1398 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" 1399 | integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== 1400 | dependencies: 1401 | buffer-crc32 "~0.2.3" 1402 | --------------------------------------------------------------------------------