Classes · @purista/core
SubscriptionDefinitionBuilder
Subscription definition builder is a helper to create and define a subscriptions for a service. It helps to set all needed filters.
Signature
class SubscriptionDefinitionBuilder<S, C> Constructors
1 entry
constructor
Constructor
new constructor<S, C>(subscriptionName: string, subscriptionDescription: string, deprecated: boolean) Methods
28 entries
addOutputSchema
Method
addOutputSchema<OutputSchema>(eventName: string, outputSchema: OutputSchema, outputContentType: string, outputContentEncoding: string): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], OutputSchema, C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>> Add a schema for output payload validation. Types for payload of message and function payload output are generated from given schema.
addParameterSchema
Method
addParameterSchema<ParamsSchema>(parameterSchema: ParamsSchema): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], ParamsSchema, C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>> Add a schema for output parameter validation. Types for parameter of message and function parameter output are generated from given schema.
addPayloadSchema
Method
addPayloadSchema<PayloadSchema>(inputSchema: PayloadSchema, inputContentType: string, inputContentEncoding: string): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<PayloadSchema, C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>> Add a schema for input payload validation. Types for payload of message and function payload input are generated from given schema.
adviceAutoacknowledgeMessage
Method
adviceAutoacknowledgeMessage(acknowledge: boolean): SubscriptionDefinitionBuilder<S, C> 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.
adviceConsumerFailureHandling
Method
adviceConsumerFailureHandling(config: DefinitionEventBridgeConsumerFailureHandling): SubscriptionDefinitionBuilder<S, C> Advise retry and dead-letter handling for this subscription.
adviceDurable
Method
adviceDurable(durable: boolean): SubscriptionDefinitionBuilder<S, C> False: defines the subscription as a live-subscription, which is only able to process messages while the subscription itself is running.
canConsumeStream
Method
canConsumeStream<Chunk, Final, Payload, Parameter, SName, Version, Fname>(serviceName: SName, serviceVersion: Version, serviceTarget: Fname, chunkSchema?: Chunk, payloadSchema?: Payload, parameterSchema?: Parameter, finalSchema?: Final, validateChunk: boolean, validateFinal: boolean): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"] & Record<SName, Record<unknown, unknown>>, C["EmitList"]>> canEmit
Method
canEmit<EventName, T>(eventName: EventName, schema: T): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"] & Record<EventName, InferIn<unknown>>>> Define which custom events the subscription can emit.
canInvoke
Method
canInvoke<Output, Payload, Parameter, SName, Version, Fname>(serviceName: SName, serviceVersion: Version, serviceTarget: Fname, outputSchema?: Output, payloadSchema?: Payload, parameterSchema?: Parameter): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"] & Record<SName, Record<unknown, unknown>>, C["StreamInvokes"], C["EmitList"]>> Define a command which can be invoked by the current subscription
filterForMessageType
Method
filterForMessageType(messageType: EBMessageType): SubscriptionDefinitionBuilder<S, C> Adds a filter to match specific message type.
filterPrincipalId
Method
filterPrincipalId<T>(principalId: NonEmptyString<T>): SubscriptionDefinitionBuilder<S, C> Filter messages only for principalId
filterReceivedBy
Method
filterReceivedBy<N, V, T, I>(serviceName: NonEmptyString<N> | undefined, serviceVersion: NonEmptyString<V> | undefined, serviceTarget: NonEmptyString<T> | undefined, instanceId: NonEmptyString<I> | undefined): SubscriptionDefinitionBuilder<S, C> 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:
filterSentFrom
Method
filterSentFrom<N, V, T, I>(serviceName: NonEmptyString<N> | undefined, serviceVersion: NonEmptyString<V> | undefined, serviceTarget: NonEmptyString<T> | undefined, instanceId: NonEmptyString<I> | undefined): SubscriptionDefinitionBuilder<S, C> 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:
filterTenantId
Method
filterTenantId<T>(tenantId: NonEmptyString<T>): SubscriptionDefinitionBuilder<S, C> Filter messages only for tenantId
getDefinition
Method
getDefinition(): Promise<Complete<SubscriptionDefinition<S, Infer<unknown[unknown]>, Infer<unknown[unknown]>, Infer<unknown[unknown]>, Infer<unknown[unknown]>, InferIn<unknown[unknown]>, Infer<unknown[unknown]>, InferIn<unknown[unknown]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"], SubscriptionDefinitionMetadataBase, C["QueueInvokes"]>>> Returns the final subscription definition which will be passed into the service class.
getSubscriptionFunction
Method
getSubscriptionFunction(): SubscriptionFunction<S, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"], C["QueueInvokes"]> Get the function implementation including input and output validation. Also, before and after hooks are triggered during execution.
getSubscriptionFunctionPlain
Method
getSubscriptionFunctionPlain(): SubscriptionFunction<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"], C["QueueInvokes"]> Get the function implementation without input and output validation. No hooks are triggered during execution.
getSubscriptionTransformContextMock
Method
getSubscriptionTransformContextMock(input: { message: EBMessage; resources: C["Resources"]; sandbox: SinonSandbox }): { mock: { configs: { getConfig: ConfigGetterFunction; removeConfig: ConfigDeleteFunction; setConfig: ConfigSetterFunction }; logger: Logger; message: Readonly<EBMessage>; metrics: PuristaMetricContext<Metrics>; queue: QueueContext; resources: EmptyObject; ... }; stubs: { enqueue: SinonStub<any[], any>; getConfig: SinonStub<any[], any>; getSecret: SinonStub<any[], any>; getState: SinonStub<any[], any>; logger: { debug: SinonStub<unknown[], any>; error: SinonStub<unknown[], any>; fatal: SinonStub<unknown[], any>; info: SinonStub<unknown[], any>; trace: SinonStub<unknown[], any>; warn: SinonStub<unknown[], any> }; removeConfig: SinonStub<any[], any>; ... } } Returns a mocked transform function context, which can be used in unit tests.
getTransformInputFunction
Method
getTransformInputFunction(): SubscriptionTransformInputHook<S, Infer<C["TransformInputPayloadSchema"]>, Infer<C["TransformInputParamsSchema"]>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>> | undefined Return the transform input function
getTransformOutputFunction
Method
getTransformOutputFunction(): SubscriptionTransformOutputHook<S, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["TransformOutputSchema"]>> | undefined Return the transform output function
markAsDeprecated
Method
markAsDeprecated(): SubscriptionDefinitionBuilder<S, C> Mark this subscription as deprecated
receiveMessageOnEveryInstance
Method
receiveMessageOnEveryInstance(enforce: boolean): SubscriptionDefinitionBuilder<S, C> Instruct the event bridge message broker to send the matching message to every running instance. The underlaying message broker must support this functionality.
setAfterGuardHooks
Method
setAfterGuardHooks(afterGuards: Record<string, SubscriptionAfterGuardHook<S, Infer<C["OutputSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>>): SubscriptionDefinitionBuilder<S, C> Set one or more after guard hook(s). If there are multiple after guard hooks, they are executed in parallel
setBeforeGuardHooks
Method
setBeforeGuardHooks(beforeGuards: Record<string, SubscriptionBeforeGuardHook<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>>): SubscriptionDefinitionBuilder<S, C> Set one or more before guard hook(s). If there are multiple before guard hooks, they are executed in parallel
setSubscriptionFunction
Method
setSubscriptionFunction(fn: SubscriptionFunction<S, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"], C["QueueInvokes"]>): SubscriptionDefinitionBuilder<S, C> 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.
setTransformInput
Method
setTransformInput<TransformInputPayloadSchema, TransformInputParamsSchema>(transformInputSchema: TransformInputPayloadSchema, transformParameterSchema: TransformInputParamsSchema, transformFunction: SubscriptionTransformInputHook<S, Infer<TransformInputPayloadSchema>, Infer<TransformInputParamsSchema>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>>, inputContentType?: string, inputContentEncoding?: string): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], TransformInputPayloadSchema, TransformInputParamsSchema, C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>> 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.
setTransformOutput
Method
setTransformOutput<TransformOutputSchema>(transformOutputSchema: TransformOutputSchema, transformFunction: SubscriptionTransformOutputHook<S, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<TransformOutputSchema>>, outputContentType?: string, outputContentEncoding?: string): SubscriptionDefinitionBuilder<S, SubscriptionDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], TransformOutputSchema, C["Resources"], C["Invokes"], C["StreamInvokes"], C["EmitList"]>> 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.
subscribeToEvent
Method
subscribeToEvent<N, V>(eventName: NonEmptyString<N>, serviceVersion?: NonEmptyString<V>): SubscriptionDefinitionBuilder<S, C> Add a filter to only subscribe to messages with matching event name