UNPKG

@gentrace/core

Version:
117 lines (116 loc) 3.25 kB
import type { ZodType } from "zod"; type InteractionFn<T = any> = (...args: [T, ...any[]]) => any; type InteractionDefinition<T extends any = any, Fn extends InteractionFn<T> = InteractionFn<T>> = { name: string; fn: Fn; parameters?: undefined | { name: string; }[]; inputType?: undefined | ZodType<T>; }; export declare function defineInteraction<T = any, Fn extends InteractionFn<T> = InteractionFn<T>>(interaction: InteractionDefinition<T, Fn>): Fn; type AnyFn = (...args: any[]) => any; export declare function defineTestSuite<Fn extends AnyFn>(testSuite: { name: string; fn: Fn; }): Fn; type OutboundMessageHeartbeat = { type: "heartbeat"; }; type InteractionMetadata = { name: string; hasValidation: boolean; parameters: Parameter[]; }; type OutboundMessageRegisterInteraction = { type: "register-interaction"; interaction: InteractionMetadata; }; type OutboundMessageRegisterTestSuite = { type: "register-test-suite"; testSuite: { name: string; }; }; type OutboundMessageTestInteractionInputValidationResults = { type: "run-interaction-input-validation-results"; id: string; interactionName: string; data: { id: string; status: "success" | "failure"; error?: string; }[]; }; type OutboundMessageEnvironmentDetails = { type: "environment-details"; interactions: InteractionMetadata[]; testSuites: { name: string; }[]; }; type OutboundMessageConfirmation = { type: "confirmation"; ok: boolean; }; type OutboundMessage = OutboundMessageHeartbeat | OutboundMessageEnvironmentDetails | OutboundMessageRegisterInteraction | OutboundMessageRegisterTestSuite | OutboundMessageTestInteractionInputValidationResults | OutboundMessageConfirmation; type Parameter = { type: "numeric"; name: string; defaultValue: number; } | { type: "string"; name: string; defaultValue: string; } | { type: "enum"; name: string; defaultValue: string; options: string[]; } | { type: "template"; name: string; defaultValue: string; variables: { name: string; example: any; }[]; }; export declare const numericParameter: ({ name, defaultValue, }: { name: string; defaultValue: number; }) => { name: string; getValue: () => number; }; export declare const stringParameter: ({ name, defaultValue, }: { name: string; defaultValue: string; }) => { name: string; getValue: () => string; }; export declare const enumParameter: ({ name, options, defaultValue, }: { name: string; options: string[]; defaultValue: string; }) => { name: string; getValue: () => string; }; export declare const templateParameter: <T extends Record<string, any>>({ name, defaultValue, variables, }: { name: string; defaultValue: string; variables?: { name: keyof T; example: T[keyof T]; }[]; }) => { name: string; render: (values: T) => string; }; export declare function listen(values?: { environmentName?: string | undefined; }): Promise<void>; export declare function handleWebhook(body: any, sendResponse: (response: OutboundMessage) => void): Promise<void>; export {};