diff options
Diffstat (limited to 'deps/npm/node_modules/columnify/node_modules/wcwidth')
23 files changed, 0 insertions, 1579 deletions
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/.npmignore b/deps/npm/node_modules/columnify/node_modules/wcwidth/.npmignore deleted file mode 100644 index 3c3629e647..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/LICENSE b/deps/npm/node_modules/columnify/node_modules/wcwidth/LICENSE deleted file mode 100644 index 313ef1e888..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -wcwidth.js: JavaScript Portng of Markus Kuhn's wcwidth() Implementation -======================================================================= - -Copyright (C) 2012 by Jun Woong. - -This package is a JavaScript porting of `wcwidth()` implementation -[by Markus Kuhn](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c). - -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. - - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/Readme.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/Readme.md deleted file mode 100644 index 0649a31987..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/Readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# wcwidth - -Determine columns needed for a fixed-size wide-character string - ----- - -wcwidth is a simple JavaScript port of [wcwidth](http://man7.org/linux/man-pages/man3/wcswidth.3.html) implemented in C by Markus Kuhn. - -JavaScript port [originally](https://github.com/mycoboco/wcwidth.js) written by Woong Jun <woong.jun@gmail.com> (http://code.woong.org/) - -## Example - -```js -'한'.length // => 1 -wcwidth('한'); // => 2 - -'한글'.length // => 2 -wcwidth('한글'); // => 4 -``` - -`wcwidth()` and its string version, `wcswidth()` are defined by IEEE Std -1002.1-2001, a.k.a. POSIX.1-2001, and return the number of columns used -to represent the given wide character and string. - -Markus's implementation assumes the wide character given to those -functions to be encoded in ISO 10646, which is almost true for -JavaScript's characters. - -[Further explaination here](docs) - -## License - -MIT diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/combining.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/combining.js deleted file mode 100644 index dac9789d35..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/combining.js +++ /dev/null @@ -1,50 +0,0 @@ -module.exports = [ - [ 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 ] -] diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/docs/index.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/docs/index.md deleted file mode 100644 index 5c5126d032..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/docs/index.md +++ /dev/null @@ -1,65 +0,0 @@ -### Javascript porting of Markus Kuhn's wcwidth() implementation - -The following explanation comes from the original C implementation: - -This is an implementation of wcwidth() and wcswidth() (defined in -IEEE Std 1002.1-2001) for Unicode. - -http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html -http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html - -In fixed-width output devices, Latin characters all occupy a single -"cell" position of equal width, whereas ideographic CJK characters -occupy two such cells. Interoperability between terminal-line -applications and (teletype-style) character terminals using the -UTF-8 encoding requires agreement on which character should advance -the cursor by how many cell positions. No established formal -standards exist at present on which Unicode character shall occupy -how many cell positions on character terminals. These routines are -a first attempt of defining such behavior based on simple rules -applied to data provided by the Unicode Consortium. - -For some graphical characters, the Unicode standard explicitly -defines a character-cell width via the definition of the East Asian -FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes. -In all these cases, there is no ambiguity about which width a -terminal shall use. For characters in the East Asian Ambiguous (A) -class, the width choice depends purely on a preference of backward -compatibility with either historic CJK or Western practice. -Choosing single-width for these characters is easy to justify as -the appropriate long-term solution, as the CJK practice of -displaying these characters as double-width comes from historic -implementation simplicity (8-bit encoded characters were displayed -single-width and 16-bit ones double-width, even for Greek, -Cyrillic, etc.) and not any typographic considerations. - -Much less clear is the choice of width for the Not East Asian -(Neutral) class. Existing practice does not dictate a width for any -of these characters. It would nevertheless make sense -typographically to allocate two character cells to characters such -as for instance EM SPACE or VOLUME INTEGRAL, which cannot be -represented adequately with a single-width glyph. The following -routines at present merely assign a single-cell width to all -neutral characters, in the interest of simplicity. This is not -entirely satisfactory and should be reconsidered before -establishing a formal standard in this area. At the moment, the -decision which Not East Asian (Neutral) characters should be -represented by double-width glyphs cannot yet be answered by -applying a simple rule from the Unicode database content. Setting -up a proper standard for the behavior of UTF-8 character terminals -will require a careful analysis not only of each Unicode character, -but also of each presentation form, something the author of these -routines has avoided to do so far. - -http://www.unicode.org/unicode/reports/tr11/ - -Markus Kuhn -- 2007-05-26 (Unicode 5.0) - -Permission to use, copy, modify, and distribute this software -for any purpose and without fee is hereby granted. The author -disclaims all warranties with regard to this software. - -Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c - - - diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/index.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/index.js deleted file mode 100644 index 48cbb6020a..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/index.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict" - -var defaults = require('defaults') -var combining = require('./combining') - -var DEFAULTS = { - nul: 0, - control: 0 -} - -module.exports = function wcwidth(str) { - return wcswidth(str, DEFAULTS) -} - -module.exports.config = function(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 -} diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/.npmignore b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/.npmignore deleted file mode 100644 index 3c3629e647..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE deleted file mode 100644 index d88b072078..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Elijah Insua - -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/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md deleted file mode 100644 index 1a4a2ea9c9..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# defaults - -A simple one level options merge utility - -## install - -`npm install defaults` - -## use - -```javascript - -var defaults = require('defaults'); - -var handle = function(options, fn) { - options = defaults(options, { - timeout: 100 - }); - - setTimeout(function() { - fn(options); - }, options.timeout); -} - -handle({ timeout: 1000 }, function() { - // we're here 1000 ms later -}); - -handle({ timeout: 10000 }, function() { - // we're here 10s later -}); - -``` - -## summary - -this module exports a function that takes 2 arguments: `options` and `defaults`. When called, it overrides all of `undefined` properties in `options` with the clones of properties defined in `defaults` - -Sidecases: if called with a falsy `options` value, options will be initialized to a new object before being merged onto. - -## license - -[MIT](LICENSE) diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/index.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/index.js deleted file mode 100644 index cb7d75c9c6..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/index.js +++ /dev/null @@ -1,13 +0,0 @@ -var clone = require('clone'); - -module.exports = function(options, defaults) { - options = options || {}; - - Object.keys(defaults).forEach(function(key) { - if (typeof options[key] === 'undefined') { - options[key] = clone(defaults[key]); - } - }); - - return options; -};
\ No newline at end of file diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.npmignore b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.npmignore deleted file mode 100644 index c2658d7d1b..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.travis.yml b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.travis.yml deleted file mode 100644 index 20fd86b6a5..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.10 diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/LICENSE b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/LICENSE deleted file mode 100644 index cc3c87bc3b..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright © 2011-2015 Paul Vorbach <paul@vorba.ch> - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/README.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/README.md deleted file mode 100644 index 0b6cecae29..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# clone - -[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) - -[![info badge](https://nodei.co/npm/clone.png?downloads=true&downloadRank=true&stars=true)](http://npm-stat.com/charts.html?package=clone) - -offers foolproof _deep cloning_ of objects, arrays, numbers, strings etc. in JavaScript. - - -## Installation - - npm install clone - -(It also works with browserify, ender or standalone.) - - -## Example - -~~~ javascript -var clone = require('clone'); - -var a, b; - -a = { foo: { bar: 'baz' } }; // initial value of a - -b = clone(a); // clone a -> b -a.foo.bar = 'foo'; // change a - -console.log(a); // show a -console.log(b); // show b -~~~ - -This will print: - -~~~ javascript -{ foo: { bar: 'foo' } } -{ foo: { bar: 'baz' } } -~~~ - -**clone** masters cloning simple objects (even with custom prototype), arrays, -Date objects, and RegExp objects. Everything is cloned recursively, so that you -can clone dates in arrays in objects, for example. - - -## API - -`clone(val, circular, depth)` - - * `val` -- the value that you want to clone, any type allowed - * `circular` -- boolean - - Call `clone` with `circular` set to `false` if you are certain that `obj` - contains no circular references. This will give better performance if needed. - There is no error if `undefined` or `null` is passed as `obj`. - * `depth` -- depth to which the object is to be cloned (optional, - defaults to infinity) - -`clone.clonePrototype(obj)` - - * `obj` -- the object that you want to clone - -Does a prototype clone as -[described by Oran Looney](http://oranlooney.com/functional-javascript/). - - -## Circular References - -~~~ javascript -var a, b; - -a = { hello: 'world' }; - -a.myself = a; -b = clone(a); - -console.log(b); -~~~ - -This will print: - -~~~ javascript -{ hello: "world", myself: [Circular] } -~~~ - -So, `b.myself` points to `b`, not `a`. Neat! - - -## Test - - npm test - - -## Caveat - -Some special objects like a socket or `process.stdout`/`stderr` are known to not -be cloneable. If you find other objects that cannot be cloned, please [open an -issue](https://github.com/pvorb/node-clone/issues/new). - - -## Bugs and Issues - -If you encounter any bugs or issues, feel free to [open an issue at -github](https://github.com/pvorb/node-clone/issues) or send me an email to -<paul@vorba.ch>. I also always like to hear from you, if you’re using my code. - -## License - -Copyright © 2011-2015 [Paul Vorbach](http://paul.vorba.ch/) and -[contributors](https://github.com/pvorb/node-clone/graphs/contributors). - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/clone.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/clone.js deleted file mode 100644 index 6263759203..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/clone.js +++ /dev/null @@ -1,160 +0,0 @@ -var clone = (function() { -'use strict'; - -/** - * 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)) { - 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.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 (typeof module === 'object' && module.exports) { - module.exports = clone; -} diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json deleted file mode 100644 index 02b4e49018..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "_from": "clone@^1.0.2", - "_id": "clone@1.0.2", - "_integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "_location": "/columnify/wcwidth/defaults/clone", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "clone@^1.0.2", - "name": "clone", - "escapedName": "clone", - "rawSpec": "^1.0.2", - "saveSpec": null, - "fetchSpec": "^1.0.2" - }, - "_requiredBy": [ - "/columnify/wcwidth/defaults" - ], - "_resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "_shasum": "260b7a99ebb1edfe247538175f783243cb19d149", - "_shrinkwrap": null, - "_spec": "clone@^1.0.2", - "_where": "/Users/zkat/Documents/code/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults", - "author": { - "name": "Paul Vorbach", - "email": "paul@vorba.ch", - "url": "http://paul.vorba.ch/" - }, - "bin": null, - "bugs": { - "url": "https://github.com/pvorb/node-clone/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Blake Miner", - "email": "miner.blake@gmail.com", - "url": "http://www.blakeminer.com/" - }, - { - "name": "Tian You", - "email": "axqd001@gmail.com", - "url": "http://blog.axqd.net/" - }, - { - "name": "George Stagas", - "email": "gstagas@gmail.com", - "url": "http://stagas.com/" - }, - { - "name": "Tobiasz Cudnik", - "email": "tobiasz.cudnik@gmail.com", - "url": "https://github.com/TobiaszCudnik" - }, - { - "name": "Pavel Lang", - "email": "langpavel@phpskelet.org", - "url": "https://github.com/langpavel" - }, - { - "name": "Dan MacTough", - "url": "http://yabfog.com/" - }, - { - "name": "w1nk", - "url": "https://github.com/w1nk" - }, - { - "name": "Hugh Kennedy", - "url": "http://twitter.com/hughskennedy" - }, - { - "name": "Dustin Diaz", - "url": "http://dustindiaz.com" - }, - { - "name": "Ilya Shaisultanov", - "url": "https://github.com/diversario" - }, - { - "name": "Nathan MacInnes", - "email": "nathan@macinn.es", - "url": "http://macinn.es/" - }, - { - "name": "Benjamin E. Coe", - "email": "ben@npmjs.com", - "url": "https://twitter.com/benjamincoe" - }, - { - "name": "Nathan Zadoks", - "url": "https://github.com/nathan7" - }, - { - "name": "Róbert Oroszi", - "email": "robert+gh@oroszi.net", - "url": "https://github.com/oroce" - }, - { - "name": "Aurélio A. Heckert", - "url": "http://softwarelivre.org/aurium" - }, - { - "name": "Guy Ellis", - "url": "http://www.guyellisrocks.com/" - } - ], - "dependencies": {}, - "deprecated": false, - "description": "deep cloning of objects and arrays", - "devDependencies": { - "nodeunit": "~0.9.0" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/pvorb/node-clone#readme", - "license": "MIT", - "main": "clone.js", - "name": "clone", - "optionalDependencies": {}, - "peerDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/pvorb/node-clone.git" - }, - "scripts": { - "test": "nodeunit test.js" - }, - "tags": [ - "clone", - "object", - "array", - "function", - "date" - ], - "version": "1.0.2" -} diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test-apart-ctx.html b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test-apart-ctx.html deleted file mode 100644 index 4d532bb717..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test-apart-ctx.html +++ /dev/null @@ -1,22 +0,0 @@ -<html> - <head> - <meta charset="utf-8"> - <title>Clone Test-Suite (Browser)</title> - </head> - <body> - <script> - var data = document.location.search.substr(1).split('&'); - try { - ctx = parent[data[0]]; - eval(decodeURIComponent(data[1])); - window.results = results; - } catch(e) { - var extra = ''; - if (e.name == 'SecurityError') - extra = 'This test suite needs to be run on an http server.'; - alert('Apart Context iFrame Error\n' + e + '\n\n' + extra); - throw e; - } - </script> - </body> -</html> diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.html b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.html deleted file mode 100644 index a955702516..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.html +++ /dev/null @@ -1,148 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset="utf-8"> - <title>Clone Test-Suite (Browser)</title> - <script> - var module = {}; - var tests = exports = module.exports = {}; - - function require(moduleName) { - if (moduleName == './') { - return clone; - } - } - - function log(str) { - logList.innerHTML += '<li>' + str + '</li>'; - } - </script> - <script src="clone.js"></script> - <script src="test.js"></script> - </head> - <body> - <h1 id="nodeunit-header">Clone Test-Suite (Browser)</h1> - Tests started: <span id="testsStarted"></span>; - Tests finished: <span id="testsFinished"></span>. - <ul id="logList"></ul> - <script> - /* Methods copied from - * https://github.com/caolan/nodeunit/blob/master/lib/assert.js - */ - function isUndefinedOrNull(value) { - return value === null || value === undefined; - } - - function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; - } - - var _keys = function (obj){ - if (Object.keys) return Object.keys(obj); - if (typeof obj != 'object' && typeof obj != 'function') { - throw new TypeError('-'); - } - var keys = []; - for(var k in obj) if(obj.hasOwnProperty(k)) keys.push(k); - return keys; - }; - - function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - - if (a.prototype !== b.prototype) - return false; - - if (isArguments(a)) { - if (!isArguments(b)) return false; - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - - try { - var ka = _keys(a), kb = _keys(b), key, i; - } catch (e) { - return false - } - - if (ka.length != kb.length) - return false; - - ka.sort(); - kb.sort(); - - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) return false; - } - - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key] )) - return false; - } - - return true; - } - function _deepEqual(actual, expected) { - if (actual === expected) { - return true; - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - } else if (actual instanceof RegExp && expected instanceof RegExp) { - return actual.source === expected.source && - actual.global === expected.global && - actual.ignoreCase === expected.ignoreCase && - actual.multiline === expected.multiline; - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - } else { - return objEquiv(actual, expected); - } - } - - for (var testName in tests) { - setTimeout((function (testName) { - try { - testsStarted.innerHTML = (parseInt(testsStarted.innerHTML) || 0) + 1; - function incFinished() { - testsFinished.innerHTML = (parseInt(testsFinished.innerHTML) || 0) + 1; - } - - tests[testName]({ - expect: function (num) { - this._expect = num - }, - ok: function (val) { - if(!val) throw new Error(val + ' is not ok.') - }, - equal: function (a,b) { - if (a != b) throw new Error(a + ' is not equal to ' + b) - }, - notEqual: function (a,b) { - if (a == b) throw new Error(a + ' is equal to ' + b) - }, - strictEqual: function (a,b) { - if (a !== b) throw new Error(a + ' is not strict equal to ' + b) - }, - deepEqual: function (a,b) { - if (!_deepEqual(a,b)) - throw new Error(JSON.stringify(a) + ' is not deep equal to ' + - JSON.stringify(b)) - }, - done: function () { - log(testName + ' <span style="color:blue">is ok</span>.'); - incFinished(); - } - }); - } catch(e) { - log(testName + ' <span style="color:red">FAIL.</span> <small>'+ e +'</small>'); - incFinished(); - console.log(e); - } - })(testName), 1); - } - </script> - </body> -</html> diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.js deleted file mode 100644 index e8b65b3fed..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/test.js +++ /dev/null @@ -1,372 +0,0 @@ -var clone = require('./'); - -function inspect(obj) { - seen = []; - return JSON.stringify(obj, function (key, val) { - if (val != null && typeof val == "object") { - if (seen.indexOf(val) >= 0) { - return '[cyclic]'; - } - - seen.push(val); - } - - return val; - }); -} - -// Creates a new VM in node, or an iframe in a browser in order to run the -// script -function apartContext(context, script, callback) { - var vm = require('vm'); - - if (vm) { - var ctx = vm.createContext({ ctx: context }); - callback(vm.runInContext(script, ctx)); - } else if (document && document.createElement) { - var iframe = document.createElement('iframe'); - iframe.style.display = 'none'; - document.body.appendChild(iframe); - - var myCtxId = 'tmpCtx' + Math.random(); - - window[myCtxId] = context; - iframe.src = 'test-apart-ctx.html?' + myCtxId + '&' + encodeURIComponent(script); - iframe.onload = function() { - try { - callback(iframe.contentWindow.results); - } catch (e) { - throw e; - } - }; - } else { - console.log('WARNING: cannot create an apart context.'); - } -} - -exports["clone string"] = function (test) { - test.expect(2); // how many tests? - - var a = "foo"; - test.strictEqual(clone(a), a); - a = ""; - test.strictEqual(clone(a), a); - - test.done(); -}; - -exports["clone number"] = function (test) { - test.expect(5); // how many tests? - - var a = 0; - test.strictEqual(clone(a), a); - a = 1; - test.strictEqual(clone(a), a); - a = -1000; - test.strictEqual(clone(a), a); - a = 3.1415927; - test.strictEqual(clone(a), a); - a = -3.1415927; - test.strictEqual(clone(a), a); - - test.done(); -}; - -exports["clone date"] = function (test) { - test.expect(3); // how many tests? - - var a = new Date; - var c = clone(a); - test.ok(!!a.getUTCDate && !!a.toUTCString); - test.ok(!!c.getUTCDate && !!c.toUTCString); - test.equal(a.getTime(), c.getTime()); - - test.done(); -}; - -exports["clone object"] = function (test) { - test.expect(1); // how many tests? - - var a = { foo: { bar: "baz" } }; - var b = clone(a); - - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone array"] = function (test) { - test.expect(2); // how many tests? - - var a = [ - { foo: "bar" }, - "baz" - ]; - var b = clone(a); - - test.ok(b instanceof Array); - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone buffer"] = function (test) { - if (typeof Buffer == 'undefined') { - return test.done(); - } - - test.expect(1); - - var a = new Buffer("this is a test buffer"); - var b = clone(a); - - // no underscore equal since it has no concept of Buffers - test.deepEqual(b, a); - test.done(); -}; - -exports["clone regexp"] = function (test) { - test.expect(5); - - var a = /abc123/gi; - var b = clone(a); - test.deepEqual(b, a); - - var c = /a/g; - test.ok(c.lastIndex === 0); - - c.exec('123a456a'); - test.ok(c.lastIndex === 4); - - var d = clone(c); - test.ok(d.global); - test.ok(d.lastIndex === 4); - - test.done(); -}; - -exports["clone object containing array"] = function (test) { - test.expect(1); // how many tests? - - var a = { - arr1: [ { a: '1234', b: '2345' } ], - arr2: [ { c: '345', d: '456' } ] - }; - - var b = clone(a); - - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone object with circular reference"] = function (test) { - test.expect(8); // how many tests? - - var c = [1, "foo", {'hello': 'bar'}, function () {}, false, [2]]; - var b = [c, 2, 3, 4]; - - var a = {'b': b, 'c': c}; - a.loop = a; - a.loop2 = a; - c.loop = c; - c.aloop = a; - - var aCopy = clone(a); - test.ok(a != aCopy); - test.ok(a.c != aCopy.c); - test.ok(aCopy.c == aCopy.b[0]); - test.ok(aCopy.c.loop.loop.aloop == aCopy); - test.ok(aCopy.c[0] == a.c[0]); - - test.ok(eq(a, aCopy)); - aCopy.c[0] = 2; - test.ok(!eq(a, aCopy)); - aCopy.c = "2"; - test.ok(!eq(a, aCopy)); - - function eq(x, y) { - return inspect(x) === inspect(y); - } - - test.done(); -}; - -exports['clone prototype'] = function (test) { - test.expect(3); // how many tests? - - var a = { - a: "aaa", - x: 123, - y: 45.65 - }; - var b = clone.clonePrototype(a); - - test.strictEqual(b.a, a.a); - test.strictEqual(b.x, a.x); - test.strictEqual(b.y, a.y); - - test.done(); -}; - -exports['clone within an apart context'] = function (test) { - var results = apartContext({ clone: clone }, - "results = ctx.clone({ a: [1, 2, 3], d: new Date(), r: /^foo$/ig })", - function (results) { - test.ok(results.a.constructor.toString() === Array.toString()); - test.ok(results.d.constructor.toString() === Date.toString()); - test.ok(results.r.constructor.toString() === RegExp.toString()); - test.done(); - }); -}; - -exports['clone object with no constructor'] = function (test) { - test.expect(3); - - var n = null; - - var a = { foo: 'bar' }; - a.__proto__ = n; - test.ok(typeof a === 'object'); - test.ok(typeof a !== null); - - var b = clone(a); - test.ok(a.foo, b.foo); - - test.done(); -}; - -exports['clone object with depth argument'] = function (test) { - test.expect(6); - - var a = { - foo: { - bar : { - baz : 'qux' - } - } - }; - - var b = clone(a, false, 1); - test.deepEqual(b, a); - test.notEqual(b, a); - test.strictEqual(b.foo, a.foo); - - b = clone(a, true, 2); - test.deepEqual(b, a); - test.notEqual(b.foo, a.foo); - test.strictEqual(b.foo.bar, a.foo.bar); - - test.done(); -}; - -exports['maintain prototype chain in clones'] = function (test) { - test.expect(1); - - function T() {} - - var a = new T(); - var b = clone(a); - test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); - - test.done(); -}; - -exports['parent prototype is overriden with prototype provided'] = function (test) { - test.expect(1); - - function T() {} - - var a = new T(); - var b = clone(a, true, Infinity, null); - test.strictEqual(b.__defineSetter__, undefined); - - test.done(); -}; - -exports['clone object with null children'] = function (test) { - test.expect(1); - var a = { - foo: { - bar: null, - baz: { - qux: false - } - } - }; - - var b = clone(a); - - test.deepEqual(b, a); - test.done(); -}; - -exports['clone instance with getter'] = function (test) { - test.expect(1); - function Ctor() {}; - Object.defineProperty(Ctor.prototype, 'prop', { - configurable: true, - enumerable: true, - get: function() { - return 'value'; - } - }); - - var a = new Ctor(); - var b = clone(a); - - test.strictEqual(b.prop, 'value'); - test.done(); -}; - -exports['get RegExp flags'] = function (test) { - test.strictEqual(clone.__getRegExpFlags(/a/), '' ); - test.strictEqual(clone.__getRegExpFlags(/a/i), 'i' ); - test.strictEqual(clone.__getRegExpFlags(/a/g), 'g' ); - test.strictEqual(clone.__getRegExpFlags(/a/gi), 'gi'); - test.strictEqual(clone.__getRegExpFlags(/a/m), 'm' ); - - test.done(); -}; - -exports["recognize Array object"] = function (test) { - var results = apartContext(null, "results = [1, 2, 3]", function(alien) { - var local = [4, 5, 6]; - test.ok(clone.__isArray(alien)); // recognize in other context. - test.ok(clone.__isArray(local)); // recognize in local context. - test.ok(!clone.__isDate(alien)); - test.ok(!clone.__isDate(local)); - test.ok(!clone.__isRegExp(alien)); - test.ok(!clone.__isRegExp(local)); - test.done(); - }); -}; - -exports["recognize Date object"] = function (test) { - var results = apartContext(null, "results = new Date()", function(alien) { - var local = new Date(); - - test.ok(clone.__isDate(alien)); // recognize in other context. - test.ok(clone.__isDate(local)); // recognize in local context. - test.ok(!clone.__isArray(alien)); - test.ok(!clone.__isArray(local)); - test.ok(!clone.__isRegExp(alien)); - test.ok(!clone.__isRegExp(local)); - - test.done(); - }); -}; - -exports["recognize RegExp object"] = function (test) { - var results = apartContext(null, "results = /foo/", function(alien) { - var local = /bar/; - - test.ok(clone.__isRegExp(alien)); // recognize in other context. - test.ok(clone.__isRegExp(local)); // recognize in local context. - test.ok(!clone.__isArray(alien)); - test.ok(!clone.__isArray(local)); - test.ok(!clone.__isDate(alien)); - test.ok(!clone.__isDate(local)); - test.done(); - }); -}; diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json deleted file mode 100644 index 1a3961c505..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "_from": "defaults@^1.0.3", - "_id": "defaults@1.0.3", - "_integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "_location": "/columnify/wcwidth/defaults", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "defaults@^1.0.3", - "name": "defaults", - "escapedName": "defaults", - "rawSpec": "^1.0.3", - "saveSpec": null, - "fetchSpec": "^1.0.3" - }, - "_requiredBy": [ - "/columnify/wcwidth" - ], - "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "_shasum": "c656051e9817d9ff08ed881477f3fe4019f3ef7d", - "_shrinkwrap": null, - "_spec": "defaults@^1.0.3", - "_where": "/Users/zkat/Documents/code/npm/node_modules/columnify/node_modules/wcwidth", - "author": { - "name": "Elijah Insua", - "email": "tmpvar@gmail.com" - }, - "bin": null, - "bugs": { - "url": "https://github.com/tmpvar/defaults/issues" - }, - "bundleDependencies": false, - "dependencies": { - "clone": "^1.0.2" - }, - "deprecated": false, - "description": "merge single level defaults over a config object", - "devDependencies": { - "tap": "^2.0.0" - }, - "homepage": "https://github.com/tmpvar/defaults#readme", - "keywords": [ - "config", - "defaults" - ], - "license": "MIT", - "main": "index.js", - "name": "defaults", - "optionalDependencies": {}, - "peerDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/tmpvar/defaults.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.3" -} diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/test.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/test.js deleted file mode 100644 index 60e0ffba8b..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/test.js +++ /dev/null @@ -1,34 +0,0 @@ -var defaults = require('./'), - test = require('tap').test; - -test("ensure options is an object", function(t) { - var options = defaults(false, { a : true }); - t.ok(options.a); - t.end() -}); - -test("ensure defaults override keys", function(t) { - var result = defaults({}, { a: false, b: true }); - t.ok(result.b, 'b merges over undefined'); - t.equal(result.a, false, 'a merges over undefined'); - t.end(); -}); - -test("ensure defined keys are not overwritten", function(t) { - var result = defaults({ b: false }, { a: false, b: true }); - t.equal(result.b, false, 'b not merged'); - t.equal(result.a, false, 'a merges over undefined'); - t.end(); -}); - -test("ensure defaults clone nested objects", function(t) { - var d = { a: [1,2,3], b: { hello : 'world' } }; - var result = defaults({}, d); - t.equal(result.a.length, 3, 'objects should be clones'); - t.ok(result.a !== d.a, 'objects should be clones'); - - t.equal(Object.keys(result.b).length, 1, 'objects should be clones'); - t.ok(result.b !== d.b, 'objects should be clones'); - t.end(); -}); - diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json deleted file mode 100644 index dd1a8b9012..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_from": "wcwidth@^1.0.0", - "_id": "wcwidth@1.0.1", - "_integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "_location": "/columnify/wcwidth", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "wcwidth@^1.0.0", - "name": "wcwidth", - "escapedName": "wcwidth", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/columnify" - ], - "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "_shasum": "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8", - "_shrinkwrap": null, - "_spec": "wcwidth@^1.0.0", - "_where": "/Users/zkat/Documents/code/npm/node_modules/columnify", - "author": { - "name": "Tim Oxley" - }, - "bin": null, - "bugs": { - "url": "https://github.com/timoxley/wcwidth/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Woong Jun", - "email": "woong.jun@gmail.com", - "url": "http://code.woong.org/" - } - ], - "dependencies": { - "defaults": "^1.0.3" - }, - "deprecated": false, - "description": "Port of C's wcwidth() and wcswidth()", - "devDependencies": { - "tape": "^4.5.1" - }, - "directories": { - "doc": "docs", - "test": "test" - }, - "homepage": "https://github.com/timoxley/wcwidth#readme", - "keywords": [ - "wide character", - "wc", - "wide character string", - "wcs", - "terminal", - "width", - "wcwidth", - "wcswidth" - ], - "license": "MIT", - "main": "index.js", - "name": "wcwidth", - "optionalDependencies": {}, - "peerDependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/timoxley/wcwidth.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "version": "1.0.1" -} diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/test/index.js b/deps/npm/node_modules/columnify/node_modules/wcwidth/test/index.js deleted file mode 100644 index 5180599a2f..0000000000 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/test/index.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict" - -var wcwidth = require('../') -var test = require('tape') - -test('handles regular strings', function(t) { - t.strictEqual(wcwidth('abc'), 3) - t.end() -}) - -test('handles multibyte strings', function(t) { - t.strictEqual(wcwidth('字的模块'), 8) - t.end() -}) - -test('handles multibyte characters mixed with regular characters', function(t) { - t.strictEqual(wcwidth('abc 字的模块'), 12) - t.end() -}) - -test('ignores control characters e.g. \\n', function(t) { - t.strictEqual(wcwidth('abc\n字的模块\ndef'), 14) - t.end() -}) - -test('ignores bad input', function(t) { - t.strictEqual(wcwidth(''), 0) - t.strictEqual(wcwidth(3), 0) - t.strictEqual(wcwidth({}), 0) - t.strictEqual(wcwidth([]), 0) - t.strictEqual(wcwidth(), 0) - t.end() -}) - -test('ignores nul (charcode 0)', function(t) { - t.strictEqual(wcwidth(String.fromCharCode(0)), 0) - t.end() -}) - -test('ignores nul mixed with chars', function(t) { - t.strictEqual(wcwidth('a' + String.fromCharCode(0) + '\n字的'), 5) - t.end() -}) - -test('can have custom value for nul', function(t) { - t.strictEqual(wcwidth.config({ - nul: 10 - })(String.fromCharCode(0) + 'a字的'), 15) - t.end() -}) - -test('can have custom control char value', function(t) { - t.strictEqual(wcwidth.config({ - control: 1 - })('abc\n字的模块\ndef'), 16) - t.end() -}) - -test('negative custom control chars == -1', function(t) { - t.strictEqual(wcwidth.config({ - control: -1 - })('abc\n字的模块\ndef'), -1) - t.end() -}) |