(provider: Provider, enhancerSubtype?: EnhancerSubtype)
| 247 | enhancerSubtype: EnhancerSubtype, |
| 248 | ): InjectionToken; |
| 249 | public addProvider(provider: Provider, enhancerSubtype?: EnhancerSubtype) { |
| 250 | if (this.isCustomProvider(provider)) { |
| 251 | if (this.isEntryProvider(provider.provide)) { |
| 252 | this._entryProviderKeys.add(provider.provide); |
| 253 | } |
| 254 | return this.addCustomProvider(provider, this._providers, enhancerSubtype); |
| 255 | } |
| 256 | |
| 257 | const isAlreadyDeclared = this._providers.has(provider); |
| 258 | if ( |
| 259 | (this.isTransientProvider(provider) || |
| 260 | this.isRequestScopeProvider(provider)) && |
| 261 | isAlreadyDeclared |
| 262 | ) { |
| 263 | return provider; |
| 264 | } |
| 265 | |
| 266 | this._providers.set( |
| 267 | provider, |
| 268 | new InstanceWrapper({ |
| 269 | token: provider, |
| 270 | name: (provider as Type<Injectable>).name, |
| 271 | metatype: provider as Type<Injectable>, |
| 272 | instance: null, |
| 273 | isResolved: false, |
| 274 | scope: getClassScope(provider), |
| 275 | durable: isDurable(provider), |
| 276 | host: this, |
| 277 | }), |
| 278 | ); |
| 279 | |
| 280 | if (this.isEntryProvider(provider)) { |
| 281 | this._entryProviderKeys.add(provider); |
| 282 | } |
| 283 | |
| 284 | return provider as Type<Injectable>; |
| 285 | } |
| 286 | |
| 287 | public isCustomProvider( |
| 288 | provider: Provider, |
no test coverage detected