mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
refactor(core): improve is-static method readability
This commit is contained in:
@@ -408,21 +408,36 @@ export class InstanceWrapper<T = any> {
|
||||
contextId: ContextId,
|
||||
inquirer: InstanceWrapper | undefined,
|
||||
): boolean {
|
||||
if (!this.isDependencyTreeStatic() || contextId !== STATIC_CONTEXT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Non-transient provider in static context
|
||||
if (!this.isTransient) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const isInquirerRequestScoped =
|
||||
inquirer && !inquirer.isDependencyTreeStatic();
|
||||
const isStaticTransient = this.isTransient && !isInquirerRequestScoped;
|
||||
const rootInquirer = inquirer?.getRootInquirer();
|
||||
return (
|
||||
this.isDependencyTreeStatic() &&
|
||||
contextId === STATIC_CONTEXT &&
|
||||
(!this.isTransient ||
|
||||
(isStaticTransient && !!inquirer && !inquirer.isTransient) ||
|
||||
(isStaticTransient && !!rootInquirer && !rootInquirer.isTransient) ||
|
||||
(isStaticTransient &&
|
||||
!!inquirer &&
|
||||
inquirer.isTransient &&
|
||||
!rootInquirer))
|
||||
);
|
||||
|
||||
// Transient provider inquired by non-transient (e.g., DEFAULT -> TRANSIENT)
|
||||
if (isStaticTransient && inquirer && !inquirer.isTransient) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Nested transient with non-transient root (e.g., DEFAULT -> TRANSIENT -> TRANSIENT)
|
||||
if (isStaticTransient && rootInquirer && !rootInquirer.isTransient) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Nested transient during initial instantiation (rootInquirer not yet set)
|
||||
if (isStaticTransient && inquirer?.isTransient && !rootInquirer) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public attachRootInquirer(inquirer: InstanceWrapper) {
|
||||
|
||||
Reference in New Issue
Block a user