UNPKG

api-core

Version:

Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels

64 lines (63 loc) 2.47 kB
import { ApiEdgeDefinition } from "./edge/ApiEdgeDefinition"; import { ApiEdgeMetadata } from "./edge/ApiEdgeMetadata"; import { ApiRequest, ApiRequestType } from "./request/ApiRequest"; import { ApiQuery, ApiQueryScope } from "./query/ApiQuery"; import { ApiEdgeRelation, ExportedApiEdgeRelation } from "./relations/ApiEdgeRelation"; import { ApiAction, ApiActionTriggerKind } from "./query/ApiAction"; import { ApiResolver } from "./resolver/ApiResolver"; export interface ApiInfo { title: string; description?: string; termsOfService?: string; contact?: { name?: string; url?: string; email?: string; }; license?: { name: string; url?: string; }; } export interface ApiMetadata { info: ApiInfo; version: string; edges: ApiEdgeMetadata[]; relations: ExportedApiEdgeRelation[]; services: ApiService[]; } export interface ApiService { name: string; version: string; } export declare class Api { static defaultIdPostfix: string; static defaultIdField: string; url?: string; info?: ApiInfo; service: ApiService; edges: ApiEdgeDefinition[]; relations: ApiEdgeRelation[]; actions: ApiAction[]; private parser; private queryBuilder; resolver: ApiResolver; constructor(service: ApiService, ...edges: ApiEdgeDefinition[]); findEdge: (name: string, plural?: boolean) => Promise<ApiEdgeDefinition | undefined>; findRelation(name: string): Promise<ApiEdgeRelation | undefined>; findRelationOfEdge(edge: string | ApiEdgeDefinition, name: string): Promise<ApiEdgeRelation | undefined>; findRelationTo(edge: string | ApiEdgeDefinition, name: string): Promise<ApiEdgeRelation | undefined>; findRelationFrom(edge: string | ApiEdgeDefinition, name: string): Promise<ApiEdgeRelation | undefined>; parseRequest: (requestParts: string[], type?: ApiRequestType | null) => Promise<ApiRequest>; buildQuery: (request: ApiRequest) => ApiQuery; edge(edge: ApiEdgeDefinition): this; relation(relation: ApiEdgeRelation): this; use: (action: ApiAction) => this; action: (name: string, execute: (scope: ApiQueryScope) => Promise<ApiQueryScope>, triggerKind?: ApiActionTriggerKind) => Api; metadata: () => ApiMetadata; static fromMetadata(metadata: ApiMetadata): Promise<Api>; prepare(): Promise<void>; private extension; get: (key: string) => any; set: (key: string, value: any) => any; }