moleculer-api
Version:
A dynamic API Gateway for MoleculerJS which updates REST endpoints and aggregated GraphQL schema, access control policy for each action calls from metadata of remote services schema without restart or deployment.
19 lines (18 loc) • 1.4 kB
TypeScript
import { ServiceAPIIntegration } from "../../integration";
import { Plugin, PluginProps } from "../plugin";
import { CallPolicyArgs, PublishPolicyArgs, SubscribePolicyArgs } from "../connector";
export interface IPolicyPluginCatalog {
type: string;
description: string | null;
}
export interface IPolicyPluginSchema {
}
export declare type PolicyPluginProps = PluginProps;
export declare type CallPolicyTester = (args: Readonly<CallPolicyArgs>) => boolean;
export declare type PublishPolicyTester = (args: Readonly<PublishPolicyArgs>) => boolean;
export declare type SubscribePolicyTester = (args: Readonly<SubscribePolicyArgs>) => boolean;
export declare abstract class PolicyPlugin<PluginSchema extends IPolicyPluginSchema, PluginCatalog extends IPolicyPluginCatalog> extends Plugin<PluginSchema, PluginCatalog> {
abstract compileCallPolicySchemata(schemata: ReadonlyArray<PluginSchema>, descriptions: ReadonlyArray<string | null>, integration: Readonly<ServiceAPIIntegration>): CallPolicyTester;
abstract compilePublishPolicySchemata(schemata: ReadonlyArray<PluginSchema>, descriptions: ReadonlyArray<string | null>, integration: Readonly<ServiceAPIIntegration>): PublishPolicyTester;
abstract compileSubscribePolicySchemata(schemata: ReadonlyArray<PluginSchema>, descriptions: ReadonlyArray<string | null>, integration: Readonly<ServiceAPIIntegration>): SubscribePolicyTester;
}