UNPKG

@elsikora/cladi

Version:

Zero-dependency TypeScript DI toolkit with typed tokens and scoped lifecycles.

30 lines (27 loc) 1.51 kB
'use strict'; /** * Creates a provider definition that returns lazy async resolver function. * @param {Token<() => Promise<T>>} provide Token for lazy resolver function. * @param {Token<Awaited<T>>} dependencyToken Token that will be resolved on lazy invocation. * @param {object} [options] Optional provider options and lifecycle hooks. * @param {(instance: () => Promise<T>) => Promise<void> | void} [options.afterResolve] Runs after each successful lazy resolver resolution. * @param {boolean} [options.isMultiBinding] Marks provider as multi-binding registration. * @param {EDependencyLifecycle} [options.lifecycle] Provider lifecycle for lazy resolver instance. * @param {(instance: () => Promise<T>) => Promise<void> | void} [options.onDispose] Runs when tracked lazy resolver instance is disposed. * @param {(instance: () => Promise<T>) => Promise<void> | void} [options.onInit] Runs once when lazy resolver instance is created. * @returns {ILazyProvider<() => Promise<T>>} Lazy provider definition. * @template T Lazy dependency value type. */ function createLazyProvider(provide, dependencyToken, options = {}) { return { afterResolve: options.afterResolve, isMultiBinding: options.isMultiBinding, lifecycle: options.lifecycle, onDispose: options.onDispose, onInit: options.onInit, provide, useLazy: dependencyToken, }; } exports.createLazyProvider = createLazyProvider; //# sourceMappingURL=lazy-provider.utility.js.map