├── .gitattributes ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── documentation ├── demo-run-selection.gif ├── demo.gif ├── logo-128.png ├── logo-64.png ├── logo-with-name-xl.png ├── logo-with-name.png ├── logo-with-name.svg ├── logo.png └── logo.svg ├── package.json ├── src ├── constants.ts ├── extension.ts ├── templates │ ├── scratch.ts │ └── script.ts ├── types.ts └── utils │ ├── createQuickPickItemsForScripts.ts │ ├── ensureScriptDir.ts │ ├── enumerateScripts.ts │ ├── evaluateScratch.ts │ ├── executeScript.ts │ ├── getCurrentTextSelection.ts │ ├── getScratchFilename.ts │ ├── getScriptDir.ts │ ├── initializeConsole.ts │ ├── isPromise.ts │ ├── isScript.ts │ ├── isScriptFunctionFileIntent.ts │ ├── loadScript.ts │ ├── openScriptForEditing.ts │ ├── shouldUpdateCurrentTextSelection.ts │ └── updateCurrentTextSelection.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to automatically normalize line endings. 2 | * text=auto 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | .vscode-test/ 4 | *.vsix 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "eg2.tslint" 6 | ] 7 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "npm: watch" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "npm: watch" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.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 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off" 11 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/tslint.json 9 | **/*.map 10 | **/*.ts -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "scriptbox" extension will be documented in this file. 4 | 5 | ## [3.0.0] 6 | 7 | - Changed all extension command prefixes to `scriptbox.`. 8 | 9 | ## [1.4.0] 10 | 11 | - The `JavaScript` scratch file is automatically evaluated on change and results are displayed in the **ScriptBox** Output panel. 12 | 13 | ## [1.3.0] 14 | 15 | - Added a `JavaScript` scratch file (use the new **ScriptBox: Open Scratch** command) for use with **Eval Selection** command 16 | 17 | ## [0.3.0] 18 | 19 | - Renamed **Run Selection** to **Eval Selection** 20 | - **Run Script** now operates on the full text of the active editor if nothing is selected 21 | - **Eval Selection** now evaluates the full text of the active editor if nothing is selected 22 | 23 | ## [0.2.1] 24 | 25 | - Fixed: extension didn't activate when using the `Run Selection` command 26 | 27 | ## [0.2.0] 28 | 29 | - Introduce the `Run Selection` command 30 | 31 | ## [0.1.0] 32 | 33 | - Improved `README.md` documentation 34 | - Each ScriptBox script is now executed with `this` bound to the [vscode namespace API](https://code.visualstudio.com/docs/extensionAPI/vscode-api) 35 | 36 | ## [0.0.9] 37 | 38 | Created the logo for ScriptBox. 39 | 40 | ## [0.0.4] 41 | 42 | Created an `OutputChannel` for all `console.*` statements within a ScriptBox script 43 | 44 | ## [0.0.3] 45 | 46 | Started keeping release notes / changelog 47 | 48 | ## [0.0.2] 49 | 50 | Cleaned up the `README` and `package.json` 51 | 52 | ## [0.0.1] 53 | 54 | Initial release of ScriptBox 55 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2022 Caleb Peterson 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | 9 | End license text. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![ScriptBox](documentation/logo-with-name.png) 2 | 3 | # ScriptBox 4 | 5 | Extend VS Code without creating extensions. 6 | 7 | ScriptBox enables you to extend VS Code using custom JavaScript code. 8 | 9 | To **programmatically modify text**, use [Run Script](#run-script) 10 | 11 | - Run your predefined scripts on your current selection 12 | - Run your predefined scripts on the active editor 13 | 14 | To **create a new script**, use **Create Script**. 15 | 16 | To **modify your existing scripts**, use **Edit Script**. 17 | 18 | To **evaluate a JavaScript snippet**, use [Run Selection](#run-selection) 19 | 20 | - Run the currently selected text as JavaScript 21 | - Run the active editor as JavaScript 22 | 23 | ## Run Script 24 | 25 | Execute a predefined script on your current text selection. 26 | 27 | ![ScriptBox in action](documentation/demo.gif) 28 | 29 | ### Usage 30 | 31 | 1. Open the **Command Palette** (`Ctrl+P` / `Cmd+P`) 32 | 2. Select **ScriptBox: Create Script** 33 | 3. Give your script a name. e.g. `To Upper Case` 34 | 4. Modify the new script to manipulate selected text as needed 35 | 5. Select text in another editor 36 | 6. Use the **Run Script** command 37 | 7. Select the **\.js** option 38 | 8. _Your text selection has been transformed_ 39 | 40 | ### Script API 41 | 42 | Each script is expected to export a single function: 43 | 44 | ``` 45 | function (currentSelection) { 46 | // manipulate and return the currentSelection string 47 | // ... 48 | } 49 | ``` 50 | 51 | Each ScriptBox script is passed the current text selection as a `string` (or the entire contents of the active editor if nothing is selected). 52 | 53 | #### Script return value 54 | 55 | The current text selection is **replaced** with the return value if a `string` is returned. 56 | 57 | The current text selection is **unchanged** if the return value is `undefined`, `null`, or `false`. 58 | 59 | #### Using the `vscode` API 60 | 61 | You can explicitly import the [`vscode` module](https://code.visualstudio.com/api/references/vscode-api) in your script: 62 | 63 | ````js 64 | const vscode = require('vscode'); 65 | 66 | module.exports = function () { 67 | // Use the vscode API here... 68 | }; 69 | 70 | 71 | ### Binding a script to a keyboard shortcut 72 | 73 | In your keyboard shortcuts JSON file: 74 | 75 | ```json 76 | { 77 | "key": "cmd+u", 78 | "command": "scriptbox.runScript", 79 | "args": "To Upper Case.js" 80 | } 81 | ```` 82 | 83 | ### Can I use NPM packages in my scripts? 84 | 85 | Yes, just use `npm`/`yarn`/etc... to add `packages.json` to your `~/.scriptbox/` directory, add the packages needed, and then `require('the-package')` within your scripts. 86 | 87 | ## Run Selection 88 | 89 | Execute the currently selected JavaScript text (or the entire content of the active editor, if nothing is selected). 90 | 91 | ![Run Selection in action](documentation/demo-run-selection.gif) 92 | 93 | ## Known Issues 94 | 95 | None 96 | 97 | ## Credits 98 | 99 | Logo based on [Hexagon by Chris Kerr from the Noun Project](https://thenounproject.com/term/hexagon/30707/) 100 | 101 | ## Release Notes 102 | 103 | The [CHANGELOG](CHANGELOG.md) contains release notes for each release. 104 | -------------------------------------------------------------------------------- /documentation/demo-run-selection.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/demo-run-selection.gif -------------------------------------------------------------------------------- /documentation/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/demo.gif -------------------------------------------------------------------------------- /documentation/logo-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/logo-128.png -------------------------------------------------------------------------------- /documentation/logo-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/logo-64.png -------------------------------------------------------------------------------- /documentation/logo-with-name-xl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/logo-with-name-xl.png -------------------------------------------------------------------------------- /documentation/logo-with-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/logo-with-name.png -------------------------------------------------------------------------------- /documentation/logo-with-name.svg: -------------------------------------------------------------------------------- 1 | 2 | Based on Hexagon by Chris Kerr from the Noun Projectimage/svg+xmlBased on Hexagon by Chris Kerr from the Noun ProjectScriptBox -------------------------------------------------------------------------------- /documentation/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calebmpeterson/scriptbox/add275dc908ea2d9521768dabee2bbc679f8ac4b/documentation/logo.png -------------------------------------------------------------------------------- /documentation/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | Based on Hexagon by Chris Kerr from the Noun Projectimage/svg+xmlBased on Hexagon by Chris Kerr from the Noun Project -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scriptbox", 3 | "publisher": "cubicle6", 4 | "repository": { 5 | "type": "git", 6 | "url": "https://github.com/calebmpeterson/scriptbox.git" 7 | }, 8 | "bugs": { 9 | "url": "https://github.com/calebmpeterson/scriptbox/issues", 10 | "email": "caleb.peterson@cubicle6.com" 11 | }, 12 | "license": "MIT", 13 | "displayName": "ScriptBox", 14 | "description": "Extend VS Code without dealing with extension boilerplate", 15 | "icon": "documentation/logo.png", 16 | "version": "8.5.0", 17 | "engines": { 18 | "vscode": "^1.66.0" 19 | }, 20 | "categories": [ 21 | "Other" 22 | ], 23 | "keywords": [ 24 | "vscode", 25 | "script", 26 | "scripting", 27 | "javascript", 28 | "hackable", 29 | "automation", 30 | "emacs", 31 | "multi-root ready" 32 | ], 33 | "activationEvents": [ 34 | "onLanguage:javascript" 35 | ], 36 | "main": "./out/extension", 37 | "contributes": { 38 | "commands": [ 39 | { 40 | "command": "scriptbox.createScript", 41 | "title": "ScriptBox: Create Script" 42 | }, 43 | { 44 | "command": "scriptbox.editScript", 45 | "title": "ScriptBox: Edit Script" 46 | }, 47 | { 48 | "command": "scriptbox.runScript", 49 | "title": "ScriptBox: Run Script" 50 | }, 51 | { 52 | "command": "scriptbox.runSelection", 53 | "title": "ScriptBox: Eval Selection" 54 | }, 55 | { 56 | "command": "scriptbox.openScratch", 57 | "title": "ScriptBox: Open Scratch" 58 | } 59 | ] 60 | }, 61 | "scripts": { 62 | "typecheck": "tsc --noEmit -p ./", 63 | "vscode:prepublish": "yarn run compile", 64 | "vscode:package": "yarn run precompile && yarn vsce package", 65 | "precompile": "rm -rf ./out", 66 | "compile": "tsc -p ./", 67 | "watch": "tsc -watch -p ./", 68 | "test": "yarn run compile && node ./node_modules/vscode/bin/test", 69 | "publish:patch": "vsce publish patch && git push", 70 | "publish:minor": "vsce publish minor && git push", 71 | "publish:major": "vsce publish major && git push" 72 | }, 73 | "devDependencies": { 74 | "@types/dotenv": "^8.2.0", 75 | "@types/lodash": "^4.14.191", 76 | "@types/mocha": "^7.0.1", 77 | "@types/node": "^13.7.7", 78 | "@types/vscode": "^1.53.0", 79 | "tslint": "^6.0.0", 80 | "typescript": "^4.1.3", 81 | "vsce": "^2.8.0", 82 | "vscode-test": "^1.5.0" 83 | }, 84 | "dependencies": { 85 | "dotenv": "^16.0.3", 86 | "lodash": "^4.17.21" 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | export const SCRATCH_FILENAME = ".scratch.js"; 2 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import * as vscode from "vscode"; 4 | import { writeFileSync, existsSync } from "fs"; 5 | import { extname } from "path"; 6 | import * as _ from "lodash"; 7 | import * as dotenv from "dotenv"; 8 | import { getScriptDir } from "./utils/getScriptDir"; 9 | import { SCRATCH_FILENAME } from "./constants"; 10 | import { getCurrentTextSelection } from "./utils/getCurrentTextSelection"; 11 | import { ensureScriptDir } from "./utils/ensureScriptDir"; 12 | import { getScratchFilename } from "./utils/getScratchFilename"; 13 | import { createQuickPickItemsForScripts } from "./utils/createQuickPickItemsForScripts"; 14 | import { evaluateScratch } from "./utils/evaluateScratch"; 15 | import { enumerateScripts } from "./utils/enumerateScripts"; 16 | import { openScriptForEditing } from "./utils/openScriptForEditing"; 17 | import { initializeConsole } from "./utils/initializeConsole"; 18 | import { SCRIPT_TEMPLATE } from "./templates/script"; 19 | import { SCRATCH_TEMPLATE } from "./templates/scratch"; 20 | import { executeScript } from "./utils/executeScript"; 21 | import { loadScript } from "./utils/loadScript"; 22 | 23 | // Load ~/.scriptbox/.env file 24 | dotenv.config({ path: getScriptDir() + ".env" }); 25 | 26 | export function activate(context: vscode.ExtensionContext) { 27 | const outputChannel = initializeConsole(); 28 | 29 | ensureScriptDir(getScriptDir()); 30 | 31 | context.subscriptions.push( 32 | vscode.commands.registerCommand("scriptbox.createScript", async () => { 33 | try { 34 | vscode.window 35 | .showInputBox({ 36 | placeHolder: "Script Name.js", 37 | }) 38 | .then((scriptName) => { 39 | const newScriptPath = 40 | getScriptDir() + scriptName + (extname(scriptName) || ".js"); 41 | 42 | writeFileSync(newScriptPath, SCRIPT_TEMPLATE, "UTF-8"); 43 | 44 | openScriptForEditing(newScriptPath); 45 | }); 46 | } catch (err) { 47 | vscode.window.showErrorMessage(err.message); 48 | } 49 | }) 50 | ); 51 | 52 | context.subscriptions.push( 53 | vscode.commands.registerCommand("scriptbox.editScript", async () => { 54 | try { 55 | const scripts = await enumerateScripts(getScriptDir()); 56 | 57 | const scriptItems = createQuickPickItemsForScripts(scripts); 58 | 59 | const pickedScript = await vscode.window.showQuickPick(scriptItems); 60 | 61 | if (pickedScript) { 62 | const pickedScriptPath = getScriptDir() + pickedScript.script; 63 | 64 | openScriptForEditing(pickedScriptPath); 65 | } 66 | } catch (err) { 67 | vscode.window.showErrorMessage(err.message); 68 | } 69 | }) 70 | ); 71 | 72 | context.subscriptions.push( 73 | vscode.commands.registerCommand( 74 | "scriptbox.runScript", 75 | async (pickedScript?: string) => { 76 | try { 77 | if (!pickedScript) { 78 | const scripts = await enumerateScripts(getScriptDir()); 79 | 80 | const scriptItems = createQuickPickItemsForScripts(scripts); 81 | 82 | const pickedScriptItem = await vscode.window.showQuickPick( 83 | scriptItems 84 | ); 85 | pickedScript = pickedScriptItem?.script; 86 | } 87 | 88 | if (pickedScript) { 89 | const pickedScriptPath = getScriptDir() + pickedScript; 90 | const module = loadScript(pickedScriptPath); 91 | executeScript(module, pickedScript); 92 | } 93 | } catch (err) { 94 | vscode.window.showErrorMessage(err.message); 95 | } 96 | } 97 | ) 98 | ); 99 | 100 | context.subscriptions.push( 101 | vscode.commands.registerCommand("scriptbox.runSelection", async () => { 102 | const editor = vscode.window.activeTextEditor; 103 | 104 | try { 105 | const [selection] = getCurrentTextSelection(editor); 106 | const result = eval(selection.content); 107 | console.log(`Result`, result); 108 | } catch (err) { 109 | vscode.window.showErrorMessage(`Evaluation error: ${err.message}`); 110 | console.error(err); 111 | } 112 | }) 113 | ); 114 | 115 | context.subscriptions.push( 116 | vscode.commands.registerCommand("scriptbox.openScratch", async () => { 117 | const filename = `${getScriptDir()}${SCRATCH_FILENAME}`; 118 | 119 | if (!existsSync(filename)) { 120 | writeFileSync(filename, SCRATCH_TEMPLATE, "UTF-8"); 121 | } 122 | 123 | openScriptForEditing(filename); 124 | }) 125 | ); 126 | 127 | // Re-evaluate scratch file on change 128 | context.subscriptions.push( 129 | vscode.workspace.onDidChangeTextDocument( 130 | (e: vscode.TextDocumentChangeEvent) => { 131 | const scratchFilename = getScratchFilename(); 132 | const didScratchChange = 133 | e.document.fileName.toLowerCase() === scratchFilename.toLowerCase(); 134 | 135 | if (didScratchChange) { 136 | const code = e.document.getText(); 137 | evaluateScratch(outputChannel, code); 138 | } 139 | } 140 | ) 141 | ); 142 | } 143 | 144 | // this method is called when your extension is deactivated 145 | export function deactivate() {} 146 | -------------------------------------------------------------------------------- /src/templates/scratch.ts: -------------------------------------------------------------------------------- 1 | export const SCRATCH_TEMPLATE = ` 2 | // JavaScript REPL 3 | // Lodash is already imported 4 | 5 | `.trim(); 6 | -------------------------------------------------------------------------------- /src/templates/script.ts: -------------------------------------------------------------------------------- 1 | export const SCRIPT_TEMPLATE = ` 2 | // This function can be async; a busy indicator will show in VS Code 3 | module.exports = (selection) => { 4 | // selection is a string containing: 5 | // 1. the current text selection 6 | // 2. the entire contents of the active editor when nothing is selected 7 | return selection; 8 | }; 9 | `.trim(); 10 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { Selection } from "vscode"; 2 | 3 | export type ScriptFunctionFileIntent = { 4 | filename: string; 5 | content: string; 6 | }; 7 | 8 | export type ScriptFunctionFileIntents = ScriptFunctionFileIntent[]; 9 | 10 | export type ScriptFunctionReturnType = 11 | | ScriptFunctionFileIntents 12 | | string 13 | | undefined 14 | | null; 15 | 16 | export type ScriptFunctionResult = 17 | | ScriptFunctionReturnType 18 | | Promise; 19 | 20 | export type ScriptFunction = ( 21 | selectionOrActiveEditorContent: string 22 | ) => ScriptFunctionResult; 23 | 24 | export type QuickPickScriptItem = { 25 | script: string; 26 | label: string; 27 | description: string; 28 | }; 29 | 30 | export type ExecutionTarget = { content: string; selection: Selection }; 31 | export type ExecutionTargets = ExecutionTarget[]; 32 | -------------------------------------------------------------------------------- /src/utils/createQuickPickItemsForScripts.ts: -------------------------------------------------------------------------------- 1 | import { QuickPickScriptItem } from "../types"; 2 | 3 | export const createQuickPickItemsForScripts = ( 4 | scripts: string[] 5 | ): QuickPickScriptItem[] => 6 | scripts.map((script) => ({ 7 | script, 8 | label: script, 9 | description: `Execute '${script}' on the selected text`, 10 | })); 11 | -------------------------------------------------------------------------------- /src/utils/ensureScriptDir.ts: -------------------------------------------------------------------------------- 1 | import { mkdirSync } from "fs"; 2 | 3 | export const ensureScriptDir = (scriptDir: string) => { 4 | try { 5 | mkdirSync(scriptDir); 6 | } catch (err) { 7 | // Do nothing? The scriptDir must already exist 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /src/utils/enumerateScripts.ts: -------------------------------------------------------------------------------- 1 | import { readdir } from "fs"; 2 | import { getScriptDir } from "./getScriptDir"; 3 | import { isScript } from "./isScript"; 4 | 5 | export const enumerateScripts = (dir: string) => 6 | new Promise((resolve, reject) => 7 | readdir(dir, (err, files) => { 8 | if (err && err.code === "ENOENT") { 9 | reject(new Error(`${getScriptDir()} does not exist`)); 10 | } else if (err) { 11 | reject(err); 12 | } else if (files && files.filter(isScript).length === 0) { 13 | reject(new Error(`${getScriptDir()} contains no scripts`)); 14 | } else { 15 | resolve(files.filter(isScript)); 16 | } 17 | }) 18 | ); 19 | -------------------------------------------------------------------------------- /src/utils/evaluateScratch.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import * as vm from "vm"; 3 | import * as _ from "lodash"; 4 | 5 | export const evaluateScratch = _.debounce( 6 | (outputChannel: vscode.OutputChannel, code: string) => { 7 | try { 8 | const ctx = vm.createContext({ 9 | // This is where default imports for the scratch REPL go ... 10 | _, 11 | }); 12 | outputChannel.clear(); 13 | const result = vm.runInContext(code, ctx); 14 | outputChannel.show(true); 15 | console.log(JSON.stringify(result, null, " ")); 16 | } catch (err) { 17 | outputChannel.appendLine(`Failed to execute script ${err.message}`); 18 | } 19 | }, 20 | 300 21 | ); 22 | -------------------------------------------------------------------------------- /src/utils/executeScript.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import * as _ from "lodash"; 3 | import { ScriptFunction, ScriptFunctionResult } from "../types"; 4 | import { getCurrentTextSelection } from "./getCurrentTextSelection"; 5 | import { isPromise } from "./isPromise"; 6 | import { shouldUpdateCurrentTextSelection } from "./shouldUpdateCurrentTextSelection"; 7 | import { updateSelection } from "./updateCurrentTextSelection"; 8 | 9 | export const executeScript = (module: ScriptFunction, scriptName: string) => { 10 | const targetEditor = vscode.window.activeTextEditor; 11 | 12 | vscode.window.withProgress( 13 | { 14 | location: vscode.ProgressLocation.Notification, 15 | title: `Running script ${scriptName}`, 16 | cancellable: false, 17 | }, 18 | async () => { 19 | const context = vscode; 20 | const targets = getCurrentTextSelection(targetEditor); 21 | for (const target of targets) { 22 | const args = [target.content]; 23 | const transformed: ScriptFunctionResult = module.apply(context, args); 24 | 25 | try { 26 | const result = isPromise(transformed) 27 | ? await transformed 28 | : transformed; 29 | 30 | if (shouldUpdateCurrentTextSelection(result)) { 31 | await updateSelection(result, targetEditor, target.selection); 32 | } 33 | } catch (e) { 34 | vscode.window.showErrorMessage(e.message); 35 | } 36 | } 37 | } 38 | ); 39 | }; 40 | -------------------------------------------------------------------------------- /src/utils/getCurrentTextSelection.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import { ExecutionTarget, ExecutionTargets } from "../types"; 3 | 4 | export const getCurrentTextSelection = ( 5 | editor: vscode.TextEditor | undefined 6 | ): ExecutionTargets | undefined => { 7 | if (!editor) { 8 | return; 9 | } 10 | 11 | if (editor.selections.length > 1) { 12 | return editor.selections.map((selection) => ({ 13 | content: editor.document.getText(selection), 14 | selection, 15 | })); 16 | } 17 | 18 | if (editor.selection.isEmpty) { 19 | return [ 20 | { content: editor.document.getText(), selection: editor.selection }, 21 | ]; 22 | } 23 | 24 | return [ 25 | { 26 | content: editor.document.getText(editor.selection), 27 | selection: editor.selection, 28 | }, 29 | ]; 30 | }; 31 | -------------------------------------------------------------------------------- /src/utils/getScratchFilename.ts: -------------------------------------------------------------------------------- 1 | import { SCRATCH_FILENAME } from "../constants"; 2 | import { getScriptDir } from "./getScriptDir"; 3 | 4 | export const getScratchFilename = () => `${getScriptDir()}${SCRATCH_FILENAME}`; 5 | -------------------------------------------------------------------------------- /src/utils/getScriptDir.ts: -------------------------------------------------------------------------------- 1 | import { sep } from "path"; 2 | import { homedir } from "os"; 3 | 4 | export const getScriptDir = () => homedir() + `${sep}.scriptbox${sep}`; 5 | -------------------------------------------------------------------------------- /src/utils/initializeConsole.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | 3 | const createLogger = 4 | (outputChannel: vscode.OutputChannel, level: string) => 5 | (message?: string, ...args: any[]) => { 6 | outputChannel.appendLine([level, message, ...args].join(" ")); 7 | }; 8 | 9 | export const initializeConsole = () => { 10 | const outputChannel = vscode.window.createOutputChannel("ScriptBox"); 11 | 12 | return outputChannel; 13 | }; 14 | -------------------------------------------------------------------------------- /src/utils/isPromise.ts: -------------------------------------------------------------------------------- 1 | export const isPromise = (value: any): value is Promise => 2 | typeof value === "object" && 3 | "then" in value && 4 | typeof value.then === "function"; 5 | -------------------------------------------------------------------------------- /src/utils/isScript.ts: -------------------------------------------------------------------------------- 1 | import { SCRATCH_FILENAME } from "../constants"; 2 | 3 | export const isScript = (filename: string) => 4 | filename.endsWith(".js") && !filename.endsWith(SCRATCH_FILENAME); 5 | -------------------------------------------------------------------------------- /src/utils/isScriptFunctionFileIntent.ts: -------------------------------------------------------------------------------- 1 | import { isObject } from "lodash"; 2 | import { ScriptFunctionFileIntent, ScriptFunctionReturnType } from "../types"; 3 | 4 | export const isScriptFunctionFileIntent = ( 5 | result: unknown 6 | ): result is ScriptFunctionFileIntent => isObject(result); 7 | -------------------------------------------------------------------------------- /src/utils/loadScript.ts: -------------------------------------------------------------------------------- 1 | export const loadScript = (path: string) => { 2 | try { 3 | delete require.cache[require.resolve(path)]; 4 | return require(path); 5 | } catch (err) { 6 | throw new Error(`Error loading '${path}': ${err.message}`); 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/utils/openScriptForEditing.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | 3 | export const openScriptForEditing = (scriptPath: string) => { 4 | vscode.workspace.openTextDocument(scriptPath).then( 5 | (document) => 6 | vscode.window.showTextDocument( 7 | document, 8 | vscode.window.activeTextEditor 9 | ? vscode.window.activeTextEditor.viewColumn 10 | : 1 11 | ), 12 | (err) => { 13 | console.error(err); 14 | } 15 | ); 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/shouldUpdateCurrentTextSelection.ts: -------------------------------------------------------------------------------- 1 | export const shouldUpdateCurrentTextSelection = ( 2 | transformed: unknown | boolean | undefined | null 3 | ) => transformed !== undefined && transformed !== null && transformed !== false; 4 | -------------------------------------------------------------------------------- /src/utils/updateCurrentTextSelection.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import { isArray } from "lodash"; 3 | import * as path from "path"; 4 | import * as fs from "fs"; 5 | import { ScriptFunctionFileIntents } from "../types"; 6 | import { isScriptFunctionFileIntent } from "./isScriptFunctionFileIntent"; 7 | 8 | // TODO: rename to processScriptFunctionResults 9 | export const updateSelection = async ( 10 | update: string | ScriptFunctionFileIntents, 11 | editor: vscode.TextEditor | undefined, 12 | selection: vscode.Selection 13 | ) => { 14 | if (!editor) { 15 | return; 16 | } 17 | 18 | if (isArray(update)) { 19 | update.forEach((item) => { 20 | if (isScriptFunctionFileIntent(item)) { 21 | const basePath = editor.document.uri.fsPath; 22 | const targetPath = path.normalize( 23 | path.join(path.dirname(basePath), item.filename) 24 | ); 25 | 26 | fs.writeFileSync(targetPath, item.content, "utf8"); 27 | } 28 | }); 29 | } else { 30 | // Replace the entire document's content 31 | if (selection.isEmpty) { 32 | await editor.edit((builder) => { 33 | const currentText = editor.document.getText(); 34 | const definiteLastCharacter = currentText.length; 35 | const range = new vscode.Range( 36 | 0, 37 | 0, 38 | editor.document.lineCount, 39 | definiteLastCharacter 40 | ); 41 | builder.replace(range, update); 42 | }); 43 | } 44 | // Replace only the selection 45 | else { 46 | await editor.edit((builder) => { 47 | builder.replace(selection, update); 48 | }); 49 | } 50 | } 51 | }; 52 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | /* Strict Type-Checking Option */ 12 | "strict": false, /* enable all strict type-checking options */ 13 | /* Additional Checks */ 14 | "noUnusedLocals": false /* Report errors on unused locals. */ 15 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 16 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 17 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 18 | }, 19 | "exclude": [ 20 | "node_modules", 21 | ".vscode-test" 22 | ] 23 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-string-throw": true, 4 | "no-unused-expression": true, 5 | "no-duplicate-variable": true, 6 | "curly": true, 7 | "class-name": true, 8 | "semicolon": [ 9 | true, 10 | "always" 11 | ], 12 | "triple-equals": true 13 | }, 14 | "defaultSeverity": "warning" 15 | } -------------------------------------------------------------------------------- /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.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/highlight@^7.8.3": 13 | version "7.8.3" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 15 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@tootallnate/once@1": 22 | version "1.1.2" 23 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 24 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 25 | 26 | "@types/dotenv@^8.2.0": 27 | version "8.2.0" 28 | resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-8.2.0.tgz#5cd64710c3c98e82d9d15844375a33bf1b45d053" 29 | integrity sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw== 30 | dependencies: 31 | dotenv "*" 32 | 33 | "@types/lodash@^4.14.191": 34 | version "4.14.191" 35 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" 36 | integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== 37 | 38 | "@types/mocha@^7.0.1": 39 | version "7.0.1" 40 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.1.tgz#5d7ec2a789a1f77c59b7ad071b9d50bf1abbfc9e" 41 | integrity sha512-L/Nw/2e5KUaprNJoRA33oly+M8X8n0K+FwLTbYqwTcR14wdPWeRkigBLfSFpN/Asf9ENZTMZwLxjtjeYucAA4Q== 42 | 43 | "@types/node@^13.7.7": 44 | version "13.7.7" 45 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.7.tgz#1628e6461ba8cc9b53196dfeaeec7b07fa6eea99" 46 | integrity sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg== 47 | 48 | "@types/vscode@^1.53.0": 49 | version "1.67.0" 50 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.67.0.tgz#8eaba41d1591aa02f5d960b7dfae3b16e066f08c" 51 | integrity sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g== 52 | 53 | agent-base@6: 54 | version "6.0.2" 55 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 56 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 57 | dependencies: 58 | debug "4" 59 | 60 | ansi-regex@^2.0.0: 61 | version "2.1.1" 62 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 63 | integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 64 | 65 | ansi-regex@^5.0.1: 66 | version "5.0.1" 67 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 68 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 69 | 70 | ansi-styles@^3.2.1: 71 | version "3.2.1" 72 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 73 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 74 | dependencies: 75 | color-convert "^1.9.0" 76 | 77 | aproba@^1.0.3: 78 | version "1.2.0" 79 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 80 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 81 | 82 | are-we-there-yet@~1.1.2: 83 | version "1.1.7" 84 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" 85 | integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== 86 | dependencies: 87 | delegates "^1.0.0" 88 | readable-stream "^2.0.6" 89 | 90 | argparse@^1.0.7: 91 | version "1.0.10" 92 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 93 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 94 | dependencies: 95 | sprintf-js "~1.0.2" 96 | 97 | argparse@^2.0.1: 98 | version "2.0.1" 99 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 100 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 101 | 102 | azure-devops-node-api@^11.0.1: 103 | version "11.1.1" 104 | resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz#dd1356031fa4e334e016732594e8fee0f68268c4" 105 | integrity sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg== 106 | dependencies: 107 | tunnel "0.0.6" 108 | typed-rest-client "^1.8.4" 109 | 110 | balanced-match@^1.0.0: 111 | version "1.0.0" 112 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 113 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 114 | 115 | base64-js@^1.3.1: 116 | version "1.5.1" 117 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 118 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 119 | 120 | big-integer@^1.6.17: 121 | version "1.6.51" 122 | resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" 123 | integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== 124 | 125 | binary@~0.3.0: 126 | version "0.3.0" 127 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 128 | integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== 129 | dependencies: 130 | buffers "~0.1.1" 131 | chainsaw "~0.1.0" 132 | 133 | bl@^4.0.3: 134 | version "4.1.0" 135 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 136 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 137 | dependencies: 138 | buffer "^5.5.0" 139 | inherits "^2.0.4" 140 | readable-stream "^3.4.0" 141 | 142 | bluebird@~3.4.1: 143 | version "3.4.7" 144 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 145 | integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== 146 | 147 | boolbase@^1.0.0: 148 | version "1.0.0" 149 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 150 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== 151 | 152 | brace-expansion@^1.1.7: 153 | version "1.1.11" 154 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 155 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 156 | dependencies: 157 | balanced-match "^1.0.0" 158 | concat-map "0.0.1" 159 | 160 | buffer-crc32@~0.2.3: 161 | version "0.2.13" 162 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 163 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== 164 | 165 | buffer-indexof-polyfill@~1.0.0: 166 | version "1.0.2" 167 | resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" 168 | integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== 169 | 170 | buffer@^5.5.0: 171 | version "5.7.1" 172 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 173 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 174 | dependencies: 175 | base64-js "^1.3.1" 176 | ieee754 "^1.1.13" 177 | 178 | buffers@~0.1.1: 179 | version "0.1.1" 180 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 181 | integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== 182 | 183 | builtin-modules@^1.1.1: 184 | version "1.1.1" 185 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 186 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 187 | 188 | call-bind@^1.0.0: 189 | version "1.0.2" 190 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 191 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 192 | dependencies: 193 | function-bind "^1.1.1" 194 | get-intrinsic "^1.0.2" 195 | 196 | chainsaw@~0.1.0: 197 | version "0.1.0" 198 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 199 | integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== 200 | dependencies: 201 | traverse ">=0.3.0 <0.4" 202 | 203 | chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: 204 | version "2.4.2" 205 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 206 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 207 | dependencies: 208 | ansi-styles "^3.2.1" 209 | escape-string-regexp "^1.0.5" 210 | supports-color "^5.3.0" 211 | 212 | cheerio-select@^2.1.0: 213 | version "2.1.0" 214 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 215 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 216 | dependencies: 217 | boolbase "^1.0.0" 218 | css-select "^5.1.0" 219 | css-what "^6.1.0" 220 | domelementtype "^2.3.0" 221 | domhandler "^5.0.3" 222 | domutils "^3.0.1" 223 | 224 | cheerio@^1.0.0-rc.9: 225 | version "1.0.0-rc.11" 226 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.11.tgz#1be84be1a126958366bcc57a11648cd9b30a60c2" 227 | integrity sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag== 228 | dependencies: 229 | cheerio-select "^2.1.0" 230 | dom-serializer "^2.0.0" 231 | domhandler "^5.0.3" 232 | domutils "^3.0.1" 233 | htmlparser2 "^8.0.1" 234 | parse5 "^7.0.0" 235 | parse5-htmlparser2-tree-adapter "^7.0.0" 236 | tslib "^2.4.0" 237 | 238 | chownr@^1.1.1: 239 | version "1.1.4" 240 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 241 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 242 | 243 | code-point-at@^1.0.0: 244 | version "1.1.0" 245 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 246 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 247 | 248 | color-convert@^1.9.0: 249 | version "1.9.3" 250 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 251 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 252 | dependencies: 253 | color-name "1.1.3" 254 | 255 | color-name@1.1.3: 256 | version "1.1.3" 257 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 258 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 259 | 260 | commander@^2.12.1: 261 | version "2.20.3" 262 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 263 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 264 | 265 | commander@^6.1.0: 266 | version "6.2.1" 267 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 268 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 269 | 270 | concat-map@0.0.1: 271 | version "0.0.1" 272 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 273 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 274 | 275 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 276 | version "1.1.0" 277 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 278 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 279 | 280 | core-util-is@~1.0.0: 281 | version "1.0.3" 282 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 283 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 284 | 285 | css-select@^5.1.0: 286 | version "5.1.0" 287 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 288 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 289 | dependencies: 290 | boolbase "^1.0.0" 291 | css-what "^6.1.0" 292 | domhandler "^5.0.2" 293 | domutils "^3.0.1" 294 | nth-check "^2.0.1" 295 | 296 | css-what@^6.1.0: 297 | version "6.1.0" 298 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" 299 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 300 | 301 | debug@4: 302 | version "4.3.4" 303 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 304 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 305 | dependencies: 306 | ms "2.1.2" 307 | 308 | decompress-response@^6.0.0: 309 | version "6.0.0" 310 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 311 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 312 | dependencies: 313 | mimic-response "^3.1.0" 314 | 315 | deep-extend@^0.6.0: 316 | version "0.6.0" 317 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 318 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 319 | 320 | delegates@^1.0.0: 321 | version "1.0.0" 322 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 323 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 324 | 325 | detect-libc@^2.0.0: 326 | version "2.0.1" 327 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 328 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 329 | 330 | diff@^4.0.1: 331 | version "4.0.2" 332 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 333 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 334 | 335 | dom-serializer@^2.0.0: 336 | version "2.0.0" 337 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 338 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 339 | dependencies: 340 | domelementtype "^2.3.0" 341 | domhandler "^5.0.2" 342 | entities "^4.2.0" 343 | 344 | domelementtype@^2.3.0: 345 | version "2.3.0" 346 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" 347 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== 348 | 349 | domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: 350 | version "5.0.3" 351 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 352 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 353 | dependencies: 354 | domelementtype "^2.3.0" 355 | 356 | domutils@^3.0.1: 357 | version "3.0.1" 358 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" 359 | integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== 360 | dependencies: 361 | dom-serializer "^2.0.0" 362 | domelementtype "^2.3.0" 363 | domhandler "^5.0.1" 364 | 365 | dotenv@*, dotenv@^16.0.3: 366 | version "16.0.3" 367 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" 368 | integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== 369 | 370 | duplexer2@~0.1.4: 371 | version "0.1.4" 372 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 373 | integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 374 | dependencies: 375 | readable-stream "^2.0.2" 376 | 377 | emoji-regex@^8.0.0: 378 | version "8.0.0" 379 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 380 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 381 | 382 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 383 | version "1.4.4" 384 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 385 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 386 | dependencies: 387 | once "^1.4.0" 388 | 389 | entities@^4.2.0, entities@^4.3.0: 390 | version "4.3.0" 391 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" 392 | integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== 393 | 394 | entities@~2.1.0: 395 | version "2.1.0" 396 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" 397 | integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 398 | 399 | escape-string-regexp@^1.0.5: 400 | version "1.0.5" 401 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 402 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 403 | 404 | esprima@^4.0.0: 405 | version "4.0.1" 406 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 407 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 408 | 409 | esutils@^2.0.2: 410 | version "2.0.3" 411 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 412 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 413 | 414 | expand-template@^2.0.3: 415 | version "2.0.3" 416 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 417 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 418 | 419 | fd-slicer@~1.1.0: 420 | version "1.1.0" 421 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 422 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 423 | dependencies: 424 | pend "~1.2.0" 425 | 426 | fs-constants@^1.0.0: 427 | version "1.0.0" 428 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 429 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 430 | 431 | fs.realpath@^1.0.0: 432 | version "1.0.0" 433 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 434 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 435 | 436 | fstream@^1.0.12: 437 | version "1.0.12" 438 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 439 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 440 | dependencies: 441 | graceful-fs "^4.1.2" 442 | inherits "~2.0.0" 443 | mkdirp ">=0.5 0" 444 | rimraf "2" 445 | 446 | function-bind@^1.1.1: 447 | version "1.1.1" 448 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 449 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 450 | 451 | gauge@~2.7.3: 452 | version "2.7.4" 453 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 454 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 455 | dependencies: 456 | aproba "^1.0.3" 457 | console-control-strings "^1.0.0" 458 | has-unicode "^2.0.0" 459 | object-assign "^4.1.0" 460 | signal-exit "^3.0.0" 461 | string-width "^1.0.1" 462 | strip-ansi "^3.0.1" 463 | wide-align "^1.1.0" 464 | 465 | get-intrinsic@^1.0.2: 466 | version "1.1.1" 467 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 468 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 469 | dependencies: 470 | function-bind "^1.1.1" 471 | has "^1.0.3" 472 | has-symbols "^1.0.1" 473 | 474 | github-from-package@0.0.0: 475 | version "0.0.0" 476 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 477 | integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= 478 | 479 | glob@^7.0.6, glob@^7.1.3: 480 | version "7.2.3" 481 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 482 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 483 | dependencies: 484 | fs.realpath "^1.0.0" 485 | inflight "^1.0.4" 486 | inherits "2" 487 | minimatch "^3.1.1" 488 | once "^1.3.0" 489 | path-is-absolute "^1.0.0" 490 | 491 | glob@^7.1.1: 492 | version "7.1.6" 493 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 494 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 495 | dependencies: 496 | fs.realpath "^1.0.0" 497 | inflight "^1.0.4" 498 | inherits "2" 499 | minimatch "^3.0.4" 500 | once "^1.3.0" 501 | path-is-absolute "^1.0.0" 502 | 503 | graceful-fs@^4.1.2, graceful-fs@^4.2.2: 504 | version "4.2.10" 505 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 506 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 507 | 508 | has-flag@^3.0.0: 509 | version "3.0.0" 510 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 511 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 512 | 513 | has-symbols@^1.0.1: 514 | version "1.0.3" 515 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 516 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 517 | 518 | has-unicode@^2.0.0: 519 | version "2.0.1" 520 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 521 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 522 | 523 | has@^1.0.3: 524 | version "1.0.3" 525 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 526 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 527 | dependencies: 528 | function-bind "^1.1.1" 529 | 530 | hosted-git-info@^4.0.2: 531 | version "4.1.0" 532 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 533 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 534 | dependencies: 535 | lru-cache "^6.0.0" 536 | 537 | htmlparser2@^8.0.1: 538 | version "8.0.1" 539 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" 540 | integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== 541 | dependencies: 542 | domelementtype "^2.3.0" 543 | domhandler "^5.0.2" 544 | domutils "^3.0.1" 545 | entities "^4.3.0" 546 | 547 | http-proxy-agent@^4.0.1: 548 | version "4.0.1" 549 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 550 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 551 | dependencies: 552 | "@tootallnate/once" "1" 553 | agent-base "6" 554 | debug "4" 555 | 556 | https-proxy-agent@^5.0.0: 557 | version "5.0.1" 558 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 559 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 560 | dependencies: 561 | agent-base "6" 562 | debug "4" 563 | 564 | ieee754@^1.1.13: 565 | version "1.2.1" 566 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 567 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 568 | 569 | inflight@^1.0.4: 570 | version "1.0.6" 571 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 572 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 573 | dependencies: 574 | once "^1.3.0" 575 | wrappy "1" 576 | 577 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: 578 | version "2.0.4" 579 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 580 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 581 | 582 | ini@~1.3.0: 583 | version "1.3.8" 584 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 585 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 586 | 587 | is-fullwidth-code-point@^1.0.0: 588 | version "1.0.0" 589 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 590 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 591 | dependencies: 592 | number-is-nan "^1.0.0" 593 | 594 | is-fullwidth-code-point@^3.0.0: 595 | version "3.0.0" 596 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 597 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 598 | 599 | isarray@~1.0.0: 600 | version "1.0.0" 601 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 602 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 603 | 604 | js-tokens@^4.0.0: 605 | version "4.0.0" 606 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 607 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 608 | 609 | js-yaml@^3.13.1: 610 | version "3.13.1" 611 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 612 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 613 | dependencies: 614 | argparse "^1.0.7" 615 | esprima "^4.0.0" 616 | 617 | keytar@^7.7.0: 618 | version "7.9.0" 619 | resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" 620 | integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== 621 | dependencies: 622 | node-addon-api "^4.3.0" 623 | prebuild-install "^7.0.1" 624 | 625 | leven@^3.1.0: 626 | version "3.1.0" 627 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 628 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 629 | 630 | linkify-it@^3.0.1: 631 | version "3.0.3" 632 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" 633 | integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== 634 | dependencies: 635 | uc.micro "^1.0.1" 636 | 637 | listenercount@~1.0.1: 638 | version "1.0.1" 639 | resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" 640 | integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= 641 | 642 | lodash@^4.17.21: 643 | version "4.17.21" 644 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 645 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 646 | 647 | lru-cache@^6.0.0: 648 | version "6.0.0" 649 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 650 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 651 | dependencies: 652 | yallist "^4.0.0" 653 | 654 | markdown-it@^12.3.2: 655 | version "12.3.2" 656 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" 657 | integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== 658 | dependencies: 659 | argparse "^2.0.1" 660 | entities "~2.1.0" 661 | linkify-it "^3.0.1" 662 | mdurl "^1.0.1" 663 | uc.micro "^1.0.5" 664 | 665 | mdurl@^1.0.1: 666 | version "1.0.1" 667 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 668 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 669 | 670 | mime@^1.3.4: 671 | version "1.6.0" 672 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 673 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 674 | 675 | mimic-response@^3.1.0: 676 | version "3.1.0" 677 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 678 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 679 | 680 | minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1: 681 | version "3.1.2" 682 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 683 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 684 | dependencies: 685 | brace-expansion "^1.1.7" 686 | 687 | minimist@0.0.8: 688 | version "0.0.8" 689 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 690 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 691 | 692 | minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: 693 | version "1.2.6" 694 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 695 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 696 | 697 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 698 | version "0.5.3" 699 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 700 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 701 | 702 | "mkdirp@>=0.5 0": 703 | version "0.5.6" 704 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 705 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 706 | dependencies: 707 | minimist "^1.2.6" 708 | 709 | mkdirp@^0.5.1: 710 | version "0.5.1" 711 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 712 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 713 | dependencies: 714 | minimist "0.0.8" 715 | 716 | ms@2.1.2: 717 | version "2.1.2" 718 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 719 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 720 | 721 | mute-stream@~0.0.4: 722 | version "0.0.8" 723 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 724 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 725 | 726 | napi-build-utils@^1.0.1: 727 | version "1.0.2" 728 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 729 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 730 | 731 | node-abi@^3.3.0: 732 | version "3.15.0" 733 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.15.0.tgz#cd9ac8c58328129b49998cc6fa16aa5506152716" 734 | integrity sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA== 735 | dependencies: 736 | semver "^7.3.5" 737 | 738 | node-addon-api@^4.3.0: 739 | version "4.3.0" 740 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" 741 | integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== 742 | 743 | npmlog@^4.0.1: 744 | version "4.1.2" 745 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 746 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 747 | dependencies: 748 | are-we-there-yet "~1.1.2" 749 | console-control-strings "~1.1.0" 750 | gauge "~2.7.3" 751 | set-blocking "~2.0.0" 752 | 753 | nth-check@^2.0.1: 754 | version "2.1.1" 755 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" 756 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== 757 | dependencies: 758 | boolbase "^1.0.0" 759 | 760 | number-is-nan@^1.0.0: 761 | version "1.0.1" 762 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 763 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 764 | 765 | object-assign@^4.1.0: 766 | version "4.1.1" 767 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 768 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 769 | 770 | object-inspect@^1.9.0: 771 | version "1.12.1" 772 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.1.tgz#28a661153bad7e470e4b01479ef1cb91ce511191" 773 | integrity sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA== 774 | 775 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 776 | version "1.4.0" 777 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 778 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 779 | dependencies: 780 | wrappy "1" 781 | 782 | parse-semver@^1.1.1: 783 | version "1.1.1" 784 | resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" 785 | integrity sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= 786 | dependencies: 787 | semver "^5.1.0" 788 | 789 | parse5-htmlparser2-tree-adapter@^7.0.0: 790 | version "7.0.0" 791 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" 792 | integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== 793 | dependencies: 794 | domhandler "^5.0.2" 795 | parse5 "^7.0.0" 796 | 797 | parse5@^7.0.0: 798 | version "7.0.0" 799 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" 800 | integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== 801 | dependencies: 802 | entities "^4.3.0" 803 | 804 | path-is-absolute@^1.0.0: 805 | version "1.0.1" 806 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 807 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 808 | 809 | path-parse@^1.0.6: 810 | version "1.0.6" 811 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 812 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 813 | 814 | pend@~1.2.0: 815 | version "1.2.0" 816 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 817 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 818 | 819 | prebuild-install@^7.0.1: 820 | version "7.1.0" 821 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.0.tgz#991b6ac16c81591ba40a6d5de93fb33673ac1370" 822 | integrity sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA== 823 | dependencies: 824 | detect-libc "^2.0.0" 825 | expand-template "^2.0.3" 826 | github-from-package "0.0.0" 827 | minimist "^1.2.3" 828 | mkdirp-classic "^0.5.3" 829 | napi-build-utils "^1.0.1" 830 | node-abi "^3.3.0" 831 | npmlog "^4.0.1" 832 | pump "^3.0.0" 833 | rc "^1.2.7" 834 | simple-get "^4.0.0" 835 | tar-fs "^2.0.0" 836 | tunnel-agent "^0.6.0" 837 | 838 | process-nextick-args@~2.0.0: 839 | version "2.0.1" 840 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 841 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 842 | 843 | pump@^3.0.0: 844 | version "3.0.0" 845 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 846 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 847 | dependencies: 848 | end-of-stream "^1.1.0" 849 | once "^1.3.1" 850 | 851 | qs@^6.9.1: 852 | version "6.10.3" 853 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 854 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== 855 | dependencies: 856 | side-channel "^1.0.4" 857 | 858 | rc@^1.2.7: 859 | version "1.2.8" 860 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 861 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 862 | dependencies: 863 | deep-extend "^0.6.0" 864 | ini "~1.3.0" 865 | minimist "^1.2.0" 866 | strip-json-comments "~2.0.1" 867 | 868 | read@^1.0.7: 869 | version "1.0.7" 870 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 871 | integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= 872 | dependencies: 873 | mute-stream "~0.0.4" 874 | 875 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: 876 | version "2.3.7" 877 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 878 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 879 | dependencies: 880 | core-util-is "~1.0.0" 881 | inherits "~2.0.3" 882 | isarray "~1.0.0" 883 | process-nextick-args "~2.0.0" 884 | safe-buffer "~5.1.1" 885 | string_decoder "~1.1.1" 886 | util-deprecate "~1.0.1" 887 | 888 | readable-stream@^3.1.1, readable-stream@^3.4.0: 889 | version "3.6.0" 890 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 891 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 892 | dependencies: 893 | inherits "^2.0.3" 894 | string_decoder "^1.1.1" 895 | util-deprecate "^1.0.1" 896 | 897 | resolve@^1.3.2: 898 | version "1.15.1" 899 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" 900 | integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== 901 | dependencies: 902 | path-parse "^1.0.6" 903 | 904 | rimraf@2: 905 | version "2.7.1" 906 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 907 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 908 | dependencies: 909 | glob "^7.1.3" 910 | 911 | rimraf@^3.0.0, rimraf@^3.0.2: 912 | version "3.0.2" 913 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 914 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 915 | dependencies: 916 | glob "^7.1.3" 917 | 918 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 919 | version "5.2.1" 920 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 921 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 922 | 923 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 924 | version "5.1.2" 925 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 926 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 927 | 928 | sax@>=0.6.0: 929 | version "1.2.4" 930 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 931 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 932 | 933 | semver@^5.1.0, semver@^5.3.0: 934 | version "5.7.2" 935 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" 936 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 937 | 938 | semver@^7.3.5: 939 | version "7.5.4" 940 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 941 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 942 | dependencies: 943 | lru-cache "^6.0.0" 944 | 945 | set-blocking@~2.0.0: 946 | version "2.0.0" 947 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 948 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 949 | 950 | setimmediate@~1.0.4: 951 | version "1.0.5" 952 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 953 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 954 | 955 | side-channel@^1.0.4: 956 | version "1.0.4" 957 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 958 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 959 | dependencies: 960 | call-bind "^1.0.0" 961 | get-intrinsic "^1.0.2" 962 | object-inspect "^1.9.0" 963 | 964 | signal-exit@^3.0.0: 965 | version "3.0.7" 966 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 967 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 968 | 969 | simple-concat@^1.0.0: 970 | version "1.0.1" 971 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 972 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 973 | 974 | simple-get@^4.0.0: 975 | version "4.0.1" 976 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 977 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 978 | dependencies: 979 | decompress-response "^6.0.0" 980 | once "^1.3.1" 981 | simple-concat "^1.0.0" 982 | 983 | sprintf-js@~1.0.2: 984 | version "1.0.3" 985 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 986 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 987 | 988 | string-width@^1.0.1: 989 | version "1.0.2" 990 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 991 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 992 | dependencies: 993 | code-point-at "^1.0.0" 994 | is-fullwidth-code-point "^1.0.0" 995 | strip-ansi "^3.0.0" 996 | 997 | "string-width@^1.0.2 || 2 || 3 || 4": 998 | version "4.2.3" 999 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1000 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1001 | dependencies: 1002 | emoji-regex "^8.0.0" 1003 | is-fullwidth-code-point "^3.0.0" 1004 | strip-ansi "^6.0.1" 1005 | 1006 | string_decoder@^1.1.1: 1007 | version "1.3.0" 1008 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1009 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1010 | dependencies: 1011 | safe-buffer "~5.2.0" 1012 | 1013 | string_decoder@~1.1.1: 1014 | version "1.1.1" 1015 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1016 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1017 | dependencies: 1018 | safe-buffer "~5.1.0" 1019 | 1020 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1021 | version "3.0.1" 1022 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1023 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1024 | dependencies: 1025 | ansi-regex "^2.0.0" 1026 | 1027 | strip-ansi@^6.0.1: 1028 | version "6.0.1" 1029 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1030 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1031 | dependencies: 1032 | ansi-regex "^5.0.1" 1033 | 1034 | strip-json-comments@~2.0.1: 1035 | version "2.0.1" 1036 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1037 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1038 | 1039 | supports-color@^5.3.0: 1040 | version "5.5.0" 1041 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1042 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1043 | dependencies: 1044 | has-flag "^3.0.0" 1045 | 1046 | tar-fs@^2.0.0: 1047 | version "2.1.2" 1048 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5" 1049 | integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== 1050 | dependencies: 1051 | chownr "^1.1.1" 1052 | mkdirp-classic "^0.5.2" 1053 | pump "^3.0.0" 1054 | tar-stream "^2.1.4" 1055 | 1056 | tar-stream@^2.1.4: 1057 | version "2.2.0" 1058 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1059 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1060 | dependencies: 1061 | bl "^4.0.3" 1062 | end-of-stream "^1.4.1" 1063 | fs-constants "^1.0.0" 1064 | inherits "^2.0.3" 1065 | readable-stream "^3.1.1" 1066 | 1067 | tmp@^0.2.1: 1068 | version "0.2.1" 1069 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1070 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1071 | dependencies: 1072 | rimraf "^3.0.0" 1073 | 1074 | "traverse@>=0.3.0 <0.4": 1075 | version "0.3.9" 1076 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 1077 | integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= 1078 | 1079 | tslib@^1.10.0, tslib@^1.8.1: 1080 | version "1.11.1" 1081 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 1082 | integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== 1083 | 1084 | tslib@^2.4.0: 1085 | version "2.4.0" 1086 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 1087 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1088 | 1089 | tslint@^6.0.0: 1090 | version "6.0.0" 1091 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.0.0.tgz#1c0148beac4779924216302f192cdaa153618310" 1092 | integrity sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA== 1093 | dependencies: 1094 | "@babel/code-frame" "^7.0.0" 1095 | builtin-modules "^1.1.1" 1096 | chalk "^2.3.0" 1097 | commander "^2.12.1" 1098 | diff "^4.0.1" 1099 | glob "^7.1.1" 1100 | js-yaml "^3.13.1" 1101 | minimatch "^3.0.4" 1102 | mkdirp "^0.5.1" 1103 | resolve "^1.3.2" 1104 | semver "^5.3.0" 1105 | tslib "^1.10.0" 1106 | tsutils "^2.29.0" 1107 | 1108 | tsutils@^2.29.0: 1109 | version "2.29.0" 1110 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 1111 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 1112 | dependencies: 1113 | tslib "^1.8.1" 1114 | 1115 | tunnel-agent@^0.6.0: 1116 | version "0.6.0" 1117 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1118 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1119 | dependencies: 1120 | safe-buffer "^5.0.1" 1121 | 1122 | tunnel@0.0.6: 1123 | version "0.0.6" 1124 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 1125 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 1126 | 1127 | typed-rest-client@^1.8.4: 1128 | version "1.8.6" 1129 | resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" 1130 | integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== 1131 | dependencies: 1132 | qs "^6.9.1" 1133 | tunnel "0.0.6" 1134 | underscore "^1.12.1" 1135 | 1136 | typescript@^4.1.3: 1137 | version "4.6.4" 1138 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" 1139 | integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== 1140 | 1141 | uc.micro@^1.0.1, uc.micro@^1.0.5: 1142 | version "1.0.6" 1143 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 1144 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 1145 | 1146 | underscore@^1.12.1: 1147 | version "1.13.3" 1148 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.3.tgz#54bc95f7648c5557897e5e968d0f76bc062c34ee" 1149 | integrity sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA== 1150 | 1151 | unzipper@^0.10.11: 1152 | version "0.10.11" 1153 | resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" 1154 | integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== 1155 | dependencies: 1156 | big-integer "^1.6.17" 1157 | binary "~0.3.0" 1158 | bluebird "~3.4.1" 1159 | buffer-indexof-polyfill "~1.0.0" 1160 | duplexer2 "~0.1.4" 1161 | fstream "^1.0.12" 1162 | graceful-fs "^4.2.2" 1163 | listenercount "~1.0.1" 1164 | readable-stream "~2.3.6" 1165 | setimmediate "~1.0.4" 1166 | 1167 | url-join@^4.0.1: 1168 | version "4.0.1" 1169 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" 1170 | integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== 1171 | 1172 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1173 | version "1.0.2" 1174 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1175 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1176 | 1177 | vsce@^2.8.0: 1178 | version "2.8.0" 1179 | resolved "https://registry.yarnpkg.com/vsce/-/vsce-2.8.0.tgz#3d40d369d8d774fa221318a2a39ed1d6b353c3d7" 1180 | integrity sha512-p6BTbUVp33Ed0OWRRhRQT55yrmgLEca2fTmqxZJW44T1eP4yVWEsdaNIDsjFIeuCrjG/CYvwi1QLG4ql0s7bDA== 1181 | dependencies: 1182 | azure-devops-node-api "^11.0.1" 1183 | chalk "^2.4.2" 1184 | cheerio "^1.0.0-rc.9" 1185 | commander "^6.1.0" 1186 | glob "^7.0.6" 1187 | hosted-git-info "^4.0.2" 1188 | keytar "^7.7.0" 1189 | leven "^3.1.0" 1190 | markdown-it "^12.3.2" 1191 | mime "^1.3.4" 1192 | minimatch "^3.0.3" 1193 | parse-semver "^1.1.1" 1194 | read "^1.0.7" 1195 | semver "^5.1.0" 1196 | tmp "^0.2.1" 1197 | typed-rest-client "^1.8.4" 1198 | url-join "^4.0.1" 1199 | xml2js "^0.4.23" 1200 | yauzl "^2.3.1" 1201 | yazl "^2.2.2" 1202 | 1203 | vscode-test@^1.5.0: 1204 | version "1.6.1" 1205 | resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-1.6.1.tgz#44254c67036de92b00fdd72f6ace5f1854e1a563" 1206 | integrity sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA== 1207 | dependencies: 1208 | http-proxy-agent "^4.0.1" 1209 | https-proxy-agent "^5.0.0" 1210 | rimraf "^3.0.2" 1211 | unzipper "^0.10.11" 1212 | 1213 | wide-align@^1.1.0: 1214 | version "1.1.5" 1215 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" 1216 | integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== 1217 | dependencies: 1218 | string-width "^1.0.2 || 2 || 3 || 4" 1219 | 1220 | wrappy@1: 1221 | version "1.0.2" 1222 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1223 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1224 | 1225 | xml2js@^0.4.23: 1226 | version "0.4.23" 1227 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" 1228 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 1229 | dependencies: 1230 | sax ">=0.6.0" 1231 | xmlbuilder "~11.0.0" 1232 | 1233 | xmlbuilder@~11.0.0: 1234 | version "11.0.1" 1235 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1236 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1237 | 1238 | yallist@^4.0.0: 1239 | version "4.0.0" 1240 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1241 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1242 | 1243 | yauzl@^2.3.1: 1244 | version "2.10.0" 1245 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1246 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1247 | dependencies: 1248 | buffer-crc32 "~0.2.3" 1249 | fd-slicer "~1.1.0" 1250 | 1251 | yazl@^2.2.2: 1252 | version "2.5.1" 1253 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" 1254 | integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== 1255 | dependencies: 1256 | buffer-crc32 "~0.2.3" 1257 | --------------------------------------------------------------------------------