|
| 1 | +import{ |
| 2 | +EnvironmentProviders, |
| 3 | +InjectionToken, |
| 4 | +Injector, |
| 5 | +NgModule, |
| 6 | +NgZone, |
| 7 | +Optional, |
| 8 | +makeEnvironmentProviders, |
| 9 | +}from'@angular/core'; |
| 10 | +import{VERSION,ɵAngularFireSchedulers,ɵgetDefaultInstanceOf}from'@angular/fire'; |
| 11 | +import{FirebaseApp,FirebaseApps}from'@angular/fire/app'; |
| 12 | +import{AppCheckInstances}from'@angular/fire/app-check'; |
| 13 | +import{AIasFirebaseAI}from'firebase/ai'; |
| 14 | +import{registerVersion}from'firebase/app'; |
| 15 | +import{AI,AIInstances,AI_PROVIDER_NAME}from'./ai'; |
| 16 | + |
| 17 | +exportconstPROVIDED_AI_INSTANCES=newInjectionToken<AI[]>('angularfire2.ai-instances'); |
| 18 | + |
| 19 | +exportfunctiondefaultAIInstanceFactory(provided:FirebaseAI[]|undefined,defaultApp:FirebaseApp){ |
| 20 | +constdefaultAI=ɵgetDefaultInstanceOf<FirebaseAI>(AI_PROVIDER_NAME,provided,defaultApp); |
| 21 | +returndefaultAI&&newAI(defaultAI); |
| 22 | +} |
| 23 | + |
| 24 | +exportfunctionAIInstanceFactory(fn:(injector:Injector)=>FirebaseAI){ |
| 25 | +return(zone:NgZone,injector:Injector)=>{ |
| 26 | +constai=zone.runOutsideAngular(()=>fn(injector)); |
| 27 | +returnnewAI(ai); |
| 28 | +}; |
| 29 | +} |
| 30 | + |
| 31 | +constAI_INSTANCES_PROVIDER={ |
| 32 | +provide:AIInstances, |
| 33 | +deps:[ |
| 34 | +[newOptional(),PROVIDED_AI_INSTANCES], |
| 35 | +] |
| 36 | +}; |
| 37 | + |
| 38 | +constDEFAULT_AI_INSTANCE_PROVIDER={ |
| 39 | +provide:AI, |
| 40 | +useFactory:defaultAIInstanceFactory, |
| 41 | +deps:[ |
| 42 | +[newOptional(),PROVIDED_AI_INSTANCES], |
| 43 | +FirebaseApp, |
| 44 | +] |
| 45 | +}; |
| 46 | + |
| 47 | +@NgModule({ |
| 48 | +providers:[ |
| 49 | +DEFAULT_AI_INSTANCE_PROVIDER, |
| 50 | +AI_INSTANCES_PROVIDER, |
| 51 | +] |
| 52 | +}) |
| 53 | +exportclassAIModule{ |
| 54 | +constructor(){ |
| 55 | +registerVersion('angularfire',VERSION.full,'ai'); |
| 56 | +} |
| 57 | +} |
| 58 | + |
| 59 | +exportfunctionprovideAI(fn:(injector:Injector)=>FirebaseAI, ...deps:any[]):EnvironmentProviders{ |
| 60 | +registerVersion('angularfire',VERSION.full,'ai'); |
| 61 | + |
| 62 | +returnmakeEnvironmentProviders([ |
| 63 | +DEFAULT_AI_INSTANCE_PROVIDER, |
| 64 | +AI_INSTANCES_PROVIDER, |
| 65 | +{ |
| 66 | +provide:PROVIDED_AI_INSTANCES, |
| 67 | +useFactory:AIInstanceFactory(fn), |
| 68 | +multi:true, |
| 69 | +deps:[ |
| 70 | +NgZone, |
| 71 | +Injector, |
| 72 | +ɵAngularFireSchedulers, |
| 73 | +FirebaseApps, |
| 74 | +[newOptional(),AppCheckInstances], |
| 75 | + ...deps, |
| 76 | +] |
| 77 | +} |
| 78 | +]); |
| 79 | +} |