deat
Version:
Model and manage your runtime feature-oriented dependencies
58 lines (56 loc) • 1.89 kB
text/typescript
declare class Deat<S extends {
[k: string]: any;
}, D extends {
[k: string]: any;
}, P extends Deat<any, any, any>> {
private readonly build;
private key;
private keys;
private headerKey;
private next;
private isHeader;
private prefixedDeps;
deps: S;
constructor(deps: S, build: (deps: S & P) => D);
static create<S extends {
[k: string]: any;
}, D extends {
[k: string]: any;
}, P extends Deat<any, any, any> = Deat<{}, any, any>>(deps: S, build: (deps: S & P["deps"]) => D, peer?: P): Deat<S, D, P>;
private static genPrefixForDeps;
private static setPrefixForDeps;
private static removePrefixForDeps;
private static updatePrefixForDeps;
private static getIsolatedDeps;
private copy;
private getDuplicates;
private validateHeader;
private tail;
private getNodeByKey;
_inspect(): void;
private _chain;
chain<M extends {
[k: string]: any;
}, N extends {
[k: string]: any;
}, Q extends Deat<any, any, any>>(deat: Deat<M, N, Q>): Deat<S & M & D, N, Deat<P["deps"] & Q["deps"], any, any>>;
append<T extends {
[k: string]: any;
}, R extends {
[k: string]: any;
}>(deps: T, build: (deps: T & D & S & P["deps"]) => R): Deat<S & T & D, R, P>;
appendDeps<T extends {
[k: string]: any;
}>(deps: T): Deat<S & T & D, {}, Deat<P["deps"] & {}, any, any>>;
appendBuilder<T extends {
[k: string]: any;
}>(build: (deps: S & D & P["deps"]) => T): Deat<S & T & D, T, P>;
union<M extends {
[k: string]: any;
}, N extends {
[k: string]: any;
}, Q extends Deat<any, any, any>>(deat: Deat<M, N, Q>): Deat<S & M & D & N, {}, Deat<P["deps"] & Q["deps"], any, any>>;
update(key: string, value: any): Deat<any, any, Deat<{}, any, any>>;
run(): S & D;
}
export { Deat };