CronService
Class: CronService
Defined in: packages/core/src/services/cron.service.ts:114
Cron service implementation
Webda Modda
Extends
Constructors
Constructor
new CronService(
name,params):CronService
Defined in: packages/core/src/services/service.ts:205
Create a new Service instance
Service
Parameters
name
string
The name of the service
params
The parameters block define in the configuration file
Returns
CronService
Inherited from
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any> ={}
Defined in: packages/core/src/services/iservice.ts:61
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: packages/core/src/services/service.ts:179
Set the Webda events here
Inherited from
crons
crons:
CrontabEntry[] =[]
Defined in: packages/core/src/services/cron.service.ts:122
Crons
crontabSchedule
crontabSchedule: (
cron,cb) =>object=schedule
Defined in: packages/core/src/services/cron.service.ts:126
Crontab schedule
Parameters
cron
string
cb
() => any
Returns
object
stop
stop: () =>
any
Returns
any
enable
enable:
boolean
Defined in: packages/core/src/services/cron.service.ts:118
Whether enable is enabled
leading
protectedleading:boolean=false
Defined in: packages/core/src/services/cron.service.ts:136
Whether this instance leads and runs the tasks
logger
protectedlogger:Logger
Defined in: packages/core/src/services/service.ts:192
Logger with class context
Inherited from
metrics?
protectedoptionalmetrics?:object
Defined in: packages/core/src/services/service.ts:196
Get metrics
Inherited from
name
readonlyname:string
Defined in: packages/core/src/services/iservice.ts:35
Name
Inherited from
parameters
readonlyparameters:ServiceParameters
Defined in: packages/core/src/services/iservice.ts:39
Parameters
Inherited from
scheduled
protectedscheduled:CrontabEntry[] =[]
Defined in: packages/core/src/services/cron.service.ts:132
Crons scheduled by run, started on the cluster leader only
tasks
protectedtasks:Map<CrontabEntry, {stop: () =>any; }>
Defined in: packages/core/src/services/cron.service.ts:134
node-cron tasks running while this instance leads, by cron
unregisterLeader?
protectedoptionalunregisterLeader?: () =>void
Defined in: packages/core/src/services/cron.service.ts:138
Remove the whenLeader registration of run
Returns
void
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: packages/core/src/services/iservice.ts:44
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: packages/core/src/services/iservice.ts:49
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Parameters
staticParameters: typeofServiceParameters=ServiceParameters
Defined in: packages/core/src/services/service.ts:175
Service parameters
Inherited from
running
protectedstaticrunning:Set<CronService>
Defined in: packages/core/src/services/cron.service.ts:140
Services running the annotations and the registered crons: register adds to their live schedule
Methods
__clean()
abstract__clean():Promise<void>
Defined in: packages/core/src/services/service.ts:539
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
addAnnotations()
addAnnotations():
void
Defined in: packages/core/src/services/cron.service.ts:355
Scan all services for cron annotations and add them to the schedule (once)
Returns
void
addListener()
addListener<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:90
Add listener
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: packages/core/src/services/service.ts:400
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
the HTTP methods
executer
Function
Method to execute for this route
openapi?
the OpenAPI specification
override?
boolean = false
whether to override existing
Returns
void
Inherited from
addScheduled()
protectedaddScheduled(entry):void
Defined in: packages/core/src/services/cron.service.ts:467
Add a cron to the schedule, started at once when leading
Parameters
entry
CrontabEntry
the cron
Returns
void
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: packages/core/src/services/service.ts:353
Authorize a public event subscription
Parameters
_event
string
the event name
_context
the execution context
Returns
boolean
true if the condition is met
Inherited from
computeParameters()
computeParameters():
void
Defined in: packages/core/src/services/service.ts:214
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
emit()
emit<
Key>(event,data):Promise<void>
Defined in: packages/core/src/services/service.ts:520
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends never
Parameters
event
Key
the event name
data
object[Key]
the data to process
Returns
Promise<void>
Inherited from
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: packages/core/src/services/iservice.ts:89
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
getClientEvents()
getClientEvents():
string[]
Defined in: packages/core/src/services/service.ts:341
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
getCluster()
protectedgetCluster():Cluster
Defined in: packages/core/src/services/cron.service.ts:336
Cluster electing the instance running the crons
Returns
the application cluster
getCrontab()
getCrontab():
CrontabEntry[]
Defined in: packages/core/src/services/cron.service.ts:367
Get all registered cron entries including annotations
Returns
CrontabEntry[]
the result
getMaxListeners()
getMaxListeners():
number
Defined in: packages/core/src/events/asynceventemitter.ts:97
Returns
number
Inherited from
getMetric()
getMetric<
T>(type,configuration):T
Defined in: packages/core/src/services/service.ts:323
Add service name label
Type Parameters
T
T = Gauge<string> | Counter<string> | Histogram<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
the configuration
Returns
T
the result
Inherited from
getName()
getName():
string
Defined in: packages/core/src/services/service.ts:530
Get service name
Returns
string
the result string
Inherited from
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: packages/core/src/services/service.ts:429
Return variables for replacement in openapi
Returns
any
the result
Inherited from
Service.getOpenApiReplacements
getOperationId()
getOperationId(
id):string
Defined in: packages/core/src/services/service.ts:387
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
getParameters()
getParameters():
ServiceParameters
Defined in: packages/core/src/services/service.ts:222
Get the service parameters
Returns
the result
Inherited from
getService()
getService<
T>(name):ServicesMap[T]
Defined in: packages/core/src/services/service.ts:313
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
getState()
getState():
ServiceStates
Defined in: packages/core/src/services/service.ts:185
Get the current state
Returns
the result
Inherited from
getUrl()
getUrl(
url,_methods):string
Defined in: packages/core/src/services/service.ts:364
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
init()
init():
Promise<CronService>
Defined in: packages/core/src/services/cron.service.ts:344
Resolve the crons at startup: an invalid cron stops the application start rather than failing at its first tick
Returns
Promise<CronService>
this
Overrides
initMetrics()
initMetrics():
void
Defined in: packages/core/src/services/service.ts:303
Init the metrics
Returns
void
Inherited from
initOperations()
initOperations():
void
Defined in: packages/core/src/services/service.ts:459
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
listeners()
listeners(
eventName):Function[]
Defined in: packages/core/src/events/asynceventemitter.ts:195
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
loadCapabilities()
protectedloadCapabilities():void
Defined in: packages/core/src/services/service.ts:283
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
log()
log(
level, ...args):void
Defined in: packages/core/src/services/service.ts:561
Log operation
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
off()
off<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:152
Perform off
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
on()
on<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:128
Perform on
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
once()
once<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:116
Perform once
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
operationSchemaName()
protectedoperationSchemaName(method,side):string
Defined in: packages/core/src/services/service.ts:441
Schema of an operation side: <service name>.<method>.<side> when the application knows it, else the one the
build writes, <class>.<method>.<side>, for the class or its nearest ancestor that has it (a service configured
under another name than its class)
Parameters
method
string
the method name
side
"input" | "output"
input or output
Returns
string
the schema name
Inherited from
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: packages/core/src/events/asynceventemitter.ts:162
Remove all listeners
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:140
Remove listener
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
removeScheduled()
protectedremoveScheduled(entry):void
Defined in: packages/core/src/services/cron.service.ts:481
Remove a cron from the schedule, stopping its task
Parameters
entry
CrontabEntry
the cron
Returns
void
resolve()
resolve():
this
Defined in: packages/core/src/services/service.ts:249
Resolve parameters and load metadata. @Route-declared routes are scanned
and registered by Router.discoverRoutes(services) from Core.init()
once every service has resolved — nothing to do per-service here.
Returns
this
the result
Inherited from
run()
run(
annotations?):CancelablePromise
Defined in: packages/core/src/services/cron.service.ts:408
Schedule and start all registered cron jobs
Parameters
annotations?
boolean = true
the annotations
Returns
CancelablePromise
the result
runCron()
runCron(
id):Promise<void>
Defined in: packages/core/src/services/cron.service.ts:389
Run once the cron matching an exported cron id
Only declared crons can be run, with their declared input
Parameters
id
string
the cron id, as computed by CronService.getExportId
Returns
Promise<void>
schedule()
schedule(
cron,cb,description?):void
Defined in: packages/core/src/services/cron.service.ts:526
Register a cron expression to execute a callback, buffering if not yet enabled
Parameters
cron
string
the cron expression
cb
() => any
the callback function
description?
string = ""
the description
Returns
void
setMaxListeners()
setMaxListeners(
n):this
Defined in: packages/core/src/events/asynceventemitter.ts:104
Parameters
n
number
Returns
this
Inherited from
startTask()
protectedstartTask(entry):void
Defined in: packages/core/src/services/cron.service.ts:453
Start a node-cron task for a cron
Parameters
entry
CrontabEntry
the cron
Returns
void
startTasks()
protectedstartTasks():void
Defined in: packages/core/src/services/cron.service.ts:490
Start the tasks: this instance became the leader
Returns
void
stop()
stop():
Promise<void>
Defined in: packages/core/src/services/cron.service.ts:511
Stop running the crons
Returns
Promise<void>
Overrides
stopTasks()
protectedstopTasks():void
Defined in: packages/core/src/services/cron.service.ts:499
Stop the tasks: this instance is not the leader anymore
Returns
void
toJSON()
toJSON():
string
Defined in: packages/core/src/services/service.ts:499
Prevent service to be serialized
Returns
string
the result
Inherited from
toString()
toString():
string
Defined in: packages/core/src/services/service.ts:238
Return service representation
Returns
string
the result
Inherited from
work()
work(
annotations?):CancelablePromise
Defined in: packages/core/src/services/cron.service.ts:378
Start the cron worker, optionally including annotated crons
Parameters
annotations?
string = "true"
the annotations
Returns
CancelablePromise
the result
Annotation()
staticAnnotation(cron,description?,input?):MethodDecorator
Defined in: packages/core/src/services/cron.service.ts:149
Legacy decorator factory for annotating a method with a cron schedule
Parameters
cron
string
the cron expression
description?
string = ""
the description
input?
Record<string, any> = {}
the operation input
Returns
MethodDecorator
the result
execute()
staticexecute(cron,rethrow?):Promise<void>
Defined in: packages/core/src/services/cron.service.ts:321
Call the operation of a cron as the system, logging a failure: a failed tick never stops the next ones
Parameters
cron
the cron
rethrow?
boolean = false
reject on failure too, for a one-shot run (an exported job must exit non-zero)
Returns
Promise<void>
getCronId()
staticgetCronId(cron,name?):string
Defined in: packages/core/src/services/cron.service.ts:165
Generate a short hash-based identifier for a cron definition
It hashes the cron expression, the operation, its input and the description: renaming the method of an operation keeps the identifier
Parameters
cron
the cron expression
name?
string = ""
the name to use
Returns
string
the result
getExportId()
staticgetExportId(cron):string
Defined in: packages/core/src/services/cron.service.ts:181
Stable identifier of a cron for exported jobs (e.g. Kubernetes CronJob)
webda cron run --id <id> resolves the cron back from this identifier
Parameters
cron
the cron definition
Returns
string
the 8 hex characters identifier
loadAnnotations()
staticloadAnnotations(services):CronDefinition[]
Defined in: packages/core/src/services/cron.service.ts:251
Collect all
Parameters
services
any
the services
Returns
the list of results
Cron-annotated
methods from the provided services
Deprecated
register()
staticregister(operationId,def):CronDefinition
Defined in: packages/core/src/services/cron.service.ts:265
Register a cron calling an operation, from a source other than @Cron (a stored workflow for example)
Parameters
operationId
string
the operation called at each tick
def
the cron
cron
string
the cron expression
description?
string
the description
input?
Record<string, any>
the operation input
Returns
the registered cron
Throws
Error when the operation is unknown or the input invalid
resolveCrons()
staticresolveCrons(services?):CronDefinition[]
Defined in: packages/core/src/services/cron.service.ts:218
Resolve the
Parameters
services?
Record<string, any> = ...
the services
Returns
the crons
Cron
annotations of the services to their operations, followed by the registered crons
A @Cron must decorate an @Operation method, and its input must match the operation input schema. A cron on
an operation disabled by configuration is skipped.
Throws
Error when a @Cron is not on an operation or its input is invalid
unregister()
staticunregister(idOrOperationId):CronDefinition[]
Defined in: packages/core/src/services/cron.service.ts:306
Remove registered crons, stopping their running tasks
The @Cron annotations cannot be removed.
Parameters
idOrOperationId
string
the export id of a cron (CronService.getExportId), or an operation id to remove all its registered crons
Returns
the removed crons
validateInput()
protectedstaticvalidateInput(operationId,input):void
Defined in: packages/core/src/services/cron.service.ts:191
Validate a cron input against the input schema of its operation
Parameters
operationId
string
the operation
input
Record<string, any>
the cron input
Returns
void
Throws
Error when the input does not match the schema