diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..07808b2 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,15 @@ +import 'typings-global'; +export interface IResolve { + (value?: T | Promise): void; +} +export interface IReject { + (reason?: any): void; +} +export declare class Deferred { + promise: Promise; + resolve: IResolve; + reject: IReject; + constructor(); +} +export declare let defer: () => Deferred; +export declare let all: () => void; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..f856844 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,17 @@ +"use strict"; +require("typings-global"); +class Deferred { + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); + } +} +exports.Deferred = Deferred; +exports.defer = () => { + return new Deferred(); +}; +exports.all = () => { +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBVXZCO0lBSUk7UUFDSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFJLENBQUMsT0FBTyxFQUFFLE1BQU07WUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7WUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDeEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0o7QUFWRCw0QkFVQztBQUVVLFFBQUEsS0FBSyxHQUFHO0lBQ2YsTUFBTSxDQUFDLElBQUksUUFBUSxFQUFLLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBR1UsUUFBQSxHQUFHLEdBQUc7QUFFakIsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/package.json b/package.json index e2da804..b07f3f4 100644 --- a/package.json +++ b/package.json @@ -16,5 +16,13 @@ "bugs": { "url": "https://gitlab.com/pushrocks/smartq/issues" }, - "homepage": "https://gitlab.com/pushrocks/smartq#README" + "homepage": "https://gitlab.com/pushrocks/smartq#README", + "dependencies": { + "typings-global": "^1.0.14" + }, + "devDependencies": { + "@types/should": "^8.1.30", + "should": "^11.1.2", + "typings-test": "^1.0.3" + } } diff --git a/test/test.d.ts b/test/test.d.ts new file mode 100644 index 0000000..2fd432a --- /dev/null +++ b/test/test.d.ts @@ -0,0 +1 @@ +import 'typings-test'; diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..1ad30fc --- /dev/null +++ b/test/test.js @@ -0,0 +1,23 @@ +"use strict"; +require("typings-test"); +const should = require("should"); +const q = require("../dist/index"); +describe('smartq', function () { + it('should return a Deferred for .defer()', function (done) { + let myDeferred = q.defer(); + myDeferred.promise.then(() => { + done(); + }); + myDeferred.resolve(); + }); + it('should let types flow through the Promise', function (done) { + let myString = 'someString'; + let myDeferred = q.defer(); + myDeferred.promise.then(x => { + should(x).equal('someString'); + done(); + }); + myDeferred.resolve(myString); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUVyQixpQ0FBZ0M7QUFDaEMsbUNBQWtDO0FBRWxDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7SUFDZixFQUFFLENBQUMsdUNBQXVDLEVBQUUsVUFBUyxJQUFJO1FBQ3JELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUMxQixVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNwQixJQUFJLEVBQUUsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUFBO1FBQ0YsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLFVBQVMsSUFBSTtRQUN6RCxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUE7UUFDM0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBVSxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUM3QixJQUFJLEVBQUUsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUFBO1FBQ0YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNoQyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/test/test.ts b/test/test.ts new file mode 100644 index 0000000..2b41107 --- /dev/null +++ b/test/test.ts @@ -0,0 +1,24 @@ +import 'typings-test' + +import * as should from 'should' +import * as q from '../dist/index' + +describe('smartq', function() { + it('should return a Deferred for .defer()', function(done) { + let myDeferred = q.defer() + myDeferred.promise.then(() => { + done() + }) + myDeferred.resolve() + }) + + it('should let types flow through the Promise', function(done) { + let myString = 'someString' + let myDeferred = q.defer() + myDeferred.promise.then(x => { + should(x).equal('someString') + done() + }) + myDeferred.resolve(myString) + }) +}) \ No newline at end of file diff --git a/ts/index.ts b/ts/index.ts new file mode 100644 index 0000000..1265375 --- /dev/null +++ b/ts/index.ts @@ -0,0 +1,30 @@ +import 'typings-global' + +export interface IResolve { + (value?: T | Promise): void +} + +export interface IReject { + (reason?: any): void +} + +export class Deferred { + promise: Promise + resolve: IResolve + reject: IReject + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve + this.reject = reject + }) + } +} + +export let defer = () => { + return new Deferred() +} + + +export let all = () => { + +} \ No newline at end of file