add cancelable Timeout
This commit is contained in:
		
							
								
								
									
										14
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1,16 @@
 | 
				
			|||||||
import 'typings-global';
 | 
					import 'typings-global';
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * delay something, works like setTimeout
 | 
				
			||||||
 | 
					 * @param timeInMillisecond
 | 
				
			||||||
 | 
					 * @param passOn
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
export declare let delayFor: <T>(timeInMillisecond: number, passOn?: T) => Promise<T>;
 | 
					export declare let delayFor: <T>(timeInMillisecond: number, passOn?: T) => Promise<T>;
 | 
				
			||||||
 | 
					export declare class Timeout<T> {
 | 
				
			||||||
 | 
					    promise: Promise<T>;
 | 
				
			||||||
 | 
					    private _deferred;
 | 
				
			||||||
 | 
					    private _timeout;
 | 
				
			||||||
 | 
					    private _cancelled;
 | 
				
			||||||
 | 
					    constructor(timeInMillisecondArg: any, passOn?: T);
 | 
				
			||||||
 | 
					    makeUnrefed(): void;
 | 
				
			||||||
 | 
					    cancel(): void;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -7,7 +7,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 | 
				
			|||||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
					        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
require("typings-global");
 | 
					require("typings-global");
 | 
				
			||||||
 | 
					const smartq = require("smartq");
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * delay something, works like setTimeout
 | 
				
			||||||
 | 
					 * @param timeInMillisecond
 | 
				
			||||||
 | 
					 * @param passOn
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
exports.delayFor = (timeInMillisecond, passOn) => __awaiter(this, void 0, void 0, function* () {
 | 
					exports.delayFor = (timeInMillisecond, passOn) => __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
    yield new Promise((resolve, reject) => {
 | 
					    yield new Promise((resolve, reject) => {
 | 
				
			||||||
        setTimeout(() => {
 | 
					        setTimeout(() => {
 | 
				
			||||||
@@ -16,4 +23,24 @@ exports.delayFor = (timeInMillisecond, passOn) => __awaiter(this, void 0, void 0
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
    return passOn;
 | 
					    return passOn;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwwQkFBdUI7QUFFWixRQUFBLFFBQVEsR0FBRyxDQUFVLGlCQUF5QixFQUFFLE1BQVU7SUFDakUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNO1FBQzlCLFVBQVUsQ0FDTjtZQUNJLE9BQU8sRUFBRSxDQUFBO1FBQ2IsQ0FBQyxFQUNELGlCQUFpQixDQUNwQixDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDRixNQUFNLENBQUMsTUFBTSxDQUFBO0FBQ2pCLENBQUMsQ0FBQSxDQUFBIn0=
 | 
					class Timeout {
 | 
				
			||||||
 | 
					    constructor(timeInMillisecondArg, passOn) {
 | 
				
			||||||
 | 
					        this._cancelled = false;
 | 
				
			||||||
 | 
					        this._deferred = smartq.defer();
 | 
				
			||||||
 | 
					        this.promise = this._deferred.promise;
 | 
				
			||||||
 | 
					        this._timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					            if (!this._cancelled) {
 | 
				
			||||||
 | 
					                this._deferred.resolve(passOn);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }, timeInMillisecondArg);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    makeUnrefed() {
 | 
				
			||||||
 | 
					        this._timeout.unref();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    cancel() {
 | 
				
			||||||
 | 
					        this._cancelled = true;
 | 
				
			||||||
 | 
					        this.makeUnrefed();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.Timeout = Timeout;
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMEJBQXVCO0FBQ3ZCLGlDQUFnQztBQUVoQzs7OztHQUlHO0FBQ1EsUUFBQSxRQUFRLEdBQUcsQ0FBVSxpQkFBeUIsRUFBRSxNQUFVO0lBQ25FLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTTtRQUNoQyxVQUFVLENBQ1I7WUFDRSxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUMsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSxDQUFBO0FBRUQ7SUFLRSxZQUFhLG9CQUFvQixFQUFFLE1BQVU7UUFEckMsZUFBVSxHQUFZLEtBQUssQ0FBQTtRQUVqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUssQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1lBQ3pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2hDLENBQUM7UUFDSCxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDcEIsQ0FBQztDQUNGO0FBdkJELDBCQXVCQyJ9
 | 
				
			||||||
							
								
								
									
										12
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "smartdelay",
 | 
				
			||||||
 | 
					  "version": "1.0.1",
 | 
				
			||||||
 | 
					  "lockfileVersion": 1,
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@types/node": {
 | 
				
			||||||
 | 
					      "version": "7.0.27",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.27.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-2QMiuVOEye2yKmMwE1V96C9HSShmT0WSm6dv2WjacvePEjQNNJGAerTO5hdYhj5lpdK5MW+FVxmyzDhr4omIdw=="
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -18,11 +18,10 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "homepage": "https://gitlab.com/pushrocks/smartdelay#README",
 | 
					  "homepage": "https://gitlab.com/pushrocks/smartdelay#README",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "typings-global": "^1.0.14"
 | 
					    "smartq": "^1.1.1",
 | 
				
			||||||
 | 
					    "typings-global": "^1.0.16"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/should": "^8.1.30",
 | 
					    "tapbundle": "^1.0.13"
 | 
				
			||||||
    "should": "^11.1.2",
 | 
					 | 
				
			||||||
    "typings-test": "^1.0.3"
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
				
			|||||||
import 'typings-test';
 | 
					 | 
				
			||||||
							
								
								
									
										30
									
								
								test/test.js
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								test/test.js
									
									
									
									
									
								
							@@ -1,30 +0,0 @@
 | 
				
			|||||||
"use strict";
 | 
					 | 
				
			||||||
require("typings-test");
 | 
					 | 
				
			||||||
const should = require("should");
 | 
					 | 
				
			||||||
const smartdelay = require("../dist/index");
 | 
					 | 
				
			||||||
describe('smartdelay', function () {
 | 
					 | 
				
			||||||
    it('.delayFor should delay async', function (done) {
 | 
					 | 
				
			||||||
        this.timeout(5000);
 | 
					 | 
				
			||||||
        let timePassed = false;
 | 
					 | 
				
			||||||
        setTimeout(() => {
 | 
					 | 
				
			||||||
            timePassed = true;
 | 
					 | 
				
			||||||
        }, 2000);
 | 
					 | 
				
			||||||
        smartdelay.delayFor(3000).then(() => {
 | 
					 | 
				
			||||||
            should(timePassed).be.true();
 | 
					 | 
				
			||||||
            done();
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it('.delayFor should pass on a type', function (done) {
 | 
					 | 
				
			||||||
        this.timeout(5000);
 | 
					 | 
				
			||||||
        let timePassed = false;
 | 
					 | 
				
			||||||
        setTimeout(() => {
 | 
					 | 
				
			||||||
            timePassed = true;
 | 
					 | 
				
			||||||
        }, 2000);
 | 
					 | 
				
			||||||
        let hey = 'heyThere';
 | 
					 | 
				
			||||||
        smartdelay.delayFor(3000, hey).then((stringArg) => {
 | 
					 | 
				
			||||||
            should(stringArg).equal('heyThere');
 | 
					 | 
				
			||||||
            done();
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUVyQixpQ0FBZ0M7QUFFaEMsNENBQTJDO0FBRTNDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7SUFDbkIsRUFBRSxDQUFDLDhCQUE4QixFQUFFLFVBQVMsSUFBSTtRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN0QixVQUFVLENBQUM7WUFDUCxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUNQLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDNUIsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLFVBQVMsSUFBSTtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN0QixVQUFVLENBQUM7WUFDUCxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUNQLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQTtRQUNwQixVQUFVLENBQUMsUUFBUSxDQUFTLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO1lBQ2xELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDbkMsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUEifQ==
 | 
					 | 
				
			||||||
							
								
								
									
										36
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,31 +1,39 @@
 | 
				
			|||||||
import 'typings-test'
 | 
					import { expect, tap } from 'tapbundle'
 | 
				
			||||||
 | 
					 | 
				
			||||||
import * as should from 'should'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as smartdelay from '../dist/index'
 | 
					import * as smartdelay from '../dist/index'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('smartdelay', function () {
 | 
					tap.test('.delayFor should delay async', async (tools) => {
 | 
				
			||||||
    it('.delayFor should delay async', function(done) {
 | 
					  tools.timeout(5000)
 | 
				
			||||||
        this.timeout(5000)
 | 
					 | 
				
			||||||
  let timePassed = false
 | 
					  let timePassed = false
 | 
				
			||||||
  setTimeout(() => {
 | 
					  setTimeout(() => {
 | 
				
			||||||
    timePassed = true
 | 
					    timePassed = true
 | 
				
			||||||
  }, 2000)
 | 
					  }, 2000)
 | 
				
			||||||
        smartdelay.delayFor(3000).then(() => {
 | 
					  await smartdelay.delayFor(3000).then(async () => {
 | 
				
			||||||
            should(timePassed).be.true()
 | 
					    // tslint:disable-next-line:no-unused-expression
 | 
				
			||||||
            done()
 | 
					    expect(timePassed).to.be.true
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
    it('.delayFor should pass on a type', function(done) {
 | 
					
 | 
				
			||||||
        this.timeout(5000)
 | 
					tap.test('.delayFor should pass on a type', async (tools) => {
 | 
				
			||||||
 | 
					  tools.timeout(5000)
 | 
				
			||||||
  let timePassed = false
 | 
					  let timePassed = false
 | 
				
			||||||
  setTimeout(() => {
 | 
					  setTimeout(() => {
 | 
				
			||||||
    timePassed = true
 | 
					    timePassed = true
 | 
				
			||||||
  }, 2000)
 | 
					  }, 2000)
 | 
				
			||||||
  let hey = 'heyThere'
 | 
					  let hey = 'heyThere'
 | 
				
			||||||
        smartdelay.delayFor<string>(3000, hey).then((stringArg) => {
 | 
					  await smartdelay.delayFor<string>(3000, hey).then(async (stringArg) => {
 | 
				
			||||||
            should(stringArg).equal('heyThere')
 | 
					    expect(stringArg).equal('heyThere')
 | 
				
			||||||
            done()
 | 
					 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tap.test('smartdelay.Timeout', async () => {
 | 
				
			||||||
 | 
					  let timeout = new smartdelay.Timeout(2000)
 | 
				
			||||||
 | 
					  await timeout.promise
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tap.test('smartdelay.Timeout should cancel', async (tools) => {
 | 
				
			||||||
 | 
					  let timeout = new smartdelay.Timeout(60000)
 | 
				
			||||||
 | 
					  timeout.cancel()
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tap.start()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								ts/index.ts
									
									
									
									
									
								
							@@ -1,5 +1,11 @@
 | 
				
			|||||||
import 'typings-global'
 | 
					import 'typings-global'
 | 
				
			||||||
 | 
					import * as smartq from 'smartq'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * delay something, works like setTimeout
 | 
				
			||||||
 | 
					 * @param timeInMillisecond
 | 
				
			||||||
 | 
					 * @param passOn
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
export let delayFor = async <T>(timeInMillisecond: number, passOn?: T) => {
 | 
					export let delayFor = async <T>(timeInMillisecond: number, passOn?: T) => {
 | 
				
			||||||
  await new Promise((resolve, reject) => {
 | 
					  await new Promise((resolve, reject) => {
 | 
				
			||||||
    setTimeout(
 | 
					    setTimeout(
 | 
				
			||||||
@@ -11,3 +17,28 @@ export let delayFor = async <T>(timeInMillisecond: number, passOn?: T) => {
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
  return passOn
 | 
					  return passOn
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class Timeout<T> {
 | 
				
			||||||
 | 
					  promise: Promise<T>
 | 
				
			||||||
 | 
					  private _deferred: smartq.Deferred<T>
 | 
				
			||||||
 | 
					  private _timeout: any
 | 
				
			||||||
 | 
					  private _cancelled: boolean = false
 | 
				
			||||||
 | 
					  constructor (timeInMillisecondArg, passOn?: T) {
 | 
				
			||||||
 | 
					    this._deferred = smartq.defer<T>()
 | 
				
			||||||
 | 
					    this.promise = this._deferred.promise
 | 
				
			||||||
 | 
					    this._timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					      if (!this._cancelled) {
 | 
				
			||||||
 | 
					        this._deferred.resolve(passOn)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }, timeInMillisecondArg)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  makeUnrefed () {
 | 
				
			||||||
 | 
					    this._timeout.unref()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cancel () {
 | 
				
			||||||
 | 
					    this._cancelled = true
 | 
				
			||||||
 | 
					    this.makeUnrefed()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										258
									
								
								yarn.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										258
									
								
								yarn.lock
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,258 @@
 | 
				
			|||||||
 | 
					# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
 | 
				
			||||||
 | 
					# yarn lockfile v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@types/chai-as-promised@0.0.29":
 | 
				
			||||||
 | 
					  version "0.0.29"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-0.0.29.tgz#43d52892aa998e185a3de3e2477edb8573be1d77"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@types/chai" "*"
 | 
				
			||||||
 | 
					    "@types/promises-a-plus" "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@types/chai-string@^1.1.30":
 | 
				
			||||||
 | 
					  version "1.1.30"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.30.tgz#4d8744b31a5a2295fc01c981ed1e2d4c8a070f0a"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@types/chai" "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@types/chai@*", "@types/chai@^3.4.35":
 | 
				
			||||||
 | 
					  version "3.5.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@types/promises-a-plus@*":
 | 
				
			||||||
 | 
					  version "0.0.27"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ansi-256-colors@^1.1.0:
 | 
				
			||||||
 | 
					  version "1.1.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					assertion-error@^1.0.1:
 | 
				
			||||||
 | 
					  version "1.0.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					balanced-match@^0.4.1:
 | 
				
			||||||
 | 
					  version "0.4.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					beautycolor@^1.0.7:
 | 
				
			||||||
 | 
					  version "1.0.7"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.7.tgz#a4715738ac4c8221371e9cbeb5a6cc6d11ecbf7c"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    ansi-256-colors "^1.1.0"
 | 
				
			||||||
 | 
					    typings-global "^1.0.14"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bindings@^1.2.1:
 | 
				
			||||||
 | 
					  version "1.2.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					brace-expansion@^1.1.7:
 | 
				
			||||||
 | 
					  version "1.1.7"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    balanced-match "^0.4.1"
 | 
				
			||||||
 | 
					    concat-map "0.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chai-as-promised@^6.0.0:
 | 
				
			||||||
 | 
					  version "6.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    check-error "^1.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chai-string@^1.3.0:
 | 
				
			||||||
 | 
					  version "1.3.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.3.0.tgz#df6139f294391b1035be5606f60a843b3a5041e7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chai@^3.5.0:
 | 
				
			||||||
 | 
					  version "3.5.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    assertion-error "^1.0.1"
 | 
				
			||||||
 | 
					    deep-eql "^0.1.3"
 | 
				
			||||||
 | 
					    type-detect "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check-error@^1.0.2:
 | 
				
			||||||
 | 
					  version "1.0.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					concat-map@0.0.1:
 | 
				
			||||||
 | 
					  version "0.0.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					deep-eql@^0.1.3:
 | 
				
			||||||
 | 
					  version "0.1.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    type-detect "0.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					early@^2.1.1:
 | 
				
			||||||
 | 
					  version "2.1.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    beautycolor "^1.0.7"
 | 
				
			||||||
 | 
					    smartq "^1.1.1"
 | 
				
			||||||
 | 
					    typings-global "^1.0.16"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fs.realpath@^1.0.0:
 | 
				
			||||||
 | 
					  version "1.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					glob@^7.0.0:
 | 
				
			||||||
 | 
					  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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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:
 | 
				
			||||||
 | 
					  version "2.0.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interpret@^1.0.0:
 | 
				
			||||||
 | 
					  version "1.0.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					leakage@^0.2.0:
 | 
				
			||||||
 | 
					  version "0.2.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.2.0.tgz#9e7a8cc1d241d8c8427e348769e192e172fd8733"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    left-pad "^1.1.3"
 | 
				
			||||||
 | 
					    memwatch-next "^0.3.0"
 | 
				
			||||||
 | 
					    minimist "^1.2.0"
 | 
				
			||||||
 | 
					    pretty-bytes "^4.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					left-pad@^1.1.3:
 | 
				
			||||||
 | 
					  version "1.1.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					memwatch-next@^0.3.0:
 | 
				
			||||||
 | 
					  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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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@^1.2.0:
 | 
				
			||||||
 | 
					  version "1.2.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nan@^2.3.2:
 | 
				
			||||||
 | 
					  version "2.6.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					once@^1.3.0:
 | 
				
			||||||
 | 
					  version "1.4.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    wrappy "1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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-parse@^1.0.5:
 | 
				
			||||||
 | 
					  version "1.0.5"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pretty-bytes@^4.0.2:
 | 
				
			||||||
 | 
					  version "4.0.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rechoir@^0.6.2:
 | 
				
			||||||
 | 
					  version "0.6.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    resolve "^1.1.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resolve@^1.1.6:
 | 
				
			||||||
 | 
					  version "1.3.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    path-parse "^1.0.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					semver@^5.3.0:
 | 
				
			||||||
 | 
					  version "5.3.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					shelljs@^0.7.7:
 | 
				
			||||||
 | 
					  version "0.7.7"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    glob "^7.0.0"
 | 
				
			||||||
 | 
					    interpret "^1.0.0"
 | 
				
			||||||
 | 
					    rechoir "^0.6.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					smartchai@^1.0.3:
 | 
				
			||||||
 | 
					  version "1.0.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@types/chai" "^3.4.35"
 | 
				
			||||||
 | 
					    "@types/chai-as-promised" "0.0.29"
 | 
				
			||||||
 | 
					    "@types/chai-string" "^1.1.30"
 | 
				
			||||||
 | 
					    chai "^3.5.0"
 | 
				
			||||||
 | 
					    chai-as-promised "^6.0.0"
 | 
				
			||||||
 | 
					    chai-string "^1.3.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					smartdelay@^1.0.1:
 | 
				
			||||||
 | 
					  version "1.0.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.1.tgz#687f8bcc09d7c62c9c5a8a1771c1aba3aff54156"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    typings-global "^1.0.14"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					smartq@^1.1.1:
 | 
				
			||||||
 | 
					  version "1.1.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    typed-promisify "^0.3.0"
 | 
				
			||||||
 | 
					    typings-global "^1.0.14"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tapbundle@^1.0.13:
 | 
				
			||||||
 | 
					  version "1.0.13"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.13.tgz#0b274aed6a386c0c01d8d517709381ce96e3971e"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    early "^2.1.1"
 | 
				
			||||||
 | 
					    leakage "^0.2.0"
 | 
				
			||||||
 | 
					    smartchai "^1.0.3"
 | 
				
			||||||
 | 
					    smartdelay "^1.0.1"
 | 
				
			||||||
 | 
					    smartq "^1.1.1"
 | 
				
			||||||
 | 
					    typings-global "^1.0.16"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type-detect@0.1.1:
 | 
				
			||||||
 | 
					  version "0.1.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type-detect@^1.0.0:
 | 
				
			||||||
 | 
					  version "1.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typed-promisify@^0.3.0:
 | 
				
			||||||
 | 
					  version "0.3.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typings-global@^1.0.14, typings-global@^1.0.16:
 | 
				
			||||||
 | 
					  version "1.0.16"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.16.tgz#489b71781af24268750c2899316400a5e482961f"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    semver "^5.3.0"
 | 
				
			||||||
 | 
					    shelljs "^0.7.7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wrappy@1:
 | 
				
			||||||
 | 
					  version "1.0.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 | 
				
			||||||
		Reference in New Issue
	
	Block a user