MCPcopy
hub / github.com/nestjs/nest / insertProvider

Method insertProvider

packages/core/scanner.ts:453–500  ·  view source on GitHub ↗
(provider: Provider, token: string)

Source from the content-addressed store, hash-verified

451 }
452
453 public insertProvider(provider: Provider, token: string) {
454 const isCustomProvider = this.isCustomProvider(provider);
455 if (!isCustomProvider) {
456 return this.container.addProvider(provider, token);
457 }
458 const applyProvidersMap = this.getApplyProvidersMap();
459 const providersKeys = Object.keys(applyProvidersMap);
460 const type = provider.provide;
461
462 if (!providersKeys.includes(type as string)) {
463 return this.container.addProvider(provider as any, token);
464 }
465 const uuid = UuidFactory.get(type.toString());
466 const providerToken = `${type as string} (UUID: ${uuid})`;
467
468 let scope = (provider as ClassProvider | FactoryProvider).scope;
469 if (isNil(scope) && (provider as ClassProvider).useClass) {
470 scope = getClassScope((provider as ClassProvider).useClass);
471 }
472 this.applicationProvidersApplyMap.push({
473 type,
474 moduleKey: token,
475 providerKey: providerToken,
476 scope,
477 });
478
479 const newProvider = {
480 ...provider,
481 provide: providerToken,
482 scope,
483 } as Provider;
484
485 const enhancerSubtype =
486 ENHANCER_TOKEN_TO_SUBTYPE_MAP[
487 type as
488 | typeof APP_GUARD
489 | typeof APP_PIPE
490 | typeof APP_FILTER
491 | typeof APP_INTERCEPTOR
492 ];
493 const factoryOrClassProvider = newProvider as
494 | FactoryProvider
495 | ClassProvider;
496 if (this.isRequestOrTransient(factoryOrClassProvider.scope!)) {
497 return this.container.addInjectable(newProvider, token, enhancerSubtype);
498 }
499 this.container.addProvider(newProvider, token, enhancerSubtype);
500 }
501
502 public insertInjectable(
503 injectable: Type<Injectable> | object,

Callers 2

reflectProvidersMethod · 0.95
scanner.spec.tsFile · 0.80

Calls 9

isCustomProviderMethod · 0.95
getApplyProvidersMapMethod · 0.95
isRequestOrTransientMethod · 0.95
isNilFunction · 0.90
getClassScopeFunction · 0.90
getMethod · 0.65
addProviderMethod · 0.45
toStringMethod · 0.45
addInjectableMethod · 0.45

Tested by

no test coverage detected