in src/dependency-container.ts [393:422]
public createChildContainer(): DependencyContainer {
const childContainer = new InternalDependencyContainer(this);
for (const [token, registrations] of this._registry.entries()) {
// If there are any ContainerScoped registrations, we need to copy
// ALL registrations to the child container, if we were to copy just
// the ContainerScoped registrations, we would lose access to the others
if (
registrations.some(
({options}) => options.lifecycle === Lifecycle.ContainerScoped
)
) {
childContainer._registry.setAll(
token,
registrations.map<Registration>(registration => {
if (registration.options.lifecycle === Lifecycle.ContainerScoped) {
return {
provider: registration.provider,
options: registration.options
};
}
return registration;
})
);
}
}
return childContainer;
}