From aaffa30af2981960cbf61026227da0c127ad79a6 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 10:05:06 +0200
Subject: [PATCH 01/88] Enable token check by default
---
src/include/config.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/include/config.js b/src/include/config.js
index 523383a..8300e1d 100755
--- a/src/include/config.js
+++ b/src/include/config.js
@@ -40,7 +40,7 @@ const defaults = {
_perPage: 100,
_parallel: 10,
_verbose: false,
- _checkToken: false,
+ _checkToken: true,
_skipDescriptionParsing: false
};
From c40c8492993330dd2e508cab8f09a45df6f1b884 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 10:05:47 +0200
Subject: [PATCH 02/88] Add more verbose error messages to frame creation from
json. closes #56
---
src/gtt-sync.js | 6 +++++-
src/models/frame.js | 13 +++++++++++++
src/models/frameCollection.js | 3 ++-
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/gtt-sync.js b/src/gtt-sync.js
index 20ba534..026b93a 100755
--- a/src/gtt-sync.js
+++ b/src/gtt-sync.js
@@ -4,6 +4,7 @@ const program = require('commander');
const Config = require('./include/file-config');
const Cli = require('./include/cli');
const Tasks = require('./include/tasks');
+const Owner = require('./models/owner');
program
.option('-p --proxy ', 'use a proxy server with the given url')
@@ -16,10 +17,13 @@ Cli.verbose = program.verbose;
let config = new Config(process.cwd())
.set('proxy', program.proxy)
.set('_checkToken', program.check_token),
- tasks = new Tasks(config);
+ tasks = new Tasks(config),
+ owner = new Owner(config);
tasks.syncInit()
.then(() => tasks.sync.frames.length === 0 ? process.exit(0) : null)
+ .then(() => owner.authorized())
+ .catch(e => Cli.x(`Invalid access token!`, e))
.then(() => {
Cli.bar(`${Cli.fetch} Fetching or creating issues & merge requests...`, tasks.sync.frames.length);
return tasks.syncResolve(Cli.advance);
diff --git a/src/models/frame.js b/src/models/frame.js
index 0d37532..6a698b9 100755
--- a/src/models/frame.js
+++ b/src/models/frame.js
@@ -34,6 +34,7 @@ class frame {
frame._stop = json.stop;
frame.notes = json.notes;
frame.timezone = json.timezone;
+ frame.validate();
return frame;
}
@@ -56,6 +57,18 @@ class frame {
return this;
}
+ validate() {
+ moment.suppressDeprecationWarnings = true;
+
+ if(!moment(this._start).isValid())
+ throw `Error: Start date is not in a valid ISO date format!`;
+
+ if(!moment(this._stop).isValid())
+ throw `Error: Stop date is not in a valid ISO date format!`;
+
+ moment.suppressDeprecationWarnings = false;
+ }
+
_getCurrentDate() {
if(this.timezone)
return moment().tz(this.timezone).format();
diff --git a/src/models/frameCollection.js b/src/models/frameCollection.js
index 96f19f2..1bffeb9 100755
--- a/src/models/frameCollection.js
+++ b/src/models/frameCollection.js
@@ -12,7 +12,8 @@ class frameCollection extends Base {
try {
return Frame.fromFile(this.config, Fs.join(this.config.frameDir, file));
} catch (e) {
- return false;
+ console.log(e);
+ throw `Error parsing frame file: ${file}`
}
})
.filter(frame => frame);
From c3b3bc6369b20e95d37ab93cf547652631c956ca Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 10:47:54 +0200
Subject: [PATCH 03/88] Remove check_token parameter. Rework dump mechanic to
write the dump every time it's updated.
---
src/gtt-report.js | 20 ++++++++++++--------
src/gtt-sync.js | 4 +---
src/include/config.js | 5 ++++-
src/include/file-config.js | 10 ++++++++++
src/models/base.js | 8 +++-----
src/output/dump.js | 32 ++++++++++++++++----------------
6 files changed, 46 insertions(+), 33 deletions(-)
diff --git a/src/gtt-report.js b/src/gtt-report.js
index 5d9b21c..c56efb4 100755
--- a/src/gtt-report.js
+++ b/src/gtt-report.js
@@ -57,7 +57,6 @@ program
.option('--user_columns', 'include user columns in the report')
.option('--quiet', 'only output report')
.option('--verbose', 'show verbose output')
- .option('--check_token', 'check the access token')
.option('--show_without_times', 'show issues/merge requests without time records')
.option('-p --proxy ', 'use a proxy server with the given url')
.option('--from_dump ', 'instead of querying gitlab, use data from the given dump file')
@@ -78,6 +77,13 @@ if (program.from_dump && fs.existsSync(program.from_dump)) {
if (data._dump) config.dump = data._dump;
}
+// if writing a dump, set config accordingly
+if (program.output === "dump") {
+ config.on("dump-updated", () => {
+ new Output['dump'](config);
+ });
+}
+
// overwrite config with args and opts
config
.set('project', cli.project())
@@ -110,22 +116,21 @@ config
.set('type', program.type)
.set('subgroups', program.subgroups)
.set('_verbose', program.verbose)
- .set('_checkToken', program.check_token)
.set('_createDump', program.output === 'dump');
// date shortcuts
-if(program.today)
+if (program.today)
config
.set('from', moment().startOf('day'))
.set('to', moment().endOf('day'));
-if(program.this_week)
+if (program.this_week)
config
.set('from', moment().startOf('week'))
.set('to', moment().endOf('week'));
-if(program.this_month)
+if (program.this_month)
config
.set('from', moment().startOf('month'))
- .set('to', moment().endOf('month'));
+ .set('to', moment().endOf('month'));
Cli.quiet = config.get('quiet');
Cli.verbose = config.get('_verbose');
@@ -193,7 +198,7 @@ new Promise(resolve => {
reports.push(report);
report.getProject()
.then(() => done())
- .catch(e => Cli.x(`Project not found or no access rights "${projectLabels}". Run again with --check_token to see if your access token is invalid!`, e));
+ .catch(e => Cli.x(`Project not found or no access rights "${projectLabels}".`, e));
break;
case 'group':
@@ -222,7 +227,6 @@ new Promise(resolve => {
// get members and user columns
.then(() => new Promise(resolve => {
if (!config.get('userColumns')) return resolve();
-
reports
.forEach((report, done) => {
report.project.members()
diff --git a/src/gtt-sync.js b/src/gtt-sync.js
index 026b93a..a0b1df1 100755
--- a/src/gtt-sync.js
+++ b/src/gtt-sync.js
@@ -9,14 +9,12 @@ const Owner = require('./models/owner');
program
.option('-p --proxy ', 'use a proxy server with the given url')
.option('--verbose', 'show verbose output')
- .option('--check_token', 'check the access token')
.parse(process.argv);
Cli.verbose = program.verbose;
let config = new Config(process.cwd())
- .set('proxy', program.proxy)
- .set('_checkToken', program.check_token),
+ .set('proxy', program.proxy);
tasks = new Tasks(config),
owner = new Owner(config);
diff --git a/src/include/config.js b/src/include/config.js
index 8300e1d..326f9b5 100755
--- a/src/include/config.js
+++ b/src/include/config.js
@@ -2,6 +2,7 @@ const moment = require('moment');
const _ = require('underscore');
const Time = require('./../models/time');
+const EventEmitter = require('events');
const dates = ['from', 'to'];
const objectsWithDefaults = ['timeFormat', 'columns'];
@@ -47,11 +48,13 @@ const defaults = {
/**
* basic config
*/
-class config {
+class config extends EventEmitter {
/**
* construct
*/
constructor() {
+ super();
+
this.data = _.extend({}, defaults);
}
diff --git a/src/include/file-config.js b/src/include/file-config.js
index d171ae1..dd09dcb 100755
--- a/src/include/file-config.js
+++ b/src/include/file-config.js
@@ -20,6 +20,7 @@ class fileConfig extends config {
this.assertGlobalConfig();
this.workDir = workDir;
this.data = Object.assign(this.data, this.localExists() ? this.parseLocal() : this.parseGlobal());
+ this._dump = {};
this.cache = {
get: this._cacheGet,
set: this._cacheSet,
@@ -132,6 +133,15 @@ class fileConfig extends config {
get local() {
return Fs.join(this.workDir, this.localConfigFile);
}
+
+ setDump(key, value) {
+ this._dump[key] = value;
+ this.emit('dump-updated');
+ }
+
+ getDump(key) {
+ return this._dump[key];
+ }
}
module.exports = fileConfig;
diff --git a/src/models/base.js b/src/models/base.js
index 0897a5b..a7ca006 100755
--- a/src/models/base.js
+++ b/src/models/base.js
@@ -147,12 +147,10 @@ class base {
* @param key
*/
setDump(response, key) {
- if (!this.config._dump) this.config._dump = {};
-
- this.config._dump[key] = {
+ this.config.setDump(key, {
headers: response.headers,
body: response.body
- };
+ });
}
/**
@@ -161,7 +159,7 @@ class base {
* @returns {Promise}
*/
getDump(key) {
- return new Promise(r => r(this.config.dump[key]));
+ return new Promise(r => r(this.config.getDump(key)));
}
/**
diff --git a/src/output/dump.js b/src/output/dump.js
index ba6c9ca..cbc732f 100644
--- a/src/output/dump.js
+++ b/src/output/dump.js
@@ -1,29 +1,29 @@
-const Base = require('./base');
-const Report = require('../models/report');
+const fs = require('fs');
+const Config = require('../include/config');
-class dump extends Base {
+class dump {
constructor(config, report) {
- super(config, report);
+ let configCopy = new Config();
+ configCopy.data = Object.assign({}, config.data);
+ configCopy._dump = config._dump;
- config.set('url', null, true);
- config.set('token', null, true);
- config.set('_createDump', false);
- config.workDir = null;
- config.cache = null;
+ configCopy.set('url', null, true);
+ configCopy.set('token', null, true);
+ configCopy.set('_createDump', false);
+ configCopy.workDir = null;
+ configCopy.cache = null;
- this.write(JSON.stringify(config));
+ fs.writeFileSync(configCopy.get('file'), JSON.stringify(configCopy));
}
- makeStats() {
+ make() {
}
- makeIssues() {
+ toStdOut() {
}
- makeMergeRequests() {
- }
-
- makeRecords() {
+ toFile(file, resolve) {
+ if (resolve) resolve();
}
}
From dbb55a8f17a82dbbd3ae7f2b4c63652ee4d1831c Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 10:48:31 +0200
Subject: [PATCH 04/88] Release 1.7.8
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index e29419c..10de876 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.7
+ENV GTT_VERSION 1.7.8
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 392bb09..7df8451 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.7",
+ "version": "1.7.8",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 580afc9..68c6081 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.7';
+const version = '1.7.8';
const program = require('commander');
program
From bdb5db40ef914da01f391179e02291c0302c2009 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 11:49:49 +0200
Subject: [PATCH 05/88] Fix bug introduced with frame validation. closes #57
---
src/models/frame.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/models/frame.js b/src/models/frame.js
index 6a698b9..8ebaa09 100755
--- a/src/models/frame.js
+++ b/src/models/frame.js
@@ -63,7 +63,7 @@ class frame {
if(!moment(this._start).isValid())
throw `Error: Start date is not in a valid ISO date format!`;
- if(!moment(this._stop).isValid())
+ if(this._stop && !moment(this._stop).isValid())
throw `Error: Stop date is not in a valid ISO date format!`;
moment.suppressDeprecationWarnings = false;
From 36e6c932295c23138ce5211b80e09e761b8d0081 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 8 Jun 2018 11:50:19 +0200
Subject: [PATCH 06/88] Release 1.7.9
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 10de876..c1d299c 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.8
+ENV GTT_VERSION 1.7.9
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 7df8451..ceeddcc 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.8",
+ "version": "1.7.9",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 68c6081..24d9250 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.8';
+const version = '1.7.9';
const program = require('commander');
program
From a665dbfb1e83bf79cbf05b9efdf750e1341e9a99 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Sun, 10 Jun 2018 12:08:16 +0200
Subject: [PATCH 07/88] Upgrade mocha to 5.* to fix potential security
vulnerability
---
package-lock.json | 174 +++++++++++-----------------------------------
package.json | 2 +-
yarn.lock | 149 ++++++++++-----------------------------
3 files changed, 80 insertions(+), 245 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c4356f6..57bae6b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.5",
+ "version": "1.7.9",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -170,12 +170,6 @@
"concat-map": "0.0.1"
}
},
- "browser-stdout": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
- "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
- "dev": true
- },
"build": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz",
@@ -1052,18 +1046,6 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
- "graceful-readlink": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
- "dev": true
- },
- "growl": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
- "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
- "dev": true
- },
"handlebars": {
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
@@ -1434,12 +1416,6 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
- "json3": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
- "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
- "dev": true
- },
"jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
@@ -1575,40 +1551,6 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
},
- "lodash._baseassign": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
- "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
- "dev": true,
- "requires": {
- "lodash._basecopy": "3.0.1",
- "lodash.keys": "3.1.2"
- }
- },
- "lodash._basecopy": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
- "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
- "dev": true
- },
- "lodash._basecreate": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz",
- "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=",
- "dev": true
- },
- "lodash._getnative": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
- "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
- "dev": true
- },
- "lodash._isiterateecall": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
- "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
- "dev": true
- },
"lodash.assignin": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
@@ -1619,17 +1561,6 @@
"resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
"integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
},
- "lodash.create": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
- "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
- "dev": true,
- "requires": {
- "lodash._baseassign": "3.2.0",
- "lodash._basecreate": "3.0.3",
- "lodash._isiterateecall": "3.0.9"
- }
- },
"lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
@@ -1656,29 +1587,6 @@
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
- "lodash.isarguments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
- "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
- "dev": true
- },
- "lodash.isarray": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
- "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
- "dev": true
- },
- "lodash.keys": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
- "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
- "dev": true,
- "requires": {
- "lodash._getnative": "3.9.1",
- "lodash.isarguments": "3.1.0",
- "lodash.isarray": "3.0.4"
- }
- },
"lodash.map": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
@@ -1877,56 +1785,56 @@
}
},
"mocha": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
- "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
+ "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
"dev": true,
"requires": {
- "browser-stdout": "1.3.0",
- "commander": "2.9.0",
- "debug": "2.6.8",
- "diff": "3.2.0",
+ "browser-stdout": "1.3.1",
+ "commander": "2.15.1",
+ "debug": "3.1.0",
+ "diff": "3.5.0",
"escape-string-regexp": "1.0.5",
- "glob": "7.1.1",
- "growl": "1.9.2",
+ "glob": "7.1.2",
+ "growl": "1.10.5",
"he": "1.1.1",
- "json3": "3.3.2",
- "lodash.create": "3.1.1",
+ "minimatch": "3.0.4",
"mkdirp": "0.5.1",
- "supports-color": "3.1.2"
+ "supports-color": "5.4.0"
},
"dependencies": {
- "commander": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
- "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
- "dev": true,
- "requires": {
- "graceful-readlink": "1.0.1"
- }
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
},
"debug": {
- "version": "2.6.8",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
- "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "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"
}
},
- "glob": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
- "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
- "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"
- }
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
},
"mkdirp": {
"version": "0.5.1",
@@ -1938,12 +1846,12 @@
}
},
"supports-color": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
- "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
- "has-flag": "1.0.0"
+ "has-flag": "3.0.0"
}
}
}
diff --git a/package.json b/package.json
index ceeddcc..0a78dc3 100755
--- a/package.json
+++ b/package.json
@@ -53,7 +53,7 @@
"chai": "^4.1.2",
"coveralls": "^2.13.1",
"istanbul": "^0.4.5",
- "mocha": "^3.5.0",
+ "mocha": "^5",
"mocha-lcov-reporter": "^1.3.0",
"sinon": "^3.2.1"
}
diff --git a/yarn.lock b/yarn.lock
index d79b40b..21ff3a7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -169,9 +169,9 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-browser-stdout@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+browser-stdout@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
buffer-from@^1.0.0:
version "1.0.0"
@@ -326,13 +326,7 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
-commander@2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
- dependencies:
- graceful-readlink ">= 1.0.0"
-
-commander@^2.2.0, commander@^2.9.0:
+commander@2.15.1, commander@^2.2.0, commander@^2.9.0:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
@@ -428,18 +422,18 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
-debug@2.6.8:
- version "2.6.8"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
- dependencies:
- ms "2.0.0"
-
debug@2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
+debug@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ dependencies:
+ ms "2.0.0"
+
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -462,11 +456,7 @@ delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-diff@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
-
-diff@^3.1.0:
+diff@3.5.0, diff@^3.1.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
@@ -733,14 +723,14 @@ github-api-emojis@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/github-api-emojis/-/github-api-emojis-1.0.2.tgz#c3664164b915fc65c047c416d5d4a73a637e45a9"
-glob@7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+glob@7.1.2, glob@^7.0.5:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
- minimatch "^3.0.2"
+ minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
@@ -754,28 +744,13 @@ glob@^5.0.15:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.5:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-"graceful-readlink@>= 1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
-
-growl@1.9.2:
- version "1.9.2"
- resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
+growl@1.10.5:
+ version "1.10.5"
+ resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
handlebars@^4.0.1, handlebars@^4.0.6:
version "4.0.11"
@@ -817,6 +792,10 @@ has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
hash-sum@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
@@ -1065,10 +1044,6 @@ json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-json3@3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
jsonfile@^2.1.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
@@ -1155,29 +1130,6 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._basecreate@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
lodash.assignin@^4.0.9:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
@@ -1186,14 +1138,6 @@ lodash.bind@^4.1.4:
version "4.2.1"
resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
-lodash.create@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._basecreate "^3.0.0"
- lodash._isiterateecall "^3.0.0"
-
lodash.defaults@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -1214,22 +1158,6 @@ lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
lodash.map@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
@@ -1369,7 +1297,7 @@ mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4:
+"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
dependencies:
@@ -1403,22 +1331,21 @@ mocha-lcov-reporter@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/mocha-lcov-reporter/-/mocha-lcov-reporter-1.3.0.tgz#469bdef4f8afc9a116056f079df6182d0afb0384"
-mocha@^3.5.0:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
+mocha@^5:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
dependencies:
- browser-stdout "1.3.0"
- commander "2.9.0"
- debug "2.6.8"
- diff "3.2.0"
+ browser-stdout "1.3.1"
+ commander "2.15.1"
+ debug "3.1.0"
+ diff "3.5.0"
escape-string-regexp "1.0.5"
- glob "7.1.1"
- growl "1.9.2"
+ glob "7.1.2"
+ growl "1.10.5"
he "1.1.1"
- json3 "3.3.2"
- lodash.create "3.1.1"
+ minimatch "3.0.4"
mkdirp "0.5.1"
- supports-color "3.1.2"
+ supports-color "5.4.0"
moment-timezone@^0.5.16:
version "0.5.17"
@@ -2088,11 +2015,11 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
-supports-color@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+supports-color@5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
dependencies:
- has-flag "^1.0.0"
+ has-flag "^3.0.0"
supports-color@^2.0.0:
version "2.0.0"
From c3d93bc628bc2af2b03dcf1c4abe92f68f8a3aa2 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Thu, 14 Jun 2018 17:35:45 +0200
Subject: [PATCH 08/88] Add months parsing
---
readme.md | 8 ++++++++
src/include/config.js | 2 ++
src/models/time.js | 21 ++++++++++++++++-----
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/readme.md b/readme.md
index 5779cf6..aaa6b11 100755
--- a/readme.md
+++ b/readme.md
@@ -552,6 +552,14 @@ showWithoutTimes: true
# defaults to 8
hoursPerDay: 8
+# Days per week
+# defaults to 5
+daysPerWeek: 5
+
+# Weeks per month
+# defaults to 4
+weeksPerMonth: 4
+
# Include the given columns in the issue table
# See --issue_columns option for more information
# defaults to iid, title, spent, total_estimate
diff --git a/src/include/config.js b/src/include/config.js
index 326f9b5..62f82c1 100755
--- a/src/include/config.js
+++ b/src/include/config.js
@@ -20,6 +20,8 @@ const defaults = {
closed: false,
milestone: false,
hoursPerDay: 8,
+ daysPerWeek: 5,
+ weeksPerMonth: 4,
issueColumns: ['iid', 'title', 'spent', 'total_estimate'],
mergeRequestColumns: ['iid', 'title', 'spent', 'total_estimate'],
recordColumns: ['user', 'date', 'type', 'iid', 'time'],
diff --git a/src/models/time.js b/src/models/time.js
index 8b3689a..494dc5c 100755
--- a/src/models/time.js
+++ b/src/models/time.js
@@ -2,8 +2,8 @@ const _ = require('underscore');
const moment = require('moment');
const defaultTimeFormat = '[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]';
-const mappings = ['complete', 'sign', 'weeks', 'days', 'hours', 'minutes', 'seconds'];
-const regex = /^(?:([-])\s*)?(?:(\d+)w\s*)?(?:(\d+)d\s*)?(?:(\d+)h\s*)?(?:(\d+)m\s*)?(?:(\d+)s\s*)?$/;
+const mappings = ['complete', 'sign', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];
+const regex = /^(?:([-])\s*)?(?:(\d+)mo\s*)?(?:(\d+)w\s*)?(?:(\d+)d\s*)?(?:(\d+)h\s*)?(?:(\d+)m\s*)?(?:(\d+)s\s*)?$/;
const conditionalRegex = /(\[\%([^\>\]]*)\>([^\]]*)\])/ig;
const roundedRegex = /(\[\%([^\>\]]*)\:([^\]]*)\])/ig;
const conditionalSimpleRegex = /([0-9]*)\>(.*)/ig;
@@ -29,7 +29,7 @@ class time {
this._date = date;
this.parent = parent;
this.config = config;
- this.seconds = time.parse(timeString, this._hoursPerDay);
+ this.seconds = time.parse(timeString, this._hoursPerDay, this._daysPerWeek, this._weeksPerMonth);
}
/*
@@ -71,13 +71,23 @@ class time {
return this.config && this.config.get('hoursPerDay') ? parseInt(this.config.get('hoursPerDay')) : 8;
}
+ get _daysPerWeek() {
+ return this.config && this.config.get('daysPerWeek') ? parseInt(this.config.get('daysPerWeek')) : 5;
+ }
+
+ get _weeksPerMonth() {
+ return this.config && this.config.get('weeksPerMonth') ? parseInt(this.config.get('weeksPerMonth')) : 4;
+ }
+
/**
* parse human readable to seconds
* @param string
* @param hoursPerDay
+ * @param daysPerWeek
+ * @param weeksPerMonth
* @returns {*}
*/
- static parse(string, hoursPerDay = 8) {
+ static parse(string, hoursPerDay = 8, daysPerWeek = 5, weeksPerMonth = 4) {
let match, parsed;
if ((match = regex.exec(string)) === null) return false;
@@ -87,7 +97,8 @@ class time {
+ (parseInt(parsed.minutes) * 60)
+ (parseInt(parsed.hours) * 60 * 60)
+ (parseInt(parsed.days) * hoursPerDay * 60 * 60)
- + (parseInt(parsed.weeks) * 5 * hoursPerDay * 60 * 60));
+ + (parseInt(parsed.weeks) * daysPerWeek * hoursPerDay * 60 * 60)
+ + (parseInt(parsed.months) * weeksPerMonth * daysPerWeek * hoursPerDay * 60 * 60));
}
/**
From e85c305ec12b9e65873223b3abebad21da936d5b Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Thu, 14 Jun 2018 17:36:14 +0200
Subject: [PATCH 09/88] Release 1.7.10
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index c1d299c..09319aa 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.9
+ENV GTT_VERSION 1.7.10
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 0a78dc3..c825e8d 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.9",
+ "version": "1.7.10",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 24d9250..b9db96a 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.9';
+const version = '1.7.10';
const program = require('commander');
program
From 4864ad77810c465a135bcacdb21cb8d89fd3c03d Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 15 Jun 2018 10:54:16 +0200
Subject: [PATCH 10/88] Add donation link to readme
---
readme.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/readme.md b/readme.md
index aaa6b11..a78375d 100755
--- a/readme.md
+++ b/readme.md
@@ -6,16 +6,16 @@
[](https://coveralls.io/github/kriskbx/gitlab-time-tracker)
[](https://www.npmjs.com/package/gitlab-time-tracker)
-> A command line interface for GitLabs time tracking feature.
+> A fully featured command line interface for GitLab's time tracking feature. gtt monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab.
-gtt monitors the time you spent on an issue or merge request locally and syncs it to GitLab.
-It also allows you to create reports in various formats from time tracking data
-stored on GitLab.
+**Please support the development of this free software by [donating or sharing](#buy-me-a-beer)!**
| monitor your time | ... and get reports |
| --- | --- |
|  |  |
+
+
## contents
* [requirements](#requirements)
From 8c31dcdfa89a2f357240cb8a6767740c0807835d Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 22 Jun 2018 11:58:51 +0200
Subject: [PATCH 11/88] Fix parsing of id on command line
---
src/include/cli.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/include/cli.js b/src/include/cli.js
index 697dbcb..3f9ac22 100755
--- a/src/include/cli.js
+++ b/src/include/cli.js
@@ -241,9 +241,12 @@ class cli {
if (this.data.project) return this.data.project;
- let projects = _.uniq(_.filter(this.args, arg => !Number.isNaN(new Number(arg))));
+ let projects = _.uniq(_.filter(this.args, arg => isNaN(new Number(arg))));
this.args = _.difference(this.args, projects);
+ if(projects.length == 0)
+ return null;
+
return this.data.project = projects;
}
From 35b8f91a25bcdc35a247c6da086024ed2a63cdee Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 22 Jun 2018 11:59:42 +0200
Subject: [PATCH 12/88] Release 1.7.11
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 09319aa..6acaf56 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.10
+ENV GTT_VERSION 1.7.11
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index c825e8d..2c9096a 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.10",
+ "version": "1.7.11",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index b9db96a..e06522e 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.10';
+const version = '1.7.11';
const program = require('commander');
program
From aea0ab4bbfe98d490cdf0eab810bba4b920c8b71 Mon Sep 17 00:00:00 2001
From: Lasse Schuirmann
Date: Thu, 12 Jul 2018 12:28:06 +0200
Subject: [PATCH 13/88] Remove null (breaks stuff)
---
src/models/hasTimes.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/models/hasTimes.js b/src/models/hasTimes.js
index 297290a..f618f61 100755
--- a/src/models/hasTimes.js
+++ b/src/models/hasTimes.js
@@ -127,7 +127,7 @@ class hasTimes extends Base {
let difference = this.data.time_stats.total_time_spent - totalTimeSpent,
note = Object.assign({noteable_type: this._typeSingular}, this.data);
- times.unshift(new Time(Time.toHumanReadable(difference, null, this.config.get('hoursPerDay')), note, this, this.config));
+ times.unshift(new Time(Time.toHumanReadable(difference, this.config.get('hoursPerDay')), note, this, this.config));
resolve();
}));
From 518c749b7d7a565d19e56019a37a647a1d3f5e9b Mon Sep 17 00:00:00 2001
From: Pablo Hinojosa
Date: Thu, 12 Jul 2018 17:14:09 +0200
Subject: [PATCH 14/88] fix readme command
---
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.md b/readme.md
index a78375d..e735df5 100755
--- a/readme.md
+++ b/readme.md
@@ -127,7 +127,7 @@ docker run \
I highly recommend creating an alias and adding it to your `bashrc`:
```shell
-echo "alias gtt='docker run --rm -it -v ~:/root kriskbx/gitlab-time-tracker'" >>~/.bash_rc
+echo "alias gtt='docker run --rm -it -v ~:/root kriskbx/gitlab-time-tracker'" >>~/.bashrc
```
Now you can simply write `gtt` instead of the bulky Docker command before. Try it out: `gtt --help`
From e53587ace6ea15c6e15e88a70be9e52eedf4afe7 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Wed, 1 Aug 2018 18:58:42 +0200
Subject: [PATCH 15/88] Add null to Time constructor
---
src/models/hasTimes.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/models/hasTimes.js b/src/models/hasTimes.js
index f618f61..416e77c 100755
--- a/src/models/hasTimes.js
+++ b/src/models/hasTimes.js
@@ -127,7 +127,7 @@ class hasTimes extends Base {
let difference = this.data.time_stats.total_time_spent - totalTimeSpent,
note = Object.assign({noteable_type: this._typeSingular}, this.data);
- times.unshift(new Time(Time.toHumanReadable(difference, this.config.get('hoursPerDay')), note, this, this.config));
+ times.unshift(new Time(Time.toHumanReadable(difference, this.config.get('hoursPerDay')), null, note, this, this.config));
resolve();
}));
From 28f164e4abcf8c80744a8b20c9600bd99f83c9fa Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Thu, 2 Aug 2018 13:13:18 +0200
Subject: [PATCH 16/88] Release 1.7.12
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 6acaf56..52563f2 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.11
+ENV GTT_VERSION 1.7.12
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 2c9096a..728590a 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.11",
+ "version": "1.7.12",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index e06522e..ed3ccce 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.11';
+const version = '1.7.12';
const program = require('commander');
program
From 486ce10499bf0f61552323a8ec18d140eca163e8 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Thu, 2 Aug 2018 13:40:17 +0200
Subject: [PATCH 17/88] Remove unused dependency, update packages
---
package-lock.json | 1626 ++++++++++++---------------------------------
package.json | 15 +-
yarn.lock | 747 ++-------------------
3 files changed, 487 insertions(+), 1901 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 57bae6b..3fd1d51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.9",
+ "version": "1.7.12",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -24,31 +24,28 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"requires": {
- "co": "4.6.0",
- "fast-deep-equal": "1.1.0",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1"
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
}
},
"align-text": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
"requires": {
- "kind-of": "3.2.2",
- "longest": "1.0.1",
- "repeat-string": "1.6.1"
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
}
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
},
"ansi-styles": {
"version": "2.2.1",
@@ -61,8 +58,8 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
"integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
"requires": {
- "underscore": "1.7.0",
- "underscore.string": "2.4.0"
+ "underscore": "~1.7.0",
+ "underscore.string": "~2.4.0"
},
"dependencies": {
"underscore": {
@@ -72,11 +69,6 @@
}
}
},
- "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="
- },
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@@ -94,11 +86,11 @@
"dev": true
},
"async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"requires": {
- "lodash": "4.17.10"
+ "lodash": "^4.17.10"
}
},
"asynckit": {
@@ -126,39 +118,21 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
- "barbe": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/barbe/-/barbe-2.2.1.tgz",
- "integrity": "sha1-wHSRNEm7qjz8rUWJXoa+OdltFUQ=",
- "requires": {
- "regex-escape": "3.4.8"
- }
- },
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"optional": true,
"requires": {
- "tweetnacl": "0.14.5"
+ "tweetnacl": "^0.14.3"
}
},
- "bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
- },
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
},
"brace-expansion": {
@@ -166,7 +140,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
@@ -176,16 +150,16 @@
"integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=",
"dev": true,
"requires": {
- "cssmin": "0.3.2",
- "jsmin": "1.0.1",
- "jxLoader": "0.1.1",
- "moo-server": "1.3.0",
- "promised-io": "0.3.5",
- "timespan": "2.3.0",
- "uglify-js": "1.3.5",
- "walker": "1.0.7",
- "winston": "2.1.1",
- "wrench": "1.3.9"
+ "cssmin": "0.3.x",
+ "jsmin": "1.x",
+ "jxLoader": "*",
+ "moo-server": "*",
+ "promised-io": "*",
+ "timespan": "2.x",
+ "uglify-js": "1.x",
+ "walker": "1.x",
+ "winston": "*",
+ "wrench": "1.3.x"
},
"dependencies": {
"uglify-js": {
@@ -196,32 +170,11 @@
}
}
},
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
- },
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
},
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "requires": {
- "camelcase": "2.1.1",
- "map-obj": "1.0.1"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
- }
- }
- },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -231,10 +184,11 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
"optional": true,
"requires": {
- "align-text": "0.1.4",
- "lazy-cache": "1.0.4"
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
}
},
"chai": {
@@ -243,12 +197,12 @@
"integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
"dev": true,
"requires": {
- "assertion-error": "1.1.0",
- "check-error": "1.0.2",
- "deep-eql": "3.0.1",
- "get-func-name": "2.0.0",
- "pathval": "1.1.0",
- "type-detect": "4.0.8"
+ "assertion-error": "^1.0.1",
+ "check-error": "^1.0.1",
+ "deep-eql": "^3.0.0",
+ "get-func-name": "^2.0.0",
+ "pathval": "^1.0.0",
+ "type-detect": "^4.0.0"
}
},
"chalk": {
@@ -257,11 +211,11 @@
"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"
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -276,7 +230,7 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
}
}
@@ -287,35 +241,12 @@
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
"dev": true
},
- "cheerio": {
- "version": "0.22.0",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
- "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
- "requires": {
- "css-select": "1.2.0",
- "dom-serializer": "0.1.0",
- "entities": "1.1.1",
- "htmlparser2": "3.9.2",
- "lodash.assignin": "4.2.0",
- "lodash.bind": "4.2.1",
- "lodash.defaults": "4.2.0",
- "lodash.filter": "4.6.0",
- "lodash.flatten": "4.4.0",
- "lodash.foreach": "4.5.0",
- "lodash.map": "4.6.0",
- "lodash.merge": "4.6.1",
- "lodash.pick": "4.4.0",
- "lodash.reduce": "4.6.0",
- "lodash.reject": "4.6.0",
- "lodash.some": "4.6.0"
- }
- },
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"requires": {
- "restore-cursor": "2.0.0"
+ "restore-cursor": "^2.0.0"
}
},
"cli-table": {
@@ -337,10 +268,11 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
"optional": true,
"requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
"wordwrap": "0.0.2"
},
"dependencies": {
@@ -348,6 +280,7 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
"optional": true
}
}
@@ -357,28 +290,23 @@
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
- "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="
- },
"colors": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
- "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg=="
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.1.tgz",
+ "integrity": "sha512-jg/vxRmv430jixZrC+La5kMbUWqIg32/JsYNZb94+JEmzceYbWKTsv1OuTp+7EaqiaWRR2tPcykibwCRgclIsw=="
},
"combined-stream": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"requires": {
- "delayed-stream": "1.0.0"
+ "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=="
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
+ "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew=="
},
"concat-map": {
"version": "0.0.1",
@@ -390,9 +318,9 @@
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
}
},
"core-util-is": {
@@ -419,7 +347,7 @@
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
- "sprintf-js": "1.0.3"
+ "sprintf-js": "~1.0.2"
}
},
"assert-plus": {
@@ -440,7 +368,7 @@
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"caseless": {
@@ -455,7 +383,7 @@
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"dev": true,
"requires": {
- "boom": "2.10.1"
+ "boom": "2.x.x"
}
},
"esprima": {
@@ -470,9 +398,9 @@
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"dev": true,
"requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.6",
- "mime-types": "2.1.18"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.12"
}
},
"har-validator": {
@@ -481,10 +409,18 @@
"integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "commander": "2.15.1",
- "is-my-json-valid": "2.17.2",
- "pinkie-promise": "2.0.1"
+ "chalk": "^1.1.1",
+ "commander": "^2.9.0",
+ "is-my-json-valid": "^2.12.4",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "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
+ }
}
},
"hawk": {
@@ -493,10 +429,10 @@
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"dev": true,
"requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
}
},
"hoek": {
@@ -511,9 +447,9 @@
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"dev": true,
"requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
}
},
"js-yaml": {
@@ -522,8 +458,8 @@
"integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
"dev": true,
"requires": {
- "argparse": "1.0.10",
- "esprima": "2.7.3"
+ "argparse": "^1.0.7",
+ "esprima": "^2.6.0"
}
},
"minimist": {
@@ -544,26 +480,26 @@
"integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
"dev": true,
"requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.7.0",
- "caseless": "0.11.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
- "qs": "6.3.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.4.3",
- "uuid": "3.2.1"
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "caseless": "~0.11.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.1.1",
+ "har-validator": "~2.0.6",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "oauth-sign": "~0.8.1",
+ "qs": "~6.3.0",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "~0.4.1",
+ "uuid": "^3.0.0"
}
},
"sntp": {
@@ -572,7 +508,7 @@
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"dev": true,
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"tunnel-agent": {
@@ -583,22 +519,12 @@
}
}
},
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "requires": {
- "lru-cache": "4.1.3",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- }
- },
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"requires": {
- "boom": "5.2.0"
+ "boom": "5.x.x"
},
"dependencies": {
"boom": {
@@ -606,27 +532,11 @@
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
}
}
},
- "css-select": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
- "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
- "requires": {
- "boolbase": "1.0.0",
- "css-what": "2.1.0",
- "domutils": "1.5.1",
- "nth-check": "1.0.1"
- }
- },
- "css-what": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
- "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0="
- },
"cssmin": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz",
@@ -638,14 +548,6 @@
"resolved": "https://registry.npmjs.org/csv-string/-/csv-string-2.3.3.tgz",
"integrity": "sha1-4IAePG+S8Jg2KVBXdK9m3TCQ6eU="
},
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "requires": {
- "array-find-index": "1.0.2"
- }
- },
"cycle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
@@ -656,7 +558,7 @@
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
}
},
"debug": {
@@ -670,7 +572,9 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true,
+ "optional": true
},
"deep-eql": {
"version": "3.0.1",
@@ -678,7 +582,7 @@
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
"dev": true,
"requires": {
- "type-detect": "4.0.8"
+ "type-detect": "^4.0.0"
}
},
"deep-equal": {
@@ -703,44 +607,6 @@
"integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
"dev": true
},
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
- "requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
- },
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
- }
- }
- },
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
- },
- "domhandler": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
- "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
- "requires": {
- "domelementtype": "1.3.0"
- }
- },
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "requires": {
- "dom-serializer": "0.1.0",
- "domelementtype": "1.3.0"
- }
- },
"duplexer": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
@@ -752,30 +618,7 @@
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
- "jsbn": "0.1.1"
- }
- },
- "emojer": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/emojer/-/emojer-1.1.3.tgz",
- "integrity": "sha512-vSdgAKVC7xrDcsBF6tbxIM0Ehe4cNsAM6x/tFru0OCLStl6oE/J0NLZh9GakDWKXcQJ8pbwiXqyBpPVOYZ5Hbw==",
- "requires": {
- "barbe": "2.2.1",
- "match-all": "1.2.4",
- "regex-emoji": "2.0.6"
- }
- },
- "entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
- },
- "error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
- "requires": {
- "is-arrayish": "0.2.1"
+ "jsbn": "~0.1.0"
}
},
"es6-promise": {
@@ -795,11 +638,11 @@
"integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
"dev": true,
"requires": {
- "esprima": "2.7.3",
- "estraverse": "1.9.3",
- "esutils": "2.0.2",
- "optionator": "0.8.2",
- "source-map": "0.2.0"
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.2.0"
},
"dependencies": {
"esprima": {
@@ -815,7 +658,7 @@
"dev": true,
"optional": true,
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
}
}
@@ -837,20 +680,6 @@
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- }
- },
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
@@ -861,7 +690,7 @@
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"requires": {
- "is-extendable": "0.1.1"
+ "is-extendable": "^0.1.0"
}
},
"extract-zip": {
@@ -906,20 +735,15 @@
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"requires": {
- "pend": "1.2.0"
+ "pend": "~1.2.0"
}
},
- "file-url": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/file-url/-/file-url-2.0.2.tgz",
- "integrity": "sha1-6VF4TXkJUSfTcTApqwY/QIGMoq4="
- },
"find": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/find/-/find-0.1.7.tgz",
"integrity": "sha1-yGyHrxqxjyIrvjjeyGy8dg0Wpvs=",
"requires": {
- "traverse-chain": "0.1.0"
+ "traverse-chain": "~0.1.0"
}
},
"find-in-files": {
@@ -927,17 +751,8 @@
"resolved": "https://registry.npmjs.org/find-in-files/-/find-in-files-0.4.0.tgz",
"integrity": "sha1-nNS2ejRZxUOB9Wzi8daTFq17sBE=",
"requires": {
- "find": "0.1.7",
- "q": "1.5.1"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
+ "find": "^0.1.5",
+ "q": "^1.0.1"
}
},
"forever-agent": {
@@ -950,9 +765,9 @@
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"requires": {
- "asynckit": "0.4.0",
+ "asynckit": "^0.4.0",
"combined-stream": "1.0.6",
- "mime-types": "2.1.18"
+ "mime-types": "^2.1.12"
}
},
"formatio": {
@@ -961,7 +776,7 @@
"integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",
"dev": true,
"requires": {
- "samsam": "1.3.0"
+ "samsam": "1.x"
}
},
"fs-extra": {
@@ -969,9 +784,9 @@
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
"integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
"requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "2.4.0",
- "klaw": "1.3.1"
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
}
},
"fs.realpath": {
@@ -991,54 +806,34 @@
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"dev": true,
"requires": {
- "is-property": "1.0.2"
+ "is-property": "^1.0.0"
}
},
- "get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
- },
"get-func-name": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
- },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
}
},
- "github-api-emojis": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/github-api-emojis/-/github-api-emojis-1.0.2.tgz",
- "integrity": "sha512-BqrsX1H2Zmn+icjoYWKqphPyopF6VPRQ8nT8VTjloZ+ti5NrEXUDigr+2s38aG5Bz4uwpL70psv0cGPrjW7/Sw=="
- },
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"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"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"graceful-fs": {
@@ -1050,17 +845,19 @@
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
"integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
"requires": {
- "async": "1.5.2",
- "optimist": "0.6.1",
- "source-map": "0.4.4",
- "uglify-js": "2.8.29"
+ "async": "^1.4.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.4.4",
+ "uglify-js": "^2.6"
},
"dependencies": {
"async": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
}
}
},
@@ -1074,8 +871,8 @@
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"requires": {
- "ajv": "5.5.2",
- "har-schema": "2.0.0"
+ "ajv": "^5.1.0",
+ "har-schema": "^2.0.0"
}
},
"has-ansi": {
@@ -1084,7 +881,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -1111,8 +908,8 @@
"resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
"integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
"requires": {
- "is-stream": "1.1.0",
- "pinkie-promise": "2.0.1"
+ "is-stream": "^1.0.1",
+ "pinkie-promise": "^2.0.0"
}
},
"hashids": {
@@ -1125,10 +922,10 @@
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
"requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.1",
- "sntp": "2.1.0"
+ "boom": "4.x.x",
+ "cryptiles": "3.x.x",
+ "hoek": "4.x.x",
+ "sntp": "2.x.x"
}
},
"he": {
@@ -1147,40 +944,14 @@
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
},
- "hosted-git-info": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw=="
- },
- "html-pdf": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/html-pdf/-/html-pdf-2.2.0.tgz",
- "integrity": "sha1-S8+Rwky1YOR6o/rP0DPg4b8kG5E=",
- "requires": {
- "phantomjs-prebuilt": "2.1.16"
- }
- },
- "htmlparser2": {
- "version": "3.9.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
- "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
- "requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.4.2",
- "domutils": "1.5.1",
- "entities": "1.1.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
- }
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
}
},
"i": {
@@ -1188,21 +959,13 @@
"resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
"integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0="
},
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "requires": {
- "repeating": "2.0.1"
- }
- },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -1210,47 +973,17 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
- },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "requires": {
- "builtin-modules": "1.1.1"
- }
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
},
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "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="
- },
"is-my-ip-valid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
@@ -1263,11 +996,11 @@
"integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
"dev": true,
"requires": {
- "generate-function": "2.0.0",
- "generate-object-property": "1.2.0",
- "is-my-ip-valid": "1.0.0",
- "jsonpointer": "4.0.1",
- "xtend": "4.0.1"
+ "generate-function": "^2.0.0",
+ "generate-object-property": "^1.1.0",
+ "is-my-ip-valid": "^1.0.0",
+ "jsonpointer": "^4.0.0",
+ "xtend": "^4.0.0"
}
},
"is-property": {
@@ -1286,11 +1019,6 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
- },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -1312,20 +1040,20 @@
"integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
"dev": true,
"requires": {
- "abbrev": "1.0.9",
- "async": "1.5.2",
- "escodegen": "1.8.1",
- "esprima": "2.7.3",
- "glob": "5.0.15",
- "handlebars": "4.0.11",
- "js-yaml": "3.11.0",
- "mkdirp": "0.5.0",
- "nopt": "3.0.6",
- "once": "1.4.0",
- "resolve": "1.1.7",
- "supports-color": "3.2.3",
- "which": "1.3.0",
- "wordwrap": "1.0.0"
+ "abbrev": "1.0.x",
+ "async": "1.x",
+ "escodegen": "1.8.x",
+ "esprima": "2.7.x",
+ "glob": "^5.0.15",
+ "handlebars": "^4.0.1",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "once": "1.x",
+ "resolve": "1.1.x",
+ "supports-color": "^3.1.0",
+ "which": "^1.1.1",
+ "wordwrap": "^1.0.0"
},
"dependencies": {
"async": {
@@ -1346,11 +1074,11 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"supports-color": {
@@ -1359,7 +1087,7 @@
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"dev": true,
"requires": {
- "has-flag": "1.0.0"
+ "has-flag": "^1.0.0"
}
},
"wordwrap": {
@@ -1375,8 +1103,8 @@
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
"requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
"dependencies": {
"argparse": {
@@ -1384,7 +1112,7 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
- "sprintf-js": "1.0.3"
+ "sprintf-js": "~1.0.2"
}
}
}
@@ -1421,7 +1149,7 @@
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"requires": {
- "graceful-fs": "4.1.11"
+ "graceful-fs": "^4.1.6"
}
},
"jsonpointer": {
@@ -1453,10 +1181,10 @@
"integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=",
"dev": true,
"requires": {
- "js-yaml": "0.3.7",
- "moo-server": "1.3.0",
- "promised-io": "0.3.5",
- "walker": "1.0.7"
+ "js-yaml": "0.3.x",
+ "moo-server": "1.3.x",
+ "promised-io": "*",
+ "walker": "1.x"
},
"dependencies": {
"js-yaml": {
@@ -1476,8 +1204,9 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "is-buffer": "^1.1.5"
}
},
"klaw": {
@@ -1485,23 +1214,16 @@
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
"requires": {
- "graceful-fs": "4.1.11"
+ "graceful-fs": "^4.1.9"
}
},
"lazy-cache": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
"optional": true
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "1.0.0"
- }
- },
"lcov-parse": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz",
@@ -1514,36 +1236,8 @@
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "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"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
- }
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
}
},
"lodash": {
@@ -1551,72 +1245,12 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
},
- "lodash.assignin": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
- "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
- },
- "lodash.bind": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
- "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
- },
- "lodash.defaults": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
- },
- "lodash.filter": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
- "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
- },
- "lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
- },
- "lodash.foreach": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
- "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
- },
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
- "lodash.map": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
- "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
- },
- "lodash.merge": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
- "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
- },
- "lodash.pick": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
- "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
- },
- "lodash.reduce": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
- "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
- },
- "lodash.reject": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
- "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
- },
- "lodash.some": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
- "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
- },
"log-driver": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz",
@@ -1632,30 +1266,8 @@
"longest": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
- },
- "loophole": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/loophole/-/loophole-1.1.0.tgz",
- "integrity": "sha1-N5Sf6kU7YlasxyXDIM4MWn9wor0="
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "requires": {
- "currently-unhandled": "0.4.1",
- "signal-exit": "3.0.2"
- }
- },
- "lru-cache": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
- "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
- }
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
},
"makeerror": {
"version": "1.0.11",
@@ -1663,28 +1275,30 @@
"integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
"dev": true,
"requires": {
- "tmpl": "1.0.4"
+ "tmpl": "1.0.x"
}
},
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
- },
"markdown-pdf": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/markdown-pdf/-/markdown-pdf-8.1.1.tgz",
"integrity": "sha512-lpRyiNptdwArH6bG6Y8X13G5Qr/usTTDXxTp7zjhwxJ+cQO7Z6A1T265ZiN6PVDLzRNxxtcquQCIOpTC0U1NFg==",
"requires": {
- "commander": "2.15.1",
- "duplexer": "0.1.1",
- "extend": "3.0.1",
- "highlight.js": "9.12.0",
- "phantomjs-prebuilt": "2.1.16",
- "remarkable": "1.7.1",
- "stream-from-to": "1.4.3",
- "through2": "2.0.3",
+ "commander": "^2.2.0",
+ "duplexer": "^0.1.1",
+ "extend": "^3.0.0",
+ "highlight.js": "^9.1.0",
+ "phantomjs-prebuilt": "^2.1.3",
+ "remarkable": "^1.7.1",
+ "stream-from-to": "^1.4.2",
+ "through2": "^2.0.0",
"tmp": "0.0.33"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
+ }
}
},
"markdown-table": {
@@ -1692,59 +1306,6 @@
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
"integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw=="
},
- "match-all": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.4.tgz",
- "integrity": "sha512-V/fHK8ld4mxVLn7vOlyp8wH6EqVD4+wLUrdtbuFNzttgpZ/JAjaSVLqVd66dlKCdGcN1zEyEkERTremiaTve9g=="
- },
- "mdpdf": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mdpdf/-/mdpdf-1.6.0.tgz",
- "integrity": "sha512-XcVsOlEJhnCvoNu2EzPQCtlfYWHpTgt2d8fvpu7zVFMz1tFsDdvqYesd8hVJpCOczXbkpWsEwzz9FdAVe9h5rg==",
- "requires": {
- "bluebird": "3.5.1",
- "cheerio": "0.22.0",
- "file-url": "2.0.2",
- "handlebars": "4.0.11",
- "html-pdf": "2.2.0",
- "loophole": "1.1.0",
- "meow": "3.7.0",
- "showdown": "1.8.6",
- "showdown-emoji": "1.0.5"
- }
- },
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
- "requires": {
- "mimic-fn": "1.2.0"
- }
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "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": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
- }
- }
- },
"mime-db": {
"version": "1.33.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
@@ -1755,7 +1316,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
"requires": {
- "mime-db": "1.33.0"
+ "mime-db": "~1.33.0"
}
},
"mimic-fn": {
@@ -1768,7 +1329,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -1809,6 +1370,12 @@
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
+ "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
+ },
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -1851,7 +1418,7 @@
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
- "has-flag": "3.0.0"
+ "has-flag": "^3.0.0"
}
}
}
@@ -1863,16 +1430,16 @@
"dev": true
},
"moment": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz",
- "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ=="
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
+ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
},
"moment-timezone": {
- "version": "0.5.17",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz",
- "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==",
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.21.tgz",
+ "integrity": "sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A==",
"requires": {
- "moment": "2.22.1"
+ "moment": ">= 2.9.0"
}
},
"moo-server": {
@@ -1908,11 +1475,11 @@
"integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==",
"dev": true,
"requires": {
- "@sinonjs/formatio": "2.0.0",
- "just-extend": "1.1.27",
- "lolex": "2.4.2",
- "path-to-regexp": "1.7.0",
- "text-encoding": "0.6.4"
+ "@sinonjs/formatio": "^2.0.0",
+ "just-extend": "^1.1.27",
+ "lolex": "^2.3.2",
+ "path-to-regexp": "^1.7.0",
+ "text-encoding": "^0.6.4"
}
},
"node-spinner": {
@@ -1920,7 +1487,7 @@
"resolved": "https://registry.npmjs.org/node-spinner/-/node-spinner-0.0.4.tgz",
"integrity": "sha1-TF2tdi+VO9yudOwAD2zqBU7yDI4=",
"requires": {
- "util-extend": "1.0.3"
+ "util-extend": "~1.0.1"
}
},
"nopt": {
@@ -1929,57 +1496,20 @@
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
- "abbrev": "1.0.9"
- }
- },
- "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==",
- "requires": {
- "hosted-git-info": "2.6.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.3"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "requires": {
- "path-key": "2.0.1"
+ "abbrev": "1"
}
},
- "nth-check": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
- "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
- "requires": {
- "boolbase": "1.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
},
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"onetime": {
@@ -1987,7 +1517,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"requires": {
- "mimic-fn": "1.2.0"
+ "mimic-fn": "^1.0.0"
}
},
"open": {
@@ -1999,9 +1529,10 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
"requires": {
- "minimist": "0.0.8",
- "wordwrap": "0.0.3"
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
}
},
"optionator": {
@@ -2010,12 +1541,12 @@
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"dev": true,
"requires": {
- "deep-is": "0.1.3",
- "fast-levenshtein": "2.0.6",
- "levn": "0.3.0",
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2",
- "wordwrap": "1.0.0"
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
},
"dependencies": {
"wordwrap": {
@@ -2026,73 +1557,16 @@
}
}
},
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- }
- },
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
- },
- "p-limit": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
- "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
- "requires": {
- "p-try": "1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "requires": {
- "p-limit": "1.2.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "requires": {
- "error-ex": "1.3.1"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "requires": {
- "pinkie-promise": "2.0.1"
- }
- },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
"path-to-regexp": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
@@ -2110,16 +1584,6 @@
}
}
},
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "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",
@@ -2141,29 +1605,53 @@
"resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
"integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
"requires": {
- "es6-promise": "4.2.4",
- "extract-zip": "1.6.6",
- "fs-extra": "1.0.0",
- "hasha": "2.2.0",
- "kew": "0.7.0",
- "progress": "1.1.8",
- "request": "2.85.0",
- "request-progress": "2.0.1",
- "which": "1.3.0"
+ "es6-promise": "^4.0.3",
+ "extract-zip": "^1.6.5",
+ "fs-extra": "^1.0.0",
+ "hasha": "^2.2.0",
+ "kew": "^0.7.0",
+ "progress": "^1.1.8",
+ "request": "^2.81.0",
+ "request-progress": "^2.0.1",
+ "which": "^1.2.10"
},
"dependencies": {
"progress": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
+ },
+ "request": {
+ "version": "2.85.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
+ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "hawk": "~6.0.2",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "stringstream": "~0.0.5",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ }
}
}
},
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
- },
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
@@ -2174,7 +1662,7 @@
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"requires": {
- "pinkie": "2.0.4"
+ "pinkie": "^2.0.0"
}
},
"pkginfo": {
@@ -2209,19 +1697,21 @@
"resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz",
"integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=",
"requires": {
- "colors": "1.2.5",
- "pkginfo": "0.4.1",
- "read": "1.0.7",
- "revalidator": "0.1.8",
- "utile": "0.3.0",
- "winston": "2.1.1"
+ "colors": "^1.1.2",
+ "pkginfo": "0.x.x",
+ "read": "1.0.x",
+ "revalidator": "0.1.x",
+ "utile": "0.3.x",
+ "winston": "2.1.x"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
+ "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg=="
+ }
}
},
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -2242,26 +1732,7 @@
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
"integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
"requires": {
- "mute-stream": "0.0.7"
- }
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "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=",
- "requires": {
- "find-up": "1.1.2",
- "read-pkg": "1.1.0"
+ "mute-stream": "~0.0.4"
}
},
"read-yaml": {
@@ -2269,8 +1740,8 @@
"resolved": "https://registry.npmjs.org/read-yaml/-/read-yaml-1.1.0.tgz",
"integrity": "sha1-DSc6wMlb6SIw3A1MTE9biWCjNtY=",
"requires": {
- "extend-shallow": "2.0.1",
- "js-yaml": "3.11.0"
+ "extend-shallow": "^2.0.1",
+ "js-yaml": "^3.8.2"
}
},
"readable-stream": {
@@ -2278,83 +1749,55 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "requires": {
- "indent-string": "2.1.0",
- "strip-indent": "1.0.1"
- }
- },
- "regex-emoji": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/regex-emoji/-/regex-emoji-2.0.6.tgz",
- "integrity": "sha1-xdChv1Rqp20kCIIhgVq0p8bxPTM="
- },
- "regex-escape": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.8.tgz",
- "integrity": "sha512-DG0VFPTDwfl+XsuVaM/0RmGJvCpZNB9UG/limzbev50XQ44G4mbOG+0Eh5M7Al9JB68NbP7YeY1KhDzpnX7qSw=="
- },
"remarkable": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.1.tgz",
"integrity": "sha1-qspJchALZqZCpjoQIcpLrBvjv/Y=",
"requires": {
- "argparse": "0.1.16",
- "autolinker": "0.15.3"
+ "argparse": "~0.1.15",
+ "autolinker": "~0.15.0"
}
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "requires": {
- "is-finite": "1.0.2"
- }
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
},
"request": {
- "version": "2.85.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
- "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
- "requires": {
- "aws-sign2": "0.7.0",
- "aws4": "1.7.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.3.2",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.2",
- "safe-buffer": "5.1.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.6.0",
- "uuid": "3.2.1"
+ "version": "2.87.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+ "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
}
},
"request-progress": {
@@ -2362,7 +1805,7 @@
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
"integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
"requires": {
- "throttleit": "1.0.0"
+ "throttleit": "^1.0.0"
}
},
"request-promise-core": {
@@ -2370,7 +1813,7 @@
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
"integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
"requires": {
- "lodash": "4.17.10"
+ "lodash": "^4.13.1"
}
},
"request-promise-native": {
@@ -2379,20 +1822,10 @@
"integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
"requires": {
"request-promise-core": "1.1.1",
- "stealthy-require": "1.1.1",
- "tough-cookie": "2.3.4"
+ "stealthy-require": "^1.1.0",
+ "tough-cookie": ">=2.3.3"
}
},
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
- },
"resolve": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
@@ -2404,8 +1837,8 @@
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"requires": {
- "onetime": "2.0.1",
- "signal-exit": "3.0.2"
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
}
},
"revalidator": {
@@ -2417,9 +1850,10 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
"optional": true,
"requires": {
- "align-text": "0.1.4"
+ "align-text": "^0.1.1"
}
},
"rimraf": {
@@ -2427,7 +1861,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"requires": {
- "glob": "7.1.2"
+ "glob": "^7.0.5"
}
},
"safe-buffer": {
@@ -2441,90 +1875,11 @@
"integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",
"dev": true
},
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
- },
"series-stream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/series-stream/-/series-stream-1.0.1.tgz",
"integrity": "sha1-MRoJxcHVoJFECDLhpICkdADxAF0="
},
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "requires": {
- "shebang-regex": "1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
- },
- "showdown": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.8.6.tgz",
- "integrity": "sha1-kepO47elRIqspoIKTifmkMatdxw=",
- "requires": {
- "yargs": "10.1.2"
- },
- "dependencies": {
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
- "requires": {
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
- "wrap-ansi": "2.1.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "yargs": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
- "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
- "requires": {
- "cliui": "4.1.0",
- "decamelize": "1.2.0",
- "find-up": "2.1.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "8.1.0"
- }
- }
- }
- },
- "showdown-emoji": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/showdown-emoji/-/showdown-emoji-1.0.5.tgz",
- "integrity": "sha512-TWhOhr+15NkaNwvDYvyR8LiT2E+1O+pcQ76zB8zbcibZUIWbj+sP0XIM5JPTcrmM1v3HqLEFtQU9SlOdgmReBA==",
- "requires": {
- "emojer": "1.1.3",
- "github-api-emojis": "1.0.2"
- }
- },
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@@ -2536,17 +1891,17 @@
"integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==",
"dev": true,
"requires": {
- "build": "0.1.4",
- "diff": "3.2.0",
+ "build": "^0.1.4",
+ "diff": "^3.1.0",
"formatio": "1.2.0",
- "lodash.get": "4.4.2",
- "lolex": "2.4.2",
- "native-promise-only": "0.8.1",
- "nise": "1.3.3",
- "path-to-regexp": "1.7.0",
- "samsam": "1.3.0",
+ "lodash.get": "^4.4.2",
+ "lolex": "^2.1.2",
+ "native-promise-only": "^0.8.1",
+ "nise": "^1.0.1",
+ "path-to-regexp": "^1.7.0",
+ "samsam": "^1.1.3",
"text-encoding": "0.6.4",
- "type-detect": "4.0.8"
+ "type-detect": "^4.0.0"
}
},
"sntp": {
@@ -2554,45 +1909,18 @@
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
},
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
"requires": {
- "amdefine": "1.0.1"
- }
- },
- "spdx-correct": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
- "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
- "requires": {
- "spdx-expression-parse": "3.0.0",
- "spdx-license-ids": "3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
- "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="
- },
- "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==",
- "requires": {
- "spdx-exceptions": "2.1.0",
- "spdx-license-ids": "3.0.0"
+ "amdefine": ">=0.0.4"
}
},
- "spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="
- },
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -2603,14 +1931,14 @@
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
"integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
"requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
}
},
"stack-trace": {
@@ -2628,10 +1956,10 @@
"resolved": "https://registry.npmjs.org/stream-from-to/-/stream-from-to-1.4.3.tgz",
"integrity": "sha1-snBHPrxRTnNhVyfF0vdrIplB35Q=",
"requires": {
- "async": "1.5.2",
- "concat-stream": "1.6.0",
- "mkdirp": "0.5.0",
- "series-stream": "1.0.1"
+ "async": "^1.5.2",
+ "concat-stream": "^1.4.7",
+ "mkdirp": "^0.5.0",
+ "series-stream": "^1.0.1"
},
"dependencies": {
"async": {
@@ -2646,16 +1974,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
+ "safe-buffer": "~5.1.0"
}
},
"stringstream": {
@@ -2663,35 +1982,6 @@
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
},
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "3.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "requires": {
- "is-utf8": "0.2.1"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "requires": {
- "get-stdin": "4.0.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -2708,8 +1998,8 @@
"resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz",
"integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=",
"requires": {
- "temp-dir": "1.0.0",
- "uuid": "3.2.1"
+ "temp-dir": "^1.0.0",
+ "uuid": "^3.0.1"
}
},
"text-encoding": {
@@ -2728,8 +2018,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
}
},
"timespan": {
@@ -2743,7 +2033,7 @@
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"requires": {
- "os-tmpdir": "1.0.2"
+ "os-tmpdir": "~1.0.2"
}
},
"tmpl": {
@@ -2757,7 +2047,7 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"requires": {
- "punycode": "1.4.1"
+ "punycode": "^1.4.1"
}
},
"traverse-chain": {
@@ -2765,17 +2055,12 @@
"resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz",
"integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE="
},
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
- },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
@@ -2790,7 +2075,7 @@
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
- "prelude-ls": "1.1.2"
+ "prelude-ls": "~1.1.2"
}
},
"type-detect": {
@@ -2808,17 +2093,19 @@
"version": "2.8.29",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
"optional": true,
"requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
},
"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,
"optional": true
}
}
@@ -2827,12 +2114,13 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
"optional": true
},
"underscore": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz",
- "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A=="
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+ "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
},
"underscore.string": {
"version": "2.4.0",
@@ -2854,12 +2142,12 @@
"resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz",
"integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=",
"requires": {
- "async": "0.9.2",
- "deep-equal": "0.2.2",
- "i": "0.3.6",
- "mkdirp": "0.5.0",
- "ncp": "1.0.1",
- "rimraf": "2.6.2"
+ "async": "~0.9.0",
+ "deep-equal": "~0.2.1",
+ "i": "0.3.x",
+ "mkdirp": "0.x.x",
+ "ncp": "1.0.x",
+ "rimraf": "2.x.x"
},
"dependencies": {
"async": {
@@ -2874,23 +2162,14 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
"integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
},
- "validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
- "requires": {
- "spdx-correct": "3.0.0",
- "spdx-expression-parse": "3.0.0"
- }
- },
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
- "assert-plus": "1.0.0",
+ "assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
+ "extsprintf": "^1.2.0"
}
},
"walker": {
@@ -2899,7 +2178,7 @@
"integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
"dev": true,
"requires": {
- "makeerror": "1.0.11"
+ "makeerror": "1.0.x"
}
},
"which": {
@@ -2907,18 +2186,14 @@
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"requires": {
- "isexe": "2.0.0"
+ "isexe": "^2.0.0"
}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
- },
"window-size": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
"optional": true
},
"winston": {
@@ -2926,13 +2201,13 @@
"resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz",
"integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=",
"requires": {
- "async": "1.0.0",
- "colors": "1.0.3",
- "cycle": "1.0.3",
- "eyes": "0.1.8",
- "isstream": "0.1.2",
- "pkginfo": "0.3.1",
- "stack-trace": "0.0.10"
+ "async": "~1.0.0",
+ "colors": "1.0.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "pkginfo": "0.3.x",
+ "stack-trace": "0.0.x"
},
"dependencies": {
"async": {
@@ -2955,49 +2230,8 @@
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "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"
- }
- }
- }
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
},
"wrappy": {
"version": "1.0.2",
@@ -3015,25 +2249,16 @@
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
},
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- },
"yargs": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
"optional": true,
"requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
"window-size": "0.1.0"
},
"dependencies": {
@@ -3041,24 +2266,17 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
"optional": true
}
}
},
- "yargs-parser": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
- "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
- "requires": {
- "camelcase": "4.1.0"
- }
- },
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"requires": {
- "fd-slicer": "1.0.1"
+ "fd-slicer": "~1.0.1"
}
}
}
diff --git a/package.json b/package.json
index 728590a..1d90f05 100755
--- a/package.json
+++ b/package.json
@@ -24,30 +24,29 @@
"author": "kriskbx",
"license": "GPL-2.0",
"dependencies": {
- "async": "^2.4.0",
+ "async": "^2.6.1",
"camelcase": "^4.1.0",
"cli-cursor": "^2.1.0",
"cli-table": "^0.3.1",
- "colors": "^1.1.2",
- "commander": "^2.9.0",
+ "colors": "^1.3.1",
+ "commander": "^2.16.0",
"csv-string": "^2.3.2",
"find-in-files": "^0.4.0",
"hash-sum": "^1.0.2",
"hashids": "^1.1.1",
"markdown-pdf": "^8.0.0",
"markdown-table": "^1.1.0",
- "mdpdf": "^1.5.1",
- "moment": "^2.19.3",
- "moment-timezone": "^0.5.16",
+ "moment": "^2.22.2",
+ "moment-timezone": "^0.5.21",
"node-spinner": "^0.0.4",
"open": "^0.0.5",
"progress": "^2.0.0",
"prompt": "^1.0.0",
"read-yaml": "^1.1.0",
- "request": "^2.81.0",
+ "request": "^2.87.0",
"request-promise-native": "^1.0.4",
"tempfile": "^2.0.0",
- "underscore": "^1.8.3"
+ "underscore": "^1.9.1"
},
"devDependencies": {
"chai": "^4.1.2",
diff --git a/yarn.lock b/yarn.lock
index 21ff3a7..756a723 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -41,10 +41,6 @@ ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@@ -62,10 +58,6 @@ argparse@~0.1.15:
underscore "~1.7.0"
underscore.string "~2.4.0"
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
-
asn1@~0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
@@ -86,11 +78,11 @@ async@1.x, async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-async@^2.4.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+async@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
dependencies:
- lodash "^4.14.0"
+ lodash "^4.17.10"
async@~0.9.0:
version "0.9.2"
@@ -124,26 +116,12 @@ balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-barbe@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/barbe/-/barbe-2.2.1.tgz#c074913449bbaa3cfcad45895e86be39d96d1544"
- dependencies:
- regex-escape "^3.0.0"
-
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
dependencies:
tweetnacl "^0.14.3"
-bluebird@^3.4.7:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
-
-boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
-
boom@2.x.x:
version "2.10.1"
resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
@@ -192,25 +170,10 @@ build@^0.1.4:
winston "*"
wrench "1.3.x"
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-
camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -255,27 +218,6 @@ check-error@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
-cheerio@^0.22.0:
- version "0.22.0"
- resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
- dependencies:
- css-select "~1.2.0"
- dom-serializer "~0.1.0"
- entities "~1.1.1"
- htmlparser2 "^3.9.1"
- lodash.assignin "^4.0.9"
- lodash.bind "^4.1.4"
- lodash.defaults "^4.0.1"
- lodash.filter "^4.4.0"
- lodash.flatten "^4.2.0"
- lodash.foreach "^4.3.0"
- lodash.map "^4.4.0"
- lodash.merge "^4.4.0"
- lodash.pick "^4.2.1"
- lodash.reduce "^4.4.0"
- lodash.reject "^4.4.0"
- lodash.some "^4.4.0"
-
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -296,22 +238,10 @@ cliui@^2.1.0:
right-align "^0.1.1"
wordwrap "0.0.2"
-cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
-
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
colors@1.0.3, colors@1.0.x:
version "1.0.3"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
@@ -320,6 +250,10 @@ colors@^1.1.2:
version "1.2.5"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc"
+colors@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d"
+
combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
@@ -330,6 +264,10 @@ commander@2.15.1, commander@^2.2.0, commander@^2.9.0:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
+commander@^2.16.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -365,14 +303,6 @@ coveralls@^2.13.1:
minimist "1.2.0"
request "2.79.0"
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- dependencies:
- lru-cache "^4.0.1"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
cryptiles@2.x.x:
version "2.0.5"
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
@@ -385,19 +315,6 @@ cryptiles@3.x.x:
dependencies:
boom "5.x.x"
-css-select@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
- dependencies:
- boolbase "~1.0.0"
- css-what "2.1"
- domutils "1.5.1"
- nth-check "~1.0.1"
-
-css-what@2.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
-
cssmin@0.3.x:
version "0.3.2"
resolved "https://registry.yarnpkg.com/cssmin/-/cssmin-0.3.2.tgz#ddce4c547b510ae0d594a8f1fbf8aaf8e2c5c00d"
@@ -406,12 +323,6 @@ csv-string@^2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/csv-string/-/csv-string-2.3.3.tgz#e0801e3c6f92f0983629505774af66dd3090e9e5"
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- dependencies:
- array-find-index "^1.0.1"
-
cycle@1.0.x:
version "1.0.3"
resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
@@ -434,7 +345,7 @@ debug@3.1.0:
dependencies:
ms "2.0.0"
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+decamelize@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -460,41 +371,6 @@ diff@3.5.0, diff@^3.1.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
-dom-serializer@0, dom-serializer@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
- dependencies:
- domelementtype "~1.1.1"
- entities "~1.1.1"
-
-domelementtype@1, domelementtype@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
-
-domelementtype@~1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
-
-domhandler@^2.3.0:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
- dependencies:
- domelementtype "1"
-
-domutils@1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-domutils@^1.5.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
duplexer@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
@@ -505,24 +381,6 @@ ecc-jsbn@~0.1.1:
dependencies:
jsbn "~0.1.0"
-emojer@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/emojer/-/emojer-1.1.3.tgz#c5e787fca95bb09921cd3409dcdf023153d13b6a"
- dependencies:
- barbe "^2.2.1"
- match-all "^1.1.1"
- regex-emoji "^2.0.1"
-
-entities@^1.1.1, entities@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
-
-error-ex@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
- dependencies:
- is-arrayish "^0.2.1"
-
es6-promise@^4.0.3:
version "4.2.4"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
@@ -558,18 +416,6 @@ esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-execa@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
- dependencies:
- cross-spawn "^5.0.1"
- get-stream "^3.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
@@ -619,10 +465,6 @@ fd-slicer@~1.0.1:
dependencies:
pend "~1.2.0"
-file-url@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/file-url/-/file-url-2.0.2.tgz#e951784d79095127d3713029ab063f40818ca2ae"
-
find-in-files@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/find-in-files/-/find-in-files-0.4.0.tgz#9cd4b67a3459c54381f56ce2f1d69316ad7bb011"
@@ -630,19 +472,6 @@ find-in-files@^0.4.0:
find "^0.1.5"
q "^1.0.1"
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- dependencies:
- locate-path "^2.0.0"
-
find@^0.1.5:
version "0.1.7"
resolved "https://registry.yarnpkg.com/find/-/find-0.1.7.tgz#c86c87af1ab18f222bbe38dec86cbc760d16a6fb"
@@ -697,32 +526,16 @@ generate-object-property@^1.1.0:
dependencies:
is-property "^1.0.0"
-get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
-
get-func-name@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
-
-get-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
dependencies:
assert-plus "^1.0.0"
-github-api-emojis@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/github-api-emojis/-/github-api-emojis-1.0.2.tgz#c3664164b915fc65c047c416d5d4a73a637e45a9"
-
glob@7.1.2, glob@^7.0.5:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -752,7 +565,7 @@ growl@1.10.5:
version "1.10.5"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
-handlebars@^4.0.1, handlebars@^4.0.6:
+handlebars@^4.0.1:
version "4.0.11"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
dependencies:
@@ -845,27 +658,6 @@ hoek@4.x.x:
version "4.2.1"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
-hosted-git-info@^2.1.4:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
-
-html-pdf@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/html-pdf/-/html-pdf-2.2.0.tgz#4bcf91c24cb560e47aa3facfd033e0e1bf241b91"
- optionalDependencies:
- phantomjs-prebuilt "^2.1.4"
-
-htmlparser2@^3.9.1:
- version "3.9.2"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
- dependencies:
- domelementtype "^1.3.0"
- domhandler "^2.3.0"
- domutils "^1.5.1"
- entities "^1.1.1"
- inherits "^2.0.1"
- readable-stream "^2.0.2"
-
http-signature@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
@@ -886,12 +678,6 @@ i@0.3.x:
version "0.3.6"
resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d"
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- dependencies:
- repeating "^2.0.0"
-
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -899,48 +685,18 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
+inherits@2, inherits@^2.0.3, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- dependencies:
- builtin-modules "^1.0.0"
-
is-extendable@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-
is-my-ip-valid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
@@ -959,7 +715,7 @@ is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-is-stream@^1.0.1, is-stream@^1.1.0:
+is-stream@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -967,10 +723,6 @@ is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -1096,12 +848,6 @@ lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- dependencies:
- invert-kv "^1.0.0"
-
lcov-parse@0.0.10:
version "0.0.10"
resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
@@ -1113,76 +859,11 @@ levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-lodash.assignin@^4.0.9:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
-
-lodash.bind@^4.1.4:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
-
-lodash.defaults@^4.0.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
-
-lodash.filter@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
-
-lodash.flatten@^4.2.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
-
-lodash.foreach@^4.3.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
-
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
-lodash.map@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
-
-lodash.merge@^4.4.0:
- version "4.6.1"
- resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
-
-lodash.pick@^4.2.1:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
-
-lodash.reduce@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
-
-lodash.reject@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
-
-lodash.some@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
-
-lodash@^4.13.1, lodash@^4.14.0:
+lodash@^4.13.1, lodash@^4.17.10:
version "4.17.10"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
@@ -1198,34 +879,12 @@ longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-loophole@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/loophole/-/loophole-1.1.0.tgz#37949fea453b6256acc725c320ce0c5a7f70a2bd"
-
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-lru-cache@^4.0.1:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
makeerror@1.0.x:
version "1.0.11"
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
dependencies:
tmpl "1.0.x"
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-
markdown-pdf@^8.0.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/markdown-pdf/-/markdown-pdf-8.1.1.tgz#25c025d4f4f91869ac0f3f6fd7f7d32237669438"
@@ -1244,45 +903,6 @@ markdown-table@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786"
-match-all@^1.1.1:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.4.tgz#1add1d66835fa82158cf62e7854635c3dfb923f0"
-
-mdpdf@^1.5.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mdpdf/-/mdpdf-1.6.0.tgz#a84d4b0e5ca8d0b05dad8494ff207cb3f1140a2b"
- dependencies:
- bluebird "^3.4.7"
- cheerio "^0.22.0"
- file-url "^2.0.2"
- handlebars "^4.0.6"
- html-pdf "^2.1.0"
- loophole "^1.1.0"
- meow "^3.7.0"
- showdown "^1.6.0"
- showdown-emoji "^1.0.3"
-
-mem@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
- dependencies:
- mimic-fn "^1.0.0"
-
-meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
mime-db@~1.33.0:
version "1.33.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
@@ -1307,7 +927,7 @@ minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-minimist@1.2.0, minimist@^1.1.3:
+minimist@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -1347,16 +967,20 @@ mocha@^5:
mkdirp "0.5.1"
supports-color "5.4.0"
-moment-timezone@^0.5.16:
- version "0.5.17"
- resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.17.tgz#3c8fef32051d84c3af174d91dc52977dcb0ad7e5"
+moment-timezone@^0.5.21:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845"
dependencies:
moment ">= 2.9.0"
-"moment@>= 2.9.0", moment@^2.19.3:
+"moment@>= 2.9.0":
version "2.22.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad"
+moment@^2.22.2:
+ version "2.22.2"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
+
moo-server@*, moo-server@1.3.x:
version "1.3.0"
resolved "https://registry.yarnpkg.com/moo-server/-/moo-server-1.3.0.tgz#5dc79569565a10d6efed5439491e69d2392e58f1"
@@ -1399,39 +1023,10 @@ nopt@3.x:
dependencies:
abbrev "1"
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- dependencies:
- hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- dependencies:
- path-key "^2.0.0"
-
-nth-check@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
- dependencies:
- boolbase "~1.0.0"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
oauth-sign@~0.8.1, oauth-sign@~0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-object-assign@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
once@1.x, once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -1466,76 +1061,20 @@ optionator@^0.8.1:
type-check "~0.3.2"
wordwrap "~1.0.0"
-os-locale@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
- dependencies:
- execa "^0.7.0"
- lcid "^1.0.0"
- mem "^1.1.0"
-
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-
-p-limit@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
- dependencies:
- p-try "^1.0.0"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- dependencies:
- p-limit "^1.1.0"
-
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- dependencies:
- error-ex "^1.2.0"
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-path-key@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-
path-to-regexp@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
dependencies:
isarray "0.0.1"
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
pathval@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
@@ -1548,7 +1087,7 @@ performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
-phantomjs-prebuilt@^2.1.3, phantomjs-prebuilt@^2.1.4:
+phantomjs-prebuilt@^2.1.3:
version "2.1.16"
resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef"
dependencies:
@@ -1562,10 +1101,6 @@ phantomjs-prebuilt@^2.1.3, phantomjs-prebuilt@^2.1.4:
request-progress "^2.0.1"
which "^1.2.10"
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
@@ -1615,10 +1150,6 @@ prompt@^1.0.0:
utile "0.3.x"
winston "2.1.x"
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-
punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -1635,21 +1166,6 @@ qs@~6.5.1:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
read-yaml@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/read-yaml/-/read-yaml-1.1.0.tgz#0d273ac0c95be92230dc0d4c4c4f5b8960a336d6"
@@ -1663,7 +1179,7 @@ read@1.0.x:
dependencies:
mute-stream "~0.0.4"
-readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2:
+readable-stream@^2.1.5, readable-stream@^2.2.2:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
@@ -1675,21 +1191,6 @@ readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-regex-emoji@^2.0.1:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/regex-emoji/-/regex-emoji-2.0.6.tgz#c5d0a1bf546aa76d24088221815ab4a7c6f13d33"
-
-regex-escape@^3.0.0:
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/regex-escape/-/regex-escape-3.4.8.tgz#d819372b24fb2659174196ecbecfa69d8612f30d"
-
remarkable@^1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6"
@@ -1701,12 +1202,6 @@ repeat-string@^1.5.2:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- dependencies:
- is-finite "^1.0.0"
-
request-progress@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
@@ -1779,13 +1274,30 @@ request@^2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.1.0"
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+request@^2.87.0:
+ version "2.87.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.6.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.1"
+ forever-agent "~0.6.1"
+ form-data "~2.3.1"
+ har-validator "~5.0.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.17"
+ oauth-sign "~0.8.2"
+ performance-now "^2.1.0"
+ qs "~6.5.1"
+ safe-buffer "^5.1.1"
+ tough-cookie "~2.3.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.1.0"
resolve@1.1.x:
version "1.1.7"
@@ -1822,42 +1334,11 @@ samsam@1.3.0, samsam@1.x, samsam@^1.1.3:
version "1.3.0"
resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50"
-"semver@2 || 3 || 4 || 5":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
-
series-stream@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/series-stream/-/series-stream-1.0.1.tgz#311a09c5c1d5a091440832e1a480a47400f1005d"
-set-blocking@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-
-showdown-emoji@^1.0.3:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/showdown-emoji/-/showdown-emoji-1.0.5.tgz#4351541e04d8e8ced21a01d89cb8126ab58ae640"
- dependencies:
- emojer "^1.1.1"
- github-api-emojis "^1.0.1"
-
-showdown@^1.6.0:
- version "1.8.6"
- resolved "https://registry.yarnpkg.com/showdown/-/showdown-1.8.6.tgz#91ea4ee3b7a5448aaca6820a4e27e690c6ad771c"
- dependencies:
- yargs "^10.0.3"
-
-signal-exit@^3.0.0, signal-exit@^3.0.2:
+signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -1905,28 +1386,6 @@ source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-spdx-correct@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
-
-spdx-expression-parse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
-
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -1962,21 +1421,6 @@ stream-from-to@^1.4.2:
mkdirp "^0.5.0"
series-stream "^1.0.1"
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string-width@^2.0.0, string-width@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -1987,34 +1431,12 @@ stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+strip-ansi@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
dependencies:
ansi-regex "^2.0.0"
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- dependencies:
- get-stdin "^4.0.1"
-
supports-color@5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
@@ -2081,10 +1503,6 @@ traverse-chain@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1"
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -2134,9 +1552,9 @@ underscore.string@~2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"
-underscore@^1.8.3:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.0.tgz#31dbb314cfcc88f169cd3692d9149d81a00a73e4"
+underscore@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
underscore@~1.7.0:
version "1.7.0"
@@ -2165,13 +1583,6 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
-validate-npm-package-license@^3.0.1:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
@@ -2186,11 +1597,7 @@ walker@1.x:
dependencies:
makeerror "1.0.x"
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-
-which@^1.1.1, which@^1.2.10, which@^1.2.9:
+which@^1.1.1, which@^1.2.10:
version "1.3.0"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
dependencies:
@@ -2235,13 +1642,6 @@ wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -2254,37 +1654,6 @@ xtend@^4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
-
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-
-yargs-parser@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
- dependencies:
- camelcase "^4.1.0"
-
-yargs@^10.0.3:
- version "10.1.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
- dependencies:
- cliui "^4.0.0"
- decamelize "^1.1.1"
- find-up "^2.1.0"
- get-caller-file "^1.0.1"
- os-locale "^2.0.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^8.1.0"
-
yargs@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
From c6a01472310253ab8b9dc7fa02c1a9931785cb08 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 10:22:35 +0200
Subject: [PATCH 18/88] Add new icon
---
preview/icon.png | Bin 4014 -> 3665 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/preview/icon.png b/preview/icon.png
index 1b65712b75c84f45322d8511f2ac73d67097376a..1bf4a6dfec5497e771bd56179285a2b5dd5e64bd 100644
GIT binary patch
literal 3665
zcmV-X4zBTuP)>@Muidk;`bU9buyd>A8O6%dP61GIuhK^qHcQzfBT)TG$7v|2-<
ztsvCIYHbS%iZ%tUd`KgpK-(bIE?^5(1uBIC@6Eu%F6{2?&O6O{yR*#9&c}N*Z*~T5
zLb74*J@=g7+;`snIQI;p2uedkLrpjw9;YZuon={rh-eUi0nA)WM125M1E^uZ`BD
zz4zXmt0;?^*AUTDnx_3PS7E8z=LM{3np2s1v6qj#hhS|M%-jrMMOj(d&-?c6d)8~f
zo`P*?Xc!z0hkq%LzSoL+4K}JDGoL1+AF8VQJ0h~Y(%TcT=gyt04Tr-EnRz}Dm3yU}
z$a(kOcd>l=@-C6Rd-ukYB}*`5$Ph2PkrBKPzXRw`f&{v7*ZZ8yymC@AH
zg!}Kmznj>>g9qb<7hdqXJCWC@D9W5bAh0f1;W>c~27@;-^B)1ogx>SAfB$|gT(~f)
z+|8Red){A+d-#>6X;0=d2hJL7C=|LY5{axMqF%`?Y;A3|ALC)ehGqTO<^!x@81Vc3
zsIHd9T-vfxRn-TGNLG8UOIBbF!(-&Mu@SRp&qjH9#@E3fzu!N#s;bI#OV%}5(=-%*Yd0N;J2-go
zAjXUtgK^`=xoHY7!5%(*7@Ib2f~IMhF=K|4(b}aeGyk)^ynJGxK7GzOHNY`g(=?|5
zcpHG?RJhcW$4^{B^zn1x+q%Si1yXYtxg&{0&AM)
zL}uPXM1Chi6YIzeBODH6;J|^dntKIS`ro!~oBbjkJ$ke&9TFSH^6|NsU_I1N
zmc3umH0}L#GSh-JO;f&^AA6{jD^W!XR($p8ii(Pn>9!tIf(-_P!z|0H_j>K`hHSBd
z6&sj&wXW;4Q`wUetYH}Pvbxg^2(RlFGgz^eh{ma^`av?glY*7ys%2U4cn!*}ykZB-
z%)516zu6Jk&f}Di0StEw!t46Q4z|K3o@jfw5gQB!XEXEfy@r&Hyvqb^y{f7=
zCC+W*z{+SfP4hD%s!IeRs~0z`rffhawz*8eim#ocs_Lp({o}x<8m-5VAIJLj>oIoh
zSbOE-(L_5V`(gnr`wX&~G=2K?q|0I1sL?cSXzZws18W$@ULqQmXt98m%@kSh3)J!B
z$7A^L{JY>ngN^PfA31UaWo2c!+nj#7au$L<0(gDaHC8;PB;OBdK+F!($(KbGnF6kq$n2OU#4=`5e6
zkYHs)+%!#ltJC4eO`EE!HAHkF4y<7q1`%ob1m#wCA;HQ3lH%rt9s3fqN30V!;1-G(
z^$Q6$OZ~gtfeqF)&F=xYbavVxZ!-z0EUI$3ffabne1op*
zd#Q8JRRVZxi-9WreJl9G?ZDi{j?cVk`y1fnM}dcv#~}2uT?;f#dtNrOhcWYk9_~D4
zcl`7mv>iE$veoZ92Fp)9fOa#4(pR7K28jL-^s_5D8o8^~56V
zE7u)G!n8az0UQB(J-ZToZBA!eIb)C*FkRP23s?ze`&rHsJrE#n;No-7*pezH-irOV
z%*+Uu-g*%iUtinRMqEgN%Xxb~YZ%5VBKl^5m9e`QH_&qMu>H5MvJ403FUtrvu}v|!
z1E0@VCt&|VM7IT+_ef5rc|zZCy4k_TCj961VQji18`
zh2q*!Z6(^C*;43nGFQO16!IiCN}y)Lc;HY3XpTSB2p%Pbo0CU1T{W~FP-5yU7BGTv
z?)G)CssuQT?CGYM1eCdrzj9(-<&K3YZQj*U^*jTIE{#IA7$*;P
z2dmXZP+AcqeGmivJKAwuEgGh6aMHD_I!?Jn!FKbp64xrBmx)DA4zi5YOKU*i4bwoS
zF%god7&vwbZZdZe=LY&Ra9xZ`hyZ7&{M8jSCzV}rnOhXI0;TaJs^9-kJlszhXy|~I
z=nmrCKm`NC#GiDI)^ItR#y*Gkem6K_m9IMXtRU$*SH5~oC%4z%eunb18#}Hmi@%kJ
zrkP;1F;0DY$sGg+MNnQTk-8QzjDX%9P}^}W8t+sPWhm!Ne_k;k
zPflp)0Cz#)cD&3^eL}F>J6>u7u5SmG5Kw0UngT?Ci*?^c>+qQchidzH<{Mm#6%Ww$6
zL{DjZd}bh#H7~#Xa+gm{_FYDyMn9v_NpPT`OVx}+E*cSIgYD@TSmKRtCr~q5R2&to
z($Z2@@*hOO_So^v6%5tBnlHyP@*Ue?b;8gUb%=S~}JvRmvvpYNKQni@$1
zXqPy!4Gj%L+S=OWaIyQ&a%Tex#FhA12|!Ml2P<9Nm5A!qs}~k6T7;1!M>_c)i=vL$
zE+sM8I@x8qZntLA#Tm%ACXa=5P*qih2@@uy3>{DRvJ$9EmoCjZrAbjx?o@)ATS`ky
zht<^7{3lkgZeV59hQr~Hi758q!@h$crwS5_pXzal6)YKuWVcG<_hZYI1l4}ziB_np
zDq*m3CF#vX!!VW*(f4C(MnmLflsdh4AaLi+n|1ax^1SYk;ZN|x{;RlknGiU2uyY;A4bLqx8!;%?ly(O!Yc;=QwW@u;S0FFCF3=;f6tEEEb2j6@=vo#x+`%^KMi@+fh+8{1OWl?%ux
zPMmO(Z;_dKfv)Q-+;;40#72dmIdi5@BodJ;Oq0@e7@Jd2R$Xo`{JJ&7O?`1q_4V~>
zlUOoyYe`ATHv)lxBp!BMvH~0J#V`y>%sV4huhEe)Wy+MxZ6`~vet%8Vv>mRAb~eZf
ztXvm0O>-d;{WMvUUfF$@pbV$ETGJVkudMQkeKNCTaGIg(`e)ff&C16n>&!5W2>{+8
zqP*>}^aNODUZrW;Tq0`81*&IYMNm^yQ@`fs=4SzXJ6ENWwa+J5WqT`;;I~5fbZ|2K)I{g9)4mO#hrfJFxZvYWVo|CC23wCI<00000NkvXXu0mjfB#`!^
literal 4014
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
Date: Fri, 3 Aug 2018 10:32:58 +0200
Subject: [PATCH 19/88] Bump markdown-pdf version because of security
vulnerability
---
package-lock.json | 127 +++++++++++-----------------------------------
package.json | 2 +-
yarn.lock | 6 +--
3 files changed, 33 insertions(+), 102 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 3fd1d51..041b1ea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -127,14 +127,6 @@
"tweetnacl": "^0.14.3"
}
},
- "boom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
- "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
- "requires": {
- "hoek": "4.x.x"
- }
- },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -144,6 +136,11 @@
"concat-map": "0.0.1"
}
},
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
"build": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz",
@@ -314,10 +311,11 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
- "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
+ "buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
@@ -519,24 +517,6 @@
}
}
},
- "cryptiles": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
- "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
- "requires": {
- "boom": "5.x.x"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
- "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
- "requires": {
- "hoek": "4.x.x"
- }
- }
- }
- },
"cssmin": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz",
@@ -694,14 +674,24 @@
}
},
"extract-zip": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
- "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
+ "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
"requires": {
- "concat-stream": "1.6.0",
+ "concat-stream": "1.6.2",
"debug": "2.6.9",
- "mkdirp": "0.5.0",
+ "mkdirp": "0.5.1",
"yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
}
},
"extsprintf": {
@@ -917,17 +907,6 @@
"resolved": "https://registry.npmjs.org/hashids/-/hashids-1.1.4.tgz",
"integrity": "sha512-U/fnTE3edW0AV92ZI/BfEluMZuVcu3MDOopsN7jS+HqDYcarQo8rXQiWlsBlm0uX48/taYSdxRsfzh2HRg5Z6w=="
},
- "hawk": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
- "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
- "requires": {
- "boom": "4.x.x",
- "cryptiles": "3.x.x",
- "hoek": "4.x.x",
- "sntp": "2.x.x"
- }
- },
"he": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
@@ -939,11 +918,6 @@
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
"integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
},
- "hoek": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
- "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -1279,9 +1253,9 @@
}
},
"markdown-pdf": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/markdown-pdf/-/markdown-pdf-8.1.1.tgz",
- "integrity": "sha512-lpRyiNptdwArH6bG6Y8X13G5Qr/usTTDXxTp7zjhwxJ+cQO7Z6A1T265ZiN6PVDLzRNxxtcquQCIOpTC0U1NFg==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-pdf/-/markdown-pdf-9.0.0.tgz",
+ "integrity": "sha512-5Ck+LJzsxfXR4Bjmg5sLfVW9JhfkG/WEUsFUVdYN7FSHRKLEYw4r/O6esrWA8hEb+mV3RvFNUQTp+DpFKMfyYg==",
"requires": {
"commander": "^2.2.0",
"duplexer": "^0.1.1",
@@ -1292,13 +1266,6 @@
"stream-from-to": "^1.4.2",
"through2": "^2.0.0",
"tmp": "0.0.33"
- },
- "dependencies": {
- "commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
- }
}
},
"markdown-table": {
@@ -1620,35 +1587,6 @@
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
- },
- "request": {
- "version": "2.85.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
- "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
- "hawk": "~6.0.2",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.17",
- "oauth-sign": "~0.8.2",
- "performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "stringstream": "~0.0.5",
- "tough-cookie": "~2.3.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
- }
}
}
},
@@ -1904,14 +1842,6 @@
"type-detect": "^4.0.0"
}
},
- "sntp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
- "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
- "requires": {
- "hoek": "4.x.x"
- }
- },
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
@@ -1980,7 +1910,8 @@
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
},
"supports-color": {
"version": "2.0.0",
diff --git a/package.json b/package.json
index 1d90f05..75a00ec 100755
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"find-in-files": "^0.4.0",
"hash-sum": "^1.0.2",
"hashids": "^1.1.1",
- "markdown-pdf": "^8.0.0",
+ "markdown-pdf": "^9.0.0",
"markdown-table": "^1.1.0",
"moment": "^2.22.2",
"moment-timezone": "^0.5.21",
diff --git a/yarn.lock b/yarn.lock
index 756a723..eb849d5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -885,9 +885,9 @@ makeerror@1.0.x:
dependencies:
tmpl "1.0.x"
-markdown-pdf@^8.0.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/markdown-pdf/-/markdown-pdf-8.1.1.tgz#25c025d4f4f91869ac0f3f6fd7f7d32237669438"
+markdown-pdf@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-pdf/-/markdown-pdf-9.0.0.tgz#d699f29c3b6c41da4b9a2ec7d09ea8895daef146"
dependencies:
commander "^2.2.0"
duplexer "^0.1.1"
From 5febe1c7198b825926d6d9de60ec4dffadc7f7ac Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 10:34:24 +0200
Subject: [PATCH 20/88] Release 1.7.13
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 52563f2..05da953 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.12
+ENV GTT_VERSION 1.7.13
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 75a00ec..cf185fb 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.12",
+ "version": "1.7.13",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index ed3ccce..85aef22 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.12';
+const version = '1.7.13';
const program = require('commander');
program
From 09b17ea426e72a1deb76b703669b44e523ebbb87 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:18:43 +0200
Subject: [PATCH 21/88] Refactor frame into baseFrame without fs dependency and
frame with fs dependency
---
src/models/baseFrame.js | 84 ++++++++++++++++++++++++++++++++++++++++
src/models/frame.js | 85 ++---------------------------------------
2 files changed, 87 insertions(+), 82 deletions(-)
create mode 100644 src/models/baseFrame.js
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
new file mode 100644
index 0000000..2adfe9b
--- /dev/null
+++ b/src/models/baseFrame.js
@@ -0,0 +1,84 @@
+const moment = require('moment-timezone');
+const Hashids = require('hashids');
+const hashids = new Hashids();
+
+class baseFrame {
+ /**
+ * constructor.
+ * @param config
+ * @param id
+ * @param type
+ */
+ constructor(config, id, type) {
+ this.config = config;
+ this.project = config.get('project');
+ this.resource = {id, type};
+
+ if(typeof id === 'string' || id instanceof String)
+ this.resource.new = true;
+
+ this.id = baseFrame.generateId();
+ this._start = false;
+ this._stop = false;
+ this.timezone = config.get('timezone');
+ this.notes = [];
+ }
+
+ static fromJson(config, json) {
+ let frame = new this(config, json.resource.id, json.resource.type);
+ frame.project = json.project;
+ frame.id = json.id;
+ frame._start = json.start;
+ frame._stop = json.stop;
+ frame.notes = json.notes;
+ frame.timezone = json.timezone;
+ frame.validate();
+
+ return frame;
+ }
+
+ validate() {
+ moment.suppressDeprecationWarnings = true;
+
+ if(!moment(this._start).isValid())
+ throw `Error: Start date is not in a valid ISO date format!`;
+
+ if(this._stop && !moment(this._stop).isValid())
+ throw `Error: Stop date is not in a valid ISO date format!`;
+
+ moment.suppressDeprecationWarnings = false;
+ }
+
+ _getCurrentDate() {
+ if(this.timezone)
+ return moment().tz(this.timezone).format();
+
+ return moment();
+ }
+
+ get duration() {
+ return moment(this.stop).diff(this.start) / 1000;
+ }
+
+ get date() {
+ return this.start;
+ }
+
+ get start() {
+ return this.timezone ? moment(this._start).tz(this.timezone) : moment(this._start);
+ }
+
+ get stop() {
+ return this.timezone ? moment(this._stop).tz(this.timezone) : (this._stop ? moment(this._stop) : false );
+ }
+
+ /**
+ * generate a unique id
+ * @returns {number}
+ */
+ static generateId() {
+ return hashids.encode(new Date().getTime());
+ }
+}
+
+module.exports = baseFrame;
diff --git a/src/models/frame.js b/src/models/frame.js
index 8ebaa09..e29bf84 100755
--- a/src/models/frame.js
+++ b/src/models/frame.js
@@ -1,44 +1,8 @@
const fs = require('fs');
const path = require('path');
-const moment = require('moment-timezone');
-const Hashids = require('hashids');
-const hashids = new Hashids();
-
-class frame {
- /**
- * constructor.
- * @param config
- * @param id
- * @param type
- */
- constructor(config, id, type) {
- this.config = config;
- this.project = config.get('project');
- this.resource = {id, type};
-
- if(typeof id === 'string' || id instanceof String)
- this.resource.new = true;
-
- this.id = frame.generateId();
- this._start = false;
- this._stop = false;
- this.timezone = config.get('timezone');
- this.notes = [];
- }
-
- static fromJson(config, json) {
- let frame = new this(config, json.resource.id, json.resource.type);
- frame.project = json.project;
- frame.id = json.id;
- frame._start = json.start;
- frame._stop = json.stop;
- frame.notes = json.notes;
- frame.timezone = json.timezone;
- frame.validate();
-
- return frame;
- }
+const BaseFrame = require('./baseFrame.js');
+class frame extends BaseFrame {
static fromFile(config, file) {
return frame.fromJson(config, JSON.parse(fs.readFileSync(file)));
}
@@ -57,25 +21,6 @@ class frame {
return this;
}
- validate() {
- moment.suppressDeprecationWarnings = true;
-
- if(!moment(this._start).isValid())
- throw `Error: Start date is not in a valid ISO date format!`;
-
- if(this._stop && !moment(this._stop).isValid())
- throw `Error: Stop date is not in a valid ISO date format!`;
-
- moment.suppressDeprecationWarnings = false;
- }
-
- _getCurrentDate() {
- if(this.timezone)
- return moment().tz(this.timezone).format();
-
- return moment();
- }
-
/**
* assert file exists
*/
@@ -102,30 +47,6 @@ class frame {
get file() {
return path.join(this.config.frameDir, this.id + '.json');
}
-
- get duration() {
- return moment(this.stop).diff(this.start) / 1000;
- }
-
- get date() {
- return this.start;
- }
-
- get start() {
- return this.timezone ? moment(this._start).tz(this.timezone) : moment(this._start);
- }
-
- get stop() {
- return this.timezone ? moment(this._stop).tz(this.timezone) : (this._stop ? moment(this._stop) : false );
- }
-
- /**
- * generate a unique id
- * @returns {number}
- */
- static generateId() {
- return hashids.encode(new Date().getTime());
- }
}
-module.exports = frame;
\ No newline at end of file
+module.exports = frame;
From 9de53b9df58dd144e55eb8cd8a09c43951c3a7ac Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:19:14 +0200
Subject: [PATCH 22/88] Release 1.7.14
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 05da953..dc3af8d 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.13
+ENV GTT_VERSION 1.7.14
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index cf185fb..e71bc0b 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.13",
+ "version": "1.7.14",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 85aef22..23b9041 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.13';
+const version = '1.7.14';
const program = require('commander');
program
From f6a0daf95a61464835447f29f00387ae6cd005d7 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:30:20 +0200
Subject: [PATCH 23/88] Add toJson method to baseFrame
---
src/models/baseFrame.js | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
index 2adfe9b..7525c2b 100644
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -56,6 +56,18 @@ class baseFrame {
return moment();
}
+ toJson() {
+ return JSON.stringify({
+ id: this.id,
+ project: this.project,
+ resource: this.resource,
+ notes: this.notes,
+ start: this._start,
+ stop: this._stop,
+ timezone: this.timezone
+ });
+ }
+
get duration() {
return moment(this.stop).diff(this.start) / 1000;
}
From 2a20290693a36793b48a8d494dc1b0590c2226e9 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:30:41 +0200
Subject: [PATCH 24/88] Release 1.7.15
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index dc3af8d..f409e51 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.14
+ENV GTT_VERSION 1.7.15
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index e71bc0b..79c31e6 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.14",
+ "version": "1.7.15",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 23b9041..d23d1c5 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.14';
+const version = '1.7.15';
const program = require('commander');
program
From 0736c5ea3ef2a69c8e14f6841f3412dc8cf771b5 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:47:15 +0200
Subject: [PATCH 25/88] Add copy method to baseFrame
---
src/models/baseFrame.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
index 7525c2b..f38f4d8 100644
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -68,6 +68,10 @@ class baseFrame {
});
}
+ static copy(frame) {
+ return baseFrame.fromJson(frame.config, JSON.parse(frame.toJson()));
+ }
+
get duration() {
return moment(this.stop).diff(this.start) / 1000;
}
From 579b8ddb8f66224fd31366c111e398e92b8365dd Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:47:40 +0200
Subject: [PATCH 26/88] Release 1.7.16
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index f409e51..9c610af 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.15
+ENV GTT_VERSION 1.7.16
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 79c31e6..1572dbf 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.15",
+ "version": "1.7.16",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index d23d1c5..e02321a 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.15';
+const version = '1.7.16';
const program = require('commander');
program
From 2d513dd515376cd60e6b1c468af5855c97323143 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:55:01 +0200
Subject: [PATCH 27/88] Rework baseFrame copy method and remove toJson method
---
src/models/baseFrame.js | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
index f38f4d8..73f0c24 100644
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -56,20 +56,16 @@ class baseFrame {
return moment();
}
- toJson() {
- return JSON.stringify({
- id: this.id,
- project: this.project,
- resource: this.resource,
- notes: this.notes,
- start: this._start,
- stop: this._stop,
- timezone: this.timezone
- });
- }
-
static copy(frame) {
- return baseFrame.fromJson(frame.config, JSON.parse(frame.toJson()));
+ return baseFrame.fromJson(frame.config, {
+ id: frame.id,
+ project: frame.project,
+ resource: frame.resource,
+ notes: frame.notes,
+ start: frame._start,
+ stop: frame._stop,
+ timezone: frame.timezone
+ });
}
get duration() {
From c074b420e8d5186d2d707b9bbb2ad9c32caaa569 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 11:55:28 +0200
Subject: [PATCH 28/88] Release 1.7.17
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 9c610af..10be28f 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.16
+ENV GTT_VERSION 1.7.17
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 1572dbf..596e096 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.16",
+ "version": "1.7.17",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index e02321a..5566205 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.16';
+const version = '1.7.17';
const program = require('commander');
program
From dec7377ea77d471905cb484738ad21489de46651 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 12:00:11 +0200
Subject: [PATCH 29/88] Rework copy method to assign the config object
---
src/models/baseFrame.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
index 73f0c24..1b5744c 100644
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -1,3 +1,5 @@
+const Config = require('../include/config');
+
const moment = require('moment-timezone');
const Hashids = require('hashids');
const hashids = new Hashids();
@@ -57,7 +59,7 @@ class baseFrame {
}
static copy(frame) {
- return baseFrame.fromJson(frame.config, {
+ return baseFrame.fromJson(Object.assign(new Config, frame.config), {
id: frame.id,
project: frame.project,
resource: frame.resource,
From 235364153cd4a85ddc476e854cb5ed4305edf0e9 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 12:00:40 +0200
Subject: [PATCH 30/88] Release 1.7.18
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 10be28f..5b98010 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.17
+ENV GTT_VERSION 1.7.18
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 596e096..32da95e 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.17",
+ "version": "1.7.18",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 5566205..e1f27c1 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.17';
+const version = '1.7.18';
const program = require('commander');
program
From dd621e87947b781ea84d5b8fa25233907370698e Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 13:50:47 +0200
Subject: [PATCH 31/88] Fix sync of running frames
---
src/models/baseFrame.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
index 1b5744c..118832f 100644
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -83,7 +83,7 @@ class baseFrame {
}
get stop() {
- return this.timezone ? moment(this._stop).tz(this.timezone) : (this._stop ? moment(this._stop) : false );
+ return this.timezone ? this._stop ? moment(this._stop).tz(this.timezone) : false : (this._stop ? moment(this._stop) : false );
}
/**
From 58a5b1bdc65b1d7cf0c1b0c1cee4ae2162cb0681 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Fri, 3 Aug 2018 13:51:25 +0200
Subject: [PATCH 32/88] Release 1.7.19
---
src/gtt-sync.js | 2 +-
src/gtt.js | 2 +-
src/include/tasks.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/gtt-sync.js b/src/gtt-sync.js
index a0b1df1..f1daae5 100755
--- a/src/gtt-sync.js
+++ b/src/gtt-sync.js
@@ -34,4 +34,4 @@ tasks.syncInit()
Cli.bar(`${Cli.update} Syncing time records...`, tasks.sync.frames.length);
return tasks.syncUpdate(Cli.advance)
})
- .catch(error => Cli.x(error));
\ No newline at end of file
+ .catch(error => Cli.x(error));
diff --git a/src/gtt.js b/src/gtt.js
index e1f27c1..e576f71 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.18';
+const version = '1.7.19';
const program = require('commander');
program
diff --git a/src/include/tasks.js b/src/include/tasks.js
index b8969ef..41ce4ff 100755
--- a/src/include/tasks.js
+++ b/src/include/tasks.js
@@ -14,7 +14,7 @@ const classes = {
};
const stop_condition = {
- term: `"stop" ?: ?false`,
+ term: `"stop" ?: ?false`,
flags: "i"
};
From 545f32fadb8577c68a81f3ba13e8e47304717e4f Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Tue, 14 Aug 2018 10:47:09 +0200
Subject: [PATCH 33/88] Change modes to 755, add modified to baseFrame, release
1.7.20
---
.dockerignore | 0
.gitignore | 0
.travis.yml | 0
Dockerfile | 2 +-
package-lock.json | 0
package.json | 2 +-
preview/icon.png | Bin
preview/reports.gif | Bin
preview/tracking.gif | Bin
spec/_setup.spec.js | 0
spec/include/file-config.spec.js | 0
src/gtt.js | 2 +-
src/models/baseFrame.js | 4 +++-
src/output/dump.js | 0
src/output/styles/highlight/default.css | 0
yarn.lock | 0
16 files changed, 6 insertions(+), 4 deletions(-)
mode change 100755 => 100644 .dockerignore
mode change 100755 => 100644 .gitignore
mode change 100755 => 100644 .travis.yml
mode change 100644 => 100755 package-lock.json
mode change 100644 => 100755 preview/icon.png
mode change 100644 => 100755 preview/reports.gif
mode change 100644 => 100755 preview/tracking.gif
mode change 100644 => 100755 spec/_setup.spec.js
mode change 100644 => 100755 spec/include/file-config.spec.js
mode change 100644 => 100755 src/models/baseFrame.js
mode change 100644 => 100755 src/output/dump.js
mode change 100644 => 100755 src/output/styles/highlight/default.css
mode change 100644 => 100755 yarn.lock
diff --git a/.dockerignore b/.dockerignore
old mode 100755
new mode 100644
diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
diff --git a/.travis.yml b/.travis.yml
old mode 100755
new mode 100644
diff --git a/Dockerfile b/Dockerfile
index 5b98010..f6886f4 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.18
+ENV GTT_VERSION 1.7.20
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package-lock.json b/package-lock.json
old mode 100644
new mode 100755
diff --git a/package.json b/package.json
index 32da95e..3662198 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.18",
+ "version": "1.7.20",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/preview/icon.png b/preview/icon.png
old mode 100644
new mode 100755
diff --git a/preview/reports.gif b/preview/reports.gif
old mode 100644
new mode 100755
diff --git a/preview/tracking.gif b/preview/tracking.gif
old mode 100644
new mode 100755
diff --git a/spec/_setup.spec.js b/spec/_setup.spec.js
old mode 100644
new mode 100755
diff --git a/spec/include/file-config.spec.js b/spec/include/file-config.spec.js
old mode 100644
new mode 100755
diff --git a/src/gtt.js b/src/gtt.js
index e576f71..1cf251e 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.19';
+const version = '1.7.20';
const program = require('commander');
program
diff --git a/src/models/baseFrame.js b/src/models/baseFrame.js
old mode 100644
new mode 100755
index 118832f..5ab2258
--- a/src/models/baseFrame.js
+++ b/src/models/baseFrame.js
@@ -34,6 +34,7 @@ class baseFrame {
frame._stop = json.stop;
frame.notes = json.notes;
frame.timezone = json.timezone;
+ frame.modified = json.modified;
frame.validate();
return frame;
@@ -66,7 +67,8 @@ class baseFrame {
notes: frame.notes,
start: frame._start,
stop: frame._stop,
- timezone: frame.timezone
+ timezone: frame.timezone,
+ modified: frame.modified
});
}
diff --git a/src/output/dump.js b/src/output/dump.js
old mode 100644
new mode 100755
diff --git a/src/output/styles/highlight/default.css b/src/output/styles/highlight/default.css
old mode 100644
new mode 100755
diff --git a/yarn.lock b/yarn.lock
old mode 100644
new mode 100755
From 38864501e85e70ef34f4ef94e9e36368fed477a9 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Tue, 14 Aug 2018 13:49:21 +0200
Subject: [PATCH 34/88] Add modified timestamp
---
src/models/frame.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/models/frame.js b/src/models/frame.js
index e29bf84..1e8397c 100755
--- a/src/models/frame.js
+++ b/src/models/frame.js
@@ -1,5 +1,6 @@
const fs = require('fs');
const path = require('path');
+const moment = require('moment');
const BaseFrame = require('./baseFrame.js');
class frame extends BaseFrame {
@@ -40,7 +41,8 @@ class frame extends BaseFrame {
notes: this.notes,
start: this._start,
stop: this._stop,
- timezone: this.timezone
+ timezone: this.timezone,
+ modified: moment()
}, null, "\t"));
}
From 215f0d6677317ce1603c1fe36406309fc8e57a6e Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Tue, 14 Aug 2018 13:49:57 +0200
Subject: [PATCH 35/88] Release 1.7.21
---
Dockerfile | 2 +-
package.json | 2 +-
src/gtt.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index f6886f4..c5c9198 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM node:8.2.1-alpine
-ENV GTT_VERSION 1.7.20
+ENV GTT_VERSION 1.7.21
RUN yarn global add --prefix /usr/local "gitlab-time-tracker@$GTT_VERSION"
diff --git a/package.json b/package.json
index 3662198..0f968fd 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gitlab-time-tracker",
- "version": "1.7.20",
+ "version": "1.7.21",
"description": "A command line interface for GitLabs time tracking feature.",
"bugs": {
"url": "https://github.com/kriskbx/gitlab-time-tracker/issues"
diff --git a/src/gtt.js b/src/gtt.js
index 1cf251e..be3b16b 100755
--- a/src/gtt.js
+++ b/src/gtt.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const version = '1.7.20';
+const version = '1.7.21';
const program = require('commander');
program
From 5f12375c218c3ddb6ffd9253d16f7c03ec3fe838 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Tue, 14 Aug 2018 14:37:27 +0200
Subject: [PATCH 36/88] New logo
---
preview/icon.png | Bin 3665 -> 13313 bytes
readme.md | 14 ++++++--------
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/preview/icon.png b/preview/icon.png
index 1bf4a6dfec5497e771bd56179285a2b5dd5e64bd..d4bfe03428292f28851b02bdfe6256da4be8b191 100755
GIT binary patch
literal 13313
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
diff --git a/readme.md b/readme.md
index e735df5..9b14240 100755
--- a/readme.md
+++ b/readme.md
@@ -1,4 +1,6 @@
-#  gtt
+
+
+
[](https://www.npmjs.com/package/gitlab-time-tracker)
[](https://www.npmjs.com/package/gitlab-time-tracker)
@@ -6,15 +8,11 @@
[](https://coveralls.io/github/kriskbx/gitlab-time-tracker)
[](https://www.npmjs.com/package/gitlab-time-tracker)
-> A fully featured command line interface for GitLab's time tracking feature. gtt monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab.
-
-**Please support the development of this free software by [donating or sharing](#buy-me-a-beer)!**
-
-| monitor your time | ... and get reports |
-| --- | --- |
-|  |  |
+
+> gtt is a fully featured command line interface for GitLab's time tracking feature. It monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab.
+**Please support the development of this free software by [donating or sharing](#buy-me-a-beer)!**
## contents
From 067292e745867c051e7e751b46f47a1a258e91c7 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Mon, 27 Aug 2018 12:25:25 +0200
Subject: [PATCH 37/88] Move documentation to own file. Reference gtt taskbar
---
CONTRIBUTING.md | 6 -
documentation.md | 837 +++++++++++++++++++++++++++++++++++++++++
preview/icon.gvdesign | Bin 0 -> 11909 bytes
readme.md | 838 +-----------------------------------------
4 files changed, 844 insertions(+), 837 deletions(-)
delete mode 100755 CONTRIBUTING.md
create mode 100644 documentation.md
create mode 100644 preview/icon.gvdesign
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100755
index 0154cce..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# contributing
-
-I would love to integrate unit testing in this project, but unfortunately my knowledge of testing in the JavaScript/Node.js world is very limited. (I'm actually a PHP dev) So this would be a very helpful thing to contribute but of course all contributions are very welcome.
-
- Please work in your own branch, e.g. integrate-awesome-feature, fix-awful-bug, improve-this-crappy-docs
- Create a pull request to the dev branch
diff --git a/documentation.md b/documentation.md
new file mode 100644
index 0000000..76747f1
--- /dev/null
+++ b/documentation.md
@@ -0,0 +1,837 @@
+# gtt documentation
+
+## contents
+
+* [requirements](#requirements)
+* [installation](#installation)
+* [updating](#updating)
+* [docker](#docker)
+* [commands](#commands)
+ * [I) configuration](#i-configuration)
+ * [II) time tracking](#ii-time-tracking)
+ * [III) reports](#iii-reports)
+* [configuration](#configuration)
+ * [config file](#config-file)
+ * [time format](#time-format)
+* [how to use gtt as a library](#how-to-use-gtt-as-a-library)
+* [dumps](#dumps)
+* [faqs](#faqs)
+* [contributing](#contributing)
+* [support further development 🍺](#support-further-development)
+* [license](#license)
+
+## requirements
+
+* [node.js](https://nodejs.org/en/download) version >= 6
+* [npm](https://github.com/npm/npm) or [yarn](https://yarnpkg.com/en/docs/install)
+
+## installation
+
+Install the gtt command line interface using yarn:
+
+```shell
+yarn global add gitlab-time-tracker --prefix /usr/local
+```
+
+... or using npm (recommended on **Windows** operating systems):
+
+```shell
+npm install -g gitlab-time-tracker
+```
+
+Run the config command to create a config file and open it in your default editor.
+In linux terminal, you must set your preferred editor in the environment. For example, use `export EDITOR=vim` to edit the files with vim (put this in `.bashrc` or similar to have it always configured).
+If nothing happens, open the file manually: `~/.gtt/config.yml` - on Windows: `C:\Users\YourUserName\.gtt\config.yml`
+
+```shell
+gtt config
+```
+
+Add your GitLab API url and your [GitLab API personal token](https://gitlab.com/profile/personal_access_tokens)
+to the config file and save it afterwards:
+
+```yaml
+url: https://gitlab.com/api/v4/
+token: 01234567891011
+```
+
+## updating
+
+**Updating from version <= 1.5? Please [click here](https://github.com/kriskbx/gitlab-time-tracker/blob/master/upgrade.md)!**
+
+Update gtt via yarn:
+
+```shell
+yarn global upgrade gitlab-time-tracker
+```
+
+... or npm:
+
+```shell
+npm install -g gitlab-time-tracker
+```
+
+## docker
+
+You don't need to have node and gtt installed on your system in order to use gtt,
+you can use the official [Docker image](https://hub.docker.com/r/kriskbx/gitlab-time-tracker) as well:
+
+```shell
+docker run \
+ --rm -it \
+ -v ~:/root \
+ kriskbx/gitlab-time-tracker \
+ --help
+```
+
+`--rm` removes the container after running, `-it` makes it interactive, `-v ~:/root` mounts your home directory to the
+home directory inside the container. If you want to store the config in another place, mount another directory:
+
+
+ ```shell
+ docker run \
+ --rm -it \
+ -v /path/to/gtt-config:/root \
+ kriskbx/gitlab-time-tracker \
+ --help
+ ```
+
+... or use a Docker volume:
+
+```shell
+docker volume create gtt-config
+
+docker run \
+ --rm -it \
+ -v gtt-config:/root \
+ kriskbx/gitlab-time-tracker \
+ --help
+```
+
+I highly recommend creating an alias and adding it to your `bashrc`:
+
+```shell
+echo "alias gtt='docker run --rm -it -v ~:/root kriskbx/gitlab-time-tracker'" >>~/.bashrc
+```
+
+Now you can simply write `gtt` instead of the bulky Docker command before. Try it out: `gtt --help`
+
+**Note:** If you want to save reports via the `--file` parameter, make sure to save them in `/root` or another
+mounted directory that you have access to on your host machine. Take a look at the [Docker documentation](https://docs.docker.com/engine/tutorials/dockervolumes/) about how Docker handles data and volumes.
+
+## commands
+
+### I) configuration
+
+*[Click here](#configuration) for a complete list of configuration options.*
+
+**Edit/create the global configuration file, stored in your home directory:**
+
+```shell
+gtt config
+```
+
+If nothing happens, open the file manually: `~/.gtt/config.yml` - on Windows: `C:\Users\YourUserName\.gtt\config.yml`
+
+**Edit/create a local configuration file `.gtt.yml` in the current working directory:**
+
+```shell
+gtt config --local
+```
+
+If a local configuration file is present it will extend of the global one and overwrites global settings.
+If you don't want to extend the global configuration file, set the `extend` option in your local config to `false`.
+So you can use gtt easily on a per project basis. Make sure to add .gtt.yml to your gitignore file if using a local configuration.
+
+### II) time tracking
+
+Time tracking enables you to monitor the time you spent on an issue or merge request locally.
+When you're done, you can sync these time records to GitLab: gtt adds the time spent to the given
+issue or merge request and automagically keeps everything in sync with your local data.
+
+Did you forgot to stop time monitoring locally and accidentally synced it to GitLab?
+No worries, just edit the local record and run sync again.
+
+**Start local time monitoring for the given project and issue id:**
+
+```shell
+gtt start "kriskbx/example-project" 15
+gtt start 15
+```
+
+If you configured a project in your config you can omit the project.
+
+**Start local time monitoring for a merge request:**
+
+```shell
+gtt start --type=merge_request "kriskbx/example-project" 15
+gtt start --type=merge_request 15
+```
+
+**Start local time monitoring and create a new issue or merge request with the given title:**
+
+```shell
+gtt create "kriskbx/example-project" "New Issue"
+gtt create "New Issue"
+gtt create --type=merge_request "kriskbx/example-project" "New Issue"
+gtt create --type=merge_request "New Issue"
+```
+
+**Show the current time monitoring status:**
+
+```shell
+gtt status
+```
+
+**Stop local time monitoring and save as a new time record:**
+
+```shell
+gtt stop
+```
+
+**Cancel local time monitoring and discard the time record:**
+
+```shell
+gtt cancel
+```
+
+**Show a list of all local time records (including their ids and meta data):**
+
+```shell
+gtt log
+```
+Note: gtt log uses UTC as default timezone. If you want to display the times in a different timezone, make sure to use `timezone: "Europe/Berlin"` in your config.
+
+**Edit a local time record by the given id:**
+
+```shell
+gtt edit 2XZkV5LNM
+gtt edit
+```
+
+You can omit the id to edit the last added time record.
+
+**Delete a local time record by the given id:**
+
+```shell
+gtt delete 2XZkV5LNM
+gtt delete
+```
+
+You can omit the id to delete the last added time record.
+
+**Sync local time records with time tracking data on Gitlab:**
+
+```shell
+gtt sync
+gtt sync --proxy="http://localhost:8888"
+```
+
+You can pass an url to the proxy option if you want to use a proxy server.
+
+### III) reports
+
+Get a report for the time tracking data stored on GitLab. If you want to include your local data make sure to sync it
+before running the report command. The report command has a lot of options to filter data and output, make sure to
+read through the docs before using it.
+
+#### Get a report
+
+```shell
+gtt report ["namespace/project"] [issue_id]
+gtt report "kriskbx/example-project"
+gtt report "kriskbx/example-project" 145
+gtt report "kriskbx/example-project" 145 209 45 54
+gtt report
+gtt report 145
+gtt report 123 345 123
+```
+
+If you configured a project in your config file you can omit it. By passing a or multiple ids you can limit the
+report to the given issues or merge requests. *Note: if you're passing a or multiple ids, gtt will fetch issues
+with these ids by default. If you want to fetch merge requests you can change the query type using the
+`--query` option.*
+
+#### Query groups and subgroups
+
+```shell
+gtt report ["namespace"] --type=group
+gtt report example-group --type=group
+gtt report example-group --type=group --subgroups
+```
+
+Query all projects from the given group and combine the data into a single report. The option `--subgroups`
+includes subgroups.
+
+#### Query multiple projects or groups and combine the data in one report
+
+```shell
+gtt report ["namespace/project"] ["namespace/project"] ...
+gtt report "kriskbx/example-project" "kriskbx/example-project-2"
+gtt report ["namespace"] ["namespace"] ... --type=group
+gtt report example-group example-group-2 --type=group
+```
+
+*Hint: use the `project_id` or `project_namespace` columns in your report.*
+
+#### Choose an output for your report
+
+```shell
+gtt report --output=table
+gtt report --output=markdown
+gtt report --output=csv
+gtt report --output=pdf --file=filename.pdf
+```
+
+Defaults to `table`. `csv` and `markdown` can be printed to stdout, `pdf` needs the file parameter.
+
+#### Print the output to a file
+
+```shell
+gtt report --file=filename.txt
+```
+
+#### Only get time records from the given time frame
+
+```shell
+gtt report --from="2017-03-01" --to="2017-04-01"
+```
+
+*Note: `--from` defaults to 1970-01-01, `--to` defaults to now. Make sure to use an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compatible time/date format.*
+
+There are some quick shorthands:
+
+```shell
+gtt report --today
+gtt report --this_week
+gtt report --this_month
+```
+
+#### Include closed issues/merge requests
+
+```shell
+gtt report --closed
+```
+
+#### Limit to the given user
+
+```shell
+gtt report --user=username
+```
+
+#### Limit to the given milestone
+
+```shell
+gtt report --milestone=milestone_name
+```
+
+#### Limit issues and merge requests to the given labels
+
+```shell
+gtt report --include_by_labels=critical --include_by_labels=important
+```
+
+#### Exclude issues and merge requests that have the given labels
+
+```shell
+gtt report --exclude_by_labels=wont-fix --exclude_by_labels=ignore
+```
+
+#### Limit the query to the given data type
+
+```shell
+gtt report --query=issues
+gtt report --query=merge_requests
+```
+
+#### Include issues and merge requests in the report that have no time records
+
+```shell
+gtt report --show_without_times
+```
+
+#### Limit the parts in the final report
+
+```shell
+gtt report --report=stats --report=issues
+```
+
+*Note: These parts are available: `stats`, `issues`, `merge_requests`, `records`*
+
+#### Hide headlines in the report
+
+```shell
+gtt report --no_headlines
+```
+
+#### Hide warnings in the report
+
+```shell
+gtt report --no_warnings
+```
+
+#### Set date format for the report
+
+```shell
+gtt report --date_format="DD.MM.YYYY HH:mm:ss"
+```
+
+*Note: [Click here](http://momentjs.com/docs/#/displaying/format/) for a further documentation on the date format.*
+
+#### Set time format for the report
+
+```shell
+gtt report --time_format="[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
+```
+
+*Note: [Click here](#time-format) for a further documentation on the time format.*
+
+#### Set hours per day
+
+```shell
+gtt report --hours_per_day=6
+```
+
+#### Set columns included in the time record table
+
+```shell
+gtt report --record_columns=user --record_columns=date --record_columns=time
+```
+
+*Note: Available columns to choose from: `user`, `date`, `type`, `iid`, `project_id`, `project_namespace`, `time`*
+
+#### Set columns included in the issue table
+
+```shell
+gtt report --issue_columns=iid --issue_columns=title --issue_columns=time_username
+```
+
+*Note: Available columns to choose from: `id`, `iid`, `title`, `project_id`,
+`project_namespace`, `description`, `labels`, `milestone`, `assignee`, `author`,
+`closed`, `updated_at`, `created_at`, `state`, `spent`, `total_spent`, `total_estimate`*
+
+*You can also include columns that show the total time spent by a specific user
+by following this convention: `time_username`*
+
+#### Set columns included in the merge request table
+
+```shell
+gtt report --merge_request_columns=iid --merge_request_columns=title --merge_request_columns=time_username
+```
+
+*Note: Available columns to choose from: `id`, `iid`, `title`, `project_id`,
+`project_namespace`, `description`, `labels`, `milestone`, `assignee`, `author`,
+`updated_at`, `created_at`, `state`, `spent`, `total_spent`, `total_estimate`*
+
+*You can also include columns that show the total time spent by a specific user
+by following this convention: `time_username`*
+
+#### Add columns for each project member to issue and merge request table, including their total time spent
+
+```shell
+gtt report --user_columns
+```
+
+#### Only include the given labels in the report
+
+```shell
+gtt report --include_labels=pending --include_labels=approved
+```
+
+#### Exclude the given labels from the report
+
+```shell
+gtt report --exclude_labels=bug --exclude_labels=feature
+```
+
+#### Use a proxy server
+
+```shell
+gtt report --proxy="http://localhost:8080"
+```
+
+#### Output verbose debug information
+
+```shell
+gtt report --verbose
+```
+
+## configuration
+
+The configuration uses the [yaml file format](http://www.yaml.org/spec/1.2/spec.html).
+[Click here](#i-configuration) for more information how to edit and create a config file.
+
+### Config File
+
+Here's a sample configuration file including all available options:
+
+```yaml
+# Url to the gitlab api
+# Make sure there's a trailing slash
+# [required]
+url: http://gitlab.com/api/v4/
+
+# GitLab personal api token
+# [required]
+token: abcdefghijklmnopqrst
+
+# Use a proxy server
+# defaults to false
+proxy: http://localhost:8080
+
+# Don't check SSL certificate
+# defaults to false
+insecure: true
+
+# Project
+# defaults to false
+project: namespace/projectname
+
+# Include closed issues and merge requests
+# defaults to false
+closed: true
+
+# Limit to the given milestone
+# defaults to false
+milestone: milestone_name
+
+# Exclude issues and merge requests that have the given labels
+# defaults to an empty array
+excludeByLabels:
+- wont-fix
+- ignore
+
+# Limit issues and merge requests to the given labels
+# defaults to an empty array
+includeByLabels:
+- critical
+- important
+
+# Limit the query to the given data type
+# available: issues, merge_requests
+# defaults to [issues, merge_requests]
+query:
+- issues
+
+# Limit the parts in the final report
+# available: stats, issues, merge_requests, records
+# defaults to [stats, issues, merge_requests, records]
+report:
+- stats
+- records
+
+# Hide headlines in the report
+# defaults to false
+noHeadlines: true
+
+# Hide warnings in the report
+# defaults to false
+noWarnings: true
+
+# Include issues and merge requests in the report that have no time records
+# defaults to false
+showWithoutTimes: true
+
+# Hours per day
+# defaults to 8
+hoursPerDay: 8
+
+# Days per week
+# defaults to 5
+daysPerWeek: 5
+
+# Weeks per month
+# defaults to 4
+weeksPerMonth: 4
+
+# Include the given columns in the issue table
+# See --issue_columns option for more information
+# defaults to iid, title, spent, total_estimate
+issueColumns:
+- iid
+- title
+- total_estimate
+
+# Include the given columns in the merge request table
+# See --merge_request_columns option for more information
+# defaults to iid, title, spent, total_estimate
+mergeRequestColumns:
+- iid
+- title
+- total_estimate
+
+# Include the given columns in the time record table
+# See --record_columns option for more information
+# defaults to user, date, type, iid, time
+recordColumns:
+- user
+- iid
+- time
+
+# Add columns for each project member to issue and
+# merge request table, including their total time spent
+# defaults to true
+userColumns: true
+
+# Date format
+# Click here for format options: http://momentjs.com/docs/#/displaying/format/
+# defaults to DD.MM.YYYY HH:mm:ss
+dateFormat: DD.MM.YYYY HH:mm:ss
+
+# Time format
+# See time format configuration below
+# defaults to "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
+timeFormat: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
+
+# Time format for different parts of the report
+# Instead of specifying one global time format you can specify one for every
+# part of the report and the log command
+timeFormat:
+ log: "[%sign][%hours_overall]"
+ stats: "[%sign][%days_overall]"
+ issues: "[%sign][%hours_overall]"
+ merge_requests: "[%sign][%hours_overall]"
+ records: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
+
+# Change your timezone
+# default: UTC
+timezone: "Europe/Berlin"
+
+# Output type
+# Available: csv, table, markdown, pdf
+# defaults to table
+output: markdown
+
+# Exclude the given labels from the report
+# defaults to an empty array
+excludeLabels:
+- bug
+- feature
+
+# Only include the given labels in the report
+# defaults to an empty array
+includeLabels:
+- pending
+- approved
+
+# Only works if using a local configuration file!
+# Extend the global configuration if set to true, pass a string to extend
+# the configuration file stored at the given path
+# defaults to true
+extend: true
+
+# Change number of concurrent connections/http queries
+# Note: Handle with care, we don't want to spam GitLabs API too much
+# defaults to 10
+_parallel: 20
+
+# Change rows per page (max. 100)
+# defaults to 100
+_perPage: 100
+
+# Verbose output
+_verbose: false
+
+# Check access token validity up front
+_checkToken: false
+
+# Skip parsing the issue/merge_request description for time records
+_skipDescriptionParsing: false
+```
+
+### Time format
+
+##### `[%sign]`, `[%days]`, `[%hours]`, `[%minutes]`, `[%seconds]`
+
+Prints out the raw data.
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%days]d [%hours]h [%minutes]m [%seconds]s"
+```
+
+**Example outputs:**
+
+```shell
+0d 0h 30m 15s
+-1d 10h 15m 0s
+```
+
+##### `[%days>string]`, `[%hours>string]`, `[%minutes>string]`, `[%seconds>string]`
+
+This is a conditional: it prints out the raw data and appends the given string if the
+data is greater than zero.
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
+```
+
+**Example outputs:**
+
+```shell
+30m 15s
+-1d 10h 15m
+```
+
+##### `[%Days]`, `[%Hours]`, `[%Minutes]`, `[%Seconds]`, `[%Days>string]`, `[%Hours>string]`, `[%Minutes>string]`, `[%Seconds>string]`
+
+First letter uppercase adds leading zeros.
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%Days]:[%Hours]:[%Minutes]:[%Seconds]"
+```
+
+**Example outputs:**
+
+```shell
+00:00:30:15
+-01:10:15:00
+```
+
+##### `[%days_overall]`, `[%hours_overall]`, `[%minutes_overall]`, `[%seconds_overall]`
+
+Instead of printing out the second-, minute-, hour-, day-part of the duration this
+prints the complete time in either seconds, minutes, hours or days.
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%minutes_overall]"
+```
+
+**Example outputs:**
+
+```shell
+30.25
+1095
+```
+
+##### `[%days_overall_comma]`, `[%hours_overall_comma]`, `[%minutes_overall_comma]`, `[%seconds_overall_comma]`
+
+Use a comma for float values instead of a point. (Useful for some european countries)
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%minutes_overall]"
+```
+
+**Example outputs:**
+
+```shell
+30,25
+1095
+```
+
+##### `[%hours_overall:2]`, `[%days_overall:3]`
+
+You can ceil any float value by adding the number of decimals to keep separated with a `:`.
+
+**Example config:**
+
+```yaml
+timeFormat: "[%sign][%hours_overall:2]"
+```
+
+**Example outputs:**
+
+```shell
+0,51
+18,25
+```
+
+## how to use gtt as a library
+
+Add as a dependency using yarn:
+
+```shell
+yarn add gitlab-time-tracker
+```
+
+... or using npm:
+
+```shell
+npm install --save gitlab-time-tracker
+```
+
+Use it in your project:
+
+```js
+// require modules
+const Config = require('gitlab-time-tracker/src/include/config');
+const Report = require('gitlab-time-tracker/src/models/report');
+
+// create a default config
+let config = new Config();
+
+// set required parameters
+config.set('token', 'abcdefghijklmnopqrst');
+config.set('project', 'namespace/project');
+
+// create report
+let report = new Report(config);
+
+// query and process data
+try {
+ await report.getProject()
+ await report.getIssues()
+ await report.getMergeRequests()
+ await report.processIssues()
+ await report.processMergeRequests()
+} catch (error) {
+ console.log(error)
+}
+
+// access data on report
+report.issues.forEach(issue => {
+ // time records on issue
+ console.log(issue.times);
+ // time spent of single time record
+ console.log(issue.times[0].time);
+});
+report.mergeRequests.forEach(mergeRequest => {
+ // time records on merge requests
+ console.log(mergeRequest.times);
+ // user of single time record
+ console.log(mergeRequest.times[0].user);
+});
+```
+
+## dumps
+
+Starting with 1.7.4 gtt can dump the results of all API requests within a report and use it on another machine without access to the GitLab instance itself. This is very useful for debugging purposes. If you stumble upon a bug which could be unique to your set of data, please rerun the report with these options to save a dump to the given file: `--output=dump --file=/path/dump.json` Check your dump for sensitive information and provide it when asked.
+
+## faqs
+
+#### What is the difference between 'total spent' and 'spent'?
+
+`total spent` is the total amount of time spent in all issues after filtering.
+It can include times outside the queried time frame. `spent` on the other hand
+is the total amount of time spent in the given time frame.
+
+## contributing
+
+I would love to integrate unit testing in this project, but unfortunately my knowledge of
+testing in the JavaScript/Node.js world is very limited. (I'm actually a PHP dev)
+So this would be a very helpful thing to contribute but of course all contributions are very welcome.
+
+* Please work in your own branch, e.g. `integrate-awesome-feature`, `fix-awful-bug`, `improve-this-crappy-docs`
+* Create a pull request to the `dev` branch
+
+## support further development
+
+gtt is an open source project, developed and maintained completely in my free time.
+
+If you enjoy using gtt you can support the project by [contributing](#contributing) to the code base,
+sharing it to your colleagues and co-workers or monetarily by [donating via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DN9YVDKFGC6V6).
+Every type of support is helpful and thank you very much if you consider supporting the project
+or already have done so. 💜
+
+## license
+
+GPL v2
diff --git a/preview/icon.gvdesign b/preview/icon.gvdesign
new file mode 100644
index 0000000000000000000000000000000000000000..56a1d7905b22be8f356651c61a2622669b500aa3
GIT binary patch
literal 11909
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
LYS~e=%VhunFb?L8
literal 0
HcmV?d00001
diff --git a/readme.md b/readme.md
index 9b14240..5d24f99 100755
--- a/readme.md
+++ b/readme.md
@@ -10,842 +10,18 @@
-> gtt is a fully featured command line interface for GitLab's time tracking feature. It monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab.
+## introduction
-**Please support the development of this free software by [donating or sharing](#buy-me-a-beer)!**
+gtt is a fully featured command line interface for GitLab's time tracking feature. It monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab. **Looking for a Graphical User Interface? Check out the [gtt taskbar/menubar app](https://github.com/kriskbx/gitlab-time-tracker-taskbar) for Linux, Mac & Windows!**
-## contents
+## documentation
-* [requirements](#requirements)
-* [installation](#installation)
-* [updating](#updating)
-* [docker](#docker)
-* [commands](#commands)
- * [I) configuration](#i-configuration)
- * [II) time tracking](#ii-time-tracking)
- * [III) reports](#iii-reports)
-* [configuration](#configuration)
- * [config file](#config-file)
- * [time format](#time-format)
-* [how to use gtt as a library](#how-to-use-gtt-as-a-library)
-* [dumps](#dumps)
-* [faqs](#faqs)
-* [contributing](#contributing)
-* [buy me a beer 🍺](#buy-me-a-beer)
-* [license](#license)
+You can find the documentation [here]().
-## requirements
+## support further development
-* [node.js](https://nodejs.org/en/download) version >= 6
-* [npm](https://github.com/npm/npm) or [yarn](https://yarnpkg.com/en/docs/install)
-
-## installation
-
-Install the gtt command line interface using yarn:
-
-```shell
-yarn global add gitlab-time-tracker --prefix /usr/local
-```
-
-... or using npm (recommended on **Windows** operating systems):
-
-```shell
-npm install -g gitlab-time-tracker
-```
-
-Run the config command to create a config file and open it in your default editor.
-In linux terminal, you must set your preferred editor in the environment. For example, use `export EDITOR=vim` to edit the files with vim (put this in `.bashrc` or similar to have it always configured).
-If nothing happens, open the file manually: `~/.gtt/config.yml` - on Windows: `C:\Users\YourUserName\.gtt\config.yml`
-
-```shell
-gtt config
-```
-
-Add your GitLab API url and your [GitLab API personal token](https://gitlab.com/profile/personal_access_tokens)
-to the config file and save it afterwards:
-
-```yaml
-url: https://gitlab.com/api/v4/
-token: 01234567891011
-```
-
-## updating
-
-**Updating from version <= 1.5? Please [click here](https://github.com/kriskbx/gitlab-time-tracker/blob/master/upgrade.md)!**
-
-Update gtt via yarn:
-
-```shell
-yarn global upgrade gitlab-time-tracker
-```
-
-... or npm:
-
-```shell
-npm install -g gitlab-time-tracker
-```
-
-## docker
-
-You don't need to have node and gtt installed on your system in order to use gtt,
-you can use the official [Docker image](https://hub.docker.com/r/kriskbx/gitlab-time-tracker) as well:
-
-```shell
-docker run \
- --rm -it \
- -v ~:/root \
- kriskbx/gitlab-time-tracker \
- --help
-```
-
-`--rm` removes the container after running, `-it` makes it interactive, `-v ~:/root` mounts your home directory to the
-home directory inside the container. If you want to store the config in another place, mount another directory:
-
-
- ```shell
- docker run \
- --rm -it \
- -v /path/to/gtt-config:/root \
- kriskbx/gitlab-time-tracker \
- --help
- ```
-
-... or use a Docker volume:
-
-```shell
-docker volume create gtt-config
-
-docker run \
- --rm -it \
- -v gtt-config:/root \
- kriskbx/gitlab-time-tracker \
- --help
-```
-
-I highly recommend creating an alias and adding it to your `bashrc`:
-
-```shell
-echo "alias gtt='docker run --rm -it -v ~:/root kriskbx/gitlab-time-tracker'" >>~/.bashrc
-```
-
-Now you can simply write `gtt` instead of the bulky Docker command before. Try it out: `gtt --help`
-
-**Note:** If you want to save reports via the `--file` parameter, make sure to save them in `/root` or another
-mounted directory that you have access to on your host machine. Take a look at the [Docker documentation](https://docs.docker.com/engine/tutorials/dockervolumes/) about how Docker handles data and volumes.
-
-## commands
-
-### I) configuration
-
-*[Click here](#configuration) for a complete list of configuration options.*
-
-**Edit/create the global configuration file, stored in your home directory:**
-
-```shell
-gtt config
-```
-
-If nothing happens, open the file manually: `~/.gtt/config.yml` - on Windows: `C:\Users\YourUserName\.gtt\config.yml`
-
-**Edit/create a local configuration file `.gtt.yml` in the current working directory:**
-
-```shell
-gtt config --local
-```
-
-If a local configuration file is present it will extend of the global one and overwrites global settings.
-If you don't want to extend the global configuration file, set the `extend` option in your local config to `false`.
-So you can use gtt easily on a per project basis. Make sure to add .gtt.yml to your gitignore file if using a local configuration.
-
-### II) time tracking
-
-Time tracking enables you to monitor the time you spent on an issue or merge request locally.
-When you're done, you can sync these time records to GitLab: gtt adds the time spent to the given
-issue or merge request and automagically keeps everything in sync with your local data.
-
-Did you forgot to stop time monitoring locally and accidentally synced it to GitLab?
-No worries, just edit the local record and run sync again.
-
-**Start local time monitoring for the given project and issue id:**
-
-```shell
-gtt start "kriskbx/example-project" 15
-gtt start 15
-```
-
-If you configured a project in your config you can omit the project.
-
-**Start local time monitoring for a merge request:**
-
-```shell
-gtt start --type=merge_request "kriskbx/example-project" 15
-gtt start --type=merge_request 15
-```
-
-**Start local time monitoring and create a new issue or merge request with the given title:**
-
-```shell
-gtt create "kriskbx/example-project" "New Issue"
-gtt create "New Issue"
-gtt create --type=merge_request "kriskbx/example-project" "New Issue"
-gtt create --type=merge_request "New Issue"
-```
-
-**Show the current time monitoring status:**
-
-```shell
-gtt status
-```
-
-**Stop local time monitoring and save as a new time record:**
-
-```shell
-gtt stop
-```
-
-**Cancel local time monitoring and discard the time record:**
-
-```shell
-gtt cancel
-```
-
-**Show a list of all local time records (including their ids and meta data):**
-
-```shell
-gtt log
-```
-Note: gtt log uses UTC as default timezone. If you want to display the times in a different timezone, make sure to use `timezone: "Europe/Berlin"` in your config.
-
-**Edit a local time record by the given id:**
-
-```shell
-gtt edit 2XZkV5LNM
-gtt edit
-```
-
-You can omit the id to edit the last added time record.
-
-**Delete a local time record by the given id:**
-
-```shell
-gtt delete 2XZkV5LNM
-gtt delete
-```
-
-You can omit the id to delete the last added time record.
-
-**Sync local time records with time tracking data on Gitlab:**
-
-```shell
-gtt sync
-gtt sync --proxy="http://localhost:8888"
-```
-
-You can pass an url to the proxy option if you want to use a proxy server.
-
-### III) reports
-
-Get a report for the time tracking data stored on GitLab. If you want to include your local data make sure to sync it
-before running the report command. The report command has a lot of options to filter data and output, make sure to
-read through the docs before using it.
-
-#### Get a report
-
-```shell
-gtt report ["namespace/project"] [issue_id]
-gtt report "kriskbx/example-project"
-gtt report "kriskbx/example-project" 145
-gtt report "kriskbx/example-project" 145 209 45 54
-gtt report
-gtt report 145
-gtt report 123 345 123
-```
-
-If you configured a project in your config file you can omit it. By passing a or multiple ids you can limit the
-report to the given issues or merge requests. *Note: if you're passing a or multiple ids, gtt will fetch issues
-with these ids by default. If you want to fetch merge requests you can change the query type using the
-`--query` option.*
-
-#### Query groups and subgroups
-
-```shell
-gtt report ["namespace"] --type=group
-gtt report example-group --type=group
-gtt report example-group --type=group --subgroups
-```
-
-Query all projects from the given group and combine the data into a single report. The option `--subgroups`
-includes subgroups.
-
-#### Query multiple projects or groups and combine the data in one report
-
-```shell
-gtt report ["namespace/project"] ["namespace/project"] ...
-gtt report "kriskbx/example-project" "kriskbx/example-project-2"
-gtt report ["namespace"] ["namespace"] ... --type=group
-gtt report example-group example-group-2 --type=group
-```
-
-*Hint: use the `project_id` or `project_namespace` columns in your report.*
-
-#### Choose an output for your report
-
-```shell
-gtt report --output=table
-gtt report --output=markdown
-gtt report --output=csv
-gtt report --output=pdf --file=filename.pdf
-```
-
-Defaults to `table`. `csv` and `markdown` can be printed to stdout, `pdf` needs the file parameter.
-
-#### Print the output to a file
-
-```shell
-gtt report --file=filename.txt
-```
-
-#### Only get time records from the given time frame
-
-```shell
-gtt report --from="2017-03-01" --to="2017-04-01"
-```
-
-*Note: `--from` defaults to 1970-01-01, `--to` defaults to now. Make sure to use an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compatible time/date format.*
-
-There are some quick shorthands:
-
-```shell
-gtt report --today
-gtt report --this_week
-gtt report --this_month
-```
-
-#### Include closed issues/merge requests
-
-```shell
-gtt report --closed
-```
-
-#### Limit to the given user
-
-```shell
-gtt report --user=username
-```
-
-#### Limit to the given milestone
-
-```shell
-gtt report --milestone=milestone_name
-```
-
-#### Limit issues and merge requests to the given labels
-
-```shell
-gtt report --include_by_labels=critical --include_by_labels=important
-```
-
-#### Exclude issues and merge requests that have the given labels
-
-```shell
-gtt report --exclude_by_labels=wont-fix --exclude_by_labels=ignore
-```
-
-#### Limit the query to the given data type
-
-```shell
-gtt report --query=issues
-gtt report --query=merge_requests
-```
-
-#### Include issues and merge requests in the report that have no time records
-
-```shell
-gtt report --show_without_times
-```
-
-#### Limit the parts in the final report
-
-```shell
-gtt report --report=stats --report=issues
-```
-
-*Note: These parts are available: `stats`, `issues`, `merge_requests`, `records`*
-
-#### Hide headlines in the report
-
-```shell
-gtt report --no_headlines
-```
-
-#### Hide warnings in the report
-
-```shell
-gtt report --no_warnings
-```
-
-#### Set date format for the report
-
-```shell
-gtt report --date_format="DD.MM.YYYY HH:mm:ss"
-```
-
-*Note: [Click here](http://momentjs.com/docs/#/displaying/format/) for a further documentation on the date format.*
-
-#### Set time format for the report
-
-```shell
-gtt report --time_format="[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
-```
-
-*Note: [Click here](#time-format) for a further documentation on the time format.*
-
-#### Set hours per day
-
-```shell
-gtt report --hours_per_day=6
-```
-
-#### Set columns included in the time record table
-
-```shell
-gtt report --record_columns=user --record_columns=date --record_columns=time
-```
-
-*Note: Available columns to choose from: `user`, `date`, `type`, `iid`, `project_id`, `project_namespace`, `time`*
-
-#### Set columns included in the issue table
-
-```shell
-gtt report --issue_columns=iid --issue_columns=title --issue_columns=time_username
-```
-
-*Note: Available columns to choose from: `id`, `iid`, `title`, `project_id`,
-`project_namespace`, `description`, `labels`, `milestone`, `assignee`, `author`,
-`closed`, `updated_at`, `created_at`, `state`, `spent`, `total_spent`, `total_estimate`*
-
-*You can also include columns that show the total time spent by a specific user
-by following this convention: `time_username`*
-
-#### Set columns included in the merge request table
-
-```shell
-gtt report --merge_request_columns=iid --merge_request_columns=title --merge_request_columns=time_username
-```
-
-*Note: Available columns to choose from: `id`, `iid`, `title`, `project_id`,
-`project_namespace`, `description`, `labels`, `milestone`, `assignee`, `author`,
-`updated_at`, `created_at`, `state`, `spent`, `total_spent`, `total_estimate`*
-
-*You can also include columns that show the total time spent by a specific user
-by following this convention: `time_username`*
-
-#### Add columns for each project member to issue and merge request table, including their total time spent
-
-```shell
-gtt report --user_columns
-```
-
-#### Only include the given labels in the report
-
-```shell
-gtt report --include_labels=pending --include_labels=approved
-```
-
-#### Exclude the given labels from the report
-
-```shell
-gtt report --exclude_labels=bug --exclude_labels=feature
-```
-
-#### Use a proxy server
-
-```shell
-gtt report --proxy="http://localhost:8080"
-```
-
-#### Output verbose debug information
-
-```shell
-gtt report --verbose
-```
-
-## configuration
-
-The configuration uses the [yaml file format](http://www.yaml.org/spec/1.2/spec.html).
-[Click here](#i-configuration) for more information how to edit and create a config file.
-
-### Config File
-
-Here's a sample configuration file including all available options:
-
-```yaml
-# Url to the gitlab api
-# Make sure there's a trailing slash
-# [required]
-url: http://gitlab.com/api/v4/
-
-# GitLab personal api token
-# [required]
-token: abcdefghijklmnopqrst
-
-# Use a proxy server
-# defaults to false
-proxy: http://localhost:8080
-
-# Don't check SSL certificate
-# defaults to false
-insecure: true
-
-# Project
-# defaults to false
-project: namespace/projectname
-
-# Include closed issues and merge requests
-# defaults to false
-closed: true
-
-# Limit to the given milestone
-# defaults to false
-milestone: milestone_name
-
-# Exclude issues and merge requests that have the given labels
-# defaults to an empty array
-excludeByLabels:
-- wont-fix
-- ignore
-
-# Limit issues and merge requests to the given labels
-# defaults to an empty array
-includeByLabels:
-- critical
-- important
-
-# Limit the query to the given data type
-# available: issues, merge_requests
-# defaults to [issues, merge_requests]
-query:
-- issues
-
-# Limit the parts in the final report
-# available: stats, issues, merge_requests, records
-# defaults to [stats, issues, merge_requests, records]
-report:
-- stats
-- records
-
-# Hide headlines in the report
-# defaults to false
-noHeadlines: true
-
-# Hide warnings in the report
-# defaults to false
-noWarnings: true
-
-# Include issues and merge requests in the report that have no time records
-# defaults to false
-showWithoutTimes: true
-
-# Hours per day
-# defaults to 8
-hoursPerDay: 8
-
-# Days per week
-# defaults to 5
-daysPerWeek: 5
-
-# Weeks per month
-# defaults to 4
-weeksPerMonth: 4
-
-# Include the given columns in the issue table
-# See --issue_columns option for more information
-# defaults to iid, title, spent, total_estimate
-issueColumns:
-- iid
-- title
-- total_estimate
-
-# Include the given columns in the merge request table
-# See --merge_request_columns option for more information
-# defaults to iid, title, spent, total_estimate
-mergeRequestColumns:
-- iid
-- title
-- total_estimate
-
-# Include the given columns in the time record table
-# See --record_columns option for more information
-# defaults to user, date, type, iid, time
-recordColumns:
-- user
-- iid
-- time
-
-# Add columns for each project member to issue and
-# merge request table, including their total time spent
-# defaults to true
-userColumns: true
-
-# Date format
-# Click here for format options: http://momentjs.com/docs/#/displaying/format/
-# defaults to DD.MM.YYYY HH:mm:ss
-dateFormat: DD.MM.YYYY HH:mm:ss
-
-# Time format
-# See time format configuration below
-# defaults to "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
-timeFormat: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
-
-# Time format for different parts of the report
-# Instead of specifying one global time format you can specify one for every
-# part of the report and the log command
-timeFormat:
- log: "[%sign][%hours_overall]"
- stats: "[%sign][%days_overall]"
- issues: "[%sign][%hours_overall]"
- merge_requests: "[%sign][%hours_overall]"
- records: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
-
-# Change your timezone
-# default: UTC
-timezone: "Europe/Berlin"
-
-# Output type
-# Available: csv, table, markdown, pdf
-# defaults to table
-output: markdown
-
-# Exclude the given labels from the report
-# defaults to an empty array
-excludeLabels:
-- bug
-- feature
-
-# Only include the given labels in the report
-# defaults to an empty array
-includeLabels:
-- pending
-- approved
-
-# Only works if using a local configuration file!
-# Extend the global configuration if set to true, pass a string to extend
-# the configuration file stored at the given path
-# defaults to true
-extend: true
-
-# Change number of concurrent connections/http queries
-# Note: Handle with care, we don't want to spam GitLabs API too much
-# defaults to 10
-_parallel: 20
-
-# Change rows per page (max. 100)
-# defaults to 100
-_perPage: 100
-
-# Verbose output
-_verbose: false
-
-# Check access token validity up front
-_checkToken: false
-
-# Skip parsing the issue/merge_request description for time records
-_skipDescriptionParsing: false
-```
-
-### Time format
-
-##### `[%sign]`, `[%days]`, `[%hours]`, `[%minutes]`, `[%seconds]`
-
-Prints out the raw data.
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%days]d [%hours]h [%minutes]m [%seconds]s"
-```
-
-**Example outputs:**
-
-```shell
-0d 0h 30m 15s
--1d 10h 15m 0s
-```
-
-##### `[%days>string]`, `[%hours>string]`, `[%minutes>string]`, `[%seconds>string]`
-
-This is a conditional: it prints out the raw data and appends the given string if the
-data is greater than zero.
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%days>d ][%hours>h ][%minutes>m ][%seconds>s]"
-```
-
-**Example outputs:**
-
-```shell
-30m 15s
--1d 10h 15m
-```
-
-##### `[%Days]`, `[%Hours]`, `[%Minutes]`, `[%Seconds]`, `[%Days>string]`, `[%Hours>string]`, `[%Minutes>string]`, `[%Seconds>string]`
-
-First letter uppercase adds leading zeros.
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%Days]:[%Hours]:[%Minutes]:[%Seconds]"
-```
-
-**Example outputs:**
-
-```shell
-00:00:30:15
--01:10:15:00
-```
-
-##### `[%days_overall]`, `[%hours_overall]`, `[%minutes_overall]`, `[%seconds_overall]`
-
-Instead of printing out the second-, minute-, hour-, day-part of the duration this
-prints the complete time in either seconds, minutes, hours or days.
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%minutes_overall]"
-```
-
-**Example outputs:**
-
-```shell
-30.25
-1095
-```
-
-##### `[%days_overall_comma]`, `[%hours_overall_comma]`, `[%minutes_overall_comma]`, `[%seconds_overall_comma]`
-
-Use a comma for float values instead of a point. (Useful for some european countries)
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%minutes_overall]"
-```
-
-**Example outputs:**
-
-```shell
-30,25
-1095
-```
-
-##### `[%hours_overall:2]`, `[%days_overall:3]`
-
-You can ceil any float value by adding the number of decimals to keep separated with a `:`.
-
-**Example config:**
-
-```yaml
-timeFormat: "[%sign][%hours_overall:2]"
-```
-
-**Example outputs:**
-
-```shell
-0,51
-18,25
-```
-
-## how to use gtt as a library
-
-Add as a dependency using yarn:
-
-```shell
-yarn add gitlab-time-tracker
-```
-
-... or using npm:
-
-```shell
-npm install --save gitlab-time-tracker
-```
-
-Use it in your project:
-
-```js
-// require modules
-const Config = require('gitlab-time-tracker/src/include/config');
-const Report = require('gitlab-time-tracker/src/models/report');
-
-// create a default config
-let config = new Config();
-
-// set required parameters
-config.set('token', 'abcdefghijklmnopqrst');
-config.set('project', 'namespace/project');
-
-// create report
-let report = new Report(config);
-
-// query and process data
-try {
- await report.getProject()
- await report.getIssues()
- await report.getMergeRequests()
- await report.processIssues()
- await report.processMergeRequests()
-} catch (error) {
- console.log(error)
-}
-
-// access data on report
-report.issues.forEach(issue => {
- // time records on issue
- console.log(issue.times);
- // time spent of single time record
- console.log(issue.times[0].time);
-});
-report.mergeRequests.forEach(mergeRequest => {
- // time records on merge requests
- console.log(mergeRequest.times);
- // user of single time record
- console.log(mergeRequest.times[0].user);
-});
-```
-
-## dumps
-
-Starting with 1.7.4 gtt can dump the results of all API requests within a report and use it on another machine without access to the GitLab instance itself. This is very useful for debugging purposes. If you stumble upon a bug which could be unique to your set of data, please rerun the report with these options to save a dump to the given file: `--output=dump --file=/path/dump.json` Check your dump for sensitive information and provide it when asked.
-
-## faqs
-
-#### What is the difference between 'total spent' and 'spent'?
-
-`total spent` is the total amount of time spent in all issues after filtering.
-It can include times outside the queried time frame. `spent` on the other hand
-is the total amount of time spent in the given time frame.
-
-## contributing
-
-I would love to integrate unit testing in this project, but unfortunately my knowledge of
-testing in the JavaScript/Node.js world is very limited. (I'm actually a PHP dev)
-So this would be a very helpful thing to contribute but of course all contributions are very welcome.
-
-* Please work in your own branch, e.g. `integrate-awesome-feature`, `fix-awful-bug`, `improve-this-crappy-docs`
-* Create a pull request to the `dev` branch
-
-## buy me a beer
-
-gtt is an open source project, developed and maintained completely in my free time.
-
-If you enjoy using gtt you can support the project by [contributing](#contributing) to the code base,
-sharing it to your colleagues and co-workers or monetarily by [donating via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DN9YVDKFGC6V6).
-Every type of support is helpful and thank you very much if you consider supporting the project
-or already have done so. 💜
+Please support the development of this free software by [donating or sharing](https://github.com/kriskbx/gitlab-time-tracker/blob/master/documentation.md#support-further-development)!
## license
-GPL v2
+gtt is open-source software licensed under the [GPL V2 license](https://github.com/kriskbx/gitlab-time-tracker/blob/master/LICENSE).
From e84b92538570ecae6f31b3522919fbaeab7b6775 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Mon, 27 Aug 2018 12:26:04 +0200
Subject: [PATCH 38/88] Add docs link
---
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.md b/readme.md
index 5d24f99..98dec59 100755
--- a/readme.md
+++ b/readme.md
@@ -16,7 +16,7 @@ gtt is a fully featured command line interface for GitLab's time tracking featur
## documentation
-You can find the documentation [here]().
+You can find the documentation [here](https://github.com/kriskbx/gitlab-time-tracker/blob/master/documentation.md).
## support further development
From 67565ac226000921e6e3eebc2347d93bc5b93974 Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Mon, 27 Aug 2018 12:30:10 +0200
Subject: [PATCH 39/88] Center shields
---
readme.md | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/readme.md b/readme.md
index 98dec59..58eddc2 100755
--- a/readme.md
+++ b/readme.md
@@ -1,18 +1,16 @@

-
-[](https://www.npmjs.com/package/gitlab-time-tracker)
-[](https://www.npmjs.com/package/gitlab-time-tracker)
-[](https://travis-ci.org/kriskbx/gitlab-time-tracker)
-[](https://coveralls.io/github/kriskbx/gitlab-time-tracker)
-[](https://www.npmjs.com/package/gitlab-time-tracker)
-
+
+
+
+
+
## introduction
-gtt is a fully featured command line interface for GitLab's time tracking feature. It monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab. **Looking for a Graphical User Interface? Check out the [gtt taskbar/menubar app](https://github.com/kriskbx/gitlab-time-tracker-taskbar) for Linux, Mac & Windows!**
+gtt is a fully featured command line interface for GitLab's time tracking feature. It monitors the time you spent on an issue or merge request locally and syncs it to GitLab. It also allows you to create reports in various formats from time tracking data stored on GitLab. **Looking for a graphical user interface? Check out the [gtt taskbar/menubar app](https://github.com/kriskbx/gitlab-time-tracker-taskbar) for Linux, Mac & Windows!**
## documentation
From 40298bf17ef2586d44f5abffab296b4454b04e7a Mon Sep 17 00:00:00 2001
From: kriskbx
Date: Mon, 27 Aug 2018 14:42:10 +0200
Subject: [PATCH 40/88] Add new preview gif
---
preview/demo.gif | Bin 0 -> 1668403 bytes
preview/reports.gif | Bin 2143409 -> 0 bytes
preview/tracking.gif | Bin 5143212 -> 0 bytes
readme.md | 2 ++
4 files changed, 2 insertions(+)
create mode 100644 preview/demo.gif
delete mode 100755 preview/reports.gif
delete mode 100755 preview/tracking.gif
diff --git a/preview/demo.gif b/preview/demo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6904fa15e2bf1c6414308221398977e9f88cb725
GIT binary patch
literal 1668403
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