ciorent 1.0.0 → 1.0.3
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/index.js +1 -1
- package/mutex.js +1 -1
- package/package.json +4 -4
- package/semaphore.js +1 -1
- package/signal.d.ts +4 -0
- package/signal.js +1 -1
- package/utils.d.ts +2 -1
- package/utils.js +1 -1
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadResolve,loadResolvers
|
|
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`;let resolvePromise=async p=>{try{loadedResolve(await p)}catch(e){loadedReject(e)}};export let timeout=(p,ms)=>{let promise=new Promise(loadResolvers);setTimeout(loadedResolve,ms);resolvePromise(p);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 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{chainLock,loadResolve
|
|
1
|
+
import{nextTick}from"./index.js";import{chainLock,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};export let run=(mu,fn,...args)=>mu[0]=chainLock(mu[0],fn,...args);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ciorent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "A lightweight, low-overhead concurrency library",
|
|
5
5
|
"homepage": "https://re-utils.pages.dev/concurrency",
|
|
6
6
|
"repository": {
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"type": "module",
|
|
13
13
|
"exports": {
|
|
14
14
|
"./utils": "./utils.js",
|
|
15
|
+
"./signal": "./signal.js",
|
|
15
16
|
"./rate-limit": "./rate-limit.js",
|
|
17
|
+
"./semaphore": "./semaphore.js",
|
|
16
18
|
"./mutex": "./mutex.js",
|
|
17
|
-
"
|
|
18
|
-
".": "./index.js",
|
|
19
|
-
"./semaphore": "./semaphore.js"
|
|
19
|
+
".": "./index.js"
|
|
20
20
|
}
|
|
21
21
|
}
|
package/semaphore.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadResolve
|
|
1
|
+
import{loadedResolve,loadResolve}from"./utils.js";let push=(qu,item)=>{let tail=qu[3];qu[3]=tail+1===qu[1]?0:tail+1;qu[0][tail]=item};export let full=qu=>qu[2]===qu[3]&&qu[0][qu[2]]!==null;let pop=qu=>{let head=qu[2];qu[2]=head+1===qu[1]?0:head+1;let val=qu[0][head];qu[0][head]=null;return val};export let init=(permits,capacity)=>[new Array(capacity).fill(null),capacity,0,0,permits];export let acquire=sem=>{if(--sem[4]<0){let promise=new Promise(loadResolve);push(sem,loadedResolve);return promise}};export let release=sem=>{sem[4]++<0&&pop(sem)()};
|
package/signal.d.ts
CHANGED
|
@@ -35,3 +35,7 @@ export declare const abortAfter: (ms: number, t: Signal) => void;
|
|
|
35
35
|
* @param ms
|
|
36
36
|
*/
|
|
37
37
|
export declare const timeout: (ms: number) => Signal;
|
|
38
|
+
/**
|
|
39
|
+
* Attach a signal to a `DisposableStack` or `AsyncDisposableStack`
|
|
40
|
+
*/
|
|
41
|
+
export declare const adopt: (t: Signal, stack: DisposableStack | AsyncDisposableStack) => void;
|
package/signal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export let init=()=>[false];export let any=signals=>{let sig=[false];for(let i=0;i<signals.length;i++)signals[i].push(sig);return sig};let _=[false];export let group=signals=>_.concat(signals);export let aborted=t=>t[0];export let abort=t=>{if(!t[0]){t[0]=true;if(t.length>1)for(let i=1;i<t.length;i++)abort(t[i])}};export let abortAfter=(ms,t)=>{setTimeout(()=>abort(t),ms)};export let timeout=ms=>{let sig=[false];abortAfter(ms,sig);return sig};
|
|
1
|
+
export let init=()=>[false];export let any=signals=>{let sig=[false];for(let i=0;i<signals.length;i++)signals[i].push(sig);return sig};let _=[false];export let group=signals=>_.concat(signals);export let aborted=t=>t[0];export let abort=t=>{if(!t[0]){t[0]=true;if(t.length>1)for(let i=1;i<t.length;i++)abort(t[i])}};export let abortAfter=(ms,t)=>{setTimeout(()=>abort(t),ms)};export let timeout=ms=>{let sig=[false];abortAfter(ms,sig);return sig};export let adopt=(t,stack)=>{stack.adopt(t,abort)};
|
package/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type Extend<T extends any[]> = [...T, ...any[]];
|
|
2
|
-
export declare
|
|
2
|
+
export declare let loadedResolve: (res?: any) => void;
|
|
3
|
+
export declare let loadedReject: (reason?: any) => void;
|
|
3
4
|
export declare const loadResolvers: (res: (value?: any) => void, rej: (reason?: any) => void) => void;
|
|
4
5
|
export declare const loadResolve: (res: (value?: any) => void) => void;
|
|
5
6
|
/**
|
package/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export let
|
|
1
|
+
export let loadedResolve;export let loadedReject;export let loadResolvers=(res,rej)=>{loadedResolve=res;loadedReject=rej};export let loadResolve=res=>{loadedResolve=res};export let unswallow=async p=>p;export let chainLock=async(lock,fn,...args)=>{try{await lock}catch{unswallow(lock)}return fn(...args)};
|