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
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
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
.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
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
// 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
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
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
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
