Skip to content

PURISTA API


PURISTA API / @purista/core / CommandDefinitionBuilder

Class: CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:40

Command definition builder is a helper to create and define a command for a service. It helps to set all needed information like schemas and hooks. With these information, the types are automatically set and extended.

A working schema definition needs at least a command name, a short description and the function implementation.

Type Parameters

S

S extends Service

C

C extends CommandDefinitionBuilderTypes = CommandDefinitionBuilderTypes

Constructors

Constructor

new CommandDefinitionBuilder<S, C>(commandName, commandDescription, eventName?, deprecated?): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:100

Parameters

commandName

string

commandDescription

string

eventName?

string

deprecated?

boolean = false

Returns

CommandDefinitionBuilder<S, C>

Methods

addOpenApiErrorStatusCodes()

addOpenApiErrorStatusCodes(...codes): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:383

If a function can return other status codes, than the default ones, you should add them to openApi definition. By default, 200, 204, 400, 401 and 500 can be autogenerated in most cases. Special cases or different status codes should be added with this function.

Parameters

codes

...StatusCode[]

List of status codes

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Example

ts
addErrorStatusCodes(StatusCode.PaymentRequired, StatusCode.Conflict)

addOpenApiTags()

addOpenApiTags(...tags): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:365

Add tags for openApi definition for given function. It is recommended to use some enum for tags to avoid typo issues.

Parameters

tags

...string[]

List of tag strings

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Example

ts
addTags('User','Public')

addOutputSchema()

addOutputSchema<OutputSchema>(outputSchema, outputContentType?, outputContentEncoding?): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], OutputSchema, C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:293

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

outputSchema

OutputSchema

The schema validation for output payload

outputContentType?

string

optional the content type of payload

outputContentEncoding?

string

optional the content encoding

Returns

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], OutputSchema, C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

CommandDefinitionBuilder


addParameterSchema()

addParameterSchema<ParamsSchema>(parameterSchema): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], ParamsSchema, C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:267

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 schema validation for output parameter

Returns

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], ParamsSchema, C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

CommandDefinitionBuilder


addPayloadSchema()

addPayloadSchema<PayloadSchema>(inputSchema, inputContentType?, inputContentEncoding?): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<PayloadSchema, C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:237

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 schema validation for input payload

inputContentType?

string

optional the content type of payload

inputContentEncoding?

string

optional the content encoding

Returns

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<PayloadSchema, C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

CommandDefinitionBuilder


addQueryParameters()

addQueryParameters(...queryParams): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:348

Define query parameters if you expose the function as http endpoint. Query parameters are add to openApi definition. Query parameters are add to input parameters.

Parameters

queryParams

...QueryParameter<Infer<C["ParamsSchema"]>>[]

Add one or more query parameter definitions

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Example

ts
.addQueryParameters(
  {
    required: false,
    name: 'search',
  },
  {
    required: false,
    name: 'limit',
  },
)

adviceAutoacknowledgeMessages()

adviceAutoacknowledgeMessages(acknowledge?): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:809

Instruct the event bridge message broker to autoacknowledge commands as soon as they arrive. This means, a message will not be resent, if the command execution fails unexpected.

If set to false, the command message will be resent from message broker to eventbridge, if:

  • the underlaying message broker supports it
  • if the command execution fails unexpected
  • if sending of command response failed

Parameters

acknowledge?

boolean = true

Enable (true) and disable (false)

Returns

CommandDefinitionBuilder<S, C>

CommandDefinition


canEmit()

canEmit<EventName, T>(eventName, schema): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"] & Record<EventName, InferIn<T>>>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:195

Define which custom events the command 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

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<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?): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<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: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:119

Define a command which can be invoked by the current command

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

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<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"]>>


disableHttpSecurity()

disableHttpSecurity(disabled?): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:678

enable or disable security for this endpoint

Parameters

disabled?

boolean = true

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Deprecated

Use makeEndpointPublic() instead.


enableHttpSecurity()

enableHttpSecurity(enabled?): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:667

enable or disable security for this endpoint

Parameters

enabled?

boolean = true

Defaults to true if not set means "enable security"

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


exposeAsHttpEndpoint()

exposeAsHttpEndpoint(method, path, contentTypeRequest?, contentEncodingRequest?, contentTypeResponse?, contentEncodingResponse?): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:639

Mark the function to be exposed as http endpoint.

Api url prefix and service version are prepended automatically

For exposing a url like: /api/V1/user/login simply provide user/loginas path

Parameters

method

SupportedHttpMethod

Http method POST, PUT, PATCH, GET, DELETE

path

string

The url path

contentTypeRequest?

string

input content type defaults to application/json

contentEncodingRequest?

string

input content encoding defaults to utf-8

contentTypeResponse?

string

input content type defaults to application/json

contentEncodingResponse?

string

input content encoding defaults to utf-8

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


getAfterGuardHook()

getAfterGuardHook(name): CommandAfterGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, Infer<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:610

Returns the after guard hook corresponding to the provided name.

Parameters

name

string

The name of the hook.

Returns

CommandAfterGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, Infer<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

The after guard hook, or undefined if not found.


getBeforeGuardHook()

getBeforeGuardHook(name): CommandBeforeGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:563

Get the before guard hook for this command.

Parameters

name

string

The name of the before guard to retrieve.

Returns

CommandBeforeGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

The before guard hook, or undefined if not found.


getCommandContextMock()

getCommandContextMock<MessagePayloadType, MessageParamsType, FunctionPayloadType, FunctionParamsType>(input): object

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:983

Type Parameters

MessagePayloadType

MessagePayloadType = GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>

MessageParamsType

MessageParamsType = GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>

FunctionPayloadType

FunctionPayloadType = InferIn<C["PayloadSchema"]>

FunctionParamsType

FunctionParamsType = InferIn<C["ParamsSchema"]>

Parameters

input
message?

{ parameter: MessageParamsType; payload: MessagePayloadType; }

message.parameter

MessageParamsType

message.payload

MessagePayloadType

parameter

FunctionParamsType

payload

FunctionPayloadType

resources?

Partial<C["Resources"]>

sandbox?

SinonSandbox

Returns

object

a mocked command 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<Command<MessagePayloadType, MessageParamsType>>

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 command builder
.canInvoke('ServiceA', '1', 'test', responseOutputSchema, 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>


getCommandFunction()

getCommandFunction<T>(input?): CommandFunction<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:929

Get the function implementation including input and output validation. Also, before hooks are triggered during execution. Before guards can be optional overwritten by optional input parameter.

Type Parameters

T

T = Record<string, CommandBeforeGuardHook<S, any, any, any, any, C["Resources"], C["Invokes"], C["EmitList"]>>

Parameters

input?

Overwrite beforeGuards

beforeGuards?

Partial<T>

Returns

CommandFunction<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

the function


getCommandFunctionPlain()

getCommandFunctionPlain(): CommandFunction<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:958

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

Returns

CommandFunction<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

the function


getCommandTransformContextMock()

getCommandTransformContextMock(input): object

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:1019

Returns a mocked transform function context, which can be used in unit tests.

Parameters

input
parameter

GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>

payload

GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>

resources?

Partial<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<Command<PayloadType, ParameterType>>

the original message

mock.resources

resources: C["Resources"]

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<C["Resources"]>

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>


getDefinition()

getDefinition(): Promise<Complete<CommandDefinition<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, 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"], CommandDefinitionMetadataBase>>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:818

Creates and returns the CommandDefinition used as input for the service.

Returns

Promise<Complete<CommandDefinition<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, 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"], CommandDefinitionMetadataBase>>>

CommandDefinition


getTransformInputFunction()

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

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:444

Return the transform input function

Returns

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

the input transform function if defined


getTransformOutputFunction()

getTransformOutputFunction(): CommandTransformOutputHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["TransformOutputSchema"]>, C["Resources"]> | undefined

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:513

Return the transform output function

Returns

CommandTransformOutputHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["TransformOutputSchema"]>, C["Resources"]> | undefined

the transform output function if defined


makeEndpointPublic()

makeEndpointPublic(): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:688

Mark the endpoint to be public available. No security check like bearer token or basic auth is required to access the endpoint.

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


markAsDeprecated()

markAsDeprecated(): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:321

Mark this endpoint/command as deprecated

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


setAfterGuardHooks()

setAfterGuardHooks(afterGuards): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:582

Set one or more after guard hook(s). If there are multiple after guard hooks, they are executed in parallel

Parameters

afterGuards

Record<string, CommandAfterGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, Infer<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>>

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


setBeforeGuardHooks()

setBeforeGuardHooks(beforeGuards): CommandDefinitionBuilder<S, C>

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

Set one or more before guard hook(s). If there are multiple before guard hooks, they are executed in parallel

Parameters

beforeGuards

Record<string, CommandBeforeGuardHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>>

Object of key = name of guard, value = function

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


setCommandFunction()

setCommandFunction(fn): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:901

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

CommandFunction<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["PayloadSchema"]>, Infer<C["ParamsSchema"]>, InferIn<C["OutputSchema"]>, C["Resources"], C["Invokes"], C["EmitList"]>

the function implementation

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Example

ts
async function (context, payload, parameter) {

   return `the result output payload`
}

setOpenApiOperationId()

setOpenApiOperationId(operationId): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:714

Set the operationId for openApi documentation

Parameters

operationId

string

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder


setOpenApiSummary()

setOpenApiSummary(summary): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:704

Set the function summary text used for example in openApi documentation

Parameters

summary

string

Summary text

Returns

CommandDefinitionBuilder<S, C>

CommandDefinitionBuilder

Example

ts
setSummary('Some function summary')

setSuccessEventName()

setSuccessEventName<N>(eventName): CommandDefinitionBuilder<S, C>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:224

Type Parameters

N

N extends string

Parameters

eventName

NonEmptyString<N>

Returns

CommandDefinitionBuilder<S, C>


setTransformInput()

setTransformInput<TransformInputPayloadSchema, TransformInputParamsSchema>(transformInputSchema, transformParameterSchema, transformFunction, inputContentType?, inputContentEncoding?): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], TransformInputPayloadSchema, TransformInputParamsSchema, C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:399

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

CommandTransformInputHook<S, InferIn<TransformInputPayloadSchema>, InferIn<TransformInputParamsSchema>, Infer<TransformInputPayloadSchema>, Infer<TransformInputParamsSchema>, InferIn<C["PayloadSchema"]>, InferIn<C["ParamsSchema"]>, C["Resources"]>

Transform input function

inputContentType?

string

optional the content type of payload

inputContentEncoding?

string

optional the content encoding

Returns

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], TransformInputPayloadSchema, TransformInputParamsSchema, C["TransformOutputSchema"], C["Resources"], C["Invokes"], C["EmitList"]>>

CommandDefinitionBuilder


setTransformOutput()

setTransformOutput<TransformOutputSchema>(transformOutputSchema, transformFunction, outputContentType?, outputContentEncoding?): CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], TransformOutputSchema, C["Resources"], C["Invokes"], C["EmitList"]>>

Defined in: CommandDefinitionBuilder/CommandDefinitionBuilder.impl.ts:471

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

CommandTransformOutputHook<S, GetMessagePayloadType<C["PayloadSchema"], C["TransformInputPayloadSchema"]>, GetMessageParamsType<C["ParamsSchema"], C["TransformInputParamsSchema"]>, Infer<C["OutputSchema"]>, Infer<C["ParamsSchema"]>, InferIn<TransformOutputSchema>, C["Resources"]>

Transform output function

outputContentType?

string

optional the content type of payload

outputContentEncoding?

string

optional the content encoding

Returns

CommandDefinitionBuilder<S, CommandDefinitionBuilderTypes<C["PayloadSchema"], C["ParamsSchema"], C["OutputSchema"], C["TransformInputPayloadSchema"], C["TransformInputParamsSchema"], TransformOutputSchema, C["Resources"], C["Invokes"], C["EmitList"]>>

CommandDefinitionBuilder