Skip to content

PURISTA API


PURISTA API / @purista/core / getSubscriptionFunctionWithValidation

Function: getSubscriptionFunctionWithValidation()

getSubscriptionFunctionWithValidation<S>(fn, inputPayloadSchema, inputParameterSchema, outputPayloadSchema, beforeGuards?): (this, context, payload, parameter) => Promise<unknown>

Defined in: SubscriptionDefinitionBuilder/getSubscriptionFunctionWithValidation.impl.ts:16

Wraps a subscription handler with schema validation and guard execution. Input payload/parameter is validated before execution and output can be validated after execution.

Type Parameters

S

S extends Service<ServiceClassTypes>

Parameters

fn

SubscriptionFunction<S, unknown, unknown, unknown, any, any, any>

inputPayloadSchema

Schema | undefined

inputParameterSchema

Schema | undefined

outputPayloadSchema

Schema | undefined

beforeGuards?

Record<string, SubscriptionBeforeGuardHook<S, unknown, unknown, any, any, any>> = {}

Returns

(this, context, payload, parameter): Promise<unknown>

Parameters

this

S

context

configs

{ getConfig: ConfigGetterFunction; removeConfig: ConfigDeleteFunction; setConfig: ConfigSetterFunction; }

the config store

configs.getConfig

ConfigGetterFunction

get a config value from the config store

configs.removeConfig

ConfigDeleteFunction

delete a config value from the config store

configs.setConfig

ConfigSetterFunction

set a config value in the config store

emit

EmitCustomMessageFunction<EmptyObject>

emit a custom message

logger

Logger

the logger instance

message

Readonly<EBMessage>

the original message

resources

EmptyObject

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

secrets

{ getSecret: SecretGetterFunction; removeSecret: SecretDeleteFunction; setSecret: SecretSetterFunction; }

the secret store

secrets.getSecret

SecretGetterFunction

get a secret from the secret store

secrets.removeSecret

SecretDeleteFunction

delete a secret from the secret store

secrets.setSecret

SecretSetterFunction

set a secret in the secret store

service

EmptyObject

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)
})
startActiveSpan

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

wrap given function in an opentelemetry active span

states

{ getState: StateGetterFunction; removeState: StateDeleteFunction; setState: StateSetterFunction; }

the state store

states.getState

StateGetterFunction

get a state value from the state store

states.removeState

StateDeleteFunction

delete a state value from the state store

states.setState

StateSetterFunction

set a state value in the state store

wrapInSpan

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

wrap given function in an opentelemetry span

payload

unknown

parameter

unknown

Returns

Promise<unknown>