Task
Type parameters
▪ T: SuperConstructor
Hierarchy
Entity
↳ Task
Implements
- Stateful
- Definable
- Hookable
- Ejsonable
- Statusful
- Entity
Index
Constructors
Properties
Accessors
Methods
- [ROLLBACK_STATE_METHOD_KEY]
- [SAVE_STATE_METHOD_KEY]
- accept
- changePriority
- complete
- decline
- equals
- expire
- getActions
- getHook
- getHookOrThrow
- getHooks
- getId
- getLegacyTransformer
- getLegacyTransformers
- getPropTypes
- getPropertyInitializers
- getSchemaVersion
- getSelectableStates
- getSelectableStatuses
- getState
- getStatus
- getTypeName
- hasAction
- hasHook
- hasLegacyTransformer
- hasState
- hasStatus
- hold
- in
- isInOneOfStates
- isInOneOfStatuses
- isInState
- isInStatus
- isStateSaved
- on
- overrideHook
- overrideLegacyTransformer
- postpone
- processSerializableList
- quit
- registerHook
- registerLegacyTransformer
- removeHook
- setState
- setStatus
- start
- toJSONValue
- toPlainObject
- toString
- transformLegacyProps
- typeName
- validateProps
- validateState
- validateStatus
- disableSerializableLists
- enableSerializableLists
- from
- getPropTypes
- getPropertyInitializers
- getTypeName
- toString
- typeName
Object literals
Constructors
constructor
+ new Task(props
: EntityType‹Task›): Task
Overrides void
Parameters:
Name | Type |
---|---|
props | EntityType‹Task› |
Returns: Task
Properties
Optional
declineReason
• declineReason? : string
Optional
expireAt
• expireAt? : Date
id
• id: string | Guid
name
• name: string
Optional
postponeReason
• postponeReason? : string
Optional
postponedAt
• postponedAt? : Date
priority
• priority: 0 | 1 | 2 | 3
Optional
schemaVersion
• schemaVersion? : number
Inherited from Task.schemaVersion
Overrides CreateEmployee.schemaVersion
state
• state: State
Overrides void
status
• status: Status
Overrides void
Accessors
ableTo
• get ableTo(): this
Method to enforce TypeScript compliance with Asserter
and AbilityAssertion
.
Returns: this
can
• get can(): any
Evaluates if action can be taken on Entity
.
Prior to invocation of any non-assertion methods snapshot of current state
is done - that will be automatically rollbacked after method execution.
Proxified instance wraps the executed method and ensures that boolean is
returned as result indicating if method indeed can be executed(true
) - or
fail with thrown error(false
)
Returns: any
Proxified instance of Entity
.
ensure
• get ensure(): this & object
Exposes the ensure
BDD assertion for Entity
.
remarks
The entity.ensure
getter-method will return a Proxified instance of the
Entity
. This proxified instance listens to all get methods and
catches the requested method name.
If the requested get method/property name matches exactly or partially
one of registered apis on Asserter
(like: is
) it returns associated
object assigned to that assertion. Like for example - for registered
AbilityAssertion
, calling entity with:
Will result with returned object:
That can be called like:
Same rules of behavior will apply to other assertions like:
StatefulAssertion
, StatusfulAssertion
.
However, since we want to enable an expressive apis on Entities - we allow users to defined their own apis. By calling:
A backup of the entity state will be created that will be rollbacked directly * after the invocation of the method(and that will happen automatically)
(it behaves exactly like ensure.is.ableTo
assertion from AbilityAssertion
)
This allows for evaluation of state change on command handlers directly without writing unnecessary duplicated code that would ensure that state indeed can be changed(first method) and then actually change it(second method).
Returns: this & object
Proxified instance of Entity
.
is
• get is(): this & object
Method to enforce TypeScript compliance with Asserter
and AbilityAssertion
.
Returns: this & object
Methods
[ROLLBACK_STATE_METHOD_KEY]
▸ [ROLLBACK_STATE_METHOD_KEY](): void
Inherited from Task.[ROLLBACK_STATE_METHOD_KEY]
Rollbacks entity to previous state.
throws
{SavedStateNotFoundError}
Thrown if rollback is done on Entity
without prior saved state.
Returns: void
[SAVE_STATE_METHOD_KEY]
▸ [SAVE_STATE_METHOD_KEY](): void
Inherited from Task.[SAVE_STATE_METHOD_KEY]
Saves current entity state.
Returns: void
accept
▸ accept(): void
Returns: void
changePriority
▸ changePriority(priority
: 0 | 1 | 2 | 3): void
Parameters:
Name | Type |
---|---|
priority | 0 | 1 | 2 | 3 |
Returns: void
complete
▸ complete(): void
Returns: void
decline
▸ decline(declineReason
: string): void
Parameters:
Name | Type |
---|---|
declineReason | string |
Returns: void
equals
▸ equals(otherEntity
: Entity): boolean
Overrides CreateEmployee.equals
Evaluates if one entity is equal to other by its constructor and identifier.
Parameters:
Name | Type | Description |
---|---|---|
otherEntity | Entity | Other Entity instance. |
Returns: boolean
Returns true
if both Entities instances are equal, else false
.
expire
▸ expire(): void
Returns: void
getActions
▸ getActions(): Actions
Inherited from CreateEmployee.getActions
Returns a collection of all available actions with matching registered hooks as nested collection.
Returns: Actions
Collection of actions(key) with matching registered hooks as nested collection(value).
getHook
▸ getHook(action
: string, id
: string): Hook | undefined
Inherited from CreateEmployee.getHook
Returns hook for action and id.
example
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook is resolved. |
id | string | Identifier under which hook was was registered. |
Returns: Hook | undefined
Hook as a function
matching declaration, else undefined
.
getHookOrThrow
▸ getHookOrThrow(action
: string, id
: string): Hook
Inherited from CreateEmployee.getHookOrThrow
Returns hook for action and id or throws.
throws
{HandlerNotFoundError}
Thrown if there is no hook registered for action with id.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook is resolved. |
id | string | Identifier under which hook was was registered. |
Returns: Hook
Hook as a function
matching declaration, else throws.
getHooks
▸ getHooks(action
: string): Mappings
Inherited from CreateEmployee.getHooks
Returns a collection of all available hooks registered for action.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hooks are resolved. |
Returns: Mappings
Collection of hooks.
getId
▸ getId(): string | Guid
Returns identifier for Entity.
Returns: string | Guid
Entities identifier as Guid
instance or string.
getLegacyTransformer
▸ getLegacyTransformer(schemaVersion
: number): Hook
Inherited from CreateEmployee.getLegacyTransformer
Returns legacy transformer for schema version.
throws
{LegacyTransformerNotFoundError}
Thrown if transformer for schema version can't be found.
Parameters:
Name | Type | Description |
---|---|---|
schemaVersion | number | Schema version. |
Returns: Hook
Legacy transformer for schema version.
getLegacyTransformers
▸ getLegacyTransformers(): LegacyTransformers
Inherited from CreateEmployee.getLegacyTransformers
Returns all available legacy transformers.
Returns: LegacyTransformers
Map instance of all registered legacy transformers with number version as a key and transformer function as a value.
getPropTypes
▸ getPropTypes(): Props
Inherited from CreateEmployee.getPropTypes
Returns class properties types from whole inheritance tree.
example
Returns: Props
Plain object representation of properties types.
getPropertyInitializers
▸ getPropertyInitializers(): Props
Inherited from CreateEmployee.getPropertyInitializers
Returns default values metadata from property initializers conversion for whole inheritance tree.
example
Returns: Props
Default values for properties.
getSchemaVersion
▸ getSchemaVersion(): number | undefined
Inherited from CreateEmployee.getSchemaVersion
Returns current instance schema version.
Returns: number | undefined
Schema version as a number, else undefined
.
getSelectableStates
▸ getSelectableStates(): Record‹string, State›
Inherited from Task.getSelectableStates
Returns all selectable states.
Returns: Record‹string, State›
Collection of available states.
getSelectableStatuses
▸ getSelectableStatuses(): Record‹string, Status›
Inherited from Task.getSelectableStatuses
Returns all selectable status.
Returns: Record‹string, Status›
Collection of available status.
getState
▸ getState(): State
Returns current state of instance.
Returns: State
Current state of instance as string
.
getStatus
▸ getStatus(): Status
Returns current status of instance.
Returns: Status
Current status of instance as string
.
getTypeName
▸ getTypeName(): TypeName
Inherited from CreateEmployee.getTypeName
Returns definable type name.
Returns: TypeName
Type name as a string.
hasAction
▸ hasAction(action
: string): boolean
Inherited from CreateEmployee.hasAction
Evaluates if hooks for action are registered.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook is existence is evaluated. |
Returns: boolean
Returns true if hooks for action exists, else false.
hasHook
▸ hasHook(action
: string, id
: string): boolean
Inherited from CreateEmployee.hasHook
Evaluates if hook for action with id is registered.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook is existence is evaluated. |
id | string | Identifier under which hook was was registered. |
Returns: boolean
Returns true if hook exists, else false.
hasLegacyTransformer
▸ hasLegacyTransformer(schemaVersion
: number): boolean
Inherited from CreateEmployee.hasLegacyTransformer
Evaluates is there is registered legacy transformer for schema version.
Parameters:
Name | Type | Description |
---|---|---|
schemaVersion | number | Schema version. |
Returns: boolean
Returns true
if legacy transformer for schema version is registered, else false
.
hasState
▸ hasState(): boolean
Evaluates if target has state set on instance(is not nil
).
Returns: boolean
Returns true
if instance has state set(not nil
), else false
.
hasStatus
▸ hasStatus(): boolean
Evaluates if target has status set on instance(is not nil
).
Returns: boolean
Returns true
if instance has status set(not nil
), else false
.
hold
▸ hold(): void
Returns: void
in
▸ in‹T›(listName
: string): List‹T›
Inherited from CreateEmployee.in
Returns List
for Serializable
array.
throws
{InvalidListError}
Thrown if the provided container name does not point to list of supported Serializables
.
example
Type parameters:
▪ T
Parameters:
Name | Type | Description |
---|---|---|
listName | string | Property name of the Serializable list on this instance. |
Returns: List‹T›
Instance of List
implementation.
isInOneOfStates
▸ isInOneOfStates(states
: State | State[]): boolean
Inherited from Task.isInOneOfStates
Evaluates if target is in one of expected state.
Parameters:
Name | Type | Description |
---|---|---|
states | State | State[] | Expected states in which one of instance should be. |
Returns: boolean
Returns true if instance is in one of states, else false.
isInOneOfStatuses
▸ isInOneOfStatuses(status
: Status | Status[]): boolean
Inherited from Task.isInOneOfStatuses
Evaluates if target is in one of expected status.
Parameters:
Name | Type | Description |
---|---|---|
status | Status | Status[] | Expected status in which one of instance should be. |
Returns: boolean
Returns true if instance is in one of status, else false.
isInState
▸ isInState(state
: State | State[]): boolean
Evaluates if target is in expected state.
Parameters:
Name | Type | Description |
---|---|---|
state | State | State[] | Expected state in which instance should be. |
Returns: boolean
Returns true
if instance is in state, else false
.
isInStatus
▸ isInStatus(status
: Status | Status[]): boolean
Inherited from Task.isInStatus
Evaluates if target is in expected status.
Parameters:
Name | Type | Description |
---|---|---|
status | Status | Status[] | Expected status in which instance should be. |
Returns: boolean
Returns true
if instance is in status, else false
.
isStateSaved
▸ isStateSaved(): boolean
Inherited from Task.isStateSaved
Evaluates if state of entity is saved.
Returns: boolean
Returns true
if state of entity is saved, else false
.
on
▸ on(action
: string | Stringifiable): this
Sets current action for asserting state of Entity
.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Stringifiable | Name of action to be taken or Command that is handled. |
Returns: this
Instance implementing Asserter
interface.
overrideHook
▸ overrideHook(action
: string, id
: string, hook
: Hook): void
Inherited from CreateEmployee.overrideHook
Overrides registered hook by action and id or registers a new one.
throws
{InvalidHookActionError}
Thrown if the the action argument is not a string
.
throws
{InvalidHookIdError}
Thrown if the the id argument is not a string
.
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook will be registered(like onConstruction , onSend , onPublish etc.) |
id | string | Identifier under which hook will be registered for further reference. |
hook | Hook | Hook as a function matching declaration for required action that will be invoked upon action. |
Returns: void
overrideLegacyTransformer
▸ overrideLegacyTransformer(schemaVersion
: number, transformer
: Hook): void
Inherited from CreateEmployee.overrideLegacyTransformer
Overrides registered transformer by schema version or registers a new one.
throws
{InvalidSchemaVersionError}
Thrown if the the schema version argument is not a number.
Parameters:
Name | Type | Description |
---|---|---|
schemaVersion | number | Schema version. |
transformer | Hook | Transformer function. |
Returns: void
postpone
▸ postpone(postponedAt
: Date): void
Parameters:
Name | Type |
---|---|
postponedAt | Date |
Returns: void
processSerializableList
▸ processSerializableList(props
: Props): Props
Inherited from CreateEmployee.processSerializableList
Processes properties for Serializable by wrapping each serializable list property with List
.
Parameters:
Name | Type | Default | Description |
---|---|---|---|
props | Props | {} | Properties of the type required for construction. |
Returns: Props
Processed properties with any registered onConstruction
hooks and
validates them against prop types.
quit
▸ quit(): void
Returns: void
registerHook
▸ registerHook(action
: string, id
: string, hook
: Hook, shouldOverride
: boolean): void
Inherited from CreateEmployee.registerHook
Registers hook by action type and id.
throws
{InvalidHookActionError}
Thrown if the the action argument is not a string.
throws
{InvalidHookIdError}
Thrown if the the id argument is not a string.
throws
{HookAlreadyExistsError}
Thrown if the existing hook with id would be overridden.
example
Parameters:
Name | Type | Default | Description |
---|---|---|---|
action | string | - | Action for which hook will be registered(like onConstruction , onSend , onPublish etc.) |
id | string | - | Identifier under which hook will be registered for further reference. |
hook | Hook | - | Hook as a function matching declaration for required action that will be invoked upon action. |
shouldOverride | boolean | false | Flag indicating that hook should be overridden if exist. |
Returns: void
registerLegacyTransformer
▸ registerLegacyTransformer(schemaVersion
: number, transformer
: Hook, shouldOverride
: boolean): void
Inherited from CreateEmployee.registerLegacyTransformer
Registers legacy transformer for version.
throws
{InvalidSchemaVersionError}
Thrown if the the schema version argument is not a number.
throws
{LegacyTransformerAlreadyExistsError}
Thrown if transformer for version would overridden without explicit call.
Parameters:
Name | Type | Default | Description |
---|---|---|---|
schemaVersion | number | - | Schema version. |
transformer | Hook | - | Transformer function. |
shouldOverride | boolean | false | Flag indicating that transformer should be overridden if exist. |
Returns: void
removeHook
▸ removeHook(action
: string, id
: string): void
Inherited from CreateEmployee.removeHook
Removes a hook by action and id.
example
Parameters:
Name | Type | Description |
---|---|---|
action | string | Action for which hook is removed. |
id | string | Identifier under which hook was was registered. |
Returns: void
setState
▸ setState(state
: State): void
Sets instance state.
throws
{ValidationError}
Thrown if the provided state does not match one of the selectable states.
throws
{UndefinedStatesError}
Thrown if the instance does not have any states assigned.
Parameters:
Name | Type | Description |
---|---|---|
state | State | State to which instance should be set. |
Returns: void
setStatus
▸ setStatus(status
: Status): void
Sets instance status.
throws
{ValidationError}
Thrown if the provided status does not match one of the selectable status.
throws
{UndefinedStatusesError}
Thrown if the instance does not have any status assigned.
Parameters:
Name | Type | Description |
---|---|---|
status | Status | Status to which instance should be set. |
Returns: void
start
▸ start(): void
Returns: void
toJSONValue
▸ toJSONValue(): Record‹string, any›
Inherited from CreateEmployee.toJSONValue
Serializes value into a JSON-compatible value. It preserves all custom field types, however the initial value type is not saved.
example
Returns: Props
Public properties with assigned values as plain object.
toString
▸ toString(): TypeName
Inherited from CreateEmployee.toString
Returns definable type name
Returns: TypeName
Type name as a string.
transformLegacyProps
▸ transformLegacyProps(props
: Props): Props
Inherited from CreateEmployee.transformLegacyProps
Registrable hook for transforming legacy schema.
Parameters:
Name | Type | Description |
---|---|---|
props | Props | Properties object to be transformed. |
Returns: Props
Transformed legacy properties or their unchanged state if up to date.
typeName
▸ typeName(): TypeName
Inherited from CreateEmployee.typeName
alias
getTypeName
remarks
Compatibility for EJSON serializer: @eveble/ejson
Returns: TypeName
validateProps
▸ validateProps(props
: Props, propTypes
: PropTypes, isStrict
: boolean): boolean
Inherited from CreateEmployee.validateProps
Validates if provided properties matches prop types.
throws
{ValidationError}
Thrown if the passed properties do not match prop types.
remarks
Disabling of runtime validation is possible via Kernel's configuration(and by
that env flags also) or by annotating class with @validable(false)
.
This is useful when there is external layer(like transportation) that does all the heavy lifting of validation and there are no other sources of incoming data beside points that is handled by layer.
Use env EVEBLE_VALIDATION_TYPE
set to manual
to disable validation on
initialization. You ca re-enable it again on your application configuration via
path validation.type
set to runtime
before staring application.
example
Parameters:
Name | Type | Default | Description |
---|---|---|---|
props | Props | {} | Properties to validate. |
propTypes | PropTypes | - | Properties types. |
isStrict | boolean | true | Flag indicating that validation should be done in strict mode. |
Returns: boolean
Returns true
if properties are valid, else throws.
validateState
▸ validateState(stateOrStates
: State | State[], error?
: Error): boolean
Inherited from Task.validateState
Validates if instance is in allowed state(s).
throws
{InvalidStateError}
Thrown if target is not in correct(one of allowed) state.
Parameters:
Name | Type | Description |
---|---|---|
stateOrStates | State | State[] | Expected states list in one of which instance should be. |
error? | Error | Optional error instance for case where state does not match expected one. |
Returns: boolean
Returns true
if instance is in correct state, else throws.
validateStatus
▸ validateStatus(statusOrStatuses
: Status | Status[], error?
: Error): boolean
Inherited from Task.validateStatus
Validates if instance is in allowed status(s).
throws
{InvalidStatusError}
Thrown if target is not in correct(one of allowed) status.
Parameters:
Name | Type | Description |
---|---|---|
statusOrStatuses | Status | Status[] | Expected status list in one of which instance should be. |
error? | Error | Optional error instance for case where status does not match expected one. |
Returns: boolean
Returns true
if instance is in correct status, else throws.
Static
disableSerializableLists
▸ disableSerializableLists(): void
Inherited from CreateEmployee.disableSerializableLists
Disables conversion of serializable lists to List
instances.
Returns: void
Static
enableSerializableLists
▸ enableSerializableLists(): void
Inherited from CreateEmployee.enableSerializableLists
Enables conversion of serializable lists to List
instances.
remarks
Since using mixins with polytype on extendable classes like: Serializable
, Entity
,
EventSourceable
, ValueObject
will result in loosing all registered hooks on metadata
- this ensures that hook can be easily re-applied.
Returns: void
Static
from
▸ from(...sources
: Record‹string, any›[]): any
Inherited from CreateEmployee.from
Create an Serializable
from multiple property sources. Have similar api
like Object.assign
.
throws
{ValidationError}
Thrown if the passed properties does not match serializeble's property types.
example
Parameters:
Name | Type | Description |
---|---|---|
...sources | Record‹string, any›[] | One or more source of properties. |
Returns: any
New instance of Serializable
with assigned properties.
Static
getPropTypes
▸ getPropTypes(): Props
Inherited from CreateEmployee.getPropTypes
Returns class properties types from whole inheritance tree.
example
Returns: Props
Plain object representation of properties types.
Static
getPropertyInitializers
▸ getPropertyInitializers(): Props
Inherited from CreateEmployee.getPropertyInitializers
Returns class property initializers for whole inheritance tree.
example
Returns: Props
Plain object representation of property initializers.
Static
getTypeName
▸ getTypeName(): TypeName
Inherited from CreateEmployee.getTypeName
Returns definable type name.
Returns: TypeName
Type name as a string.
Static
toString
▸ toString(): TypeName
Inherited from CreateEmployee.toString
Returns definable type name
Returns: TypeName
Type name as a string.
Static
typeName
▸ typeName(): TypeName
Inherited from CreateEmployee.typeName
alias
getTypeName
remarks
Compatibility for EJSON serializer: @eveble/ejson
Returns: TypeName
Object literals
Static
STATES
▪ STATES: object
accepted
• accepted: string = "accepted"
completed
• completed: string = "completed"
created
• created: string = "created"
declined
• declined: string = "declined"
expired
• expired: string = "expired"
hold
• hold: string = "hold"
postponed
• postponed: string = "postponed"
quitted
• quitted: string = "quitted"
started
• started: string = "started"