From ff33ab63c8e85fdede89fa5400c6a88539dd4365 Mon Sep 17 00:00:00 2001 From: Lui de la Parra Date: Mon, 29 Oct 2018 22:50:52 -0700 Subject: [PATCH] Adds Migration Class This commit adds a migration class to the project. Signed-off-by: Lui de la Parra --- .gitignore | 2 + README.md | 114 +- docs/Admin.html | 452 +---- docs/CLI.html | 133 +- docs/Credentials.html | 430 ++++- docs/admin.model.js.html | 90 +- docs/api.model.js.html | 83 + docs/cli.model.js.html | 15 +- docs/credentials.model.js.html | 4 +- docs/global.html | 6 +- docs/index.html | 275 ++- docs/migration.model.js.html | 137 ++ docs/module-Admin.html | 4 +- docs/module-CLI.html | 48 +- docs/module-Credentials.html | 48 +- examples/index.js | 40 +- package-lock.json | 3192 +++++++++++++++++++++++++------- package.json | 34 +- src/admin.model.js | 86 +- src/api.model.js | 23 + src/cli.model.js | 5 +- src/migration.model.js | 77 + tests/env.manifest | 8 +- tests/storage.test.js | 2 +- 24 files changed, 3885 insertions(+), 1423 deletions(-) create mode 100644 docs/api.model.js.html create mode 100644 docs/migration.model.js.html create mode 100644 src/api.model.js create mode 100644 src/migration.model.js diff --git a/.gitignore b/.gitignore index e357d6c..a2224ae 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,5 @@ data/ .DS_Store .nyc_output tmp/ +migration-tool +migration diff --git a/README.md b/README.md index a98aa2e..66efdb1 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,65 @@ -# fms-admin-client [![Coverage Status](https://coveralls.io/repos/github/Luidog/fms-admin-client/badge.svg?branch=master)](https://coveralls.io/github/Luidog/fms-admin-client?branch=master) + +# fms-admin-client + +[![Coverage Status](https://coveralls.io/repos/github/Luidog/fms-admin-client/badge.svg?branch=master)](https://coveralls.io/github/Luidog/fms-admin-client?branch=master) A client designed to provide a framework for interactions with FileMaker Server Admin Tools. For in depth documentation head to the [`docs`](https://luidog.github.io/fms-admin-client) + ## Installation -This is a [Node.js](https://nodejs.org/) module available through the -[npm registry](https://www.npmjs.com/). It can be installed using the -[`npm`](https://docs.npmjs.com/getting-started/installing-npm-packages-locally) -or -[`yarn`](https://yarnpkg.com/en/) -command line tools. - ```sh -npm install fms-admin-client --save +npm install --save fms-admin-client ``` + -## Tests + + -```sh -npm install -npm test -``` + +## Dependencies -``` -> fms-admin-client@0.0.1 test /fms-admin-client -> nyc _mocha --recursive ./tests --timeout=30000 - Clone Capabilities - ✓ should clone a file to a temp directory (1177ms) - Service Capabilities - ✓ should throw an error if the service is already running (136ms) - ✓ should stop the service (12605ms) - ✓ should throw an error if the service is not running (1170ms) - ✓ should start the service (1587ms) - Storage - ✓ should allow an instance to be created - ✓ should allow an instance to be saved. - ✓ should allow an instance to be recalled - ✓ should allow insances to be listed - ✓ should allow you to remove an instance - 10 passing (17s) ------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------------|----------|----------|----------|----------|-------------------| -All files | 86.96 | 50 | 74.29 | 89.39 | | - fms-admin-client | 100 | 100 | 100 | 100 | | - index.js | 100 | 100 | 100 | 100 | | - fms-admin-client/src | 86.57 | 50 | 74.29 | 89.06 | | - admin.model.js | 95.24 | 100 | 90 | 95 | 73 | - cli.model.js | 80 | 50 | 66.67 | 84.21 |... ,48,52,100,133 | - credentials.model.js | 100 | 100 | 100 | 100 | | - index.js | 100 | 100 | 100 | 100 | | ------------------------|----------|----------|----------|----------|-------------------| -``` +- [fs-extra](https://github.com/jprichardson/node-fs-extra): fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf. +- [child-process-promise](https://github.com/patrick-steele-idem/child-process-promise): Simple wrapper around the "child_process" module that makes use of promises +- [lodash](https://github.com/lodash/lodash): Lodash modular utilities. +- [marpat](https://github.com/luidog/marpat): A class-based ES6 ODM for Mongo-like databases. +- [string-to-stream](https://github.com/feross/string-to-stream): Convert a string into a stream (streams2) -## Dependencies + -* [child-process-promise](https://ghub.io/child-process-promise): Simple wrapper around the "child_process" module that makes use of promises -* [lodash](https://ghub.io/lodash): Lodash modular utilities. -* [marpat](https://ghub.io/marpat): A class-based ES6 ODM for Mongo-like databases. -* [string-to-stream](https://ghub.io/string-to-stream): Convert a string into a stream (streams2) + +## Dev Dependencies -## Dev Dependencies +- [chai](https://github.com/chaijs/chai): BDD/TDD assertion library for node.js and the browser. Test framework agnostic. +- [chai-as-promised](https://github.com/domenic/chai-as-promised): Extends Chai with assertions about promises. +- [colors](https://github.com/Marak/colors.js): get colors in your node.js console +- [coveralls](https://github.com/nickmerwin/node-coveralls): takes json-cov output into stdin and POSTs to coveralls.io +- [dotenv](https://github.com/motdotla/dotenv): Loads environment variables from .env file +- [eslint](https://github.com/eslint/eslint): An AST-based pattern checker for JavaScript. +- [eslint-config-google](https://github.com/google/eslint-config-google): ESLint shareable config for the Google style +- [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier): Turns off all rules that are unnecessary or might conflict with Prettier. +- [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier): Runs prettier as an eslint rule +- [jsdoc](https://github.com/jsdoc3/jsdoc): An API documentation generator for JavaScript. +- [minami](https://github.com/Nijikokun/minami): Clean and minimal JSDoc 3 Template / Theme +- [mocha](https://github.com/mochajs/mocha): simple, flexible, fun test framework +- [mocha-lcov-reporter](https://github.com/StevenLooman/mocha-lcov-reporter): LCOV reporter for Mocha +- [mos](https://github.com/mosjs/mos): A pluggable module that injects content into your markdown files via hidden JavaScript snippets +- [mos-plugin-dependencies](https://github.com/mosjs/mos/tree/master/packages/mos-plugin-dependencies): A mos plugin that creates dependencies sections +- [mos-plugin-execute](https://github.com/team-767/mos-plugin-execute): Mos plugin to inline a process output +- [mos-plugin-installation](https://github.com/mosjs/mos/tree/master/packages/mos-plugin-installation): A mos plugin for creating installation section +- [mos-plugin-license](https://github.com/mosjs/mos-plugin-license): A mos plugin for generating a license section +- [mos-plugin-snippet](https://github.com/mosjs/mos/tree/master/packages/mos-plugin-snippet): A mos plugin for embedding snippets from files +- [nyc](https://github.com/istanbuljs/nyc): the Istanbul command line interface +- [prettier](https://github.com/prettier/prettier): Prettier is an opinionated code formatter +- [varium](https://npmjs.org/package/varium): A strict parser and validator of environment config variables -* [chai](https://ghub.io/chai): BDD/TDD assertion library for node.js and the browser. Test framework agnostic. -* [chai-as-promised](https://ghub.io/chai-as-promised): Extends Chai with assertions about promises. -* [colors](https://ghub.io/colors): get colors in your node.js console -* [coveralls](https://ghub.io/coveralls): takes json-cov output into stdin and POSTs to coveralls.io -* [dotenv](https://ghub.io/dotenv): Loads environment variables from .env file -* [eslint](https://ghub.io/eslint): An AST-based pattern checker for JavaScript. -* [eslint-config-google](https://ghub.io/eslint-config-google): ESLint shareable config for the Google style -* [eslint-config-prettier](https://ghub.io/eslint-config-prettier): Turns off all rules that are unnecessary or might conflict with Prettier. -* [eslint-plugin-prettier](https://ghub.io/eslint-plugin-prettier): Runs prettier as an eslint rule -* [fs-extra](https://ghub.io/fs-extra): fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf. -* [jsdocs](https://ghub.io/jsdocs): jsdocs -* [minami](https://ghub.io/minami): Clean and minimal JSDoc 3 Template / Theme -* [mocha](https://ghub.io/mocha): simple, flexible, fun test framework -* [mocha-lcov-reporter](https://ghub.io/mocha-lcov-reporter): LCOV reporter for Mocha -* [nyc](https://ghub.io/nyc): the Istanbul command line interface -* [package-json-to-readme](https://ghub.io/package-json-to-readme): Generate a README.md from package.json contents -* [prettier](https://ghub.io/prettier): Prettier is an opinionated code formatter -* [varium](https://ghub.io/varium): A strict parser and validator of environment config variables + + ## License -MIT +MIT © Lui de la Parra + diff --git a/docs/Admin.html b/docs/Admin.html index 84148de..925bcdc 100644 --- a/docs/Admin.html +++ b/docs/Admin.html @@ -24,7 +24,7 @@
@@ -66,217 +66,8 @@

new Admin - - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - -

Methods

- - - -
- - - -

(private, static) _getPaths() → {Object}

- - - - - -
-

Gets the working paths for the current server based on a list of files currently -host. There is a lot more work to do here yet. The two keys returned are tempPath and fmPath. -The fmPath contains the volume and filemac or filewin encodings. the tempPath contains the path -for fse to stream the file.

-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
-
Returns:
- - - -
-
- Type: -
-
- -Object - - -
-
- - -
-

paths a filemaker path and a temp path.

-
- - -
- - - -
- - -
- - - -

(static) clone(database) → {Object}

- - - - -
-

Performs a backup of the database passed to it then copies this file to a temp -directory where the file can be easily streamed to a destination.

+

/**

@@ -312,20 +103,13 @@

(static) clone<
Source:
-
See:
-
-
    -
  • {@method CLI#backup}
  • -
-
- @@ -338,56 +122,11 @@

(static) clone< -

Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
database - - -String - - - - -

The database to backup.

- -
@@ -397,79 +136,9 @@
Parameters:
- - - - - -
-
Returns:
- - - -
-
- Type: -
-
- -Object - - -
-
- - -
-

returns an object with the path to the cloned version of the database

-
- - -
- - - -
- - -
- - - -

(static) list(item) → {Array}

- - - - - -
-

returns an array of the currently active items based on the parameter -sent to it.

- - - - - -
- - - - - - - - - - - - - - - - - +
@@ -477,120 +146,15 @@

(static) listSource: -
- + - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
item - - -String - - - - -

the item to list. This can be schedules, files, or clients.

- -
- - - - - - - - - - - - - - -
-
Returns:
- - - -
-
- Type: -
-
- -Array - - -
-
- - -
-

items current open or active items

-
- - -
- - +

Methods

-
@@ -640,7 +204,7 @@

preInitSource:
@@ -717,7 +281,7 @@
Returns:

- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/CLI.html b/docs/CLI.html index 87daddf..9b73e41 100644 --- a/docs/CLI.html +++ b/docs/CLI.html @@ -24,7 +24,7 @@
@@ -100,7 +100,134 @@

new CLISource:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +

+ CLI +

+ +

The class containing methods for interacting with the fmsadmin +CLI.

+ + +
+ +
+
+ + +
+ + +

Constructor

+ + +

new CLI()

+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
@@ -166,7 +293,7 @@

new CLI
- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/Credentials.html b/docs/Credentials.html index 9d1acc8..6adab0a 100644 --- a/docs/Credentials.html +++ b/docs/Credentials.html @@ -24,7 +24,7 @@
@@ -91,6 +91,358 @@

new Creden + + + + + + +
Source:
+
+ + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + +

Members

+ + + +
+

password :String

+ + + + +
+

A string containing the time the token token was issued.

+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + +
Type:
+
    +
  • + +String + + +
  • +
+ + + + + +
+ + + +
+

password :String

+ + + + +
+

A string containing the time the token token was issued.

+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + +
Type:
+
    +
  • + +String + + +
  • +
+ + + + + +
+ + + +
+

user :String

+ + + + +
+

The token to use when querying an endpoint.

+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + +
Type:
+
    +
  • + +String + + +
  • +
+ + + + + +
+ + + + + + + + + +
+ +
+ + + + + + + +
+ +
+ +

+ Credentials +

+ +

The class used to authenticate with into the FileMaker API.

+ + +
+ +
+
+ + +
+ + +

Constructor

+ + +

new Credentials()

+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + @@ -203,6 +555,80 @@

password + + + +
Type:
+
    +
  • + +String + + +
  • +
+ + + + + +

+ + + +
+

password :String

+ + + + +
+

A string containing the time the token token was issued.

+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + +
@@ -317,7 +743,7 @@
Type:

- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/admin.model.js.html b/docs/admin.model.js.html index 4a2785f..897d63e 100644 --- a/docs/admin.model.js.html +++ b/docs/admin.model.js.html @@ -24,7 +24,7 @@
@@ -41,12 +41,11 @@

admin.model.js

'use strict';
 
-const _ = require('lodash');
-const path = require('path');
-const fse = require('fs-extra');
-
 const { Document } = require('marpat');
 const { CLI } = require('./cli.model');
+const { Migration } = require('./migration.model');
+const { API } = require('./cli.model');
+/**
 
 /**
  * @class Admin
@@ -63,6 +62,14 @@ 

admin.model.js

cli: { type: CLI, required: true + }, + api:{ + type: API, + required: true + }, + migration: { + type: Migration, + required: true } }); } @@ -72,74 +79,13 @@

admin.model.js

* @return {null} The preInit hook does not return anything */ preInit(data) { + this.migration = Migration.create({ path: data.path }); + this.api = API.create() this.cli = CLI.create({ user: data.user, password: data.password }); } - /** - * @method clone - * @memberof Admin - * @public - * @param {String} database The database to backup. - * @description Performs a backup of the database passed to it then copies this file to a temp - * directory where the file can be easily streamed to a destination. - * @see {@method CLI#backup} - * @return {Object} returns an object with the path to the cloned version of the database - * - */ - clone(database) { - return this._getPaths().then(paths => - this.cli - .backup(database, paths.fmPath) - .then(response => - fse - .createReadStream(path.join(paths.tempPath, database)) - .pipe(fse.createWriteStream(path.join('./tmp', database))) - ) - .then(() => - Object.assign({ - path: path.join('./tmp', database) - }) - ) - ); - } - /** - * @method list - * @memberof Admin - * @public - * @description returns an array of the currently active items based on the parameter - * sent to it. - * @param {String} item the item to list. This can be schedules, files, or clients. - * @return {Array} items current open or active items - */ - list(item) { - return this.cli.list(item); - } - /** - * @method _getPaths - * @memberof Admin - * @private - * @description Gets the working paths for the current server based on a list of files currently - * host. There is a lot more work to do here yet. The two keys returned are tempPath and fmPath. - * The fmPath contains the volume and filemac or filewin encodings. the tempPath contains the path - * for fse to stream the file. - * @return {Object} paths a filemaker path and a temp path. - */ - _getPaths() { - return this.cli.list('files').then(files => { - fse.ensureDir('./tmp'); - let pathArray = files[0].split(path.sep); - let server = - _.findIndex(pathArray, path => path === 'FileMaker Server') + 1; - let paths = { - fmPath: path.join(...pathArray.slice(0, server), 'backup', path.sep), - tempPath: path.join( - '/', - ...pathArray.slice(2, server), - 'backup', - 'Databases' - ) - }; - return paths; - }); + + preSave() { + return this.migration.save(); } } @@ -162,7 +108,7 @@

admin.model.js


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/api.model.js.html b/docs/api.model.js.html new file mode 100644 index 0000000..476f5d2 --- /dev/null +++ b/docs/api.model.js.html @@ -0,0 +1,83 @@ + + + + + + api.model.js - Documentation + + + + + + + + + + + + + + + + + +
+ +

api.model.js

+ + + + + + + +
+
+
'use strict';
+
+const { EmbeddedDocument } = require('marpat');
+
+/**
+ * @class CLI
+ * @classdesc The class containing methods for interacting with the fmsadmin
+ * CLI.
+ */
+
+class API extends EmbeddedDocument {
+  constructor() {
+    super();
+    this.schema({
+    });
+  }
+}
+/**
+ * @module CLI
+ */
+module.exports = {
+  API
+};
+
+
+
+ + + + +
+ +
+ +
+ Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme. +
+ + + + + diff --git a/docs/cli.model.js.html b/docs/cli.model.js.html index d1945c0..c26c680 100644 --- a/docs/cli.model.js.html +++ b/docs/cli.model.js.html @@ -24,7 +24,7 @@
@@ -42,6 +42,7 @@

cli.model.js

'use strict';
 
 const { EmbeddedDocument } = require('marpat');
+const fse = require('fs-extra');
 const { spawn, exec } = require('child-process-promise');
 const stringStream = require('string-to-stream');
 const { Credentials } = require('./credentials.model');
@@ -82,7 +83,7 @@ 

cli.model.js

} close(database) { - return this.run(`CLOSE ${database}`); + return this.run(`-yf CLOSE ${database} `); } open(database) { @@ -94,7 +95,9 @@

cli.model.js

} backup(database, destination) { - return this.run(`BACKUP ${database} -k0 --dest "${destination}"`); + return fse + .ensureDir(destination) + .then(() => this.run(`BACKUP ${database} -k0 --dest "${destination}"`)); } start(service) { @@ -138,8 +141,9 @@

cli.model.js

typeof response.stdout; return response.stdout === '' ? [] : response.stdout.split('\n'); }) - .catch(error => error.stdout); + .catch(error => Object.assign({ message: error.stdout })); } + stop(service) { return new Promise((resolve, reject) => { let spawnedProcess, child; @@ -174,6 +178,7 @@

cli.model.js

.catch(error => reject(this._errorMap(error))); }); } + _errorMap(error) { let mappedError = { code: error.toString().match(/\d+/g)[0], @@ -205,7 +210,7 @@

cli.model.js


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/credentials.model.js.html b/docs/credentials.model.js.html index 4af5e91..57fd375 100644 --- a/docs/credentials.model.js.html +++ b/docs/credentials.model.js.html @@ -24,7 +24,7 @@
@@ -88,7 +88,7 @@

credentials.model.js


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/global.html b/docs/global.html index d611b15..fe9abe6 100644 --- a/docs/global.html +++ b/docs/global.html @@ -24,7 +24,7 @@
@@ -154,7 +154,7 @@

cliSource:
@@ -203,7 +203,7 @@
Type:

- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/index.html b/docs/index.html index e1a82e3..38af817 100644 --- a/docs/index.html +++ b/docs/index.html @@ -24,7 +24,7 @@
@@ -48,70 +48,237 @@
-

fms-admin-client

A client to allow remote connection to the FileMaker Server Admin CLI

-

Installation

This is a Node.js module available through the -npm registry. It can be installed using the -npm -or -yarn -command line tools.

-
npm install fms-admin-client --save

Tests

npm install
-npm test

-> fms-admin-client@0.0.1 test /fms-admin-client
-> nyc _mocha --recursive ./tests --timeout=30000
+        
+

fms-admin-client

+

Coverage Status

+

A client designed to provide a framework for interactions with FileMaker Server Admin Tools.

+

For in depth documentation head to the docs

+ +

Installation

npm install --save fms-admin-client
+ +
> fms-admin-client@0.0.2 test /Users/luidelaparra/Documents/Development/fms-admin-client
+> nyc _mocha --recursive ./tests --timeout=30000 && npm run coverage
+
+
+
   Clone Capabilities
-    ✓ should clone a file to a temp directory (1177ms)
+    1) should clone a file to a temp directory
+
+  list Capabilities
+    2) should pause a database
+    3) should resume a database
+    4) should close a database
+    5) should open a database
+
+  list Capabilities
+    6) should return an array from a list file request
+    7) should return an array from a list schedule request
+    8) should return an array from a list client request
+    9) should reject if it can not list the request
+
   Service Capabilities
-    ✓ should throw an error if the service is already running (136ms)
-    ✓ should stop the service (12605ms)
-    ✓ should throw an error if the service is not running (1170ms)
-    ✓ should start the service (1587ms)
-  Storage
-    ✓ should allow an instance to be created
-    ✓ should allow an instance to be saved.
-    ✓ should allow an instance to be recalled
+    10) should throw an error if the service is already running
+    11) should stop the service
+    12) should throw an error if the service is not running
+    13) should start the service
+
+  Storage Capabilities
+    14) should allow an instance to be created
+    15) should allow an instance to be saved.
+    16) should allow an instance to be recalled
     ✓ should allow insances to be listed
-    ✓ should allow you to remove an instance
-  10 passing (17s)
+    17) should allow you to remove an instance
+
+
+  1 passing (60ms)
+  17 failing
+
+  1) Clone Capabilities
+       should clone a file to a temp directory:
+     TypeError: admin.clone is not a function
+      at Context.it (tests/clone.test.js:44:25)
+      at Context.done (tests/clone.test.js:40:5)
+
+  2) list Capabilities
+       should pause a database:
+     TypeError: Cannot read property 'pause' of undefined
+      at Context.it (tests/database.test.js:44:29)
+      at Context.done (tests/database.test.js:40:5)
+
+  3) list Capabilities
+       should resume a database:
+     TypeError: Cannot read property 'resume' of undefined
+      at Context.it (tests/database.test.js:47:29)
+      at Context.done (tests/database.test.js:40:5)
+
+  4) list Capabilities
+       should close a database:
+     TypeError: Cannot read property 'close' of undefined
+      at Context.it (tests/database.test.js:50:29)
+      at Context.done (tests/database.test.js:40:5)
+
+  5) list Capabilities
+       should open a database:
+     TypeError: Cannot read property 'open' of undefined
+      at Context.it (tests/database.test.js:53:29)
+      at Context.done (tests/database.test.js:40:5)
+
+  6) list Capabilities
+       should return an array from a list file request:
+     TypeError: admin.list is not a function
+      at Context.it (tests/list.test.js:44:25)
+      at Context.done (tests/list.test.js:40:5)
+
+  7) list Capabilities
+       should return an array from a list schedule request:
+     TypeError: admin.list is not a function
+      at Context.it (tests/list.test.js:47:25)
+      at Context.done (tests/list.test.js:40:5)
+
+  8) list Capabilities
+       should return an array from a list client request:
+     TypeError: admin.list is not a function
+      at Context.it (tests/list.test.js:50:25)
+      at Context.done (tests/list.test.js:40:5)
+
+  9) list Capabilities
+       should reject if it can not list the request:
+     TypeError: admin.list is not a function
+      at Context.it (tests/list.test.js:54:13)
+      at Context.done (tests/list.test.js:40:5)
+
+  10) Service Capabilities
+       should throw an error if the service is already running:
+     TypeError: Cannot read property 'start' of undefined
+      at Context.it (tests/service.test.js:44:29)
+      at Context.done (tests/service.test.js:40:5)
+
+  11) Service Capabilities
+       should stop the service:
+     TypeError: Cannot read property 'stop' of undefined
+      at Context.it (tests/service.test.js:50:29)
+      at Context.done (tests/service.test.js:40:5)
+
+  12) Service Capabilities
+       should throw an error if the service is not running:
+     TypeError: Cannot read property 'stop' of undefined
+      at Context.it (tests/service.test.js:58:10)
+      at Context.done (tests/service.test.js:40:5)
+
+  13) Service Capabilities
+       should start the service:
+     TypeError: Cannot read property 'start' of undefined
+      at Context.it (tests/service.test.js:67:29)
+      at Context.done (tests/service.test.js:40:5)
+
+  14) Storage Capabilities
+       should allow an instance to be created:
+
+      AssertionError: expected { Object (_schema, _id, ...) } to have keys '_schema', 'cli', and '_id'
+      + expected - actual
+
+       [
+         "_id"
+         "_schema"
+      -  "api"
+         "cli"
+      -  "migration"
+      -  "password"
+      -  "user"
+       ]
+
+      at getBasePromise.then.then.newArgs (node_modules/chai-as-promised/lib/chai-as-promised.js:302:22)
+      at <anonymous>
+
+  15) Storage Capabilities
+       should allow an instance to be saved.:
+     ValidationError: Key admins.cli is required, but got undefined
+      at /Users/luidelaparra/Documents/Development/fms-admin-client/node_modules/marpat/lib/base-document.js:195:15
+      at Array.forEach (<anonymous>)
+      at Admin.validate (node_modules/marpat/lib/base-document.js:139:26)
+      at Promise.all.then (node_modules/marpat/lib/document.js:38:14)
+      at <anonymous>
+
+  16) Storage Capabilities
+       should allow an instance to be recalled:
+     AssertionError: expected null to be an object
+
+
+  17) Storage Capabilities
+       should allow you to remove an instance:
+
+      AssertionError: expected 0 to equal 1
+      + expected - actual
+
+      -0
+      +1
+
+      at getBasePromise.then.then.newArgs (node_modules/chai-as-promised/lib/chai-as-promised.js:302:22)
+      at <anonymous>
+
+
+
 -----------------------|----------|----------|----------|----------|-------------------|
 File                   |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
 -----------------------|----------|----------|----------|----------|-------------------|
-All files              |    86.96 |       50 |    74.29 |    89.39 |                   |
+All files              |    30.68 |        0 |     7.89 |    32.53 |                   |
  fms-admin-client      |      100 |      100 |      100 |      100 |                   |
   index.js             |      100 |      100 |      100 |      100 |                   |
- fms-admin-client/src  |    86.57 |       50 |    74.29 |    89.06 |                   |
-  admin.model.js       |    95.24 |      100 |       90 |       95 |                73 |
-  cli.model.js         |       80 |       50 |    66.67 |    84.21 |... ,48,52,100,133 |
-  credentials.model.js |      100 |      100 |      100 |      100 |                   |
+ fms-admin-client/src  |    29.07 |        0 |     7.89 |    30.86 |                   |
+  admin.model.js       |    81.82 |      100 |    66.67 |    81.82 |             43,47 |
+  cli.model.js         |    14.29 |        0 |        0 |       15 |... 36,137,142,151 |
+  credentials.model.js |       50 |      100 |        0 |       50 |             11,12 |
   index.js             |      100 |      100 |      100 |      100 |                   |
+  migration.model.js   |    22.22 |        0 |    11.11 |       25 |... 59,60,64,65,69 |
 -----------------------|----------|----------|----------|----------|-------------------|
-

Dependencies

    -
  • child-process-promise: Simple wrapper around the "child_process" module that makes use of promises
  • -
  • lodash: Lodash modular utilities.
  • -
  • marpat: A class-based ES6 ODM for Mongo-like databases.
  • -
  • string-to-stream: Convert a string into a stream (streams2)
  • +npm ERR! code ELIFECYCLE +npm ERR! errno 17 +npm ERR! fms-admin-client@0.0.2 test: `nyc _mocha --recursive ./tests --timeout=30000 && npm run coverage` +npm ERR! Exit status 17 +npm ERR! +npm ERR! Failed at the fms-admin-client@0.0.2 test script. +npm ERR! This is probably not a problem with npm. There is likely additional logging output above. + +npm ERR! A complete log of this run can be found in: +npm ERR! /Users/luidelaparra/.npm/_logs/2018-10-30T05_49_18_327Z-debug.log
+ +

Dependencies

    +
  • fs-extra: fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf.
  • +
  • child-process-promise: Simple wrapper around the "child_process" module that makes use of promises
  • +
  • lodash: Lodash modular utilities.
  • +
  • marpat: A class-based ES6 ODM for Mongo-like databases.
  • +
  • string-to-stream: Convert a string into a stream (streams2)
-

Dev Dependencies

    -
  • chai: BDD/TDD assertion library for node.js and the browser. Test framework agnostic.
  • -
  • chai-as-promised: Extends Chai with assertions about promises.
  • -
  • colors: get colors in your node.js console
  • -
  • coveralls: takes json-cov output into stdin and POSTs to coveralls.io
  • -
  • dotenv: Loads environment variables from .env file
  • -
  • eslint: An AST-based pattern checker for JavaScript.
  • -
  • eslint-config-google: ESLint shareable config for the Google style
  • -
  • eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.
  • -
  • eslint-plugin-prettier: Runs prettier as an eslint rule
  • -
  • fs-extra: fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf.
  • -
  • jsdocs: jsdocs
  • -
  • minami: Clean and minimal JSDoc 3 Template / Theme
  • -
  • mocha: simple, flexible, fun test framework
  • -
  • mocha-lcov-reporter: LCOV reporter for Mocha
  • -
  • nyc: the Istanbul command line interface
  • -
  • package-json-to-readme: Generate a README.md from package.json contents
  • -
  • prettier: Prettier is an opinionated code formatter
  • -
  • varium: A strict parser and validator of environment config variables
  • + + +

    Dev Dependencies

      +
    • chai: BDD/TDD assertion library for node.js and the browser. Test framework agnostic.
    • +
    • chai-as-promised: Extends Chai with assertions about promises.
    • +
    • colors: get colors in your node.js console
    • +
    • coveralls: takes json-cov output into stdin and POSTs to coveralls.io
    • +
    • dotenv: Loads environment variables from .env file
    • +
    • eslint: An AST-based pattern checker for JavaScript.
    • +
    • eslint-config-google: ESLint shareable config for the Google style
    • +
    • eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.
    • +
    • eslint-plugin-prettier: Runs prettier as an eslint rule
    • +
    • jsdoc: An API documentation generator for JavaScript.
    • +
    • minami: Clean and minimal JSDoc 3 Template / Theme
    • +
    • mocha: simple, flexible, fun test framework
    • +
    • mocha-lcov-reporter: LCOV reporter for Mocha
    • +
    • mos: A pluggable module that injects content into your markdown files via hidden JavaScript snippets
    • +
    • mos-plugin-dependencies: A mos plugin that creates dependencies sections
    • +
    • mos-plugin-execute: Mos plugin to inline a process output
    • +
    • mos-plugin-installation: A mos plugin for creating installation section
    • +
    • mos-plugin-license: A mos plugin for generating a license section
    • +
    • mos-plugin-snippet: A mos plugin for embedding snippets from files
    • +
    • nyc: the Istanbul command line interface
    • +
    • prettier: Prettier is an opinionated code formatter
    • +
    • varium: A strict parser and validator of environment config variables
    -

    License

    MIT

+ + +

License

MIT © Lui de la Parra +

@@ -124,7 +291,7 @@

License

MIT


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/migration.model.js.html b/docs/migration.model.js.html new file mode 100644 index 0000000..079eefa --- /dev/null +++ b/docs/migration.model.js.html @@ -0,0 +1,137 @@ + + + + + + migration.model.js - Documentation + + + + + + + + + + + + + + + + + +
+ +

migration.model.js

+ + + + + + + +
+
+
'use strict';
+
+const { Document } = require('marpat');
+const { spawn, exec } = require('child_process');
+const _ = require('lodash');
+/**
+ * @class Credentials
+ * @classdesc The class used to authenticate with into the FileMaker API.
+ */
+class Migration extends Document {
+  constructor() {
+    super();
+    this.schema({
+      /** A string containing the time the token token was issued.
+       * @member Credentials#password
+       * @type String
+       */
+      path: {
+        type: String,
+        required: true
+      },
+      session: {
+        type: Array,
+        default: []
+      },
+      process: {
+        type: Number
+      }
+    });
+  }
+
+  execute(commands) {
+    this.session = [];
+    let commandArray = _.flatten(
+      _.compact(
+        _.values(
+          _.mapValues(commands, (value, key, object) => {
+            if (value === true) {
+              return [`-${key}`];
+            } else if (value !== false) {
+              return [`-${key}`, value];
+            }
+            return;
+          })
+        )
+      )
+    );
+    let thisProcess = spawn(this.path, commandArray);
+
+    thisProcess.stdout.on('data', data => this.log(data));
+    thisProcess.stderr.on('error', error => this.log(error));
+    thisProcess.on('close', () => this.end());
+    this.process = thisProcess.pid;
+
+    return this.save();
+  }
+
+  log(data) {
+    this.session.push(data.toString());
+    return this.save();
+  }
+
+  end() {
+    this.process = undefined;
+    return this.save();
+  }
+
+  stop() {
+    process.kill(this.process);
+  }
+}
+/**
+ * @module Credentials
+ */
+module.exports = {
+  Migration
+};
+
+
+
+ + + + +
+ +
+ +
+ Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme. +
+ + + + + diff --git a/docs/module-Admin.html b/docs/module-Admin.html index 8425d20..95af6f8 100644 --- a/docs/module-Admin.html +++ b/docs/module-Admin.html @@ -24,7 +24,7 @@
@@ -83,7 +83,7 @@

Admin


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/module-CLI.html b/docs/module-CLI.html index f1312be..76519a6 100644 --- a/docs/module-CLI.html +++ b/docs/module-CLI.html @@ -24,7 +24,7 @@
@@ -71,6 +71,50 @@

CLI

+ + + + + + + + + + +
+ +
+ + + +
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + +
@@ -83,7 +127,7 @@

CLI


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/docs/module-Credentials.html b/docs/module-Credentials.html index df0c265..3af187a 100644 --- a/docs/module-Credentials.html +++ b/docs/module-Credentials.html @@ -24,7 +24,7 @@
@@ -71,6 +71,50 @@

Credentials

+ + + + + + + + + + +
+ +
+ + + +
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + +
@@ -83,7 +127,7 @@

Credentials


- Generated by JSDoc 3.5.5 on Sat May 26 2018 14:11:37 GMT-0700 (PDT) using the Minami theme. + Generated by JSDoc 3.5.5 on Mon Oct 29 2018 22:49:18 GMT-0700 (PDT) using the Minami theme.
diff --git a/examples/index.js b/examples/index.js index 4ad729c..f70f5b1 100644 --- a/examples/index.js +++ b/examples/index.js @@ -8,18 +8,30 @@ const { Admin } = require('../index.js'); environment.config({ path: './tests/.env' }); varium(process.env, './tests/env.manifest'); -connect('nedb://memory').then(db => { - let admin = Admin.create({ - user: process.env.USERNAME, - password: process.env.PASSWORD - }); +connect('nedb://memory') + .then(db => { + let admin = Admin.create({ + user: process.env.USERNAME, + password: process.env.PASSWORD, + path: process.env.MIGRATION_TOOL_PATH + }); - admin.save().then(admin => { - admin.clone('tasks.fmp12').then(file => console.log(file)); - - admin - .list('files') - .then(files => console.log(files)) - .catch(error => console.log(error)); - }); -}); + return admin.save().then(admin => { + admin.migration.execute({ + force: true, + clone_path: './migration/Test-DB-Clone.fmp12', + src_path: './migration/Test-DB-Prod.fmp12' + }); + return admin; + }); + }) + .then(admin => { + setTimeout(function() { + Admin.find().then(admins=>console.log(admins[0].toJSON())) + }, 1000); + setTimeout(function() { + Admin.find().then(admins=>console.log(admins[0].toJSON())) + }, 10000); + + }) + .catch(error => console.log('error', error)); diff --git a/package-lock.json b/package-lock.json index ab67aec..4c0f9f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,116 @@ { "name": "fms-admin-client", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { + "@zkochan/async-replace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@zkochan/async-replace/-/async-replace-0.4.1.tgz", + "integrity": "sha1-TPO97s9S8vasjzKw2IpoLrSEiXk=", + "dev": true, + "requires": { + "babel-run-async": "1.0.0", + "babel-runtime": "6.26.0" + } + }, + "@zkochan/hosted-git-info": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@zkochan/hosted-git-info/-/hosted-git-info-2.1.5.tgz", + "integrity": "sha1-VVsJHJVrqEky2IiY++/gZDxjp58=", + "dev": true + }, + "@zkochan/normalize-package-data": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@zkochan/normalize-package-data/-/normalize-package-data-2.3.6.tgz", + "integrity": "sha1-fxfhnnnmUm3mc7d/OMgvrhrHXWk=", + "dev": true, + "requires": { + "@zkochan/hosted-git-info": "2.1.5", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.4" + } + }, + "@zkochan/read-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@zkochan/read-pkg/-/read-pkg-1.1.2.tgz", + "integrity": "sha1-7o/STAEJZvFmIg+Roa7hr397tTQ=", + "dev": true, + "requires": { + "@zkochan/normalize-package-data": "2.3.6", + "load-json-file": "1.1.0", + "path-type": "1.1.0" + } + }, + "@zkochan/read-pkg-up": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@zkochan/read-pkg-up/-/read-pkg-up-1.0.2.tgz", + "integrity": "sha1-naMNLg1pvpyxPj+yJkAiwPaHqgg=", + "dev": true, + "requires": { + "@zkochan/read-pkg": "1.1.2", + "find-up": "1.1.2" + } + }, + "@zkochan/tap-diff": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@zkochan/tap-diff/-/tap-diff-1.1.1.tgz", + "integrity": "sha1-97rUOe3/KbmLC/80Rru4xecJbHk=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chalk": "1.1.3", + "core-js": "2.5.7", + "diff": "2.2.3", + "duplexer": "0.1.1", + "figures": "1.7.0", + "jsondiffpatch": "0.1.43", + "pretty-ms": "2.1.0", + "tap-parser": "1.3.2", + "through2": "2.0.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, "acorn": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", @@ -45,6 +152,52 @@ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -54,7 +207,8 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "2.2.1", @@ -62,28 +216,27 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "1.0.3" } }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -108,7 +261,8 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "assert-plus": { "version": "1.0.0", @@ -122,12 +276,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "optional": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -181,6 +329,286 @@ } } }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.6.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.10" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.3", + "babel-runtime": "6.26.0", + "core-js": "2.5.7", + "home-or-tmp": "2.0.0", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-run-async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-run-async/-/babel-run-async-1.0.0.tgz", + "integrity": "sha1-o0NCX802FY3++ucl0Dk+zkTsRZw=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "is-promise": "2.1.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.10" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -206,18 +634,70 @@ "underscore": "1.4.4" } }, - "bindings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true }, - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "boxen": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/boxen/-/boxen-0.5.1.tgz", + "integrity": "sha1-W3PYhA6388ihVcv2ntPtaNRyABQ=", + "dev": true, "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2" + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } } }, "brace-expansion": { @@ -237,29 +717,10 @@ "dev": true }, "bson": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", - "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==", - "optional": true - }, - "buffer-alloc": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", - "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", - "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.1" - } - }, - "buffer-alloc-unsafe": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", - "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" - }, - "buffer-fill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", - "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==" + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==", + "optional": true }, "buffer-from": { "version": "1.0.0", @@ -267,6 +728,12 @@ "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", "dev": true }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -288,12 +755,43 @@ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, + "ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", + "dev": true + }, "chai": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", @@ -348,6 +846,30 @@ } } }, + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "dev": true + }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -381,33 +903,18 @@ } } }, - "chmod": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/chmod/-/chmod-0.2.1.tgz", - "integrity": "sha1-3uccQg/AC/Uj1XKxSSL1XZGfnQo=", - "requires": { - "deep-extend": "0.2.11", - "stat-mode": "0.1.0" - }, - "dependencies": { - "deep-extend": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", - "integrity": "sha1-eha6aXKRMjQFBhcElLyD9wdv4I8=" - } - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" - }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -423,48 +930,6 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -474,7 +939,49 @@ "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=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codemo": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/codemo/-/codemo-0.2.2.tgz", + "integrity": "sha1-GCe0ZB87z4vXG9SbLU6ZtFuLX9c=", + "dev": true, + "requires": { + "acorn": "3.0.4", + "babel-runtime": "6.26.0", + "callsites": "1.0.0", + "cross-spawn-async": "2.2.2", + "file-position": "0.0.0", + "lodash.partition": "4.6.0", + "normalize-newline": "2.0.0", + "normalize-path": "2.0.1", + "promise.prototype.finally": "1.0.1", + "rollup": "0.25.8", + "rollup-plugin-babel": "2.4.0", + "rollup-plugin-includepaths": "0.1.2", + "source-map": "0.5.3" + }, + "dependencies": { + "acorn": { + "version": "3.0.4", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.0.4.tgz", + "integrity": "sha1-BPJElQ/bj6+FUHrUgcLt7nrs3uw=", + "dev": true + }, + "callsites": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-1.0.0.tgz", + "integrity": "sha1-AlY7EO0x8uvZWJOndvCz2VprFbg=", + "dev": true + } + } + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", + "dev": true }, "color-convert": { "version": "1.9.1", @@ -497,12 +1004,6 @@ "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", "dev": true }, - "colorx": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/colorx/-/colorx-0.0.7.tgz", - "integrity": "sha1-JJf+AOJHu4BVm4uAQzrmzSgNtnI=", - "dev": true - }, "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", @@ -512,12 +1013,6 @@ "delayed-stream": "1.0.0" } }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -536,10 +1031,45 @@ "typedarray": "0.0.6" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.5", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -567,6 +1097,15 @@ } } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.1" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -578,6 +1117,25 @@ "which": "1.3.0" } }, + "cross-spawn-async": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.2.tgz", + "integrity": "sha1-kN6ptpIPA7L3vHSZYVABrubyMX4=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "which": "1.3.0" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -591,6 +1149,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -601,14 +1160,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "1.0.0" - } - }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -618,10 +1169,17 @@ "type-detect": "4.0.8" } }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, "deep-is": { "version": "0.1.3", @@ -629,6 +1187,21 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -650,20 +1223,14 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "diff": { "version": "3.5.0", @@ -680,23 +1247,34 @@ "esutils": "2.0.2" } }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, "dotenv": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true }, - "drivelist": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/drivelist/-/drivelist-6.2.2.tgz", - "integrity": "sha1-EmgrhP3lzetbaKBVR3HvKwK9NwM=", + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, "requires": { - "bindings": "1.3.0", - "debug": "3.1.0", - "fast-plist": "0.1.2", - "js-yaml": "3.11.0", - "nan": "2.10.0", - "prebuild-install": "4.0.0" + "readable-stream": "2.3.6" } }, "ecc-jsbn": { @@ -709,12 +1287,43 @@ "jsbn": "0.1.1" } }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, "requires": { - "once": "1.4.0" + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" } }, "escape-string-regexp": { @@ -823,7 +1432,8 @@ "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true }, "esquery": { "version": "1.0.1", @@ -849,16 +1459,23 @@ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "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.1.1", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz", - "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==" + "events-to-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", + "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", + "dev": true }, "extend": { "version": "3.0.1", @@ -907,11 +1524,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-plist": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.2.tgz", - "integrity": "sha1-pFr/NFGWAG1AbKbNzQX2kFHvNbg=" - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -931,6 +1543,34 @@ "object-assign": "4.1.1" } }, + "file-exists": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-exists/-/file-exists-1.0.0.tgz", + "integrity": "sha1-5tJptWVnuJIlgTmOmQ3XB49y1hY=", + "dev": true + }, + "file-position": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/file-position/-/file-position-0.0.0.tgz", + "integrity": "sha1-rkxlqupgoUyX9xUIwKvIaopfCI4=", + "dev": true + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -943,6 +1583,12 @@ "write": "0.2.1" } }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -960,77 +1606,35 @@ "mime-types": "2.1.18" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "fs-extra": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "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 - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - } + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "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 + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", @@ -1052,18 +1656,13 @@ "assert-plus": "1.0.0" } }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" - }, - "github-url-to-object": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-1.6.0.tgz", - "integrity": "sha1-iR73+7+rqP7XFRCs2xtOk0apcNw=", + "github-slugger": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz", + "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==", "dev": true, "requires": { - "is-url": "1.2.4" + "emoji-regex": "6.1.1" } }, "glob": { @@ -1100,6 +1699,29 @@ "pinkie-promise": "2.0.1" } }, + "got": { + "version": "5.7.1", + "resolved": "http://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.6", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -1128,6 +1750,15 @@ "har-schema": "2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -1143,10 +1774,11 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "he": { "version": "1.1.1", @@ -1154,10 +1786,20 @@ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "hogan.js": { + "home-or-tmp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-2.0.0.tgz", - "integrity": "sha1-OlsEGG1Rc3/SA1eS1Bmp9agvnQ4=", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "http-signature": { @@ -1198,6 +1840,28 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "independent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/independent/-/independent-0.2.0.tgz", + "integrity": "sha1-fP+w1d94AFLyRFzaqPXj29sXyw8=", + "dev": true, + "requires": { + "@zkochan/async-replace": "0.4.1", + "babel-runtime": "6.26.0", + "read-pkg-up": "1.0.1", + "relative": "3.0.2", + "resolve": "1.1.7" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1216,12 +1880,8 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inpath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inpath/-/inpath-1.0.2.tgz", - "integrity": "sha1-SsIZcQ7Hpy9GD/lL9CTdPvDlKBc=" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true }, "inquirer": { "version": "3.3.0", @@ -1245,16 +1905,96 @@ "through": "2.3.8" } }, - "invert-kv": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "1.0.2", + "is-decimal": "1.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, "is-path-cwd": { "version": "1.0.0", @@ -1280,18 +2020,60 @@ "path-is-inside": "1.0.2" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.3" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -1304,6 +2086,12 @@ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1314,6 +2102,15 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -1336,11 +2133,21 @@ "version": "3.11.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, "requires": { "argparse": "1.0.10", "esprima": "4.0.0" } }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "1.0.2" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -1348,31 +2155,46 @@ "dev": true, "optional": true }, - "jsdocs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jsdocs/-/jsdocs-1.0.0.tgz", - "integrity": "sha512-6GmPLgjwy1aDNohUauo/ALWuGGYZ7snhLpVj5n55nJMdULnWjlwJ0Zk0hmq0P94cU7P8mEDBGiMav9GEehXPrQ==", + "jsdoc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", "dev": true, "requires": { - "colorx": "0.0.7", - "commander": "2.15.1", + "babylon": "7.0.0-beta.19", + "bluebird": "3.5.2", + "catharsis": "0.8.9", + "escape-string-regexp": "1.0.5", + "js2xmlparser": "3.0.0", + "klaw": "2.0.0", "marked": "0.3.19", - "minitpl": "0.0.3", - "mkdirp": "0.5.0", - "xutil": "0.0.9" + "mkdirp": "0.5.1", + "requizzle": "0.2.1", + "strip-json-comments": "2.0.1", + "taffydb": "2.6.2", + "underscore": "1.8.3" }, "dependencies": { - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true } } }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -1397,6 +2219,72 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsondiffpatch": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.1.43.tgz", + "integrity": "sha1-wFKImpnvfroZ0AlfkPclz6cKVhE=", + "dev": true, + "requires": { + "chalk": "0.5.1" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "1.1.0", + "escape-string-regexp": "1.0.5", + "has-ansi": "0.1.0", + "strip-ansi": "0.3.0", + "supports-color": "0.2.0" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "0.2.1" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + } + } + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -1418,13 +2306,22 @@ "verror": "1.10.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "package-json": "2.4.0" } }, "lcov-parse": { @@ -1452,10 +2349,23 @@ "immediate": "3.0.6" } }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, "localforage": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.1.tgz", - "integrity": "sha1-5JJ+BCMCuGTbMPMhHxO1xvDell0=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz", + "integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==", "optional": true, "requires": { "lie": "3.1.1" @@ -1466,12 +2376,49 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, + "lodash.partition": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.partition/-/lodash.partition-4.6.0.tgz", + "integrity": "sha1-o45GtzRp4EILDaEhLmbUFL42S6Q=", + "dev": true + }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true }, + "longest-streak": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz", + "integrity": "sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", @@ -1481,6 +2428,36 @@ "yallist": "2.1.2" } }, + "magic-hook": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/magic-hook/-/magic-hook-1.0.0.tgz", + "integrity": "sha1-mu2GAadRK1axlUcNonSk7jqVCfA=", + "dev": true, + "requires": { + "flatten": "1.0.2" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "markdown-table": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", + "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE=", + "dev": true + }, + "markdownscript": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/markdownscript/-/markdownscript-1.3.0.tgz", + "integrity": "sha1-vf3/Csk0F4JLI2UjqaaZ5eDOfhE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, "marked": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", @@ -1488,20 +2465,57 @@ "dev": true }, "marpat": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/marpat/-/marpat-1.17.0.tgz", - "integrity": "sha512-AHyk/6bvEwES0U/VpnnbhrXbykq6EUx9i0sk9OTVQQiI+ySnZ7oiFrDKFG3ZZnwl4yjwpM+RCUL9GJ3IYtLwKw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/marpat/-/marpat-1.19.0.tgz", + "integrity": "sha512-L504P3U/jhrO9hVBe2vnp8LZKlwW76fl/0h3VzX5e4pJMxki36snySa0kD6bZ0mPl37R2ye/cS/UMA6Cw+sCpg==", "requires": { - "depd": "1.1.0", - "lodash": "3.9.3", - "mongodb": "3.0.8", + "lodash": "4.17.11", + "mongodb": "3.1.8", "nedb": "1.8.0" }, "dependencies": { - "lodash": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", - "integrity": "sha1-AVnoaDL+/8bWHYUrEqlTuZSWvTI=" + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + } + } + }, + "mdast-util-to-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz", + "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==", + "dev": true + }, + "memory-pager": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.1.0.tgz", + "integrity": "sha512-Mf9OHV/Y7h6YWDxTzX/b4ZZ4oh9NSXblQL8dtPCOomOtZciEHxePR78+uHFLLlsk01A6jVHhHsQZZ/WcIPpnzg==", + "optional": true + }, + "meow": { + "version": "3.7.0", + "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -1526,11 +2540,6 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, - "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" - }, "minami": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/minami/-/minami-1.2.3.tgz", @@ -1551,12 +2560,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, - "minitpl": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/minitpl/-/minitpl-0.0.3.tgz", - "integrity": "sha1-fGA8GiR0ehRMg8mo0Vw/7lY/a/E=", - "dev": true - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -1614,38 +2617,364 @@ "dev": true }, "mongodb": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.8.tgz", - "integrity": "sha512-mj7yIUyAr9xnO2ev8pcVJ9uX7gSum5LLs1qIFoWLxA5Il50+jcojKtaO1/TbexsScZ9Poz00Pc3b86GiSqJ7WA==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.8.tgz", + "integrity": "sha512-yNKwYxQ6m00NV6+pMoWoheFTHSQVv1KkSrfOhRDYMILGWDYtUtQRqHrFqU75rmPIY8hMozVft8zdC4KYMWaM3Q==", "optional": true, "requires": { - "mongodb-core": "3.0.8" + "mongodb-core": "3.1.7", + "safe-buffer": "5.1.2" } }, "mongodb-core": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.8.tgz", - "integrity": "sha512-dFxfhH9N7ohuQnINyIl6dqEF8sYOE0WKuymrFf3L3cipJNrx+S8rAbNOTwa00/fuJCjBMJNFsaA+R2N16//UIw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.7.tgz", + "integrity": "sha512-YffpSrLmgFNmrvkGx+yX00KyBNk64C0BalfEn6vHHkXtcMUGXw8nxrMmhq5eXPLLlYeBpD/CsgNxE2Chf0o4zQ==", "optional": true, "requires": { - "bson": "1.0.6", - "require_optional": "1.0.1" + "bson": "1.1.0", + "require_optional": "1.0.1", + "safe-buffer": "5.1.2", + "saslprep": "1.0.2" + } + }, + "mos": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mos/-/mos-1.3.1.tgz", + "integrity": "sha1-FSUfZGIGkofctlBXXXpZPHvnkYg=", + "dev": true, + "requires": { + "@zkochan/read-pkg-up": "1.0.2", + "@zkochan/tap-diff": "1.1.1", + "babel-runtime": "6.26.0", + "chalk": "1.1.3", + "glob": "7.0.6", + "loud-rejection": "1.6.0", + "magic-hook": "1.0.0", + "meow": "3.7.0", + "mos-init": "1.1.0", + "mos-plugin-dependencies": "2.2.0", + "mos-plugin-ejs": "1.1.0", + "mos-plugin-example": "1.1.0", + "mos-plugin-installation": "1.2.0", + "mos-plugin-license": "1.2.0", + "mos-plugin-markdownscript": "2.1.0", + "mos-plugin-package-json": "2.1.0", + "mos-plugin-shields": "2.2.0", + "mos-plugin-snippet": "2.1.1", + "mos-plugin-toc": "1.2.1", + "mos-processor": "1.2.0", + "normalize-newline": "2.0.0", + "normalize-path": "2.0.1", + "rcfile": "1.0.3", + "relative": "3.0.2", + "resolve": "1.1.7", + "tape": "4.5.1", + "update-notifier": "0.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "github-url-to-object": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", + "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", + "dev": true, + "requires": { + "is-url": "1.2.4" + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "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" + } + }, + "mos-plugin-dependencies": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mos-plugin-dependencies/-/mos-plugin-dependencies-2.2.0.tgz", + "integrity": "sha1-pPxOypZ1ejWAew8tRXUFIQHfgtw=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "github-url-to-object": "2.2.6", + "shieldman": "1.2.0" + } + }, + "mos-plugin-installation": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mos-plugin-installation/-/mos-plugin-installation-1.2.0.tgz", + "integrity": "sha1-WaHEyiJ9InEXeCvf3+gG3bf4Xiw=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "markdownscript": "1.3.0", + "mdast-util-to-string": "1.0.5" + } + }, + "mos-plugin-license": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mos-plugin-license/-/mos-plugin-license-1.2.0.tgz", + "integrity": "sha1-D05kpCfobBXLuDg6nBC9snXfLao=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "file-exists": "1.0.0", + "markdownscript": "1.3.0", + "mdast-util-to-string": "1.0.5" + } + }, + "mos-plugin-snippet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mos-plugin-snippet/-/mos-plugin-snippet-2.1.1.tgz", + "integrity": "sha1-4urieZUjRAXzkk6iAiMgDPa60KY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "mos-core": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/mos-core/-/mos-core-0.2.1.tgz", + "integrity": "sha1-oVarJoUbAcjkIegGVhfPNfEfU5o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "ccount": "1.0.3", + "collapse-white-space": "1.0.4", + "core-js": "2.5.7", + "is-promise": "2.1.0", + "longest-streak": "1.0.0", + "markdown-table": "0.4.0", + "parse-entities": "1.2.0", + "repeat-string": "1.6.1", + "stringify-entities": "1.3.2", + "trim": "0.0.1", + "trim-trailing-lines": "1.1.1", + "unist-util-remove-position": "1.1.2", + "vfile": "1.4.0", + "vfile-location": "2.0.3" + } + }, + "mos-init": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mos-init/-/mos-init-1.1.0.tgz", + "integrity": "sha1-k2l4WlCc1ekHsjMYGTwK49JXqmQ=", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "core-js": "2.5.7", + "the-argv": "1.0.0", + "write-pkg": "1.0.0" + } + }, + "mos-plugin-dependencies": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mos-plugin-dependencies/-/mos-plugin-dependencies-2.2.2.tgz", + "integrity": "sha1-vm7fN15M9ch8QU0PI3ZmItGO0Xc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "github-url-to-object": "2.2.6", + "shieldman": "1.2.0" + }, + "dependencies": { + "github-url-to-object": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", + "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", + "dev": true, + "requires": { + "is-url": "1.2.4" + } + } + } + }, + "mos-plugin-ejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mos-plugin-ejs/-/mos-plugin-ejs-1.1.0.tgz", + "integrity": "sha1-K8Q82LEiMQNf/ao4QIviQksiy+k=", + "dev": true, + "requires": { + "@zkochan/read-pkg-up": "1.0.2", + "babel-run-async": "1.0.0", + "babel-runtime": "6.26.0", + "github-url-to-object": "2.2.6", + "reserved-words": "0.1.2" + }, + "dependencies": { + "github-url-to-object": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", + "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", + "dev": true, + "requires": { + "is-url": "1.2.4" + } + } + } + }, + "mos-plugin-example": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mos-plugin-example/-/mos-plugin-example-1.1.0.tgz", + "integrity": "sha1-e6Qv56UPL8/6lnEkONx/cfD0anE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "codemo": "0.2.2", + "independent": "0.2.0" + } + }, + "mos-plugin-execute": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mos-plugin-execute/-/mos-plugin-execute-1.0.2.tgz", + "integrity": "sha1-qaf5nfDvHEGKs2TtADX4sf8f1ug=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "mos-plugin-installation": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mos-plugin-installation/-/mos-plugin-installation-1.2.2.tgz", + "integrity": "sha1-r2FghByH+zmGnQEHwGWaKTayPH8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "markdownscript": "1.3.0", + "mdast-util-to-string": "1.0.5" + } + }, + "mos-plugin-license": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mos-plugin-license/-/mos-plugin-license-1.2.2.tgz", + "integrity": "sha1-BEV+GXukOHeOPbZ/rdi8yYR0fIY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "file-exists": "1.0.0", + "markdownscript": "1.3.0", + "mdast-util-to-string": "1.0.5" + } + }, + "mos-plugin-markdownscript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mos-plugin-markdownscript/-/mos-plugin-markdownscript-2.1.0.tgz", + "integrity": "sha1-wUeSaZOiFOrsHwjZr31LkfIBWFw=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "markdownscript": "1.3.0", + "reserved-words": "0.1.2" + } + }, + "mos-plugin-package-json": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mos-plugin-package-json/-/mos-plugin-package-json-2.1.0.tgz", + "integrity": "sha1-0UzSUMY/BLBQg5IjEvZFPoyIWDM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "mos-plugin-shields": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mos-plugin-shields/-/mos-plugin-shields-2.2.0.tgz", + "integrity": "sha1-L55aB7tYQOptGa1Nc02ixKLVGyU=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "shieldman": "1.2.0" + } + }, + "mos-plugin-snippet": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mos-plugin-snippet/-/mos-plugin-snippet-2.1.3.tgz", + "integrity": "sha1-AldDv4iW6GXi9/RIkoz0QHjUxZU=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "mos-plugin-toc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/mos-plugin-toc/-/mos-plugin-toc-1.2.1.tgz", + "integrity": "sha1-uPs0aBbnolpBq/6rBF87uzyGVwo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "github-slugger": "1.2.0", + "markdownscript": "1.3.0" + } + }, + "mos-processor": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mos-processor/-/mos-processor-1.2.0.tgz", + "integrity": "sha1-wiNpb9b1ogwau0q0D4ToL0StaT0=", + "dev": true, + "requires": { + "@zkochan/read-pkg-up": "1.0.2", + "babel-runtime": "6.26.0", + "github-url-to-object": "2.2.6", + "magic-hook": "1.0.0", + "mos-core": "0.2.1", + "remi": "1.1.1", + "remi-runner": "1.1.3", + "vfile": "1.4.0" + }, + "dependencies": { + "github-url-to-object": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz", + "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=", + "dev": true, + "requires": { + "is-url": "1.2.4" + } + } } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true }, "natural-compare": { "version": "1.4.0", @@ -1661,56 +2990,59 @@ "requires": { "async": "0.2.10", "binary-search-tree": "0.2.5", - "localforage": "1.7.1", + "localforage": "1.7.3", "mkdirp": "0.5.1", "underscore": "1.4.4" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "http://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "optional": true + } } }, - "node-abi": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.1.tgz", - "integrity": "sha512-pUlswqpHQ7zGPI9lGjZ4XDNIEUDbHxsltfIRb7dTnYdhgHWHOcB0MLZKLoCz6UMcGzSPG5wGl1HODZVQAUsH6w==", - "requires": { - "semver": "5.5.0" - } - }, - "node-ssh": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-5.1.1.tgz", - "integrity": "sha512-7fp9u6YWCchDo9Kz/CaPVwU+5zSNaKu1wCagcDlmWWSAeE6MlyHAb3wMXbmdG4oujV4bYUE0hLG0HFJ6kktC0A==", - "requires": { - "p-map": "1.2.0", - "sb-promisify": "2.0.2", - "sb-scandir": "2.0.0", - "shell-escape": "0.2.0", - "ssh2": "0.5.5" - } + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true }, "node-version": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz", "integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==" }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + "normalize-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-2.0.0.tgz", + "integrity": "sha1-yIv2pUcUYqzrP2UXE7wjmw+stUk=", + "dev": true }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.4" } }, + "normalize-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", + "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=", + "dev": true + }, "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=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "nyc": { "version": "11.8.0", @@ -4351,12 +5683,26 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.1.0.tgz", + "integrity": "sha1-NLymRKgPlPi6QaD50JhOr2Os8U0=", + "dev": true + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "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" } @@ -4387,16 +5733,8 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "1.0.0" - } + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true }, "os-tmpdir": { "version": "1.0.2", @@ -4404,39 +5742,64 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-map": { + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "package-json": { + "version": "2.4.0", + "resolved": "http://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "parse-entities": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.0.tgz", + "integrity": "sha512-XXtDdOPLSB0sHecbEapQi6/58U/ODj/KWfIXmmMCJF/eRn8laX6LZbOyioMoETOOJoWRW8/qTSl5VQkUIfKM5g==", + "dev": true, + "requires": { + "character-entities": "1.2.2", + "character-entities-legacy": "1.1.2", + "character-reference-invalid": "1.1.2", + "is-alphanumerical": "1.0.2", + "is-decimal": "1.0.2", + "is-hexadecimal": "1.0.2" + } }, - "package-json-to-readme": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/package-json-to-readme/-/package-json-to-readme-2.1.1.tgz", - "integrity": "sha512-DsbNZaYwVrn8u+n/Pf57dyV8B5y20FbZY70921tOu88aGgYgtVowwCG11PBoqZRRf6XK06y/vHkZ1lVEnta62g==", + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "github-url-to-object": "1.6.0", - "hogan.js": "2.0.0", - "strip-ansi": "0.2.2", - "sync-exec": "0.5.0", - "yargs": "3.32.0" - }, - "dependencies": { - "ansi-regex": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.1.0.tgz", - "integrity": "sha1-Vcpg22kAhXxCOukpeYACb5Qe2QM=", - "dev": true - }, - "strip-ansi": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.2.2.tgz", - "integrity": "sha1-hU0pDJgVJfyMOXqRCwJa4tVP/Ag=", - "dev": true, - "requires": { - "ansi-regex": "0.1.0" - } - } + "error-ex": "1.3.2" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" } }, "path-is-absolute": { @@ -4451,6 +5814,17 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, "pathval": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", @@ -4461,12 +5835,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pidof": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pidof/-/pidof-1.0.2.tgz", - "integrity": "sha1-+6Dq4cgzWhHrgJn10PPvvEXLTpA=" + "dev": true }, "pify": { "version": "2.3.0", @@ -4489,53 +5858,53 @@ "pinkie": "2.0.4" } }, + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "prebuild-install": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-4.0.0.tgz", - "integrity": "sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA==", - "requires": { - "detect-libc": "1.0.3", - "expand-template": "1.1.1", - "github-from-package": "0.0.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "node-abi": "2.4.1", - "noop-logger": "0.1.1", - "npmlog": "4.1.2", - "os-homedir": "1.0.2", - "pump": "2.0.1", - "rc": "1.2.7", - "simple-get": "2.8.1", - "tar-fs": "1.16.2", - "tunnel-agent": "0.6.0", - "which-pm-runs": "1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, "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 }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, "prettier": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", "dev": true }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -4552,20 +5921,17 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" }, + "promise.prototype.finally": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-1.0.1.tgz", + "integrity": "sha1-kRgvkckkhplXQPoF4NqUKsmGvvo=", + "dev": true + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -4585,11 +5951,12 @@ "dev": true }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.6.0", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -4597,17 +5964,67 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "rcfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rcfile/-/rcfile-1.0.3.tgz", + "integrity": "sha1-wdgXXCiRh8Hci7OpY7bURAF7FXY=", + "dev": true, + "requires": { + "debug": "2.6.9", + "js-yaml": "3.11.0", + "json5": "0.5.1", + "object-assign": "4.1.1", + "object-keys": "1.0.12", + "path-exists": "2.1.0", + "require-uncached": "1.0.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.6" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, "requires": { - "mute-stream": "0.0.7" + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "readable-stream": { @@ -4624,12 +6041,91 @@ "util-deprecate": "1.0.2" } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.8", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "relative": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", + "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", + "dev": true, + "requires": { + "isobject": "2.1.0" + } + }, + "remi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/remi/-/remi-1.1.1.tgz", + "integrity": "sha1-Rxt5AU16SWvboB0BihJvj3ctiMY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "magic-hook": "1.0.0" + } + }, + "remi-runner": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/remi-runner/-/remi-runner-1.1.3.tgz", + "integrity": "sha1-Dh/tS9DxMlwnNeZTHRM5EnM/fmw=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "is-promise": "2.1.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, "request": { "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", @@ -4686,6 +6182,35 @@ } } }, + "requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -4702,6 +6227,15 @@ "signal-exit": "3.0.2" } }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -4711,6 +6245,75 @@ "glob": "7.1.2" } }, + "rollup": { + "version": "0.25.8", + "resolved": "http://registry.npmjs.org/rollup/-/rollup-0.25.8.tgz", + "integrity": "sha1-v2zoO4dRDRY0Ru6qV37WpvxYNeA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "minimist": "1.2.0", + "source-map-support": "0.3.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "rollup-plugin-babel": { + "version": "2.4.0", + "resolved": "http://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-2.4.0.tgz", + "integrity": "sha1-gqfhZPopFCq9B7UmucfALV6jO70=", + "dev": true, + "requires": { + "babel-core": "6.26.3", + "babel-plugin-transform-es2015-classes": "6.24.1", + "object-assign": "4.1.1", + "rollup-pluginutils": "1.5.2" + } + }, + "rollup-plugin-includepaths": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-includepaths/-/rollup-plugin-includepaths-0.1.2.tgz", + "integrity": "sha1-VuhDgwmmK5QYnkIIqA+a/BUf3WA=", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "http://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -4746,18 +6349,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sb-promisify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sb-promisify/-/sb-promisify-2.0.2.tgz", - "integrity": "sha1-QnelR1RIiqlnXYhuNU24lMm9yYE=" - }, - "sb-scandir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-2.0.0.tgz", - "integrity": "sha512-SKbyMJB0DUt9OgN4tP2RBcn9OsR26DEpe+nwaDkQTNcrJSJI0FlLhXhBpTd/YEnlQ2GdLrbszSNekGLw4rweOQ==", + "saslprep": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz", + "integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw==", + "optional": true, "requires": { - "p-map": "1.2.0", - "sb-promisify": "2.0.2" + "sparse-bitfield": "3.0.3" } }, "semver": { @@ -4765,10 +6363,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } }, "shebang-command": { "version": "1.2.0", @@ -4785,30 +6387,23 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shell-escape": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", - "integrity": "sha1-aP0CXrBJC09WegJ/C/IkgLX4QTM=" + "shieldman": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shieldman/-/shieldman-1.2.0.tgz", + "integrity": "sha1-XaOXMpG1OSvEginLbXhD73M3+lc=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, - "simple-concat": { + "slash": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" - }, - "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "requires": { - "decompress-response": "3.3.0", - "once": "1.4.0", - "simple-concat": "1.0.0" - } + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true }, "slice-ansi": { "version": "1.0.0", @@ -4819,29 +6414,94 @@ "is-fullwidth-code-point": "2.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz", + "integrity": "sha1-gmdLhacbC+dsPnQW0V6fUlLrO+A=", + "dev": true }, - "ssh2": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.5.5.tgz", - "integrity": "sha1-x3gezS7OcwSiU89iD6taXCK7IjU=", + "source-map-support": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz", + "integrity": "sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8=", + "dev": true, "requires": { - "ssh2-streams": "0.1.20" + "source-map": "0.1.32" + }, + "dependencies": { + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } } }, - "ssh2-streams": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.1.20.tgz", - "integrity": "sha1-URGNFUVV31Rp7h9n4M8efoosDjo=", + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, "requires": { - "asn1": "0.2.3", - "semver": "5.5.0", - "streamsearch": "0.1.2" + "memory-pager": "1.1.0" + } + }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.1" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.1" } }, + "spdx-license-ids": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", @@ -4858,16 +6518,6 @@ "tweetnacl": "0.14.5" } }, - "stat-mode": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.1.0.tgz", - "integrity": "sha1-DPvsOvKeYFkSLS9+/D6WqCA1Vqk=" - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, "string-to-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", @@ -4881,11 +6531,23 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" } }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.12.0", + "function-bind": "1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -4894,10 +6556,23 @@ "safe-buffer": "5.1.2" } }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dev": true, + "requires": { + "character-entities-html4": "1.1.2", + "character-entities-legacy": "1.1.2", + "is-alphanumerical": "1.0.2", + "is-hexadecimal": "1.0.2" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "3.0.0" }, @@ -4905,37 +6580,49 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true } } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, - "sudo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sudo/-/sudo-1.0.3.tgz", - "integrity": "sha1-zPKGaRIPi3T4K4Rt/38clRIO/yA=", + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, "requires": { - "inpath": "1.0.2", - "pidof": "1.0.2", - "read": "1.0.7" + "get-stdin": "4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "sync-exec": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.5.0.tgz", - "integrity": "sha1-P3JY5KW6FyRTgZCfpqb2z1BuFmE=", - "dev": true - }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -4950,54 +6637,100 @@ "string-width": "2.1.1" } }, - "tar-fs": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.2.tgz", - "integrity": "sha512-LdknWjPEiZC1nOBwhv0JBzfJBGPJar08dZg2rwZe0ZTLQoRGEzgrl7vF3qUEkCHpI/wN9e7RyCuDhMsJUCLPPQ==", + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tap-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-1.3.2.tgz", + "integrity": "sha1-EgxQiciMPIp5PvKIhn3jIeGPjCI=", + "dev": true, "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.3", - "tar-stream": "1.6.1" + "events-to-array": "1.1.2", + "inherits": "2.0.3", + "js-yaml": "3.11.0", + "readable-stream": "2.3.6" + } + }, + "tape": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.5.1.tgz", + "integrity": "sha1-K7PqGb3J9SJSF7P5fL95hsxMbow=", + "dev": true, + "requires": { + "deep-equal": "1.0.1", + "defined": "1.0.0", + "function-bind": "1.1.1", + "glob": "7.0.6", + "has": "1.0.3", + "inherits": "2.0.3", + "minimist": "1.2.0", + "object-inspect": "1.1.0", + "resolve": "1.1.7", + "resumer": "0.0.0", + "string.prototype.trim": "1.1.2", + "through": "2.3.8" }, "dependencies": { - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "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" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, - "tar-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", - "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", - "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.1.0", - "end-of-stream": "1.4.1", - "fs-constants": "1.0.0", - "readable-stream": "2.3.6", - "to-buffer": "1.1.1", - "xtend": "4.0.1" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "the-argv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", + "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -5007,10 +6740,11 @@ "os-tmpdir": "1.0.2" } }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true }, "tough-cookie": { "version": "2.3.4", @@ -5021,10 +6755,35 @@ "punycode": "1.4.1" } }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", + "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", + "dev": true + }, "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.2" } @@ -5062,12 +6821,117 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", + "dev": true + }, + "unist-util-remove-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", + "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "dev": true, + "requires": { + "unist-util-visit": "1.4.0" + } + }, + "unist-util-visit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", + "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "2.0.1" + } + }, + "unist-util-visit-parents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", + "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "dev": true, + "requires": { + "unist-util-is": "2.1.2" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "0.7.0", + "resolved": "http://registry.npmjs.org/update-notifier/-/update-notifier-0.7.0.tgz", + "integrity": "sha1-FDxFMzg9CJCO9wVGIGOV/htauwY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "boxen": "0.5.1", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5079,6 +6943,16 @@ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "3.0.2", + "spdx-expression-parse": "3.0.0" + } + }, "varium": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/varium/-/varium-1.0.1.tgz", @@ -5111,6 +6985,18 @@ "extsprintf": "1.3.0" } }, + "vfile": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz", + "integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c=", + "dev": true + }, + "vfile-location": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz", + "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==", + "dev": true + }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", @@ -5119,39 +7005,13 @@ "isexe": "2.0.0" } }, - "which-pm-runs": { + "widest-line": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "2.1.1" - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "resolved": "http://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -5176,7 +7036,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5185,10 +7045,17 @@ } } }, + "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=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write": { "version": "0.2.1", @@ -5199,73 +7066,66 @@ "mkdirp": "0.5.1" } }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "write-json-file": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/write-json-file/-/write-json-file-1.2.0.tgz", + "integrity": "sha1-LV3+lqvDyIkFfJOXGqQAXvtUgTQ=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "sort-keys": "1.1.2", + "write-file-atomic": "1.3.4" + } + }, + "write-pkg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-1.0.0.tgz", + "integrity": "sha1-rriqnU14jh2JPfsIVJaLVDqRn1c=", + "dev": true, + "requires": { + "write-json-file": "1.2.0" + } }, - "xutil": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/xutil/-/xutil-0.0.9.tgz", - "integrity": "sha1-78/l6NxEeK1tRjwj8MTAgSQJc+w=", + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", "dev": true }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" - }, - "dependencies": { - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } - } } } } diff --git a/package.json b/package.json index 163093e..fdd54fc 100644 --- a/package.json +++ b/package.json @@ -5,24 +5,35 @@ "A client designed to provide a framework for interactions with FileMaker Server Admin Tools.", "main": "index.js", "scripts": { - "test": "nyc _mocha --recursive ./tests --timeout=30000 && npm run coverage", + "test": + "nyc _mocha --recursive ./tests --timeout=30000 && npm run coverage", "coverage": "nyc report --reporter=text-lcov | coveralls", - "generate-readme": - "node_modules/.bin/readme package.json --tests > README.md", - "generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.js --verbose", + "generate-docs": + "mos && node_modules/.bin/jsdoc --configure .jsdoc.js --verbose", "examples": "node ./examples" }, "repository": { "type": "git", "url": "git+https://Luidog@github.com/Luidog/fms-admin-client.git" }, - "keywords": ["FileMaker", "marpat", "node", "admin", "cli"], + "keywords": [ + "FileMaker", + "marpat", + "node", + "admin", + "api", + "migration", + "cli" + ], "author": "Lui de la Parra", "license": "MIT", "bugs": { "url": "https://github.com/Luidog/fms-admin-client/issues" }, "homepage": "https://github.com/Luidog/fms-admin-client#readme", + "mos": { + "plugins": ["execute"] + }, "devDependencies": { "chai": "^4.1.2", "chai-as-promised": "^7.1.1", @@ -33,20 +44,25 @@ "eslint-config-google": "^0.9.1", "eslint-config-prettier": "^2.7.0", "eslint-plugin-prettier": "^2.3.1", - "fs-extra": "^6.0.1", - "jsdocs": "^1.0.0", + "jsdoc": "^3.5.5", "minami": "^1.2.3", "mocha": "^5.0.4", "mocha-lcov-reporter": "^1.3.0", + "mos": "^1.3.1", + "mos-plugin-dependencies": "^2.2.2", + "mos-plugin-execute": "^1.0.2", + "mos-plugin-installation": "^1.2.2", + "mos-plugin-license": "^1.2.2", + "mos-plugin-snippet": "^2.1.3", "nyc": "^11.8.0", - "package-json-to-readme": "^2.1.1", "prettier": "^1.8.2", "varium": "^1.0.1" }, "dependencies": { + "fs-extra": "^6.0.1", "child-process-promise": "^2.2.1", "lodash": "^4.17.10", - "marpat": "^1.17.1", + "marpat": "^1.19.0", "string-to-stream": "^1.1.1" } } diff --git a/src/admin.model.js b/src/admin.model.js index 5ad6cd8..cdd5865 100644 --- a/src/admin.model.js +++ b/src/admin.model.js @@ -1,11 +1,10 @@ 'use strict'; -const _ = require('lodash'); -const path = require('path'); -const fse = require('fs-extra'); - const { Document } = require('marpat'); const { CLI } = require('./cli.model'); +const { Migration } = require('./migration.model'); +const { API } = require('./cli.model'); +/** /** * @class Admin @@ -22,6 +21,14 @@ class Admin extends Document { cli: { type: CLI, required: true + }, + api:{ + type: API, + required: true + }, + migration: { + type: Migration, + required: true } }); } @@ -31,74 +38,13 @@ class Admin extends Document { * @return {null} The preInit hook does not return anything */ preInit(data) { + this.migration = Migration.create({ path: data.path }); + this.api = API.create() this.cli = CLI.create({ user: data.user, password: data.password }); } - /** - * @method clone - * @memberof Admin - * @public - * @param {String} database The database to backup. - * @description Performs a backup of the database passed to it then copies this file to a temp - * directory where the file can be easily streamed to a destination. - * @see {@method CLI#backup} - * @return {Object} returns an object with the path to the cloned version of the database - * - */ - clone(database) { - return this._getPaths().then(paths => - this.cli - .backup(database, paths.fmPath) - .then(response => - fse - .createReadStream(path.join(paths.tempPath, database)) - .pipe(fse.createWriteStream(path.join('./tmp', database))) - ) - .then(() => - Object.assign({ - path: path.join('./tmp', database) - }) - ) - ); - } - /** - * @method list - * @memberof Admin - * @public - * @description returns an array of the currently active items based on the parameter - * sent to it. - * @param {String} item the item to list. This can be schedules, files, or clients. - * @return {Array} items current open or active items - */ - list(item) { - return this.cli.list(item); - } - /** - * @method _getPaths - * @memberof Admin - * @private - * @description Gets the working paths for the current server based on a list of files currently - * host. There is a lot more work to do here yet. The two keys returned are tempPath and fmPath. - * The fmPath contains the volume and filemac or filewin encodings. the tempPath contains the path - * for fse to stream the file. - * @return {Object} paths a filemaker path and a temp path. - */ - _getPaths() { - return this.cli.list('files').then(files => { - fse.ensureDir('./tmp'); - let pathArray = files[0].split(path.sep); - let server = - _.findIndex(pathArray, path => path === 'FileMaker Server') + 1; - let paths = { - fmPath: path.join(...pathArray.slice(0, server), 'backup', path.sep), - tempPath: path.join( - '/', - ...pathArray.slice(2, server), - 'backup', - 'Databases' - ) - }; - return paths; - }); + + preSave() { + return this.migration.save(); } } diff --git a/src/api.model.js b/src/api.model.js new file mode 100644 index 0000000..125c6a5 --- /dev/null +++ b/src/api.model.js @@ -0,0 +1,23 @@ +'use strict'; + +const { EmbeddedDocument } = require('marpat'); + +/** + * @class CLI + * @classdesc The class containing methods for interacting with the fmsadmin + * CLI. + */ + +class API extends EmbeddedDocument { + constructor() { + super(); + this.schema({ + }); + } +} +/** + * @module CLI + */ +module.exports = { + API +}; diff --git a/src/cli.model.js b/src/cli.model.js index 6eef6bc..6d94f90 100644 --- a/src/cli.model.js +++ b/src/cli.model.js @@ -1,6 +1,7 @@ 'use strict'; const { EmbeddedDocument } = require('marpat'); +const fse = require('fs-extra'); const { spawn, exec } = require('child-process-promise'); const stringStream = require('string-to-stream'); const { Credentials } = require('./credentials.model'); @@ -53,7 +54,9 @@ class CLI extends EmbeddedDocument { } backup(database, destination) { - return this.run(`BACKUP ${database} -k0 --dest "${destination}"`); + return fse + .ensureDir(destination) + .then(() => this.run(`BACKUP ${database} -k0 --dest "${destination}"`)); } start(service) { diff --git a/src/migration.model.js b/src/migration.model.js new file mode 100644 index 0000000..732e2e5 --- /dev/null +++ b/src/migration.model.js @@ -0,0 +1,77 @@ +'use strict'; + +const { Document } = require('marpat'); +const { spawn, exec } = require('child_process'); +const _ = require('lodash'); +/** + * @class Credentials + * @classdesc The class used to authenticate with into the FileMaker API. + */ +class Migration extends Document { + constructor() { + super(); + this.schema({ + /** A string containing the time the token token was issued. + * @member Credentials#password + * @type String + */ + path: { + type: String, + required: true + }, + session: { + type: Array, + default: [] + }, + process: { + type: Number + } + }); + } + + execute(commands) { + this.session = []; + let commandArray = _.flatten( + _.compact( + _.values( + _.mapValues(commands, (value, key, object) => { + if (value === true) { + return [`-${key}`]; + } else if (value !== false) { + return [`-${key}`, value]; + } + return; + }) + ) + ) + ); + let thisProcess = spawn(this.path, commandArray); + + thisProcess.stdout.on('data', data => this.log(data)); + thisProcess.stderr.on('error', error => this.log(error)); + thisProcess.on('close', () => this.end()); + this.process = thisProcess.pid; + + return this.save(); + } + + log(data) { + this.session.push(data.toString()); + return this.save(); + } + + end() { + this.process = undefined; + return this.save(); + } + + stop() { + process.kill(this.process); + } +} +/** + * @module Credentials + */ +module.exports = { + Migration +}; diff --git a/tests/env.manifest b/tests/env.manifest index 852cf23..933b072 100644 --- a/tests/env.manifest +++ b/tests/env.manifest @@ -1,4 +1,8 @@ # Admin CLI Configuration -USERNAME: String -PASSWORD: String +USERNAME : String +PASSWORD : String + +# Admin Migration Configuration + +MIGRATION_TOOL_PATH : String diff --git a/tests/storage.test.js b/tests/storage.test.js index f4dd838..866ed1d 100644 --- a/tests/storage.test.js +++ b/tests/storage.test.js @@ -16,7 +16,7 @@ const { Admin } = require('../index.js'); chai.use(chaiAsPromised); -describe('Storage', () => { +describe('Storage Capabilities', () => { let database, client; before(done => {