Compare commits

..

10 Commits

Author SHA1 Message Date
51bce0b317 3.0.8 2020-10-15 18:13:58 +00:00
374d73f87e fix(core): update 2020-10-15 18:13:58 +00:00
d922c691ed 3.0.7 2020-10-15 18:02:14 +00:00
5aecc44ad7 fix(core): update 2020-10-15 18:02:14 +00:00
f7492c4656 3.0.6 2019-10-01 18:06:29 +02:00
63dd46ed49 fix(core): update 2019-10-01 18:06:29 +02:00
984c2bc9d8 3.0.5 2019-09-11 16:44:21 +02:00
16030d5ee8 fix(core): update 2019-09-11 16:44:21 +02:00
ddce50ac0f 3.0.4 2019-09-11 15:38:37 +02:00
baf956d0ed fix(core): update 2019-09-11 15:38:37 +02:00
5 changed files with 10152 additions and 790 deletions

View File

@ -4,6 +4,7 @@
"npmAccessLevel": "public"
},
"gitzone": {
"projectType": "npm",
"module": {
"githost": "gitlab.com",
"gitscope": "pushrocks",

11208
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
{
"name": "@pushrocks/smartpromise",
"private": false,
"version": "3.0.3",
"version": "3.0.8",
"description": "simple promises and Deferred constructs",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"scripts": {
"test": "(tstest test/)",
"build": "(tsbuild)"
@ -21,11 +21,11 @@
"homepage": "https://gitlab.com/pushrocks/smartq#README",
"dependencies": {},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.17",
"@gitzone/tstest": "^1.0.24",
"@pushrocks/tapbundle": "^3.0.13",
"@types/node": "^10.5.1",
"tslint": "^5.20.0",
"@gitzone/tsbuild": "^2.1.25",
"@gitzone/tstest": "^1.0.52",
"@pushrocks/tapbundle": "^3.2.9",
"@types/node": "^14.11.8",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
},
"files": [

View File

@ -1,27 +1,27 @@
import { expect, tap } from '@pushrocks/tapbundle';
import * as q from '../ts/index';
import * as smartpromise from '../ts/index';
tap.test('should return a Deferred for .defer()', async () => {
let myDeferred = q.defer();
let expectPromise = expect(myDeferred.promise).to.eventually.be.fulfilled;
const myDeferred = smartpromise.defer();
const expectPromise = expect(myDeferred.promise).to.eventually.be.fulfilled;
myDeferred.resolve();
return expectPromise;
});
tap.test('should let types flow through the Promise', async () => {
let myString = 'someString';
let myDeferred = q.defer<string>();
let expectPromise = expect(myDeferred.promise).to.eventually.equal('someString');
const myString = 'someString';
const myDeferred = smartpromise.defer<string>();
const expectPromise = expect(myDeferred.promise).to.eventually.equal('someString');
myDeferred.resolve(myString);
return expectPromise;
});
tap.test('should map callbacks', async () => {
let inputArray = ['hi', 'awesome'];
const inputArray = ['hi', 'awesome'];
const myPromisified = async myInput => {
return myInput;
};
const expectPromise = expect(q.map(inputArray, myPromisified)).to.eventually.deep.equal(
const expectPromise = expect(smartpromise.map(inputArray, myPromisified)).to.eventually.deep.equal(
inputArray
);
return expectPromise;

View File

@ -1,5 +1,5 @@
export interface IResolve<T> {
(value?: T | Promise<T>): void;
(value?: T | PromiseLike<T>): void;
}
export interface IReject {
@ -42,21 +42,21 @@ export class Deferred<T> {
}
}
export let defer = <T>() => {
export const defer = <T>() => {
return new Deferred<T>();
};
/**
* Creates a new resolved promise for the provided value.
*/
export let resolvedPromise = <T>(value?: T): Promise<T> => {
export const resolvedPromise = <T>(value?: T): Promise<T> => {
return Promise.resolve(value);
};
/**
* Creates a new rejected promise for the provided reason.
*/
export let rejectedPromise = err => {
export const rejectedPromise = (err) => {
return Promise.reject(err);
};
@ -64,16 +64,31 @@ interface IAsyncFunction<T> {
(someArg: T): Promise<T>;
}
export let map = async <T>(inputArg: T[], functionArg: IAsyncFunction<T>) => {
let promiseArray: Promise<any>[] = [];
let resultArray = [];
for (let item of inputArg) {
let promise: Promise<any> = functionArg(item);
/**
* accepts an array of inputs and a function that accepts the input.
* runs all items with the function and returns the result array when all items have run
* @param inputArg
* @param functionArg
*/
export const map = async <T>(inputArg: T[], functionArg: IAsyncFunction<T>) => {
const promiseArray: Promise<any>[] = [];
const resultArray = [];
for (const item of inputArg) {
const promise: Promise<any> = functionArg(item);
promiseArray.push(promise);
promise.then(x => {
promise.then((x) => {
resultArray.push(x);
});
}
await Promise.all(promiseArray);
return resultArray;
};
export const timeoutWrap = (ms, promise) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('timeout'));
}, ms);
promise.then(resolve, reject);
});
};