UNPKG

api-core

Version:

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

50 lines (38 loc) 1.46 kB
import {QueryStep, ApiQueryScope} from "../query/ApiQuery"; import {ApiEdgeQueryType} from "./ApiEdgeQueryType"; export enum ApiEdgeActionTrigger { OutputQuery = 1 << 1, SubQuery = 1 << 2, Method = 1 << 3, Relation = 1 << 4, Query = OutputQuery | SubQuery, Any = OutputQuery | Query | Method | Relation } export enum ApiEdgeActionTriggerKind { BeforeEvent, AfterEvent } export class ApiEdgeAction implements QueryStep { name: string; triggerKind: ApiEdgeActionTriggerKind = ApiEdgeActionTriggerKind.BeforeEvent; targetTypes: ApiEdgeQueryType = ApiEdgeQueryType.Any; triggers: ApiEdgeActionTrigger = ApiEdgeActionTrigger.Any; triggerNames: string[] = []; execute: (scope: ApiQueryScope) => Promise<ApiQueryScope>; constructor(name: string, execute: (scope: ApiQueryScope) => Promise<ApiQueryScope>, targetTypes: ApiEdgeQueryType = ApiEdgeQueryType.Any, triggerKind: ApiEdgeActionTriggerKind = ApiEdgeActionTriggerKind.BeforeEvent, triggers: ApiEdgeActionTrigger = ApiEdgeActionTrigger.Any, triggerNames: string[] = []) { this.name = name; this.triggers = triggers; this.execute = execute; this.targetTypes = targetTypes; this.triggerKind = triggerKind; this.triggerNames = triggerNames; } inspect = () => { return `action{${this.name}}` } }