New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@masx200/async-task-current-limiter

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@masx200/async-task-current-limiter - npm Package Compare versions

Comparing version 2.0.3 to 2.1.0

3

dist/index.d.ts

@@ -5,2 +5,4 @@ import { EventEmitterTarget } from "@masx200/event-emitter-target";

interface StatusData {
pendingSize: number;
queueSize: number;
status: 空闲状态;

@@ -17,2 +19,3 @@ queue: {

interface AsyncCurrentLimiter {
run<T>(call: () => Promise<T>): Promise<T>;
[Symbol.toStringTag]: string;

@@ -19,0 +22,0 @@ asyncwrap: <T extends (...args: any[]) => Promise<any>>(fun: T) => T;

2

dist/index.js

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

import e from"@masx200/event-emitter-target";function t(t){if(!("number"==typeof t&&t>0&&1/0>t))throw TypeError(" MAX expected: number;but invalid:"+t);const r=t,n=new Map;let i=0,o=0;const c=e(),u=[];let s=!0;function f(){const e=i;if(!s)return;if(e>=u.length)return void(s=!1);if("full"===a())return void(s=!1);const t=u[e];if(!t)throw Error("accident fun args");const[c,l]=t;i++,u[e]=void 0,function(){if(!(o<r))throw Error("accident incre");o++,h()}();const m=Promise.resolve(Reflect.apply(c,void 0,l));m.finally((()=>{const t=n.get(e);if(!t)throw new Error("accident defer promise");t.resolve(m),function(){if(o-1<0)throw Error("accident decre");o--,h()}()})),Promise.resolve().then((()=>{f()}))}function l(e){let t=u.length;u.push(e),"free"===a()&&(s=!0,f());const r=function(){let e=e=>{},t=e=>{};return{promise:new Promise(((r,n)=>{e=r,t=n})),reject:t,resolve:e}}();return n.set(t,r),r.promise.finally((()=>{n.delete(t)})),Promise.resolve(r.promise)}function a(){return o<r?"free":"full"}c.on("free",(()=>{s=!0,f()})),c.on("full",(()=>{s=!1}));const m={[Symbol.toStringTag]:"AsyncCurrentLimiter",asyncwrap:function(e){return async function(...t){return await l([e,t])}},status:a,limiter:{get max(){return r},get current(){return o}},queue:{get max(){return u.length},get current(){return i}},target:c};function h(){const{queue:e,limiter:t}=m,n={status:a(),queue:{max:e.max,current:e.current},limiter:{max:t.max,current:t.current}};o>=r?c.emit("full",n):c.emit("free",n)}return m}var r=(()=>{try{var e=new Function("return async()=>{}")()(),r=Symbol();Reflect.set(n,r,e)}catch{}function n(e){const r=t(e);return this&&this instanceof n?(Object.assign(this,r),this):Reflect.construct(n,[e])}return n})();export{r as default};
import e from"@masx200/event-emitter-target";function t(t){if(!("number"==typeof t&&t>0&&1/0>t))throw TypeError(" MAX expected: number;but invalid:"+t);const r=t,n=new Map;let i=0,o=0;const u=e(),c=[];let s=!0;function f(){const e=i;if(!s)return;if(e>=c.length)return void(s=!1);if("full"===a())return void(s=!1);const t=c[e];if(!t)throw Error("accident fun args");const[u,l]=t;i++,c[e]=void 0,function(){if(!(o<r))throw Error("accident incre");o++,h()}();const m=Promise.resolve(Reflect.apply(u,void 0,l));m.finally((()=>{const t=n.get(e);if(!t)throw new Error("accident defer promise");t.resolve(m),function(){if(o-1<0)throw Error("accident decre");o--,h()}()})),Promise.resolve().then((()=>{f()}))}function l(e){let t=c.length;c.push(e),"free"===a()&&(s=!0,f());const r=function(){let e=e=>{},t=e=>{};return{promise:new Promise(((r,n)=>{e=r,t=n})),reject:t,resolve:e}}();return n.set(t,r),r.promise.finally((()=>{n.delete(t)})),Promise.resolve(r.promise)}function a(){return o<r?"free":"full"}u.on("free",(()=>{s=!0,Promise.resolve().then((()=>{f()}))})),u.on("full",(()=>{s=!1}));const m=function(e){return async function(...t){return await l([e,t])}},d={run:e=>m(e)(),[Symbol.toStringTag]:"AsyncCurrentLimiter",asyncwrap:m,status:a,limiter:{get max(){return r},get current(){return o}},queue:{get max(){return c.length},get current(){return i}},target:u};function h(){const{queue:e,limiter:t}=d,i={queueSize:e.max-e.current,pendingSize:n.size,status:a(),queue:{max:e.max,current:e.current},limiter:{max:t.max,current:t.current}};o>=r?u.emit("full",i):u.emit("free",i)}return d}var r=(()=>{try{var e=new Function("return async()=>{}")()(),r=Symbol();Reflect.set(n,r,e),Reflect.set(n,r,void 0)}catch{}function n(e){const r=t(e);return this&&this instanceof n?(Object.assign(this,r),this):Reflect.construct(n,[e])}return n})();export{r as default};
//# sourceMappingURL=index.js.map
{
"version": "2.1.0",
"files": [

@@ -15,3 +16,2 @@ "dist"

},
"version": "2.0.3",
"types": "./dist/index.d.ts",

@@ -53,3 +53,3 @@ "main": "./dist/index.min.cjs",

"scripts": {
"format": "prettier *.js --write *.json *.md ./**/*.ts *.mjs",
"format": "prettier --write *.json *.md ./**/*.ts *.mjs */*.js",
"build": "rollup -c rollup.config.mjs ",

@@ -62,3 +62,6 @@ "test": "node ./test/index.js"

"repository": "https://github.com/masx200/async-task-current-limiter",
"packageManager": "yarn@3.2.0"
}
"packageManager": "yarn@3.2.0",
"resolutions": {
"glob-parent": "5.1.2"
}
}

@@ -87,76 +87,2 @@ # async-task-current-limiter

```ts
declare type 空闲状态 = "free" | "full";
interface AsyncCurrentLimiter {
[Symbol.toStringTag]: string;
asyncwrap: <T extends (...args: any[]) => Promise<any>>(fun: T) => T;
status: () => 空闲状态;
limiter: {
readonly max: number;
readonly current: number;
};
queue: {
readonly max: number;
readonly current: number;
};
target: {
[Symbol.toPrimitive]: () => string;
[Symbol.toStringTag]: string;
[Symbol.iterator]: () => IterableIterator<
[
import("@masx200/event-emitter-target").EVENTNAME,
import("@masx200/event-emitter-target").EVENTLISTENER[]
]
>;
entries: () => IterableIterator<
[
import("@masx200/event-emitter-target").EVENTNAME,
import("@masx200/event-emitter-target").EVENTLISTENER[]
]
>;
listenerCount: (
name: import("@masx200/event-emitter-target").EVENTNAME
) => number;
clear: (
name: import("@masx200/event-emitter-target").EVENTNAME
) => void;
removeAllListeners: (
name: import("@masx200/event-emitter-target").EVENTNAME
) => void;
on: (
name: import("@masx200/event-emitter-target").EVENTNAME,
callback: import("@masx200/event-emitter-target").EVENTLISTENER
) => void;
addListener: (
name: import("@masx200/event-emitter-target").EVENTNAME,
callback: import("@masx200/event-emitter-target").EVENTLISTENER
) => void;
off: (
name: import("@masx200/event-emitter-target").EVENTNAME,
callback: import("@masx200/event-emitter-target").EVENTLISTENER
) => void;
removeListener: (
name: import("@masx200/event-emitter-target").EVENTNAME,
callback: import("@masx200/event-emitter-target").EVENTLISTENER
) => void;
once: (
name: import("@masx200/event-emitter-target").EVENTNAME,
callback: import("@masx200/event-emitter-target").EVENTLISTENER
) => void;
emit: (
name: import("@masx200/event-emitter-target").EVENTNAME,
event?: any
) => void;
dispatch: (
name: import("@masx200/event-emitter-target").EVENTNAME,
event?: any
) => void;
eventNames: () => import("@masx200/event-emitter-target").EVENTNAME[];
listeners: (
name: import("@masx200/event-emitter-target").EVENTNAME
) => import("@masx200/event-emitter-target").EVENTLISTENER[];
};
}
```
## `AsyncLimiterClass(max)`

@@ -230,3 +156,3 @@

# 应用解决问题
# 应用解决问题例子

@@ -238,3 +164,3 @@ 使用异步限流器解决同时打开过多文件的报错

import AsyncLimiterClass from "@masx200/async-task-current-limiter";
const asynclimiter = AsyncLimiterClass(70);
const asynclimiter = AsyncLimiterClass(50);

@@ -241,0 +167,0 @@ declare const files: string[];

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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