Skip to content

definePolicy

definePolicy<TConfig>(definition): (config?) => Policy

Defined in: src/policies/sdk/define-policy.ts:92

Create a policy factory from a declarative definition.

The returned factory function accepts optional user config, merges it with defaults, wires up skip logic, and injects a debug logger at request time.

TConfig extends PolicyConfig = PolicyConfig

PolicyDefinition<TConfig>

Policy name, priority, defaults, and handler.

A factory function: (config?) => Policy.

(config?): Policy

TConfig

Policy

import { definePolicy, Priority } from "@homegrower-club/stoma";
const myPolicy = definePolicy<MyConfig>({
name: "my-policy",
priority: Priority.AUTH,
defaults: { headerName: "x-custom" },
handler: async (c, next, { config, debug }) => {
debug("checking header");
const value = c.req.header(config.headerName!);
if (!value) throw new GatewayError(401, "unauthorized", "Missing header");
await next();
},
});
// Usage: myPolicy({ headerName: "x-api-key" })