Skip to content

@purista/core v2.0.5


PURISTA API / @purista/core / SubscriptionDefinitionBuilder

Class: SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:41

Subscription definition builder is a helper to create and define a subscriptions for a service. It helps to set all needed filters.

A working schema definition needs at least a subscription name, a short description and the subscription implementation.

Type Parameters

S extends Service = Service

C extends SubscriptionDefinitionBuilderTypes = SubscriptionDefinitionBuilderTypes

Constructors

new SubscriptionDefinitionBuilder()

new SubscriptionDefinitionBuilder<S, C>(subscriptionName, subscriptionDescription, deprecated): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:107

Parameters

subscriptionName

string

subscriptionDescription

string

deprecated

boolean = false

Returns

SubscriptionDefinitionBuilder<S, C>

Methods

addOutputSchema()

addOutputSchema<OutputSchema>(eventName, outputSchema, outputContentType, outputContentEncoding): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], OutputSchema, C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:438

Add a schema for output payload validation. Types for payload of message and function payload output are generated from given schema.

Type Parameters

OutputSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

eventName

string

the event name to be used when the subscription result is emitted as custom event

outputSchema

OutputSchema

the validation schema for the output payload

outputContentType

string = 'application/json'

optional the content type of payload

outputContentEncoding

string = 'utf-8'

optional the content encoding

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], OutputSchema, C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

SubscriptionDefinitionBuilder


addParameterSchema()

addParameterSchema<ParamsSchema>(parameterSchema): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], ParamsSchema, C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:470

Add a schema for output parameter validation. Types for parameter of message and function parameter output are generated from given schema.

Type Parameters

ParamsSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

parameterSchema

ParamsSchema

the validation schema for output parameter

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], ParamsSchema, C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

SubscriptionDefinitionBuilder


addPayloadSchema()

addPayloadSchema<PayloadSchema>(inputSchema, inputContentType, inputContentEncoding): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<PayloadSchema, C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:404

Add a schema for input payload validation. Types for payload of message and function payload input are generated from given schema.

Type Parameters

PayloadSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

inputSchema

PayloadSchema

the validation schema for input payload

inputContentType

string = 'application/json'

optional the content type of payload

inputContentEncoding

string = 'utf-8'

optional the content encoding

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<PayloadSchema, C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

SubscriptionDefinitionBuilder


adviceAutoacknowledgeMessage()

adviceAutoacknowledgeMessage(acknowledge): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:284

Instruct the event bridge message broker to autoacknowledge messages as soon as they arrive. This means, a message will not be resent, if the subscription execution fails unexpected.

If set to false, the message will be resent from message broker to eventbridge, if:

  • the underlaying message broker supports it
  • if the subscription execution fails unexpected
  • if sending of optional subscription response failed

Parameters

acknowledge

boolean = true

Enable (true) and disable (false)

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinition


adviceDurable()

adviceDurable(durable): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:309

False: defines the subscription as a live-subscription, which is only able to process messages while the subscription itself is running.

True: Advises the event bridge (like rabbitMQ) to store all messages if the subscription is not running. As soon as the subscription is back again, all missed messages will be sent first, before it starts working like a live-subscription.

Parameters

durable

boolean

Returns

SubscriptionDefinitionBuilder<S, C>


canEmit()

canEmit<EventName, T>(eventName, schema): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"] & Record<EventName, UnknownIfNever<InputFrom<AdapterResolver, T>>>>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:204

Define which custom events the subscription can emit.

Type Parameters

EventName extends string

T extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

eventName

EventName

The custom event name

schema

T

the payload schema

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"] & Record<EventName, UnknownIfNever<InputFrom<AdapterResolver, T>>>>>


canInvoke()

canInvoke<Output, Payload, Parameter, SName, Version, Fname>(serviceName, serviceVersion, serviceTarget, outputSchema?, payloadSchema?, parameterSchema?): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"] & Record<SName, Record<Version, Record<Fname, (payload, parameter) => Promise<UnknownIfNever<OutputFrom<AdapterResolver, Output>>>>>>, C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:126

Define a command which can be invoked by the current subscription

Type Parameters

Output extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Payload extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameter extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

SName extends string = string

Version extends string = string

Fname extends string = string

Parameters

serviceName

SName

serviceVersion

Version

serviceTarget

Fname

outputSchema?

Output

payloadSchema?

Payload

parameterSchema?

Parameter

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"] & Record<SName, Record<Version, Record<Fname, (payload, parameter) => Promise<UnknownIfNever<OutputFrom<AdapterResolver, Output>>>>>>, C["EmitList"]>>


filterForMessageType()

filterForMessageType(messageType): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:390

Adds a filter to match specific message type.

Common message types are Command, CommandSuccessResponse and CommandErrorResponse.

See EBMessageType for full available list.

Parameters

messageType

EBMessageType

the type of message

Returns

SubscriptionDefinitionBuilder<S, C>


filterPrincipalId()

filterPrincipalId<T>(principalId): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:257

Filter messages only for principalId

Type Parameters

T extends string

Parameters

principalId

NonEmptyString<T>

the principal id to subscribe

Returns

SubscriptionDefinitionBuilder<S, C>


filterReceivedBy()

filterReceivedBy<N, V, T, I>(serviceName, serviceVersion, serviceTarget, instanceId): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:365

Add filter to only match messages received by given service function & version. Set one or more parameters to undefined means "do not filter by this criteria". For example:

This will filter for all messages send to function testFunction of service UserService. This will include messages from all versions of this function.

typescript
receivedBy('UserService', undefined, 'testFunction')

Type Parameters

N extends string

V extends string

T extends string

I extends string

Parameters

serviceName

the name of the service that consumes the message

undefined | NonEmptyString<N>

serviceVersion

the version of the service that consumes the message

undefined | NonEmptyString<V>

serviceTarget

the command or subscription name of the service that consumes the message

undefined | NonEmptyString<T>

instanceId

the event bridge instance id which should receive the message

undefined | NonEmptyString<I>

Returns

SubscriptionDefinitionBuilder<S, C>


filterSentFrom()

filterSentFrom<N, V, T, I>(serviceName, serviceVersion, serviceTarget, instanceId): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:332

Add filter to only match messages send by given service function & version. Set one or more parameters to undefined means "do not filter by this criteria". For example:

This will filter for all messages send from function testFunction of service UserService. This will include messages from all versions of this function.

typescript
sentFrom('UserService', undefined, 'testFunction')

Type Parameters

N extends string

V extends string

T extends string

I extends string

Parameters

serviceName

the name of the service that produces the message

undefined | NonEmptyString<N>

serviceVersion

the version of the service that produces the message

undefined | NonEmptyString<V>

serviceTarget

the command or subscription name of the service that produces the message

undefined | NonEmptyString<T>

instanceId

the event bridge instance id which was publishing the message

undefined | NonEmptyString<I>

Returns

SubscriptionDefinitionBuilder<S, C>


filterTenantId()

filterTenantId<T>(tenantId): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:267

Filter messages only for tenantId

Type Parameters

T extends string

Parameters

tenantId

NonEmptyString<T>

the principal id to subscribe

Returns

SubscriptionDefinitionBuilder<S, C>


getDefinition()

getDefinition(): Promise<Complete<SubscriptionDefinition<S, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputPayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputParamsSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["TransformOutputSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"], SubscriptionDefinitionMetadataBase>>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:752

Returns the final subscription definition which will be passed into the service class.

Returns

Promise<Complete<SubscriptionDefinition<S, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputPayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputParamsSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["TransformOutputSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"], SubscriptionDefinitionMetadataBase>>>

SubscriptionDefinition


getSubscriptionContextMock()

getSubscriptionContextMock(input): object

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:831

Returns a mocked command function context, which can be used in unit tests.

Parameters

input
message

EBMessage

resources?

Partial<C["Resources"]>

sandbox?

SinonSandbox

Returns

object

a mocked command function context

mock

mock: object

mock.configs

mock.configs: object

the config store

mock.configs.getConfig

mock.configs.getConfig: ConfigGetterFunction

get a config value from the config store

mock.configs.removeConfig

mock.configs.removeConfig: ConfigDeleteFunction

delete a config value from the config store

mock.configs.setConfig

mock.configs.setConfig: ConfigSetterFunction

set a config value in the config store

mock.emit

mock.emit: EmitCustomMessageFunction<C["EmitList"]>

emit a custom message

mock.logger

mock.logger: Logger

the logger instance

mock.message

mock.message: Readonly<EBMessage>

the original message

mock.resources

mock.resources: C["Resources"]

Provides resources defined in service builder and set via config during service creation

mock.secrets

mock.secrets: object

the secret store

mock.secrets.getSecret

mock.secrets.getSecret: SecretGetterFunction

get a secret from the secret store

mock.secrets.removeSecret

mock.secrets.removeSecret: SecretDeleteFunction

delete a secret from the secret store

mock.secrets.setSecret

mock.secrets.setSecret: SecretSetterFunction

set a secret in the secret store

mock.service

mock.service: C["Invokes"]

Invokes a command and returns the result. It is recommended to validate the result against a schema which only contains the data you actually need.

Example
typescript
// define your invocation in subscription builder
.canInvoke<{ response: string }>('ServiceA', '1', 'test', payloadSchema, parameterSchema)
.setCommandFunction(async function (context, payload, _parameter) {
   const inputPayload = { my: 'input' }
   const inputParameter = { search: 'for_me' }
   const result = await context.service.ServiceA[1].test(inputPayload,inputParameter)
})
mock.startActiveSpan()

mock.startActiveSpan: <F>(name, opts, context, fn) => Promise<F>

wrap given function in an opentelemetry active span

Type Parameters

F

Parameters
name

string

opts

SpanOptions

context

undefined | Context

fn

(span) => Promise<F>

Returns

Promise<F>

mock.states

mock.states: object

the state store

mock.states.getState

mock.states.getState: StateGetterFunction

get a state value from the state store

mock.states.removeState

mock.states.removeState: StateDeleteFunction

delete a state value from the state store

mock.states.setState

mock.states.setState: StateSetterFunction

set a state value in the state store

mock.wrapInSpan()

mock.wrapInSpan: <F>(name, opts, fn, context?) => Promise<F>

wrap given function in an opentelemetry span

Type Parameters

F

Parameters
name

string

opts

SpanOptions

fn

(span) => Promise<F>

context?

Context

Returns

Promise<F>

stubs

stubs: object

stubs.emit

stubs.emit: FromEmitToOtherType<C["EmitList"], SinonStub<any[], any>> = eventList

stubs.getConfig

stubs.getConfig: SinonStub<any[], any>

stubs.getSecret

stubs.getSecret: SinonStub<any[], any>

stubs.getState

stubs.getState: SinonStub<any[], any>

stubs.invoke

stubs.invoke: SinonStub<any[], any>

stubs.logger

stubs.logger: object = logger.stubs

stubs.logger.debug

stubs.logger.debug: SinonStub<any[], any>

stubs.logger.error

stubs.logger.error: SinonStub<any[], any>

stubs.logger.fatal

stubs.logger.fatal: SinonStub<any[], any>

stubs.logger.info

stubs.logger.info: SinonStub<any[], any>

stubs.logger.trace

stubs.logger.trace: SinonStub<any[], any>

stubs.logger.warn

stubs.logger.warn: SinonStub<any[], any>

stubs.removeConfig

stubs.removeConfig: SinonStub<any[], any>

stubs.removeSecret

stubs.removeSecret: SinonStub<any[], any>

stubs.removeState

stubs.removeState: SinonStub<any[], any>

stubs.resources

stubs.resources: Partial<C["Resources"]>

stubs.service

stubs.service: FromInvokeToOtherType<C["Invokes"], SinonStub<any[], any>>

stubs.setConfig

stubs.setConfig: SinonStub<any[], any>

stubs.setSecret

stubs.setSecret: SinonStub<any[], any>

stubs.setState

stubs.setState: SinonStub<any[], any>

stubs.startActiveSpan

stubs.startActiveSpan: SinonStub<any[], any>

stubs.wrapInSpan

stubs.wrapInSpan: SinonStub<any[], any>


getSubscriptionFunction()

getSubscriptionFunction(): SubscriptionFunction<S, UnknownIfNever<InputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["OutputSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:700

Get the function implementation including input and output validation. Also, before and after hooks are triggered during execution.

Returns

SubscriptionFunction<S, UnknownIfNever<InputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["OutputSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"]>

the subscription function


getSubscriptionFunctionPlain()

getSubscriptionFunctionPlain(): void

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:730

Get the function implementation without input and output validation. No hooks are triggered during execution.

Returns

void

the subscription function


getSubscriptionTransformContextMock()

getSubscriptionTransformContextMock(input): object

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:851

Returns a mocked transform function context, which can be used in unit tests.

Parameters

input
message

EBMessage

resources?

C["Resources"]

sandbox?

SinonSandbox

Returns

object

a mocked transform function context

mock

mock: object

mock.configs

mock.configs: object

the config store

mock.configs.getConfig

mock.configs.getConfig: ConfigGetterFunction

get a config value from the config store

mock.configs.removeConfig

mock.configs.removeConfig: ConfigDeleteFunction

delete a config value from the config store

mock.configs.setConfig

mock.configs.setConfig: ConfigSetterFunction

set a config value in the config store

mock.logger

mock.logger: Logger

the logger instance

mock.message

mock.message: Readonly<EBMessage>

the original received message

mock.resources

mock.resources: EmptyObject

mock.secrets

mock.secrets: object

the secret store

mock.secrets.getSecret

mock.secrets.getSecret: SecretGetterFunction

get a secret from the secret store

mock.secrets.removeSecret

mock.secrets.removeSecret: SecretDeleteFunction

delete a secret from the secret store

mock.secrets.setSecret

mock.secrets.setSecret: SecretSetterFunction

set a secret in the secret store

mock.startActiveSpan()

mock.startActiveSpan: <F>(name, opts, context, fn) => Promise<F>

wrap given function in an opentelemetry active span

Type Parameters

F

Parameters
name

string

opts

SpanOptions

context

undefined | Context

fn

(span) => Promise<F>

Returns

Promise<F>

mock.states

mock.states: object

the state store

mock.states.getState

mock.states.getState: StateGetterFunction

get a state value from the state store

mock.states.removeState

mock.states.removeState: StateDeleteFunction

delete a state value from the state store

mock.states.setState

mock.states.setState: StateSetterFunction

set a state value in the state store

mock.wrapInSpan()

mock.wrapInSpan: <F>(name, opts, fn, context?) => Promise<F>

wrap given function in an opentelemetry span

Type Parameters

F

Parameters
name

string

opts

SpanOptions

fn

(span) => Promise<F>

context?

Context

Returns

Promise<F>

stubs

stubs: object

stubs.getConfig

stubs.getConfig: SinonStub<any[], any>

stubs.getSecret

stubs.getSecret: SinonStub<any[], any>

stubs.getState

stubs.getState: SinonStub<any[], any>

stubs.logger

stubs.logger: object = logger.stubs

stubs.logger.debug

stubs.logger.debug: SinonStub<any[], any>

stubs.logger.error

stubs.logger.error: SinonStub<any[], any>

stubs.logger.fatal

stubs.logger.fatal: SinonStub<any[], any>

stubs.logger.info

stubs.logger.info: SinonStub<any[], any>

stubs.logger.trace

stubs.logger.trace: SinonStub<any[], any>

stubs.logger.warn

stubs.logger.warn: SinonStub<any[], any>

stubs.removeConfig

stubs.removeConfig: SinonStub<any[], any>

stubs.removeSecret

stubs.removeSecret: SinonStub<any[], any>

stubs.removeState

stubs.removeState: SinonStub<any[], any>

stubs.resources

stubs.resources: Partial<EmptyObject>

stubs.setConfig

stubs.setConfig: SinonStub<any[], any>

stubs.setSecret

stubs.setSecret: SinonStub<any[], any>

stubs.setState

stubs.setState: SinonStub<any[], any>

stubs.startActiveSpan

stubs.startActiveSpan: SinonStub<any[], any>

stubs.wrapInSpan

stubs.wrapInSpan: SinonStub<any[], any>


getTransformInputFunction()

getTransformInputFunction(): undefined | SubscriptionTransformInputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputPayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["ParamsSchema"]>>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:540

Return the transform input function

Returns

undefined | SubscriptionTransformInputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputPayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["TransformInputParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["ParamsSchema"]>>>

the input transform function if defined


getTransformOutputFunction()

getTransformOutputFunction(): undefined | SubscriptionTransformOutputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["TransformOutputSchema"]>>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:602

Return the transform output function

Returns

undefined | SubscriptionTransformOutputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["TransformOutputSchema"]>>>

the transform output function if defined


markAsDeprecated()

markAsDeprecated(): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:231

Mark this subscription as deprecated

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder


receiveMessageOnEveryInstance()

receiveMessageOnEveryInstance(enforce): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:298

Instruct the event bridge message broker to send the matching message to every running instance. The underlaying message broker must support this functionality.

In serverless environments, this flag should not have any effect

Parameters

enforce

boolean = true

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinition


setAfterGuardHooks()

setAfterGuardHooks(afterGuards): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:644

Set one or more after guard hook(s). If there are multiple after guard hooks, they are executed in parallel

Parameters

afterGuards

Record<string, SubscriptionAfterGuardHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"]>>

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder


setBeforeGuardHooks()

setBeforeGuardHooks(beforeGuards): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:621

Set one or more before guard hook(s). If there are multiple before guard hooks, they are executed in parallel

Parameters

beforeGuards

Record<string, SubscriptionBeforeGuardHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"]>>

Object of key = name of guard, value = function

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder


setSubscriptionFunction()

setSubscriptionFunction(fn): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:678

Required: Set the function implementation. The types should be automatically set as soon as schemas previously defined. As the function will be a a function of a service class you need to implement as function declaration. Anonymous functions do not have access to the this scope.

Parameters

fn

SubscriptionFunction<S, UnknownIfNever<OutputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["OutputSchema"]>>, C["Resources"], C["Invokes"], C["EmitList"]>

the function implementation

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder

Example

ts
async function (context, payload, parameter) {

   return `the result output payload`
}

setTransformInput()

setTransformInput<TransformInputPayloadSchema, TransformInputParamsSchema>(transformInputSchema, transformParameterSchema, transformFunction, inputContentType?, inputContentEncoding?): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], TransformInputPayloadSchema, TransformInputParamsSchema, C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:499

Set a transform input hook which will encode or transform the input payload and parameters. Will be executed as first step before input validation, before guard and the function itself. This will change the type of input message payload and input message parameter.

Type Parameters

TransformInputPayloadSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

TransformInputParamsSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

transformInputSchema

TransformInputPayloadSchema

Input payload validation schema

transformParameterSchema

TransformInputParamsSchema

Input parameter validation schema

transformFunction

SubscriptionTransformInputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, TransformInputPayloadSchema>>, UnknownIfNever<OutputFrom<AdapterResolver, TransformInputParamsSchema>>, UnknownIfNever<InputFrom<AdapterResolver, C["PayloadSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, C["ParamsSchema"]>>>

the transform input function

inputContentType?

string

optional the content type of payload

inputContentEncoding?

string

optional the content encoding

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], TransformInputPayloadSchema, TransformInputParamsSchema, C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

SubscriptionDefinitionBuilder


setTransformOutput()

setTransformOutput<TransformOutputSchema>(transformOutputSchema, transformFunction, outputContentType?, outputContentEncoding?): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], TransformOutputSchema, C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:564

Set a transform output hook which will encode or transform the response payload. Will be executed at very last step after function execution, output validation and after guard hooks. This will change the type of output message payload.

Type Parameters

TransformOutputSchema extends SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

Parameters

transformOutputSchema

TransformOutputSchema

The output validation schema

transformFunction

SubscriptionTransformOutputHook<S, UnknownIfNever<OutputFrom<AdapterResolver, C["OutputSchema"]>>, UnknownIfNever<OutputFrom<AdapterResolver, C["ParamsSchema"]>>, UnknownIfNever<InputFrom<AdapterResolver, TransformOutputSchema>>>

the transform output function

outputContentType?

string

optional the content type of payload

outputContentEncoding?

string

optional the content encoding

Returns

SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], TransformOutputSchema, C["Resources"], C["Invokes"], C["EmitList"]>>

SubscriptionDefinitionBuilder


subscribeToEvent()

subscribeToEvent<N, V>(eventName, serviceVersion?): SubscriptionDefinitionBuilder<S, C>

Defined in: packages/core/src/SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:242

Add a filter to only subscribe to messages with matching event name

Type Parameters

N extends string

V extends string

Parameters

eventName

NonEmptyString<N>

The name of event to subscribe

serviceVersion?

NonEmptyString<V>

the version of the service that produces the event

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder