@apito-io/js-apito-plugin-sdk
Version:
JavaScript SDK for building Apito HashiCorp plugins
93 lines (80 loc) • 4.02 kB
TypeScript
// Type definitions for @apito-io/js-apito-plugin-sdk
// Generated automatically by build script
export interface PluginConfig {
name: string;
version: string;
apiKey: string;
}
export interface GraphQLField {
type: any;
description?: string;
args?: Record<string, any>;
}
export interface RESTEndpoint {
path: string;
method: string;
description?: string;
requestSchema?: any;
responseSchema?: any;
}
export interface Plugin {
registerQuery(name: string, field: GraphQLField, resolver: Function): void;
registerMutation(name: string, field: GraphQLField, resolver: Function): void;
registerQueries(queries: Record<string, { field: GraphQLField; resolver: Function }>): void;
registerMutations(mutations: Record<string, { field: GraphQLField; resolver: Function }>): void;
registerRESTAPI(endpoint: RESTEndpoint, handler: Function): void;
registerFunction(name: string, func: Function): void;
registerFunctions(functions: Record<string, Function>): void;
registerHealthCheck(healthCheckFn: Function): void;
serve(): Promise<void>;
}
export function init(name: string, version: string, apiKey: string): Plugin;
// GraphQL field helpers
export function StringField(description?: string): GraphQLField;
export function IntField(description?: string): GraphQLField;
export function BooleanField(description?: string): GraphQLField;
export function FloatField(description?: string): GraphQLField;
export function IDField(description?: string): GraphQLField;
export function ListField(type: any, description?: string): GraphQLField;
export function NonNullField(type: any, description?: string): GraphQLField;
export function FieldWithArgs(type: any, args: Record<string, any>, description?: string): GraphQLField;
// GraphQL argument helpers
export function StringArg(description?: string): any;
export function IntArg(description?: string): any;
export function BooleanArg(description?: string): any;
export function FloatArg(description?: string): any;
export function IDArg(description?: string): any;
export function ObjectArg(description?: string): any;
export function ListArg(type: any, description?: string): any;
export function NonNullArg(type: any, description?: string): any;
// Type system helpers
export function createScalarType(name: string): any;
export function createNonNullType(type: any): any;
export function createListType(type: any): any;
export function createObjectType(name: string, fields: Record<string, any>): any;
// Object builder
export function NewObjectType(name: string): any;
// REST endpoint helpers
export function GETEndpoint(path: string, description?: string): any;
export function POSTEndpoint(path: string, description?: string): any;
export function PUTEndpoint(path: string, description?: string): any;
export function DELETEEndpoint(path: string, description?: string): any;
export function PATCHEndpoint(path: string, description?: string): any;
// Schema helpers
export function ObjectSchema(properties: Record<string, any>): any;
export function ArraySchema(items: any): any;
export function StringSchema(): any;
export function IntegerSchema(): any;
export function BooleanSchema(): any;
export function NumberSchema(): any;
// Utility functions
export function getStringArg(args: any, name: string, defaultValue?: string): string;
export function getIntArg(args: any, name: string, defaultValue?: number): number;
export function getBoolArg(args: any, name: string, defaultValue?: boolean): boolean;
export function getFloatArg(args: any, name: string, defaultValue?: number): number;
export function getObjectArg(args: any, name: string, defaultValue?: any): any;
export function getArrayArg(args: any, name: string, defaultValue?: any[]): any[];
export function getPathParam(req: any, name: string): string;
export function getQueryParam(req: any, name: string, defaultValue?: string): string;
export function getBodyParam(req: any, name: string, defaultValue?: any): any;
export function logRESTArgs(req: any): void;