forked from Kieran/snort
use filters array
This commit is contained in:
parent
5d66ad9165
commit
53327c641c
@ -148,7 +148,7 @@ export interface OutgoingEvent {
|
|||||||
export interface OutgoingOpenSubscription {
|
export interface OutgoingOpenSubscription {
|
||||||
kind: OutgoingKind.Subscription
|
kind: OutgoingKind.Subscription
|
||||||
id: SubscriptionId
|
id: SubscriptionId
|
||||||
filters: Filters
|
filters: Filters[]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -226,7 +226,7 @@ function serializeOutgoingMessage(msg: OutgoingMessage): string {
|
|||||||
return JSON.stringify([
|
return JSON.stringify([
|
||||||
"REQ",
|
"REQ",
|
||||||
msg.id.toString(),
|
msg.id.toString(),
|
||||||
serializeFilters(msg.filters),
|
...serializeFilters(msg.filters),
|
||||||
])
|
])
|
||||||
} else if (msg.kind === OutgoingKind.Unsubscription) {
|
} else if (msg.kind === OutgoingKind.Unsubscription) {
|
||||||
return JSON.stringify(["CLOSE", msg.id.toString()])
|
return JSON.stringify(["CLOSE", msg.id.toString()])
|
||||||
@ -235,19 +235,20 @@ function serializeOutgoingMessage(msg: OutgoingMessage): string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function serializeFilters(filters: Filters): RawFilters {
|
function serializeFilters(filters: Filters[]): RawFilters[] {
|
||||||
return {
|
if (filters.length === 0) {
|
||||||
ids: filters.ids?.map((id) => id.toString()),
|
return [{}]
|
||||||
authors: filters.authors?.map((author) => author.toString()),
|
|
||||||
kinds: filters.kinds?.map((kind) => kind),
|
|
||||||
["#e"]: filters.eventTags?.map((e) => e.toString()),
|
|
||||||
["#p"]: filters.pubkeyTags?.map((p) => p.toString()),
|
|
||||||
since:
|
|
||||||
filters.since !== undefined ? unixTimestamp(filters.since) : undefined,
|
|
||||||
until:
|
|
||||||
filters.until !== undefined ? unixTimestamp(filters.until) : undefined,
|
|
||||||
limit: filters.limit,
|
|
||||||
}
|
}
|
||||||
|
return filters.map((filter) => ({
|
||||||
|
ids: filter.ids?.map((id) => id.toString()),
|
||||||
|
authors: filter.authors?.map((author) => author.toString()),
|
||||||
|
kinds: filter.kinds?.map((kind) => kind),
|
||||||
|
["#e"]: filter.eventTags?.map((e) => e.toString()),
|
||||||
|
["#p"]: filter.pubkeyTags?.map((p) => p.toString()),
|
||||||
|
since: filter.since !== undefined ? unixTimestamp(filter.since) : undefined,
|
||||||
|
until: filter.until !== undefined ? unixTimestamp(filter.until) : undefined,
|
||||||
|
limit: filter.limit,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseEventData(json: object): RawEvent {
|
function parseEventData(json: object): RawEvent {
|
||||||
|
@ -17,7 +17,7 @@ export class Nostr {
|
|||||||
/**
|
/**
|
||||||
* Mapping of subscription IDs to corresponding filters.
|
* Mapping of subscription IDs to corresponding filters.
|
||||||
*/
|
*/
|
||||||
readonly #subscriptions: Map<string, Filters> = new Map()
|
readonly #subscriptions: Map<string, Filters[]> = new Map()
|
||||||
|
|
||||||
#eventCallback?: EventCallback
|
#eventCallback?: EventCallback
|
||||||
#noticeCallback?: NoticeCallback
|
#noticeCallback?: NoticeCallback
|
||||||
@ -162,7 +162,7 @@ export class Nostr {
|
|||||||
* @returns The subscription ID.
|
* @returns The subscription ID.
|
||||||
*/
|
*/
|
||||||
subscribe(
|
subscribe(
|
||||||
filters: Filters = {},
|
filters: Filters[],
|
||||||
subscriptionId: SubscriptionId = SubscriptionId.random()
|
subscriptionId: SubscriptionId = SubscriptionId.random()
|
||||||
): SubscriptionId {
|
): SubscriptionId {
|
||||||
this.#subscriptions.set(subscriptionId.toString(), filters)
|
this.#subscriptions.set(subscriptionId.toString(), filters)
|
||||||
|
@ -40,7 +40,7 @@ describe("single event communication", function () {
|
|||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
subscriber.subscribe()
|
subscriber.subscribe([])
|
||||||
|
|
||||||
publisher.publish(
|
publisher.publish(
|
||||||
{
|
{
|
Loading…
Reference in New Issue
Block a user