UNPKG

@akala/core

Version:
46 lines 1.71 kB
import { Injector } from './shared.js'; import { process } from '../middlewares/shared.js'; /** * An injector that processes dependency resolution through middleware pipelines. * This class extends Injector to allow middleware-based handling of dependency requests. */ export class MiddlewareInjector extends Injector { static inspect = Symbol('inspect'); onResolve(name, handler) { if (handler) { this.onResolve(name).then(handler); return; } return process(this.middleware, name, true); } /** * Initiates an inspection of the dependency resolution pipeline using registered middleware. * Triggers inspection middleware to analyze current state and dependencies. */ inspect() { process(this.middleware, MiddlewareInjector.inspect); } /** * Creates an instance of MiddlewareInjector. */ constructor() { super(); } /** * 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; /** * 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(param) { return process(this.middleware, param, true); } } //# sourceMappingURL=middleware-injector.js.map