Socket
Socket
Sign inDemoInstall

pjobs

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pjobs - npm Package Compare versions

Comparing version 1.0.3 to 1.0.4

3

dist/queue.d.ts
export declare type QueueState = {
readonly pending: number;
readonly total: number;
readonly size: number;
readonly done: number;

@@ -15,2 +15,3 @@ readonly percent: number;

export interface QueuePromises {
readonly runned: number;
state(): 'idle' | QueueState;

@@ -17,0 +18,0 @@ enqueue<T>(item: Job<T>): void;

@@ -6,3 +6,3 @@ import { asap } from './asap';

const queue = [];
let total = 0;
let size = 0;
let idle = true;

@@ -13,5 +13,7 @@ let start = Date.now();

let canRefresh = 0;
let lastError;
let runned = 0;
const state = {
get total() {
return total;
get size() {
return size;
},

@@ -22,6 +24,6 @@ get pending() {

get done() {
return total - queue.length;
return size - queue.length;
},
get percent() {
return Math.round((total - queue.length) / total * 1000) / 10;
return Math.round((size - queue.length) / size * 1000) / 10;
},

@@ -33,3 +35,3 @@ get rate() {

const ellapsed = (now - start) / 1000;
const rate = (total - queue.length) / (ellapsed);
const rate = (size - queue.length) / (ellapsed);
return rate;

@@ -42,4 +44,4 @@ },

const ellapsed = (now - start) / 1000;
const rate = (total - queue.length) / (ellapsed);
const seconds = (total - queue.length) / rate;
const rate = (size - queue.length) / (ellapsed);
const seconds = (size - queue.length) / rate;
if (seconds < 50)

@@ -59,2 +61,5 @@ return (seconds).toFixed(0) + ' seconds';

return {
get runned() {
return runned;
},
state() {

@@ -65,3 +70,3 @@ return idle ? 'idle' : state;

queue.push(item);
total++;
size++;
canRate = Date.now() + 1000;

@@ -71,7 +76,12 @@ scheduleProcess();

waitFor() {
return new Promise((resolve) => {
return new Promise((resolve, reject) => {
setTimeout(check, 100);
function check() {
if (running + queue.length === 0)
resolve();
if (running + queue.length === 0) {
if (lastError)
reject(lastError);
else
resolve();
lastError = undefined;
}
else

@@ -92,3 +102,3 @@ setTimeout(check, 100);

onProgress && setTimeout(() => {
if (total > 0) {
if (size > 0) {
onProgress(state);

@@ -102,5 +112,8 @@ }

else if (running < 1) {
total = 0;
size = 0;
onProgress && asap(() => onProgress('finished'));
idle = true;
setTimeout(() => {
lastError = undefined;
}, 2000);
}

@@ -117,3 +130,7 @@ }

}
catch (e) {
lastError = e;
}
finally {
runned++;
running--;

@@ -120,0 +137,0 @@ scheduleProcess();

{
"name": "pjobs",
"description": "A simple and efficient queue job executor using promises. And some promise's utilities.",
"version": "1.0.3",
"version": "1.0.4",
"private": false,

@@ -6,0 +6,0 @@ "main": "dist/index.js",

@@ -22,3 +22,5 @@ [![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('queue status: ', status)
console.log('done: ', status.percent, '%')
console.log('speed: ', status.rate) // jobs runned per second
console.log('estimated time remaining to finish: ', status.timeRemaining)
}

@@ -25,0 +27,0 @@ })

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