UNPKG

retort-js

Version:

Intuitive, production-ready prompt chaining in Javascript

66 lines (65 loc) 2.59 kB
export interface JsonSchema { type: string | string[]; properties?: { [key: string]: JsonSchema; }; items?: JsonSchema; required?: string[]; enum?: string[]; description?: string; minLength?: number; maxLength?: number; pattern?: string; format?: string; minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; multipleOf?: number; const?: any; } export type RetortPrimitiveSchema = StringConstructor | NumberConstructor | BooleanConstructor | ObjectConstructor | ArrayConstructor; export type RetortSchema = RetortPrimitiveSchema | RetortObjectSchema | [RetortSchema]; export interface RetortObjectSchema { [key: string]: { type: RetortSchema; optional?: boolean; enum?: string[]; description?: string; nullable?: boolean; minLength?: number; maxLength?: number; pattern?: string; format?: string; minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; multipleOf?: number; const?: any; value?: any; } | RetortSchema; } export declare function retortSchemaToJsonSchemaTypeString(type: RetortSchema): string; export declare function retortSchemaToJsonSchema(retortSchema: RetortObjectSchema): JsonSchema; type PrimitiveTypeMapping<T> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends ObjectConstructor ? object : T extends ArrayConstructor ? any[] : never; type ExtractType<T> = T extends { type: infer U; } ? U extends RetortPrimitiveSchema ? PrimitiveTypeMapping<U> : U extends [infer V] ? RetortSchemaToType<V>[] : U extends RetortObjectSchema ? { [K in keyof U]: RetortSchemaToType<U[K]>; } : never : never; type IncludeNullability<T, U> = T extends { nullable: true; } ? U | null : U; type IncludeOptional<T, U> = T extends { optional: true; } ? U | undefined : U; type IncludeEnum<T, U> = T extends { type: StringConstructor; enum: infer V; } ? V extends string[] ? V[number] : never : U; type CombinedIncludes<T, U> = IncludeEnum<T, IncludeOptional<T, IncludeNullability<T, U>>>; export type RetortSchemaToType<T> = ExtractType<T> extends never ? T extends RetortPrimitiveSchema ? PrimitiveTypeMapping<T> : T extends [infer U] ? RetortSchemaToType<U>[] : T extends RetortObjectSchema ? { [K in keyof T]: RetortSchemaToType<T[K]>; } : never : CombinedIncludes<T, ExtractType<T>>; export {};