├── .eslintrc.json
├── .github
└── config.yml
├── .gitignore
├── .vscode
├── extensions.json
└── launch.json
├── .vscodeignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── commands
├── activate.js
├── create-environment.js
├── deploy.js
├── index.js
├── init.js
├── list.js
├── new-function.js
└── start.js
├── extension.js
├── helpers
├── assignTerminal.js
├── getServiceSid.js
└── onInitDependencyInstaller.js
├── images
└── twilio.png
├── jsconfig.json
├── package-lock.json
├── package.json
├── test
├── runTest.js
└── suite
│ ├── extension.test.js
│ └── index.js
└── vsc-extension-quickstart.md
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["eslint-config-twilio", "plugin:prettier/recommended"],
3 | "env": {
4 | "browser": false,
5 | "commonjs": true,
6 | "es6": true,
7 | "node": true
8 | },
9 | "parserOptions": {
10 | "ecmaFeatures": {
11 | "jsx": true
12 | },
13 | "sourceType": "module"
14 | },
15 | "rules": {
16 | "camelcase": ["error", { "allow": ["^child_process"] }],
17 | "no-console": "off",
18 | "prefer-named-capture-group": "off"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/.github/config.yml:
--------------------------------------------------------------------------------
1 | newIssueWelcomeComment: |
2 | Thank you so much for opening your first issue for this project! We'll try to get back to it as quickly as possible. While you are waiting...here's a random picture of a corgi (powered by [dog.ceo](https://dog.ceo))
3 |
4 | 
5 |
6 | firstPRMergeComment: >
7 | Congratulations to your first contribution to the Twilio Serverless VSCode Extension!
8 |
9 | We'd love to say thank you and send you some swag. If you are interested please fill out this form at https://twil.io/hacktoberfest-swag
10 |
11 | If you are on the look out for more ways to contribute to open-source,
12 | check out a list of some of our repositories at https://github.com/twilio/opensource.
13 |
14 | And if you love Twilio as much as we do, make sure to check out our
15 | Twilio Champions program! https://www.twilio.com/champions
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .vscode-test/
3 | *.vsix
4 | .vscode/settings.json
5 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=733558
3 | // for the documentation about the extensions.json format
4 | "recommendations": [
5 | "dbaeumer.vscode-eslint"
6 | ]
7 | }
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | // A launch configuration that launches the extension 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": "Run Extension",
10 | "type": "extensionHost",
11 | "request": "launch",
12 | "runtimeExecutable": "${execPath}",
13 | "args": [
14 | "--extensionDevelopmentPath=${workspaceFolder}"
15 | ]
16 | },
17 | {
18 | "name": "Extension Tests",
19 | "type": "extensionHost",
20 | "request": "launch",
21 | "runtimeExecutable": "${execPath}",
22 | "args": [
23 | "--extensionDevelopmentPath=${workspaceFolder}",
24 | "--extensionTestsPath=${workspaceFolder}/test/suite/index"
25 | ]
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/.vscodeignore:
--------------------------------------------------------------------------------
1 | .vscode/**
2 | .vscode-test/**
3 | test/**
4 | .gitignore
5 | vsc-extension-quickstart.md
6 | **/jsconfig.json
7 | **/*.map
8 | **/.eslintrc.json
9 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | All notable changes to the "" extension will be documented in this file.
4 |
5 | Check [Keep a Changelog](https://keepachangelog.com/) for recommendations on how to structure this file.
6 |
7 | ## [Unreleased]
8 |
9 | - Initial release
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2019 Twilio Inc.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
20 | OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Twilio Serverless VSCode Extension
2 | 
3 |
4 |
5 | ## Contents
6 |
7 | * [Description](#description)
8 | * [Status](#status)
9 | * [Requirements](#requirements)
10 | * [Getting Started](#getting-started)
11 | * [Features](#features)
12 | * [Initialize a new project](#init)
13 | * [Create a new function](#new)
14 | * [Start a local server for development](#start)
15 | * [Create new environments](#create-env)
16 | * [Activate a function](#activate)
17 | * [Deploy a function](#deploy)
18 | * [List functions](#list-functions)
19 | * [List services](#list-services)
20 | * [List environments](#list-environments)
21 | * [List assets](#list-assets)
22 | * [List variables](#list-variables)
23 | * [Contributing](#contributing)
24 | * [First time contributors](#first-time-contributors)
25 | * [General contributions](#general-contributions)
26 | * [How to develop locally and contribute changes](#develop-locally)
27 | * [License](#license)
28 | * [Questions or Comments?](#questions)
29 |
30 |
31 |
32 |
33 | ## Description
34 | Develop, test and deploy Twilio Functions right from Visual Studio Code!
35 |
36 |
37 | ## ️️⚠️ Status ⚠️
38 | This project is currently on beta and some features _(such as listing the existing functions)_ are not currently supported, but are in the roadmap. All feedback is greatly appreciated.
39 |
40 |
41 | ## Requirements
42 | For this extension to work properly, you need to have the Twilio CLI and Twilio Serverless plugin installed in your computer. Additionally, having the `code` command installed in your PATH allows the extension to open VSCode after a new project is created.
43 |
44 | ### Installing the Twilio CLI
45 | Run `npm install twilio-cli -g` in your terminal (If you run into permission issues while doing this, running the command using `sudo` might help).
46 |
47 | ### Installing the Twilio Serverless Plugin
48 | Run `twilio plugins:install @twilio-labs/plugin-serverless` in your terminal.
49 |
50 | ### Installing the `code` command in your PATH _(optional)_
51 |
52 | 1. Run the Command Palette in your VSCode app _(Ctrl+Shift+P in Windows and Linux, Cmd+Shift+P in macOS)_.
53 | 2. Search for "Shell Command: Install `code` command in PATH" and execute.
54 |
55 |
56 | ## Getting Started
57 | 1. Install the extension from the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Twilio.vscode-twilio) (or through your VSCode app).
58 | 2. Access the VSCode command palette _(Ctrl+Shift+P in Windows/Linux or Cmd+Shift+P in macOS)_.
59 | 3. Enter "Twilio Serverless" to get a list of the available commands.
60 | 4. Select a command to execute.
61 |
62 |
63 | ## Features
64 | These are the features currently supported by this extension:
65 |
66 |
67 | ### Initialize a new project
68 |
69 | ##### `Twilio Serverless: Create project`
70 | Initializes a new Twilio Serverless project by creating the necessary files and folders, and installing the dependencies to start developing.
71 |
72 |
73 | ### Create a new function
74 |
75 | ##### `Twilio Serverless: New Function`
76 | Creates a new Twilio Function using one of the starter templates or from scratch.
77 |
78 |
79 | ### Start a local server for development
80 |
81 | ##### `Twilio Serverless: Start Local Server`
82 | Starts a local instance that serves the existing functions for local development and testing.
83 |
84 |
85 | ### Create new environments
86 |
87 | ##### `Twilio Serverless: Create Environment`
88 | Creates a new environment to deploy functions to.
89 |
90 |
91 | ### Activate a function
92 |
93 | ##### `Twilio Serverless: Activate`
94 | Moves an active deployment from one environment to another.
95 |
96 |
97 | ### Deploy a function
98 |
99 | ##### `Twilio Serverless: Deploy`
100 | Deploy functions from your local to the specified environment.
101 |
102 |
103 | ### List functions
104 |
105 | ##### `Twilio Serverless: List Functions`
106 | List existing functions for your account.
107 |
108 |
109 | ### List services
110 |
111 | ##### `Twilio Serverless: List Services`
112 | List existing services for your account.
113 |
114 |
115 | ### List environments
116 |
117 | ##### `Twilio Serverless: List Environments`
118 | List existing environments for your account.
119 |
120 |
121 | ### List assets
122 |
123 | ##### `Twilio Serverless: List Assets`
124 | List existing assets for your account.
125 |
126 |
127 | ### List variables
128 |
129 | ##### `Twilio Serverless: List Variables`
130 | List existing variables for your account.
131 |
132 |
133 | ## Contributing
134 | This project adheres to the Twilio Labs [Code of Conduct](https://github.com/twilio-labs/.github/blob/master/CODE_OF_CONDUCT.md). Please read before contributing.
135 |
136 |
137 | ### First time contributors
138 | A good way to get started with contributions is to look at the current open issues and find any that are tagged with the `good first issue` tag. If you find any that look interesting, feel free to ping us and we'll provide context and guidance to work on it.
139 |
140 |
141 | ### General contributions
142 | Before starting your work on any issue, please ping us on that same issue and let us know so we can coordinate properly in case someone else is already working on it.
143 |
144 |
145 | ### How to develop locally and contribute changes
146 | 1. Fork this repository.
147 | 2. Open project directory in VSCode.
148 | 3. Hit `F5` to compile and launch the extension in debug mode. This will open a new VSCode window in which you can open the Command Palette and try out the commands.
149 | 4. Make your changes in a new branch.
150 | 5. Commit and push your changes.
151 | 6. Open a Pull Request with a description of the changes. Feel free to include anything that could make our review easier _(screenshots, demo gifs, etc.)_
152 |
153 |
154 | ## License
155 | MIT
156 |
157 |
158 | ## Questions or Comments?
159 | Feel free to [open an issue](https://github.com/twilio-labs/vscode-twilio/issues/) and we'll get back to you as soon as possible :)
160 |
--------------------------------------------------------------------------------
/commands/activate.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 | const getServiceSid = require("../helpers/getServiceSid");
4 |
5 | const activateFn = () => {
6 | const terminal = assignTerminal(vscode, "activate");
7 |
8 | getServiceSid(vscode)
9 | .then(serviceSid => {
10 | vscode.window
11 | .showInputBox({
12 | ignoreFocusOut: true,
13 | placeHolder:
14 | "Enter the environment you want to deploy from (e.g. 'dev')..."
15 | })
16 | .then(source => {
17 | vscode.window
18 | .showInputBox({
19 | ignoreFocusOut: true,
20 | placeHolder:
21 | "Enter the environment you want to deploy to (e.g. 'prod')..."
22 | })
23 | .then(destination => {
24 | terminal.show();
25 | terminal.sendText(
26 | `twilio serverless:activate --service-sid=${serviceSid} \
27 | --environment=${destination} \
28 | --source-environment=${source}`
29 | );
30 | });
31 | });
32 | })
33 | .catch(err => {
34 | terminal.show();
35 | terminal.sendText(err);
36 | });
37 | };
38 |
39 | module.exports = activateFn;
40 |
--------------------------------------------------------------------------------
/commands/create-environment.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 | const getServiceSid = require("../helpers/getServiceSid");
4 |
5 | const createEnv = () => {
6 | const terminal = assignTerminal(vscode, "activate");
7 |
8 | getServiceSid(vscode).then(serviceSid => {
9 | vscode.window
10 | .showInputBox({
11 | ignoreFocusOut: true,
12 | placeHolder: "Enter your environment unique name (e.g. 'production')..."
13 | })
14 | .then(uniqueName => {
15 | vscode.window
16 | .showInputBox({
17 | ignoreFocusOut: true,
18 | placeHolder:
19 | "Enter your environment suffix (e.g. 'prod' for my-project-1234-prod.twil.io)..."
20 | })
21 | .then(suffix => {
22 | terminal.show();
23 | terminal.sendText(
24 | `twilio api:serverless:v1:services:environments:create \
25 | --service-sid=${serviceSid} \
26 | --domain-suffix=${suffix} \
27 | --unique-name=${uniqueName}`
28 | );
29 | });
30 | });
31 | });
32 | };
33 |
34 | module.exports = createEnv;
35 |
--------------------------------------------------------------------------------
/commands/deploy.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 |
4 | const deploy = () => {
5 | const terminal = assignTerminal(vscode, "deploy");
6 | terminal.show();
7 | terminal.sendText(`twilio serverless:deploy`);
8 | };
9 |
10 | module.exports = deploy;
11 |
--------------------------------------------------------------------------------
/commands/index.js:
--------------------------------------------------------------------------------
1 | const activateFn = require("./activate");
2 | const createEnv = require("./create-environment");
3 | const deploy = require("./deploy");
4 | const init = require("./init");
5 | const newFunction = require("./new-function");
6 | const start = require("./start");
7 | const list = require("./list");
8 |
9 | module.exports = {
10 | activateFn,
11 | createEnv,
12 | deploy,
13 | init,
14 | newFunction,
15 | start,
16 | list
17 | };
18 |
--------------------------------------------------------------------------------
/commands/init.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 |
4 | const init = () => {
5 | vscode.window
6 | .showOpenDialog({
7 | canSelectFiles: false,
8 | canSelectFolders: true,
9 | canSelectMany: false,
10 | openLabel: `Create Project`
11 | })
12 | .then(folder => {
13 | if (!folder) {
14 | return;
15 | }
16 | vscode.window
17 | .showInputBox({
18 | ignoreFocusOut: true,
19 | placeHolder: "Enter your project name..."
20 | })
21 | .then(projectName => {
22 | if (!projectName) {
23 | return;
24 | }
25 |
26 | const projectFolder = folder[0].fsPath;
27 | const terminal = assignTerminal(vscode, "init");
28 | terminal.show();
29 | terminal.sendText(`cd ${projectFolder}`);
30 | terminal.sendText(
31 | `twilio serverless:init ${projectName} && code ${projectName} -r`
32 | );
33 | });
34 | });
35 | };
36 |
37 | module.exports = init;
38 |
--------------------------------------------------------------------------------
/commands/list.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 | const getServiceSid = require("../helpers/getServiceSid");
4 |
5 | const list = (type = "functions") => {
6 | const terminal = assignTerminal(vscode, "list");
7 | getServiceSid(vscode)
8 | .then(serviceSid => {
9 | terminal.show();
10 | terminal.sendText(
11 | `twilio serverless:list ${type} --service-sid=${serviceSid}`
12 | );
13 | })
14 | .catch(err => {
15 | terminal.show();
16 | terminal.sendText(err);
17 | });
18 | };
19 |
20 | module.exports = list;
21 |
--------------------------------------------------------------------------------
/commands/new-function.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const vscode = require("vscode");
3 | const chokidar = require("chokidar");
4 | const assignTerminal = require("../helpers/assignTerminal");
5 |
6 | const newFunction = () => {
7 | return vscode.window
8 | .showInputBox({
9 | ignoreFocusOut: true,
10 | placeHolder: "Enter your function name here..."
11 | })
12 | .then(fnName => {
13 | const wsPath = vscode.workspace.workspaceFolders[0].uri.fsPath;
14 | const fnDirPath = path.join(wsPath, "functions");
15 | const fnFilePath = path.join(fnDirPath, `${fnName}.js`);
16 |
17 | if (!fnName || !wsPath) {
18 | return;
19 | }
20 |
21 | const terminal = assignTerminal(vscode, "new");
22 | terminal.show();
23 | terminal.sendText(`twilio serverless:new ${fnName}`);
24 |
25 | const fileWatcher = chokidar.watch(fnDirPath, {
26 | ignored: /(^|[\/\\])\../,
27 | persistent: true,
28 | depth: 1
29 | });
30 |
31 | fileWatcher.on("add", addedFile => {
32 | if (addedFile === fnFilePath) {
33 | // Open file once created
34 | vscode.workspace
35 | .openTextDocument(vscode.Uri.parse(fnFilePath))
36 | .then(doc => {
37 | vscode.window.showTextDocument(doc, 1, false);
38 | });
39 | }
40 | });
41 | });
42 | };
43 |
44 | module.exports = newFunction;
45 |
--------------------------------------------------------------------------------
/commands/start.js:
--------------------------------------------------------------------------------
1 | const vscode = require("vscode");
2 | const assignTerminal = require("../helpers/assignTerminal");
3 |
4 | const start = () => {
5 | const serverTerminal = assignTerminal(vscode, "start");
6 | serverTerminal.show();
7 | serverTerminal.sendText(`twilio serverless:start --live`);
8 | };
9 |
10 | module.exports = start;
11 |
--------------------------------------------------------------------------------
/extension.js:
--------------------------------------------------------------------------------
1 | const installDependencies = require("./helpers/onInitDependencyInstaller");
2 |
3 | const vscode = require("vscode");
4 | const {
5 | activateFn,
6 | createEnv,
7 | deploy,
8 | init,
9 | newFunction,
10 | start,
11 | list
12 | } = require("./commands");
13 |
14 | /**
15 | * @param {vscode.ExtensionContext} context
16 | */
17 |
18 | const output = vscode.window.createOutputChannel("twilio");
19 |
20 | const activate = context => {
21 | console.log("Twilio Serverless for Code is now active!");
22 |
23 | installDependencies(context, output);
24 |
25 | const createProject = vscode.commands.registerCommand("extension.init", init);
26 | const createFunction = vscode.commands.registerCommand(
27 | "extension.new",
28 | newFunction
29 | );
30 | const startServer = vscode.commands.registerCommand("extension.start", start);
31 | const deployFunction = vscode.commands.registerCommand(
32 | "extension.deploy",
33 | deploy
34 | );
35 | const activateFunction = vscode.commands.registerCommand(
36 | "extension.activate",
37 | activateFn
38 | );
39 | const createEnvironment = vscode.commands.registerCommand(
40 | "extension.createEnvironment",
41 | createEnv
42 | );
43 | const listFunctions = vscode.commands.registerCommand(
44 | "extension.listFunctions",
45 | list
46 | );
47 | const listServices = vscode.commands.registerCommand(
48 | "extension.listServices",
49 | () => {
50 | list("services");
51 | }
52 | );
53 | const listEnvironments = vscode.commands.registerCommand(
54 | "extension.listEnvironments",
55 | () => {
56 | list("environments");
57 | }
58 | );
59 | const listAssets = vscode.commands.registerCommand(
60 | "extension.listAssets",
61 | () => {
62 | list("assets");
63 | }
64 | );
65 | const listVariables = vscode.commands.registerCommand(
66 | "extension.listVariables",
67 | () => {
68 | list("variables");
69 | }
70 | );
71 |
72 | context.subscriptions.push(
73 | activateFunction,
74 | createEnvironment,
75 | createFunction,
76 | createProject,
77 | deployFunction,
78 | startServer,
79 | listFunctions,
80 | listServices,
81 | listEnvironments,
82 | listAssets,
83 | listVariables
84 | );
85 | };
86 |
87 | const deactivate = () => {
88 | /* nothing to do for now */
89 | };
90 |
91 | module.exports = {
92 | activate,
93 | deactivate
94 | };
95 |
--------------------------------------------------------------------------------
/helpers/assignTerminal.js:
--------------------------------------------------------------------------------
1 | const assignTerminal = (vscode, command) => {
2 | let terminal;
3 |
4 | const terminals = vscode.window.terminals;
5 | const serverTerminals = terminals.filter(t => {
6 | return t.name === "server";
7 | });
8 |
9 | const otherTerminals = terminals.filter(t => {
10 | return t.name !== "server";
11 | });
12 |
13 | if (command === "start") {
14 | terminal =
15 | serverTerminals.length < 1
16 | ? vscode.window.createTerminal("server")
17 | : serverTerminals[0];
18 | } else {
19 | terminal =
20 | otherTerminals.length < 1
21 | ? vscode.window.createTerminal()
22 | : otherTerminals[0];
23 | }
24 |
25 | return terminal;
26 | };
27 |
28 | module.exports = assignTerminal;
29 |
--------------------------------------------------------------------------------
/helpers/getServiceSid.js:
--------------------------------------------------------------------------------
1 | // check if service sid exists in twilio functions
2 |
3 | // if not, prompt for service sid from vscode
4 |
5 | const fs = require("fs");
6 | const path = require("path");
7 |
8 | const getServiceSid = vscode => {
9 | return new Promise((resolve, reject) => {
10 | if (vscode.workspace.workspaceFolders.length > 0) {
11 | const wsPath = vscode.workspace.workspaceFolders[0].uri.fsPath;
12 | const twilioFnFilePath = path.join(wsPath, `.twilio-functions`);
13 | fs.readFile(twilioFnFilePath, (err, data) => {
14 | let parsedData = {};
15 | if (data) {
16 | parsedData = JSON.parse(data.toString());
17 | }
18 | if (err || !parsedData.serviceSid) {
19 | vscode.window
20 | .showInputBox({
21 | ignoreFocusOut: true,
22 | placeHolder: "Enter your Service SID here..."
23 | })
24 | .then(serviceSid => {
25 | parsedData.serviceSid = serviceSid;
26 | const writeData = JSON.stringify(parsedData, null, 4);
27 |
28 | fs.writeFile(twilioFnFilePath, writeData, "utf-8", error => {
29 | if (error) {
30 | reject(error);
31 | }
32 |
33 | resolve(serviceSid);
34 | });
35 | });
36 | } else {
37 | resolve(parsedData.serviceSid);
38 | }
39 | });
40 | } else {
41 | reject(
42 | new Error("No workspace folder detected. Please init a new project.")
43 | );
44 | }
45 | });
46 | };
47 |
48 | module.exports = getServiceSid;
49 |
--------------------------------------------------------------------------------
/helpers/onInitDependencyInstaller.js:
--------------------------------------------------------------------------------
1 | const { execFileSync } = require("child_process");
2 |
3 | /**
4 | * Checks if the value is truthy. Checks against the following
5 | * values: `false`, `0`, `""`, `null`, `undefined`, `NaN`, `[]`,
6 | * and `{}`.
7 | *
8 | * @param o The object to check.
9 | * @see https://developer.mozilla.org/en-US/docs/Glossary/Truthy
10 | */
11 | const isTruthy = o => {
12 | if (Boolean(o) && o.constructor === Object) {
13 | return Boolean(Object.keys(o).length);
14 | }
15 | if (Array.isArray(o)) {
16 | return Boolean(o.length);
17 | }
18 | return Boolean(o);
19 | };
20 |
21 | const installDependencies = (context, output) => {
22 | if (process.platform === "darwin") {
23 | try {
24 | // Check if already installed via Brew on darwin.
25 | execFileSync("twilio", {
26 | encoding: "utf8"
27 | });
28 | return;
29 | } catch (e) {
30 | // Not detected. Proceed will installation as normal.
31 | }
32 | }
33 |
34 | const cliCheck = execFileSync("npm", ["ls", "-g", "twilio-cli", "--json"], {
35 | encoding: "utf8"
36 | });
37 | const cliCheckNpmJSON = JSON.parse(cliCheck);
38 | // npm with --json flag yields `{}` if the package is uninstalled.
39 | if (isTruthy(cliCheckNpmJSON)) {
40 | return;
41 | }
42 |
43 | output.show();
44 | output.appendLine("`twilio-cli` is being automatically installed!");
45 | output.appendLine("Running... `npm install twilio-cli -g`");
46 | output.appendLine(
47 | `If the package installation fails, you can manually install.`
48 | );
49 |
50 | switch (process.platform) {
51 | case "darwin":
52 | output.appendLine(
53 | "To manually install `twilio-cli` via Homebrew please do: `brew install twilio/brew/twilio && twilio plugins:install @twilio-labs/plugin-serverless`."
54 | );
55 | break;
56 | default:
57 | break;
58 | }
59 | output.appendLine(
60 | "To manually install via npm you can run the following: `npm install twilio-cli -g && twilio plugins:install @twilio-labs/plugin-serverless`"
61 | );
62 |
63 | try {
64 | execFileSync("npm", ["install", "-g", "twilio-cli"], {
65 | encoding: "utf8"
66 | });
67 | execFileSync(
68 | "twilio",
69 | ["plugins:install", "@twilio-labs/plugin-serverless"],
70 | {
71 | encoding: "utf8"
72 | }
73 | );
74 | } catch (e) {
75 | output.appendLine(
76 | "ERROR. Could not automatically install `twilio`. Please install manually."
77 | );
78 | }
79 | };
80 |
81 | module.exports = installDependencies;
82 |
--------------------------------------------------------------------------------
/images/twilio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/twilio-labs/vscode-twilio/1fd62aa1e784ca2bc041de6e18a56d5d0064f131/images/twilio.png
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "checkJs": true, /* Typecheck .js files. */
6 | "lib": [
7 | "es6"
8 | ]
9 | },
10 | "exclude": [
11 | "node_modules"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vscode-twilio",
3 | "version": "0.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.5.5",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.0.0"
14 | }
15 | },
16 | "@babel/highlight": {
17 | "version": "7.5.0",
18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
19 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
20 | "dev": true,
21 | "requires": {
22 | "chalk": "^2.0.0",
23 | "esutils": "^2.0.2",
24 | "js-tokens": "^4.0.0"
25 | }
26 | },
27 | "@nodelib/fs.scandir": {
28 | "version": "2.1.3",
29 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
30 | "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
31 | "dev": true,
32 | "requires": {
33 | "@nodelib/fs.stat": "2.0.3",
34 | "run-parallel": "^1.1.9"
35 | }
36 | },
37 | "@nodelib/fs.stat": {
38 | "version": "2.0.3",
39 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
40 | "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
41 | "dev": true
42 | },
43 | "@nodelib/fs.walk": {
44 | "version": "1.2.4",
45 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
46 | "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
47 | "dev": true,
48 | "requires": {
49 | "@nodelib/fs.scandir": "2.1.3",
50 | "fastq": "^1.6.0"
51 | }
52 | },
53 | "@samverschueren/stream-to-observable": {
54 | "version": "0.3.0",
55 | "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
56 | "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
57 | "dev": true,
58 | "requires": {
59 | "any-observable": "^0.3.0"
60 | }
61 | },
62 | "@types/events": {
63 | "version": "3.0.0",
64 | "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
65 | "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
66 | "dev": true
67 | },
68 | "@types/glob": {
69 | "version": "7.1.1",
70 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
71 | "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
72 | "dev": true,
73 | "requires": {
74 | "@types/events": "*",
75 | "@types/minimatch": "*",
76 | "@types/node": "*"
77 | }
78 | },
79 | "@types/minimatch": {
80 | "version": "3.0.3",
81 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
82 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
83 | "dev": true
84 | },
85 | "@types/mocha": {
86 | "version": "5.2.7",
87 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
88 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
89 | "dev": true
90 | },
91 | "@types/node": {
92 | "version": "10.14.12",
93 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz",
94 | "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==",
95 | "dev": true
96 | },
97 | "@types/normalize-package-data": {
98 | "version": "2.4.0",
99 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
100 | "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
101 | "dev": true
102 | },
103 | "@types/vscode": {
104 | "version": "1.36.0",
105 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.36.0.tgz",
106 | "integrity": "sha512-SbHR3Q5g/C3N+Ila3KrRf1rSZiyHxWdOZ7X3yFHXzw6HrvRLuVZrxnwEX0lTBMRpH9LkwZdqRTgXW+D075jxkg==",
107 | "dev": true
108 | },
109 | "acorn": {
110 | "version": "6.3.0",
111 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
112 | "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
113 | "dev": true
114 | },
115 | "acorn-jsx": {
116 | "version": "5.0.2",
117 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz",
118 | "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==",
119 | "dev": true
120 | },
121 | "agent-base": {
122 | "version": "4.3.0",
123 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
124 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
125 | "dev": true,
126 | "requires": {
127 | "es6-promisify": "^5.0.0"
128 | }
129 | },
130 | "aggregate-error": {
131 | "version": "3.0.1",
132 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
133 | "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
134 | "dev": true,
135 | "requires": {
136 | "clean-stack": "^2.0.0",
137 | "indent-string": "^4.0.0"
138 | }
139 | },
140 | "ajv": {
141 | "version": "6.10.2",
142 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
143 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
144 | "dev": true,
145 | "requires": {
146 | "fast-deep-equal": "^2.0.1",
147 | "fast-json-stable-stringify": "^2.0.0",
148 | "json-schema-traverse": "^0.4.1",
149 | "uri-js": "^4.2.2"
150 | }
151 | },
152 | "ansi-colors": {
153 | "version": "3.2.3",
154 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
155 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
156 | "dev": true
157 | },
158 | "ansi-escapes": {
159 | "version": "3.2.0",
160 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
161 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
162 | "dev": true
163 | },
164 | "ansi-regex": {
165 | "version": "3.0.0",
166 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
167 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
168 | "dev": true
169 | },
170 | "ansi-styles": {
171 | "version": "3.2.1",
172 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
173 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
174 | "dev": true,
175 | "requires": {
176 | "color-convert": "^1.9.0"
177 | }
178 | },
179 | "any-observable": {
180 | "version": "0.3.0",
181 | "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
182 | "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
183 | "dev": true
184 | },
185 | "anymatch": {
186 | "version": "3.0.3",
187 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz",
188 | "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==",
189 | "requires": {
190 | "normalize-path": "^3.0.0",
191 | "picomatch": "^2.0.4"
192 | }
193 | },
194 | "argparse": {
195 | "version": "1.0.10",
196 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
197 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
198 | "dev": true,
199 | "requires": {
200 | "sprintf-js": "~1.0.2"
201 | }
202 | },
203 | "array-union": {
204 | "version": "2.1.0",
205 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
206 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
207 | "dev": true
208 | },
209 | "astral-regex": {
210 | "version": "1.0.0",
211 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
212 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
213 | "dev": true
214 | },
215 | "balanced-match": {
216 | "version": "1.0.0",
217 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
218 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
219 | "dev": true
220 | },
221 | "binary-extensions": {
222 | "version": "2.0.0",
223 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
224 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow=="
225 | },
226 | "brace-expansion": {
227 | "version": "1.1.11",
228 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
229 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
230 | "dev": true,
231 | "requires": {
232 | "balanced-match": "^1.0.0",
233 | "concat-map": "0.0.1"
234 | }
235 | },
236 | "braces": {
237 | "version": "3.0.2",
238 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
239 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
240 | "requires": {
241 | "fill-range": "^7.0.1"
242 | }
243 | },
244 | "browser-stdout": {
245 | "version": "1.3.1",
246 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
247 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
248 | "dev": true
249 | },
250 | "caller-callsite": {
251 | "version": "2.0.0",
252 | "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
253 | "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
254 | "dev": true,
255 | "requires": {
256 | "callsites": "^2.0.0"
257 | },
258 | "dependencies": {
259 | "callsites": {
260 | "version": "2.0.0",
261 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
262 | "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
263 | "dev": true
264 | }
265 | }
266 | },
267 | "caller-path": {
268 | "version": "2.0.0",
269 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
270 | "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
271 | "dev": true,
272 | "requires": {
273 | "caller-callsite": "^2.0.0"
274 | }
275 | },
276 | "callsites": {
277 | "version": "3.1.0",
278 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
279 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
280 | "dev": true
281 | },
282 | "camelcase": {
283 | "version": "5.3.1",
284 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
285 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
286 | "dev": true
287 | },
288 | "chalk": {
289 | "version": "2.4.2",
290 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
291 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
292 | "dev": true,
293 | "requires": {
294 | "ansi-styles": "^3.2.1",
295 | "escape-string-regexp": "^1.0.5",
296 | "supports-color": "^5.3.0"
297 | }
298 | },
299 | "chardet": {
300 | "version": "0.7.0",
301 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
302 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
303 | "dev": true
304 | },
305 | "chokidar": {
306 | "version": "3.0.2",
307 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz",
308 | "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==",
309 | "requires": {
310 | "anymatch": "^3.0.1",
311 | "braces": "^3.0.2",
312 | "fsevents": "^2.0.6",
313 | "glob-parent": "^5.0.0",
314 | "is-binary-path": "^2.1.0",
315 | "is-glob": "^4.0.1",
316 | "normalize-path": "^3.0.0",
317 | "readdirp": "^3.1.1"
318 | }
319 | },
320 | "ci-info": {
321 | "version": "2.0.0",
322 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
323 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
324 | "dev": true
325 | },
326 | "clean-stack": {
327 | "version": "2.2.0",
328 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
329 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
330 | "dev": true
331 | },
332 | "cli-cursor": {
333 | "version": "2.1.0",
334 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
335 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
336 | "dev": true,
337 | "requires": {
338 | "restore-cursor": "^2.0.0"
339 | }
340 | },
341 | "cli-truncate": {
342 | "version": "0.2.1",
343 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
344 | "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
345 | "dev": true,
346 | "requires": {
347 | "slice-ansi": "0.0.4",
348 | "string-width": "^1.0.1"
349 | },
350 | "dependencies": {
351 | "ansi-regex": {
352 | "version": "2.1.1",
353 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
354 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
355 | "dev": true
356 | },
357 | "is-fullwidth-code-point": {
358 | "version": "1.0.0",
359 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
360 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
361 | "dev": true,
362 | "requires": {
363 | "number-is-nan": "^1.0.0"
364 | }
365 | },
366 | "slice-ansi": {
367 | "version": "0.0.4",
368 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
369 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
370 | "dev": true
371 | },
372 | "string-width": {
373 | "version": "1.0.2",
374 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
375 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
376 | "dev": true,
377 | "requires": {
378 | "code-point-at": "^1.0.0",
379 | "is-fullwidth-code-point": "^1.0.0",
380 | "strip-ansi": "^3.0.0"
381 | }
382 | },
383 | "strip-ansi": {
384 | "version": "3.0.1",
385 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
386 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
387 | "dev": true,
388 | "requires": {
389 | "ansi-regex": "^2.0.0"
390 | }
391 | }
392 | }
393 | },
394 | "cli-width": {
395 | "version": "2.2.0",
396 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
397 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
398 | "dev": true
399 | },
400 | "cliui": {
401 | "version": "4.1.0",
402 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
403 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
404 | "dev": true,
405 | "requires": {
406 | "string-width": "^2.1.1",
407 | "strip-ansi": "^4.0.0",
408 | "wrap-ansi": "^2.0.0"
409 | }
410 | },
411 | "code-point-at": {
412 | "version": "1.1.0",
413 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
414 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
415 | "dev": true
416 | },
417 | "color-convert": {
418 | "version": "1.9.3",
419 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
420 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
421 | "dev": true,
422 | "requires": {
423 | "color-name": "1.1.3"
424 | }
425 | },
426 | "color-name": {
427 | "version": "1.1.3",
428 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
429 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
430 | "dev": true
431 | },
432 | "commander": {
433 | "version": "2.20.3",
434 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
435 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
436 | "dev": true
437 | },
438 | "concat-map": {
439 | "version": "0.0.1",
440 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
441 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
442 | "dev": true
443 | },
444 | "cosmiconfig": {
445 | "version": "5.2.1",
446 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
447 | "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
448 | "dev": true,
449 | "requires": {
450 | "import-fresh": "^2.0.0",
451 | "is-directory": "^0.3.1",
452 | "js-yaml": "^3.13.1",
453 | "parse-json": "^4.0.0"
454 | },
455 | "dependencies": {
456 | "import-fresh": {
457 | "version": "2.0.0",
458 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
459 | "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
460 | "dev": true,
461 | "requires": {
462 | "caller-path": "^2.0.0",
463 | "resolve-from": "^3.0.0"
464 | }
465 | },
466 | "resolve-from": {
467 | "version": "3.0.0",
468 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
469 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
470 | "dev": true
471 | }
472 | }
473 | },
474 | "cross-spawn": {
475 | "version": "6.0.5",
476 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
477 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
478 | "dev": true,
479 | "requires": {
480 | "nice-try": "^1.0.4",
481 | "path-key": "^2.0.1",
482 | "semver": "^5.5.0",
483 | "shebang-command": "^1.2.0",
484 | "which": "^1.2.9"
485 | }
486 | },
487 | "date-fns": {
488 | "version": "1.30.1",
489 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
490 | "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
491 | "dev": true
492 | },
493 | "debug": {
494 | "version": "4.1.1",
495 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
496 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
497 | "dev": true,
498 | "requires": {
499 | "ms": "^2.1.1"
500 | }
501 | },
502 | "decamelize": {
503 | "version": "1.2.0",
504 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
505 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
506 | "dev": true
507 | },
508 | "dedent": {
509 | "version": "0.7.0",
510 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
511 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
512 | "dev": true
513 | },
514 | "deep-is": {
515 | "version": "0.1.3",
516 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
517 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
518 | "dev": true
519 | },
520 | "define-properties": {
521 | "version": "1.1.3",
522 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
523 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
524 | "dev": true,
525 | "requires": {
526 | "object-keys": "^1.0.12"
527 | }
528 | },
529 | "del": {
530 | "version": "5.1.0",
531 | "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz",
532 | "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==",
533 | "dev": true,
534 | "requires": {
535 | "globby": "^10.0.1",
536 | "graceful-fs": "^4.2.2",
537 | "is-glob": "^4.0.1",
538 | "is-path-cwd": "^2.2.0",
539 | "is-path-inside": "^3.0.1",
540 | "p-map": "^3.0.0",
541 | "rimraf": "^3.0.0",
542 | "slash": "^3.0.0"
543 | },
544 | "dependencies": {
545 | "rimraf": {
546 | "version": "3.0.0",
547 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
548 | "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
549 | "dev": true,
550 | "requires": {
551 | "glob": "^7.1.3"
552 | }
553 | }
554 | }
555 | },
556 | "diff": {
557 | "version": "3.5.0",
558 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
559 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
560 | "dev": true
561 | },
562 | "dir-glob": {
563 | "version": "3.0.1",
564 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
565 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
566 | "dev": true,
567 | "requires": {
568 | "path-type": "^4.0.0"
569 | }
570 | },
571 | "doctrine": {
572 | "version": "3.0.0",
573 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
574 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
575 | "dev": true,
576 | "requires": {
577 | "esutils": "^2.0.2"
578 | }
579 | },
580 | "elegant-spinner": {
581 | "version": "1.0.1",
582 | "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
583 | "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
584 | "dev": true
585 | },
586 | "emoji-regex": {
587 | "version": "7.0.3",
588 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
589 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
590 | "dev": true
591 | },
592 | "end-of-stream": {
593 | "version": "1.4.1",
594 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
595 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
596 | "dev": true,
597 | "requires": {
598 | "once": "^1.4.0"
599 | }
600 | },
601 | "error-ex": {
602 | "version": "1.3.2",
603 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
604 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
605 | "dev": true,
606 | "requires": {
607 | "is-arrayish": "^0.2.1"
608 | }
609 | },
610 | "es-abstract": {
611 | "version": "1.13.0",
612 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
613 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
614 | "dev": true,
615 | "requires": {
616 | "es-to-primitive": "^1.2.0",
617 | "function-bind": "^1.1.1",
618 | "has": "^1.0.3",
619 | "is-callable": "^1.1.4",
620 | "is-regex": "^1.0.4",
621 | "object-keys": "^1.0.12"
622 | }
623 | },
624 | "es-to-primitive": {
625 | "version": "1.2.0",
626 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
627 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
628 | "dev": true,
629 | "requires": {
630 | "is-callable": "^1.1.4",
631 | "is-date-object": "^1.0.1",
632 | "is-symbol": "^1.0.2"
633 | }
634 | },
635 | "es6-promise": {
636 | "version": "4.2.8",
637 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
638 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
639 | "dev": true
640 | },
641 | "es6-promisify": {
642 | "version": "5.0.0",
643 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
644 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
645 | "dev": true,
646 | "requires": {
647 | "es6-promise": "^4.0.3"
648 | }
649 | },
650 | "escape-string-regexp": {
651 | "version": "1.0.5",
652 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
653 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
654 | "dev": true
655 | },
656 | "eslint": {
657 | "version": "5.16.0",
658 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
659 | "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
660 | "dev": true,
661 | "requires": {
662 | "@babel/code-frame": "^7.0.0",
663 | "ajv": "^6.9.1",
664 | "chalk": "^2.1.0",
665 | "cross-spawn": "^6.0.5",
666 | "debug": "^4.0.1",
667 | "doctrine": "^3.0.0",
668 | "eslint-scope": "^4.0.3",
669 | "eslint-utils": "^1.3.1",
670 | "eslint-visitor-keys": "^1.0.0",
671 | "espree": "^5.0.1",
672 | "esquery": "^1.0.1",
673 | "esutils": "^2.0.2",
674 | "file-entry-cache": "^5.0.1",
675 | "functional-red-black-tree": "^1.0.1",
676 | "glob": "^7.1.2",
677 | "globals": "^11.7.0",
678 | "ignore": "^4.0.6",
679 | "import-fresh": "^3.0.0",
680 | "imurmurhash": "^0.1.4",
681 | "inquirer": "^6.2.2",
682 | "js-yaml": "^3.13.0",
683 | "json-stable-stringify-without-jsonify": "^1.0.1",
684 | "levn": "^0.3.0",
685 | "lodash": "^4.17.11",
686 | "minimatch": "^3.0.4",
687 | "mkdirp": "^0.5.1",
688 | "natural-compare": "^1.4.0",
689 | "optionator": "^0.8.2",
690 | "path-is-inside": "^1.0.2",
691 | "progress": "^2.0.0",
692 | "regexpp": "^2.0.1",
693 | "semver": "^5.5.1",
694 | "strip-ansi": "^4.0.0",
695 | "strip-json-comments": "^2.0.1",
696 | "table": "^5.2.3",
697 | "text-table": "^0.2.0"
698 | }
699 | },
700 | "eslint-config-prettier": {
701 | "version": "6.4.0",
702 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.4.0.tgz",
703 | "integrity": "sha512-YrKucoFdc7SEko5Sxe4r6ixqXPDP1tunGw91POeZTTRKItf/AMFYt/YLEQtZMkR2LVpAVhcAcZgcWpm1oGPW7w==",
704 | "dev": true,
705 | "requires": {
706 | "get-stdin": "^6.0.0"
707 | }
708 | },
709 | "eslint-config-twilio": {
710 | "version": "1.7.0",
711 | "resolved": "https://registry.npmjs.org/eslint-config-twilio/-/eslint-config-twilio-1.7.0.tgz",
712 | "integrity": "sha512-0WNNLXmMW2+Do8bIMAbNDDY1nixT7Qqm8NcNtnJ9fvc1MIbDdWPSPKzTwyL6RVOmJHuXpqxXEx+q0bJpIvHbdQ==",
713 | "dev": true
714 | },
715 | "eslint-plugin-prettier": {
716 | "version": "3.1.1",
717 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz",
718 | "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==",
719 | "dev": true,
720 | "requires": {
721 | "prettier-linter-helpers": "^1.0.0"
722 | }
723 | },
724 | "eslint-scope": {
725 | "version": "4.0.3",
726 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
727 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
728 | "dev": true,
729 | "requires": {
730 | "esrecurse": "^4.1.0",
731 | "estraverse": "^4.1.1"
732 | }
733 | },
734 | "eslint-utils": {
735 | "version": "1.4.2",
736 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
737 | "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
738 | "dev": true,
739 | "requires": {
740 | "eslint-visitor-keys": "^1.0.0"
741 | }
742 | },
743 | "eslint-visitor-keys": {
744 | "version": "1.1.0",
745 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
746 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
747 | "dev": true
748 | },
749 | "espree": {
750 | "version": "5.0.1",
751 | "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
752 | "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
753 | "dev": true,
754 | "requires": {
755 | "acorn": "^6.0.7",
756 | "acorn-jsx": "^5.0.0",
757 | "eslint-visitor-keys": "^1.0.0"
758 | }
759 | },
760 | "esprima": {
761 | "version": "4.0.1",
762 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
763 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
764 | "dev": true
765 | },
766 | "esquery": {
767 | "version": "1.0.1",
768 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
769 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
770 | "dev": true,
771 | "requires": {
772 | "estraverse": "^4.0.0"
773 | }
774 | },
775 | "esrecurse": {
776 | "version": "4.2.1",
777 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
778 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
779 | "dev": true,
780 | "requires": {
781 | "estraverse": "^4.1.0"
782 | }
783 | },
784 | "estraverse": {
785 | "version": "4.3.0",
786 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
787 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
788 | "dev": true
789 | },
790 | "esutils": {
791 | "version": "2.0.3",
792 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
793 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
794 | "dev": true
795 | },
796 | "execa": {
797 | "version": "1.0.0",
798 | "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
799 | "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
800 | "dev": true,
801 | "requires": {
802 | "cross-spawn": "^6.0.0",
803 | "get-stream": "^4.0.0",
804 | "is-stream": "^1.1.0",
805 | "npm-run-path": "^2.0.0",
806 | "p-finally": "^1.0.0",
807 | "signal-exit": "^3.0.0",
808 | "strip-eof": "^1.0.0"
809 | }
810 | },
811 | "external-editor": {
812 | "version": "3.1.0",
813 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
814 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
815 | "dev": true,
816 | "requires": {
817 | "chardet": "^0.7.0",
818 | "iconv-lite": "^0.4.24",
819 | "tmp": "^0.0.33"
820 | }
821 | },
822 | "fast-deep-equal": {
823 | "version": "2.0.1",
824 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
825 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
826 | "dev": true
827 | },
828 | "fast-diff": {
829 | "version": "1.2.0",
830 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
831 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
832 | "dev": true
833 | },
834 | "fast-glob": {
835 | "version": "3.1.0",
836 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz",
837 | "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==",
838 | "dev": true,
839 | "requires": {
840 | "@nodelib/fs.stat": "^2.0.2",
841 | "@nodelib/fs.walk": "^1.2.3",
842 | "glob-parent": "^5.1.0",
843 | "merge2": "^1.3.0",
844 | "micromatch": "^4.0.2"
845 | },
846 | "dependencies": {
847 | "glob-parent": {
848 | "version": "5.1.0",
849 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
850 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
851 | "dev": true,
852 | "requires": {
853 | "is-glob": "^4.0.1"
854 | }
855 | }
856 | }
857 | },
858 | "fast-json-stable-stringify": {
859 | "version": "2.0.0",
860 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
861 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
862 | "dev": true
863 | },
864 | "fast-levenshtein": {
865 | "version": "2.0.6",
866 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
867 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
868 | "dev": true
869 | },
870 | "fastq": {
871 | "version": "1.6.0",
872 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
873 | "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
874 | "dev": true,
875 | "requires": {
876 | "reusify": "^1.0.0"
877 | }
878 | },
879 | "figures": {
880 | "version": "2.0.0",
881 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
882 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
883 | "dev": true,
884 | "requires": {
885 | "escape-string-regexp": "^1.0.5"
886 | }
887 | },
888 | "file-entry-cache": {
889 | "version": "5.0.1",
890 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
891 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
892 | "dev": true,
893 | "requires": {
894 | "flat-cache": "^2.0.1"
895 | }
896 | },
897 | "fill-range": {
898 | "version": "7.0.1",
899 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
900 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
901 | "requires": {
902 | "to-regex-range": "^5.0.1"
903 | }
904 | },
905 | "find-up": {
906 | "version": "3.0.0",
907 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
908 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
909 | "dev": true,
910 | "requires": {
911 | "locate-path": "^3.0.0"
912 | }
913 | },
914 | "flat": {
915 | "version": "4.1.0",
916 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
917 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
918 | "dev": true,
919 | "requires": {
920 | "is-buffer": "~2.0.3"
921 | }
922 | },
923 | "flat-cache": {
924 | "version": "2.0.1",
925 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
926 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
927 | "dev": true,
928 | "requires": {
929 | "flatted": "^2.0.0",
930 | "rimraf": "2.6.3",
931 | "write": "1.0.3"
932 | }
933 | },
934 | "flatted": {
935 | "version": "2.0.1",
936 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
937 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
938 | "dev": true
939 | },
940 | "fs.realpath": {
941 | "version": "1.0.0",
942 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
943 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
944 | "dev": true
945 | },
946 | "fsevents": {
947 | "version": "2.0.7",
948 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
949 | "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
950 | "optional": true
951 | },
952 | "function-bind": {
953 | "version": "1.1.1",
954 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
955 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
956 | "dev": true
957 | },
958 | "functional-red-black-tree": {
959 | "version": "1.0.1",
960 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
961 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
962 | "dev": true
963 | },
964 | "get-caller-file": {
965 | "version": "2.0.5",
966 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
967 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
968 | "dev": true
969 | },
970 | "get-own-enumerable-property-symbols": {
971 | "version": "3.0.1",
972 | "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz",
973 | "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==",
974 | "dev": true
975 | },
976 | "get-stdin": {
977 | "version": "6.0.0",
978 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
979 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
980 | "dev": true
981 | },
982 | "get-stream": {
983 | "version": "4.1.0",
984 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
985 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
986 | "dev": true,
987 | "requires": {
988 | "pump": "^3.0.0"
989 | }
990 | },
991 | "glob": {
992 | "version": "7.1.4",
993 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
994 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
995 | "dev": true,
996 | "requires": {
997 | "fs.realpath": "^1.0.0",
998 | "inflight": "^1.0.4",
999 | "inherits": "2",
1000 | "minimatch": "^3.0.4",
1001 | "once": "^1.3.0",
1002 | "path-is-absolute": "^1.0.0"
1003 | }
1004 | },
1005 | "glob-parent": {
1006 | "version": "5.0.0",
1007 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
1008 | "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
1009 | "requires": {
1010 | "is-glob": "^4.0.1"
1011 | }
1012 | },
1013 | "globals": {
1014 | "version": "11.12.0",
1015 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1016 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1017 | "dev": true
1018 | },
1019 | "globby": {
1020 | "version": "10.0.1",
1021 | "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
1022 | "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
1023 | "dev": true,
1024 | "requires": {
1025 | "@types/glob": "^7.1.1",
1026 | "array-union": "^2.1.0",
1027 | "dir-glob": "^3.0.1",
1028 | "fast-glob": "^3.0.3",
1029 | "glob": "^7.1.3",
1030 | "ignore": "^5.1.1",
1031 | "merge2": "^1.2.3",
1032 | "slash": "^3.0.0"
1033 | },
1034 | "dependencies": {
1035 | "ignore": {
1036 | "version": "5.1.4",
1037 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
1038 | "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
1039 | "dev": true
1040 | }
1041 | }
1042 | },
1043 | "graceful-fs": {
1044 | "version": "4.2.2",
1045 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
1046 | "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
1047 | "dev": true
1048 | },
1049 | "growl": {
1050 | "version": "1.10.5",
1051 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
1052 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
1053 | "dev": true
1054 | },
1055 | "has": {
1056 | "version": "1.0.3",
1057 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1058 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1059 | "dev": true,
1060 | "requires": {
1061 | "function-bind": "^1.1.1"
1062 | }
1063 | },
1064 | "has-ansi": {
1065 | "version": "2.0.0",
1066 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1067 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1068 | "dev": true,
1069 | "requires": {
1070 | "ansi-regex": "^2.0.0"
1071 | },
1072 | "dependencies": {
1073 | "ansi-regex": {
1074 | "version": "2.1.1",
1075 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
1076 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
1077 | "dev": true
1078 | }
1079 | }
1080 | },
1081 | "has-flag": {
1082 | "version": "3.0.0",
1083 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1084 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1085 | "dev": true
1086 | },
1087 | "has-symbols": {
1088 | "version": "1.0.0",
1089 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
1090 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
1091 | "dev": true
1092 | },
1093 | "he": {
1094 | "version": "1.2.0",
1095 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1096 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1097 | "dev": true
1098 | },
1099 | "hosted-git-info": {
1100 | "version": "2.8.5",
1101 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
1102 | "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
1103 | "dev": true
1104 | },
1105 | "http-proxy-agent": {
1106 | "version": "2.1.0",
1107 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
1108 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
1109 | "dev": true,
1110 | "requires": {
1111 | "agent-base": "4",
1112 | "debug": "3.1.0"
1113 | },
1114 | "dependencies": {
1115 | "debug": {
1116 | "version": "3.1.0",
1117 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
1118 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
1119 | "dev": true,
1120 | "requires": {
1121 | "ms": "2.0.0"
1122 | }
1123 | },
1124 | "ms": {
1125 | "version": "2.0.0",
1126 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1127 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1128 | "dev": true
1129 | }
1130 | }
1131 | },
1132 | "https-proxy-agent": {
1133 | "version": "2.2.2",
1134 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz",
1135 | "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==",
1136 | "dev": true,
1137 | "requires": {
1138 | "agent-base": "^4.3.0",
1139 | "debug": "^3.1.0"
1140 | },
1141 | "dependencies": {
1142 | "debug": {
1143 | "version": "3.2.6",
1144 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1145 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1146 | "dev": true,
1147 | "requires": {
1148 | "ms": "^2.1.1"
1149 | }
1150 | }
1151 | }
1152 | },
1153 | "husky": {
1154 | "version": "3.0.8",
1155 | "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.8.tgz",
1156 | "integrity": "sha512-HFOsgcyrX3qe/rBuqyTt+P4Gxn5P0seJmr215LAZ/vnwK3jWB3r0ck7swbzGRUbufCf9w/lgHPVbF/YXQALgfQ==",
1157 | "dev": true,
1158 | "requires": {
1159 | "chalk": "^2.4.2",
1160 | "cosmiconfig": "^5.2.1",
1161 | "execa": "^1.0.0",
1162 | "get-stdin": "^7.0.0",
1163 | "is-ci": "^2.0.0",
1164 | "opencollective-postinstall": "^2.0.2",
1165 | "pkg-dir": "^4.2.0",
1166 | "please-upgrade-node": "^3.2.0",
1167 | "read-pkg": "^5.1.1",
1168 | "run-node": "^1.0.0",
1169 | "slash": "^3.0.0"
1170 | },
1171 | "dependencies": {
1172 | "get-stdin": {
1173 | "version": "7.0.0",
1174 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
1175 | "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
1176 | "dev": true
1177 | }
1178 | }
1179 | },
1180 | "iconv-lite": {
1181 | "version": "0.4.24",
1182 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1183 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1184 | "dev": true,
1185 | "requires": {
1186 | "safer-buffer": ">= 2.1.2 < 3"
1187 | }
1188 | },
1189 | "ignore": {
1190 | "version": "4.0.6",
1191 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1192 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1193 | "dev": true
1194 | },
1195 | "import-fresh": {
1196 | "version": "3.1.0",
1197 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
1198 | "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
1199 | "dev": true,
1200 | "requires": {
1201 | "parent-module": "^1.0.0",
1202 | "resolve-from": "^4.0.0"
1203 | }
1204 | },
1205 | "imurmurhash": {
1206 | "version": "0.1.4",
1207 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1208 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1209 | "dev": true
1210 | },
1211 | "indent-string": {
1212 | "version": "4.0.0",
1213 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1214 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
1215 | "dev": true
1216 | },
1217 | "inflight": {
1218 | "version": "1.0.6",
1219 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1220 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1221 | "dev": true,
1222 | "requires": {
1223 | "once": "^1.3.0",
1224 | "wrappy": "1"
1225 | }
1226 | },
1227 | "inherits": {
1228 | "version": "2.0.4",
1229 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1230 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1231 | "dev": true
1232 | },
1233 | "inquirer": {
1234 | "version": "6.5.2",
1235 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
1236 | "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
1237 | "dev": true,
1238 | "requires": {
1239 | "ansi-escapes": "^3.2.0",
1240 | "chalk": "^2.4.2",
1241 | "cli-cursor": "^2.1.0",
1242 | "cli-width": "^2.0.0",
1243 | "external-editor": "^3.0.3",
1244 | "figures": "^2.0.0",
1245 | "lodash": "^4.17.12",
1246 | "mute-stream": "0.0.7",
1247 | "run-async": "^2.2.0",
1248 | "rxjs": "^6.4.0",
1249 | "string-width": "^2.1.0",
1250 | "strip-ansi": "^5.1.0",
1251 | "through": "^2.3.6"
1252 | },
1253 | "dependencies": {
1254 | "ansi-regex": {
1255 | "version": "4.1.0",
1256 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1257 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1258 | "dev": true
1259 | },
1260 | "strip-ansi": {
1261 | "version": "5.2.0",
1262 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1263 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1264 | "dev": true,
1265 | "requires": {
1266 | "ansi-regex": "^4.1.0"
1267 | }
1268 | }
1269 | }
1270 | },
1271 | "invert-kv": {
1272 | "version": "2.0.0",
1273 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
1274 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
1275 | "dev": true
1276 | },
1277 | "is-arrayish": {
1278 | "version": "0.2.1",
1279 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1280 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1281 | "dev": true
1282 | },
1283 | "is-binary-path": {
1284 | "version": "2.1.0",
1285 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1286 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1287 | "requires": {
1288 | "binary-extensions": "^2.0.0"
1289 | }
1290 | },
1291 | "is-buffer": {
1292 | "version": "2.0.3",
1293 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
1294 | "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
1295 | "dev": true
1296 | },
1297 | "is-callable": {
1298 | "version": "1.1.4",
1299 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
1300 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
1301 | "dev": true
1302 | },
1303 | "is-ci": {
1304 | "version": "2.0.0",
1305 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
1306 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
1307 | "dev": true,
1308 | "requires": {
1309 | "ci-info": "^2.0.0"
1310 | }
1311 | },
1312 | "is-date-object": {
1313 | "version": "1.0.1",
1314 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
1315 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
1316 | "dev": true
1317 | },
1318 | "is-directory": {
1319 | "version": "0.3.1",
1320 | "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
1321 | "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
1322 | "dev": true
1323 | },
1324 | "is-extglob": {
1325 | "version": "2.1.1",
1326 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1327 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
1328 | },
1329 | "is-fullwidth-code-point": {
1330 | "version": "2.0.0",
1331 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1332 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1333 | "dev": true
1334 | },
1335 | "is-glob": {
1336 | "version": "4.0.1",
1337 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1338 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1339 | "requires": {
1340 | "is-extglob": "^2.1.1"
1341 | }
1342 | },
1343 | "is-number": {
1344 | "version": "7.0.0",
1345 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1346 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
1347 | },
1348 | "is-obj": {
1349 | "version": "1.0.1",
1350 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
1351 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
1352 | "dev": true
1353 | },
1354 | "is-observable": {
1355 | "version": "1.1.0",
1356 | "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
1357 | "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
1358 | "dev": true,
1359 | "requires": {
1360 | "symbol-observable": "^1.1.0"
1361 | }
1362 | },
1363 | "is-path-cwd": {
1364 | "version": "2.2.0",
1365 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
1366 | "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
1367 | "dev": true
1368 | },
1369 | "is-path-inside": {
1370 | "version": "3.0.2",
1371 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
1372 | "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
1373 | "dev": true
1374 | },
1375 | "is-promise": {
1376 | "version": "2.1.0",
1377 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1378 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1379 | "dev": true
1380 | },
1381 | "is-regex": {
1382 | "version": "1.0.4",
1383 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
1384 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
1385 | "dev": true,
1386 | "requires": {
1387 | "has": "^1.0.1"
1388 | }
1389 | },
1390 | "is-regexp": {
1391 | "version": "1.0.0",
1392 | "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
1393 | "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
1394 | "dev": true
1395 | },
1396 | "is-stream": {
1397 | "version": "1.1.0",
1398 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
1399 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
1400 | "dev": true
1401 | },
1402 | "is-symbol": {
1403 | "version": "1.0.2",
1404 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
1405 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
1406 | "dev": true,
1407 | "requires": {
1408 | "has-symbols": "^1.0.0"
1409 | }
1410 | },
1411 | "isexe": {
1412 | "version": "2.0.0",
1413 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1414 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1415 | "dev": true
1416 | },
1417 | "js-tokens": {
1418 | "version": "4.0.0",
1419 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1420 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1421 | "dev": true
1422 | },
1423 | "js-yaml": {
1424 | "version": "3.13.1",
1425 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
1426 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
1427 | "dev": true,
1428 | "requires": {
1429 | "argparse": "^1.0.7",
1430 | "esprima": "^4.0.0"
1431 | }
1432 | },
1433 | "json-parse-better-errors": {
1434 | "version": "1.0.2",
1435 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1436 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1437 | "dev": true
1438 | },
1439 | "json-schema-traverse": {
1440 | "version": "0.4.1",
1441 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1442 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1443 | "dev": true
1444 | },
1445 | "json-stable-stringify-without-jsonify": {
1446 | "version": "1.0.1",
1447 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1448 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1449 | "dev": true
1450 | },
1451 | "lcid": {
1452 | "version": "2.0.0",
1453 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
1454 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
1455 | "dev": true,
1456 | "requires": {
1457 | "invert-kv": "^2.0.0"
1458 | }
1459 | },
1460 | "levn": {
1461 | "version": "0.3.0",
1462 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1463 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1464 | "dev": true,
1465 | "requires": {
1466 | "prelude-ls": "~1.1.2",
1467 | "type-check": "~0.3.2"
1468 | }
1469 | },
1470 | "lines-and-columns": {
1471 | "version": "1.1.6",
1472 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
1473 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
1474 | "dev": true
1475 | },
1476 | "lint-staged": {
1477 | "version": "9.4.2",
1478 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.4.2.tgz",
1479 | "integrity": "sha512-OFyGokJSWTn2M6vngnlLXjaHhi8n83VIZZ5/1Z26SULRUWgR3ITWpAEQC9Pnm3MC/EpCxlwts/mQWDHNji2+zA==",
1480 | "dev": true,
1481 | "requires": {
1482 | "chalk": "^2.4.2",
1483 | "commander": "^2.20.0",
1484 | "cosmiconfig": "^5.2.1",
1485 | "debug": "^4.1.1",
1486 | "dedent": "^0.7.0",
1487 | "del": "^5.0.0",
1488 | "execa": "^2.0.3",
1489 | "listr": "^0.14.3",
1490 | "log-symbols": "^3.0.0",
1491 | "micromatch": "^4.0.2",
1492 | "normalize-path": "^3.0.0",
1493 | "please-upgrade-node": "^3.1.1",
1494 | "string-argv": "^0.3.0",
1495 | "stringify-object": "^3.3.0"
1496 | },
1497 | "dependencies": {
1498 | "cross-spawn": {
1499 | "version": "7.0.1",
1500 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
1501 | "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
1502 | "dev": true,
1503 | "requires": {
1504 | "path-key": "^3.1.0",
1505 | "shebang-command": "^2.0.0",
1506 | "which": "^2.0.1"
1507 | }
1508 | },
1509 | "execa": {
1510 | "version": "2.1.0",
1511 | "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
1512 | "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
1513 | "dev": true,
1514 | "requires": {
1515 | "cross-spawn": "^7.0.0",
1516 | "get-stream": "^5.0.0",
1517 | "is-stream": "^2.0.0",
1518 | "merge-stream": "^2.0.0",
1519 | "npm-run-path": "^3.0.0",
1520 | "onetime": "^5.1.0",
1521 | "p-finally": "^2.0.0",
1522 | "signal-exit": "^3.0.2",
1523 | "strip-final-newline": "^2.0.0"
1524 | }
1525 | },
1526 | "get-stream": {
1527 | "version": "5.1.0",
1528 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
1529 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
1530 | "dev": true,
1531 | "requires": {
1532 | "pump": "^3.0.0"
1533 | }
1534 | },
1535 | "is-stream": {
1536 | "version": "2.0.0",
1537 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
1538 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
1539 | "dev": true
1540 | },
1541 | "log-symbols": {
1542 | "version": "3.0.0",
1543 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
1544 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
1545 | "dev": true,
1546 | "requires": {
1547 | "chalk": "^2.4.2"
1548 | }
1549 | },
1550 | "mimic-fn": {
1551 | "version": "2.1.0",
1552 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1553 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1554 | "dev": true
1555 | },
1556 | "npm-run-path": {
1557 | "version": "3.1.0",
1558 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
1559 | "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
1560 | "dev": true,
1561 | "requires": {
1562 | "path-key": "^3.0.0"
1563 | }
1564 | },
1565 | "onetime": {
1566 | "version": "5.1.0",
1567 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
1568 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
1569 | "dev": true,
1570 | "requires": {
1571 | "mimic-fn": "^2.1.0"
1572 | }
1573 | },
1574 | "p-finally": {
1575 | "version": "2.0.1",
1576 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
1577 | "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
1578 | "dev": true
1579 | },
1580 | "path-key": {
1581 | "version": "3.1.0",
1582 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz",
1583 | "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==",
1584 | "dev": true
1585 | },
1586 | "shebang-command": {
1587 | "version": "2.0.0",
1588 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1589 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1590 | "dev": true,
1591 | "requires": {
1592 | "shebang-regex": "^3.0.0"
1593 | }
1594 | },
1595 | "shebang-regex": {
1596 | "version": "3.0.0",
1597 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1598 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1599 | "dev": true
1600 | },
1601 | "which": {
1602 | "version": "2.0.1",
1603 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz",
1604 | "integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==",
1605 | "dev": true,
1606 | "requires": {
1607 | "isexe": "^2.0.0"
1608 | }
1609 | }
1610 | }
1611 | },
1612 | "listr": {
1613 | "version": "0.14.3",
1614 | "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
1615 | "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
1616 | "dev": true,
1617 | "requires": {
1618 | "@samverschueren/stream-to-observable": "^0.3.0",
1619 | "is-observable": "^1.1.0",
1620 | "is-promise": "^2.1.0",
1621 | "is-stream": "^1.1.0",
1622 | "listr-silent-renderer": "^1.1.1",
1623 | "listr-update-renderer": "^0.5.0",
1624 | "listr-verbose-renderer": "^0.5.0",
1625 | "p-map": "^2.0.0",
1626 | "rxjs": "^6.3.3"
1627 | },
1628 | "dependencies": {
1629 | "p-map": {
1630 | "version": "2.1.0",
1631 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
1632 | "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
1633 | "dev": true
1634 | }
1635 | }
1636 | },
1637 | "listr-silent-renderer": {
1638 | "version": "1.1.1",
1639 | "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
1640 | "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
1641 | "dev": true
1642 | },
1643 | "listr-update-renderer": {
1644 | "version": "0.5.0",
1645 | "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
1646 | "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
1647 | "dev": true,
1648 | "requires": {
1649 | "chalk": "^1.1.3",
1650 | "cli-truncate": "^0.2.1",
1651 | "elegant-spinner": "^1.0.1",
1652 | "figures": "^1.7.0",
1653 | "indent-string": "^3.0.0",
1654 | "log-symbols": "^1.0.2",
1655 | "log-update": "^2.3.0",
1656 | "strip-ansi": "^3.0.1"
1657 | },
1658 | "dependencies": {
1659 | "ansi-regex": {
1660 | "version": "2.1.1",
1661 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
1662 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
1663 | "dev": true
1664 | },
1665 | "ansi-styles": {
1666 | "version": "2.2.1",
1667 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1668 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1669 | "dev": true
1670 | },
1671 | "chalk": {
1672 | "version": "1.1.3",
1673 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1674 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1675 | "dev": true,
1676 | "requires": {
1677 | "ansi-styles": "^2.2.1",
1678 | "escape-string-regexp": "^1.0.2",
1679 | "has-ansi": "^2.0.0",
1680 | "strip-ansi": "^3.0.0",
1681 | "supports-color": "^2.0.0"
1682 | }
1683 | },
1684 | "figures": {
1685 | "version": "1.7.0",
1686 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
1687 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
1688 | "dev": true,
1689 | "requires": {
1690 | "escape-string-regexp": "^1.0.5",
1691 | "object-assign": "^4.1.0"
1692 | }
1693 | },
1694 | "indent-string": {
1695 | "version": "3.2.0",
1696 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
1697 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
1698 | "dev": true
1699 | },
1700 | "log-symbols": {
1701 | "version": "1.0.2",
1702 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
1703 | "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
1704 | "dev": true,
1705 | "requires": {
1706 | "chalk": "^1.0.0"
1707 | }
1708 | },
1709 | "strip-ansi": {
1710 | "version": "3.0.1",
1711 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1712 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1713 | "dev": true,
1714 | "requires": {
1715 | "ansi-regex": "^2.0.0"
1716 | }
1717 | },
1718 | "supports-color": {
1719 | "version": "2.0.0",
1720 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1721 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1722 | "dev": true
1723 | }
1724 | }
1725 | },
1726 | "listr-verbose-renderer": {
1727 | "version": "0.5.0",
1728 | "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
1729 | "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
1730 | "dev": true,
1731 | "requires": {
1732 | "chalk": "^2.4.1",
1733 | "cli-cursor": "^2.1.0",
1734 | "date-fns": "^1.27.2",
1735 | "figures": "^2.0.0"
1736 | }
1737 | },
1738 | "locate-path": {
1739 | "version": "3.0.0",
1740 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
1741 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
1742 | "dev": true,
1743 | "requires": {
1744 | "p-locate": "^3.0.0",
1745 | "path-exists": "^3.0.0"
1746 | }
1747 | },
1748 | "lodash": {
1749 | "version": "4.17.14",
1750 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
1751 | "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
1752 | "dev": true
1753 | },
1754 | "log-symbols": {
1755 | "version": "2.2.0",
1756 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
1757 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
1758 | "dev": true,
1759 | "requires": {
1760 | "chalk": "^2.0.1"
1761 | }
1762 | },
1763 | "log-update": {
1764 | "version": "2.3.0",
1765 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
1766 | "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
1767 | "dev": true,
1768 | "requires": {
1769 | "ansi-escapes": "^3.0.0",
1770 | "cli-cursor": "^2.0.0",
1771 | "wrap-ansi": "^3.0.1"
1772 | },
1773 | "dependencies": {
1774 | "wrap-ansi": {
1775 | "version": "3.0.1",
1776 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
1777 | "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
1778 | "dev": true,
1779 | "requires": {
1780 | "string-width": "^2.1.1",
1781 | "strip-ansi": "^4.0.0"
1782 | }
1783 | }
1784 | }
1785 | },
1786 | "map-age-cleaner": {
1787 | "version": "0.1.3",
1788 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
1789 | "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
1790 | "dev": true,
1791 | "requires": {
1792 | "p-defer": "^1.0.0"
1793 | }
1794 | },
1795 | "mem": {
1796 | "version": "4.3.0",
1797 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
1798 | "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
1799 | "dev": true,
1800 | "requires": {
1801 | "map-age-cleaner": "^0.1.1",
1802 | "mimic-fn": "^2.0.0",
1803 | "p-is-promise": "^2.0.0"
1804 | },
1805 | "dependencies": {
1806 | "mimic-fn": {
1807 | "version": "2.1.0",
1808 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1809 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1810 | "dev": true
1811 | }
1812 | }
1813 | },
1814 | "merge-stream": {
1815 | "version": "2.0.0",
1816 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1817 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1818 | "dev": true
1819 | },
1820 | "merge2": {
1821 | "version": "1.3.0",
1822 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
1823 | "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
1824 | "dev": true
1825 | },
1826 | "micromatch": {
1827 | "version": "4.0.2",
1828 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
1829 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
1830 | "dev": true,
1831 | "requires": {
1832 | "braces": "^3.0.1",
1833 | "picomatch": "^2.0.5"
1834 | }
1835 | },
1836 | "mimic-fn": {
1837 | "version": "1.2.0",
1838 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
1839 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
1840 | "dev": true
1841 | },
1842 | "minimatch": {
1843 | "version": "3.0.4",
1844 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1845 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1846 | "dev": true,
1847 | "requires": {
1848 | "brace-expansion": "^1.1.7"
1849 | }
1850 | },
1851 | "minimist": {
1852 | "version": "0.0.8",
1853 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1854 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1855 | "dev": true
1856 | },
1857 | "mkdirp": {
1858 | "version": "0.5.1",
1859 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1860 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1861 | "dev": true,
1862 | "requires": {
1863 | "minimist": "0.0.8"
1864 | }
1865 | },
1866 | "mocha": {
1867 | "version": "6.1.4",
1868 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz",
1869 | "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==",
1870 | "dev": true,
1871 | "requires": {
1872 | "ansi-colors": "3.2.3",
1873 | "browser-stdout": "1.3.1",
1874 | "debug": "3.2.6",
1875 | "diff": "3.5.0",
1876 | "escape-string-regexp": "1.0.5",
1877 | "find-up": "3.0.0",
1878 | "glob": "7.1.3",
1879 | "growl": "1.10.5",
1880 | "he": "1.2.0",
1881 | "js-yaml": "3.13.1",
1882 | "log-symbols": "2.2.0",
1883 | "minimatch": "3.0.4",
1884 | "mkdirp": "0.5.1",
1885 | "ms": "2.1.1",
1886 | "node-environment-flags": "1.0.5",
1887 | "object.assign": "4.1.0",
1888 | "strip-json-comments": "2.0.1",
1889 | "supports-color": "6.0.0",
1890 | "which": "1.3.1",
1891 | "wide-align": "1.1.3",
1892 | "yargs": "13.2.2",
1893 | "yargs-parser": "13.0.0",
1894 | "yargs-unparser": "1.5.0"
1895 | },
1896 | "dependencies": {
1897 | "debug": {
1898 | "version": "3.2.6",
1899 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1900 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1901 | "dev": true,
1902 | "requires": {
1903 | "ms": "^2.1.1"
1904 | }
1905 | },
1906 | "glob": {
1907 | "version": "7.1.3",
1908 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1909 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1910 | "dev": true,
1911 | "requires": {
1912 | "fs.realpath": "^1.0.0",
1913 | "inflight": "^1.0.4",
1914 | "inherits": "2",
1915 | "minimatch": "^3.0.4",
1916 | "once": "^1.3.0",
1917 | "path-is-absolute": "^1.0.0"
1918 | }
1919 | },
1920 | "ms": {
1921 | "version": "2.1.1",
1922 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1923 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
1924 | "dev": true
1925 | },
1926 | "supports-color": {
1927 | "version": "6.0.0",
1928 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
1929 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
1930 | "dev": true,
1931 | "requires": {
1932 | "has-flag": "^3.0.0"
1933 | }
1934 | }
1935 | }
1936 | },
1937 | "ms": {
1938 | "version": "2.1.2",
1939 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1940 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1941 | "dev": true
1942 | },
1943 | "mute-stream": {
1944 | "version": "0.0.7",
1945 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
1946 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
1947 | "dev": true
1948 | },
1949 | "natural-compare": {
1950 | "version": "1.4.0",
1951 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1952 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1953 | "dev": true
1954 | },
1955 | "nice-try": {
1956 | "version": "1.0.5",
1957 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1958 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1959 | "dev": true
1960 | },
1961 | "node-environment-flags": {
1962 | "version": "1.0.5",
1963 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
1964 | "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
1965 | "dev": true,
1966 | "requires": {
1967 | "object.getownpropertydescriptors": "^2.0.3",
1968 | "semver": "^5.7.0"
1969 | }
1970 | },
1971 | "normalize-package-data": {
1972 | "version": "2.5.0",
1973 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1974 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1975 | "dev": true,
1976 | "requires": {
1977 | "hosted-git-info": "^2.1.4",
1978 | "resolve": "^1.10.0",
1979 | "semver": "2 || 3 || 4 || 5",
1980 | "validate-npm-package-license": "^3.0.1"
1981 | }
1982 | },
1983 | "normalize-path": {
1984 | "version": "3.0.0",
1985 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1986 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
1987 | },
1988 | "npm-run-path": {
1989 | "version": "2.0.2",
1990 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
1991 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
1992 | "dev": true,
1993 | "requires": {
1994 | "path-key": "^2.0.0"
1995 | }
1996 | },
1997 | "number-is-nan": {
1998 | "version": "1.0.1",
1999 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
2000 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
2001 | "dev": true
2002 | },
2003 | "object-assign": {
2004 | "version": "4.1.1",
2005 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2006 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
2007 | "dev": true
2008 | },
2009 | "object-keys": {
2010 | "version": "1.1.1",
2011 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2012 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2013 | "dev": true
2014 | },
2015 | "object.assign": {
2016 | "version": "4.1.0",
2017 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
2018 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
2019 | "dev": true,
2020 | "requires": {
2021 | "define-properties": "^1.1.2",
2022 | "function-bind": "^1.1.1",
2023 | "has-symbols": "^1.0.0",
2024 | "object-keys": "^1.0.11"
2025 | }
2026 | },
2027 | "object.getownpropertydescriptors": {
2028 | "version": "2.0.3",
2029 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
2030 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
2031 | "dev": true,
2032 | "requires": {
2033 | "define-properties": "^1.1.2",
2034 | "es-abstract": "^1.5.1"
2035 | }
2036 | },
2037 | "once": {
2038 | "version": "1.4.0",
2039 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2040 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2041 | "dev": true,
2042 | "requires": {
2043 | "wrappy": "1"
2044 | }
2045 | },
2046 | "onetime": {
2047 | "version": "2.0.1",
2048 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
2049 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
2050 | "dev": true,
2051 | "requires": {
2052 | "mimic-fn": "^1.0.0"
2053 | }
2054 | },
2055 | "opencollective-postinstall": {
2056 | "version": "2.0.2",
2057 | "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
2058 | "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==",
2059 | "dev": true
2060 | },
2061 | "optionator": {
2062 | "version": "0.8.2",
2063 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
2064 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
2065 | "dev": true,
2066 | "requires": {
2067 | "deep-is": "~0.1.3",
2068 | "fast-levenshtein": "~2.0.4",
2069 | "levn": "~0.3.0",
2070 | "prelude-ls": "~1.1.2",
2071 | "type-check": "~0.3.2",
2072 | "wordwrap": "~1.0.0"
2073 | }
2074 | },
2075 | "os-locale": {
2076 | "version": "3.1.0",
2077 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
2078 | "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
2079 | "dev": true,
2080 | "requires": {
2081 | "execa": "^1.0.0",
2082 | "lcid": "^2.0.0",
2083 | "mem": "^4.0.0"
2084 | }
2085 | },
2086 | "os-tmpdir": {
2087 | "version": "1.0.2",
2088 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2089 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2090 | "dev": true
2091 | },
2092 | "p-defer": {
2093 | "version": "1.0.0",
2094 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
2095 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
2096 | "dev": true
2097 | },
2098 | "p-finally": {
2099 | "version": "1.0.0",
2100 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
2101 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
2102 | "dev": true
2103 | },
2104 | "p-is-promise": {
2105 | "version": "2.1.0",
2106 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
2107 | "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
2108 | "dev": true
2109 | },
2110 | "p-limit": {
2111 | "version": "2.2.0",
2112 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
2113 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
2114 | "dev": true,
2115 | "requires": {
2116 | "p-try": "^2.0.0"
2117 | }
2118 | },
2119 | "p-locate": {
2120 | "version": "3.0.0",
2121 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2122 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2123 | "dev": true,
2124 | "requires": {
2125 | "p-limit": "^2.0.0"
2126 | }
2127 | },
2128 | "p-map": {
2129 | "version": "3.0.0",
2130 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
2131 | "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
2132 | "dev": true,
2133 | "requires": {
2134 | "aggregate-error": "^3.0.0"
2135 | }
2136 | },
2137 | "p-try": {
2138 | "version": "2.2.0",
2139 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2140 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2141 | "dev": true
2142 | },
2143 | "parent-module": {
2144 | "version": "1.0.1",
2145 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2146 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2147 | "dev": true,
2148 | "requires": {
2149 | "callsites": "^3.0.0"
2150 | }
2151 | },
2152 | "parse-json": {
2153 | "version": "4.0.0",
2154 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
2155 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
2156 | "dev": true,
2157 | "requires": {
2158 | "error-ex": "^1.3.1",
2159 | "json-parse-better-errors": "^1.0.1"
2160 | }
2161 | },
2162 | "path-exists": {
2163 | "version": "3.0.0",
2164 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2165 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2166 | "dev": true
2167 | },
2168 | "path-is-absolute": {
2169 | "version": "1.0.1",
2170 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2171 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2172 | "dev": true
2173 | },
2174 | "path-is-inside": {
2175 | "version": "1.0.2",
2176 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
2177 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
2178 | "dev": true
2179 | },
2180 | "path-key": {
2181 | "version": "2.0.1",
2182 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
2183 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
2184 | "dev": true
2185 | },
2186 | "path-parse": {
2187 | "version": "1.0.6",
2188 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
2189 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
2190 | "dev": true
2191 | },
2192 | "path-type": {
2193 | "version": "4.0.0",
2194 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2195 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
2196 | "dev": true
2197 | },
2198 | "picomatch": {
2199 | "version": "2.0.7",
2200 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
2201 | "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA=="
2202 | },
2203 | "pkg-dir": {
2204 | "version": "4.2.0",
2205 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
2206 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
2207 | "dev": true,
2208 | "requires": {
2209 | "find-up": "^4.0.0"
2210 | },
2211 | "dependencies": {
2212 | "find-up": {
2213 | "version": "4.1.0",
2214 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
2215 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
2216 | "dev": true,
2217 | "requires": {
2218 | "locate-path": "^5.0.0",
2219 | "path-exists": "^4.0.0"
2220 | }
2221 | },
2222 | "locate-path": {
2223 | "version": "5.0.0",
2224 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2225 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
2226 | "dev": true,
2227 | "requires": {
2228 | "p-locate": "^4.1.0"
2229 | }
2230 | },
2231 | "p-locate": {
2232 | "version": "4.1.0",
2233 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
2234 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
2235 | "dev": true,
2236 | "requires": {
2237 | "p-limit": "^2.2.0"
2238 | }
2239 | },
2240 | "path-exists": {
2241 | "version": "4.0.0",
2242 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2243 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2244 | "dev": true
2245 | }
2246 | }
2247 | },
2248 | "please-upgrade-node": {
2249 | "version": "3.2.0",
2250 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
2251 | "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
2252 | "dev": true,
2253 | "requires": {
2254 | "semver-compare": "^1.0.0"
2255 | }
2256 | },
2257 | "prelude-ls": {
2258 | "version": "1.1.2",
2259 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
2260 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
2261 | "dev": true
2262 | },
2263 | "prettier": {
2264 | "version": "1.18.2",
2265 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
2266 | "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
2267 | "dev": true
2268 | },
2269 | "prettier-linter-helpers": {
2270 | "version": "1.0.0",
2271 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
2272 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
2273 | "dev": true,
2274 | "requires": {
2275 | "fast-diff": "^1.1.2"
2276 | }
2277 | },
2278 | "progress": {
2279 | "version": "2.0.3",
2280 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2281 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2282 | "dev": true
2283 | },
2284 | "pump": {
2285 | "version": "3.0.0",
2286 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
2287 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
2288 | "dev": true,
2289 | "requires": {
2290 | "end-of-stream": "^1.1.0",
2291 | "once": "^1.3.1"
2292 | }
2293 | },
2294 | "punycode": {
2295 | "version": "2.1.1",
2296 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2297 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2298 | "dev": true
2299 | },
2300 | "read-pkg": {
2301 | "version": "5.2.0",
2302 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
2303 | "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
2304 | "dev": true,
2305 | "requires": {
2306 | "@types/normalize-package-data": "^2.4.0",
2307 | "normalize-package-data": "^2.5.0",
2308 | "parse-json": "^5.0.0",
2309 | "type-fest": "^0.6.0"
2310 | },
2311 | "dependencies": {
2312 | "parse-json": {
2313 | "version": "5.0.0",
2314 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
2315 | "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
2316 | "dev": true,
2317 | "requires": {
2318 | "@babel/code-frame": "^7.0.0",
2319 | "error-ex": "^1.3.1",
2320 | "json-parse-better-errors": "^1.0.1",
2321 | "lines-and-columns": "^1.1.6"
2322 | }
2323 | }
2324 | }
2325 | },
2326 | "readdirp": {
2327 | "version": "3.1.1",
2328 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz",
2329 | "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==",
2330 | "requires": {
2331 | "picomatch": "^2.0.4"
2332 | }
2333 | },
2334 | "regexpp": {
2335 | "version": "2.0.1",
2336 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
2337 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
2338 | "dev": true
2339 | },
2340 | "require-directory": {
2341 | "version": "2.1.1",
2342 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2343 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
2344 | "dev": true
2345 | },
2346 | "require-main-filename": {
2347 | "version": "2.0.0",
2348 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
2349 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
2350 | "dev": true
2351 | },
2352 | "resolve": {
2353 | "version": "1.12.0",
2354 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
2355 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
2356 | "dev": true,
2357 | "requires": {
2358 | "path-parse": "^1.0.6"
2359 | }
2360 | },
2361 | "resolve-from": {
2362 | "version": "4.0.0",
2363 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2364 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2365 | "dev": true
2366 | },
2367 | "restore-cursor": {
2368 | "version": "2.0.0",
2369 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
2370 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
2371 | "dev": true,
2372 | "requires": {
2373 | "onetime": "^2.0.0",
2374 | "signal-exit": "^3.0.2"
2375 | }
2376 | },
2377 | "reusify": {
2378 | "version": "1.0.4",
2379 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2380 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2381 | "dev": true
2382 | },
2383 | "rimraf": {
2384 | "version": "2.6.3",
2385 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
2386 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
2387 | "dev": true,
2388 | "requires": {
2389 | "glob": "^7.1.3"
2390 | }
2391 | },
2392 | "run-async": {
2393 | "version": "2.3.0",
2394 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
2395 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
2396 | "dev": true,
2397 | "requires": {
2398 | "is-promise": "^2.1.0"
2399 | }
2400 | },
2401 | "run-node": {
2402 | "version": "1.0.0",
2403 | "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
2404 | "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
2405 | "dev": true
2406 | },
2407 | "run-parallel": {
2408 | "version": "1.1.9",
2409 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
2410 | "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
2411 | "dev": true
2412 | },
2413 | "rxjs": {
2414 | "version": "6.5.3",
2415 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
2416 | "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
2417 | "dev": true,
2418 | "requires": {
2419 | "tslib": "^1.9.0"
2420 | }
2421 | },
2422 | "safer-buffer": {
2423 | "version": "2.1.2",
2424 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2425 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2426 | "dev": true
2427 | },
2428 | "semver": {
2429 | "version": "5.7.0",
2430 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
2431 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
2432 | "dev": true
2433 | },
2434 | "semver-compare": {
2435 | "version": "1.0.0",
2436 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
2437 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
2438 | "dev": true
2439 | },
2440 | "set-blocking": {
2441 | "version": "2.0.0",
2442 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
2443 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
2444 | "dev": true
2445 | },
2446 | "shebang-command": {
2447 | "version": "1.2.0",
2448 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
2449 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
2450 | "dev": true,
2451 | "requires": {
2452 | "shebang-regex": "^1.0.0"
2453 | }
2454 | },
2455 | "shebang-regex": {
2456 | "version": "1.0.0",
2457 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
2458 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
2459 | "dev": true
2460 | },
2461 | "signal-exit": {
2462 | "version": "3.0.2",
2463 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
2464 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
2465 | "dev": true
2466 | },
2467 | "slash": {
2468 | "version": "3.0.0",
2469 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
2470 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
2471 | "dev": true
2472 | },
2473 | "slice-ansi": {
2474 | "version": "2.1.0",
2475 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
2476 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
2477 | "dev": true,
2478 | "requires": {
2479 | "ansi-styles": "^3.2.0",
2480 | "astral-regex": "^1.0.0",
2481 | "is-fullwidth-code-point": "^2.0.0"
2482 | }
2483 | },
2484 | "spdx-correct": {
2485 | "version": "3.1.0",
2486 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
2487 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
2488 | "dev": true,
2489 | "requires": {
2490 | "spdx-expression-parse": "^3.0.0",
2491 | "spdx-license-ids": "^3.0.0"
2492 | }
2493 | },
2494 | "spdx-exceptions": {
2495 | "version": "2.2.0",
2496 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
2497 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
2498 | "dev": true
2499 | },
2500 | "spdx-expression-parse": {
2501 | "version": "3.0.0",
2502 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
2503 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
2504 | "dev": true,
2505 | "requires": {
2506 | "spdx-exceptions": "^2.1.0",
2507 | "spdx-license-ids": "^3.0.0"
2508 | }
2509 | },
2510 | "spdx-license-ids": {
2511 | "version": "3.0.5",
2512 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
2513 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
2514 | "dev": true
2515 | },
2516 | "sprintf-js": {
2517 | "version": "1.0.3",
2518 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2519 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
2520 | "dev": true
2521 | },
2522 | "string-argv": {
2523 | "version": "0.3.1",
2524 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
2525 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
2526 | "dev": true
2527 | },
2528 | "string-width": {
2529 | "version": "2.1.1",
2530 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
2531 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
2532 | "dev": true,
2533 | "requires": {
2534 | "is-fullwidth-code-point": "^2.0.0",
2535 | "strip-ansi": "^4.0.0"
2536 | }
2537 | },
2538 | "stringify-object": {
2539 | "version": "3.3.0",
2540 | "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
2541 | "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
2542 | "dev": true,
2543 | "requires": {
2544 | "get-own-enumerable-property-symbols": "^3.0.0",
2545 | "is-obj": "^1.0.1",
2546 | "is-regexp": "^1.0.0"
2547 | }
2548 | },
2549 | "strip-ansi": {
2550 | "version": "4.0.0",
2551 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
2552 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
2553 | "dev": true,
2554 | "requires": {
2555 | "ansi-regex": "^3.0.0"
2556 | }
2557 | },
2558 | "strip-eof": {
2559 | "version": "1.0.0",
2560 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
2561 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
2562 | "dev": true
2563 | },
2564 | "strip-final-newline": {
2565 | "version": "2.0.0",
2566 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
2567 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
2568 | "dev": true
2569 | },
2570 | "strip-json-comments": {
2571 | "version": "2.0.1",
2572 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
2573 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
2574 | "dev": true
2575 | },
2576 | "supports-color": {
2577 | "version": "5.5.0",
2578 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2579 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2580 | "dev": true,
2581 | "requires": {
2582 | "has-flag": "^3.0.0"
2583 | }
2584 | },
2585 | "symbol-observable": {
2586 | "version": "1.2.0",
2587 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
2588 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
2589 | "dev": true
2590 | },
2591 | "table": {
2592 | "version": "5.4.6",
2593 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2594 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2595 | "dev": true,
2596 | "requires": {
2597 | "ajv": "^6.10.2",
2598 | "lodash": "^4.17.14",
2599 | "slice-ansi": "^2.1.0",
2600 | "string-width": "^3.0.0"
2601 | },
2602 | "dependencies": {
2603 | "ansi-regex": {
2604 | "version": "4.1.0",
2605 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2606 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2607 | "dev": true
2608 | },
2609 | "string-width": {
2610 | "version": "3.1.0",
2611 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2612 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2613 | "dev": true,
2614 | "requires": {
2615 | "emoji-regex": "^7.0.1",
2616 | "is-fullwidth-code-point": "^2.0.0",
2617 | "strip-ansi": "^5.1.0"
2618 | }
2619 | },
2620 | "strip-ansi": {
2621 | "version": "5.2.0",
2622 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2623 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2624 | "dev": true,
2625 | "requires": {
2626 | "ansi-regex": "^4.1.0"
2627 | }
2628 | }
2629 | }
2630 | },
2631 | "text-table": {
2632 | "version": "0.2.0",
2633 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2634 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2635 | "dev": true
2636 | },
2637 | "through": {
2638 | "version": "2.3.8",
2639 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2640 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2641 | "dev": true
2642 | },
2643 | "tmp": {
2644 | "version": "0.0.33",
2645 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2646 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2647 | "dev": true,
2648 | "requires": {
2649 | "os-tmpdir": "~1.0.2"
2650 | }
2651 | },
2652 | "to-regex-range": {
2653 | "version": "5.0.1",
2654 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2655 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2656 | "requires": {
2657 | "is-number": "^7.0.0"
2658 | }
2659 | },
2660 | "tslib": {
2661 | "version": "1.10.0",
2662 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
2663 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
2664 | "dev": true
2665 | },
2666 | "type-check": {
2667 | "version": "0.3.2",
2668 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2669 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2670 | "dev": true,
2671 | "requires": {
2672 | "prelude-ls": "~1.1.2"
2673 | }
2674 | },
2675 | "type-fest": {
2676 | "version": "0.6.0",
2677 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
2678 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
2679 | "dev": true
2680 | },
2681 | "typescript": {
2682 | "version": "3.5.3",
2683 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
2684 | "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
2685 | "dev": true
2686 | },
2687 | "uri-js": {
2688 | "version": "4.2.2",
2689 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
2690 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
2691 | "dev": true,
2692 | "requires": {
2693 | "punycode": "^2.1.0"
2694 | }
2695 | },
2696 | "validate-npm-package-license": {
2697 | "version": "3.0.4",
2698 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2699 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2700 | "dev": true,
2701 | "requires": {
2702 | "spdx-correct": "^3.0.0",
2703 | "spdx-expression-parse": "^3.0.0"
2704 | }
2705 | },
2706 | "vscode-test": {
2707 | "version": "1.0.0",
2708 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.0.0.tgz",
2709 | "integrity": "sha512-RnZUhxEXYCozHtBAQwX/UISlw0JPqlv1I9LLl4++vcPDIvjs2Zfz2Inp8haxixS1sOTftHJ9kiecrwWF9S3taQ==",
2710 | "dev": true,
2711 | "requires": {
2712 | "http-proxy-agent": "^2.1.0",
2713 | "https-proxy-agent": "^2.2.1"
2714 | }
2715 | },
2716 | "which": {
2717 | "version": "1.3.1",
2718 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2719 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2720 | "dev": true,
2721 | "requires": {
2722 | "isexe": "^2.0.0"
2723 | }
2724 | },
2725 | "which-module": {
2726 | "version": "2.0.0",
2727 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
2728 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
2729 | "dev": true
2730 | },
2731 | "wide-align": {
2732 | "version": "1.1.3",
2733 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
2734 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
2735 | "dev": true,
2736 | "requires": {
2737 | "string-width": "^1.0.2 || 2"
2738 | }
2739 | },
2740 | "wordwrap": {
2741 | "version": "1.0.0",
2742 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
2743 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
2744 | "dev": true
2745 | },
2746 | "wrap-ansi": {
2747 | "version": "2.1.0",
2748 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
2749 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
2750 | "dev": true,
2751 | "requires": {
2752 | "string-width": "^1.0.1",
2753 | "strip-ansi": "^3.0.1"
2754 | },
2755 | "dependencies": {
2756 | "ansi-regex": {
2757 | "version": "2.1.1",
2758 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
2759 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
2760 | "dev": true
2761 | },
2762 | "is-fullwidth-code-point": {
2763 | "version": "1.0.0",
2764 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
2765 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
2766 | "dev": true,
2767 | "requires": {
2768 | "number-is-nan": "^1.0.0"
2769 | }
2770 | },
2771 | "string-width": {
2772 | "version": "1.0.2",
2773 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
2774 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
2775 | "dev": true,
2776 | "requires": {
2777 | "code-point-at": "^1.0.0",
2778 | "is-fullwidth-code-point": "^1.0.0",
2779 | "strip-ansi": "^3.0.0"
2780 | }
2781 | },
2782 | "strip-ansi": {
2783 | "version": "3.0.1",
2784 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2785 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2786 | "dev": true,
2787 | "requires": {
2788 | "ansi-regex": "^2.0.0"
2789 | }
2790 | }
2791 | }
2792 | },
2793 | "wrappy": {
2794 | "version": "1.0.2",
2795 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2796 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2797 | "dev": true
2798 | },
2799 | "write": {
2800 | "version": "1.0.3",
2801 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
2802 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
2803 | "dev": true,
2804 | "requires": {
2805 | "mkdirp": "^0.5.1"
2806 | }
2807 | },
2808 | "y18n": {
2809 | "version": "4.0.0",
2810 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
2811 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
2812 | "dev": true
2813 | },
2814 | "yargs": {
2815 | "version": "13.2.2",
2816 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz",
2817 | "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==",
2818 | "dev": true,
2819 | "requires": {
2820 | "cliui": "^4.0.0",
2821 | "find-up": "^3.0.0",
2822 | "get-caller-file": "^2.0.1",
2823 | "os-locale": "^3.1.0",
2824 | "require-directory": "^2.1.1",
2825 | "require-main-filename": "^2.0.0",
2826 | "set-blocking": "^2.0.0",
2827 | "string-width": "^3.0.0",
2828 | "which-module": "^2.0.0",
2829 | "y18n": "^4.0.0",
2830 | "yargs-parser": "^13.0.0"
2831 | },
2832 | "dependencies": {
2833 | "ansi-regex": {
2834 | "version": "4.1.0",
2835 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2836 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2837 | "dev": true
2838 | },
2839 | "string-width": {
2840 | "version": "3.1.0",
2841 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2842 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2843 | "dev": true,
2844 | "requires": {
2845 | "emoji-regex": "^7.0.1",
2846 | "is-fullwidth-code-point": "^2.0.0",
2847 | "strip-ansi": "^5.1.0"
2848 | }
2849 | },
2850 | "strip-ansi": {
2851 | "version": "5.2.0",
2852 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2853 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2854 | "dev": true,
2855 | "requires": {
2856 | "ansi-regex": "^4.1.0"
2857 | }
2858 | }
2859 | }
2860 | },
2861 | "yargs-parser": {
2862 | "version": "13.0.0",
2863 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
2864 | "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
2865 | "dev": true,
2866 | "requires": {
2867 | "camelcase": "^5.0.0",
2868 | "decamelize": "^1.2.0"
2869 | }
2870 | },
2871 | "yargs-unparser": {
2872 | "version": "1.5.0",
2873 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz",
2874 | "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==",
2875 | "dev": true,
2876 | "requires": {
2877 | "flat": "^4.1.0",
2878 | "lodash": "^4.17.11",
2879 | "yargs": "^12.0.5"
2880 | },
2881 | "dependencies": {
2882 | "get-caller-file": {
2883 | "version": "1.0.3",
2884 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
2885 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
2886 | "dev": true
2887 | },
2888 | "require-main-filename": {
2889 | "version": "1.0.1",
2890 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
2891 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
2892 | "dev": true
2893 | },
2894 | "yargs": {
2895 | "version": "12.0.5",
2896 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
2897 | "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
2898 | "dev": true,
2899 | "requires": {
2900 | "cliui": "^4.0.0",
2901 | "decamelize": "^1.2.0",
2902 | "find-up": "^3.0.0",
2903 | "get-caller-file": "^1.0.1",
2904 | "os-locale": "^3.0.0",
2905 | "require-directory": "^2.1.1",
2906 | "require-main-filename": "^1.0.1",
2907 | "set-blocking": "^2.0.0",
2908 | "string-width": "^2.0.0",
2909 | "which-module": "^2.0.0",
2910 | "y18n": "^3.2.1 || ^4.0.0",
2911 | "yargs-parser": "^11.1.1"
2912 | }
2913 | },
2914 | "yargs-parser": {
2915 | "version": "11.1.1",
2916 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
2917 | "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
2918 | "dev": true,
2919 | "requires": {
2920 | "camelcase": "^5.0.0",
2921 | "decamelize": "^1.2.0"
2922 | }
2923 | }
2924 | }
2925 | }
2926 | }
2927 | }
2928 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vscode-twilio",
3 | "displayName": "VSCode Twilio",
4 | "author": {
5 | "name": "Charlie Weems",
6 | "email": "cweems@twilio.com"
7 | },
8 | "publisher": "Twilio",
9 | "icon": "images/twilio.png",
10 | "license": "SEE LICENSE IN LICENSE.txt",
11 | "description": "Deploy Twilio functions from VSCode.",
12 | "version": "0.1.0",
13 | "engines": {
14 | "vscode": "^1.36.0"
15 | },
16 | "categories": [
17 | "Other"
18 | ],
19 | "activationEvents": [
20 | "onCommand:extension.init",
21 | "onCommand:extension.new",
22 | "onCommand:extension.start",
23 | "onCommand:extension.deploy",
24 | "onCommand:extension.activate",
25 | "onCommand:extension.createEnvironment",
26 | "onCommand:extension.listFunctions"
27 | ],
28 | "main": "./extension.js",
29 | "contributes": {
30 | "commands": [
31 | {
32 | "command": "extension.init",
33 | "title": "Twilio Serverless: Create Project"
34 | },
35 | {
36 | "command": "extension.new",
37 | "title": "Twilio Serverless: New Function"
38 | },
39 | {
40 | "command": "extension.start",
41 | "title": "Twilio Serverless: Start Local Server"
42 | },
43 | {
44 | "command": "extension.deploy",
45 | "title": "Twilio Serverless: Deploy"
46 | },
47 | {
48 | "command": "extension.activate",
49 | "title": "Twilio Serverless: Activate"
50 | },
51 | {
52 | "command": "extension.createEnvironment",
53 | "title": "Twilio Serverless: Create Environment"
54 | },
55 | {
56 | "command": "extension.listFunctions",
57 | "title": "Twilio Serverless: List Functions"
58 | },
59 | {
60 | "command": "extension.listServices",
61 | "title": "Twilio Serverless: List Services"
62 | },
63 | {
64 | "command": "extension.listEnvironments",
65 | "title": "Twilio Serverless: List Environments"
66 | },
67 | {
68 | "command": "extension.listAssets",
69 | "title": "Twilio Serverless: List Assets"
70 | },
71 | {
72 | "command": "extension.listVariables",
73 | "title": "Twilio Serverless: List Variables"
74 | }
75 | ]
76 | },
77 | "scripts": {
78 | "test": "node ./test/runTest.js"
79 | },
80 | "devDependencies": {
81 | "@types/glob": "^7.1.1",
82 | "@types/mocha": "^5.2.6",
83 | "@types/node": "^10.12.21",
84 | "@types/vscode": "^1.36.0",
85 | "eslint": "^5.16.0",
86 | "eslint-config-prettier": "^6.4.0",
87 | "eslint-config-twilio": "^1.7.0",
88 | "eslint-plugin-prettier": "^3.1.1",
89 | "glob": "^7.1.4",
90 | "husky": "^3.0.8",
91 | "lint-staged": "^9.4.2",
92 | "mocha": "^6.1.4",
93 | "prettier": "1.18.2",
94 | "typescript": "^3.3.1",
95 | "vscode-test": "^1.0.0-next.0"
96 | },
97 | "repository": {
98 | "type": "git",
99 | "url": "https://github.com/twilio-labs/vscode-twilio"
100 | },
101 | "dependencies": {
102 | "chokidar": "^3.0.2"
103 | },
104 | "husky": {
105 | "hooks": {
106 | "pre-commit": "lint-staged"
107 | }
108 | },
109 | "lint-staged": {
110 | "*.js": [
111 | "eslint --fix",
112 | "git add"
113 | ]
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/test/runTest.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | const { runTests } = require('vscode-test');
4 |
5 | async function main() {
6 | try {
7 | // The folder containing the Extension Manifest package.json
8 | // Passed to `--extensionDevelopmentPath`
9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../');
10 |
11 | // The path to the extension test script
12 | // Passed to --extensionTestsPath
13 | const extensionTestsPath = path.resolve(__dirname, './suite/index');
14 |
15 | // Download VS Code, unzip it and run the integration test
16 | await runTests({ extensionDevelopmentPath, extensionTestsPath });
17 | } catch (err) {
18 | console.error('Failed to run tests');
19 | process.exit(1);
20 | }
21 | }
22 |
23 | main();
24 |
--------------------------------------------------------------------------------
/test/suite/extension.test.js:
--------------------------------------------------------------------------------
1 | const assert = require("assert");
2 | const { before } = require("mocha");
3 |
4 | /*
5 | * You can import and use all API from the 'vscode' module
6 | * as well as import your extension to test it
7 | */
8 | const vscode = require("vscode");
9 | // const myExtension = require('../extension');
10 |
11 | suite("Extension Test Suite", () => {
12 | before(() => {
13 | vscode.window.showInformationMessage("Start all tests.");
14 | });
15 |
16 | test("Sample test", () => {
17 | assert.equal(-1, [1, 2, 3].indexOf(5));
18 | assert.equal(-1, [1, 2, 3].indexOf(0));
19 | });
20 | });
21 |
--------------------------------------------------------------------------------
/test/suite/index.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const Mocha = require("mocha");
3 | const glob = require("glob");
4 |
5 | const run = () => {
6 | // Create the mocha test
7 | const mocha = new Mocha({
8 | ui: "tdd"
9 | });
10 | // Use any mocha API
11 | mocha.useColors(true);
12 |
13 | const testsRoot = path.resolve(__dirname, "..");
14 |
15 | return new Promise((c, e) => {
16 | glob("**/**.test.js", { cwd: testsRoot }, (err, files) => {
17 | if (err) {
18 | return e(err);
19 | }
20 |
21 | // Add files to the test suite
22 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f)));
23 |
24 | try {
25 | // Run the mocha test
26 | return mocha.run(failures => {
27 | if (failures > 0) {
28 | e(new Error(`${failures} tests failed.`));
29 | } else {
30 | c();
31 | }
32 | });
33 | } catch (error) {
34 | return e(error);
35 | }
36 | });
37 | });
38 | };
39 |
40 | module.exports = {
41 | run
42 | };
43 |
--------------------------------------------------------------------------------
/vsc-extension-quickstart.md:
--------------------------------------------------------------------------------
1 | # Welcome to your VS Code Extension
2 |
3 | ## What's in the folder
4 |
5 | * This folder contains all of the files necessary for your extension.
6 | * `package.json` - this is the manifest file in which you declare your extension and command.
7 | * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin.
8 | * `extension.js` - this is the main file where you will provide the implementation of your command.
9 | * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`.
10 | * We pass the function containing the implementation of the command as the second parameter to `registerCommand`.
11 |
12 | ## Get up and running straight away
13 |
14 | * Press `F5` to open a new window with your extension loaded.
15 | * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`.
16 | * Set breakpoints in your code inside `extension.js` to debug your extension.
17 | * Find output from your extension in the debug console.
18 |
19 | ## Make changes
20 |
21 | * You can relaunch the extension from the debug toolbar after changing code in `extension.js`.
22 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.
23 |
24 | ## Explore the API
25 |
26 | * You can open the full set of our API when you open the file `node_modules/vscode/vscode.d.ts`.
27 |
28 | ## Run tests
29 |
30 | * Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`.
31 | * Press `F5` to run the tests in a new window with your extension loaded.
32 | * See the output of the test result in the debug console.
33 | * Make changes to `test/extension.test.js` or create new test files inside the `test` folder.
34 | * By convention, the test runner will only consider files matching the name pattern `**.test.js`.
35 | * You can create folders inside the `test` folder to structure your tests any way you want.
36 |
37 | ## Go further
38 |
39 | * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VSCode extension marketplace.
40 | * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
41 |
--------------------------------------------------------------------------------