@prostojs/wf
Version:
Generic workflow framework
116 lines (115 loc) • 3.71 kB
text/typescript
import { l as TStepOutput, s as TFlowState } from "../types-DQ7U9zZ5.mjs";
//#region src/outlets/types.d.ts
type WfState = TFlowState<unknown>;
interface WfOutletRequest<P = unknown> {
outlet: string;
payload?: P;
target?: string;
template?: string;
context?: Record<string, unknown>;
}
interface WfOutletResult {
response?: unknown;
status?: number;
headers?: Record<string, string>;
cookies?: Record<string, WfCookieValue>;
}
interface WfCookieValue {
value: string;
options?: {
httpOnly?: boolean;
secure?: boolean;
sameSite?: 'strict' | 'lax' | 'none';
path?: string;
domain?: string;
maxAge?: number;
expires?: Date;
};
}
//#endregion
//#region src/outlets/outlet.d.ts
interface WfOutlet {
readonly name: string;
deliver(request: WfOutletRequest, token: string): Promise<WfOutletResult | void>;
}
//#endregion
//#region src/outlets/helpers.d.ts
type WfOutletSignal<P> = NonNullable<TStepOutput<WfOutletRequest<P>>>;
declare function outlet<P = unknown>(name: string, data?: Omit<WfOutletRequest<P>, 'outlet'>): WfOutletSignal<P>;
declare function outletHttp<P = unknown>(payload: P, context?: Record<string, unknown>): WfOutletSignal<P>;
declare function outletEmail(target: string, template: string, context?: Record<string, unknown>): WfOutletSignal<unknown>;
//#endregion
//#region src/outlets/state/strategy.d.ts
interface WfStateStrategy {
persist(state: WfState, options?: {
ttl?: number;
}): Promise<string>;
retrieve(token: string): Promise<WfState | null>;
consume(token: string): Promise<WfState | null>;
}
//#endregion
//#region src/outlets/state/encapsulated.d.ts
interface EncapsulatedStateConfig {
secret: string | Buffer;
defaultTtl?: number;
}
declare class EncapsulatedStateStrategy implements WfStateStrategy {
private config;
private key;
constructor(config: EncapsulatedStateConfig);
persist(state: WfState, options?: {
ttl?: number;
}): Promise<string>;
retrieve(token: string): Promise<WfState | null>;
consume(token: string): Promise<WfState | null>;
private decrypt;
}
//#endregion
//#region src/outlets/state/store.d.ts
interface WfStateStore {
set(handle: string, state: WfState, expiresAt?: number): Promise<void>;
get(handle: string): Promise<{
state: WfState;
expiresAt?: number;
} | null>;
delete(handle: string): Promise<void>;
getAndDelete(handle: string): Promise<{
state: WfState;
expiresAt?: number;
} | null>;
cleanup?(): Promise<number>;
}
//#endregion
//#region src/outlets/state/handle.d.ts
interface HandleStateConfig {
store: WfStateStore;
defaultTtl?: number;
generateHandle?: () => string;
}
declare class HandleStateStrategy implements WfStateStrategy {
private config;
constructor(config: HandleStateConfig);
persist(state: WfState, options?: {
ttl?: number;
}): Promise<string>;
retrieve(token: string): Promise<WfState | null>;
consume(token: string): Promise<WfState | null>;
}
//#endregion
//#region src/outlets/state/memory.d.ts
declare class WfStateStoreMemory implements WfStateStore {
private store;
set(handle: string, state: WfState, expiresAt?: number): Promise<void>;
get(handle: string): Promise<{
state: WfState;
expiresAt?: number;
} | null>;
delete(handle: string): Promise<void>;
getAndDelete(handle: string): Promise<{
state: WfState;
expiresAt?: number;
} | null>;
cleanup(): Promise<number>;
}
//#endregion
export { EncapsulatedStateConfig, EncapsulatedStateStrategy, HandleStateConfig, HandleStateStrategy, WfCookieValue, WfOutlet, WfOutletRequest, WfOutletResult, WfState, WfStateStore, WfStateStoreMemory, WfStateStrategy, outlet, outletEmail, outletHttp };