Function Specification

This document defines the descriptor contract loaded by bfast-function.

Discovery Rules

Function files are discovered recursively from functionsConfig.functionsDirPath and matched by extension:

Each exported value is inspected. Only exports where value is an object are registered.

Loader behavior:

Ignore patterns come from bfast.json.ignore when provided, otherwise defaults are used.

Descriptor Types

1) HTTP descriptor

Required:

Optional:

Default route behavior:

Example:

js
export const hello = {
  method: 'get',
  path: '/hello',
  onRequest: (req, res) => {
    res.status(200).send('ok');
  }
};

2) Guard descriptor (middleware)

Required:

Optional:

Path behavior:

Example:

js
export const auth = {
  path: '/',
  onGuard: (req, res, next) => {
    next();
  }
};

3) Socket event descriptor

Required:

Behavior:

request shape:

response helpers:

Example:

js
export const chat = {
  name: '/chat',
  onEvent: ({ body }, response) => {
    response.announce({ message: body?.message });
  }
};

4) Scheduled job descriptor

Required:

Example:

js
export const everyMinute = {
  rule: '* * * * *',
  onJob: () => {
    console.log('tick');
  }
};

Built-in descriptors

The runtime adds two built-ins automatically:

View source on GitHub ↗ · synced 2026-10-19 09:39 UTC