UNPKG

@k8ts/instruments

Version:

A collection of utilities and core components for k8ts.

41 lines 1.69 kB
import { BaseManifest, ManifestIdentFields, ManifestMetadata, PreManifest } from "."; import { MetadataEntity } from "../graph/resource-node"; type MaybePromise<T> = T | Promise<T>; export declare namespace ManifestBuilder { interface Out { body: () => MaybePromise<PreManifest>; metadata: () => Partial<ManifestMetadata>; ident: () => ManifestIdentFields; manifest: () => MaybePromise<BaseManifest>; } type In<Target extends MetadataEntity = MetadataEntity> = Partial<{ [K in keyof Out]: (self: Target) => ReturnType<Out[K]>; }> & { body: (self: Target) => PreManifest; } & { [key: string]: (self: Target, ...args: any[]) => any; }; } declare class BuilderDecorator { private _system; implement(ctor: { new (...args: any[]): MetadataEntity; }, input: ManifestBuilder.In<MetadataEntity>): void; private _metadata; private _idents; manifest(trait: ManifestBuilder.Out, self: MetadataEntity): Promise<{ metadata: Partial<ManifestMetadata>; kind: string; apiVersion: string; }>; idents(self: MetadataEntity): { kind: string; apiVersion: string; }; get(target: MetadataEntity): ManifestBuilder.Out; get decorator(): <Target extends new (...args: any[]) => MetadataEntity>(input: ManifestBuilder.In<InstanceType<Target>>) => (ctor: Target) => Target; } export declare const Builder: BuilderDecorator; export declare const manifest: <Target extends new (...args: any[]) => MetadataEntity>(input: ManifestBuilder.In<InstanceType<Target>>) => (ctor: Target) => Target; export {}; //# sourceMappingURL=manifest-builder.d.ts.map