Compare commits

...

10 Commits

Author SHA1 Message Date
5138219563 3.0.0 2019-03-26 12:02:02 +01:00
93f426cce0 BREAKING CHANGE(remove util dependency and promisify functionality): update 2019-03-26 12:02:01 +01:00
e42061047a 2.0.5 2018-07-03 08:41:43 +02:00
3b07f99488 fix(README): fix import statement 2018-07-03 08:41:42 +02:00
3d252a5e3e 2.0.4 2018-07-03 08:39:25 +02:00
d82722296b fix(README): update name 2018-07-03 08:39:25 +02:00
22317ef83d 2.0.3 2018-07-02 22:59:16 +02:00
054ec0afa4 fix(core): now has 0 dependencies 2018-07-02 22:59:16 +02:00
19d434533f 2.0.2 2018-07-02 22:54:14 +02:00
9b8440f743 fix(core): update to latest gitzone standards 2018-07-02 22:54:13 +02:00
6 changed files with 33 additions and 37 deletions

View File

@ -134,7 +134,7 @@ windowsCompatibility:
image: stefanscherer/node-windows:10-build-tools image: stefanscherer/node-windows:10-build-tools
stage: metadata stage: metadata
script: script:
- npm install; npm test - npm install & npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- windows - windows

View File

@ -1,6 +1,6 @@
# smartpromise # @pushrocks/smartpromise
dropin replacement for q smart helpers that work with promises
## Availabililty ## Availabililty
@ -29,7 +29,7 @@ Use TypeScript for best in class instellisense.
> smartq does not repeat any native functions, so for things like .all() simply use Promise.all() > smartq does not repeat any native functions, so for things like .all() simply use Promise.all()
```javascript ```javascript
import * as q from 'smartq' import * as q from '@pushrocks/smartpromise'
// Deferred // Deferred
// ----------------------------------------------- // -----------------------------------------------

27
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartpromise", "name": "@pushrocks/smartpromise",
"version": "2.0.1", "version": "3.0.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -227,6 +227,7 @@
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
"integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
"dev": true,
"requires": { "requires": {
"foreach": "^2.0.5", "foreach": "^2.0.5",
"object-keys": "^1.0.8" "object-keys": "^1.0.8"
@ -253,6 +254,7 @@
"version": "1.12.0", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
"integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
"dev": true,
"requires": { "requires": {
"es-to-primitive": "^1.1.1", "es-to-primitive": "^1.1.1",
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
@ -265,6 +267,7 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
"integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
"dev": true,
"requires": { "requires": {
"is-callable": "^1.1.1", "is-callable": "^1.1.1",
"is-date-object": "^1.0.1", "is-date-object": "^1.0.1",
@ -295,7 +298,8 @@
"foreach": { "foreach": {
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
"dev": true
}, },
"fs-extra": { "fs-extra": {
"version": "5.0.0", "version": "5.0.0",
@ -317,7 +321,8 @@
"function-bind": { "function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
}, },
"get-func-name": { "get-func-name": {
"version": "2.0.0", "version": "2.0.0",
@ -349,6 +354,7 @@
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": { "requires": {
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
} }
@ -381,17 +387,20 @@
"is-callable": { "is-callable": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
"integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
"dev": true
}, },
"is-date-object": { "is-date-object": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
"dev": true
}, },
"is-regex": { "is-regex": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"dev": true,
"requires": { "requires": {
"has": "^1.0.1" "has": "^1.0.1"
} }
@ -399,7 +408,8 @@
"is-symbol": { "is-symbol": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
"integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
"dev": true
}, },
"is-utf8": { "is-utf8": {
"version": "0.2.1", "version": "0.2.1",
@ -498,12 +508,14 @@
"object-keys": { "object-keys": {
"version": "1.0.12", "version": "1.0.12",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
"integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
"dev": true
}, },
"object.getownpropertydescriptors": { "object.getownpropertydescriptors": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
"dev": true,
"requires": { "requires": {
"define-properties": "^1.1.2", "define-properties": "^1.1.2",
"es-abstract": "^1.5.1" "es-abstract": "^1.5.1"
@ -785,6 +797,7 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
"dev": true,
"requires": { "requires": {
"define-properties": "^1.1.2", "define-properties": "^1.1.2",
"object.getownpropertydescriptors": "^2.0.3" "object.getownpropertydescriptors": "^2.0.3"

View File

@ -1,7 +1,7 @@
{ {
"name": "@pushrocks/smartpromise", "name": "@pushrocks/smartpromise",
"private": false, "private": false,
"version": "2.0.1", "version": "3.0.0",
"description": "dropin replacement for q", "description": "dropin replacement for q",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -19,9 +19,7 @@
"url": "https://gitlab.com/pushrocks/smartq/issues" "url": "https://gitlab.com/pushrocks/smartq/issues"
}, },
"homepage": "https://gitlab.com/pushrocks/smartq#README", "homepage": "https://gitlab.com/pushrocks/smartq#README",
"dependencies": { "dependencies": {},
"util.promisify": "^1.0.0"
},
"devDependencies": { "devDependencies": {
"@gitzone/tsrun": "^1.0.18", "@gitzone/tsrun": "^1.0.18",
"@types/node": "^10.5.1", "@types/node": "^10.5.1",

View File

@ -1,10 +1,6 @@
import { expect, tap } from 'tapbundle'; import { expect, tap } from 'tapbundle';
import * as q from '../ts/index'; import * as q from '../ts/index';
let myCallback = (someValue1: string, cb?) => {
cb(null, someValue1);
};
tap.test('should return a Deferred for .defer()', async () => { tap.test('should return a Deferred for .defer()', async () => {
let myDeferred = q.defer(); let myDeferred = q.defer();
let expectPromise = expect(myDeferred.promise).to.eventually.be.fulfilled; let expectPromise = expect(myDeferred.promise).to.eventually.be.fulfilled;
@ -20,16 +16,10 @@ tap.test('should let types flow through the Promise', async () => {
return expectPromise; return expectPromise;
}); });
tap.test('should promisify a callback', async () => {
let myPromisified = q.promisify(myCallback);
let expectPromise = expect(myPromisified('hi')).to.eventually.equal('hi');
return await expectPromise;
});
tap.test('should map callbacks', async () => { tap.test('should map callbacks', async () => {
let inputArray = ['hi', 'awesome']; let inputArray = ['hi', 'awesome'];
let myPromisified = q.promisify(myCallback); const myPromisified = async (myInput) => { return myInput };
let expectPromise = expect(q.map(inputArray, myPromisified)).to.eventually.deep.equal(inputArray); const expectPromise = expect(q.map(inputArray, myPromisified)).to.eventually.deep.equal(inputArray);
return expectPromise; return expectPromise;
}); });

View File

@ -1,5 +1,3 @@
import * as util from 'util';
export interface IResolve<T> { export interface IResolve<T> {
(value?: T | Promise<T>): void; (value?: T | Promise<T>): void;
} }
@ -42,18 +40,15 @@ export let rejectedPromise = err => {
return Promise.reject(err); return Promise.reject(err);
}; };
export let promisify = util.promisify; interface IAsyncFunction<T> {
(someArg: T):Promise<T>
// polyfill
if (!promisify) {
promisify = require('util.promisify');
} }
export let map = async <T>(inputArg: T[], functionArg) => {
let promisifedFunction = promisify(functionArg); export let map = async <T>(inputArg: T[], functionArg: IAsyncFunction<T> ) => {
let promiseArray: Promise<any>[] = []; let promiseArray: Promise<any>[] = [];
let resultArray = []; let resultArray = [];
for (let item of inputArg) { for (let item of inputArg) {
let promise: Promise<any> = promisifedFunction(item); let promise: Promise<any> = functionArg(item);
promiseArray.push(promise); promiseArray.push(promise);
promise.then(x => { promise.then(x => {
resultArray.push(x); resultArray.push(x);