Skip to content

Interface: IFilteredBus<Namespace, Subjects, FilterPayload>

Makaio Framework


Makaio Framework / bus-core / IFilteredBus

Interface: IFilteredBus<Namespace, Subjects, FilterPayload>

Section titled “Interface: IFilteredBus<Namespace, Subjects, FilterPayload>”

Defined in: ../../../packages/bus-core/src/filtered-bus.ts:28

Filtered bus that applies a base filter to all subscriptions.

Created via ScopedBus.withFilter() or FilteredBus.withFilter().

  • IScopedBusBase<Namespace>

Namespace extends string = string

The namespace domain string

Subjects = unknown

SubjectRecord for payload types (unused, for type consistency)

FilterPayload = unknown

Pre-computed filter payload type for type-safe withFilter

readonly namespace: Namespace

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:27

IScopedBusBase.namespace

emit<Subject>(subject, payload): Promise<void>

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:83

Emit an event.

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition to emit on

Subject["$meta"]["payload"]

Event payload matching the subject schema

Promise<void>

Promise resolving when all handlers have been notified

IScopedBusBase.emit


getFilter(): PayloadFilter | undefined

Defined in: ../../../packages/bus-core/src/filtered-bus.ts:36

Get the current base filter.

PayloadFilter | undefined


intercept<Subject>(subject, handler, options?): () => void

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:49

Register an interceptor that runs BEFORE handlers.

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition to intercept

InterceptorHandler<Subject["$meta"]["payload"]>

Interceptor handler function

InterceptOptions

Optional intercept options (filter, priority, etc.)

Unsubscribe function

() => void

IScopedBusBase.intercept


on<Subject>(subject, handler, options?): () => void

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:36

Register an event or request handler.

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition to listen on

HandlerForSubjectDefinition<Subject>

Handler function to invoke

OnOptions

Optional subscription options (filter, priority, etc.)

Unsubscribe function

() => void

IScopedBusBase.on


once<Subject>(subject, handler): () => void

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:61

Register a one-time handler (callback version).

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition to listen on once

HandlerForSubjectDefinition<Subject>

Handler function invoked at most once

Unsubscribe function

() => void

IScopedBusBase.once

once<Subject>(subject, options?): Promise<ContextForSubjectDefinition<Subject>>

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:72

Wait for an event (promise version).

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition to await

OnceOptions<Subject>

Optional filter and timeout options

Promise<ContextForSubjectDefinition<Subject>>

Promise resolving to the event context

IScopedBusBase.once


request<Subject>(subject, payload): Promise<Subject["$meta"]["payload"]["response"]>

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:94

Make a request (throws if no handler is registered).

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition for the request

Subject["$meta"]["payload"]["request"]

Request payload matching the subject schema

Promise<Subject["$meta"]["payload"]["response"]>

Promise resolving to the response payload

IScopedBusBase.request


requestOptional<Subject>(subject, payload): Promise<OptionalResult<Subject["$meta"]["payload"]["response"]>>

Defined in: ../../../packages/bus-core/src/scoped-bus-base.ts:106

Make an optional request (returns OptionalResult instead of throwing when no handler is registered).

Subject extends ScopedSubjectDefinition<Namespace>

Subject

Subject definition for the request

Subject["$meta"]["payload"]["request"]

Request payload matching the subject schema

Promise<OptionalResult<Subject["$meta"]["payload"]["response"]>>

Promise resolving to an OptionalResult wrapper

IScopedBusBase.requestOptional


withFilter(filter): IFilteredBus<Namespace, Subjects, FilterPayload>

Defined in: ../../../packages/bus-core/src/filtered-bus.ts:56

Create a new FilteredBus with additional filter conditions merged in. Later filters override earlier ones for the same path.

When FilterPayload is known, filter keys are automatically type-checked.

TypedPayloadFilter<FilterPayload>

Additional filter conditions to merge

IFilteredBus<Namespace, Subjects, FilterPayload>

New FilteredBus with merged filter

// Type-safe filtering - keys validated against FilterPayload
const agentBus = bus.withFilter({ agentId: 'agent-123' }); // ✅
const badBus = bus.withFilter({ unknownKey: 'x' }); // ❌ Error
// Explicit type override
interface CustomPayload { agentId: string; status: string }
const strictBus = bus.withFilter<CustomPayload>({ agentId: 'agent-123' });