feat(pockethost): unsubscribe from filters

This commit is contained in:
Ben Allfree 2024-06-29 14:23:15 -07:00
parent 35edc77a9a
commit 879845a831
2 changed files with 16 additions and 2 deletions

View File

@ -0,0 +1,5 @@
---
'pockethost': minor
---
Enhancement: unsubscribe from filters

View File

@ -32,14 +32,23 @@ const filters: {
[key: string]: FilterEntry<any>[]
} = {}
async function registerFilter<TCarry, TContext extends {} = {}>(
function registerFilter<TCarry, TContext extends {} = {}>(
filter: string,
handler: FilterHandler<TCarry, TContext>,
priority = 10,
) {
): () => void {
if (!(filter in filters)) filters[filter] = []
filters[filter]!.push({ priority, handler })
filters[filter]!.sort((a, b) => a.priority - b.priority)
return () => {
const index = filters[filter]!.findIndex(
(entry) => entry.handler === handler,
)
if (index !== -1) {
filters[filter]!.splice(index, 1)
}
}
}
async function filter<TCarry, TContext extends {} = {}>(