Socket
Socket
Sign inDemoInstall

@flatfile/listener

Package Overview
Dependencies
Maintainers
26
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@flatfile/listener - npm Package Compare versions

Comparing version 0.3.1 to 0.3.2

6

CHANGELOG.md
# @flatfile/listener
## 0.3.2
### Patch Changes
- 84f6807: resolves a minor bug with afterAll callbacks and adds recursive listener introspection
## 0.3.1

@@ -4,0 +10,0 @@

13

dist/index.d.ts

@@ -117,4 +117,5 @@ import { Flatfile } from '@flatfile/api';

* @param event
* @param recursive
*/
trigger(event: FlatfileEvent): Promise<void>;
trigger(event: FlatfileEvent, recursive?: boolean): Promise<void>;
/**

@@ -124,4 +125,5 @@ * Get any listeners from this target subscribing to this event

* @param event
* @param recursive
*/
getListeners(event: FlatfileEvent): EventCallback[];
getListeners(event: FlatfileEvent, recursive?: boolean): Listener[];
/**

@@ -144,2 +146,7 @@ * Attach more event listeners using a callback function. Used most

type Arrayable<T> = T | Array<T>;
type Listener = {
query: string | string[];
filter: any;
callback: EventCallback;
};

@@ -259,2 +266,2 @@ declare abstract class EventDriver {

export { Arrayable, AuthenticatedClient, Browser, Client, EventCallback, EventDriver, EventFilter, EventHandler, FlatfileEvent, FlatfileListener, FlatfileVirtualMachine };
export { Arrayable, AuthenticatedClient, Browser, Client, EventCallback, EventDriver, EventFilter, EventHandler, FlatfileEvent, FlatfileListener, FlatfileVirtualMachine, Listener };

@@ -460,9 +460,3 @@ "use strict";

}
if (!this.matchEvent(event, this.filterQuery)) {
return;
}
await this.trigger(event);
for (const node of this.nodes) {
await node.dispatchEvent(event);
}
await this.trigger(event, true);
await event.afterAllCallbacks.forEach(async (cb) => cb(event));

@@ -486,7 +480,8 @@ event.cache.delete();

* @param event
* @param recursive
*/
async trigger(event) {
const listeners = this.getListeners(event);
async trigger(event, recursive = false) {
const listeners = this.getListeners(event, recursive);
for (const cb of listeners) {
await cb(event);
await cb.callback(event);
}

@@ -498,9 +493,17 @@ }

* @param event
* @param recursive
*/
getListeners(event) {
return this.listeners.filter(([query, filter]) => {
getListeners(event, recursive = false) {
if (!this.matchEvent(event, this.filterQuery)) {
return [];
}
const listeners = this.listeners.filter(([query, filter]) => {
const globbed = glob(event.topic, query);
const matched = this.matchEvent(event, filter);
return globbed && matched;
}).map(([_q, _ctx, cb]) => cb);
}).map(([query, filter, callback]) => ({ query, filter, callback }));
return !recursive ? listeners : [
...listeners,
...this.nodes.flatMap((n) => n.getListeners(event, true))
];
}

@@ -507,0 +510,0 @@ /**

{
"name": "@flatfile/listener",
"version": "0.3.1",
"version": "0.3.2",
"description": "A PubSub Listener for configuring and using Flatfile",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -80,3 +80,5 @@ import { AuthenticatedClient } from './authenticated.client'

*/
async dispatchEvent(event: FlatfileEvent | Flatfile.Event | any): Promise<void> {
async dispatchEvent(
event: FlatfileEvent | Flatfile.Event | any
): Promise<void> {
if (!(event instanceof FlatfileEvent)) {

@@ -92,12 +94,4 @@ event = new FlatfileEvent(event, this._accessToken, this._apiUrl)

if (!this.matchEvent(event, this.filterQuery)) {
return
}
await this.trigger(event)
await this.trigger(event, true)
// dispatch the event on any registered children first
for (const node of this.nodes) {
await node.dispatchEvent(event)
}
await event.afterAllCallbacks.forEach(async (cb: any) => cb(event))

@@ -123,7 +117,11 @@ event.cache.delete()

* @param event
* @param recursive
*/
async trigger(event: FlatfileEvent): Promise<void> {
const listeners = this.getListeners(event)
async trigger(
event: FlatfileEvent,
recursive: boolean = false
): Promise<void> {
const listeners = this.getListeners(event, recursive)
for (const cb of listeners) {
await cb(event)
await cb.callback(event)
}

@@ -136,5 +134,16 @@ }

* @param event
* @param recursive
*/
public getListeners(event: FlatfileEvent): EventCallback[] {
return this.listeners
public getListeners(
event: FlatfileEvent,
recursive: boolean = false
): Listener[] {
// never return any listeners if the event doesn't match the filter
// event recursion should not occur either
if (!this.matchEvent(event, this.filterQuery)) {
return []
}
// look at listeners registered here
const listeners = this.listeners
.filter(([query, filter]) => {

@@ -145,3 +154,10 @@ const globbed = glob(event.topic, query)

})
.map(([_q, _ctx, cb]) => cb)
.map(([query, filter, callback]) => ({ query, filter, callback }))
return !recursive
? listeners
: [
...listeners,
...this.nodes.flatMap((n) => n.getListeners(event, true)),
]
}

@@ -177,1 +193,6 @@

export type Arrayable<T> = T | Array<T>
export type Listener = {
query: string | string[]
filter: any
callback: EventCallback
}

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