@k8ts/instruments
Version:
A collection of utilities and core components for k8ts.
38 lines • 1.83 kB
TypeScript
export type KnownFormats = "local" | "global" | undefined;
export declare namespace Displayers {
interface Out {
default: (format?: string) => string;
simple: (format?: KnownFormats | string) => string;
pretty: (format?: KnownFormats | string) => string;
prefix?: () => string;
}
type In<Target extends object = object> = {
simple?: (this: Out, self: Target, format?: string) => string | object;
pretty?: (this: Out, self: Target, format?: string) => string | object;
prefix?: (this: Out, self: Target) => string;
};
type Modes = keyof In;
}
declare class DisplayerDecorator {
private _system;
private _lastMode;
private _withLastMode;
implement(ctor: typeof PrivateCtorExemplar, input: Displayers.In): void;
wrapRecursiveFallback(out: Displayers.Out): Displayers.Out;
tryGet(target: any): Displayers.Out | undefined;
get(target: object): Displayers.Out;
get decorator(): <Target extends AnyCtor<any>, Impl extends Displayers.In<InstanceTypeOf<Target>>>(input: Impl) => (ctor: Target) => void;
}
export type PrivateCtor<T extends object> = typeof PrivateCtorExemplar & {
prototype: T;
};
export type PublicCtor<T extends object> = abstract new (...args: any[]) => T;
export type AnyCtor<T extends object> = PrivateCtor<T> | PublicCtor<T>;
export type InstanceTypeOf<T extends AnyCtor<any>> = T extends PrivateCtor<infer U> ? U : T extends PublicCtor<infer U> ? U : never;
declare abstract class PrivateCtorExemplar {
protected constructor(...args: any[]);
}
export declare const Displayers: DisplayerDecorator;
export declare const displayers: <Target extends AnyCtor<any>, Impl extends Displayers.In<InstanceTypeOf<Target>>>(input: Impl) => (ctor: Target) => void;
export {};
//# sourceMappingURL=displayers.d.ts.map