@dagonmetric/ng-config-firebase-remote-config
Version:
Google Firebase Remote Config integration of @dagonMetric/ng-config for Angular applications.
2 lines • 3.44 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("rxjs"),require("rxjs/operators"),require("firebase/app"),require("@dagonmetric/ng-config")):"function"==typeof define&&define.amd?define("@dagonmetric/ng-config-firebase-remote-config",["exports","@angular/core","@angular/common","rxjs","rxjs/operators","firebase/app","@dagonmetric/ng-config"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ngConfig=e.ngConfig||{},e.ngConfig.firebaseRemoteConfig={}),e.ng.core,e.ng.common,e.rxjs,e.rxjs.operators,e.firebase.app,e.ngConfig)}(this,(function(e,t,o,r,i,n,s){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=a(n);const f=new t.InjectionToken("FirebaseRemoteConfigProviderOptions");class u{constructor(e,t=r.queueScheduler){this.zone=e,this.delegate=t}now(){return this.delegate.now()}schedule(e,t,o){const r=this.zone;return this.delegate.schedule((function(t){r.runGuarded((()=>{e.apply(this,[t])}))}),t,o)}}const p=/__/g,g=/^[_]?[a-zA-Z]/,d=e=>{for(const t of e)if(!g.test(t))return!1;return!0};class l{constructor(e,t,n){this.options=e,this.ngZone=n,this.isBrowser=o.isPlatformBrowser(t);const s=r.of(void 0).pipe(i.observeOn(this.ngZone.runOutsideAngular((()=>new u(Zone.current)))),i.switchMap((()=>this.isBrowser?import("firebase/remote-config"):r.EMPTY)),i.map((()=>function(e,t,o){return o=o||"[DEFAULT]",c.default.apps.filter((e=>e&&e.name===o))[0]||t.runOutsideAngular((()=>c.default.initializeApp(e,o)))}(this.options.firebaseConfig,this.ngZone,this.options.appName))),i.map((e=>e.remoteConfig())),i.tap((e=>{this.options.remoteConfigSettings&&(e.settings=this.options.remoteConfigSettings)})),i.startWith(void 0),i.shareReplay({bufferSize:1,refCount:!1}));this.rc=s.pipe(i.filter((e=>!!e)))}get name(){return"FirebaseRemoteConfigProvider"}load(){return this.rc.pipe(i.switchMap((e=>this.ngZone.runOutsideAngular((async()=>{if(!this.isBrowser)return{};await e.activate();try{await e.fetch(),await e.activate()}catch(e){if(this.options.throwIfLoadError)throw e}return await e.ensureInitialized(),e.getAll()})))),i.map((e=>{const t=Object.keys(e),o={};for(const r of t){const t=e[r].asString();let i=r;if(this.options.prefix){if(!r.toLowerCase().startsWith(this.options.prefix.toLowerCase()))continue;i=r.substr(this.options.prefix.length)}const n=i.split(p);if(n.length>1&&d(n)){const e=n[0];o[e]&&"object"==typeof o[e]||(o[e]={});let r=o[e];for(let e=1;e<n.length;e++){const o=n[e];if(e===n.length-1){r[o]=t;break}r[o]&&"object"==typeof r[o]||(r[o]={}),r=r[o]}}else o[i]=t}return o})))}}l.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new l(t.ɵɵinject(f),t.ɵɵinject(t.PLATFORM_ID),t.ɵɵinject(t.NgZone))},token:l,providedIn:"any"}),l.decorators=[{type:t.Injectable,args:[{providedIn:"any"}]}],l.ctorParameters=()=>[{type:void 0,decorators:[{type:t.Inject,args:[f]}]},{type:Object,decorators:[{type:t.Inject,args:[t.PLATFORM_ID]}]},{type:t.NgZone}];class h{static configure(e){return{ngModule:h,providers:[{provide:f,useValue:e}]}}}h.decorators=[{type:t.NgModule,args:[{providers:[{provide:s.CONFIG_PROVIDER,useClass:l,multi:!0}]}]}],e.FIREBASE_REMOTE_CONFIG_PROVIDER_OPTIONS=f,e.FirebaseRemoteConfigProvider=l,e.FirebaseRemoteConfigProviderModule=h,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ng-config-firebase-remote-config.umd.min.js.map