@akala/core
Version:
44 lines (43 loc) • 2.09 kB
TypeScript
import type { Middleware } from '../middlewares/shared.js';
import { Injector } from './shared.js';
/**
* An injector that processes dependency resolution through middleware pipelines.
* This class extends Injector to allow middleware-based handling of dependency requests.
*/
export declare class MiddlewareInjector extends Injector {
static inspect: symbol;
/**
* Registers or retrieves a dependency resolution through middleware.
*
* @template T - The type of the resolved dependency.
* @param {string | symbol} name - The identifier of the dependency to resolve.
* @param {((value: T) => void)} [handler] - Optional callback to handle the resolved value synchronously.
* @returns {PromiseLike<T> | void} Returns a promise resolving the dependency value when no handler is provided,
* or executes the handler immediately when provided.
*/
onResolve<T = unknown>(name: string | symbol): PromiseLike<T>;
onResolve<T = unknown>(name: string | symbol, handler: (value: T) => void): void;
/**
* Initiates an inspection of the dependency resolution pipeline using registered middleware.
* Triggers inspection middleware to analyze current state and dependencies.
*/
inspect(): void;
/**
* Creates an instance of MiddlewareInjector.
*/
constructor();
/**
* Middleware pipeline handling dependency resolution operations.
* This chain of middleware processes dependency requests, allowing for interception, modification, or delegation of resolution logic.
* @type {Middleware<[param: string | symbol, sync?: boolean]>}
*/
middleware: Middleware<[param: string | symbol, sync?: boolean]>;
/**
* Resolves a dependency by executing the middleware chain.
*
* @template T - The expected type of the resolved dependency.
* @param {string | symbol} param - The identifier of the dependency to resolve.
* @returns {T} The resolved dependency value after processing through all middleware.
*/
resolve<T = unknown>(param: string | symbol): T;
}