@triviality/core
Version:
Purely typed service container
20 lines (19 loc) • 918 B
TypeScript
/// <reference types="ts-toolbelt" />
import { SF } from '../ServiceFactory';
import { ServiceFunctionReferenceContainerInterface } from '../Container/ServiceFunctionReferenceContainerInterface';
/**
* Context for overriding services.
*/
export interface OverrideContext<T> {
override: Overrides<T>;
}
export declare const createFeatureFactoryOverrideContext: (container: ServiceFunctionReferenceContainerInterface<any>) => OverrideContext<any>;
/**
* TODO: original should be a function, so it's not always needed to execute service factory.
*/
declare type OverrideWith<T> = (original: SF<T>) => T;
export declare type Overrides<T> = {
[K in keyof T]: (overrideWith: OverrideWith<T[K]>) => {};
};
export declare const overrideBy: import("Function/Curry").Curry<(container: ServiceFunctionReferenceContainerInterface<any>, serviceTagToOverride: string, overrideWith: OverrideWith<any>) => {}>;
export {};