aboutsummaryrefslogtreecommitdiff
path: root/node_modules/boxen
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/boxen
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
downloadwallet-core-7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027.tar.xz
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/boxen')
-rw-r--r--node_modules/boxen/index.js138
-rw-r--r--node_modules/boxen/license21
-rw-r--r--node_modules/boxen/node_modules/camelcase/index.js64
-rw-r--r--node_modules/boxen/node_modules/camelcase/license21
-rw-r--r--node_modules/boxen/node_modules/camelcase/package.json42
-rw-r--r--node_modules/boxen/node_modules/camelcase/readme.md57
-rw-r--r--node_modules/boxen/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/boxen/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/boxen/node_modules/is-fullwidth-code-point/package.json45
-rw-r--r--node_modules/boxen/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/boxen/node_modules/string-width/index.js35
-rw-r--r--node_modules/boxen/node_modules/string-width/license21
-rw-r--r--node_modules/boxen/node_modules/string-width/package.json58
-rw-r--r--node_modules/boxen/node_modules/string-width/readme.md42
-rw-r--r--node_modules/boxen/package.json50
-rw-r--r--node_modules/boxen/readme.md175
16 files changed, 875 insertions, 0 deletions
diff --git a/node_modules/boxen/index.js b/node_modules/boxen/index.js
new file mode 100644
index 000000000..2233e3d7b
--- /dev/null
+++ b/node_modules/boxen/index.js
@@ -0,0 +1,138 @@
+'use strict';
+const stringWidth = require('string-width');
+const chalk = require('chalk');
+const widestLine = require('widest-line');
+const cliBoxes = require('cli-boxes');
+const camelCase = require('camelcase');
+const ansiAlign = require('ansi-align');
+const termSize = require('term-size');
+
+const getObject = detail => {
+ let obj;
+
+ if (typeof detail === 'number') {
+ obj = {
+ top: detail,
+ right: detail * 3,
+ bottom: detail,
+ left: detail * 3
+ };
+ } else {
+ obj = Object.assign({
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ }, detail);
+ }
+
+ return obj;
+};
+
+const getBorderChars = borderStyle => {
+ const sides = [
+ 'topLeft',
+ 'topRight',
+ 'bottomRight',
+ 'bottomLeft',
+ 'vertical',
+ 'horizontal'
+ ];
+
+ let chars;
+
+ if (typeof borderStyle === 'string') {
+ chars = cliBoxes[borderStyle];
+
+ if (!chars) {
+ throw new TypeError(`Invalid border style: ${borderStyle}`);
+ }
+ } else {
+ sides.forEach(key => {
+ if (!borderStyle[key] || typeof borderStyle[key] !== 'string') {
+ throw new TypeError(`Invalid border style: ${key}`);
+ }
+ });
+
+ chars = borderStyle;
+ }
+
+ return chars;
+};
+
+const getBackgroundColorName = x => camelCase('bg', x);
+
+module.exports = (text, opts) => {
+ opts = Object.assign({
+ padding: 0,
+ borderStyle: 'single',
+ dimBorder: false,
+ align: 'left',
+ float: 'left'
+ }, opts);
+
+ if (opts.backgroundColor) {
+ opts.backgroundColor = getBackgroundColorName(opts.backgroundColor);
+ }
+
+ if (opts.borderColor && !chalk[opts.borderColor]) {
+ throw new Error(`${opts.borderColor} is not a valid borderColor`);
+ }
+
+ if (opts.backgroundColor && !chalk[opts.backgroundColor]) {
+ throw new Error(`${opts.backgroundColor} is not a valid backgroundColor`);
+ }
+
+ const chars = getBorderChars(opts.borderStyle);
+ const padding = getObject(opts.padding);
+ const margin = getObject(opts.margin);
+
+ const colorizeBorder = x => {
+ const ret = opts.borderColor ? chalk[opts.borderColor](x) : x;
+ return opts.dimBorder ? chalk.dim(ret) : ret;
+ };
+
+ const colorizeContent = x => opts.backgroundColor ? chalk[opts.backgroundColor](x) : x;
+
+ text = ansiAlign(text, {align: opts.align});
+
+ const NL = '\n';
+ const PAD = ' ';
+
+ let lines = text.split(NL);
+
+ if (padding.top > 0) {
+ lines = Array(padding.top).fill('').concat(lines);
+ }
+
+ if (padding.bottom > 0) {
+ lines = lines.concat(Array(padding.bottom).fill(''));
+ }
+
+ const contentWidth = widestLine(text) + padding.left + padding.right;
+ const paddingLeft = PAD.repeat(padding.left);
+ const columns = termSize().columns;
+ let marginLeft = PAD.repeat(margin.left);
+
+ if (opts.float === 'center') {
+ const padWidth = (columns - contentWidth) / 2;
+ marginLeft = PAD.repeat(padWidth);
+ } else if (opts.float === 'right') {
+ const padWidth = Math.max(columns - contentWidth - 2, 0);
+ marginLeft = PAD.repeat(padWidth);
+ }
+
+ const horizontal = chars.horizontal.repeat(contentWidth);
+ const top = colorizeBorder(NL.repeat(margin.top) + marginLeft + chars.topLeft + horizontal + chars.topRight);
+ const bottom = colorizeBorder(marginLeft + chars.bottomLeft + horizontal + chars.bottomRight + NL.repeat(margin.bottom));
+ const side = colorizeBorder(chars.vertical);
+
+ const middle = lines.map(line => {
+ const paddingRight = PAD.repeat(contentWidth - stringWidth(line) - padding.left);
+ return marginLeft + side + colorizeContent(paddingLeft + line + paddingRight) + side;
+ }).join(NL);
+
+ return top + NL + middle + NL + bottom;
+};
+
+module.exports._borderStyles = cliBoxes;
diff --git a/node_modules/boxen/license b/node_modules/boxen/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/boxen/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/boxen/node_modules/camelcase/index.js b/node_modules/boxen/node_modules/camelcase/index.js
new file mode 100644
index 000000000..c8492a228
--- /dev/null
+++ b/node_modules/boxen/node_modules/camelcase/index.js
@@ -0,0 +1,64 @@
+'use strict';
+
+function preserveCamelCase(str) {
+ let isLastCharLower = false;
+ let isLastCharUpper = false;
+ let isLastLastCharUpper = false;
+
+ for (let i = 0; i < str.length; i++) {
+ const c = str[i];
+
+ if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {
+ str = str.substr(0, i) + '-' + str.substr(i);
+ isLastCharLower = false;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = true;
+ i++;
+ } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {
+ str = str.substr(0, i - 1) + '-' + str.substr(i - 1);
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = false;
+ isLastCharLower = true;
+ } else {
+ isLastCharLower = c.toLowerCase() === c;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = c.toUpperCase() === c;
+ }
+ }
+
+ return str;
+}
+
+module.exports = function (str) {
+ if (arguments.length > 1) {
+ str = Array.from(arguments)
+ .map(x => x.trim())
+ .filter(x => x.length)
+ .join('-');
+ } else {
+ str = str.trim();
+ }
+
+ if (str.length === 0) {
+ return '';
+ }
+
+ if (str.length === 1) {
+ return str.toLowerCase();
+ }
+
+ if (/^[a-z0-9]+$/.test(str)) {
+ return str;
+ }
+
+ const hasUpperCase = str !== str.toLowerCase();
+
+ if (hasUpperCase) {
+ str = preserveCamelCase(str);
+ }
+
+ return str
+ .replace(/^[_.\- ]+/, '')
+ .toLowerCase()
+ .replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase());
+};
diff --git a/node_modules/boxen/node_modules/camelcase/license b/node_modules/boxen/node_modules/camelcase/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/boxen/node_modules/camelcase/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/boxen/node_modules/camelcase/package.json b/node_modules/boxen/node_modules/camelcase/package.json
new file mode 100644
index 000000000..d4cfe32e1
--- /dev/null
+++ b/node_modules/boxen/node_modules/camelcase/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "camelcase",
+ "version": "4.1.0",
+ "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar",
+ "license": "MIT",
+ "repository": "sindresorhus/camelcase",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "camelcase",
+ "camel-case",
+ "camel",
+ "case",
+ "dash",
+ "hyphen",
+ "dot",
+ "underscore",
+ "separator",
+ "string",
+ "text",
+ "convert"
+ ],
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/boxen/node_modules/camelcase/readme.md b/node_modules/boxen/node_modules/camelcase/readme.md
new file mode 100644
index 000000000..0610dc627
--- /dev/null
+++ b/node_modules/boxen/node_modules/camelcase/readme.md
@@ -0,0 +1,57 @@
+# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
+
+> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar`
+
+
+## Install
+
+```
+$ npm install --save camelcase
+```
+
+
+## Usage
+
+```js
+const camelCase = require('camelcase');
+
+camelCase('foo-bar');
+//=> 'fooBar'
+
+camelCase('foo_bar');
+//=> 'fooBar'
+
+camelCase('Foo-Bar');
+//=> 'fooBar'
+
+camelCase('--foo.bar');
+//=> 'fooBar'
+
+camelCase('__foo__bar__');
+//=> 'fooBar'
+
+camelCase('foo bar');
+//=> 'fooBar'
+
+console.log(process.argv[3]);
+//=> '--foo-bar'
+camelCase(process.argv[3]);
+//=> 'fooBar'
+
+camelCase('foo', 'bar');
+//=> 'fooBar'
+
+camelCase('__foo__', '--bar');
+//=> 'fooBar'
+```
+
+
+## Related
+
+- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
+- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/boxen/node_modules/is-fullwidth-code-point/index.js b/node_modules/boxen/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 000000000..d506327c3
--- /dev/null
+++ b/node_modules/boxen/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/boxen/node_modules/is-fullwidth-code-point/license b/node_modules/boxen/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/boxen/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/boxen/node_modules/is-fullwidth-code-point/package.json b/node_modules/boxen/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 000000000..3049d9e03
--- /dev/null
+++ b/node_modules/boxen/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "is-fullwidth-code-point",
+ "version": "2.0.0",
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "license": "MIT",
+ "repository": "sindresorhus/is-fullwidth-code-point",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/boxen/node_modules/is-fullwidth-code-point/readme.md b/node_modules/boxen/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 000000000..093b0281b
--- /dev/null
+++ b/node_modules/boxen/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/boxen/node_modules/string-width/index.js b/node_modules/boxen/node_modules/string-width/index.js
new file mode 100644
index 000000000..25a8943c1
--- /dev/null
+++ b/node_modules/boxen/node_modules/string-width/index.js
@@ -0,0 +1,35 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+module.exports = str => {
+ if (typeof str !== 'string' || str.length === 0) {
+ return 0;
+ }
+
+ let width = 0;
+
+ str = stripAnsi(str);
+
+ for (let i = 0; i < str.length; i++) {
+ const code = str.codePointAt(i);
+
+ // ignore control characters
+ if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
+ continue;
+ }
+
+ // surrogates
+ if (code >= 0x10000) {
+ i++;
+ }
+
+ if (isFullwidthCodePoint(code)) {
+ width += 2;
+ } else {
+ width++;
+ }
+ }
+
+ return width;
+};
diff --git a/node_modules/boxen/node_modules/string-width/license b/node_modules/boxen/node_modules/string-width/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/boxen/node_modules/string-width/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/boxen/node_modules/string-width/package.json b/node_modules/boxen/node_modules/string-width/package.json
new file mode 100644
index 000000000..a590d2e0b
--- /dev/null
+++ b/node_modules/boxen/node_modules/string-width/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "string-width",
+ "version": "2.0.0",
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "license": "MIT",
+ "repository": "sindresorhus/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/boxen/node_modules/string-width/readme.md b/node_modules/boxen/node_modules/string-width/readme.md
new file mode 100644
index 000000000..1ab42c935
--- /dev/null
+++ b/node_modules/boxen/node_modules/string-width/readme.md
@@ -0,0 +1,42 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install --save string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/boxen/package.json b/node_modules/boxen/package.json
new file mode 100644
index 000000000..a056e069c
--- /dev/null
+++ b/node_modules/boxen/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "boxen",
+ "version": "1.1.0",
+ "description": "Create boxes in the terminal",
+ "license": "MIT",
+ "repository": "sindresorhus/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && nyc ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "cli",
+ "box",
+ "boxes",
+ "terminal",
+ "term",
+ "console",
+ "ascii",
+ "unicode",
+ "border",
+ "text"
+ ],
+ "dependencies": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^1.1.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^0.1.0",
+ "widest-line": "^1.0.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "nyc": "^10.3.0",
+ "xo": "*"
+ },
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/boxen/readme.md b/node_modules/boxen/readme.md
new file mode 100644
index 000000000..abb78bff1
--- /dev/null
+++ b/node_modules/boxen/readme.md
@@ -0,0 +1,175 @@
+# <img src="screenshot.png" width="400" alt="boxen">
+
+> Create boxes in the terminal
+
+[![Build Status](https://travis-ci.org/sindresorhus/boxen.svg?branch=master)](https://travis-ci.org/sindresorhus/boxen)
+
+
+## Install
+
+```
+$ npm install --save boxen
+```
+
+
+## Usage
+
+```js
+const boxen = require('boxen');
+
+console.log(boxen('unicorn', {padding: 1}));
+/*
+┌─────────────┐
+│ │
+│ unicorn │
+│ │
+└─────────────┘
+*/
+
+console.log(boxen('unicorn', {padding: 1, margin: 1, borderStyle: 'double'}));
+/*
+
+ ╔═════════════╗
+ ║ ║
+ ║ unicorn ║
+ ║ ║
+ ╚═════════════╝
+
+*/
+```
+
+
+## API
+
+### boxen(input, [options])
+
+#### input
+
+Type: `string`
+
+Text inside the box.
+
+#### options
+
+##### borderColor
+
+Type: `string`<br>
+Values: `black` `red` `green` `yellow` `blue` `magenta` `cyan` `white` `gray`
+
+Color of the box border.
+
+##### borderStyle
+
+Type: `string` `object`<br>
+Default: `single`<br>
+Values:
+- `single`
+```
+┌───┐
+│foo│
+└───┘
+```
+- `double`
+```
+╔═══╗
+║foo║
+╚═══╝
+```
+- `round` (`single` sides with round corners)
+```
+╭───╮
+│foo│
+╰───╯
+```
+- `single-double` (`single` on top and bottom, `double` on right and left)
+```
+╓───╖
+║foo║
+╙───╜
+```
+- `double-single` (`double` on top and bottom, `single` on right and left)
+```
+╒═══╕
+│foo│
+╘═══╛
+```
+- `classic`
+```
++---+
+|foo|
++---+
+```
+
+Style of the box border.
+
+Can be any of the above predefined styles or an object with the following keys:
+
+```js
+{
+ topLeft: '+',
+ topRight: '+',
+ bottomLeft: '+',
+ bottomRight: '+',
+ horizontal: '-',
+ vertical: '|'
+}
+```
+
+##### dimBorder
+
+Type: `boolean`<br>
+Default: `false`
+
+Reduce opacity of the border.
+
+##### padding
+
+Type: `number` `object`<br>
+Default: `0`
+
+Space between the text and box border.
+
+Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right padding is 3 times the top/bottom to make it look nice.
+
+##### margin
+
+Type: `number` `object`<br>
+Default: `0`
+
+Space around the box.
+
+Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right margin is 3 times the top/bottom to make it look nice.
+
+##### float
+
+Type: `string`<br>
+Values: `right` `center` `left`<br>
+Default: `left`
+
+Float the box on the available terminal screen space.
+
+##### backgroundColor
+
+Type: `string`<br>
+Values: `black` `red` `green` `yellow` `blue` `magenta` `cyan` `white`
+
+Color of the background.
+
+##### align
+
+Type: `string`<br>
+Default: `left`<br>
+Values: `left` `center` `right`
+
+Align the text in the box based on the widest line.
+
+
+## Related
+
+- [boxen-cli](https://github.com/sindresorhus/boxen-cli) - CLI for this module
+- [cli-boxes](https://github.com/sindresorhus/cli-boxes) - Boxes for use in the terminal
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)