Light Dark

Functions

call core

fn (f: Fn, args: Vec): Any
fn (f: Fn): Any

Call function f with args (default empty vec). Supports both single-argument and no-argument forms.

Example

// Call a function by reference
add-fn ::hot::math/add
call(add-fn, [1, 2])  // 3

// Call with no arguments
call(::hot::math/rand)  // 0.7234...

functions-in-namespace core

fn (namespace: Namespace): Vec

Return all functions defined in namespace.

Example

fns functions-in-namespace(Namespace("::hot::math"))
// [add, sub, mul, div, ...]

namespaces core

fn (): Vec

Return all loaded namespaces.

Example

all-ns namespaces()
// [::hot::coll, ::hot::str, ::myapp::users, ...]

resolve core

fn (function-str: Str): Fn

Resolve a fully-qualified function name string to a Fn value.

Example

add-fn resolve("::hot::math/add")
call(add-fn, [1, 2])  // 3

call-event-handler

fn (event: Map): Any

Event handler: call a function specified in event data.

The once: true flag ensures this handler runs only once per event, even when multiple projects are deployed in the same environment.

schedule-cancel-event-handler

fn (event: Map): Bool

Event handler: cancel a scheduled call (one-time or recurring).

The once: true flag ensures this handler runs only once per event, even when multiple projects are deployed in the same environment.

Example

// Cancel by schedule-id
send("hot:schedule:cancel", {schedule-id: "01234567-..."})

// Cancel by function name (cancels all schedules for this function)
send("hot:schedule:cancel", {fn: "::myapp::jobs/heavy-process"})

Returns true if schedule was found and cancelled.

schedule-event-handler

fn (event: Map): Any

Event handler: execute scheduled function from event data.

The once: true flag ensures this handler runs only once per event, even when multiple projects are deployed in the same environment.

schedule-new-event-handler

fn (event: Map): Str

Event handler: create a new schedule (one-time or recurring).

The once: true flag ensures this handler runs only once per event, even when multiple projects are deployed in the same environment.

Supported schedule formats

  • ISO datetime: "2024-01-15T10:30:00Z"
  • Duration: "10 minutes", "2h", "1 day 3 hours"
  • Natural: "in 10 minutes", "2 hours from now"
  • Cron: "0 30 9 * * MON", "@daily"
  • English: "every day at 9am", "every Monday at 2 PM"

Example

// Schedule for specific time
send("hot:schedule:new", {
    fn: "::myapp::orders/process",
    args: [{order_id: "123"}],
    schedule: "2024-01-15T10:30:00Z"
})

// Schedule for 10 minutes from now
send("hot:schedule:new", {
    fn: "::myapp::reminders/send",
    args: [{user_id: user.id}],
    schedule: "in 10 minutes"
})

// Create a recurring schedule dynamically
send("hot:schedule:new", {
    fn: "::myapp::reports/daily",
    args: [],
    schedule: "every day at 9am"
})

Returns the schedule_id which can be used to cancel.