├── .gitignore ├── action.gif ├── .vscodeignore ├── .vscode ├── settings.json ├── launch.json └── tasks.json ├── tsconfig.json ├── src ├── types.ts ├── extension.ts ├── packageJson.ts └── init.ts ├── test ├── extension.test.ts └── index.ts ├── vsc-extension-quickstart.md ├── package.json ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | package-lock.json 4 | -------------------------------------------------------------------------------- /action.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seunlanlege/vscode-action-buttons/HEAD/action.gif -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | test/** 5 | src/** 6 | **/*.map 7 | .gitignore 8 | tsconfig.json 9 | vsc-extension-quickstart.md 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | } 9 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "." 11 | }, 12 | "exclude": [ 13 | "node_modules", 14 | ".vscode-test" 15 | ] 16 | } -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export interface CommandOpts { 2 | cwd?: string 3 | saveAll?: boolean 4 | command: string 5 | singleInstance?: boolean 6 | name: string 7 | tooltip: string 8 | color: string 9 | focus?: boolean 10 | useVsCodeApi?: boolean 11 | args?: string[] 12 | } 13 | 14 | export interface ButtonOpts { 15 | command: string 16 | tooltip: string 17 | name: string 18 | color: string 19 | } -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import * as vscode from 'vscode' 3 | import init from './init' 4 | 5 | export function activate(context: vscode.ExtensionContext) { 6 | init(context) 7 | 8 | let disposable = vscode.commands.registerCommand( 9 | 'extension.refreshButtons', 10 | () => init(context) 11 | ) 12 | 13 | context.subscriptions.push(disposable) 14 | } 15 | 16 | // this method is called when your extension is deactivated 17 | export function deactivate() {} 18 | -------------------------------------------------------------------------------- /src/packageJson.ts: -------------------------------------------------------------------------------- 1 | import { CommandOpts } from './types' 2 | import { workspace } from 'vscode' 3 | 4 | export const getPackageJson = async (): Promise => 5 | new Promise(resolve => { 6 | const cwd = workspace.rootPath 7 | 8 | try { 9 | const packageJson = require(`${cwd}/package.json`) 10 | 11 | resolve(packageJson) 12 | } catch (e) { 13 | resolve(undefined) 14 | } 15 | }) 16 | 17 | export const buildConfigFromPackageJson = async (defaultColor: string) => { 18 | const pkg = await getPackageJson() 19 | if (!pkg) { 20 | return [] 21 | } 22 | const { scripts } = pkg 23 | 24 | return Object.keys(scripts).map(key => ({ 25 | command: `npm run ${key}`, 26 | color: defaultColor || 'white', 27 | name: key, 28 | singleInstance: true 29 | })) as CommandOpts[] 30 | } 31 | -------------------------------------------------------------------------------- /test/extension.test.ts: -------------------------------------------------------------------------------- 1 | // 2 | // Note: This example test is leveraging the Mocha test framework. 3 | // Please refer to their documentation on https://mochajs.org/ for help. 4 | // 5 | 6 | // The module 'assert' provides assertion methods from node 7 | import * as assert from 'assert'; 8 | 9 | // You can import and use all API from the 'vscode' module 10 | // as well as import your extension to test it 11 | import * as vscode from 'vscode'; 12 | import * as myExtension from '../src/extension'; 13 | 14 | // Defines a Mocha test suite to group tests of similar kind together 15 | suite("Extension Tests", () => { 16 | 17 | // Defines a Mocha unit test 18 | test("Something 1", () => { 19 | assert.equal(-1, [1, 2, 3].indexOf(5)); 20 | assert.equal(-1, [1, 2, 3].indexOf(0)); 21 | }); 22 | }); -------------------------------------------------------------------------------- /test/index.ts: -------------------------------------------------------------------------------- 1 | // 2 | // PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING 3 | // 4 | // This file is providing the test runner to use when running extension tests. 5 | // By default the test runner in use is Mocha based. 6 | // 7 | // You can provide your own test runner if you want to override it by exporting 8 | // a function run(testRoot: string, clb: (error:Error) => void) that the extension 9 | // host can call to run the tests. The test runner is expected to use console.log 10 | // to report the results back to the caller. When the tests are finished, return 11 | // a possible error to the callback or null if none. 12 | 13 | var testRunner = require('vscode/lib/testrunner'); 14 | 15 | // You can directly control Mocha options by uncommenting the following lines 16 | // See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info 17 | testRunner.configure({ 18 | ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.) 19 | useColors: true // colored output from test results 20 | }); 21 | 22 | module.exports = testRunner; -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.1.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/**/*.js" ], 14 | "preLaunchTask": "npm" 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/**/*.js" ], 25 | "preLaunchTask": "npm" 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // Available variables which can be used inside of strings. 2 | // ${workspaceRoot}: the root folder of the team 3 | // ${file}: the current opened file 4 | // ${fileBasename}: the current opened file's basename 5 | // ${fileDirname}: the current opened file's dirname 6 | // ${fileExtname}: the current opened file's extension 7 | // ${cwd}: the current working directory of the spawned process 8 | 9 | // A task runner that calls a custom npm script that compiles the extension. 10 | { 11 | "version": "2.0.0", 12 | 13 | // we want to run npm 14 | "command": "npm", 15 | 16 | // we run the custom script "compile" as defined in package.json 17 | "args": ["run", "compile", "--loglevel", "silent"], 18 | 19 | // The tsc compiler is started in watching mode 20 | "isBackground": true, 21 | 22 | // use the standard tsc in watch mode problem matcher to find compile problems in the output. 23 | "problemMatcher": "$tsc-watch", 24 | "tasks": [ 25 | { 26 | "label": "npm", 27 | "type": "shell", 28 | "command": "npm", 29 | "args": [ 30 | "run", 31 | "compile", 32 | "--loglevel", 33 | "silent" 34 | ], 35 | "isBackground": true, 36 | "problemMatcher": "$tsc-watch", 37 | "group": { 38 | "_id": "build", 39 | "isDefault": false 40 | } 41 | } 42 | ] 43 | } -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your first VS Code Extension 2 | 3 | ## What's in the folder 4 | * This folder contains all of the files necessary for your extension 5 | * `package.json` - this is the manifest file in which you declare your extension and command. 6 | The sample plugin registers a command and defines its title and command name. With this information 7 | VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | * `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | The file exports one function, `activate`, which is called the very first time your extension is 10 | activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 11 | We pass the function containing the implementation of the command as the second parameter to 12 | `registerCommand`. 13 | 14 | ## Get up and running straight away 15 | * press `F5` to open a new window with your extension loaded 16 | * run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World` 17 | * set breakpoints in your code inside `src/extension.ts` to debug your extension 18 | * find output from your extension in the debug console 19 | 20 | ## Make changes 21 | * you can relaunch the extension from the debug toolbar after changing code in `src/extension.ts` 22 | * you can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes 23 | 24 | ## Explore the API 25 | * you can open the full set of our API when you open the file `node_modules/vscode/vscode.d.ts` 26 | 27 | ## Run tests 28 | * open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Launch Tests` 29 | * press `F5` to run the tests in a new window with your extension loaded 30 | * see the output of the test result in the debug console 31 | * make changes to `test/extension.test.ts` or create new test files inside the `test` folder 32 | * by convention, the test runner will only consider files matching the name pattern `**.test.ts` 33 | * you can create folders inside the `test` folder to structure your tests any way you want -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "action-buttons", 3 | "displayName": "VsCode Action Buttons", 4 | "description": "Add customizable buttons to the status bar to execute actions or tasks", 5 | "version": "1.2.3", 6 | "publisher": "seunlanlege", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/SeunLanLege/vscode-action-buttons.git" 10 | }, 11 | "engines": { 12 | "vscode": "^1.27.2" 13 | }, 14 | "categories": [ 15 | "Other" 16 | ], 17 | "keywords": [ 18 | "action", 19 | "buttons", 20 | "task", 21 | "runner", 22 | "status bar" 23 | ], 24 | "activationEvents": [ 25 | "*" 26 | ], 27 | "main": "./out/src/extension", 28 | "contributes": { 29 | "commands": [ 30 | { 31 | "command": "extension.refreshButtons", 32 | "title": "Refresh Action Buttons" 33 | } 34 | ], 35 | "configuration": { 36 | "type": "object", 37 | "title": "VsCode Action Buttons", 38 | "properties": { 39 | "actionButtons": { 40 | "type": "object", 41 | "additionalProperties": false, 42 | "default": { 43 | "commands": [], 44 | "defaultColor": "white", 45 | "reloadButton": "↻", 46 | "loadNpmCommands": false 47 | }, 48 | "properties": { 49 | "commands": { 50 | "type": "array", 51 | "items": { 52 | "type": "object", 53 | "additionalProperties": false, 54 | "required": [ 55 | "name", 56 | "command" 57 | ], 58 | "properties": { 59 | "name": { 60 | "type": "string", 61 | "markdownDescription": "Name of the action button" 62 | }, 63 | "saveAll": { 64 | "type": "boolean", 65 | "markdownDescription": "Save all open files before execute command" 66 | 67 | }, 68 | "command": { 69 | "type": "string", 70 | "markdownDescription": "Command to execute when action is activated.\n\nIf `useVsCodeApi` is `true`, this is the VS Code command to execute. Otherwise, this specifies the command to execute in the terminal" 71 | }, 72 | "tooltip": { 73 | "type": "string", 74 | "markdownDescription": "Tooltip text to display when hovering over the button" 75 | }, 76 | "color": { 77 | "type": "string", 78 | "markdownDescription": "Specifies the action button text color" 79 | }, 80 | "cwd": { 81 | "type": "string", 82 | "markdownDescription": "Start directory when executing terminal command\n\nOnly valid when `useVsCodeApi` is `false`" 83 | }, 84 | "singleInstance": { 85 | "type": "boolean", 86 | "default": false, 87 | "markdownDescription": "Reopen associated terminal each time this action is activated\n\nOnly valid when `useVsCodeApi` is `false`" 88 | }, 89 | "focus": { 90 | "type": "boolean", 91 | "default": false, 92 | "markdownDescription": "Focus the terminal after executing the command.\n\nOnly valid when `useVsCodeApi` is `false`" 93 | }, 94 | "useVsCodeApi": { 95 | "type": "boolean", 96 | "default": false, 97 | "markdownDescription": "Specifies whether to execute a VS Code command or terminal command" 98 | }, 99 | "args": { 100 | "type": "array", 101 | "items": { 102 | "type": "string" 103 | }, 104 | "default": [], 105 | "markdownDescription": "List of arguments passed to VS Code command\n\nOnly valid when `useVsCodeApi` is `true`" 106 | } 107 | } 108 | } 109 | }, 110 | "defaultColor": { 111 | "type": "string", 112 | "required": false, 113 | "default": "white", 114 | "markdownDescription": "Default color to use for action button text" 115 | }, 116 | "reloadButton": { 117 | "type": [ 118 | "string", 119 | "null" 120 | ], 121 | "required": false, 122 | "default": "↻", 123 | "markdownDescription": "Reload button text. If `null`, button is disabled" 124 | }, 125 | "loadNpmCommands": { 126 | "type": "boolean", 127 | "required": false, 128 | "default": false, 129 | "markdownDescription": "Specifies whether to automatically generate buttons from npm commands listed in `package.json`" 130 | }, 131 | "inheritGlobalCommands": { 132 | "type": "boolean", 133 | "required": false, 134 | "default": false, 135 | "markdownDescription": "In case you use workspace-scope settings, and want to also use User (global) scope settings, you might enable this" 136 | } 137 | } 138 | } 139 | } 140 | } 141 | }, 142 | "scripts": { 143 | "vscode:prepublish": "tsc -p ./", 144 | "compile": "tsc -watch -p ./", 145 | "publish": "vsce publish", 146 | "postinstall": "node ./node_modules/vscode/bin/install", 147 | "test": "node ./node_modules/vscode/bin/test" 148 | }, 149 | "devDependencies": { 150 | "@types/mocha": "^2.2.32", 151 | "@types/node": "^16.10.2", 152 | "mocha": "^6.1.4", 153 | "typescript": "^4.4.3", 154 | "vscode": "^1.0.0" 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VsCode Action Buttons 2 | 3 | Add customizable buttons to the status bar to execute actions or tasks in VS Code. 4 | 5 | ## Features 6 | 7 | * Execute command in terminal 8 | * Execute VS Code command 9 | * Any command that can be activated via a keyboard shortcut can be activated via a button 10 | * Ability to customize text color for each button 11 | * Add icons to buttons 12 | * Icons can be added to buttons by using the Markdown icons-in-labels syntax. For example, to add an alert icon you include `$(alert) in the button name. See https://code.visualstudio.com/api/references/icons-in-labels for more info 13 | 14 | ### Example 15 | 16 | ![](action.gif) 17 | 18 | ## Installation and setup 19 | 20 | - [x] Install the `VsCode Action Buttons` extension in your VS Code instance. 21 | - [x] After installing, open your VS Code settings (`Ctrl + ,`). Navigate to the `VsCode Action Buttons` section. 22 | - [x] Define the action buttons you want. Below is a sample configuration for reference. 23 | - [x] Reload the VS Code window to see the new buttons. Alternatively, you can run the `Refresh Action Buttons` command to refresh without reloading the window. 24 | 25 | ```json 26 | "actionButtons": { 27 | "defaultColor": "#ff0034", // Can also use string color names. 28 | "loadNpmCommands":false, // Disables automatic generation of actions for npm commands. 29 | "reloadButton":"♻️", // Custom reload button text or icon (default ↻). null value enables automatic reload on configuration change 30 | "inheritGlobalCommands": false, // In case you use workspace-scope settings, and want to also use User (global) scope settings, you might enable this 31 | "commands": [ 32 | { 33 | "cwd": "/home/custom_folder", // Terminal initial folder ${workspaceFolder} and os user home as defaults 34 | "name": "$(triangle-right) Run Cargo", 35 | "color": "green", 36 | "singleInstance": true, 37 | "command": "cargo run ${file}", // This is executed in the terminal. 38 | }, 39 | { 40 | "name": "$(tools) Build Cargo", 41 | "color": "green", 42 | "command": "cargo build ${file}", 43 | }, 44 | { 45 | "name": "$(split-horizontal) Split editor", 46 | "color": "orange", 47 | "useVsCodeApi": true, 48 | "command": "workbench.action.splitEditor" 49 | } 50 | ] 51 | } 52 | ``` 53 | 54 | ## Config Options 55 | 56 | * **reloadButton** 57 | * Text for reload actions button. Defaults to `↻`. If null, the reload button is disabled. 58 | * **defaultColor** 59 | * Default text color of action buttons. Defaults to `white`. To set default theme color type `none`. 60 | * **loadNpmCommands** 61 | * Whether or not to automatically generate action buttons from commands specified in `package.json`. Defaults to `false`. 62 | * **commands** 63 | * List of action buttons to add to the status bar. Defaults to `[]`. See below for a list of valid options for each command 64 | 65 | ### Command Options 66 | 67 | * **name** 68 | * Name of the action button. This field is required. You can add icons in command name by typing `$(icon-name)`. Look [here](https://code.visualstudio.com/api/references/icons-in-labels#icon-listing) for icons. (Note: If you will misspell no icons will show) 69 | * **saveAll** 70 | * Save all open files before execute command 71 | * **command** 72 | * Command to execute when action is activated. This field is required. 73 | * If `useVsCodeApi` is `true`, this is the VS Code command to execute. Otherwise, this specifies the command to execute in the terminal 74 | * **color** 75 | * Specifies the action button text color. Defaults to `defaultColor`. 76 | * **tooltip** 77 | * Tooltip text to display when hovering over the button. Defaults to `command`. 78 | * **cwd** 79 | * Start directory when executing terminal command. Defaults to `${workspaceFolder}`. Only valid when `useVsCodeApi` is `false` 80 | * **singleInstance** 81 | * Reopen associated terminal each time this action is activated. Defaults to `false`. Only valid when `useVsCodeApi` is `false` 82 | * **focus** 83 | * Focus the terminal after executing the command. Defaults to `false`. Only valid when `useVsCodeApi` is `false` 84 | * **useVsCodeApi** 85 | * Specifies whether to execute a VS Code command or terminal command. Defaults to `false`. 86 | * **args** 87 | * Specifies additional arguments to pass to VS Code command. Only valid when `useVsCodeApi` is `true`. 88 | 89 | ## Usage 90 | 91 | ```json 92 | "actionButtons": { 93 | "reloadButton": null, 94 | "loadNpmCommands": false, 95 | "commands": [ 96 | { 97 | "name": "Run Cargo", 98 | "singleInstance": true, 99 | "color": "#af565c", 100 | "command": "cargo run ${file}", 101 | }, 102 | ] 103 | } 104 | ``` 105 | 106 | ## Config Vars 107 | 108 | As seen in the previous example, vars such as `${file}` can be used. Below is a list of each of them and what they do. 109 | 110 | * `workspaceFolder` - the path of the folder opened in VS Code 111 | * `workspaceFolderBasename` - the name of the folder opened in VS Code without any slashes (/) 112 | * `file` - the current opened file 113 | * `relativeFile` - the current opened file relative to workspaceFolder 114 | * `fileBasename` - the current opened file's basename 115 | * `fileBasenameNoExtension` - the current opened file's basename with no file extension 116 | * `fileDirname` - the current opened file's dirname 117 | * `fileExtname` - the current opened file's extension 118 | * `cwd` - the task runner's current working directory on startup 119 | * `lineNumber` - the current selected line number in the active file 120 | * `selectedText` - the current selected text in the active file 121 | * `execPath` - the path to the running VS Code executable 122 | 123 | ## Release Notes 124 | 125 | ### v1.2.2 126 | 127 | Fix clear terminal command on windows [#85](https://github.com/seunlanlege/vscode-action-buttons/pull/85) 128 | 129 | ### v1.1.5 130 | Added support for VSCode API calls 131 | Added `api` option. 132 | 133 | ### v1.1.4 134 | Added support for VSCode predefined variables as ${file} 135 | Added `cwd` option. 136 | Added `reloadButton` option. 137 | 138 | ### v1.1.3 139 | Added `loadNpmCommands` option. 140 | 141 | ### v1.1.2 142 | 143 | 144 | ### v1.1.0 145 | Added `Refresh Action Buttons` action button 146 | 147 | ### v1.0.0 148 | Changed configuration name from `run` to `actionButton` 149 | Better support for js projects 150 | 151 | ### v0.0.8 152 | Added `singleInstance` option. 153 | 154 | ### v0.0.7 155 | Added support for default Colors 156 | 157 | ### v0.0.6 158 | Added support for reading actions from the scripts segment of package.json. 159 | 160 | ### v0.0.3 161 | Better documentation. 162 | 163 | ### v0.0.1 164 | Initial Release 165 | -------------------------------------------------------------------------------- /src/init.ts: -------------------------------------------------------------------------------- 1 | import { buildConfigFromPackageJson } from './packageJson' 2 | import * as vscode from 'vscode' 3 | import { ButtonOpts, CommandOpts } from './types' 4 | import * as path from 'path' 5 | 6 | const registerCommand = vscode.commands.registerCommand 7 | 8 | const disposables = [] 9 | 10 | const init = async (context: vscode.ExtensionContext) => { 11 | disposables.forEach(d => d.dispose()) 12 | const config = vscode.workspace.getConfiguration('actionButtons') 13 | const defaultColor = config.get('defaultColor') 14 | const reloadButton = config.get('reloadButton') 15 | const loadNpmCommands = config.get('loadNpmCommands') 16 | const inheritGlobalCommands = config.get('inheritGlobalCommands') 17 | const cmds = config.get('commands') 18 | const commands: CommandOpts[] = [] 19 | 20 | if (reloadButton !== null) { 21 | loadButton({ 22 | command: 'extension.refreshButtons', 23 | name: reloadButton, 24 | tooltip: 'Refreshes the action buttons', 25 | color: defaultColor 26 | }) 27 | } 28 | else { 29 | const onCfgChange:vscode.Disposable = vscode.workspace.onDidChangeConfiguration(e => { 30 | if (e.affectsConfiguration('actionButtons')) { 31 | vscode.commands.executeCommand('extension.refreshButtons'); 32 | } 33 | }); 34 | context.subscriptions.push(onCfgChange) 35 | disposables.push(onCfgChange); 36 | } 37 | 38 | if (inheritGlobalCommands) { 39 | let commandsInspected = config.inspect('commands'); 40 | const cmdsGlobal = commandsInspected.globalValue as CommandOpts[]; 41 | if (cmdsGlobal && cmdsGlobal.length) { 42 | commands.push(...cmdsGlobal) 43 | } 44 | } 45 | 46 | if (cmds && cmds.length) { 47 | commands.push(...cmds) 48 | } 49 | 50 | if (loadNpmCommands !== false) commands.push(...(await buildConfigFromPackageJson(defaultColor))) 51 | 52 | if (commands.length) { 53 | const terminals: { [name: string]: vscode.Terminal } = {} 54 | commands.forEach( 55 | ({ cwd, saveAll, command, name, tooltip, color, singleInstance, focus, useVsCodeApi, args }: CommandOpts) => { 56 | const vsCommand = `extension.${name.replace(' ', '')}` 57 | 58 | const disposable = registerCommand(vsCommand, async () => { 59 | const vars = { 60 | 61 | // - the path of the folder opened in VS Code 62 | workspaceFolder: vscode.workspace.rootPath, 63 | 64 | // - the name of the folder opened in VS Code without any slashes (/) 65 | workspaceFolderBasename: (vscode.workspace.rootPath)? path.basename(vscode.workspace.rootPath) : null, 66 | 67 | // - the current opened file 68 | file: (vscode.window.activeTextEditor) ? vscode.window.activeTextEditor.document.fileName : null, 69 | 70 | // - the current opened file relative to workspaceFolder 71 | relativeFile: (vscode.window.activeTextEditor && vscode.workspace.rootPath) ? path.relative( 72 | vscode.workspace.rootPath, 73 | vscode.window.activeTextEditor.document.fileName 74 | ) : null, 75 | 76 | // - the current opened file's basename 77 | fileBasename: (vscode.window.activeTextEditor) ? path.basename(vscode.window.activeTextEditor.document.fileName) : null, 78 | 79 | // - the current opened file's basename with no file extension 80 | fileBasenameNoExtension: (vscode.window.activeTextEditor) ? path.parse(path.basename(vscode.window.activeTextEditor.document.fileName)).name : null, 81 | 82 | // - the current opened file's dirname 83 | fileDirname: (vscode.window.activeTextEditor) ? path.dirname(vscode.window.activeTextEditor.document.fileName) : null, 84 | 85 | // - the current opened file's extension 86 | fileExtname: (vscode.window.activeTextEditor) ? path.parse(path.basename(vscode.window.activeTextEditor.document.fileName)).ext : null, 87 | 88 | // - the task runner's current working directory on startup 89 | cwd: cwd || vscode.workspace.rootPath || require('os').homedir(), 90 | 91 | //- the current selected line number in the active file 92 | lineNumber: (vscode.window.activeTextEditor) ? vscode.window.activeTextEditor.selection.active.line + 1 : null, 93 | 94 | // - the current selected text in the active file 95 | selectedText: (vscode.window.activeTextEditor) ? vscode.window.activeTextEditor.document.getText(vscode.window.activeTextEditor.selection) : null, 96 | 97 | // - the path to the running VS Code executable 98 | execPath: process.execPath 99 | } 100 | 101 | if (!command) { 102 | vscode.window.showErrorMessage('No command to execute for this action'); 103 | return; 104 | } 105 | 106 | if (saveAll) { 107 | vscode.commands.executeCommand('workbench.action.files.saveAll'); 108 | } 109 | 110 | if (useVsCodeApi) { 111 | vscode.commands.executeCommand(command, ...(args || [])); 112 | } else { 113 | let assocTerminal = terminals[vsCommand] 114 | if (!assocTerminal) { 115 | assocTerminal = vscode.window.createTerminal({ name, cwd: vars.cwd }); 116 | terminals[vsCommand] = assocTerminal; 117 | } else { 118 | if (singleInstance) { 119 | delete terminals[vsCommand]; 120 | assocTerminal.dispose(); 121 | assocTerminal = vscode.window.createTerminal({ name, cwd: vars.cwd }); 122 | terminals[vsCommand] = assocTerminal; 123 | } else { 124 | if (process.platform === "win32") { 125 | assocTerminal.sendText("cls"); 126 | } else { 127 | assocTerminal.sendText("clear"); 128 | } 129 | } 130 | } 131 | assocTerminal.show(!focus); 132 | assocTerminal.sendText(interpolateString(command, vars)); 133 | } 134 | }) 135 | 136 | context.subscriptions.push(disposable) 137 | 138 | disposables.push(disposable) 139 | 140 | loadButton({ 141 | command: vsCommand, 142 | name, 143 | tooltip: tooltip || command, 144 | color: color || defaultColor, 145 | }) 146 | } 147 | ) 148 | } else { 149 | vscode.window.setStatusBarMessage( 150 | 'VsCode Action Buttons: You have no run commands.', 151 | 4000 152 | ) 153 | } 154 | } 155 | 156 | function loadButton({ 157 | command, 158 | name, 159 | tooltip, 160 | color, 161 | }: ButtonOpts) { 162 | const runButton = vscode.window.createStatusBarItem(1, 0) 163 | runButton.text = name 164 | runButton.color = color 165 | runButton.tooltip = tooltip 166 | 167 | runButton.command = command 168 | runButton.show() 169 | disposables.push(runButton) 170 | } 171 | 172 | function interpolateString(tpl: string, data: object): string { 173 | let re = /\$\{([^\}]+)\}/g, match; 174 | while (match = re.exec(tpl)) { 175 | let path = match[1].split('.').reverse(); 176 | let obj = data[path.pop()]; 177 | while (path.length) obj = obj[path.pop()]; 178 | tpl = tpl.replace(match[0], obj) 179 | } 180 | return tpl; 181 | } 182 | 183 | export default init 184 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@tootallnate/once@1": 6 | version "1.1.2" 7 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 8 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 9 | 10 | "@types/mocha@^2.2.32": 11 | version "2.2.48" 12 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab" 13 | integrity sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw== 14 | 15 | "@types/node@^16.10.2": 16 | version "16.10.2" 17 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" 18 | integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== 19 | 20 | agent-base@4, agent-base@^4.3.0: 21 | version "4.3.0" 22 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 23 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 24 | dependencies: 25 | es6-promisify "^5.0.0" 26 | 27 | agent-base@6: 28 | version "6.0.2" 29 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 30 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 31 | dependencies: 32 | debug "4" 33 | 34 | ansi-colors@3.2.3: 35 | version "3.2.3" 36 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 37 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 38 | 39 | ansi-regex@^3.0.0: 40 | version "3.0.0" 41 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 42 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 43 | 44 | ansi-regex@^4.1.0: 45 | version "4.1.0" 46 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 47 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 48 | 49 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 50 | version "3.2.1" 51 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 52 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 53 | dependencies: 54 | color-convert "^1.9.0" 55 | 56 | argparse@^1.0.7: 57 | version "1.0.10" 58 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 59 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 60 | dependencies: 61 | sprintf-js "~1.0.2" 62 | 63 | balanced-match@^1.0.0: 64 | version "1.0.2" 65 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 66 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 67 | 68 | brace-expansion@^1.1.7: 69 | version "1.1.11" 70 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 71 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 72 | dependencies: 73 | balanced-match "^1.0.0" 74 | concat-map "0.0.1" 75 | 76 | browser-stdout@1.3.1: 77 | version "1.3.1" 78 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 79 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 80 | 81 | buffer-from@^1.0.0: 82 | version "1.1.2" 83 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 84 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 85 | 86 | call-bind@^1.0.0, call-bind@^1.0.2: 87 | version "1.0.2" 88 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 89 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 90 | dependencies: 91 | function-bind "^1.1.1" 92 | get-intrinsic "^1.0.2" 93 | 94 | camelcase@^5.0.0: 95 | version "5.3.1" 96 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 97 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 98 | 99 | chalk@^2.0.1: 100 | version "2.4.2" 101 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 102 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 103 | dependencies: 104 | ansi-styles "^3.2.1" 105 | escape-string-regexp "^1.0.5" 106 | supports-color "^5.3.0" 107 | 108 | cliui@^5.0.0: 109 | version "5.0.0" 110 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 111 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 112 | dependencies: 113 | string-width "^3.1.0" 114 | strip-ansi "^5.2.0" 115 | wrap-ansi "^5.1.0" 116 | 117 | color-convert@^1.9.0: 118 | version "1.9.3" 119 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 120 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 121 | dependencies: 122 | color-name "1.1.3" 123 | 124 | color-name@1.1.3: 125 | version "1.1.3" 126 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 127 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 128 | 129 | commander@2.15.1: 130 | version "2.15.1" 131 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 132 | integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== 133 | 134 | concat-map@0.0.1: 135 | version "0.0.1" 136 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 137 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 138 | 139 | debug@3.1.0: 140 | version "3.1.0" 141 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 142 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 143 | dependencies: 144 | ms "2.0.0" 145 | 146 | debug@3.2.6: 147 | version "3.2.6" 148 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 149 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 150 | dependencies: 151 | ms "^2.1.1" 152 | 153 | debug@4: 154 | version "4.3.2" 155 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 156 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 157 | dependencies: 158 | ms "2.1.2" 159 | 160 | debug@^3.1.0: 161 | version "3.2.7" 162 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 163 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 164 | dependencies: 165 | ms "^2.1.1" 166 | 167 | decamelize@^1.2.0: 168 | version "1.2.0" 169 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 170 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 171 | 172 | define-properties@^1.1.2, define-properties@^1.1.3: 173 | version "1.1.3" 174 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 175 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 176 | dependencies: 177 | object-keys "^1.0.12" 178 | 179 | diff@3.5.0: 180 | version "3.5.0" 181 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 182 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 183 | 184 | emoji-regex@^7.0.1: 185 | version "7.0.3" 186 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 187 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 188 | 189 | es-abstract@^1.18.0-next.2: 190 | version "1.19.1" 191 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 192 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 193 | dependencies: 194 | call-bind "^1.0.2" 195 | es-to-primitive "^1.2.1" 196 | function-bind "^1.1.1" 197 | get-intrinsic "^1.1.1" 198 | get-symbol-description "^1.0.0" 199 | has "^1.0.3" 200 | has-symbols "^1.0.2" 201 | internal-slot "^1.0.3" 202 | is-callable "^1.2.4" 203 | is-negative-zero "^2.0.1" 204 | is-regex "^1.1.4" 205 | is-shared-array-buffer "^1.0.1" 206 | is-string "^1.0.7" 207 | is-weakref "^1.0.1" 208 | object-inspect "^1.11.0" 209 | object-keys "^1.1.1" 210 | object.assign "^4.1.2" 211 | string.prototype.trimend "^1.0.4" 212 | string.prototype.trimstart "^1.0.4" 213 | unbox-primitive "^1.0.1" 214 | 215 | es-to-primitive@^1.2.1: 216 | version "1.2.1" 217 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 218 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 219 | dependencies: 220 | is-callable "^1.1.4" 221 | is-date-object "^1.0.1" 222 | is-symbol "^1.0.2" 223 | 224 | es6-promise@^4.0.3: 225 | version "4.2.8" 226 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 227 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 228 | 229 | es6-promisify@^5.0.0: 230 | version "5.0.0" 231 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 232 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 233 | dependencies: 234 | es6-promise "^4.0.3" 235 | 236 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 237 | version "1.0.5" 238 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 239 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 240 | 241 | esprima@^4.0.0: 242 | version "4.0.1" 243 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 244 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 245 | 246 | find-up@3.0.0, find-up@^3.0.0: 247 | version "3.0.0" 248 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 249 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 250 | dependencies: 251 | locate-path "^3.0.0" 252 | 253 | flat@^4.1.0: 254 | version "4.1.1" 255 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" 256 | integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== 257 | dependencies: 258 | is-buffer "~2.0.3" 259 | 260 | fs.realpath@^1.0.0: 261 | version "1.0.0" 262 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 263 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 264 | 265 | function-bind@^1.1.1: 266 | version "1.1.1" 267 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 268 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 269 | 270 | get-caller-file@^2.0.1: 271 | version "2.0.5" 272 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 273 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 274 | 275 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 276 | version "1.1.1" 277 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 278 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 279 | dependencies: 280 | function-bind "^1.1.1" 281 | has "^1.0.3" 282 | has-symbols "^1.0.1" 283 | 284 | get-symbol-description@^1.0.0: 285 | version "1.0.0" 286 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 287 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 288 | dependencies: 289 | call-bind "^1.0.2" 290 | get-intrinsic "^1.1.1" 291 | 292 | glob@7.1.2: 293 | version "7.1.2" 294 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 295 | integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 296 | dependencies: 297 | fs.realpath "^1.0.0" 298 | inflight "^1.0.4" 299 | inherits "2" 300 | minimatch "^3.0.4" 301 | once "^1.3.0" 302 | path-is-absolute "^1.0.0" 303 | 304 | glob@7.1.3: 305 | version "7.1.3" 306 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 307 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 308 | dependencies: 309 | fs.realpath "^1.0.0" 310 | inflight "^1.0.4" 311 | inherits "2" 312 | minimatch "^3.0.4" 313 | once "^1.3.0" 314 | path-is-absolute "^1.0.0" 315 | 316 | glob@^7.1.2: 317 | version "7.2.0" 318 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 319 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 320 | dependencies: 321 | fs.realpath "^1.0.0" 322 | inflight "^1.0.4" 323 | inherits "2" 324 | minimatch "^3.0.4" 325 | once "^1.3.0" 326 | path-is-absolute "^1.0.0" 327 | 328 | growl@1.10.5: 329 | version "1.10.5" 330 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 331 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 332 | 333 | has-bigints@^1.0.1: 334 | version "1.0.1" 335 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 336 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 337 | 338 | has-flag@^3.0.0: 339 | version "3.0.0" 340 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 341 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 342 | 343 | has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: 344 | version "1.0.2" 345 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 346 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 347 | 348 | has-tostringtag@^1.0.0: 349 | version "1.0.0" 350 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 351 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 352 | dependencies: 353 | has-symbols "^1.0.2" 354 | 355 | has@^1.0.3: 356 | version "1.0.3" 357 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 358 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 359 | dependencies: 360 | function-bind "^1.1.1" 361 | 362 | he@1.1.1: 363 | version "1.1.1" 364 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 365 | integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= 366 | 367 | he@1.2.0: 368 | version "1.2.0" 369 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 370 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 371 | 372 | http-proxy-agent@^2.1.0: 373 | version "2.1.0" 374 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" 375 | integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== 376 | dependencies: 377 | agent-base "4" 378 | debug "3.1.0" 379 | 380 | http-proxy-agent@^4.0.1: 381 | version "4.0.1" 382 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 383 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 384 | dependencies: 385 | "@tootallnate/once" "1" 386 | agent-base "6" 387 | debug "4" 388 | 389 | https-proxy-agent@^2.2.1: 390 | version "2.2.4" 391 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 392 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 393 | dependencies: 394 | agent-base "^4.3.0" 395 | debug "^3.1.0" 396 | 397 | https-proxy-agent@^5.0.0: 398 | version "5.0.0" 399 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 400 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 401 | dependencies: 402 | agent-base "6" 403 | debug "4" 404 | 405 | inflight@^1.0.4: 406 | version "1.0.6" 407 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 408 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 409 | dependencies: 410 | once "^1.3.0" 411 | wrappy "1" 412 | 413 | inherits@2: 414 | version "2.0.4" 415 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 416 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 417 | 418 | internal-slot@^1.0.3: 419 | version "1.0.3" 420 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 421 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 422 | dependencies: 423 | get-intrinsic "^1.1.0" 424 | has "^1.0.3" 425 | side-channel "^1.0.4" 426 | 427 | is-bigint@^1.0.1: 428 | version "1.0.4" 429 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 430 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 431 | dependencies: 432 | has-bigints "^1.0.1" 433 | 434 | is-boolean-object@^1.1.0: 435 | version "1.1.2" 436 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 437 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 438 | dependencies: 439 | call-bind "^1.0.2" 440 | has-tostringtag "^1.0.0" 441 | 442 | is-buffer@~2.0.3: 443 | version "2.0.5" 444 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" 445 | integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== 446 | 447 | is-callable@^1.1.4, is-callable@^1.2.4: 448 | version "1.2.4" 449 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 450 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 451 | 452 | is-date-object@^1.0.1: 453 | version "1.0.5" 454 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 455 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 456 | dependencies: 457 | has-tostringtag "^1.0.0" 458 | 459 | is-fullwidth-code-point@^2.0.0: 460 | version "2.0.0" 461 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 462 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 463 | 464 | is-negative-zero@^2.0.1: 465 | version "2.0.1" 466 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 467 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 468 | 469 | is-number-object@^1.0.4: 470 | version "1.0.6" 471 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 472 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 473 | dependencies: 474 | has-tostringtag "^1.0.0" 475 | 476 | is-regex@^1.1.4: 477 | version "1.1.4" 478 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 479 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 480 | dependencies: 481 | call-bind "^1.0.2" 482 | has-tostringtag "^1.0.0" 483 | 484 | is-shared-array-buffer@^1.0.1: 485 | version "1.0.1" 486 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 487 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 488 | 489 | is-string@^1.0.5, is-string@^1.0.7: 490 | version "1.0.7" 491 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 492 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 493 | dependencies: 494 | has-tostringtag "^1.0.0" 495 | 496 | is-symbol@^1.0.2, is-symbol@^1.0.3: 497 | version "1.0.4" 498 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 499 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 500 | dependencies: 501 | has-symbols "^1.0.2" 502 | 503 | is-weakref@^1.0.1: 504 | version "1.0.1" 505 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" 506 | integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== 507 | dependencies: 508 | call-bind "^1.0.0" 509 | 510 | isexe@^2.0.0: 511 | version "2.0.0" 512 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 513 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 514 | 515 | js-yaml@3.13.1: 516 | version "3.13.1" 517 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 518 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 519 | dependencies: 520 | argparse "^1.0.7" 521 | esprima "^4.0.0" 522 | 523 | locate-path@^3.0.0: 524 | version "3.0.0" 525 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 526 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 527 | dependencies: 528 | p-locate "^3.0.0" 529 | path-exists "^3.0.0" 530 | 531 | lodash@^4.17.15: 532 | version "4.17.21" 533 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 534 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 535 | 536 | log-symbols@2.2.0: 537 | version "2.2.0" 538 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 539 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 540 | dependencies: 541 | chalk "^2.0.1" 542 | 543 | minimatch@3.0.4, minimatch@^3.0.4: 544 | version "3.0.4" 545 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 546 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 547 | dependencies: 548 | brace-expansion "^1.1.7" 549 | 550 | minimist@0.0.8: 551 | version "0.0.8" 552 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 553 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 554 | 555 | minimist@^1.2.5: 556 | version "1.2.5" 557 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 558 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 559 | 560 | mkdirp@0.5.1: 561 | version "0.5.1" 562 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 563 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 564 | dependencies: 565 | minimist "0.0.8" 566 | 567 | mkdirp@0.5.4: 568 | version "0.5.4" 569 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" 570 | integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== 571 | dependencies: 572 | minimist "^1.2.5" 573 | 574 | mocha@^5.2.0: 575 | version "5.2.0" 576 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" 577 | integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== 578 | dependencies: 579 | browser-stdout "1.3.1" 580 | commander "2.15.1" 581 | debug "3.1.0" 582 | diff "3.5.0" 583 | escape-string-regexp "1.0.5" 584 | glob "7.1.2" 585 | growl "1.10.5" 586 | he "1.1.1" 587 | minimatch "3.0.4" 588 | mkdirp "0.5.1" 589 | supports-color "5.4.0" 590 | 591 | mocha@^6.1.4: 592 | version "6.2.3" 593 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.3.tgz#e648432181d8b99393410212664450a4c1e31912" 594 | integrity sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg== 595 | dependencies: 596 | ansi-colors "3.2.3" 597 | browser-stdout "1.3.1" 598 | debug "3.2.6" 599 | diff "3.5.0" 600 | escape-string-regexp "1.0.5" 601 | find-up "3.0.0" 602 | glob "7.1.3" 603 | growl "1.10.5" 604 | he "1.2.0" 605 | js-yaml "3.13.1" 606 | log-symbols "2.2.0" 607 | minimatch "3.0.4" 608 | mkdirp "0.5.4" 609 | ms "2.1.1" 610 | node-environment-flags "1.0.5" 611 | object.assign "4.1.0" 612 | strip-json-comments "2.0.1" 613 | supports-color "6.0.0" 614 | which "1.3.1" 615 | wide-align "1.1.3" 616 | yargs "13.3.2" 617 | yargs-parser "13.1.2" 618 | yargs-unparser "1.6.0" 619 | 620 | ms@2.0.0: 621 | version "2.0.0" 622 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 623 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 624 | 625 | ms@2.1.1: 626 | version "2.1.1" 627 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 628 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 629 | 630 | ms@2.1.2: 631 | version "2.1.2" 632 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 633 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 634 | 635 | ms@^2.1.1: 636 | version "2.1.3" 637 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 638 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 639 | 640 | node-environment-flags@1.0.5: 641 | version "1.0.5" 642 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" 643 | integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== 644 | dependencies: 645 | object.getownpropertydescriptors "^2.0.3" 646 | semver "^5.7.0" 647 | 648 | object-inspect@^1.11.0, object-inspect@^1.9.0: 649 | version "1.11.0" 650 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" 651 | integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== 652 | 653 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 654 | version "1.1.1" 655 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 656 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 657 | 658 | object.assign@4.1.0: 659 | version "4.1.0" 660 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 661 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 662 | dependencies: 663 | define-properties "^1.1.2" 664 | function-bind "^1.1.1" 665 | has-symbols "^1.0.0" 666 | object-keys "^1.0.11" 667 | 668 | object.assign@^4.1.2: 669 | version "4.1.2" 670 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 671 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 672 | dependencies: 673 | call-bind "^1.0.0" 674 | define-properties "^1.1.3" 675 | has-symbols "^1.0.1" 676 | object-keys "^1.1.1" 677 | 678 | object.getownpropertydescriptors@^2.0.3: 679 | version "2.1.2" 680 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" 681 | integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== 682 | dependencies: 683 | call-bind "^1.0.2" 684 | define-properties "^1.1.3" 685 | es-abstract "^1.18.0-next.2" 686 | 687 | once@^1.3.0: 688 | version "1.4.0" 689 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 690 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 691 | dependencies: 692 | wrappy "1" 693 | 694 | p-limit@^2.0.0: 695 | version "2.3.0" 696 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 697 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 698 | dependencies: 699 | p-try "^2.0.0" 700 | 701 | p-locate@^3.0.0: 702 | version "3.0.0" 703 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 704 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 705 | dependencies: 706 | p-limit "^2.0.0" 707 | 708 | p-try@^2.0.0: 709 | version "2.2.0" 710 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 711 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 712 | 713 | path-exists@^3.0.0: 714 | version "3.0.0" 715 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 716 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 717 | 718 | path-is-absolute@^1.0.0: 719 | version "1.0.1" 720 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 721 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 722 | 723 | require-directory@^2.1.1: 724 | version "2.1.1" 725 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 726 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 727 | 728 | require-main-filename@^2.0.0: 729 | version "2.0.0" 730 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 731 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 732 | 733 | semver@^5.4.1, semver@^5.7.0: 734 | version "5.7.1" 735 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 736 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 737 | 738 | set-blocking@^2.0.0: 739 | version "2.0.0" 740 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 741 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 742 | 743 | side-channel@^1.0.4: 744 | version "1.0.4" 745 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 746 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 747 | dependencies: 748 | call-bind "^1.0.0" 749 | get-intrinsic "^1.0.2" 750 | object-inspect "^1.9.0" 751 | 752 | source-map-support@^0.5.0: 753 | version "0.5.20" 754 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" 755 | integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== 756 | dependencies: 757 | buffer-from "^1.0.0" 758 | source-map "^0.6.0" 759 | 760 | source-map@^0.6.0: 761 | version "0.6.1" 762 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 763 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 764 | 765 | sprintf-js@~1.0.2: 766 | version "1.0.3" 767 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 768 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 769 | 770 | "string-width@^1.0.2 || 2": 771 | version "2.1.1" 772 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 773 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 774 | dependencies: 775 | is-fullwidth-code-point "^2.0.0" 776 | strip-ansi "^4.0.0" 777 | 778 | string-width@^3.0.0, string-width@^3.1.0: 779 | version "3.1.0" 780 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 781 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 782 | dependencies: 783 | emoji-regex "^7.0.1" 784 | is-fullwidth-code-point "^2.0.0" 785 | strip-ansi "^5.1.0" 786 | 787 | string.prototype.trimend@^1.0.4: 788 | version "1.0.4" 789 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 790 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 791 | dependencies: 792 | call-bind "^1.0.2" 793 | define-properties "^1.1.3" 794 | 795 | string.prototype.trimstart@^1.0.4: 796 | version "1.0.4" 797 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 798 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 799 | dependencies: 800 | call-bind "^1.0.2" 801 | define-properties "^1.1.3" 802 | 803 | strip-ansi@^4.0.0: 804 | version "4.0.0" 805 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 806 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 807 | dependencies: 808 | ansi-regex "^3.0.0" 809 | 810 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 811 | version "5.2.0" 812 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 813 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 814 | dependencies: 815 | ansi-regex "^4.1.0" 816 | 817 | strip-json-comments@2.0.1: 818 | version "2.0.1" 819 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 820 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 821 | 822 | supports-color@5.4.0: 823 | version "5.4.0" 824 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 825 | integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== 826 | dependencies: 827 | has-flag "^3.0.0" 828 | 829 | supports-color@6.0.0: 830 | version "6.0.0" 831 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 832 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 833 | dependencies: 834 | has-flag "^3.0.0" 835 | 836 | supports-color@^5.3.0: 837 | version "5.5.0" 838 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 839 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 840 | dependencies: 841 | has-flag "^3.0.0" 842 | 843 | typescript@^4.4.3: 844 | version "4.4.3" 845 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" 846 | integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== 847 | 848 | unbox-primitive@^1.0.1: 849 | version "1.0.1" 850 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 851 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 852 | dependencies: 853 | function-bind "^1.1.1" 854 | has-bigints "^1.0.1" 855 | has-symbols "^1.0.2" 856 | which-boxed-primitive "^1.0.2" 857 | 858 | vscode-test@^0.4.1: 859 | version "0.4.3" 860 | resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8" 861 | integrity sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w== 862 | dependencies: 863 | http-proxy-agent "^2.1.0" 864 | https-proxy-agent "^2.2.1" 865 | 866 | vscode@^1.0.0: 867 | version "1.1.37" 868 | resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.37.tgz#c2a770bee4bb3fff765e2b72c7bcc813b8a6bb0a" 869 | integrity sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg== 870 | dependencies: 871 | glob "^7.1.2" 872 | http-proxy-agent "^4.0.1" 873 | https-proxy-agent "^5.0.0" 874 | mocha "^5.2.0" 875 | semver "^5.4.1" 876 | source-map-support "^0.5.0" 877 | vscode-test "^0.4.1" 878 | 879 | which-boxed-primitive@^1.0.2: 880 | version "1.0.2" 881 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 882 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 883 | dependencies: 884 | is-bigint "^1.0.1" 885 | is-boolean-object "^1.1.0" 886 | is-number-object "^1.0.4" 887 | is-string "^1.0.5" 888 | is-symbol "^1.0.3" 889 | 890 | which-module@^2.0.0: 891 | version "2.0.0" 892 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 893 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 894 | 895 | which@1.3.1: 896 | version "1.3.1" 897 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 898 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 899 | dependencies: 900 | isexe "^2.0.0" 901 | 902 | wide-align@1.1.3: 903 | version "1.1.3" 904 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 905 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 906 | dependencies: 907 | string-width "^1.0.2 || 2" 908 | 909 | wrap-ansi@^5.1.0: 910 | version "5.1.0" 911 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 912 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 913 | dependencies: 914 | ansi-styles "^3.2.0" 915 | string-width "^3.0.0" 916 | strip-ansi "^5.0.0" 917 | 918 | wrappy@1: 919 | version "1.0.2" 920 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 921 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 922 | 923 | y18n@^4.0.0: 924 | version "4.0.3" 925 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" 926 | integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== 927 | 928 | yargs-parser@13.1.2, yargs-parser@^13.1.2: 929 | version "13.1.2" 930 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 931 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 932 | dependencies: 933 | camelcase "^5.0.0" 934 | decamelize "^1.2.0" 935 | 936 | yargs-unparser@1.6.0: 937 | version "1.6.0" 938 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 939 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 940 | dependencies: 941 | flat "^4.1.0" 942 | lodash "^4.17.15" 943 | yargs "^13.3.0" 944 | 945 | yargs@13.3.2, yargs@^13.3.0: 946 | version "13.3.2" 947 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 948 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 949 | dependencies: 950 | cliui "^5.0.0" 951 | find-up "^3.0.0" 952 | get-caller-file "^2.0.1" 953 | require-directory "^2.1.1" 954 | require-main-filename "^2.0.0" 955 | set-blocking "^2.0.0" 956 | string-width "^3.0.0" 957 | which-module "^2.0.0" 958 | y18n "^4.0.0" 959 | yargs-parser "^13.1.2" 960 | --------------------------------------------------------------------------------