api-core
Version:
Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels
64 lines (63 loc) • 2.47 kB
TypeScript
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;
}