Skip to content

PURISTA API


PURISTA API / @purista/core / SubscriptionDefinitionBuilder

Class: SubscriptionDefinitionBuilder<S, C>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:37

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

S extends Service = Service

C

C extends SubscriptionDefinitionBuilderTypes = SubscriptionDefinitionBuilderTypes

Constructors

Constructor

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

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:103

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:432

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

Type Parameters

OutputSchema

OutputSchema extends Schema

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:464

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

Type Parameters

ParamsSchema

ParamsSchema extends Schema

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:398

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

Type Parameters

PayloadSchema

PayloadSchema extends Schema

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:278

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:303

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, InferIn<T>>>>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:198

Define which custom events the subscription can emit.

Type Parameters

EventName

EventName extends string

T

T extends Schema

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, InferIn<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<Infer<Output>>>>>, C["EmitList"]>>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:122

Define a command which can be invoked by the current subscription

Type Parameters

Output

Output extends Schema

Payload

Payload extends Schema

Parameter

Parameter extends Schema

SName

SName extends string = string

Version

Version extends string = string

Fname

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<Infer<Output>>>>>, C["EmitList"]>>


filterForMessageType()

filterForMessageType(messageType): SubscriptionDefinitionBuilder<S, C>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:384

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:251

Filter messages only for principalId

Type Parameters

T

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:359

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

N extends string

V

V extends string

T

T extends string

I

I extends string

Parameters

serviceName

the name of the service that consumes the message

NonEmptyString<N> | undefined

serviceVersion

the version of the service that consumes the message

NonEmptyString<V> | undefined

serviceTarget

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

NonEmptyString<T> | undefined

instanceId

the event bridge instance id which should receive the message

NonEmptyString<I> | undefined

Returns

SubscriptionDefinitionBuilder<S, C>


filterSentFrom()

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

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:326

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

N extends string

V

V extends string

T

T extends string

I

I extends string

Parameters

serviceName

the name of the service that produces the message

NonEmptyString<N> | undefined

serviceVersion

the version of the service that produces the message

NonEmptyString<V> | undefined

serviceTarget

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

NonEmptyString<T> | undefined

instanceId

the event bridge instance id which was publishing the message

NonEmptyString<I> | undefined

Returns

SubscriptionDefinitionBuilder<S, C>


filterTenantId()

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

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:261

Filter messages only for tenantId

Type Parameters

T

T extends string

Parameters

tenantId

NonEmptyString<T>

the principal id to subscribe

Returns

SubscriptionDefinitionBuilder<S, C>


getDefinition()

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

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:755

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

Returns

Promise<Complete<SubscriptionDefinition<S, Infer<C["TransformInputPayloadSchema"]>, Infer<C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, Infer<C["OutputSchema"]>, InferIn<C["TransformOutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"], SubscriptionDefinitionMetadataBase>>>

SubscriptionDefinition


getSubscriptionContextMock()

getSubscriptionContextMock(input): object

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:832

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

configs: object

the config store

mock.configs.getConfig

getConfig: ConfigGetterFunction

get a config value from the config store

mock.configs.removeConfig

removeConfig: ConfigDeleteFunction

delete a config value from the config store

mock.configs.setConfig

setConfig: ConfigSetterFunction

set a config value in the config store

mock.emit

emit: EmitCustomMessageFunction<C["EmitList"]>

emit a custom message

mock.logger

logger: Logger

the logger instance

mock.message

message: Readonly<EBMessage>

the original message

mock.resources

resources: C["Resources"]

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

mock.secrets

secrets: object

the secret store

mock.secrets.getSecret

getSecret: SecretGetterFunction

get a secret from the secret store

mock.secrets.removeSecret

removeSecret: SecretDeleteFunction

delete a secret from the secret store

mock.secrets.setSecret

setSecret: SecretSetterFunction

set a secret in the secret store

mock.service

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()

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

wrap given function in an opentelemetry active span

Type Parameters
F

F

Parameters
name

string

opts

SpanOptions

context

Context | undefined

fn

(span) => Promise<F>

Returns

Promise<F>

mock.states

states: object

the state store

mock.states.getState

getState: StateGetterFunction

get a state value from the state store

mock.states.removeState

removeState: StateDeleteFunction

delete a state value from the state store

mock.states.setState

setState: StateSetterFunction

set a state value in the state store

mock.wrapInSpan()

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

wrap given function in an opentelemetry span

Type Parameters
F

F

Parameters
name

string

opts

SpanOptions

fn

(span) => Promise<F>

context?

Context

Returns

Promise<F>

stubs

stubs: object

stubs.emit

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

stubs.getConfig

getConfig: SinonStub<any[], any>

stubs.getSecret

getSecret: SinonStub<any[], any>

stubs.getState

getState: SinonStub<any[], any>

stubs.invoke

invoke: SinonStub<any[], any>

stubs.logger

logger: object = logger.stubs

stubs.logger.debug

debug: SinonStub<any[], any>

stubs.logger.error

error: SinonStub<any[], any>

stubs.logger.fatal

fatal: SinonStub<any[], any>

stubs.logger.info

info: SinonStub<any[], any>

stubs.logger.trace

trace: SinonStub<any[], any>

stubs.logger.warn

warn: SinonStub<any[], any>

stubs.removeConfig

removeConfig: SinonStub<any[], any>

stubs.removeSecret

removeSecret: SinonStub<any[], any>

stubs.removeState

removeState: SinonStub<any[], any>

stubs.resources

resources: Partial<C["Resources"]>

stubs.service

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

stubs.setConfig

setConfig: SinonStub<any[], any>

stubs.setSecret

setSecret: SinonStub<any[], any>

stubs.setState

setState: SinonStub<any[], any>

stubs.startActiveSpan

startActiveSpan: SinonStub<any[], any>

stubs.wrapInSpan

wrapInSpan: SinonStub<any[], any>


getSubscriptionFunction()

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

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:703

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

Returns

SubscriptionFunction<S, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

the subscription function


getSubscriptionFunctionPlain()

getSubscriptionFunctionPlain(): SubscriptionFunction<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:733

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

Returns

SubscriptionFunction<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

the subscription function


getSubscriptionTransformContextMock()

getSubscriptionTransformContextMock(input): object

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:852

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

configs: object

the config store

mock.configs.getConfig

getConfig: ConfigGetterFunction

get a config value from the config store

mock.configs.removeConfig

removeConfig: ConfigDeleteFunction

delete a config value from the config store

mock.configs.setConfig

setConfig: ConfigSetterFunction

set a config value in the config store

mock.logger

logger: Logger

the logger instance

mock.message

message: Readonly<EBMessage>

the original received message

mock.resources

resources: EmptyObject

mock.secrets

secrets: object

the secret store

mock.secrets.getSecret

getSecret: SecretGetterFunction

get a secret from the secret store

mock.secrets.removeSecret

removeSecret: SecretDeleteFunction

delete a secret from the secret store

mock.secrets.setSecret

setSecret: SecretSetterFunction

set a secret in the secret store

mock.startActiveSpan()

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

wrap given function in an opentelemetry active span

Type Parameters
F

F

Parameters
name

string

opts

SpanOptions

context

Context | undefined

fn

(span) => Promise<F>

Returns

Promise<F>

mock.states

states: object

the state store

mock.states.getState

getState: StateGetterFunction

get a state value from the state store

mock.states.removeState

removeState: StateDeleteFunction

delete a state value from the state store

mock.states.setState

setState: StateSetterFunction

set a state value in the state store

mock.wrapInSpan()

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

wrap given function in an opentelemetry span

Type Parameters
F

F

Parameters
name

string

opts

SpanOptions

fn

(span) => Promise<F>

context?

Context

Returns

Promise<F>

stubs

stubs: object

stubs.getConfig

getConfig: SinonStub<any[], any>

stubs.getSecret

getSecret: SinonStub<any[], any>

stubs.getState

getState: SinonStub<any[], any>

stubs.logger

logger: object = logger.stubs

stubs.logger.debug

debug: SinonStub<any[], any>

stubs.logger.error

error: SinonStub<any[], any>

stubs.logger.fatal

fatal: SinonStub<any[], any>

stubs.logger.info

info: SinonStub<any[], any>

stubs.logger.trace

trace: SinonStub<any[], any>

stubs.logger.warn

warn: SinonStub<any[], any>

stubs.removeConfig

removeConfig: SinonStub<any[], any>

stubs.removeSecret

removeSecret: SinonStub<any[], any>

stubs.removeState

removeState: SinonStub<any[], any>

stubs.resources

resources: Partial<EmptyObject>

stubs.setConfig

setConfig: SinonStub<any[], any>

stubs.setSecret

setSecret: SinonStub<any[], any>

stubs.setState

setState: SinonStub<any[], any>

stubs.startActiveSpan

startActiveSpan: SinonStub<any[], any>

stubs.wrapInSpan

wrapInSpan: SinonStub<any[], any>


getTransformInputFunction()

getTransformInputFunction(): SubscriptionTransformInputHook<S, Infer<C["TransformInputPayloadSchema"]>, Infer<C["TransformInputParamsSchema"]>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>> | undefined

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:535

Return the transform input function

Returns

SubscriptionTransformInputHook<S, Infer<C["TransformInputPayloadSchema"]>, Infer<C["TransformInputParamsSchema"]>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>> | undefined

the input transform function if defined


getTransformOutputFunction()

getTransformOutputFunction(): SubscriptionTransformOutputHook<S, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["TransformOutputSchema"]>> | undefined

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:598

Return the transform output function

Returns

SubscriptionTransformOutputHook<S, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["TransformOutputSchema"]>> | undefined

the transform output function if defined


markAsDeprecated()

markAsDeprecated(): SubscriptionDefinitionBuilder<S, C>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:225

Mark this subscription as deprecated

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder


receiveMessageOnEveryInstance()

receiveMessageOnEveryInstance(enforce?): SubscriptionDefinitionBuilder<S, C>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:292

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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:643

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, Infer<C["OutputSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>>

Returns

SubscriptionDefinitionBuilder<S, C>

SubscriptionDefinitionBuilder


setBeforeGuardHooks()

setBeforeGuardHooks(beforeGuards): SubscriptionDefinitionBuilder<S, C>

Defined in: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:617

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, Infer<C["PayloadSchema"]>, Infer<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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:680

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. Arrow functions do not have access to the this scope.

Parameters

fn

SubscriptionFunction<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:493

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

TransformInputPayloadSchema extends Schema

TransformInputParamsSchema

TransformInputParamsSchema extends Schema

Parameters

transformInputSchema

TransformInputPayloadSchema

Input payload validation schema

transformParameterSchema

TransformInputParamsSchema

Input parameter validation schema

transformFunction

SubscriptionTransformInputHook<S, Infer<TransformInputPayloadSchema>, Infer<TransformInputParamsSchema>, InferIn<C["PayloadSchema"]>, InferIn<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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:559

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

TransformOutputSchema extends Schema

Parameters

transformOutputSchema

TransformOutputSchema

The output validation schema

transformFunction

SubscriptionTransformOutputHook<S, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<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: SubscriptionDefinitionBuilder/SubscriptionDefinitionBuilder.impl.ts:236

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

Type Parameters

N

N extends string

V

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