@k8ts/instruments
Version:
A collection of utilities and core components for k8ts.
26 lines • 1.34 kB
TypeScript
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