Files
recap/node_modules/@start9labs/start-sdk/base/lib/actions/setupActions.d.ts
T

59 lines
2.4 KiB
TypeScript

import { InputSpec } from './input/builder';
import { ExtractInputSpecType } from './input/builder/inputSpec';
import * as T from '../types';
import { InitScript } from '../inits';
export type Run<A extends Record<string, any>> = (options: {
effects: T.Effects;
input: A;
spec: T.inputSpecTypes.InputSpec;
}) => Promise<(T.ActionResult & {
version: '1';
}) | null | void | undefined>;
export type GetInput<A extends Record<string, any>> = (options: {
effects: T.Effects;
prefill: T.DeepPartial<A> | null;
}) => Promise<null | void | undefined | T.DeepPartial<A>>;
export type MaybeFn<T, Opts = {
effects: T.Effects;
}> = T | ((options: Opts) => Promise<T>);
export interface ActionInfo<Id extends T.ActionId, Type extends Record<string, any>> {
readonly id: Id;
readonly _INPUT: Type;
}
export declare class Action<Id extends T.ActionId, Type extends Record<string, any>> implements ActionInfo<Id, Type> {
readonly id: Id;
private readonly metadataFn;
private readonly inputSpec;
private readonly getInputFn;
private readonly runFn;
readonly _INPUT: Type;
private prevInputSpec;
private constructor();
static withInput<Id extends T.ActionId, InputSpecType extends InputSpec<Record<string, any>>>(id: Id, metadata: MaybeFn<Omit<T.ActionMetadata, 'hasInput'>>, inputSpec: MaybeFn<InputSpecType, {
effects: T.Effects;
prefill: unknown | null;
}>, getInput: GetInput<ExtractInputSpecType<InputSpecType>>, run: Run<ExtractInputSpecType<InputSpecType>>): Action<Id, ExtractInputSpecType<InputSpecType>>;
static withoutInput<Id extends T.ActionId>(id: Id, metadata: MaybeFn<Omit<T.ActionMetadata, 'hasInput'>>, run: Run<{}>): Action<Id, {}>;
exportMetadata(options: {
effects: T.Effects;
}): Promise<T.ActionMetadata>;
getInput(options: {
effects: T.Effects;
prefill: T.DeepPartial<Type> | null;
}): Promise<T.ActionInput>;
run(options: {
effects: T.Effects;
input: Type;
}): Promise<T.ActionResult | null>;
}
export declare class Actions<AllActions extends Record<T.ActionId, Action<T.ActionId, any>>> implements InitScript {
private readonly actions;
private constructor();
static of(): Actions<{}>;
addAction<A extends Action<T.ActionId, any>>(action: A): Actions<AllActions & {
[id in A['id']]: A;
}>;
init(effects: T.Effects): Promise<void>;
get<Id extends T.ActionId>(actionId: Id): AllActions[Id];
}