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

SubscriptionDefinitionBuilder.ts typescript
class SubscriptionDefinitionBuilder<S, C>

Constructors

1 entry

constructor

Constructor

Source
constructor.ts typescript
new constructor<S, C>(subscriptionName: string, subscriptionDescription: string, deprecated: boolean)

Methods

28 entries

addOutputSchema

Method

Source
addOutputSchema.ts typescript
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

Source
addParameterSchema.ts typescript
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

Source
addPayloadSchema.ts typescript
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

Source
adviceAutoacknowledgeMessage.ts typescript
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

Source
adviceConsumerFailureHandling.ts typescript
adviceConsumerFailureHandling(config: DefinitionEventBridgeConsumerFailureHandling): SubscriptionDefinitionBuilder<S, C>

Advise retry and dead-letter handling for this subscription.

adviceDurable

Method

Source
adviceDurable.ts typescript
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

Source
canConsumeStream.ts typescript
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

Source
canEmit.ts typescript
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

Source
canInvoke.ts typescript
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

Source
filterForMessageType.ts typescript
filterForMessageType(messageType: EBMessageType): SubscriptionDefinitionBuilder<S, C>

Adds a filter to match specific message type.

filterPrincipalId

Method

Source
filterPrincipalId.ts typescript
filterPrincipalId<T>(principalId: NonEmptyString<T>): SubscriptionDefinitionBuilder<S, C>

Filter messages only for principalId

filterReceivedBy

Method

Source
filterReceivedBy.ts typescript
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

Source
filterSentFrom.ts typescript
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

Source
filterTenantId.ts typescript
filterTenantId<T>(tenantId: NonEmptyString<T>): SubscriptionDefinitionBuilder<S, C>

Filter messages only for tenantId

getDefinition

Method

Source
getDefinition.ts typescript
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

Source
getSubscriptionFunction.ts typescript
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

Source
getSubscriptionFunctionPlain.ts typescript
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

Source
getSubscriptionTransformContextMock.ts typescript
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

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

Return the transform input function

getTransformOutputFunction

Method

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

Return the transform output function

markAsDeprecated

Method

Source
markAsDeprecated.ts typescript
markAsDeprecated(): SubscriptionDefinitionBuilder<S, C>

Mark this subscription as deprecated

receiveMessageOnEveryInstance

Method

Source
receiveMessageOnEveryInstance.ts typescript
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

Source
setAfterGuardHooks.ts typescript
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

Source
setBeforeGuardHooks.ts typescript
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

Source
setSubscriptionFunction.ts typescript
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

Source
setTransformInput.ts typescript
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

Source
setTransformOutput.ts typescript
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

Source
subscribeToEvent.ts typescript
subscribeToEvent<N, V>(eventName: NonEmptyString<N>, serviceVersion?: NonEmptyString<V>): SubscriptionDefinitionBuilder<S, C>

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