pax_global_header00006660000000000000000000000064132703170210014506gustar00rootroot0000000000000052 comment=a97dd725c8ac242385a7920afd97d500d7541ed2 node-debug-fabulous-1.1.0/000077500000000000000000000000001327031702100153345ustar00rootroot00000000000000node-debug-fabulous-1.1.0/.editorconfig000066400000000000000000000005661327031702100200200ustar00rootroot00000000000000# EditorConfig helps developers define and maintain consistent # coding styles between different editors and IDEs # editorconfig.org root = true [*] # Change these settings to your own preference indent_style = space indent_size = 2 # We recommend you to keep these unchanged end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true node-debug-fabulous-1.1.0/.eslintrc000066400000000000000000000003521327031702100171600ustar00rootroot00000000000000{ "parserOptions": { "ecmaVersion": 5, }, "rules": { "no-unused-vars": ["error", { "vars": "all", "args": "after-used" }], "no-undef": 1 }, "env": { "browser": true, "node": true, "mocha": true } } node-debug-fabulous-1.1.0/.gitignore000066400000000000000000000002721327031702100173250ustar00rootroot00000000000000*/*.iml *.iml .idea */log/* log/ logs/ tmp/ .log #OSX .DS_Store nohup.out *.xml coverage/ node_modules/ build/ npm-debug.log bower_components/ .versions package-lock.json crashes.json node-debug-fabulous-1.1.0/.jsbeautifyrc000066400000000000000000000012121327031702100200230ustar00rootroot00000000000000{ "indent_size": 2, "indent_char": " ", "indent_with_tabs": false, "eol": "\n", "end_with_newline": false, "indent_level": 0, "preserve_newlines": true, "max_preserve_newlines": 10, "space_in_paren": false, "space_in_empty_paren": false, "jslint_happy": false, "space_after_anon_function": false, "brace_style": "collapse-preserve-inline", "unindent_chained_methods": false, "break_chained_methods": false, "keep_array_indentation": false, "unescape_strings": false, "wrap_line_length": 0, "e4x": false, "comma_first": false, "operator_position": "before-newline" } node-debug-fabulous-1.1.0/.npmignore000066400000000000000000000001151327031702100173300ustar00rootroot00000000000000.* test/ *.json .gitignore travis.yml *.md node_modules/ .versions .DS_Store node-debug-fabulous-1.1.0/.npmrc000066400000000000000000000000511327031702100164500ustar00rootroot00000000000000tag-version-prefix="" package-lock=false node-debug-fabulous-1.1.0/.travis.yml000066400000000000000000000005701327031702100174470ustar00rootroot00000000000000sudo: false language: node_js before_install: - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.3.2 node_js: - 8 - 6 - 4 script: yarn test cache: yarn: true directories: - node_modules branches: except: - /^v[0-9]/ env: - CXX=g++-4.8 addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.8 node-debug-fabulous-1.1.0/LICENSE000066400000000000000000000020741327031702100163440ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2016 Nicholas McCready 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. node-debug-fabulous-1.1.0/README.md000066400000000000000000000043221327031702100166140ustar00rootroot00000000000000# debug-fabulous [![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url] ## Install `npm install --save debug-fabulous` ## Purpose: Wrapper / Extension around [visionmedia's debug](https://github.com/visionmedia/debug) to allow lazy evaluation of debugging via closure handling. ## Why would I consider using this library? The main utilities added to this library is lazy log level evaluation. This allows whatever logged strings to only be created and evaluated if a log level is active. This can considerably reduce the amount of memory used in logging when you are not using. With this in mind, there are no excuses to not log anything and everything as performance can be kept in check easily (via log levels). ### Proof For analysis of the performance results are in [perfWith.out](./test/perf/perfWith.out) and [perfWithout.out](./test/perf/perfWithout.out). In summary, the tests using this library are using 3 times less memory for the same logging statements (when the log levels are disabled). ## This library essentially wraps two things: - [lazy-eval](./src/lazy-eval.js): debug closure handling - [spawn](./src/spawn.js): spawns off existing namespaces for a sub namespace. ## Example: For usage see the [tests](./test) or the example below. ```js var debug = require('')(); // force namespace to be enabled otherwise it assumes process.env.DEBUG is setup // debug.save('namespace'); // debug.enable(debug.load()) debug = debug('namespace'); // debugger in the namespace debug(function(){return 'something to log' + someLargeHarryString;}); debug(() => 'something to log ${someLargeHarryString}'); debug('small out'); // prints namespace small out var childDbg = debug.spawn('child'); // debugger in the namespace:child childDbg('small out'); // prints namespace:child small out var grandChildDbg = debug.spawn('grandChild'); // debugger in the namespace:child:grandChild grandChildDbg('small out'); // prints namespace:child:grandChild small out ``` [npm-image]: https://img.shields.io/npm/v/debug-fabulous.svg [npm-url]: https://www.npmjs.com/package/debug-fabulous [travis-image]: https://img.shields.io/travis/nmccready/debug-fabulous.svg [travis-url]: https://travis-ci.org/nmccready/debug-fabulous node-debug-fabulous-1.1.0/index.js000066400000000000000000000001461327031702100170020ustar00rootroot00000000000000module.exports = require('./src/debugFabFactory'); module.exports.spawnable = require('./src/spawn'); node-debug-fabulous-1.1.0/package.json000066400000000000000000000014221327031702100176210ustar00rootroot00000000000000{ "name": "debug-fabulous", "version": "1.1.0", "description": "visionmedia debug extensions rolled into one", "main": "index.js", "scripts": { "lint": "eslint !./node_modules *.js ./**/*.js", "mocha": "mocha", "test": "npm run lint && mocha ./test/**/*test.js ./test/*.test.js" }, "repository": { "type": "git", "url": "http://www.github.com/nmccready/debug-fabulous" }, "keywords": [ "debug", "lazy", "lazy-eval" ], "author": "Nicholas McCready", "license": "MIT", "dependencies": { "debug": "3.X", "memoizee": "0.4.X", "object-assign": "4.X" }, "devDependencies": { "JSONStream": "1.X", "chai": "4.X", "eslint": "4.X", "hook-std": "0.X", "memwatch-next": "0.3.X", "mocha": "4.X" } } node-debug-fabulous-1.1.0/src/000077500000000000000000000000001327031702100161235ustar00rootroot00000000000000node-debug-fabulous-1.1.0/src/debugFabFactory.js000066400000000000000000000006251327031702100215130ustar00rootroot00000000000000module.exports = function debugFactory(_debugApi, _options) { var wrapLazyEval = require('./lazy-eval'); var formatArgs = require('./formatArgs'); var options = _options || { formatArgs: true }; var debugApi = _debugApi ? _debugApi : require('debug'); debugApi = wrapLazyEval(debugApi); debugApi = formatArgs({ debugApi: debugApi, options: options }); return debugApi; } node-debug-fabulous-1.1.0/src/formatArgs.js000066400000000000000000000012501327031702100205640ustar00rootroot00000000000000module.exports = function formatArgs(args) { var debugApi = args.debugApi; var options = args.options; if(options.formatArgs == true){ /* fixing it so we don't get redundant timestamps on prod https://github.com/visionmedia/debug/issues/161 */ debugApi.formatArgs = function() { if (this.useColors) arguments[0] = ' \u001b[9' + this.color + 'm' + this.namespace + ' ' + '\u001b[0m' + arguments[0]; else arguments[0] = ' ' + this.namespace + ' ' + arguments[0]; return arguments; } } else if ( typeof options.formatArgs === 'function'){ debugApi.formatArgs = options.formatArgs; } return debugApi; } node-debug-fabulous-1.1.0/src/lazy-eval.js000066400000000000000000000021321327031702100203630ustar00rootroot00000000000000var objectAssign = require('object-assign'); var memoize = require('memoizee'); function _resolveOutput(func, bindThis) { var wrapped = function() { var i = arguments.length; var args = []; while (i--) args[i] = arguments[i]; // lazy function eval to keep output memory pressure down, if not used if (typeof args[0] === 'function') { args[0] = args[0](); } return func.apply(bindThis, args); }; objectAssign(wrapped, func); return wrapped; } function wrapEval(_debug) { var debugOrig = _debug; function debug(namespace) { function noop() {} var instance = debugOrig(namespace); /* If we're not enabled then don't attempt to log anything. Therefore when a debug namespace wraps its debug in a closure then it never allocates anything but the function itself */ if (!instance.enabled) { objectAssign(noop, instance); return noop; } return _resolveOutput(instance); } var debugMemoized = memoize(debug); objectAssign(debugMemoized, debugOrig); return debugMemoized; } module.exports = wrapEval; node-debug-fabulous-1.1.0/src/spawn.js000066400000000000000000000012751327031702100176160ustar00rootroot00000000000000function spawnFactory(_namespace, _debugFabFactory) { var namespace = _namespace || ''; var debugFabFactory = _debugFabFactory; if(!debugFabFactory){ debugFabFactory = require('./debugFabFactory')(); } function spawn(ns) { // this is this.debug (from Debugger) var dbg = new Debugger(this.namespace, ns); return dbg.debug; }; function Debugger(_base, _ns){ var base = _base || ''; var ns = _ns || ''; var newNs = ns ? [base, ns].join(':') : base; var debug = debugFabFactory(newNs); this.debug = debug; this.debug.spawn = spawn; } var rootDebug = (new Debugger(namespace)).debug; return rootDebug; }; module.exports = spawnFactory; node-debug-fabulous-1.1.0/test/000077500000000000000000000000001327031702100163135ustar00rootroot00000000000000node-debug-fabulous-1.1.0/test/index.test.js000066400000000000000000000107561327031702100207470ustar00rootroot00000000000000'use strict'; var expect = require('chai').expect; var hook = require('hook-std'); var memwatch = require('memwatch-next'); memwatch.on('leak', function(info) { console.log("LEAK"); console.log(info); throw new Error("there is a LEAK"); process.exit(500); }); var heapDiff = new memwatch.HeapDiff(); describe('index / spawn', function () { var rootDbg, unhook, date; before(function(){ date = Date.now(); }) after(function(){ var hde = heapDiff.end(); var change = hde.change; change.details = null; console.log(JSON.stringify({ before: hde.before, after: hde.after, change: change }, null, 2)); console.log("index.test.js Total time: " + (Date.now() - date)); }) describe('namespacing', function () { beforeEach(function () { var origDebug = require('..')(); origDebug.save('root*'); origDebug.enable(origDebug.load()) rootDbg = require('../').spawnable('root', origDebug); // console.log(rootDbg); }) it('handles functions', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root/)).to.be.ok; done() }); rootDbg(function () {return 'crap';}); unhook(); }); it('normal', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root/)).to.be.ok; done() }); rootDbg('crap'); unhook(); }); describe('child1', function(){ var child1Dbg; beforeEach(function () { child1Dbg = rootDbg.spawn('child1'); }) it('handles functions', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1/)).to.be.ok; done() }); child1Dbg(function () {return 'crap';}); unhook(); }); it('normal', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1/)).to.be.ok; done() }); child1Dbg('crap'); unhook(); }); it('leak', function () { // memory leak attempt for(var i = 0; i < 1000;i++){ child1Dbg = rootDbg.spawn('child1'); leakTest('leakTest' + i); } }); function leakTest(testName) { child1Dbg(function () {return testName;}); } describe('grandChild1', function(){ var grandChild1; before(function () { grandChild1 = child1Dbg.spawn('grandChild1') }) it('handles functions', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1:grandChild1/)).to.be.ok; done() }); grandChild1(function () {return 'crap';}); unhook(); }); it('normal', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1:grandChild1/)).to.be.ok; done() }); grandChild1('crap'); unhook(); }); describe('greatGrandChild1', function(){ var greatGrandChild1; before(function () { greatGrandChild1 = grandChild1.spawn('greatGrandChild1') // console.log(greatGrandChild1) }) it('handles functions', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1:grandChild1:greatGrandChild1/)).to.be.ok; done() }); greatGrandChild1(function () {return 'crap';}); unhook(); }); it('normal', function (done) { unhook = hook.stderr(function (str) { expect(str).to.be.ok; expect(str.match(/crap/)).to.be.ok; expect(str.match(/root:child1:grandChild1:greatGrandChild1/)).to.be.ok; done() }); greatGrandChild1('crap'); unhook(); }); }); }); }); }); }); node-debug-fabulous-1.1.0/test/perf/000077500000000000000000000000001327031702100172475ustar00rootroot00000000000000node-debug-fabulous-1.1.0/test/perf/getSomeDataForPefTests000077500000000000000000000001471327031702100235210ustar00rootroot00000000000000#!/bin/sh curl -o crashes.json 'https://data.ny.gov/api/views/xe9x-a24f/rows.json?accessType=DOWNLOAD' node-debug-fabulous-1.1.0/test/perf/perfWith.js000066400000000000000000000017361327031702100214040ustar00rootroot00000000000000'use strict'; const fs = require('fs'); const JSONStream = require('JSONStream'); const debug = require('../../') .spawnable(require('../../package.json').name) .spawn('perf'); var memwatch = require('memwatch-next'); var heapDiff = new memwatch.HeapDiff(); let start = process.hrtime(); function elapsedTime() { var precision = 3; // 3 decimal places var timed = process.hrtime(start); var ms = timed[1] / 1000000;// divide by a million to get nano to milli ms = Number(timed[0] * 1000) + Number(ms.toFixed(precision)); return ms + ' ms'; } function endTest() { var hde = heapDiff.end(); var change = hde.change; change.details = null; console.log('change.size: ' + change.size); console.log("perfWithout.js Total time: " + elapsedTime()); } fs.createReadStream(__dirname + '/crashes.json', { encoding: 'utf8' }) .pipe(JSONStream.stringify()) .on('data', (json) => { debug(() => json.length); debug(() => json) }) .on('end', () => endTest());node-debug-fabulous-1.1.0/test/perf/perfWith.out000066400000000000000000000027051327031702100215740ustar00rootroot00000000000000❯ time (for i in $(seq 1 20); do node ./test/perf/perfWith.js; done); change.size: 54.88 kb perfWithout.js Total time: 1949.525 ms change.size: 48.9 kb perfWithout.js Total time: 1937.087 ms change.size: 49.85 kb perfWithout.js Total time: 1925.757 ms change.size: 57.78 kb perfWithout.js Total time: 1914.3200000000002 ms change.size: 55.46 kb perfWithout.js Total time: 1936.4769999999999 ms change.size: 53.76 kb perfWithout.js Total time: 1921.262 ms change.size: 53.45 kb perfWithout.js Total time: 2003.621 ms change.size: 54.95 kb perfWithout.js Total time: 1914.387 ms change.size: 52.57 kb perfWithout.js Total time: 1990.955 ms change.size: 55.13 kb perfWithout.js Total time: 1909.8899999999999 ms change.size: 58.48 kb perfWithout.js Total time: 1931.453 ms change.size: 55.6 kb perfWithout.js Total time: 1904.1219999999998 ms change.size: 55.22 kb perfWithout.js Total time: 2005.619 ms change.size: 49.35 kb perfWithout.js Total time: 1872.238 ms change.size: 52.37 kb perfWithout.js Total time: 1883.594 ms change.size: 53.68 kb perfWithout.js Total time: 1868.738 ms change.size: 55.4 kb perfWithout.js Total time: 1876.004 ms change.size: 54.84 kb perfWithout.js Total time: 1873.001 ms change.size: 54.95 kb perfWithout.js Total time: 1861.063 ms change.size: 56.5 kb perfWithout.js Total time: 1882.318 ms ( for i in $(seq 1 20); do; node ./test/perf/perfWith.js; done; ) 37.24s user 4.27s system 100% cpu 41.197 total ❯ node > 37.24 / 20 1.862 s avgnode-debug-fabulous-1.1.0/test/perf/perfWithout.js000066400000000000000000000016771327031702100221400ustar00rootroot00000000000000'use strict'; const fs = require('fs'); const JSONStream = require('JSONStream'); const debug = require('debug')(require('../../package.json').name + ':perf'); var memwatch = require('memwatch-next'); var heapDiff = new memwatch.HeapDiff(); let start = process.hrtime(); function elapsedTime() { var precision = 3; // 3 decimal places var timed = process.hrtime(start); var ms = timed[1] / 1000000;// divide by a million to get nano to milli ms = Number(timed[0] * 1000) + Number(ms.toFixed(precision)); return ms + ' ms'; } function endTest() { var hde = heapDiff.end(); var change = hde.change; change.details = null; console.log('change.size: ' + change.size); console.log("perfWithout.js Total time: " + elapsedTime()); } fs.createReadStream(__dirname + '/crashes.json', { encoding: 'utf8' }) .pipe(JSONStream.stringify()) .on('data', (json) => { debug(json.length); debug(json) }) .on('end', () => endTest());node-debug-fabulous-1.1.0/test/perf/perfWithout.out000066400000000000000000000027651327031702100223320ustar00rootroot00000000000000❯ time (for i in $(seq 1 20); do node ./test/perf/perfWithout.js; done); change.size: 157.73 kb perfWithout.js Total time: 1917.258 ms change.size: 156.64 kb perfWithout.js Total time: 1883.942 ms change.size: 157.77 kb perfWithout.js Total time: 1864.636 ms change.size: 158.76 kb perfWithout.js Total time: 1835.8110000000001 ms change.size: 157.73 kb perfWithout.js Total time: 1915.312 ms change.size: 158.76 kb perfWithout.js Total time: 1930.1480000000001 ms change.size: 155.66 kb perfWithout.js Total time: 1920.246 ms change.size: 157.73 kb perfWithout.js Total time: 1915.279 ms change.size: 145.17 kb perfWithout.js Total time: 1861.091 ms change.size: 159.38 kb perfWithout.js Total time: 1862.7759999999998 ms change.size: 158.29 kb perfWithout.js Total time: 1872.547 ms change.size: 157.77 kb perfWithout.js Total time: 1858.462 ms change.size: 152.58 kb perfWithout.js Total time: 1874.6979999999999 ms change.size: 158.76 kb perfWithout.js Total time: 1863.789 ms change.size: 159.38 kb perfWithout.js Total time: 1867.6399999999999 ms change.size: 157.77 kb perfWithout.js Total time: 1842.8899999999999 ms change.size: 156.75 kb perfWithout.js Total time: 1860.114 ms change.size: 158.09 kb perfWithout.js Total time: 1883.007 ms change.size: 159.12 kb perfWithout.js Total time: 1862.98 ms change.size: 158.76 kb perfWithout.js Total time: 1865.397 ms ( for i in $(seq 1 20); do; node ./test/perf/perfWithout.js; done; ) 36.22s user 4.05s system 100% cpu 39.924 total ❯ node > 36.22 / 20 1.811 s avgnode-debug-fabulous-1.1.0/test/src/000077500000000000000000000000001327031702100171025ustar00rootroot00000000000000node-debug-fabulous-1.1.0/test/src/lazy-eval.test.js000066400000000000000000000046271327031702100223330ustar00rootroot00000000000000var expect = require('chai').expect; var hook = require('hook-std'); var memwatch = require('memwatch-next'); var debugFact = require('../../src/debugFabFactory')(); memwatch.on('leak', function(info) { console.log("LEAK"); console.log(info); throw new Error("there is a LEAK"); process.exit(500); }); var heapDiff = new memwatch.HeapDiff(); describe('lazy-eval', function () { var debug, unhook, date; before(function(){ date = Date.now(); }) after(function(){ var hde = heapDiff.end(); var change = hde.change; change.details = null; console.log(JSON.stringify({ before: hde.before, after: hde.after, change: change }, null, 2)); console.log("lazy-eval-test.js Total time: " + (Date.now() - date)); }) describe('enabled', function () { before(function () { debugFact.save('enabled'); debugFact.enable(debugFact.load()) debug = debugFact('enabled'); // console.log(debug); }) it('handles functions', function (done) { unhook = hook.stderr(function (str) { expect(str.match(/crap/)).to.be.ok; expect(str.match(/enabled/)).to.be.ok; done() }); debug(function () {return 'crap';}); unhook(); }); it('leak', function () { // memory leak attempt for(var i = 0; i < 1000;i++){ debug = debugFact('enabled'); leakTest("leak" + i); } function leakTest(name){ debug(function () {return name;}); } }); it('normal', function (done) { unhook = hook.stderr(function (str) { expect(str.match(/crap/)).to.be.ok; expect(str.match(/enabled/)).to.be.ok; done() }); debug('crap'); unhook(); }); }); describe('disabled', function () { before(function () { debugFact.save(null); debugFact.enable(debugFact.load()) debug = debugFact('disabled'); }) it('handles functions', function () { var called = false; unhook = hook.stderr(function () { called = true; }); debug(function () { called = true; return 'crap'; }); unhook(); expect(called).to.not.be.ok; }); it('normal', function () { var called = false; unhook = hook.stderr(function () { called = true; }); debug('crap'); unhook(); expect(called).to.not.be.ok; }); }); }); node-debug-fabulous-1.1.0/test/src/spawn.test.js000066400000000000000000000045451327031702100215560ustar00rootroot00000000000000var expect = require('chai').expect; var debugFabAPI = require('../..'); var origDebug = debugFabAPI(); origDebug.save('root*'); origDebug.enable(origDebug.load()); var debug = debugFabAPI.spawnable('root', origDebug); describe('spawn', function() { describe('namespaces are unique', function() { it('1 off', function() { var child = debug.spawn('child1'); expect(child.namespace).to.not.eql(debug.namespace); expect(debug.namespace).to.eql('root'); expect(child.namespace).to.eql('root:child1'); }); it('2 off', function() { var child1 = debug.spawn('child1'); var child2 = debug.spawn('child2'); expect(child1).to.not.eql(child2); expect(child1.namespace).to.not.eql(child2.namespace); expect(child1.namespace).to.eql('root:child1'); expect(child2.namespace).to.eql('root:child2'); }); it('grandchildren', function() { var child1 = debug.spawn('child1').spawn('grand'); var child2 = debug.spawn('child2').spawn('grand'); expect(child1).to.not.eql(child2); // resolved by noop scope level to be new on each spawn expect(child1.namespace).to.not.eql(child2.namespace); // resolved by not memoizeing spawn as `grand` // above matches for both child1 and child2 and memoizee has child1 cached expect(child1.namespace).to.eql('root:child1:grand'); expect(child2.namespace).to.eql('root:child2:grand'); }); it('grandchildren', function() { var child1 = debug.spawn('child1').spawn('grand'); var child2 = debug.spawn('child2').spawn('grand1'); expect(child1).to.not.eql(child2); expect(child1.namespace).to.not.eql(child2.namespace); // resolved by not memoizeing spawn as `grand` // above matches for both child1 and child2 and memoizee has child1 cached expect(child1.namespace).to.eql('root:child1:grand'); expect(child2.namespace).to.eql('root:child2:grand1'); }); it('great grandchildren', function() { var child1 = debug.spawn('child1').spawn('grand').spawn('great'); var child2 = debug.spawn('child2').spawn('grand').spawn('great');; expect(child1).to.not.eql(child2); expect(child1.namespace).to.not.eql(child2.namespace); expect(child1.namespace).to.eql('root:child1:grand:great'); expect(child2.namespace).to.eql('root:child2:grand:great'); }); }); }); node-debug-fabulous-1.1.0/yarn.lock000066400000000000000000001014071327031702100171620ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 JSONStream@1.X: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" dependencies: acorn "^3.0.4" acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: color-convert "^1.9.0" argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" dependencies: sprintf-js "~1.0.2" array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" assertion-error@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: chalk "^1.1.3" esutils "^2.0.2" js-tokens "^3.0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" bindings@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" dependencies: callsites "^0.2.0" callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" chai@4.X: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" dependencies: assertion-error "^1.0.1" check-error "^1.0.1" deep-eql "^3.0.0" get-func-name "^2.0.0" pathval "^1.0.0" type-detect "^4.0.0" chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" has-ansi "^2.0.0" strip-ansi "^3.0.0" supports-color "^2.0.0" chalk@^2.0.0, chalk@^2.1.0: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: buffer-from "^1.0.0" inherits "^2.0.3" readable-stream "^2.2.2" typedarray "^0.0.6" core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" which "^1.2.9" d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" dependencies: es5-ext "^0.10.9" debug@3.1.0, debug@3.X, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" deep-eql@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: type-detect "^4.0.0" deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" is-path-in-cwd "^1.0.0" object-assign "^4.0.1" pify "^2.0.0" pinkie-promise "^2.0.0" rimraf "^2.2.8" diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" dependencies: esutils "^2.0.2" es5-ext@^0.10.14, es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: version "0.10.42" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" next-tick "1" es6-iterator@^2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: d "1" es5-ext "^0.10.35" es6-symbol "^3.1.1" es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: d "1" es5-ext "~0.10.14" es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: d "1" es5-ext "^0.10.14" es6-iterator "^2.0.1" es6-symbol "^3.1.1" escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" eslint@4.X: version "4.19.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" chalk "^2.1.0" concat-stream "^1.6.0" cross-spawn "^5.1.0" debug "^3.1.0" doctrine "^2.1.0" eslint-scope "^3.7.1" eslint-visitor-keys "^1.0.0" espree "^3.5.4" esquery "^1.0.0" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" glob "^7.1.2" globals "^11.0.1" ignore "^3.3.3" imurmurhash "^0.1.4" inquirer "^3.0.6" is-resolvable "^1.0.0" js-yaml "^3.9.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.4" minimatch "^3.0.2" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" pluralize "^7.0.0" progress "^2.0.0" regexpp "^1.0.1" require-uncached "^1.0.3" semver "^5.3.0" strip-ansi "^4.0.0" strip-json-comments "~2.0.1" table "4.0.2" text-table "~0.2.0" espree@^3.5.4: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" dependencies: acorn "^5.5.0" acorn-jsx "^3.0.0" esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" esquery@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" dependencies: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: d "1" es5-ext "~0.10.14" external-editor@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" dependencies: chardet "^0.4.0" iconv-lite "^0.4.17" tmp "^0.0.33" fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" dependencies: circular-json "^0.3.1" del "^2.0.2" graceful-fs "^4.1.2" write "^0.2.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^11.0.1: version "11.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc" globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" dependencies: array-union "^1.0.1" arrify "^1.0.0" glob "^7.0.3" object-assign "^4.0.1" pify "^2.0.0" pinkie-promise "^2.0.0" graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" dependencies: ansi-regex "^2.0.0" has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" hook-std@0.X: version "0.4.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-0.4.0.tgz#fa8b2f84d358763137cb7d17e3308b28714bd174" iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" ignore@^3.3.3: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" external-editor "^2.0.4" figures "^2.0.0" lodash "^4.3.0" mute-stream "0.0.7" run-async "^2.2.0" rx-lite "^4.0.8" rx-lite-aggregates "^4.0.8" string-width "^2.1.0" strip-ansi "^4.0.0" through "^2.3.6" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" dependencies: path-is-inside "^1.0.1" is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: argparse "^1.0.7" esprima "^4.0.0" json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" lodash@^4.17.4, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" lru-cache@^4.0.1: version "4.1.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" dependencies: es5-ext "~0.10.2" memoizee@0.4.X: version "0.4.12" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.12.tgz#780e99a219c50c549be6d0fc61765080975c58fb" dependencies: d "1" es5-ext "^0.10.30" es6-weak-map "^2.0.2" event-emitter "^0.3.5" is-promise "^2.1" lru-queue "0.1" next-tick "1" timers-ext "^0.1.2" memwatch-next@0.3.X: version "0.3.0" resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f" dependencies: bindings "^1.2.1" nan "^2.3.2" mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" mkdirp@0.5.1, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" mocha@4.X: version "4.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" dependencies: browser-stdout "1.3.0" commander "2.11.0" debug "3.1.0" diff "3.3.1" escape-string-regexp "1.0.5" glob "7.1.2" growl "1.10.3" he "1.1.1" mkdirp "0.5.1" supports-color "4.4.0" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" nan@^2.3.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" object-assign@4.X, object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" dependencies: mimic-fn "^1.0.0" optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" wordwrap "~1.0.0" os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" readable-stream@^2.2.2: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.0.3" util-deprecate "~1.0.1" regexpp@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.0.1.tgz#d857c3a741dce075c2848dcb019a0a975b190d43" require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" dependencies: onetime "^2.0.0" signal-exit "^3.0.2" rimraf@^2.2.8: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" dependencies: is-promise "^2.1.0" rx-lite-aggregates@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" dependencies: rx-lite "*" rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" semver@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" dependencies: is-fullwidth-code-point "^2.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" dependencies: ansi-regex "^3.0.0" strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" supports-color@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" supports-color@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" dependencies: has-flag "^3.0.0" table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" dependencies: ajv "^5.2.3" ajv-keywords "^2.1.0" chalk "^2.1.0" lodash "^4.17.4" slice-ansi "1.0.0" string-width "^2.1.1" text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" timers-ext@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922" dependencies: es5-ext "~0.10.14" next-tick "1" tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: os-tmpdir "~1.0.2" type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" dependencies: prelude-ls "~1.1.2" type-detect@^4.0.0: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" dependencies: mkdirp "^0.5.1" yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"