Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 93x 93x 93x 93x 1x 1x | import { Linker } from './linker'; /** * Type helper to allow {@link Factor}ing **Target**ed constructors with * required arguments. Used and to be used in conjunction with the * {@link Target} decorator. * * @typeParam V - The **Target**ed {@link InstanceType}. */ export type Target<V> = new (...args: any[]) => V; /** * Class decorator factory. Links the **Target**ed constructor to its * corresponding instance by applying the supplied `factoryArgs`. Employ this * helper to link **Target**ed constructors with required arguments. Supplying a * `target` constructor overrides its linked instance, if any, with the * constructed instance. * * @param factoryArgs - The arguments for the **Target**ed constructor. * @param target - An optional **Target** constructor to override. * @typeParam K - The **Target**ed constructor type. * @returns A class constructor decorator. * * @example * **Target** a service: * ```ts * import { Target } from '@sgrud/core'; * * @Target(['default']) * export class Service { * * public constructor( * public readonly param: string * ) {} * * } * ``` * * @example * {@link Factor} a **Target**ed service: * ```ts * import { Factor, type Target } from '@sgrud/core'; * import { Service } from './service'; * * export class ServiceHandler { * * @Factor<Target<Service>>(() => Service) * public readonly service!: Service; * * } * ``` * * @see {@link Factor} * @see {@link Linker} */ export function Target<K extends new (...args: any[]) => any>( factoryArgs?: ConstructorParameters<K>, target?: K ) { /** * @param constructor - The class `constructor` to be decorated. */ return function(constructor: K): void { new Linker<K>([ [target || constructor, new constructor(...factoryArgs || [])] ]); }; } |