@gentrace/core
Version:
Core Gentrace Node.JS library
117 lines (116 loc) • 3.25 kB
TypeScript
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 {};