1 | ;
|
2 |
|
3 | function _typeof(obj) {
|
4 | if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
5 | _typeof = function (obj) {
|
6 | return typeof obj;
|
7 | };
|
8 | } else {
|
9 | _typeof = function (obj) {
|
10 | return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
11 | };
|
12 | }
|
13 |
|
14 | return _typeof(obj);
|
15 | }
|
16 |
|
17 | function createCommonjsModule(fn, module) {
|
18 | return module = { exports: {} }, fn(module, module.exports), module.exports;
|
19 | }
|
20 |
|
21 | var clone_1 = createCommonjsModule(function (module) {
|
22 | var clone = function () {
|
23 | /**
|
24 | * Clones (copies) an Object using deep copying.
|
25 | *
|
26 | * This function supports circular references by default, but if you are certain
|
27 | * there are no circular references in your object, you can save some CPU time
|
28 | * by calling clone(obj, false).
|
29 | *
|
30 | * Caution: if `circular` is false and `parent` contains circular references,
|
31 | * your program may enter an infinite loop and crash.
|
32 | *
|
33 | * @param `parent` - the object to be cloned
|
34 | * @param `circular` - set to true if the object to be cloned may contain
|
35 | * circular references. (optional - true by default)
|
36 | * @param `depth` - set to a number if the object is only to be cloned to
|
37 | * a particular depth. (optional - defaults to Infinity)
|
38 | * @param `prototype` - sets the prototype to be used when cloning an object.
|
39 | * (optional - defaults to parent prototype).
|
40 | */
|
41 |
|
42 | function clone(parent, circular, depth, prototype) {
|
43 | var filter;
|
44 |
|
45 | if (_typeof(circular) === 'object') {
|
46 | depth = circular.depth;
|
47 | prototype = circular.prototype;
|
48 | filter = circular.filter;
|
49 | circular = circular.circular;
|
50 | } // maintain two arrays for circular references, where corresponding parents
|
51 | // and children have the same index
|
52 |
|
53 |
|
54 | var allParents = [];
|
55 | var allChildren = [];
|
56 | var useBuffer = typeof Buffer != 'undefined';
|
57 | if (typeof circular == 'undefined') circular = true;
|
58 | if (typeof depth == 'undefined') depth = Infinity; // recurse this function so we don't reset allParents and allChildren
|
59 |
|
60 | function _clone(parent, depth) {
|
61 | // cloning null always returns null
|
62 | if (parent === null) return null;
|
63 | if (depth == 0) return parent;
|
64 | var child;
|
65 | var proto;
|
66 |
|
67 | if (_typeof(parent) != 'object') {
|
68 | return parent;
|
69 | }
|
70 |
|
71 | if (clone.__isArray(parent)) {
|
72 | child = [];
|
73 | } else if (clone.__isRegExp(parent)) {
|
74 | child = new RegExp(parent.source, __getRegExpFlags(parent));
|
75 | if (parent.lastIndex) child.lastIndex = parent.lastIndex;
|
76 | } else if (clone.__isDate(parent)) {
|
77 | child = new Date(parent.getTime());
|
78 | } else if (useBuffer && Buffer.isBuffer(parent)) {
|
79 | if (Buffer.allocUnsafe) {
|
80 | // Node.js >= 4.5.0
|
81 | child = Buffer.allocUnsafe(parent.length);
|
82 | } else {
|
83 | // Older Node.js versions
|
84 | child = new Buffer(parent.length);
|
85 | }
|
86 |
|
87 | parent.copy(child);
|
88 | return child;
|
89 | } else {
|
90 | if (typeof prototype == 'undefined') {
|
91 | proto = Object.getPrototypeOf(parent);
|
92 | child = Object.create(proto);
|
93 | } else {
|
94 | child = Object.create(prototype);
|
95 | proto = prototype;
|
96 | }
|
97 | }
|
98 |
|
99 | if (circular) {
|
100 | var index = allParents.indexOf(parent);
|
101 |
|
102 | if (index != -1) {
|
103 | return allChildren[index];
|
104 | }
|
105 |
|
106 | allParents.push(parent);
|
107 | allChildren.push(child);
|
108 | }
|
109 |
|
110 | for (var i in parent) {
|
111 | var attrs;
|
112 |
|
113 | if (proto) {
|
114 | attrs = Object.getOwnPropertyDescriptor(proto, i);
|
115 | }
|
116 |
|
117 | if (attrs && attrs.set == null) {
|
118 | continue;
|
119 | }
|
120 |
|
121 | child[i] = _clone(parent[i], depth - 1);
|
122 | }
|
123 |
|
124 | return child;
|
125 | }
|
126 |
|
127 | return _clone(parent, depth);
|
128 | }
|
129 | /**
|
130 | * Simple flat clone using prototype, accepts only objects, usefull for property
|
131 | * override on FLAT configuration object (no nested props).
|
132 | *
|
133 | * USE WITH CAUTION! This may not behave as you wish if you do not know how this
|
134 | * works.
|
135 | */
|
136 |
|
137 |
|
138 | clone.clonePrototype = function clonePrototype(parent) {
|
139 | if (parent === null) return null;
|
140 |
|
141 | var c = function c() {};
|
142 |
|
143 | c.prototype = parent;
|
144 | return new c();
|
145 | }; // private utility functions
|
146 |
|
147 |
|
148 | function __objToStr(o) {
|
149 | return Object.prototype.toString.call(o);
|
150 | }
|
151 | clone.__objToStr = __objToStr;
|
152 |
|
153 | function __isDate(o) {
|
154 | return _typeof(o) === 'object' && __objToStr(o) === '[object Date]';
|
155 | }
|
156 | clone.__isDate = __isDate;
|
157 |
|
158 | function __isArray(o) {
|
159 | return _typeof(o) === 'object' && __objToStr(o) === '[object Array]';
|
160 | }
|
161 | clone.__isArray = __isArray;
|
162 |
|
163 | function __isRegExp(o) {
|
164 | return _typeof(o) === 'object' && __objToStr(o) === '[object RegExp]';
|
165 | }
|
166 | clone.__isRegExp = __isRegExp;
|
167 |
|
168 | function __getRegExpFlags(re) {
|
169 | var flags = '';
|
170 | if (re.global) flags += 'g';
|
171 | if (re.ignoreCase) flags += 'i';
|
172 | if (re.multiline) flags += 'm';
|
173 | return flags;
|
174 | }
|
175 | clone.__getRegExpFlags = __getRegExpFlags;
|
176 | return clone;
|
177 | }();
|
178 |
|
179 | if (module.exports) {
|
180 | module.exports = clone;
|
181 | }
|
182 | });
|
183 |
|
184 | var defaults = function defaults(options, _defaults) {
|
185 | options = options || {};
|
186 | Object.keys(_defaults).forEach(function (key) {
|
187 | if (typeof options[key] === 'undefined') {
|
188 | options[key] = clone_1(_defaults[key]);
|
189 | }
|
190 | });
|
191 | return options;
|
192 | };
|
193 |
|
194 | 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]];
|
195 |
|
196 | var DEFAULTS = {
|
197 | nul: 0,
|
198 | control: 0
|
199 | };
|
200 |
|
201 | var config = function config(opts) {
|
202 | opts = defaults(opts || {}, DEFAULTS);
|
203 | return function wcwidth(str) {
|
204 | return wcswidth(str, opts);
|
205 | };
|
206 | };
|
207 | /*
|
208 | * The following functions define the column width of an ISO 10646
|
209 | * character as follows:
|
210 | * - The null character (U+0000) has a column width of 0.
|
211 | * - Other C0/C1 control characters and DEL will lead to a return value
|
212 | * of -1.
|
213 | * - Non-spacing and enclosing combining characters (general category
|
214 | * code Mn or Me in the
|
215 | * Unicode database) have a column width of 0.
|
216 | * - SOFT HYPHEN (U+00AD) has a column width of 1.
|
217 | * - Other format characters (general category code Cf in the Unicode
|
218 | * database) and ZERO WIDTH
|
219 | * SPACE (U+200B) have a column width of 0.
|
220 | * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
|
221 | * have a column width of 0.
|
222 | * - Spacing characters in the East Asian Wide (W) or East Asian
|
223 | * Full-width (F) category as
|
224 | * defined in Unicode Technical Report #11 have a column width of 2.
|
225 | * - All remaining characters (including all printable ISO 8859-1 and
|
226 | * WGL4 characters, Unicode control characters, etc.) have a column
|
227 | * width of 1.
|
228 | * This implementation assumes that characters are encoded in ISO 10646.
|
229 | */
|
230 |
|
231 |
|
232 | function wcswidth(str, opts) {
|
233 | if (typeof str !== 'string') return wcwidth(str, opts);
|
234 | var s = 0;
|
235 |
|
236 | for (var i = 0; i < str.length; i++) {
|
237 | var n = wcwidth(str.charCodeAt(i), opts);
|
238 | if (n < 0) return -1;
|
239 | s += n;
|
240 | }
|
241 |
|
242 | return s;
|
243 | }
|
244 |
|
245 | function wcwidth(ucs, opts) {
|
246 | // test for 8-bit control characters
|
247 | if (ucs === 0) return opts.nul;
|
248 | if (ucs < 32 || ucs >= 0x7f && ucs < 0xa0) return opts.control; // binary search in table of non-spacing characters
|
249 |
|
250 | if (bisearch(ucs)) return 0; // if we arrive here, ucs is not a combining or C0/C1 control character
|
251 |
|
252 | return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || // Hangul Jamo init. consonants
|
253 | ucs == 0x2329 || ucs == 0x232a || ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f || // CJK ... Yi
|
254 | ucs >= 0xac00 && ucs <= 0xd7a3 || // Hangul Syllables
|
255 | ucs >= 0xf900 && ucs <= 0xfaff || // CJK Compatibility Ideographs
|
256 | ucs >= 0xfe10 && ucs <= 0xfe19 || // Vertical forms
|
257 | ucs >= 0xfe30 && ucs <= 0xfe6f || // CJK Compatibility Forms
|
258 | ucs >= 0xff00 && ucs <= 0xff60 || // Fullwidth Forms
|
259 | ucs >= 0xffe0 && ucs <= 0xffe6 || ucs >= 0x20000 && ucs <= 0x2fffd || ucs >= 0x30000 && ucs <= 0x3fffd));
|
260 | }
|
261 |
|
262 | function bisearch(ucs) {
|
263 | var min = 0;
|
264 | var max = combining.length - 1;
|
265 | var mid;
|
266 | if (ucs < combining[0][0] || ucs > combining[max][1]) return false;
|
267 |
|
268 | while (max >= min) {
|
269 | mid = Math.floor((min + max) / 2);
|
270 | if (ucs > combining[mid][1]) min = mid + 1;else if (ucs < combining[mid][0]) max = mid - 1;else return true;
|
271 | }
|
272 |
|
273 | return false;
|
274 | }
|
275 |
|
276 | // Generated by CoffeeScript 2.4.1
|
277 | var _pad;
|
278 |
|
279 | _pad = function pad(text, length, options) {
|
280 | var escapecolor, invert, padlength, textnocolors;
|
281 |
|
282 | if (options == null) {
|
283 | options = {};
|
284 | }
|
285 |
|
286 | invert = typeof text === 'number';
|
287 |
|
288 | if (invert) {
|
289 | var _ref = [text, length];
|
290 | length = _ref[0];
|
291 | text = _ref[1];
|
292 | }
|
293 |
|
294 | if (typeof options === 'string') {
|
295 | options = {
|
296 | "char": options
|
297 | };
|
298 | }
|
299 |
|
300 | if (options["char"] == null) {
|
301 | options["char"] = ' ';
|
302 | }
|
303 |
|
304 | if (options.strip == null) {
|
305 | options.strip = false;
|
306 | }
|
307 |
|
308 | if (typeof text !== 'string') {
|
309 | text = text.toString();
|
310 | }
|
311 |
|
312 | textnocolors = null;
|
313 | _pad = '';
|
314 |
|
315 | if (options.colors) {
|
316 | escapecolor = /\x1B\[(?:[0-9]{1,2}(?:;[0-9]{1,2})?)?[m|K]/g;
|
317 | textnocolors = text.replace(escapecolor, '');
|
318 | }
|
319 |
|
320 | padlength = options.fixed_width ? length - (textnocolors || text).length : length - config(options.wcwidth_options)(textnocolors || text);
|
321 |
|
322 | if (padlength < 0) {
|
323 | if (options.strip) {
|
324 | if (invert) {
|
325 | return text.substr(length * -1);
|
326 | } else {
|
327 | return text.substr(0, length);
|
328 | }
|
329 | }
|
330 |
|
331 | return text;
|
332 | }
|
333 |
|
334 | _pad += options["char"].repeat(padlength);
|
335 |
|
336 | if (invert) {
|
337 | return _pad + text;
|
338 | } else {
|
339 | return text + _pad;
|
340 | }
|
341 | };
|
342 |
|
343 | var _pad$1 = _pad;
|
344 |
|
345 | module.exports = _pad$1;
|