@alwatr/async-queue 5.5.17 โ 5.5.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/main.cjs +2 -2
- package/dist/main.mjs +2 -2
- package/package.json +9 -8
- package/src/main.test.js +0 -52
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.5.19](https://github.com/Alwatr/nanolib/compare/@alwatr/async-queue@5.5.18...@alwatr/async-queue@5.5.19) (2025-09-27)
|
|
7
|
+
|
|
8
|
+
### ๐งน Miscellaneous Chores
|
|
9
|
+
|
|
10
|
+
* exclude test files from package distribution ([86f4f2f](https://github.com/Alwatr/nanolib/commit/86f4f2f5985845c5cf3a3a9398de7b2f98ce53e7))
|
|
11
|
+
|
|
12
|
+
## [5.5.18](https://github.com/Alwatr/nanolib/compare/@alwatr/async-queue@5.5.17...@alwatr/async-queue@5.5.18) (2025-09-22)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @alwatr/async-queue
|
|
15
|
+
|
|
6
16
|
## [5.5.17](https://github.com/Alwatr/nanolib/compare/@alwatr/async-queue@5.5.16...@alwatr/async-queue@5.5.17) (2025-09-22)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @alwatr/async-queue
|
package/dist/main.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** ๐ฆ @alwatr/async-queue v5.5.
|
|
2
|
-
__dev_mode__: console.debug("๐ฆ @alwatr/async-queue v5.5.
|
|
1
|
+
/** ๐ฆ @alwatr/async-queue v5.5.19 */
|
|
2
|
+
__dev_mode__: console.debug("๐ฆ @alwatr/async-queue v5.5.19");
|
|
3
3
|
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var main_exports={};__export(main_exports,{AsyncQueue:()=>AsyncQueue});module.exports=__toCommonJS(main_exports);var import_flatomise=require("@alwatr/flatomise");var AsyncQueue=class{constructor(){this.queue__={}}async push(taskId,task){const flatomise=(0,import_flatomise.newFlatomise)();const previousTaskPromise=this.queue__[taskId];this.queue__[taskId]=flatomise.promise;try{await previousTaskPromise}catch(_e){}setTimeout(()=>{task().then(flatomise.resolve,flatomise.reject).then(()=>{if(this.queue__[taskId]===flatomise.promise){delete this.queue__[taskId]}})},0);return flatomise.promise}isRunning(taskId){return this.queue__[taskId]!==void 0}waitForFinish(taskId){return this.queue__[taskId]??Promise.resolve()}waitForAllFinish(){return Promise.all(Object.values(this.queue__))}};0&&(module.exports={AsyncQueue});
|
|
4
4
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** ๐ฆ @alwatr/async-queue v5.5.
|
|
2
|
-
__dev_mode__: console.debug("๐ฆ @alwatr/async-queue v5.5.
|
|
1
|
+
/** ๐ฆ @alwatr/async-queue v5.5.19 */
|
|
2
|
+
__dev_mode__: console.debug("๐ฆ @alwatr/async-queue v5.5.19");
|
|
3
3
|
import{newFlatomise}from"@alwatr/flatomise";var AsyncQueue=class{constructor(){this.queue__={}}async push(taskId,task){const flatomise=newFlatomise();const previousTaskPromise=this.queue__[taskId];this.queue__[taskId]=flatomise.promise;try{await previousTaskPromise}catch(_e){}setTimeout(()=>{task().then(flatomise.resolve,flatomise.reject).then(()=>{if(this.queue__[taskId]===flatomise.promise){delete this.queue__[taskId]}})},0);return flatomise.promise}isRunning(taskId){return this.queue__[taskId]!==void 0}waitForFinish(taskId){return this.queue__[taskId]??Promise.resolve()}waitForAllFinish(){return Promise.all(Object.values(this.queue__))}};export{AsyncQueue};
|
|
4
4
|
//# sourceMappingURL=main.mjs.map
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwatr/async-queue",
|
|
3
3
|
"description": "A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript.",
|
|
4
|
-
"version": "5.5.
|
|
4
|
+
"version": "5.5.19",
|
|
5
5
|
"author": "S. Ali Mihandoost <ali.mihandoost@gmail.com>",
|
|
6
6
|
"bugs": "https://github.com/Alwatr/nanolib/issues",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@alwatr/flatomise": "5.5.
|
|
8
|
+
"@alwatr/flatomise": "5.5.19"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@alwatr/nano-build": "6.3.
|
|
12
|
-
"@alwatr/prettier-config": "5.0.
|
|
13
|
-
"@alwatr/tsconfig-base": "6.0.
|
|
14
|
-
"@alwatr/type-helper": "6.1.
|
|
11
|
+
"@alwatr/nano-build": "6.3.4",
|
|
12
|
+
"@alwatr/prettier-config": "5.0.5",
|
|
13
|
+
"@alwatr/tsconfig-base": "6.0.3",
|
|
14
|
+
"@alwatr/type-helper": "6.1.4",
|
|
15
15
|
"jest": "^30.1.3",
|
|
16
16
|
"typescript": "^5.9.2"
|
|
17
17
|
},
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"files": [
|
|
26
26
|
"**/*.{js,mjs,cjs,map,d.ts,html,md,LEGAL.txt}",
|
|
27
27
|
"LICENSE",
|
|
28
|
-
"!demo/**/*"
|
|
28
|
+
"!demo/**/*",
|
|
29
|
+
"!**/*.test.js"
|
|
29
30
|
],
|
|
30
31
|
"homepage": "https://github.com/Alwatr/nanolib/tree/next/packages/async-queue#readme",
|
|
31
32
|
"keywords": [
|
|
@@ -83,5 +84,5 @@
|
|
|
83
84
|
},
|
|
84
85
|
"type": "module",
|
|
85
86
|
"types": "./dist/main.d.ts",
|
|
86
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "c013ded43aff3937cf347de4e99125ab807d99e1"
|
|
87
88
|
}
|
package/src/main.test.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import {AsyncQueue} from '@alwatr/async-queue';
|
|
2
|
-
|
|
3
|
-
describe('AsyncQueue', () => {
|
|
4
|
-
let queue;
|
|
5
|
-
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
queue = new AsyncQueue();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('should queue tasks and execute them in order', async () => {
|
|
11
|
-
const results = [];
|
|
12
|
-
const task = (/** @type {number} */ id) => async () => {
|
|
13
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
14
|
-
results.push(id);
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
queue.push('task1', task(1));
|
|
18
|
-
queue.push('task2', task(2));
|
|
19
|
-
await queue.push('task3', task(3));
|
|
20
|
-
|
|
21
|
-
expect(results).toEqual([1, 2, 3]);
|
|
22
|
-
|
|
23
|
-
queue.push('task3', task(4));
|
|
24
|
-
queue.push('task3', task(5));
|
|
25
|
-
|
|
26
|
-
await queue.waitForFinish('task3');
|
|
27
|
-
|
|
28
|
-
expect(results).toEqual([1, 2, 3, 4, 5]);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('should return true for running tasks', async () => {
|
|
32
|
-
queue.push('task1', async () => {});
|
|
33
|
-
expect(queue.isRunning('task1')).toBe(true);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should return false for finished tasks', async () => {
|
|
37
|
-
await queue.push('task1', async () => {});
|
|
38
|
-
expect(queue.isRunning('task1')).toBe(false);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('should wait for all tasks to finish', async () => {
|
|
42
|
-
queue.push('task1', async () => new Promise((resolve) => setTimeout(resolve, 11, 1)));
|
|
43
|
-
queue.push('task2', async () => new Promise((resolve) => setTimeout(resolve, 12, 2)));
|
|
44
|
-
queue.push('task3', async () => new Promise((resolve) => setTimeout(resolve, 13, 3)));
|
|
45
|
-
|
|
46
|
-
expect(await queue.waitForAllFinish()).toEqual([1, 2, 3]);
|
|
47
|
-
|
|
48
|
-
expect(queue.isRunning('task1')).toBe(false);
|
|
49
|
-
expect(queue.isRunning('task2')).toBe(false);
|
|
50
|
-
expect(queue.isRunning('task3')).toBe(false);
|
|
51
|
-
});
|
|
52
|
-
});
|