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