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

race-event

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

race-event - npm Package Compare versions

Comparing version 1.2.0 to 1.3.0

2

dist/index.min.js
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.RaceEvent = factory()}(typeof self !== 'undefined' ? self : this, function () {
"use strict";var RaceEvent=(()=>{var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var h=(r,e)=>{for(var t in e)a(r,t,{get:e[t],enumerable:!0})},p=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of u(e))!f.call(r,o)&&o!==t&&a(r,o,{get:()=>e[o],enumerable:!(n=b(e,o))||n.enumerable});return r};var y=r=>p(a({},"__esModule",{value:!0}),r);var w={};h(w,{AbortError:()=>i,raceEvent:()=>m});var i=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function m(r,e,t,n){let o=new i(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((E,v)=>{let s=d=>{try{if(n?.filter?.(d)===!1)return}catch(L){r.removeEventListener(e,s),t?.removeEventListener("abort",c),v(L);return}r.removeEventListener(e,s),t?.removeEventListener("abort",c),E(d)},c=()=>{r.removeEventListener(e,s),t?.removeEventListener("abort",c),v(o)};r.addEventListener(e,s),t?.addEventListener("abort",c)})}return y(w);})();
"use strict";var RaceEvent=(()=>{var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var y=(r,e)=>{for(var n in e)c(r,n,{get:e[n],enumerable:!0})},m=(r,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!h.call(r,o)&&o!==n&&c(r,o,{get:()=>e[o],enumerable:!(t=b(e,o))||t.enumerable});return r};var w=r=>m(c({},"__esModule",{value:!0}),r);var R={};y(R,{AbortError:()=>a,raceEvent:()=>x});var a=class extends Error{type;code;constructor(e,n){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=n??"ABORT_ERR"}};async function x(r,e,n,t){let o=new a(t?.errorMessage,t?.errorCode);return n?.aborted===!0?Promise.reject(o):new Promise((L,v)=>{function s(){n?.removeEventListener("abort",u),r.removeEventListener(e,d),t?.errorEvent!=null&&r.removeEventListener(t.errorEvent,E)}let d=i=>{try{if(t?.filter?.(i)===!1)return}catch(f){s(),v(f);return}s(),L(i)},E=i=>{s(),v(i.detail)},u=()=>{s(),v(o)};n?.addEventListener("abort",u),r.addEventListener(e,d),t?.errorEvent!=null&&r.addEventListener(t.errorEvent,E)})}return w(R);})();
return RaceEvent}));

@@ -28,2 +28,21 @@ /**

*
* @example Aborting the promise with an error event
*
* ```TypeScript
* import { raceEvent } from 'race-event'
*
* const emitter = new EventTarget()
*
* setTimeout(() => {
* emitter.dispatchEvent(new CustomEvent('failure', {
* detail: new Error('Oh no!')
* }))
* }, 1000)
*
* // throws 'Oh no!' error
* const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {
* errorEvent: 'failure'
* })
* ```
*
* @example Customising the thrown AbortError

@@ -111,2 +130,8 @@ *

/**
* The name of an event emitted on the emitter that should cause the returned
* promise to reject. The rejection reason will be the `.detail` field of the
* event.
*/
errorEvent?: string;
/**
* When multiple events with the same name may be emitted, pass a filter

@@ -113,0 +138,0 @@ * function here to allow ignoring ones that should not cause the returned

@@ -28,2 +28,21 @@ /**

*
* @example Aborting the promise with an error event
*
* ```TypeScript
* import { raceEvent } from 'race-event'
*
* const emitter = new EventTarget()
*
* setTimeout(() => {
* emitter.dispatchEvent(new CustomEvent('failure', {
* detail: new Error('Oh no!')
* }))
* }, 1000)
*
* // throws 'Oh no!' error
* const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {
* errorEvent: 'failure'
* })
* ```
*
* @example Customising the thrown AbortError

@@ -116,2 +135,9 @@ *

return new Promise((resolve, reject) => {
function removeListeners() {
signal?.removeEventListener('abort', abortListener);
emitter.removeEventListener(eventName, eventListener);
if (opts?.errorEvent != null) {
emitter.removeEventListener(opts.errorEvent, errorEventListener);
}
}
const eventListener = (evt) => {

@@ -124,20 +150,24 @@ try {

catch (err) {
emitter.removeEventListener(eventName, eventListener);
signal?.removeEventListener('abort', abortListener);
removeListeners();
reject(err);
return;
}
emitter.removeEventListener(eventName, eventListener);
signal?.removeEventListener('abort', abortListener);
removeListeners();
resolve(evt);
};
const errorEventListener = (evt) => {
removeListeners();
reject(evt.detail);
};
const abortListener = () => {
emitter.removeEventListener(eventName, eventListener);
signal?.removeEventListener('abort', abortListener);
removeListeners();
reject(error);
};
signal?.addEventListener('abort', abortListener);
emitter.addEventListener(eventName, eventListener);
signal?.addEventListener('abort', abortListener);
if (opts?.errorEvent != null) {
emitter.addEventListener(opts.errorEvent, errorEventListener);
}
});
}
//# sourceMappingURL=index.js.map
{
"name": "race-event",
"version": "1.2.0",
"version": "1.3.0",
"description": "Race an event against an AbortSignal",

@@ -5,0 +5,0 @@ "author": "Alex Potsides <alex@achingbrain.net>",

@@ -49,2 +49,21 @@ # race-event

## Example - Aborting the promise with an error event
```TypeScript
import { raceEvent } from 'race-event'
const emitter = new EventTarget()
setTimeout(() => {
emitter.dispatchEvent(new CustomEvent('failure', {
detail: new Error('Oh no!')
}))
}, 1000)
// throws 'Oh no!' error
const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {
errorEvent: 'failure'
})
```
## Example - Customising the thrown AbortError

@@ -51,0 +70,0 @@

@@ -28,2 +28,21 @@ /**

*
* @example Aborting the promise with an error event
*
* ```TypeScript
* import { raceEvent } from 'race-event'
*
* const emitter = new EventTarget()
*
* setTimeout(() => {
* emitter.dispatchEvent(new CustomEvent('failure', {
* detail: new Error('Oh no!')
* }))
* }, 1000)
*
* // throws 'Oh no!' error
* const resolve = await raceEvent(emitter, 'success', AbortSignal.timeout(5000), {
* errorEvent: 'failure'
* })
* ```
*
* @example Customising the thrown AbortError

@@ -121,2 +140,9 @@ *

/**
* The name of an event emitted on the emitter that should cause the returned
* promise to reject. The rejection reason will be the `.detail` field of the
* event.
*/
errorEvent?: string
/**
* When multiple events with the same name may be emitted, pass a filter

@@ -141,2 +167,11 @@ * function here to allow ignoring ones that should not cause the returned

return new Promise((resolve, reject) => {
function removeListeners (): void {
signal?.removeEventListener('abort', abortListener)
emitter.removeEventListener(eventName, eventListener)
if (opts?.errorEvent != null) {
emitter.removeEventListener(opts.errorEvent, errorEventListener)
}
}
const eventListener = (evt: any): void => {

@@ -148,5 +183,3 @@ try {

} catch (err: any) {
emitter.removeEventListener(eventName, eventListener)
signal?.removeEventListener('abort', abortListener)
removeListeners()
reject(err)

@@ -156,17 +189,23 @@ return

emitter.removeEventListener(eventName, eventListener)
signal?.removeEventListener('abort', abortListener)
removeListeners()
resolve(evt)
}
const errorEventListener = (evt: any): void => {
removeListeners()
reject(evt.detail)
}
const abortListener = (): void => {
emitter.removeEventListener(eventName, eventListener)
signal?.removeEventListener('abort', abortListener)
removeListeners()
reject(error)
}
signal?.addEventListener('abort', abortListener)
emitter.addEventListener(eventName, eventListener)
signal?.addEventListener('abort', abortListener)
if (opts?.errorEvent != null) {
emitter.addEventListener(opts.errorEvent, errorEventListener)
}
})
}

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