Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

@sms/host-cloudflare

Interfaces

CloudflareApp

Defined in: packages/drivers/host/cloudflare/src/index.ts:72

Type Parameters

Type Parameter
Env

Properties

DurableObject
DurableObject: (state, env) => {
  fetch: Promise<Response>;
};

Defined in: packages/drivers/host/cloudflare/src/index.ts:78

The Durable Object class: export { TenantKernel } under the name in wrangler.toml.

Parameters
ParameterType
stateDurableObjectStateLike
envEnv
Returns
{
  fetch: Promise<Response>;
}
fetch()
fetch(request): Promise<Response>;
Parameters
ParameterType
requestRequest
Returns

Promise<Response>

Methods

fetch()
fetch(request, env): Promise<Response>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:74

The Worker’s fetch handler: export default { fetch, scheduled }.

Parameters
ParameterType
requestRequest
envEnv
Returns

Promise<Response>

scheduled()
scheduled(event, env): Promise<Record<string, unknown>>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:76

The Worker’s cron handler: ticks every tenant from opts.tenants, in parallel. Returns per-tenant results.

Parameters
ParameterType
eventScheduledEventLike
envEnv
Returns

Promise<Record<string, unknown>>


CloudflareAppOptions

Defined in: packages/drivers/host/cloudflare/src/index.ts:39

Type Parameters

Type Parameter
Env

Properties

binding
binding: keyof Env & string;

Defined in: packages/drivers/host/cloudflare/src/index.ts:48

Name of the Durable Object binding in wrangler.toml, e.g. TENANT.

onMissing?
optional onMissing?: (request) => Response | Promise<Response>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:62

Response for requests with no tenant. Default 400.

Parameters
ParameterType
requestRequest
Returns

Response | Promise<Response>

resolve
resolve: (request, env) => string | Promise<string | undefined> | undefined;

Defined in: packages/drivers/host/cloudflare/src/index.ts:41

Which tenant a request belongs to (header, subdomain, path, JWT…). env is there for ROOT_DOMAIN-style config.

Parameters
ParameterType
requestRequest
envEnv
Returns

string | Promise<string | undefined> | undefined

store?
optional store?: (ctx) => 
  | Store
| Promise<Store>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:60

Open the tenant’s Store. Default: @sms/store-do on the Durable Object’s own SQLite. Override to put a tenant on D1 (openD1Store(env[binding]) from @sms/store-d1, one database per tenant) or anything else reachable from the DO; the DO still serialises the tenant’s requests.

Parameters
ParameterType
ctx{ env: Env; state: DurableObjectStateLike; tenantId: string; }
ctx.envEnv
ctx.stateDurableObjectStateLike
ctx.tenantIdstring
Returns

| Store | Promise<Store>

tenant
tenant: (ctx) => TenantApp | Promise<TenantApp>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:54

Boot the tenant’s application on store (already open on the DO’s SQLite) and return its request handler — typically createBaseline({ store, executor, model, plugins, … }) from @sms/baseline. Called once per Durable Object lifetime.

Parameters
ParameterType
ctx{ env: Env; store: Store; tenantId: string; }
ctx.envEnv
ctx.storeStore
ctx.tenantIdstring
Returns

TenantApp | Promise<TenantApp>

tenants?
optional tenants?: (env) => string[] | Promise<string[]>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:46

Tenants to tick from the Worker’s cron trigger (scheduled). Only these run scheduled jobs — a Durable Object cannot enumerate itself. Absent: scheduled is a no-op.

Parameters
ParameterType
envEnv
Returns

string[] | Promise<string[]>


DurableObjectNamespaceLike

Defined in: packages/drivers/host/cloudflare/src/index.ts:24

Methods

get()
get(id): DurableObjectStubLike;

Defined in: packages/drivers/host/cloudflare/src/index.ts:26

Parameters
ParameterType
idunknown
Returns

DurableObjectStubLike

idFromName()
idFromName(name): unknown;

Defined in: packages/drivers/host/cloudflare/src/index.ts:25

Parameters
ParameterType
namestring
Returns

unknown


DurableObjectStateLike

Defined in: packages/drivers/host/cloudflare/src/index.ts:17

Properties

id
id: {
  name?: string;
  toString: string;
};

Defined in: packages/drivers/host/cloudflare/src/index.ts:19

name?
optional name?: string;
toString()
toString(): string;
Returns

string

storage
storage: {
  sql: SqlStorageLike;
};

Defined in: packages/drivers/host/cloudflare/src/index.ts:18

sql
sql: SqlStorageLike;

DurableObjectStubLike

Defined in: packages/drivers/host/cloudflare/src/index.ts:21

Methods

fetch()
fetch(request): Promise<Response>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:22

Parameters
ParameterType
requestRequest
Returns

Promise<Response>


ScheduledEventLike

Defined in: packages/drivers/host/cloudflare/src/index.ts:34

Properties

cron?
optional cron?: string;

Defined in: packages/drivers/host/cloudflare/src/index.ts:35

scheduledTime?
optional scheduledTime?: number;

Defined in: packages/drivers/host/cloudflare/src/index.ts:36


TenantApp

Defined in: packages/drivers/host/cloudflare/src/index.ts:66

What a tenant boot returns: at least a fetch-style handler (a Baseline satisfies this).

Properties

handle
handle: RequestHandler;

Defined in: packages/drivers/host/cloudflare/src/index.ts:67

Methods

tick()?
optional tick(now?): Promise<unknown>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:69

Run due scheduled jobs; called by the cron trigger.

Parameters
ParameterType
now?number
Returns

Promise<unknown>

Variables

TENANT_HEADER

const TENANT_HEADER: "x-sms-tenant" = 'x-sms-tenant';

Defined in: packages/drivers/host/cloudflare/src/index.ts:29

Functions

createCloudflareApp()

function createCloudflareApp<Env>(opts): CloudflareApp<Env>;

Defined in: packages/drivers/host/cloudflare/src/index.ts:84

Type Parameters

Type Parameter
Env extends Record<string, unknown>

Parameters

ParameterType
optsCloudflareAppOptions<Env>

Returns

CloudflareApp<Env>