Socket
Socket
Sign inDemoInstall

pjobs

Package Overview
Dependencies
0
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.6 to 1.0.8

.coveralls.yml

9

dist/index.d.ts

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

// Generated by dts-bundle-generator v5.9.0
// Generated by dts-bundle-generator v6.2.0

@@ -27,3 +27,10 @@ export declare function sleep(timeout: number): Promise<void>;

enqueue<T>(item: Job<T>): void;
promise<T>(item: Job<T>): Promise<T>;
waitFor(): Promise<void>;
forceState(opts: {
start: number;
canRate: number;
canRefresh: number;
size: number;
}): void;
}

@@ -30,0 +37,0 @@ export declare function queuePromises(opts?: QueryPromisesOpts): QueuePromises;

2

dist/index.js

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

var v=Object.defineProperty;var b=t=>v(t,"__esModule",{value:!0});var D=(t,o)=>{b(t);for(var s in o)v(t,s,{get:o[s],enumerable:!0})};D(exports,{asap:()=>f,defer:()=>F,queuePromises:()=>q,sleep:()=>Q});function Q(t){return new Promise(o=>{setTimeout(o,t)})}function F(){let t,o;return{promise:new Promise((e,r)=>{t=e,o=r}),resolve(e){t&&t(e)},reject(e){o&&o(e)}}}function f(t){setTimeout(()=>t(),1)}function q(t){let o=t?.concurrency||1,s=t?.onProgress,e=[],r=0,l=!0,m=Date.now(),u=0,p=0,y=0,a,h=0,T={get size(){return r},get pending(){return e.length},get done(){return r-e.length},get percent(){return Math.round((r-e.length)/r*1e3)/10},get rate(){let n=Date.now();if(n<p)return"-";let i=(n-m)/1e3;return(r-e.length)/i},get timeRemaining(){let n=Date.now();if(n<p)return"-";let i=(n-m)/1e3,c=(r-e.length)/i,d=(r-e.length)/c;if(d<50)return d.toFixed(0)+" seconds";if(d<120)return"one minute";let g=d/60;if(g<60)return g.toFixed(0)+" minutes";let w=g/60;return w<120?"one hour":w.toFixed(0)+" hours"}};return{get runned(){return h},state(){return l?"idle":T},enqueue(n){e.push(n),r++,p=Date.now()+1e3,x()},waitFor(){return new Promise((n,i)=>{setTimeout(c,100);function c(){u+e.length===0?(a?i(a):n(),a=void 0):setTimeout(c,100)}})}};function x(){l&&(m=Date.now(),l=!1);let n=Date.now();n>y&&(y=n+1e3,s&&setTimeout(()=>{r>0&&s(T)},1)),e.length?f(P):u<1&&(r=0,s&&f(()=>s("finished")),l=!0,setTimeout(()=>{a=void 0},2e3))}async function P(){for(;u<o;){let n=e.shift();if(!n)break;u++;try{await n()}catch(i){a=i}finally{h++,u--,x()}}}}0&&(module.exports={asap,defer,queuePromises,sleep});
var g=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var F=e=>g(e,"__esModule",{value:!0});var z=(e,t)=>{for(var s in t)g(e,s,{get:t[s],enumerable:!0})},J=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of D(t))!Q.call(e,o)&&(s||o!=="default")&&g(e,o,{get:()=>t[o],enumerable:!(n=R(t,o))||n.enumerable});return e};var S=(e=>(t,s)=>e&&e.get(t)||(s=J(F({}),t,1),e&&e.set(t,s),s))(typeof WeakMap!="undefined"?new WeakMap:0);var k={};z(k,{asap:()=>h,defer:()=>y,queuePromises:()=>j,sleep:()=>q});function q(e){return new Promise(t=>{setTimeout(t,e)})}function y(){let e,t;return{promise:new Promise((n,o)=>{e=n,t=o}),resolve(n){e&&e(n)},reject(n){t&&t(n)}}}function h(e){setTimeout(()=>e(),1)}function j(e){let t=e?.concurrency||1,s=e?.onProgress,n=[],o=0,f=!0,d=Date.now(),u=0,l=0,T=0,a,b=0,v={get size(){return o},get pending(){return n.length},get done(){return o-n.length},get percent(){return Math.round((o-n.length)/o*1e3)/10},get rate(){let r=Date.now();if(r<l)return"-";let i=(r-d)/1e3;return(o-n.length)/i},get timeRemaining(){let r=Date.now();if(r<l)return"-";let i=(r-d)/1e3,c=(o-n.length)/i,m=(o-n.length)/c;if(m<2)return"one second";if(m<50)return m.toFixed(0)+" seconds";if(m<120)return"one minute";let p=m/60;if(p<60)return p.toFixed(0)+" minutes";let P=p/60;return p<120?"one hour":P.toFixed(0)+" hours"}};return{get runned(){return b},state(){return f?"idle":v},enqueue(r){n.push(r),o++,l=Date.now()+1e3,x()},promise(r){let i=y();return this.enqueue(()=>r().then(i.resolve,i.reject)),i.promise},waitFor(){return new Promise((r,i)=>{setTimeout(c,100);function c(){u+n.length===0?(a?i(a):r(),a=void 0):setTimeout(c,100)}})},forceState(r){d=r.start,l=r.canRate,T=r.canRefresh,o=r.size}};function x(){f&&(d=Date.now(),f=!1);let r=Date.now();r>T&&(T=r+1e3,s&&setTimeout(()=>{o>0&&s(v)},1)),n.length?h(w):u<1&&(o=0,s&&h(()=>s("finished")),f=!0,setTimeout(()=>{a=void 0},2e3))}async function w(){for(;u<t;){let r=n.shift();if(!r)break;u++;try{await r()}catch(i){a=i}finally{b++,u--,x()}}}}module.exports=S(k);0&&(module.exports={asap,defer,queuePromises,sleep});
{
"name": "pjobs",
"description": "A simple and efficient queue job executor using promises. And some promise's utilities.",
"version": "1.0.6",
"version": "1.0.8",
"private": false,

@@ -9,11 +9,18 @@ "main": "dist/index.js",

"devDependencies": {
"@types/jest": "^27.0.2",
"@types/jest": "^27.0.3",
"@types/source-map-support": "^0.5.4",
"dts-bundle-generator": "^5.9.0",
"esbuild": "^0.13.9",
"@typescript-eslint/eslint-plugin": "^5.7.0",
"@typescript-eslint/parser": "^5.7.0",
"dts-bundle-generator": "^6.2.0",
"esbuild": "^0.14.5",
"esbuild-jest": "^0.5.0",
"jest": "^27.3.1",
"source-map-support": "^0.5.20",
"ts-jest": "^27.0.7",
"typescript": "^4.4.4"
"eslint": "^8.5.0",
"eslint-config-standard": "^16.0.3",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.0.0",
"jest": "^27.4.5",
"source-map-support": "^0.5.21",
"ts-jest": "^27.1.2",
"typescript": "^4.5.4"
},

@@ -25,5 +32,7 @@ "scripts": {

"buildWithTSC": "tsc -p ./tsconfig.build.json",
"test": "yarn buildWithEsbuild ; jest --config ../jest.config.js .",
"prepublishOnly": "yarn buildWithEsbuild && yarn test && yarn build"
"test": "jest",
"prepublishOnly": "yarn buildWithEsbuild && yarn test && yarn build",
"test-coverage": "jest --coverage",
"lint": "eslint --fix --config .eslintrc.js"
}
}

@@ -22,5 +22,3 @@ [![Node.js CI](https://github.com/teintinu/pjobs/actions/workflows/test.yml/badge.svg)](https://github.com/teintinu/pjobs/actions/workflows/test.yml)

onProgress (status) { // allow you to inform users about execution progress
console.log('done: ', status.percent, '%')
console.log('speed: ', status.rate) // jobs runned per second
console.log('estimated time remaining to finish: ', status.timeRemaining)
console.log('queue status: ', status)
}

@@ -31,26 +29,21 @@ })

})
queue.enqueue(async () => { // add another job to the queue
const promiseForTask2 = queue.promise(async () => { // add another job but returns a promise to this
console.log('task 2')
return 'OK'
})
await queue.waitFor() // wait for all jobs to be finished.
await promiseForTask2 // returns 'OK'
```
## `defer`
allow you to defer promise's resolving or rejecting.
allow you to deferred promise. Like [promise-deferred NPM](https://www.npmjs.com/package/promise-deferred) but lighter.
```typescript
import { queuePromises, defer } from 'pjobs'
const taskOne = defer<void>() // defines the deferred promise
const queue = queuePromises()
queue.enqueue(async () => {
console.log('task 1')
taskOne.resolve() // resolves the deferred promise
})
queue.enqueue(async () => {
console.log('task 2')
})
expect(queue.state()).not.toBe('idle')
await taskOne.promise // wait for the deferred promise to be resolved
await queue.waitFor()
import { defer } from 'pjobs'
const deffered = defer<number>()
setTimeout( ()=> deffered.resolve(1), 10) //
setTimeout( ()=> deffered.reject(new Error('timeout')), 100)
await deffered.promise
```

@@ -63,3 +56,3 @@

import { sleep } from 'pjobs'
await sleep(100) // pause execution flow for 100 miliseconds
await sleep(100) // pauses execution flow for 100 miliseconds
```

@@ -72,3 +65,3 @@ ## `asap`

asap(()=>console.log('b')) // 'b' will be logged after 'a'
console.log('a')
console.log('a');
```
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc