New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

stack-promises

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

stack-promises - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

2

CHANGELOG.md

@@ -5,2 +5,4 @@ # Changelog

### [0.0.2](https://github.com/Krivega/stack-promises/compare/v0.0.1...v0.0.2) (2020-02-28)
### 0.0.1 (2020-02-25)

2

dist/index.js

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=()=>!0;const r=new Error("Stack is empty"),s=new Error("Promise is not actual"),t=new Error("stackPromises only works with functions that returns a Promise");exports.default=()=>{const o=[],n=[],i=({task:e,index:r})=>()=>{let s=(({task:e,index:r})=>{const s=n.find(({task:s,index:t})=>e===s&&r===t);if(s)return s.promise})({task:e,index:r});return s||(s=e(),(({task:e,promise:r,index:s})=>{n.push({task:e,promise:r,index:s})})({promise:s,task:e,index:r})),s},a=()=>((r,s=e)=>r.reduce((e,r)=>e.then(({results:e,errors:t})=>{let o;return o=s(r)?r():Promise.reject({basePromise:r,id:"ERROR_CANCELED",name:"Canceled",message:"Promise was not running"}),o.then(r=>({errors:t,results:[...e,r]})).catch(r=>({results:e,errors:[...t,r]}))}),Promise.resolve({results:[],errors:[]})))(o),c=()=>0===o.length?Promise.reject(r):new Promise((e,r)=>{const t=(({resolve:e,reject:r})=>({results:t,errors:n})=>{if(t.length+n.length===o.length){const r=t[t.length-1];e(r)}else r(s)})({resolve:e,reject:r});a().then(t).catch(t)});return c.add=e=>{if("function"!=typeof e)throw t;const r=o.length;return o.push(i({task:e,index:r})),c},c},exports.isEmptyStackError=e=>e===r,exports.isPromiseIsNotActualError=e=>e===s;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=()=>!0;const r=new Error("Stack is empty"),t=new Error("Promise is not actual"),s=new Error("stackPromises only works with functions that returns a Promise");exports.default=()=>{const n=[],o=[],i=({task:e,index:r})=>()=>{let t=(({task:e,index:r})=>{const t=o.find(({task:t,index:s})=>e===t&&r===s);if(t)return t.promise})({task:e,index:r});return t||(t=e(),(({task:e,promise:r,index:t})=>{o.push({task:e,promise:r,index:t})})({promise:t,task:e,index:r})),t},c=()=>((r,t=e)=>r.reduce((e,r)=>e.then(({results:e,errors:s})=>{let n;return n=t(r)?r():Promise.reject((e=>{const r=new Error("Promise was not running");return r.basePromise=e,r.id="ERROR_NOT_RUNNING",r.name="Not running",r})(r)),n.then(r=>({errors:s,results:[...e,r]})).catch(r=>({results:e,errors:[...s,r]}))}),Promise.resolve({results:[],errors:[]})))(n),u=()=>0===n.length?Promise.reject(r):new Promise((e,r)=>{const s=(({resolve:e,reject:r})=>({results:s,errors:o})=>{if(s.length+o.length===n.length){const r=s[s.length-1];e(r)}else r(t)})({resolve:e,reject:r});c().then(s).catch(s)});return u.add=e=>{if("function"!=typeof e)throw s;const r=n.length;return n.push(i({task:e,index:r})),u},u},exports.isEmptyStackError=e=>e===r,exports.isPromiseIsNotActualError=e=>e===t;

@@ -7,3 +7,3 @@ {

],
"version": "0.0.1",
"version": "0.0.2",
"author": {

@@ -37,11 +37,11 @@ "name": "Krivega Dmitriy",

"promise-delay": "^2.1.0",
"sequent-promises": "^0.0.1"
"sequent-promises": "^0.0.2"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/preset-env": "^7.8.4",
"@babel/core": "^7.8.6",
"@babel/preset-env": "^7.8.6",
"@commitlint/cli": "^8.3.5",
"@commitlint/config-conventional": "^8.3.4",
"@rollup/plugin-node-resolve": "^7.1.1",
"babel-eslint": "10.0.3",
"babel-eslint": "10.1.0",
"babel-jest": "^25.1.0",

@@ -58,5 +58,5 @@ "eslint": "^6.8.0",

"jest": "25.1.0",
"lint-staged": "^10.0.7",
"lint-staged": "^10.0.8",
"prettier": "^1.19.1",
"rollup": "^1.31.1",
"rollup": "^1.32.0",
"rollup-plugin-babel": "^4.3.3",

@@ -63,0 +63,0 @@ "rollup-plugin-terser": "^5.2.0",

@@ -6,3 +6,4 @@ # stack-promises

Various abstractions over promises
A stack of tasks that are executed one by one, but the result is taken from the last.
Identical functions on the stack (check by reference) are executed only once.

@@ -25,4 +26,74 @@ ## Install

## API
```js
import creteStackPromises from 'stack-promises';
const stackPromises = creteStackPromises();
stackPromises.add(() => Promise.resolve(1));
stackPromises.add(() => Promise.resolve(2));
stackPromises().then(data => {
console.log(data); /// 2
});
```
### Execute after add
```js
import creteStackPromises from 'stack-promises';
const stackPromises = creteStackPromises();
stackPromises
.add(() => Promise.resolve(1))() // execute
.then(data => {
console.log(data); // 1
});
stackPromises
.add(() => Promise.resolve(2))() // execute
.then(data => {
console.log(data); // 2
});
stackPromises().then(data => {
console.log(data); // 2
});
```
### Add after execute
```js
import creteStackPromises, { isPromiseIsNotActualError } from 'stack-promises';
import delayPromise from 'promise-delay';
const stackPromises = creteStackPromises();
let checkQue = 0;
const request1 = () =>
delayPromise(3000, 1).finally(() => {
checkQue += 1;
});
const resultAfter1 = stackPromises.add(request1)();
const request2 = () =>
delayPromise(1000, 2).finally(() => {
checkQue *= 2;
});
const resultAfter2 = stackPromises.add(request2)();
Promise.allSettled([resultAfter1, resultAfter2]).then(([{ reason }, { value }]) => {
isPromiseIsNotActualError(reason); // true
value; // 2
checkQue; // 2
// request1 called 1 times
// request2 called 1 times
});
```
### Chaining
```js
stackPromises.add(() => Promise.resolve(1)).add(() => Promise.resolve(2));
```
## Run tests

@@ -29,0 +100,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc