Beignet API reference
    Preparing search index...

    Interface ServiceProvider<Ports, CfgSchema, ProvidedPorts>

    A service provider that can extend or replace ports during app initialization.

    Providers support:

    • Configuration via Standard Schema (any compatible library: Zod, Valibot, etc.)
    • Returning ports with new capabilities (e.g., cache, mailer)
    • Replacing existing ports by returning the same key
    • Optional start/stop hooks
    const redisProvider = createProvider({
    name: "redis",
    config: {
    schema: z.object({ URL: z.string().url() }),
    envPrefix: "REDIS_",
    },
    async setup({ config }) {
    const client = new Redis(config.URL);
    return {
    ports: {
    cache: {
    get: (key) => client.get(key),
    set: (key, value) => client.set(key, value),
    },
    },
    stop: () => client.quit(),
    };
    },
    });
    interface ServiceProvider<
        Ports,
        CfgSchema extends StandardSchemaV1 = StandardSchemaV1<void, void>,
        ProvidedPorts extends ProviderPorts = NoProvidedPorts,
    > {
        __providedPorts?: ProvidedPorts;
        config?: ProviderConfigDef<CfgSchema>;
        name: string;
        setup(
            ctx: {
                config: InferOutput<CfgSchema> | undefined;
                ports: Readonly<Ports>;
            },
        ): MaybePromise<ProviderSetupResult<ProvidedPorts>>;
    }

    Type Parameters

    Index

    Properties

    __providedPorts?: ProvidedPorts

    Type-only marker for ports this provider contributes. Runtime provider objects do not need to set this property.

    Optional configuration definition. If provided, the config will be loaded and validated before calling setup.

    name: string

    Unique name for this provider (used for logging/debugging)

    Methods