| 'use strict'; |
| |
| function _typeof(obj) { |
| if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { |
| _typeof = function (obj) { |
| return typeof obj; |
| }; |
| } else { |
| _typeof = function (obj) { |
| return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; |
| }; |
| } |
| |
| return _typeof(obj); |
| } |
| |
| function createCommonjsModule(fn, module) { |
| return module = { exports: {} }, fn(module, module.exports), module.exports; |
| } |
| |
| var clone_1 = createCommonjsModule(function (module) { |
| var clone = function () { |
| /** |
| * Clones (copies) an Object using deep copying. |
| * |
| * This function supports circular references by default, but if you are certain |
| * there are no circular references in your object, you can save some CPU time |
| * by calling clone(obj, false). |
| * |
| * Caution: if `circular` is false and `parent` contains circular references, |
| * your program may enter an infinite loop and crash. |
| * |
| * @param `parent` - the object to be cloned |
| * @param `circular` - set to true if the object to be cloned may contain |
| * circular references. (optional - true by default) |
| * @param `depth` - set to a number if the object is only to be cloned to |
| * a particular depth. (optional - defaults to Infinity) |
| * @param `prototype` - sets the prototype to be used when cloning an object. |
| * (optional - defaults to parent prototype). |
| */ |
| |
| function clone(parent, circular, depth, prototype) { |
| var filter; |
| |
| if (_typeof(circular) === 'object') { |
| depth = circular.depth; |
| prototype = circular.prototype; |
| filter = circular.filter; |
| circular = circular.circular; |
| } // maintain two arrays for circular references, where corresponding parents |
| // and children have the same index |
| |
| |
| var allParents = []; |
| var allChildren = []; |
| var useBuffer = typeof Buffer != 'undefined'; |
| if (typeof circular == 'undefined') circular = true; |
| if (typeof depth == 'undefined') depth = Infinity; // recurse this function so we don't reset allParents and allChildren |
| |
| function _clone(parent, depth) { |
| // cloning null always returns null |
| if (parent === null) return null; |
| if (depth == 0) return parent; |
| var child; |
| var proto; |
| |
| if (_typeof(parent) != 'object') { |
| return parent; |
| } |
| |
| if (clone.__isArray(parent)) { |
| child = []; |
| } else if (clone.__isRegExp(parent)) { |
| child = new RegExp(parent.source, __getRegExpFlags(parent)); |
| if (parent.lastIndex) child.lastIndex = parent.lastIndex; |
| } else if (clone.__isDate(parent)) { |
| child = new Date(parent.getTime()); |
| } else if (useBuffer && Buffer.isBuffer(parent)) { |
| if (Buffer.allocUnsafe) { |
| // Node.js >= 4.5.0 |
| child = Buffer.allocUnsafe(parent.length); |
| } else { |
| // Older Node.js versions |
| child = new Buffer(parent.length); |
| } |
| |
| parent.copy(child); |
| return child; |
| } else { |
| if (typeof prototype == 'undefined') { |
| proto = Object.getPrototypeOf(parent); |
| child = Object.create(proto); |
| } else { |
| child = Object.create(prototype); |
| proto = prototype; |
| } |
| } |
| |
| if (circular) { |
| var index = allParents.indexOf(parent); |
| |
| if (index != -1) { |
| return allChildren[index]; |
| } |
| |
| allParents.push(parent); |
| allChildren.push(child); |
| } |
| |
| for (var i in parent) { |
| var attrs; |
| |
| if (proto) { |
| attrs = Object.getOwnPropertyDescriptor(proto, i); |
| } |
| |
| if (attrs && attrs.set == null) { |
| continue; |
| } |
| |
| child[i] = _clone(parent[i], depth - 1); |
| } |
| |
| return child; |
| } |
| |
| return _clone(parent, depth); |
| } |
| /** |
| * Simple flat clone using prototype, accepts only objects, usefull for property |
| * override on FLAT configuration object (no nested props). |
| * |
| * USE WITH CAUTION! This may not behave as you wish if you do not know how this |
| * works. |
| */ |
| |
| |
| clone.clonePrototype = function clonePrototype(parent) { |
| if (parent === null) return null; |
| |
| var c = function c() {}; |
| |
| c.prototype = parent; |
| return new c(); |
| }; // private utility functions |
| |
| |
| function __objToStr(o) { |
| return Object.prototype.toString.call(o); |
| } |
| clone.__objToStr = __objToStr; |
| |
| function __isDate(o) { |
| return _typeof(o) === 'object' && __objToStr(o) === '[object Date]'; |
| } |
| clone.__isDate = __isDate; |
| |
| function __isArray(o) { |
| return _typeof(o) === 'object' && __objToStr(o) === '[object Array]'; |
| } |
| clone.__isArray = __isArray; |
| |
| function __isRegExp(o) { |
| return _typeof(o) === 'object' && __objToStr(o) === '[object RegExp]'; |
| } |
| clone.__isRegExp = __isRegExp; |
| |
| function __getRegExpFlags(re) { |
| var flags = ''; |
| if (re.global) flags += 'g'; |
| if (re.ignoreCase) flags += 'i'; |
| if (re.multiline) flags += 'm'; |
| return flags; |
| } |
| clone.__getRegExpFlags = __getRegExpFlags; |
| return clone; |
| }(); |
| |
| if (module.exports) { |
| module.exports = clone; |
| } |
| }); |
| |
| var defaults = function defaults(options, _defaults) { |
| options = options || {}; |
| Object.keys(_defaults).forEach(function (key) { |
| if (typeof options[key] === 'undefined') { |
| options[key] = clone_1(_defaults[key]); |
| } |
| }); |
| return options; |
| }; |
| |
| var combining = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB], [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F], [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169], [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD], [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F], [0xE0100, 0xE01EF]]; |
| |
| var DEFAULTS = { |
| nul: 0, |
| control: 0 |
| }; |
| |
| var config = function config(opts) { |
| opts = defaults(opts || {}, DEFAULTS); |
| return function wcwidth(str) { |
| return wcswidth(str, opts); |
| }; |
| }; |
| /* |
| * The following functions define the column width of an ISO 10646 |
| * character as follows: |
| * - The null character (U+0000) has a column width of 0. |
| * - Other C0/C1 control characters and DEL will lead to a return value |
| * of -1. |
| * - Non-spacing and enclosing combining characters (general category |
| * code Mn or Me in the |
| * Unicode database) have a column width of 0. |
| * - SOFT HYPHEN (U+00AD) has a column width of 1. |
| * - Other format characters (general category code Cf in the Unicode |
| * database) and ZERO WIDTH |
| * SPACE (U+200B) have a column width of 0. |
| * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF) |
| * have a column width of 0. |
| * - Spacing characters in the East Asian Wide (W) or East Asian |
| * Full-width (F) category as |
| * defined in Unicode Technical Report #11 have a column width of 2. |
| * - All remaining characters (including all printable ISO 8859-1 and |
| * WGL4 characters, Unicode control characters, etc.) have a column |
| * width of 1. |
| * This implementation assumes that characters are encoded in ISO 10646. |
| */ |
| |
| |
| function wcswidth(str, opts) { |
| if (typeof str !== 'string') return wcwidth(str, opts); |
| var s = 0; |
| |
| for (var i = 0; i < str.length; i++) { |
| var n = wcwidth(str.charCodeAt(i), opts); |
| if (n < 0) return -1; |
| s += n; |
| } |
| |
| return s; |
| } |
| |
| function wcwidth(ucs, opts) { |
| // test for 8-bit control characters |
| if (ucs === 0) return opts.nul; |
| if (ucs < 32 || ucs >= 0x7f && ucs < 0xa0) return opts.control; // binary search in table of non-spacing characters |
| |
| if (bisearch(ucs)) return 0; // if we arrive here, ucs is not a combining or C0/C1 control character |
| |
| return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || // Hangul Jamo init. consonants |
| ucs == 0x2329 || ucs == 0x232a || ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f || // CJK ... Yi |
| ucs >= 0xac00 && ucs <= 0xd7a3 || // Hangul Syllables |
| ucs >= 0xf900 && ucs <= 0xfaff || // CJK Compatibility Ideographs |
| ucs >= 0xfe10 && ucs <= 0xfe19 || // Vertical forms |
| ucs >= 0xfe30 && ucs <= 0xfe6f || // CJK Compatibility Forms |
| ucs >= 0xff00 && ucs <= 0xff60 || // Fullwidth Forms |
| ucs >= 0xffe0 && ucs <= 0xffe6 || ucs >= 0x20000 && ucs <= 0x2fffd || ucs >= 0x30000 && ucs <= 0x3fffd)); |
| } |
| |
| function bisearch(ucs) { |
| var min = 0; |
| var max = combining.length - 1; |
| var mid; |
| if (ucs < combining[0][0] || ucs > combining[max][1]) return false; |
| |
| while (max >= min) { |
| mid = Math.floor((min + max) / 2); |
| if (ucs > combining[mid][1]) min = mid + 1;else if (ucs < combining[mid][0]) max = mid - 1;else return true; |
| } |
| |
| return false; |
| } |
| |
| // Generated by CoffeeScript 2.4.1 |
| var _pad; |
| |
| _pad = function pad(text, length, options) { |
| var escapecolor, invert, padlength, textnocolors; |
| |
| if (options == null) { |
| options = {}; |
| } |
| |
| invert = typeof text === 'number'; |
| |
| if (invert) { |
| var _ref = [text, length]; |
| length = _ref[0]; |
| text = _ref[1]; |
| } |
| |
| if (typeof options === 'string') { |
| options = { |
| "char": options |
| }; |
| } |
| |
| if (options["char"] == null) { |
| options["char"] = ' '; |
| } |
| |
| if (options.strip == null) { |
| options.strip = false; |
| } |
| |
| if (typeof text !== 'string') { |
| text = text.toString(); |
| } |
| |
| textnocolors = null; |
| _pad = ''; |
| |
| if (options.colors) { |
| escapecolor = /\x1B\[(?:[0-9]{1,2}(?:;[0-9]{1,2})?)?[m|K]/g; |
| textnocolors = text.replace(escapecolor, ''); |
| } |
| |
| padlength = options.fixed_width ? length - (textnocolors || text).length : length - config(options.wcwidth_options)(textnocolors || text); |
| |
| if (padlength < 0) { |
| if (options.strip) { |
| if (invert) { |
| return text.substr(length * -1); |
| } else { |
| return text.substr(0, length); |
| } |
| } |
| |
| return text; |
| } |
| |
| _pad += options["char"].repeat(padlength); |
| |
| if (invert) { |
| return _pad + text; |
| } else { |
| return text + _pad; |
| } |
| }; |
| |
| var _pad$1 = _pad; |
| |
| module.exports = _pad$1; |