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

side-effect-manager

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

side-effect-manager - npm Package Compare versions

Comparing version 1.1.0 to 1.1.1

4

dist/async-side-effect-manager.d.ts
export declare type AsyncSideEffectDisposer = () => Promise<any> | any;
export declare type AsyncSideEffectExecutor = () => Promise<AsyncSideEffectDisposer | AsyncSideEffectDisposer[]> | AsyncSideEffectDisposer | AsyncSideEffectDisposer[];
export declare type AsyncSideEffectExecutor = () => Promise<AsyncSideEffectDisposer | AsyncSideEffectDisposer[]> | AsyncSideEffectDisposer | AsyncSideEffectDisposer[] | null | false;
export declare class AsyncSideEffectManager {
/**
* Add a side effect.
* @param executor execute side effect
* @param executor Execute side effect. Return a disposer or a disposer array. Return null or false to ignore.
* @param disposerID Optional id for the disposer

@@ -8,0 +8,0 @@ * @returns disposerID

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports[Symbol.toStringTag]="Module";const s="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=s.length,t=Array(20),i=()=>{for(let i=0;i<20;i++)t[i]=s.charAt(Math.random()*e);return t.join("")};function r(s){try{return s()}catch(e){console.error(e)}}exports.AsyncSideEffectManager=class{constructor(){this.finished=Promise.resolve(),this.disposers=new Map,this._nextTask=new Map,this._isRunning=new Set}add(s,e=this.genUID()){return this._isRunning.has(e)?this._nextTask.set(e,(()=>this._add(s,e))):this._add(s,e),e}async _add(s,e){this._startTask(e);const t=this.remove(e);if(t)try{await t()}catch(n){console.error(n)}try{const t=await s();this.disposers.set(e,Array.isArray(t)?async()=>Promise.all(t.map(r)):t)}catch(n){console.error(n)}this._endTask(e);const i=this._nextTask.get(e);i&&(this._nextTask.delete(e),i())}addDisposer(s,e=this.genUID()){return this.add((()=>s),e)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){this._isRunning.has(s)?this._nextTask.set(s,(()=>this._flush(s))):this._flush(s)}async _flush(s){const e=this.remove(s);if(e){this._startTask(s);try{await e()}catch(i){console.error(i)}this._endTask(s)}const t=this._nextTask.get(s);t&&(this._nextTask.delete(s),t())}flushAll(){this.disposers.forEach(((s,e)=>this.flush(e)))}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}_startTask(s){this._isRunning.add(s),this._resolveFinished||(this.finished=new Promise((s=>{this._resolveFinished=s})))}_endTask(s){this._isRunning.delete(s),this._resolveFinished&&this._isRunning.size<=0&&this._nextTask.size<=0&&(this._resolveFinished(),this._resolveFinished=void 0)}},exports.SideEffectManager=class{constructor(){this.disposers=new Map}addDisposer(s,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(s)?()=>s.forEach(r):s),e}add(s,e=this.genUID()){return this.addDisposer(s(),e)}addEventListener(s,e,t,i,r=this.genUID()){return s.addEventListener(e,t,i),this.addDisposer((()=>s.removeEventListener(e,t,i)),r),r}setTimeout(s,e,t=this.genUID()){const i=window.setTimeout((()=>{this.remove(t),s()}),e);return this.addDisposer((()=>window.clearTimeout(i)),t)}setInterval(s,e,t=this.genUID()){const i=window.setInterval(s,e);return this.addDisposer((()=>window.clearInterval(i)),t)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){const e=this.remove(s);if(e)try{e()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach(r),this.disposers.clear()}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}},exports.genUID=i;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports[Symbol.toStringTag]="Module";const s="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=s.length,t=Array(20),i=()=>{for(let i=0;i<20;i++)t[i]=s.charAt(Math.random()*e);return t.join("")};function r(s){try{return s()}catch(e){console.error(e)}}exports.AsyncSideEffectManager=class{constructor(){this.finished=Promise.resolve(),this.disposers=new Map,this._nextTask=new Map,this._isRunning=new Set}add(s,e=this.genUID()){return this._isRunning.has(e)?this._nextTask.set(e,(()=>this._add(s,e))):this._add(s,e),e}async _add(s,e){this._startTask(e);const t=this.remove(e);if(t)try{await t()}catch(n){console.error(n)}try{const t=await s();t&&this.disposers.set(e,Array.isArray(t)?async()=>Promise.all(t.map(r)):t)}catch(n){console.error(n)}this._endTask(e);const i=this._nextTask.get(e);i&&(this._nextTask.delete(e),i())}addDisposer(s,e=this.genUID()){return this.add((()=>s),e)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){this._isRunning.has(s)?this._nextTask.set(s,(()=>this._flush(s))):this._flush(s)}async _flush(s){const e=this.remove(s);if(e){this._startTask(s);try{await e()}catch(i){console.error(i)}this._endTask(s)}const t=this._nextTask.get(s);t&&(this._nextTask.delete(s),t())}flushAll(){this.disposers.forEach(((s,e)=>this.flush(e)))}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}_startTask(s){this._isRunning.add(s),this._resolveFinished||(this.finished=new Promise((s=>{this._resolveFinished=s})))}_endTask(s){this._isRunning.delete(s),this._resolveFinished&&this._isRunning.size<=0&&this._nextTask.size<=0&&(this._resolveFinished(),this._resolveFinished=void 0)}},exports.SideEffectManager=class{constructor(){this.disposers=new Map}addDisposer(s,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(s)?()=>s.forEach(r):s),e}add(s,e=this.genUID()){const t=s();return t?this.addDisposer(t,e):e}addEventListener(s,e,t,i,r=this.genUID()){return s.addEventListener(e,t,i),this.addDisposer((()=>s.removeEventListener(e,t,i)),r),r}setTimeout(s,e,t=this.genUID()){const i=window.setTimeout((()=>{this.remove(t),s()}),e);return this.addDisposer((()=>window.clearTimeout(i)),t)}setInterval(s,e,t=this.genUID()){const i=window.setInterval(s,e);return this.addDisposer((()=>window.clearInterval(i)),t)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){const e=this.remove(s);if(e)try{e()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach(r),this.disposers.clear()}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}},exports.genUID=i;
//# sourceMappingURL=side-effect-manager.cjs.js.map

@@ -12,7 +12,7 @@ export declare type SideEffectDisposer = () => any;

* Add a side effect.
* @param executor executes side effect, returns a disposer or a list of disposers
* @param executor Executes side effect. Return a disposer or a list of disposers. Returns null or false to ignore.
* @param disposerID Optional id for the disposer
* @returns disposerID
*/
add(executor: () => SideEffectDisposer | SideEffectDisposer[], disposerID?: string): string;
add(executor: () => SideEffectDisposer | SideEffectDisposer[] | null | false, disposerID?: string): string;
/**

@@ -19,0 +19,0 @@ * Sugar for addEventListener.

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

const s="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=s.length,t=Array(20),i=()=>{for(let i=0;i<20;i++)t[i]=s.charAt(Math.random()*e);return t.join("")};function r(s){try{return s()}catch(e){console.error(e)}}class n{constructor(){this.disposers=new Map}addDisposer(s,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(s)?()=>s.forEach(r):s),e}add(s,e=this.genUID()){return this.addDisposer(s(),e)}addEventListener(s,e,t,i,r=this.genUID()){return s.addEventListener(e,t,i),this.addDisposer((()=>s.removeEventListener(e,t,i)),r),r}setTimeout(s,e,t=this.genUID()){const i=window.setTimeout((()=>{this.remove(t),s()}),e);return this.addDisposer((()=>window.clearTimeout(i)),t)}setInterval(s,e,t=this.genUID()){const i=window.setInterval(s,e);return this.addDisposer((()=>window.clearInterval(i)),t)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){const e=this.remove(s);if(e)try{e()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach(r),this.disposers.clear()}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}}class h{constructor(){this.finished=Promise.resolve(),this.disposers=new Map,this._nextTask=new Map,this._isRunning=new Set}add(s,e=this.genUID()){return this._isRunning.has(e)?this._nextTask.set(e,(()=>this._add(s,e))):this._add(s,e),e}async _add(s,e){this._startTask(e);const t=this.remove(e);if(t)try{await t()}catch(n){console.error(n)}try{const t=await s();this.disposers.set(e,Array.isArray(t)?async()=>Promise.all(t.map(r)):t)}catch(n){console.error(n)}this._endTask(e);const i=this._nextTask.get(e);i&&(this._nextTask.delete(e),i())}addDisposer(s,e=this.genUID()){return this.add((()=>s),e)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){this._isRunning.has(s)?this._nextTask.set(s,(()=>this._flush(s))):this._flush(s)}async _flush(s){const e=this.remove(s);if(e){this._startTask(s);try{await e()}catch(i){console.error(i)}this._endTask(s)}const t=this._nextTask.get(s);t&&(this._nextTask.delete(s),t())}flushAll(){this.disposers.forEach(((s,e)=>this.flush(e)))}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}_startTask(s){this._isRunning.add(s),this._resolveFinished||(this.finished=new Promise((s=>{this._resolveFinished=s})))}_endTask(s){this._isRunning.delete(s),this._resolveFinished&&this._isRunning.size<=0&&this._nextTask.size<=0&&(this._resolveFinished(),this._resolveFinished=void 0)}}export{h as AsyncSideEffectManager,n as SideEffectManager,i as genUID};
const s="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=s.length,t=Array(20),i=()=>{for(let i=0;i<20;i++)t[i]=s.charAt(Math.random()*e);return t.join("")};function r(s){try{return s()}catch(e){console.error(e)}}class n{constructor(){this.disposers=new Map}addDisposer(s,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(s)?()=>s.forEach(r):s),e}add(s,e=this.genUID()){const t=s();return t?this.addDisposer(t,e):e}addEventListener(s,e,t,i,r=this.genUID()){return s.addEventListener(e,t,i),this.addDisposer((()=>s.removeEventListener(e,t,i)),r),r}setTimeout(s,e,t=this.genUID()){const i=window.setTimeout((()=>{this.remove(t),s()}),e);return this.addDisposer((()=>window.clearTimeout(i)),t)}setInterval(s,e,t=this.genUID()){const i=window.setInterval(s,e);return this.addDisposer((()=>window.clearInterval(i)),t)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){const e=this.remove(s);if(e)try{e()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach(r),this.disposers.clear()}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}}class h{constructor(){this.finished=Promise.resolve(),this.disposers=new Map,this._nextTask=new Map,this._isRunning=new Set}add(s,e=this.genUID()){return this._isRunning.has(e)?this._nextTask.set(e,(()=>this._add(s,e))):this._add(s,e),e}async _add(s,e){this._startTask(e);const t=this.remove(e);if(t)try{await t()}catch(n){console.error(n)}try{const t=await s();t&&this.disposers.set(e,Array.isArray(t)?async()=>Promise.all(t.map(r)):t)}catch(n){console.error(n)}this._endTask(e);const i=this._nextTask.get(e);i&&(this._nextTask.delete(e),i())}addDisposer(s,e=this.genUID()){return this.add((()=>s),e)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){this._isRunning.has(s)?this._nextTask.set(s,(()=>this._flush(s))):this._flush(s)}async _flush(s){const e=this.remove(s);if(e){this._startTask(s);try{await e()}catch(i){console.error(i)}this._endTask(s)}const t=this._nextTask.get(s);t&&(this._nextTask.delete(s),t())}flushAll(){this.disposers.forEach(((s,e)=>this.flush(e)))}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}_startTask(s){this._isRunning.add(s),this._resolveFinished||(this.finished=new Promise((s=>{this._resolveFinished=s})))}_endTask(s){this._isRunning.delete(s),this._resolveFinished&&this._isRunning.size<=0&&this._nextTask.size<=0&&(this._resolveFinished(),this._resolveFinished=void 0)}}export{h as AsyncSideEffectManager,n as SideEffectManager,i as genUID};
//# sourceMappingURL=side-effect-manager.es.js.map
{
"name": "side-effect-manager",
"version": "1.1.0",
"version": "1.1.1",
"private": false,

@@ -5,0 +5,0 @@ "description": "A tiny library to encapsulate side effects in a compact, reusable and testable style.",

@@ -96,2 +96,23 @@ # side-effect-manager

If the side effect returns a disposer function directly you can also:
```js
import Emittery from "emittery";
import { Remitter } from "remitter";
const emittery = new Emittery();
const remitter = new Remitter();
sideEffect.addDisposer(
remitter.on("event1", eventData => console.log(eventData))
);
// Or an array of disposers
sideEffect.addDisposer([
remitter.on("event1", eventData => console.log(eventData)),
remitter.on("event2", eventData => console.log(eventData)),
emittery.on("event3", eventData => console.log(eventData)),
]);
```
There are also sugars for `addEventListener`, `setTimeout` and `setInterval`.

@@ -98,0 +119,0 @@

@@ -9,3 +9,5 @@ import { genUID } from "./gen-uid";

| AsyncSideEffectDisposer
| AsyncSideEffectDisposer[];
| AsyncSideEffectDisposer[]
| null
| false;

@@ -15,3 +17,3 @@ export class AsyncSideEffectManager {

* Add a side effect.
* @param executor execute side effect
* @param executor Execute side effect. Return a disposer or a disposer array. Return null or false to ignore.
* @param disposerID Optional id for the disposer

@@ -49,8 +51,10 @@ * @returns disposerID

const disposers = await executor();
this.disposers.set(
disposerID,
Array.isArray(disposers)
? async () => Promise.all(disposers.map(invoke))
: disposers
);
if (disposers) {
this.disposers.set(
disposerID,
Array.isArray(disposers)
? async () => Promise.all(disposers.map(invoke))
: disposers
);
}
} catch (e) {

@@ -57,0 +61,0 @@ console.error(e);

@@ -27,3 +27,3 @@ import { genUID } from "./gen-uid";

* Add a side effect.
* @param executor executes side effect, returns a disposer or a list of disposers
* @param executor Executes side effect. Return a disposer or a list of disposers. Returns null or false to ignore.
* @param disposerID Optional id for the disposer

@@ -33,6 +33,7 @@ * @returns disposerID

public add(
executor: () => SideEffectDisposer | SideEffectDisposer[],
executor: () => SideEffectDisposer | SideEffectDisposer[] | null | false,
disposerID: string = this.genUID()
): string {
return this.addDisposer(executor(), disposerID);
const disposers = executor();
return disposers ? this.addDisposer(disposers, disposerID) : disposerID;
}

@@ -39,0 +40,0 @@

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