Skip to main content

CronService

@webda/core


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​

ServiceParameters

The parameters block define in the configuration file

Returns​

CronService

Inherited from​

Service.constructor

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​

Service._compiledCapabilities


[WEBDA_EVENTS]​

[WEBDA_EVENTS]: object

Defined in: packages/core/src/services/service.ts:179

Set the Webda events here

Inherited from​

Service.[WEBDA_EVENTS]


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​

protected leading: boolean = false

Defined in: packages/core/src/services/cron.service.ts:136

Whether this instance leads and runs the tasks


logger​

protected logger: Logger

Defined in: packages/core/src/services/service.ts:192

Logger with class context

Inherited from​

Service.logger


metrics?​

protected optional metrics?: object

Defined in: packages/core/src/services/service.ts:196

Get metrics

Inherited from​

Service.metrics


name​

readonly name: string

Defined in: packages/core/src/services/iservice.ts:35

Name

Inherited from​

Service.name


parameters​

readonly parameters: ServiceParameters

Defined in: packages/core/src/services/iservice.ts:39

Parameters

Inherited from​

Service.parameters


scheduled​

protected scheduled: CrontabEntry[] = []

Defined in: packages/core/src/services/cron.service.ts:132

Crons scheduled by run, started on the cluster leader only


tasks​

protected tasks: 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?​

protected optional unregisterLeader?: () => void

Defined in: packages/core/src/services/cron.service.ts:138

Remove the whenLeader registration of run

Returns​

void


createConfiguration?​

static optional createConfiguration?: (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​

Service.createConfiguration


filterConfiguration?​

static optional filterConfiguration?: (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​

Service.filterConfiguration


Parameters​

static Parameters: typeof ServiceParameters = ServiceParameters

Defined in: packages/core/src/services/service.ts:175

Service parameters

Inherited from​

Service.Parameters


running​

protected static running: 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​

Service.__clean


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​

Service.addListener


addRoute()​

protected addRoute(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​

HttpMethodType[]

the HTTP methods

executer​

Function

Method to execute for this route

openapi?​

OpenAPIWebdaDefinition = {}

the OpenAPI specification

override?​

boolean = false

whether to override existing

Returns​

void

Inherited from​

Service.addRoute


addScheduled()​

protected addScheduled(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​

OperationContext

the execution context

Returns​

boolean

true if the condition is met

Inherited from​

Service.authorizeClientEvent


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​

Service.computeParameters


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​

Service.emit


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​

Service.getCapabilities


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​

Service.getClientEvents


getCluster()​

protected getCluster(): Cluster

Defined in: packages/core/src/services/cron.service.ts:336

Cluster electing the instance running the crons

Returns​

Cluster

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​

Service.getMaxListeners


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​

MetricConfiguration<T>

the configuration

Returns​

T

the result

Inherited from​

Service.getMetric


getName()​

getName(): string

Defined in: packages/core/src/services/service.ts:530

Get service name

Returns​

string

the result string

Inherited from​

Service.getName


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​

Service.getOperationId


getParameters()​

getParameters(): ServiceParameters

Defined in: packages/core/src/services/service.ts:222

Get the service parameters

Returns​

ServiceParameters

the result

Inherited from​

Service.getParameters


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​

Service.getService


getState()​

getState(): ServiceStates

Defined in: packages/core/src/services/service.ts:185

Get the current state

Returns​

ServiceStates

the result

Inherited from​

Service.getState


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​

HttpMethodType[]

in case we need filtering (like Store)

Returns​

string

absolute url or undefined if need to skip the Route

Inherited from​

Service.getUrl


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​

Service.init


initMetrics()​

initMetrics(): void

Defined in: packages/core/src/services/service.ts:303

Init the metrics

Returns​

void

Inherited from​

Service.initMetrics


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​

Service.initOperations


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​

Service.listeners


loadCapabilities()​

protected loadCapabilities(): 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​

Service.loadCapabilities


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​

Service.log


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​

Service.off


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​

Service.on


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​

Service.once


operationSchemaName()​

protected operationSchemaName(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​

Service.operationSchemaName


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​

Service.removeAllListeners


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​

Service.removeListener


removeScheduled()​

protected removeScheduled(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​

Service.resolve


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​

Service.setMaxListeners


startTask()​

protected startTask(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()​

protected startTasks(): 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​

Service.stop


stopTasks()​

protected stopTasks(): 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​

Service.toJSON


toString()​

toString(): string

Defined in: packages/core/src/services/service.ts:238

Return service representation

Returns​

string

the result

Inherited from​

Service.toString


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()​

static Annotation(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()​

static execute(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​

CronDefinition

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()​

static getCronId(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​

CronDefinition

the cron expression

name?​

string = ""

the name to use

Returns​

string

the result


getExportId()​

static getExportId(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​

CronDefinition

the cron definition

Returns​

string

the 8 hex characters identifier


loadAnnotations()​

static loadAnnotations(services): CronDefinition[]

Defined in: packages/core/src/services/cron.service.ts:251

Collect all

Parameters​

services​

any

the services

Returns​

CronDefinition[]

the list of results

Cron-annotated​

methods from the provided services

Deprecated​

use CronService.resolveCrons


register()​

static register(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​

CronDefinition

the registered cron

Throws​

Error when the operation is unknown or the input invalid


resolveCrons()​

static resolveCrons(services?): CronDefinition[]

Defined in: packages/core/src/services/cron.service.ts:218

Resolve the

Parameters​

services?​

Record<string, any> = ...

the services

Returns​

CronDefinition[]

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()​

static unregister(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​

CronDefinition[]

the removed crons


validateInput()​

protected static validateInput(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