@akala/core
Version:
46 lines • 1.71 kB
JavaScript
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