New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

rtm-cli

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rtm-cli - npm Package Compare versions

Comparing version
1.2.2
to
1.3.0
+10
src/utils/index.js
'use strict';
module.exports = {
config: require('./config.js'),
filter: require('./filter.js'),
finish: require('./finish.js'),
log: require('./log.js'),
login: require('./login.js'),
prompt: require('./prompt.js')
};
+7
-4

@@ -29,8 +29,11 @@ {

{
"name": "today",
"description": "Display tasks with a priority, due or completed today, or overdue",
"command": "lsp",
"args": "(not priority:none and status:incomplete) or completed:today or (dueBefore:tomorrow and status:incomplete)"
"name": "overdue",
"description": "Display incomplete tasks that are overdue",
"command": "lsd",
"args": "dueBefore:today AND status:incomplete"
}
],
"plugins": [
"{{HOME}}/.rtm.plugins/"
]
}
{
"name": "rtm-cli",
"version": "1.2.2",
"version": "1.3.0",
"description": "RTM CLI",

@@ -18,3 +18,3 @@ "keywords": [

},
"main": "src/cli.js",
"main": "src/utils/index.js",
"scripts": {

@@ -21,0 +21,0 @@ "postversion": "npm run build",

+27
-814

@@ -29,3 +29,3 @@ Remember The Milk Command Line Interface

**Note:** `rtm-cli` requires node version >= 7.5.0
**Note:** RTM CLI requires Node version >= 7.5.0

@@ -56,2 +56,3 @@ ### Executable Releases

-f, --config [file] specify configuration file
-v, --verbose print stack traces on errors
-h, --help output usage information

@@ -88,7 +89,7 @@

whoami Display RTM user information
today Display tasks with a priority, due or completed today, or overdue
overdue Display incomplete tasks that are overdue
```
## Interactive Mode
### Interactive Mode

@@ -101,826 +102,38 @@ An interactive mode is started when no commands are given to `rtm`, which

## Options
### Full Usage Information
For full documentation on the usage of the built-in commands and options,
see the [Command Reference](https://github.com/dwaring87/rtm-cli/wiki/Command-Reference).
### Plain Output: `--plain`, `-p`
Display output text without any styling and/or colors. This option overrides
the default in the configuration files.
**Note:** This option overrides `--color`, if provided, and will disable the
status/spinner text.
**Default:** Display styled/colored output.
### Styled Output: `--color`, `-c`
Force the display of output text using special styling and/or colors. This
option overrides the default in the configuration files.
**Default:** Display styled/colored output.
### Status Text: `--status`, `-s`
Toggle the display of the status/spinner text messages. This option will
toggle the default value in the configuration files.
**Note:** When status messages are disabled, error messages will not be displayed
and any errors encountered will be silently ignored.
**Default:** Display status/spinner messages.
### Completed Tasks: `--completed [value]`, `-x [value]`
Specify how completed tasks should be displayed. This option overrides the
default in the configuration files. Valid values include:
| Value | Description |
| :---: | ----------- |
| true | Display all completed tasks |
| false | Don't display any completed tasks |
| n > 0 | Display tasks completed within `n` days |
**Default:** 7
### Hide Tasks Due in Future: `--hideDue [value]`, `-d [value]`
Hide tasks with due dates more than `value` days in the future. This option
overrides the default in the configuration files. Valid values include:
| Value | Description |
| :---: | ----------- |
| false | Do not hide any tasks based on due date |
| n > 0 | Hide tasks with due dates more than `n` days from today |
**Default:** false
### Configuration File: `--config [file]`, `-f [file]`
Specify a configuration file to use. Properties in this file will override the
default configuration properties. RTM User information will be stored in this
file.
**Default:** `$HOME/.rtm.json` and `$HOME/.rtm.config.json`
### Version Information: `--version`, `-v`
Display RTM CLI version
### Help: `--help`, `-h`
Display Usage Information
## Commands
### Add a Task: `add`, `a`
`add` `[Task Name]`
The `Task Name` can use RTM's [Smart Add Syntax](https://www.rememberthemilk.com/help/answer/basics-smartadd-howdoiuse).
Additionally, to minimize the need to escape special characters at the command line,
the following properties can be specified:
- priority as `p:{priority}`
- list as `l:{list}`
- tags as `t:tag1 t:tag2`
- due date as `due:{due date}`
If `Task Name` is not provided, a prompt allowing multiple new task entries
will be displayed. Enter a blank line to finish adding new tasks.
Examples:
```
> add Buy Milk ^tomorrow !2 #Shopping
> add Feed The Cat today p:1 l:Chores t:pets *daily
```
### Add a List: `addList`, `al`
`addList` `[List Name]` `[Smart List Filter]`
This command will add a new empty List to the User's account or if a
`Smart List Filer` is provided, a Smart List using the provided
[advanced search criteria](https://www.rememberthemilk.com/help/?ctx=basics.search.advanced)
will be created.
If no arguments are provided, a prompt allowing multiple new list names
will be displayed. Enter a blank line to finish add new lists.
Examples:
```
> addList Bills
> addList Important priority:1 OR priority:2
```
### Add Tags to a Task: `addTags`, `at`
`addTags` `[index]` `[tags...]`
This command will add one or more tags to a Task. Tasks are referenced by index
number, which are displayed when listing tasks. Multiple tags can be provided
as arguments to this command.
If no arguments are provided, a prompt allowing multiple task indices and tags
to be entered will be displayed. Enter a blank line to finish adding tasks and
tags.
Examples:
```
> addTags 1 rent
> addTags 5 rent bills
```
### Complete a Task: `comp`, `x`
`comp` `[indices...]`
This command will mark the Tasks as complete. Tasks are referenced by index
number, which are displayed when listing tasks. Multiple task indices can be
provided as arguments to this command.
If no arguments are provided, a prompt allowing multiple task indices to be
entered will be displayed. Enter a blank line to finish adding task indices.
Examples:
```
> comp 15
> comp 1 9 8
```
### Decrease Task Priority: `decPri`, `-`
`decPri` `[indices...]`
This command will decrease the priority of the Tasks by 1. Tasks are referenced
by index number, which are displayed when listing tasks. Multiple task indices
can be provided as arguments to this command.
If no arguments are provided, a prompt allowing multiple task indices to be
entered will be displayed. Enter a blank line to finish adding task indices.
Examples:
```
> decPri 15
> decPri 1 9 8
```
### Set Task Due Date: `due`
`due` `[index]` `[due date]`
This command will set the Due Date of a Task. Tasks are referenced by index
number, which are displayed when listing tasks. Due Dates can be entered in any
format that [RTM can parse](https://www.rememberthemilk.com/help/answer/basics-basics-dateformat).
If no arguments are provided, a prompt allowing multiple task and due dates to be
entered will be displayed. Enter a blank line to finish adding tasks and due dates.
Examples:
```
> due 1 tomorrow
> due 15 May 12
> due 3 days
```
### Edit Task Name: `edit`
`edit` `[new task name]`
This command will change the name of a Task. Tasks are referenced by index
number, which are displayed when listing tasks.
If no arguments are provided, a prompt allowing multiple task indices and names
to be entered will be displayed. Enter a blank line to finish adding indices
and names.
Example:
```
> edit 1 Buy More Milk
```
### Increase Task Priority: `incPri`, `+`
`incPri` `[indices...]`
This command will increase the priority of the Tasks by 1. Tasks are referenced
by index number, which are displayed when listing tasks. Multiple task indices
can be provided as arguments to this command.
If no arguments are provided, a prompt allowing multiple task indices to be
entered will be displayed. Enter a blank line to finish adding task indices.
Examples:
```
> incPri 15
> incPri 1 9 8
```
### Display all Lists: `lists`, `l`
This command will display the names of all Lists. If the List is a 'Smart List',
the search criteria will be displayed alongside the list name.
### Login: `login`
This command will remove any saved RTM user information and start the
login procedure. An Auth URL will be displayed and opened in the User's
browser. This URL will ask the User to grant **RTM CLI** access to their
account. Once authorized, the user's information (id, username, full name
and an Auth Token provided by RTM) will be saved locally (`$HOME/.rtm.json`
by default).
### Logout: `logout`
This command will remove any saved RTM user information. Any future requests
to the RTM API Server will require the User to login again.
### List Tasks By List, Priority: `ls`
`ls` `[filter]`
This command will display the User's tasks sorted first by List then by
priority. A filter, using RTM's [Advanced Search Syntax](https://www.rememberthemilk.com/help/?ctx=basics.search.advanced)
can be used to filter the tasks displayed.
Examples:
```
> ls
> ls priority:1 AND list:Work
```
![](https://raw.githubusercontent.com/dwaring87/rtm-cli/master/screens/ls.png)
### List Tasks By Due Date, Priority: `lsd`
`lsd` `[filter]`
This command will display the User's tasks sorted first by Due Date (with
tasks without a due date shown first) then by priority. A filter, using RTM's
[Advanced Search Syntax](https://www.rememberthemilk.com/help/?ctx=basics.search.advanced)
can be used to filter the tasks displayed.
Examples:
```
> lsd
> lsd priority:1 AND list:Work
```
![](https://raw.githubusercontent.com/dwaring87/rtm-cli/master/screens/lsd.png)
### List Tasks By Priority, Due Date: `lsp`
`lsp` `[filter]`
This command will display the User's tasks sorted first by priority then by
due date. A filter, using RTM's [Advanced Search Syntax](https://www.rememberthemilk.com/help/?ctx=basics.search.advanced)
can be used to filter the tasks displayed.
Examples:
```
> lsp
> lsp priority:1 AND list:Work
```
![](https://raw.githubusercontent.com/dwaring87/rtm-cli/master/screens/lsp.png)
### Move Task to List: `move`, `mv`
`move` `[index]` `[list name]`
This command will move a Task to a different List. Tasks are referenced by index
number, which are displayed when listing tasks. The `list name` must be the
name of an existing List.
**Note:** This command will fail if there is more than 1 List matching the
new List name.
Example:
```
> move 1 Work
```
### Weekly Planner: `planner`
`planner` `[--start <sun, mon, today>]` `[filter]`
This command will display this week's Tasks in a weekly planner table. The `--start`
option can be one of: `sun`, `mon`, or `today` and will set the first day
of the planner. An optional `filter` can be used to filter the displayed tasks.
Any incomplete tasks with a due date before the start of the planner and tasks
without a set due date will be displayed below the planner.
Examples:
```
> planner
> planner --start mon NOT due:never # Hide tasks with no due date set
```
![](https://raw.githubusercontent.com/dwaring87/rtm-cli/master/screens/planner.png)
### Postpone a Task: `postpone`, `pp`
`postpone` `[indices...]`
This command will postpone the due date of a Task by one day. Tasks are referenced
by index number, which are displayed when listing tasks. Multiple task indices
can be provided as arguments to this command.
Examples:
```
> postpone 1
> postpone 1 15 8
```
### Set Task Priority: `pri`, `p`
`pri` `[index]` `[priority]`
This command will set the priority of the tasks. Tasks are referenced by index
number, which are displayed when listing tasks. Acceptable priority values
include `1`, `2`, and `3` - any other value removes the priority from the task.
If no arguments are provided, a prompt allowing for multiple task and priority
inputs is displayed. Enter a blank line to finish adding tasks/priorities.
Examples:
```
> pri 15 1
> pri 14 0
```
### Remove a Task: `remove`, `rm`
`remove` `[indices...]`
This command will remove the Tasks from the User's account. Tasks are referenced
by index number, which are displayed when listing tasks. Multiple task indices
can be provided as arguments to this command.
Examples:
```
> remove 1
> remove 1 15 8
```
### Remove a List: `removeList`, `rml`
`removeList` `[name]`
This command will remove the List matching the provided `name` from the User's
account. Any tasks remaining in the List will be moved to the User's Inbox.
**Note:** This command will fail if there is more than one List matching the
provided list name.
If no list name is provided, a prompt allowing for multiple list names to be
entered will be displayed. Enter a blank line to finish adding list names.
Example:
```
> removeList Bills
```
### Remove Tags From a Task: `removeTags`, `rmt`
`removeTags` `[index]` `[tags...]`
This command will remove one or more tags from the Task. Tasks are referenced
by index number, which are displayed when listing tasks. Multiple tags can be
provided as arguments to this command.
Examples:
```
> removeTags 1 bills
> removeTags 15 bills rent
```
### Rename a List: `renameList`, `mvl`
`renameList` `[old name]` `[new name]`
This command will change the name of the List from `old name` to `new name`.
**Note:** This command will fail if there is more than one List matching the
provided `old name`.
**Note:** This command is unable to rename a 'Smart List' (the RTM API
considers a 'Smart List' to be read-only).
Example:
```
> renameList Food Groceries
```
### Reset Task Index Cache: `reset`
This command will regenerate the cached lookup table used to reference a
specific task to an index number. This is helpful when many tasks have
been deleted and the task indices are getting large.
### Display all Tags: `tags`, `t`
This command will display all tag names associated with the User's tasks. Next
to each tag will be the number of incomplete and complete Tasks for that tag.
### Un-Complete a Task: `uncomp`, `unc`
`uncomp` `[indices...]`
This command will mark the Task as incomplete. Tasks are referenced by index
number, which are displayed when listing tasks. Multiple task indices can be
provided as arguments to this command.
Examples:
```
> uncomp 1
> uncomp 15 8
```
### Custom Commands:
Custom meta-commands can be added to your configuration file's `aliases` property.
This property is a list of aliased commands that reference an existing command
and can provide pre-defined arguments. This can be used to create a meta-command
that uses one of the existing display commands (such as `ls`) and a pre-set
filter string (using RTM's Advanced Search Syntax).
The included `today` command is a meta-command added to the default configuration.
To create your own meta command, add the `alias` property to your configuration file
(located at `$HOME/.rtm.json` by default). The example below creates the `overdue`
command listing overdue tasks with the existing `lsp` command.
```json
{
"aliases": [
{
"name": "overdue",
"description": "Display all tasks that are overdue",
"command": "lsp",
"args": "dueBefore:today AND status:incomplete"
}
]
}
```
The `name` property gives the command name, `description` is the command description
given in the help output, `command` is the existing command to map the new one to, and
`args` provide the arguments (such as the filter string) to the command.
## Configuration
RTM CLI has a number of properties that can be configured using a separate JSON
configuration file. The default user configuration file is located at `$HOME/.rtm.json`
but can be changed using the `--config` option.
RTM CLI has a number of properties that can be configured using a separate JSON configuration
file. The default user configuration file is located at `$HOME/.rtm.json` but can be changed
using the `--config <file>` option.
For convenience, if you want to separate the storage of your account credentials
and the RTM configuration properties, the `$HOME/.rtm.config.json` file will
be read and parsed in addition to the `$HOME/.rtm.json` file, if present.
Currently, the configuration can customize:
- the formats of displayed dates
- styled text output for different task properties
- the display of completed tasks
- the display of tasks with due dates in the future
- **custom aliases** for existing commands
- these are useful for applying commonly used [RTM advanced search](https://www.rememberthemilk.com/help/answer/basics-search-advanced)
filters to display commands
- ex: `overdue` = `ls dueBefore:today AND status:incomplete`
### Default
The default configuration is as follows:
For full documentation on the configuration properties, see the
[Configuration Reference](https://github.com/dwaring87/rtm-cli/wiki/Configuration-Reference).
```json
{
"dateformat": "ddd mmm-dd",
"plannerDateformat": "ddd",
"completed": 7,
"hideDue": false,
"plain": false,
"status": true,
"styles": {
"list": "yellow.underline",
"index": "dim",
"priority": {
"0": "reset",
"1": "red",
"2": "blue",
"3": "cyan"
},
"completed": "dim",
"notes": "reset",
"tags": "magenta",
"due": "green"
},
"aliases": [
{
"name": "today",
"description": "Display prioritized tasks and tasks due or completed today",
"command": "lsp",
"args": "(not priority:none and status:incomplete) or completed:today or (due:today and status:incomplete)"
}
]
}
```
## Plugins
### Properties
RTM CLI supports adding additional commands through plugins.
The following is a list of all configuration properties, their descriptions, and default values.
For information on installing plugins, see the
[Plugin Reference](https://github.com/dwaring87/rtm-cli/wiki/Plugin-Reference).
<table>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
<tr>
<td><code>client</code></td>
<td><code>object</code></td>
<td colspan=2>
<p><strong>RTM API Client Information</strong></p>
<table>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
<tr>
<td><code>key</code></td>
<td><code>string</code></td>
<td>RTM API Key</td>
<td><strong>RTM CLI</strong> API Key</td>
</tr>
<tr>
<td><code>secret</code></td>
<td><code>string</code></td>
<td>RTM API Secret</td>
<td><strong>RTM CLI</strong> API Secret</td>
</tr>
<tr>
<td><code>perms</code></td>
<td><code>string</code></td>
<td>
<p>RTM API Permissions</p>
<ul>
<li><code>read</code></li>
<li><code>write</code></li>
<li><code>delete</code></li>
</ul>
</td>
<td><code>delete</code></td>
</tr>
</table>
<p><strong>RTM CLI</strong> includes an RTM API client key/secret but
you can override these with your own, if you prefer.
</p>
</td>
</tr>
<tr>
<td><code>dateformat</code></td>
<td><code>string</code></td>
<td>
<p><strong>Date Display Format</strong></p>
<p>This property describes how dates will be formatted when displayed in
the task lists generated by the <code>ls</code>, <code>lsd</code>, and
<code>lsp</code> commands.</p>
<p>The format is parsed by the <code>dateformat</code> node module. Mask
options are described in that project's <a href='https://github.com/felixge/node-dateformat#mask-options'>README</a>.</p>
</td>
<td><code>ddd mmm-dd</code></td>
</tr>
<tr>
<td><code>plannerDateformat</code></td>
<td><code>string</code></td>
<td>
<p><strong>Planner Date Display Format</strong></p>
<p>This property describes how dates will be formatted when displayed in
the headers of the planner table.</p>
<p>The format is parsed by the <code>dateformat</code> node module. Mask
options are described in that project's <a href='https://github.com/felixge/node-dateformat#mask-options'>README</a>.</p>
</td>
<td><code>ddd</code></td>
</tr>
<tr>
<td><code>completed</code></td>
<td><code>boolean</code> or <code>integer</code></td>
<td>
<p><strong>Display Completed Tasks</strong></p>
<p>The display of completed tasks can be changed to include all, none
or some of the completed tasks with the following values:
</p>
<ul>
<li><code>true</code>: display all completed tasks</li>
<li><code>false</code>: don't display any completed tasks</li>
<li><code>n > 0</code>: display tasks completed within the last <code>n</code> days
</ul>
<p>This can be overridden using the <code>--completed [value]</code> flag at the command line.</p>
</td>
<td><code>7</code></td>
</tr>
<tr>
<td><code>hideDue</code></td>
<td><code>boolean</code> or <code>integer</code></td>
<td>
<p><strong>Hide Tasks Due in Future</strong></p>
<p>This property can be configured to hide tasks that have a due
date set more than <code>n</code> days in the future. Valid values for
this property include:</p>
<ul>
<li><code>false</code>: Do not hide any tasks based on due date</li>
<li><code>n > 0</code>: Hide tasks with a due date greater than <code>n</code>
days from today</li>
</ul>
<p>This can be overridden using the <code>--hideDue [value]</code> flag at the command line.</p>
</td>
<td><code>false</code></td>
<tr>
<td><code>plain</code></td>
<td><code>boolean</code></td>
<td>
<p><strong>Display Plain Text</strong></p>
<p>When set to <code>true</code>, output text will not be styled and/or colored.</p>
<p>This can be overridden using the <code>--plain</code> or <code>--color</code> flags at the command line.</p>
</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>status</code></td>
<td><code>boolean</code></td>
<td>
<p><strong>Display Status Text</strong></p>
<p>When set to <code>true</code>, the status/spinner messages (such as 'Getting Tasks...') will be displayed.</p>
<p>This can be overridden using the <code>--status</code> flag at the command line.</p>
</td>
<td><code>true</code></td>
</tr>
<tr>
<td><code>styles</code></td>
<td><code>object</code></td>
<td colspan=2>
<p><strong>Task Attribute Styles</strong></p>
<p>Different attributes of tasks can have different styles applied to them when displayed.</p>
<p>Styles are applied using the <code>chalk</code> npm module and can include the styles listed on
that project's <a href='https://github.com/chalk/chalk#styles'>README</a> and can be combined
using a <code>.</code>:</p>
<table>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
<tr>
<td><code>list</code></td>
<td><code>string</code></td>
<td>List Name</td>
<td><code>yellow.underline</code></td>
</tr>
<tr>
<td><code>index</code></td>
<td><code>string</code></td>
<td>Index Number</td>
<td><code>dim</code></td>
</tr>
<tr>
<td><code>priority</code></td>
<td><code>object</code></td>
<td colspan=2>
<p>Task Priorities</p>
<table>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
<tr>
<td><code>0</code></td>
<td><code>string</code></td>
<td>No Priority</td>
<td><code>reset</code></td>
</tr>
<tr>
<td><code>1</code></td>
<td><code>string</code></td>
<td>Priority 1</td>
<td><code>red</code></td>
</tr>
<tr>
<td><code>2</code></td>
<td><code>string</code></td>
<td>Priority 2</td>
<td><code>blue</code></td>
</tr>
<tr>
<td><code>3</code></td>
<td><code>string</code></td>
<td>Priority 3</td>
<td><code>cyan</code></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><code>completed</code></td>
<td><code>string</code></td>
<td>Completed Tasks</td>
<td><code>dim</code></td>
</tr>
<tr>
<td><code>notes</code></td>
<td><code>string</code></td>
<td>Notes Indicator</td>
<td><code>reset</code></td>
</tr>
<tr>
<td><code>tags</code></td>
<td><code>string</code></td>
<td>Tags</td>
<td><code>magenta</code></td>
</tr>
<tr>
<td><code>due</code></td>
<td><code>string</code></td>
<td>Due Dates</td>
<td><code>green</code></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><code>aliases</code></td>
<td><code>object[]</code></td>
<td colspan=2>
<p><strong>Command Aliases</strong></p>
<p>This configuration property allows you to define your own meta-commands
that map a new command name to an existing command (such as <code>ls</code>,
<code>planner</code>, etc) with a pre-defined set of arguments (such as a
filter string using RTM's advanced search syntax). The <code>today</code>
command is already included in the default configuration and can be used as
an example.</p>
<table>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
<tr>
<td><code>name</code></td>
<td><code>string</code></td>
<td>Command Name</td>
<td><code>today</code></td>
</tr>
<tr>
<td><code>description</code></td>
<td><code>string</code></td>
<td>Command Description - will be used in the help output</td>
<td>Display tasks with a priority, due or completed today, or overdue</td>
</tr>
<tr>
<td><code>command</code></td>
<td><code>string</code></td>
<td>Command - the existing command to execute.</td>
<td><code>lsp</code></td>
</tr>
<tr>
<td><code>args</code></td>
<td><code>string</code></td>
<td>Options and arguments to pass to the specified command.</td>
<td>(not priority:none and status:incomplete) or completed:today or (dueBefore:tomorrow and status:incomplete)</td>
</tr>
<table>
</td>
</tr>
</table>
For information on creating commands, see the **Creating Commands** section
in the [Project Wiki](https://github.com/dwaring87/rtm-cli/wiki#creating-commands).
+176
-18
#!/usr/bin/env node
'use strict';
const os = require('os');
const fs = require('fs');

@@ -56,4 +57,6 @@ const path = require('path');

config.reset(file);
parsePlugins();
parseAliases();
});
})
.option('-v, --verbose', 'print stack traces on errors');

@@ -80,2 +83,5 @@ // Add additional Help information

// Add Any Plugins
parsePlugins();
// Parse Aliases

@@ -110,2 +116,5 @@ parseAliases();

log.error("ERROR: " + err);
if ( program.verbose ) {
console.log(err);
}
finish();

@@ -117,2 +126,6 @@ });

// ===== COMMAND PARSING ===== //
/**

@@ -125,3 +138,5 @@ * Parse the commands in the command directory

for ( let i = 0; i < files.length; i++ ) {
parseCmd(path.normalize(CMD_DIR + '/' + files[i]));
let file = path.normalize(CMD_DIR + '/' + files[i]);
let command = require(file);
parseCmd(command);
}

@@ -133,17 +148,25 @@ }

* Parse the command file
* @param {string} file Path to command file
* @param {object} command The command object to parse
* @private
*/
function parseCmd(file) {
let opts = require(file);
function parseCmd(command) {
// Check for existing command name
let existing = program.commands;
for ( let i = 0; i < existing.length; i++ ) {
if ( existing[i].name() === command.command.split(' ')[0] ) {
log.error("ERROR: Command name (" + command.command.split(' ')[0] + ") already exists");
process.exit(1);
}
}
// Build Command
let cmd = program.command(opts.command);
cmd.description(opts.description);
cmd.alias(opts.alias);
let cmd = program.command(command.command);
cmd.description(command.description);
cmd.alias(command.alias);
// Add Command Options
if ( opts.options ) {
for ( let i = 0; i < opts.options.length; i++ ) {
let option = opts.options[i];
if ( command.options ) {
for ( let i = 0; i < command.options.length; i++ ) {
let option = command.options[i];
cmd.option(option.option, option.description);

@@ -173,4 +196,4 @@ }

// Skip Login Check
if ( opts.disableLogin ) {
opts.action(args, env);
if ( command.disableLogin ) {
command.action(args, env);
}

@@ -181,3 +204,3 @@

config.user(function() {
opts.action(args, env);
command.action(args, env);
});

@@ -190,6 +213,132 @@ }

// ===== PLUGIN PARSING ===== //
/**
* Parse the plugins listed in the configuration
*/
function parsePlugins() {
// Get plugin locations from the configuration
let locations = config.get().plugins;
// Parse each location
for ( let i = 0; i < locations.length; i++ ) {
parsePluginLocation(locations[i]);
}
}
/**
* Parse the specified plugin location
* @param {string} location Plugin location (file, directory or module name)
* @private
*/
function parsePluginLocation(location) {
// Replace {{HOME}} with home directory location
location = location.replace("{{HOME}}", os.homedir());
// Try to load as a module (either directory or file)
try {
require.resolve(location);
parsePluginModule(location);
}
// Not a module...
catch (err) {
// Check to make sure file/directory exists
if ( fs.existsSync(location) ) {
// Check if a directory
if ( fs.lstatSync(location).isDirectory() ) {
parsePluginDirectory(location);
}
}
}
}
/**
* Parse the Plugin as a Module
* @param {string} location Module location (for `require`)
* @private
*/
function parsePluginModule(location) {
// Load the module
let module = require(location);
// Check the root module for a command
_check(module);
// Check children objects for a command
for ( let key in module ) {
if ( module.hasOwnProperty(key) ) {
_check(module[key]);
}
}
/**
* Check the object for the required command properties and parse the
* object as a command if they are all found
* @param obj
* @private
*/
function _check(obj) {
if ( obj.hasOwnProperty('command') && obj.hasOwnProperty('description') && obj.hasOwnProperty('action') ) {
parseCmd(obj);
}
}
}
/**
* Process a plugin directory
* @param location
*/
function parsePluginDirectory(location) {
// Check if location exists
if ( fs.existsSync(location) ) {
// Get all files in directory
let files = fs.readdirSync(location);
// Parse each location
for ( let i = 0; i < files.length; i++ ) {
parsePluginLocation(path.normalize(location + '/' + files[i]));
}
}
}
// ===== ALIAS PARSING ===== //
/**
* Parse the Alias Commands from the Config Files
*/
function parseAliases() {
// Remove existing RTM Aliases
let keep = [];
let current = program.commands;
for ( let i = 0; i < current.length; i++ ) {
let cmd = current[i];
if ( !cmd._isRTMAlias ) {
keep.push(cmd);
}
}
program.commands = keep;
// Parse aliases in configuration
if ( config.get().aliases ) {

@@ -227,5 +376,5 @@ for ( let i = 0; i < config.get().aliases.length; i++ ) {

if ( alias.args ) {
alias.args = alias.args.split(' ');
for ( let j = 0; j < alias.args.length; j++ ) {
args.push(alias.args[j]);
let aa = alias.args.split(' ');
for ( let j = 0; j < aa.length; j++ ) {
args.push(aa[j]);
}

@@ -245,9 +394,18 @@ }

});
// Flag command as RTM Alias
cmd._isRTMAlias = true;
}
}
}
}
// ===== START FUNCTIONS ===== //
/**

@@ -254,0 +412,0 @@ * Parse the CLI arguments and run the specified command

Sorry, the diff of this file is not supported yet

{
"name": "rtm-cli",
"version": "1.2.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"acorn": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz",
"integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==",
"dev": true
},
"ajv": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"dev": true,
"requires": {
"co": "4.6.0",
"json-stable-stringify": "1.0.1"
}
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
"integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
"requires": {
"color-convert": "1.9.1"
}
},
"archiver": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.0.tgz",
"integrity": "sha1-0t8ujVdzqCwdzOklzMQUUOqZmv0=",
"dev": true,
"requires": {
"archiver-utils": "1.3.0",
"async": "2.6.0",
"buffer-crc32": "0.2.13",
"glob": "7.1.2",
"lodash": "4.17.4",
"readable-stream": "2.3.3",
"tar-stream": "1.5.5",
"zip-stream": "1.2.0"
},
"dependencies": {
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
}
}
},
"archiver-utils": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
"integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
"dev": true,
"requires": {
"glob": "7.1.2",
"graceful-fs": "4.1.11",
"lazystream": "1.0.0",
"lodash": "4.17.4",
"normalize-path": "2.1.1",
"readable-stream": "2.3.3"
},
"dependencies": {
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
}
}
},
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
"array-uniq": "1.0.3"
}
},
"array-uniq": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
"dev": true
},
"assert-plus": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
"dev": true
},
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"dev": true,
"requires": {
"lodash": "4.17.4"
},
"dependencies": {
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
}
}
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"aws-sign2": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
"dev": true
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
"dev": true
},
"babel-runtime": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz",
"integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=",
"dev": true,
"requires": {
"core-js": "2.5.1",
"regenerator-runtime": "0.10.5"
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"dev": true,
"optional": true,
"requires": {
"tweetnacl": "0.14.5"
}
},
"bl": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
"integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
}
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"requires": {
"hoek": "2.16.3"
}
},
"brace-expansion": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
"integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
"byline": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
"integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"chalk": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
"integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"requires": {
"ansi-styles": "3.2.0",
"escape-string-regexp": "1.0.5",
"supports-color": "4.5.0"
}
},
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"requires": {
"restore-cursor": "2.0.0"
}
},
"cli-spinners": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz",
"integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY="
},
"cli-table2": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz",
"integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=",
"requires": {
"colors": "1.1.2",
"lodash": "3.10.1",
"string-width": "1.0.2"
}
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"colors": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
"optional": true
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"dev": true,
"requires": {
"delayed-stream": "1.0.0"
}
},
"commander": {
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
"integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA=="
},
"compress-commons": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
"integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
"dev": true,
"requires": {
"buffer-crc32": "0.2.13",
"crc32-stream": "2.0.0",
"normalize-path": "2.1.1",
"readable-stream": "2.3.3"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"copy-paste": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz",
"integrity": "sha1-p+bEocKP3t8rCB5yuX3y75X0ce0=",
"requires": {
"iconv-lite": "0.4.19",
"sync-exec": "0.6.2"
}
},
"core-js": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
"integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"crc": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
"integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
"dev": true
},
"crc32-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
"integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
"dev": true,
"requires": {
"crc": "3.5.0",
"readable-stream": "2.3.3"
}
},
"cryptiles": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"dev": true,
"requires": {
"boom": "2.10.1"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
}
}
},
"dateformat": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz",
"integrity": "sha1-mk30v/FYrC80vGN6vbFUcWB+Flk="
},
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"deepmerge": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.0.1.tgz",
"integrity": "sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ=="
},
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"requires": {
"is-descriptor": "1.0.1"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"ecc-jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"dev": true,
"optional": true,
"requires": {
"jsbn": "0.1.1"
}
},
"end-of-stream": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
"dev": true,
"requires": {
"once": "1.4.0"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
"integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
"dev": true,
"requires": {
"esprima": "2.7.3",
"estraverse": "1.9.3",
"esutils": "2.0.2",
"optionator": "0.8.2",
"source-map": "0.2.0"
}
},
"esprima": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
"integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
"dev": true
},
"estraverse": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
"integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
"dev": true
},
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"expand-template": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz",
"integrity": "sha1-bDAzIxd6YrGyLAcCefeGEoe2mxo=",
"dev": true
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
"dev": true
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"dev": true,
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.5",
"mime-types": "2.1.17"
}
},
"fs-extra": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz",
"integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "3.0.1",
"universalify": "0.1.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
}
}
},
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"globby": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
"integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
"dev": true,
"requires": {
"array-union": "1.0.2",
"glob": "7.1.2",
"object-assign": "4.1.1",
"pify": "2.3.0",
"pinkie-promise": "2.0.1"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
"har-schema": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
"integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
"dev": true
},
"har-validator": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"dev": true,
"requires": {
"ajv": "4.11.8",
"har-schema": "1.0.5"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"has-flag": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
},
"hawk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"dev": true,
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
"hoek": "2.16.3",
"sntp": "1.0.9"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true
},
"http-signature": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"dev": true,
"requires": {
"assert-plus": "0.2.0",
"jsprim": "1.4.1",
"sshpk": "1.13.1"
}
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
},
"in-publish": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
"integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-descriptor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.1.tgz",
"integrity": "sha512-G3fFVFTqfaqu7r4YuSBHKBAuOaLz8Sy7ekklUpFEliaLMP1Y2ZjoN9jS62YWCAPQrQpMUQSitRlrzibbuCZjdA==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
}
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "1.0.1"
}
},
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true,
"optional": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
"json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
"jsonify": "0.0.0"
}
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"jsonfile": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
}
},
"jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
}
}
},
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
},
"lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
}
},
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
"prelude-ls": "1.1.2",
"type-check": "0.3.2"
}
},
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
},
"log-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
"requires": {
"chalk": "1.1.3"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
"dev": true
},
"mime-types": {
"version": "2.1.17",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
"dev": true,
"requires": {
"mime-db": "1.30.0"
}
},
"mimic-fn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
"integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "1.1.8"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
}
},
"multistream": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.0.tgz",
"integrity": "sha1-YlwmfVxEQkrWKUeItbtNo9yzLx0=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.3.3"
}
},
"normalize-path": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "1.1.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1.0.2"
}
},
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"requires": {
"mimic-fn": "1.1.0"
}
},
"optionator": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"dev": true,
"requires": {
"deep-is": "0.1.3",
"fast-levenshtein": "2.0.6",
"levn": "0.3.0",
"prelude-ls": "1.1.2",
"type-check": "0.3.2",
"wordwrap": "1.0.0"
}
},
"ora": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ora/-/ora-1.3.0.tgz",
"integrity": "sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro=",
"requires": {
"chalk": "1.1.3",
"cli-cursor": "2.1.0",
"cli-spinners": "1.1.0",
"log-symbols": "1.0.2"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-parse": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
"dev": true
},
"performance-now": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "2.0.4"
}
},
"pkg": {
"version": "4.3.0-beta.1",
"resolved": "https://registry.npmjs.org/pkg/-/pkg-4.3.0-beta.1.tgz",
"integrity": "sha512-U0o/d6yNo/kqXzLLUj2yq41iVmrtWuHmIPa+ty83ijNFHq6Mchi7NT5OMrjbmeRZohBnIXj8fAhcHTMfSLFmtg==",
"dev": true,
"requires": {
"acorn": "5.1.1",
"babel-runtime": "6.25.0",
"chalk": "2.1.0",
"escodegen": "1.8.1",
"fs-extra": "4.0.1",
"globby": "6.1.0",
"minimist": "1.2.0",
"multistream": "2.1.0",
"pkg-fetch": "2.5.0",
"progress": "2.0.0",
"resolve": "1.4.0",
"simple-bufferstream": "1.0.0",
"stream-meter": "1.0.4"
},
"dependencies": {
"chalk": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
"integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.0",
"escape-string-regexp": "1.0.5",
"supports-color": "4.5.0"
}
}
}
},
"pkg-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-2.5.0.tgz",
"integrity": "sha512-9fXaxbo+uvMT3ETWzinJjyoWLbzN3H5dsmEHVCiQNhZX0rExzA0kmOE6HrsomtSpwrrtKaPtiC7Yoe5vB0wWfQ==",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"byline": "5.0.0",
"chalk": "2.1.0",
"expand-template": "1.0.3",
"fs-extra": "4.0.1",
"in-publish": "2.0.0",
"minimist": "1.2.0",
"progress": "2.0.0",
"request": "2.81.0",
"request-progress": "3.0.0",
"semver": "5.4.1",
"unique-temp-dir": "1.0.0"
},
"dependencies": {
"chalk": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
"integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.0",
"escape-string-regexp": "1.0.5",
"supports-color": "4.5.0"
}
}
}
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"process-nextick-args": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
"dev": true
},
"progress": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
"dev": true
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
"dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
"dev": true
},
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
"request": {
"version": "2.81.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"dev": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.1.4",
"har-validator": "4.2.1",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"performance-now": "0.2.0",
"qs": "6.4.0",
"safe-buffer": "5.1.1",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.1.0"
}
},
"request-progress": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
"integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
"dev": true,
"requires": {
"throttleit": "1.0.0"
}
},
"resolve": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
"integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
"dev": true,
"requires": {
"path-parse": "1.0.5"
}
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"requires": {
"onetime": "2.0.1",
"signal-exit": "3.0.2"
}
},
"rtm-api": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/rtm-api/-/rtm-api-1.0.2.tgz",
"integrity": "sha512-NA14QtmxAqVaUmOpOjf7EVbCs8eE1m/2krwWMlHGKRTujix8HQegG4x9NWzYyMucOB/CphV/Cqp8iNBOPRYsyg=="
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true
},
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"dev": true
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"simple-bufferstream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/simple-bufferstream/-/simple-bufferstream-1.0.0.tgz",
"integrity": "sha1-XKsQ6FGqccZnt3th/hux2QpguqQ=",
"dev": true
},
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"dev": true,
"requires": {
"hoek": "2.16.3"
}
},
"source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
"integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
"dev": true,
"optional": true,
"requires": {
"amdefine": "1.0.1"
}
},
"sshpk": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
"dev": true,
"requires": {
"asn1": "0.2.3",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.1",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.1",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
}
}
},
"stream-meter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
"integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
"dev": true
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
"integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"requires": {
"has-flag": "2.0.0"
}
},
"sync-exec": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz",
"integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU=",
"optional": true
},
"tar-stream": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
"integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
"dev": true,
"requires": {
"bl": "1.2.1",
"end-of-stream": "1.4.0",
"readable-stream": "2.3.3",
"xtend": "4.0.1"
}
},
"throttleit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
"integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
"dev": true
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
"dev": true,
"requires": {
"punycode": "1.4.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true,
"optional": true
},
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
"prelude-ls": "1.1.2"
}
},
"uid2": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
"integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=",
"dev": true
},
"unique-temp-dir": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz",
"integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=",
"dev": true,
"requires": {
"mkdirp": "0.5.1",
"os-tmpdir": "1.0.2",
"uid2": "0.0.3"
}
},
"universalify": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
"dev": true
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
"dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
}
}
},
"window-size": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.0.tgz",
"integrity": "sha1-O0AtMkTzVWHbLJdhrZ0eUoawei0=",
"requires": {
"define-property": "1.0.0",
"is-number": "3.0.0"
}
},
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
},
"zip-stream": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
"integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
"dev": true,
"requires": {
"archiver-utils": "1.3.0",
"compress-commons": "1.2.2",
"lodash": "4.17.4",
"readable-stream": "2.3.3"
},
"dependencies": {
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
}
}
}
}
}