UNPKG

@k8ts/instruments

Version:

A collection of utilities and core components for k8ts.

26 lines 1.34 kB
import { Dependencies, Relation } from "./dependencies"; import { ResourceEntity, ResourceNode } from "./resource-node"; export declare namespace Relations { interface Out { needs: () => Iterable<Relation<ResourceNode>>; parent: () => ResourceNode | null; kids: () => ResourceNode[]; } type In<Target extends ResourceEntity = ResourceEntity> = { needs: (self: Target) => Dependencies.Input; parent: (self: Target) => ResourceEntity | null; kids: (self: Target) => ResourceEntity[]; } & { [key: string]: (self: Target, ...args: any[]) => any; }; } declare class RelationsService { private _system; implement(ctor: abstract new (...args: any[]) => ResourceEntity, input: Relations.In<ResourceEntity>): void; get(target: ResourceEntity): Relations.Out; get decorator(): <Target extends abstract new (...args: any[]) => ResourceEntity, Impl extends Partial<Relations.In<InstanceType<Target>>> | "none">(input: Impl) => (ctor: Target) => Target; } export declare const Relations: RelationsService; export declare const relations: <Target extends abstract new (...args: any[]) => ResourceEntity, Impl extends "none" | Partial<Relations.In<InstanceType<Target>>>>(input: Impl) => (ctor: Target) => Target; export {}; //# sourceMappingURL=relations.d.ts.map