bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
123 lines (122 loc) • 7.13 kB
TypeScript
import { type Static } from "../core/utils";
import { Module } from "../modules/Module";
import { flowsConfigSchema } from "./flows-schema";
export type AppFlowsSchema = Static<typeof flowsConfigSchema>;
export type TAppFlowSchema = AppFlowsSchema["flows"][number];
export type TAppFlowTriggerSchema = TAppFlowSchema["trigger"];
export type { TAppFlowTaskSchema } from "./flows-schema";
export declare class AppFlows extends Module<typeof flowsConfigSchema> {
private flows;
getSchema(): import("@sinclair/typebox").TObject<{
basepath: import("@sinclair/typebox").TString;
flows: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
trigger: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"manual" | "event" | "http">;
config: import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
}> | import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
event: import("@sinclair/typebox").TString;
}> | import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
path: import("@sinclair/typebox").TString;
method: import("@sinclair/typebox").TUnsafe<"GET" | "POST" | "PATCH" | "PUT" | "DELETE">;
response_type: import("@sinclair/typebox").TUnsafe<"json" | "text" | "html">;
}>;
}>[]>;
tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"log" | "fetch" | "render" | "subflow">;
params: import("@sinclair/typebox").TObject<{
url: import("@sinclair/typebox").TString;
method: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TUnsafe<string>, import("@sinclair/typebox").TString]>, string>>;
headers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
key: import("@sinclair/typebox").TString;
value: import("@sinclair/typebox").TString;
}>>, import("@sinclair/typebox").TString]>, {
key: string;
value: string;
}[]>>;
body: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>, string>>;
normal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString]>, number>>;
}> | import("@sinclair/typebox").TObject<{
delay: import("@sinclair/typebox").TNumber;
}> | import("@sinclair/typebox").TObject<{
render: import("@sinclair/typebox").TString;
}> | import("@sinclair/typebox").TObject<{
flow: import("@sinclair/typebox").TAny;
input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TAny, import("@sinclair/typebox").TString]>, any>>;
loop: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>;
}>[]>>>;
connections: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
source: import("@sinclair/typebox").TString;
target: import("@sinclair/typebox").TString;
config: import("@sinclair/typebox").TObject<{
condition: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"success">;
}>, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"error">;
}>, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"matches">;
path: import("@sinclair/typebox").TString;
value: import("@sinclair/typebox").TString;
}>]>>;
max_retries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
}>>>;
start_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
responding_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>>;
}>;
private getFlowInfo;
build(): Promise<void>;
toJSON(): (ReturnType<this["getSchema"]> & {
params: [];
})["static"] & {
flows: {
[x: string]: {
trigger: {
type: string;
config: {
mode: "sync" | "async";
};
};
tasks: {
[k: string]: {
type: string;
params: {
[x: string]: unknown;
[x: number]: unknown;
};
};
};
connections: {
[k: string]: {
source: string;
target: string;
config: {
condition: {
type: "success" | "error" | "matches";
path: string | undefined;
value: any;
} | undefined;
max_retries?: number;
};
};
};
start_task: string;
responding_task: string | undefined;
};
};
};
}