ciorent 1.0.4 → 1.0.6
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/deferred.d.ts +22 -0
- package/deferred.js +1 -0
- package/index.d.ts +3 -2
- package/index.js +1 -1
- package/mutex.js +1 -1
- package/package.json +1 -21
- package/rate-limit.d.ts +4 -4
- package/signal.d.ts +8 -8
- package/utils.d.ts +0 -5
- package/utils.js +1 -1
package/deferred.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface Deferred<T> {
|
|
2
|
+
get: Promise<T>;
|
|
3
|
+
set: T extends undefined ? (value?: T) => void : (value: T) => void;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Create a deferred value.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const result = deferred.init();
|
|
10
|
+
*
|
|
11
|
+
* // Set result value, unblock all
|
|
12
|
+
* // coroutines waiting for the results
|
|
13
|
+
* result.set(10);
|
|
14
|
+
*
|
|
15
|
+
* // Get result value
|
|
16
|
+
* await result.get;
|
|
17
|
+
*/
|
|
18
|
+
export declare const init: <T>() => Deferred<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Reset a deferred value.
|
|
21
|
+
*/
|
|
22
|
+
export declare const reset: (value: Deferred<any>) => void;
|
package/deferred.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{loadedResolve,loadResolve}from"./utils.js";export let init=()=>({get:new Promise(loadResolve),set:loadedResolve});export let reset=value=>{value.get=new Promise(loadResolve);value.set=loadedResolve};
|
package/index.d.ts
CHANGED
|
@@ -13,13 +13,13 @@ export declare const nextTick: Promise<void>;
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const state: (p: Promise<any>) => Promise<0 | 1 | 2>;
|
|
15
15
|
/**
|
|
16
|
-
* Check whether a value is awaitable
|
|
16
|
+
* Check whether a value is awaitable.
|
|
17
17
|
* @param p
|
|
18
18
|
* @returns
|
|
19
19
|
*/
|
|
20
20
|
export declare const isThenable: <T>(p: unknown) => p is PromiseLike<T>;
|
|
21
21
|
/**
|
|
22
|
-
* Timeout a promise
|
|
22
|
+
* Timeout a promise.
|
|
23
23
|
* @param p
|
|
24
24
|
* @param ms
|
|
25
25
|
*/
|
|
@@ -38,6 +38,7 @@ export declare const sleep: (ms: number) => Promise<void>;
|
|
|
38
38
|
* @param ms - Sleep duration in milliseconds
|
|
39
39
|
*/
|
|
40
40
|
export declare const sleepSync: (ms: number) => void;
|
|
41
|
+
export * as deferred from "./deferred.js";
|
|
41
42
|
export * as mutex from "./mutex.js";
|
|
42
43
|
export * as limit from "./rate-limit.js";
|
|
43
44
|
export * as semaphore from "./semaphore.js";
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadedReject,loadedResolve,loadResolve,loadResolvers}from"./utils.js";export let nextTick=Promise.resolve();let getFinishedState=async(s,p)=>{try{await p;s[0]=1}catch(e){s[0]=0;return p}};export let state=async p=>{let res=[2];getFinishedState(res,p);await nextTick;return res[0]};export let isThenable=p=>p!==null&&typeof p===`object`&&!Array.isArray(p)&&typeof p.then===`function`;
|
|
1
|
+
import{loadedReject,loadedResolve,loadResolve,loadResolvers}from"./utils.js";export let nextTick=Promise.resolve();let getFinishedState=async(s,p)=>{try{await p;s[0]=1}catch(e){s[0]=0;return p}};export let state=async p=>{let res=[2];getFinishedState(res,p);await nextTick;return res[0]};export let isThenable=p=>p!==null&&typeof p===`object`&&!Array.isArray(p)&&typeof p.then===`function`;export let timeout=(p,ms)=>{let promise=new Promise(loadResolvers);setTimeout(loadedResolve,ms);p.then(loadedResolve,loadedReject);return promise};export let sleep=globalThis.Bun?.sleep??globalThis.process?.getBuiltinModule?.(`timers/promises`).setTimeout??(ms=>{let promise=new Promise(loadResolve);setTimeout(loadedResolve,ms);return promise});let sharedBuf=new Int32Array(new SharedArrayBuffer(4));export let sleepSync=globalThis.Bun?.sleepSync??(ms=>{Atomics.wait(sharedBuf,0,0,ms)});export*as deferred from"./deferred.js";export*as mutex from"./mutex.js";export*as limit from"./rate-limit.js";export*as semaphore from"./semaphore.js";export*as signal from"./signal.js";
|
package/mutex.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{nextTick}from"./index.js";import{
|
|
1
|
+
import{nextTick}from"./index.js";import{loadedResolve,loadResolve}from"./utils.js";export let init=()=>[nextTick];export let acquire=async mu=>{let currentLock=mu[0];mu[0]=new Promise(loadResolve);let release=loadedResolve;await currentLock;return release};let chainLock=async(lock,fn,...args)=>{try{await lock}finally{return fn(...args)}};export let run=(mu,fn,...args)=>mu[0]=chainLock(mu[0],fn,...args);
|
package/package.json
CHANGED
|
@@ -1,21 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ciorent",
|
|
3
|
-
"version": "1.0.4",
|
|
4
|
-
"description": "A lightweight, low-overhead concurrency library",
|
|
5
|
-
"homepage": "https://re-utils.pages.dev/concurrency",
|
|
6
|
-
"repository": {
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/re-utils/ciorent.git"
|
|
9
|
-
},
|
|
10
|
-
"keywords": ["low-overhead", "lightweight", "concurrency", "cross-runtime"],
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"type": "module",
|
|
13
|
-
"exports": {
|
|
14
|
-
"./utils": "./utils.js",
|
|
15
|
-
".": "./index.js",
|
|
16
|
-
"./semaphore": "./semaphore.js",
|
|
17
|
-
"./mutex": "./mutex.js",
|
|
18
|
-
"./rate-limit": "./rate-limit.js",
|
|
19
|
-
"./signal": "./signal.js"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
{"name":"ciorent","version":"1.0.6","description":"A lightweight, low-overhead concurrency library","homepage":"https://re-utils.pages.dev/concurrency","repository":{"type":"git","url":"git+https://github.com/re-utils/ciorent.git"},"keywords":["low-overhead","lightweight","concurrency","cross-runtime"],"license":"MIT","type":"module","exports":{"./utils":"./utils.js","./rate-limit":"./rate-limit.js","./signal":"./signal.js","./mutex":"./mutex.js","./deferred":"./deferred.js",".":"./index.js","./semaphore":"./semaphore.js"}}
|
package/rate-limit.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Describe a rate limiter
|
|
2
|
+
* Describe a rate limiter.
|
|
3
3
|
*/
|
|
4
4
|
export type Limiter = (limit: number, ms: number) => () => boolean;
|
|
5
5
|
/**
|
|
6
|
-
* Fixed window strategy
|
|
6
|
+
* Fixed window strategy.
|
|
7
7
|
* @param limit
|
|
8
8
|
* @param ms
|
|
9
9
|
*/
|
|
10
10
|
export declare const fixedWindow: Limiter;
|
|
11
11
|
/**
|
|
12
|
-
* Sliding window strategy
|
|
12
|
+
* Sliding window strategy.
|
|
13
13
|
* @param limit
|
|
14
14
|
* @param ms
|
|
15
15
|
*/
|
|
16
16
|
export declare const slidingWindow: Limiter;
|
|
17
17
|
/**
|
|
18
|
-
* Token bucket strategy
|
|
18
|
+
* Token bucket strategy.
|
|
19
19
|
* @param limit
|
|
20
20
|
* @param ms
|
|
21
21
|
*/
|
package/signal.d.ts
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Describe a signal
|
|
2
|
+
* Describe a signal.
|
|
3
3
|
*/
|
|
4
4
|
export type Signal = [interrupted: boolean, ...parents: Signal[]];
|
|
5
5
|
/**
|
|
6
|
-
* Create a signal
|
|
6
|
+
* Create a signal.
|
|
7
7
|
*/
|
|
8
8
|
export declare const init: () => Signal;
|
|
9
9
|
/**
|
|
10
|
-
* Create a signal that aborts when any of the input signals abort
|
|
10
|
+
* Create a signal that aborts when any of the input signals abort.
|
|
11
11
|
* @param sigs
|
|
12
12
|
*/
|
|
13
13
|
export declare const any: (signals: Signal[]) => Signal;
|
|
14
14
|
/**
|
|
15
|
-
* Create a signal that when interrupted will interrupt a group of other signals
|
|
15
|
+
* Create a signal that when interrupted will interrupt a group of other signals.
|
|
16
16
|
*/
|
|
17
17
|
export declare const group: (signals: Signal[]) => Signal;
|
|
18
18
|
/**
|
|
19
|
-
* Check whether the signal has been aborted
|
|
19
|
+
* Check whether the signal has been aborted.
|
|
20
20
|
* @param t
|
|
21
21
|
*/
|
|
22
22
|
export declare const aborted: (t: Signal) => boolean;
|
|
23
23
|
/**
|
|
24
|
-
* Abort a signal
|
|
24
|
+
* Abort a signal.
|
|
25
25
|
* @param t
|
|
26
26
|
*/
|
|
27
27
|
export declare const abort: (t: Signal) => void;
|
|
28
28
|
/**
|
|
29
|
-
* Abort a signal after a duration
|
|
29
|
+
* Abort a signal after a duration.
|
|
30
30
|
* @param t
|
|
31
31
|
*/
|
|
32
32
|
export declare const abortAfter: (ms: number, t: Signal) => void;
|
|
33
33
|
/**
|
|
34
|
-
* Create a signal that aborts after ms
|
|
34
|
+
* Create a signal that aborts after ms.
|
|
35
35
|
* @param ms
|
|
36
36
|
*/
|
|
37
37
|
export declare const timeout: (ms: number) => Signal;
|
package/utils.d.ts
CHANGED
|
@@ -3,8 +3,3 @@ export declare let loadedResolve: (res?: any) => void;
|
|
|
3
3
|
export declare let loadedReject: (reason?: any) => void;
|
|
4
4
|
export declare const loadResolvers: (res: (value?: any) => void, rej: (reason?: any) => void) => void;
|
|
5
5
|
export declare const loadResolve: (res: (value?: any) => void) => void;
|
|
6
|
-
/**
|
|
7
|
-
* Unswallow promise error.
|
|
8
|
-
*/
|
|
9
|
-
export declare const unswallow: (p: Promise<any>) => Promise<any>;
|
|
10
|
-
export declare const chainLock: (lock: Promise<void>, fn: any, ...args: any[]) => Promise<any>;
|
package/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export let loadedResolve;export let loadedReject;export let loadResolvers=(res,rej)=>{loadedResolve=res;loadedReject=rej};export let loadResolve=res=>{loadedResolve=res};
|
|
1
|
+
export let loadedResolve;export let loadedReject;export let loadResolvers=(res,rej)=>{loadedResolve=res;loadedReject=rej};export let loadResolve=res=>{loadedResolve=res};
|