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
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
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
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.
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.
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
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
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
// 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
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
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
The name of event to subscribe
serviceVersion?
the version of the service that produces the event
Returns
SubscriptionDefinitionBuilder<S, C>
SubscriptionDefinitionBuilder
