UNPKG

31.3 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@angular/fire'), require('@angular/fire/compat'), require('firebase/remote-config'), require('firebase/compat/app')) :
3 typeof define === 'function' && define.amd ? define('@angular/fire/compat/remote-config', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@angular/fire', '@angular/fire/compat', 'firebase/remote-config', 'firebase/compat/app'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.angular = global.angular || {}, global.angular.fire = global.angular.fire || {}, global.angular.fire.compat = global.angular.fire.compat || {}, global.angular.fire.compat['remote-config'] = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.angular.fire, global.angular.fire.compat, global.remoteConfig, global.firebase));
5}(this, (function (exports, i0, rxjs, operators, i1, compat, remoteConfig, firebase) { 'use strict';
6
7 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
9 function _interopNamespace(e) {
10 if (e && e.__esModule) return e;
11 var n = Object.create(null);
12 if (e) {
13 Object.keys(e).forEach(function (k) {
14 if (k !== 'default') {
15 var d = Object.getOwnPropertyDescriptor(e, k);
16 Object.defineProperty(n, k, d.get ? d : {
17 enumerable: true,
18 get: function () {
19 return e[k];
20 }
21 });
22 }
23 });
24 }
25 n['default'] = e;
26 return Object.freeze(n);
27 }
28
29 var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
30 var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
31 var firebase__default = /*#__PURE__*/_interopDefaultLegacy(firebase);
32
33 /*! *****************************************************************************
34 Copyright (c) Microsoft Corporation.
35
36 Permission to use, copy, modify, and/or distribute this software for any
37 purpose with or without fee is hereby granted.
38
39 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
40 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
41 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
42 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
43 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
44 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
45 PERFORMANCE OF THIS SOFTWARE.
46 ***************************************************************************** */
47 /* global Reflect, Promise */
48 var extendStatics = function (d, b) {
49 extendStatics = Object.setPrototypeOf ||
50 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51 function (d, b) { for (var p in b)
52 if (Object.prototype.hasOwnProperty.call(b, p))
53 d[p] = b[p]; };
54 return extendStatics(d, b);
55 };
56 function __extends(d, b) {
57 if (typeof b !== "function" && b !== null)
58 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
59 extendStatics(d, b);
60 function __() { this.constructor = d; }
61 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
62 }
63 var __assign = function () {
64 __assign = Object.assign || function __assign(t) {
65 for (var s, i = 1, n = arguments.length; i < n; i++) {
66 s = arguments[i];
67 for (var p in s)
68 if (Object.prototype.hasOwnProperty.call(s, p))
69 t[p] = s[p];
70 }
71 return t;
72 };
73 return __assign.apply(this, arguments);
74 };
75 function __rest(s, e) {
76 var t = {};
77 for (var p in s)
78 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
79 t[p] = s[p];
80 if (s != null && typeof Object.getOwnPropertySymbols === "function")
81 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
82 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
83 t[p[i]] = s[p[i]];
84 }
85 return t;
86 }
87 function __decorate(decorators, target, key, desc) {
88 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
89 if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
90 r = Reflect.decorate(decorators, target, key, desc);
91 else
92 for (var i = decorators.length - 1; i >= 0; i--)
93 if (d = decorators[i])
94 r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
95 return c > 3 && r && Object.defineProperty(target, key, r), r;
96 }
97 function __param(paramIndex, decorator) {
98 return function (target, key) { decorator(target, key, paramIndex); };
99 }
100 function __metadata(metadataKey, metadataValue) {
101 if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
102 return Reflect.metadata(metadataKey, metadataValue);
103 }
104 function __awaiter(thisArg, _arguments, P, generator) {
105 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
106 return new (P || (P = Promise))(function (resolve, reject) {
107 function fulfilled(value) { try {
108 step(generator.next(value));
109 }
110 catch (e) {
111 reject(e);
112 } }
113 function rejected(value) { try {
114 step(generator["throw"](value));
115 }
116 catch (e) {
117 reject(e);
118 } }
119 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
120 step((generator = generator.apply(thisArg, _arguments || [])).next());
121 });
122 }
123 function __generator(thisArg, body) {
124 var _ = { label: 0, sent: function () { if (t[0] & 1)
125 throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
126 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
127 function verb(n) { return function (v) { return step([n, v]); }; }
128 function step(op) {
129 if (f)
130 throw new TypeError("Generator is already executing.");
131 while (_)
132 try {
133 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
134 return t;
135 if (y = 0, t)
136 op = [op[0] & 2, t.value];
137 switch (op[0]) {
138 case 0:
139 case 1:
140 t = op;
141 break;
142 case 4:
143 _.label++;
144 return { value: op[1], done: false };
145 case 5:
146 _.label++;
147 y = op[1];
148 op = [0];
149 continue;
150 case 7:
151 op = _.ops.pop();
152 _.trys.pop();
153 continue;
154 default:
155 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
156 _ = 0;
157 continue;
158 }
159 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
160 _.label = op[1];
161 break;
162 }
163 if (op[0] === 6 && _.label < t[1]) {
164 _.label = t[1];
165 t = op;
166 break;
167 }
168 if (t && _.label < t[2]) {
169 _.label = t[2];
170 _.ops.push(op);
171 break;
172 }
173 if (t[2])
174 _.ops.pop();
175 _.trys.pop();
176 continue;
177 }
178 op = body.call(thisArg, _);
179 }
180 catch (e) {
181 op = [6, e];
182 y = 0;
183 }
184 finally {
185 f = t = 0;
186 }
187 if (op[0] & 5)
188 throw op[1];
189 return { value: op[0] ? op[1] : void 0, done: true };
190 }
191 }
192 var __createBinding = Object.create ? (function (o, m, k, k2) {
193 if (k2 === undefined)
194 k2 = k;
195 Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
196 }) : (function (o, m, k, k2) {
197 if (k2 === undefined)
198 k2 = k;
199 o[k2] = m[k];
200 });
201 function __exportStar(m, o) {
202 for (var p in m)
203 if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
204 __createBinding(o, m, p);
205 }
206 function __values(o) {
207 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
208 if (m)
209 return m.call(o);
210 if (o && typeof o.length === "number")
211 return {
212 next: function () {
213 if (o && i >= o.length)
214 o = void 0;
215 return { value: o && o[i++], done: !o };
216 }
217 };
218 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
219 }
220 function __read(o, n) {
221 var m = typeof Symbol === "function" && o[Symbol.iterator];
222 if (!m)
223 return o;
224 var i = m.call(o), r, ar = [], e;
225 try {
226 while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
227 ar.push(r.value);
228 }
229 catch (error) {
230 e = { error: error };
231 }
232 finally {
233 try {
234 if (r && !r.done && (m = i["return"]))
235 m.call(i);
236 }
237 finally {
238 if (e)
239 throw e.error;
240 }
241 }
242 return ar;
243 }
244 /** @deprecated */
245 function __spread() {
246 for (var ar = [], i = 0; i < arguments.length; i++)
247 ar = ar.concat(__read(arguments[i]));
248 return ar;
249 }
250 /** @deprecated */
251 function __spreadArrays() {
252 for (var s = 0, i = 0, il = arguments.length; i < il; i++)
253 s += arguments[i].length;
254 for (var r = Array(s), k = 0, i = 0; i < il; i++)
255 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
256 r[k] = a[j];
257 return r;
258 }
259 function __spreadArray(to, from) {
260 for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
261 to[j] = from[i];
262 return to;
263 }
264 function __await(v) {
265 return this instanceof __await ? (this.v = v, this) : new __await(v);
266 }
267 function __asyncGenerator(thisArg, _arguments, generator) {
268 if (!Symbol.asyncIterator)
269 throw new TypeError("Symbol.asyncIterator is not defined.");
270 var g = generator.apply(thisArg, _arguments || []), i, q = [];
271 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
272 function verb(n) { if (g[n])
273 i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
274 function resume(n, v) { try {
275 step(g[n](v));
276 }
277 catch (e) {
278 settle(q[0][3], e);
279 } }
280 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
281 function fulfill(value) { resume("next", value); }
282 function reject(value) { resume("throw", value); }
283 function settle(f, v) { if (f(v), q.shift(), q.length)
284 resume(q[0][0], q[0][1]); }
285 }
286 function __asyncDelegator(o) {
287 var i, p;
288 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
289 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
290 }
291 function __asyncValues(o) {
292 if (!Symbol.asyncIterator)
293 throw new TypeError("Symbol.asyncIterator is not defined.");
294 var m = o[Symbol.asyncIterator], i;
295 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
296 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
297 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
298 }
299 function __makeTemplateObject(cooked, raw) {
300 if (Object.defineProperty) {
301 Object.defineProperty(cooked, "raw", { value: raw });
302 }
303 else {
304 cooked.raw = raw;
305 }
306 return cooked;
307 }
308 ;
309 var __setModuleDefault = Object.create ? (function (o, v) {
310 Object.defineProperty(o, "default", { enumerable: true, value: v });
311 }) : function (o, v) {
312 o["default"] = v;
313 };
314 function __importStar(mod) {
315 if (mod && mod.__esModule)
316 return mod;
317 var result = {};
318 if (mod != null)
319 for (var k in mod)
320 if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
321 __createBinding(result, mod, k);
322 __setModuleDefault(result, mod);
323 return result;
324 }
325 function __importDefault(mod) {
326 return (mod && mod.__esModule) ? mod : { default: mod };
327 }
328 function __classPrivateFieldGet(receiver, state, kind, f) {
329 if (kind === "a" && !f)
330 throw new TypeError("Private accessor was defined without a getter");
331 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
332 throw new TypeError("Cannot read private member from an object whose class did not declare it");
333 return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
334 }
335 function __classPrivateFieldSet(receiver, state, value, kind, f) {
336 if (kind === "m")
337 throw new TypeError("Private method is not writable");
338 if (kind === "a" && !f)
339 throw new TypeError("Private accessor was defined without a setter");
340 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
341 throw new TypeError("Cannot write private member to an object whose class did not declare it");
342 return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
343 }
344
345 // DO NOT MODIFY, this file is autogenerated by tools/build.ts
346 // Export a null object with the same keys as firebase/compat/remote-config, so Proxy can work with proxy-polyfill in Internet Explorer
347 var proxyPolyfillCompat = {
348 app: null,
349 settings: null,
350 defaultConfig: null,
351 fetchTimeMillis: null,
352 lastFetchStatus: null,
353 activate: null,
354 ensureInitialized: null,
355 fetch: null,
356 fetchAndActivate: null,
357 getAll: null,
358 getBoolean: null,
359 getNumber: null,
360 getString: null,
361 getValue: null,
362 setLogLevel: null,
363 };
364
365 var SETTINGS = new i0.InjectionToken('angularfire2.remoteConfig.settings');
366 var DEFAULTS = new i0.InjectionToken('angularfire2.remoteConfig.defaultConfig');
367 var AS_TO_FN = { strings: 'asString', numbers: 'asNumber', booleans: 'asBoolean' };
368 var STATIC_VALUES = { numbers: 0, booleans: false, strings: undefined };
369 // TODO look into the types here, I don't like the anys
370 var proxyAll = function (observable, as) { return new Proxy(observable.pipe(mapToObject(as)), {
371 get: function (self, name) { return self[name] || observable.pipe(operators.map(function (all) { return all.find(function (p) { return p.key === name; }); }), operators.map(function (param) { return param ? param[AS_TO_FN[as]]() : STATIC_VALUES[as]; }), operators.distinctUntilChanged()); }
372 }); };
373 // TODO export as implements Partial<...> so minor doesn't break us
374 var Value = /** @class */ (function () {
375 // tslint:disable-next-line:variable-name
376 function Value(_source, _value) {
377 this._source = _source;
378 this._value = _value;
379 }
380 Value.prototype.asBoolean = function () {
381 return ['1', 'true', 't', 'y', 'yes', 'on'].indexOf(this._value.toLowerCase()) > -1;
382 };
383 Value.prototype.asString = function () {
384 return this._value;
385 };
386 Value.prototype.asNumber = function () {
387 return Number(this._value) || 0;
388 };
389 Value.prototype.getSource = function () {
390 return this._source;
391 };
392 return Value;
393 }());
394 // SEMVER use ConstructorParameters when we can support Typescript 3.6
395 var Parameter = /** @class */ (function (_super) {
396 __extends(Parameter, _super);
397 function Parameter(key, fetchTimeMillis, source, value) {
398 var _this = _super.call(this, source, value) || this;
399 _this.key = key;
400 _this.fetchTimeMillis = fetchTimeMillis;
401 return _this;
402 }
403 return Parameter;
404 }(Value));
405 // If it's a Parameter array, test any, else test the individual Parameter
406 var filterTest = function (fn) { return operators.filter(function (it) { return Array.isArray(it) ? it.some(fn) : fn(it); }); };
407 // Allow the user to bypass the default values and wait till they get something from the server, even if it's a cached copy;
408 // if used in conjuntion with first() it will only fetch RC values from the server if they aren't cached locally
409 var filterRemote = function () { return filterTest(function (p) { return p.getSource() === 'remote'; }); };
410 // filterFresh allows the developer to effectively set up a maximum cache time
411 var filterFresh = function (howRecentInMillis) { return filterTest(function (p) { return p.fetchTimeMillis + howRecentInMillis >= new Date().getTime(); }); };
412 // I ditched loading the defaults into RC and a simple map for scan since we already have our own defaults implementation.
413 // The idea here being that if they have a default that never loads from the server, they will be able to tell via fetchTimeMillis
414 // on the Parameter. Also if it doesn't come from the server it won't emit again in .changes, due to the distinctUntilChanged,
415 // which we can simplify to === rather than deep comparison
416 var scanToParametersArray = function (remoteConfig) { return rxjs.pipe(operators.withLatestFrom(remoteConfig), operators.scan(function (existing, _a) {
417 var _b = __read(_a, 2), all = _b[0], rc = _b[1];
418 // SEMVER use "new Set" to unique once we're only targeting es6
419 // at the scale we expect remote config to be at, we probably won't see a performance hit from this unoptimized uniqueness
420 // implementation.
421 // const allKeys = [...new Set([...existing.map(p => p.key), ...Object.keys(all)])];
422 var allKeys = __spreadArray(__spreadArray([], __read(existing.map(function (p) { return p.key; }))), __read(Object.keys(all))).filter(function (v, i, a) { return a.indexOf(v) === i; });
423 return allKeys.map(function (key) {
424 var updatedValue = all[key];
425 return updatedValue ? new Parameter(key, rc ? rc.fetchTimeMillis : -1, updatedValue.getSource(), updatedValue.asString())
426 : existing.find(function (p) { return p.key === key; });
427 });
428 }, [])); };
429 var AngularFireRemoteConfig = /** @class */ (function () {
430 function AngularFireRemoteConfig(options, name, settings, defaultConfig, zone, schedulers,
431 // tslint:disable-next-line:ban-types
432 platformId) {
433 this.zone = zone;
434 var remoteConfig$ = rxjs.of(undefined).pipe(operators.observeOn(schedulers.outsideAngular), operators.switchMap(function () { return remoteConfig.isSupported(); }), operators.switchMap(function (isSupported) { return isSupported ? rxjs.of(undefined) : rxjs.EMPTY; }), operators.map(function () { return compat.ɵfirebaseAppFactory(options, zone, name); }), operators.map(function (app) { return compat.ɵcacheInstance(app.name + ".remote-config", 'AngularFireRemoteConfig', app.name, function () {
435 var rc = app.remoteConfig();
436 if (settings) {
437 rc.settings = settings;
438 }
439 if (defaultConfig) {
440 rc.defaultConfig = defaultConfig;
441 }
442 return rc;
443 }, [settings, defaultConfig]); }), operators.startWith(undefined), operators.shareReplay({ bufferSize: 1, refCount: false }));
444 var loadedRemoteConfig$ = remoteConfig$.pipe(operators.filter(function (rc) { return !!rc; }));
445 var default$ = rxjs.of(Object.keys(defaultConfig || {}).reduce(function (c, k) {
446 var _a;
447 return (Object.assign(Object.assign({}, c), (_a = {}, _a[k] = new Value('default', defaultConfig[k].toString()), _a)));
448 }, {}));
449 // we should filter out the defaults we provided to RC, since we have our own implementation
450 // that gives us a -1 for fetchTimeMillis (so filterFresh can filter them out)
451 var filterOutDefaults = operators.map(function (all) { return Object.keys(all)
452 .filter(function (key) { return all[key].getSource() !== 'default'; })
453 .reduce(function (acc, key) {
454 var _a;
455 return (Object.assign(Object.assign({}, acc), (_a = {}, _a[key] = all[key], _a)));
456 }, {}); });
457 var existing$ = loadedRemoteConfig$.pipe(operators.switchMap(function (rc) { return rc.activate()
458 .then(function () { return rc.ensureInitialized(); })
459 .then(function () { return rc.getAll(); }); }), filterOutDefaults);
460 var fresh$ = loadedRemoteConfig$.pipe(operators.switchMap(function (rc) { return zone.runOutsideAngular(function () { return rc.fetchAndActivate()
461 .then(function () { return rc.ensureInitialized(); })
462 .then(function () { return rc.getAll(); }); }); }), filterOutDefaults);
463 this.parameters = rxjs.concat(default$, existing$, fresh$).pipe(scanToParametersArray(remoteConfig$), i1.keepUnstableUntilFirst, operators.shareReplay({ bufferSize: 1, refCount: true }));
464 this.changes = this.parameters.pipe(operators.switchMap(function (params) { return rxjs.of.apply(void 0, __spreadArray([], __read(params))); }), operators.groupBy(function (param) { return param.key; }), operators.mergeMap(function (group) { return group.pipe(operators.distinctUntilChanged()); }));
465 this.strings = proxyAll(this.parameters, 'strings');
466 this.booleans = proxyAll(this.parameters, 'booleans');
467 this.numbers = proxyAll(this.parameters, 'numbers');
468 return compat.ɵlazySDKProxy(this, loadedRemoteConfig$, zone);
469 }
470 return AngularFireRemoteConfig;
471 }());
472 AngularFireRemoteConfig.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfig, deps: [{ token: compat.FIREBASE_OPTIONS }, { token: compat.FIREBASE_APP_NAME, optional: true }, { token: SETTINGS, optional: true }, { token: DEFAULTS, optional: true }, { token: i0__namespace.NgZone }, { token: i1__namespace.ɵAngularFireSchedulers }, { token: i0.PLATFORM_ID }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
473 AngularFireRemoteConfig.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfig, providedIn: 'any' });
474 i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfig, decorators: [{
475 type: i0.Injectable,
476 args: [{
477 providedIn: 'any'
478 }]
479 }], ctorParameters: function () {
480 return [{ type: undefined, decorators: [{
481 type: i0.Inject,
482 args: [compat.FIREBASE_OPTIONS]
483 }] }, { type: undefined, decorators: [{
484 type: i0.Optional
485 }, {
486 type: i0.Inject,
487 args: [compat.FIREBASE_APP_NAME]
488 }] }, { type: undefined, decorators: [{
489 type: i0.Optional
490 }, {
491 type: i0.Inject,
492 args: [SETTINGS]
493 }] }, { type: undefined, decorators: [{
494 type: i0.Optional
495 }, {
496 type: i0.Inject,
497 args: [DEFAULTS]
498 }] }, { type: i0__namespace.NgZone }, { type: i1__namespace.ɵAngularFireSchedulers }, { type: Object, decorators: [{
499 type: i0.Inject,
500 args: [i0.PLATFORM_ID]
501 }] }];
502 } });
503 var budget = function (interval) { return function (source) { return new rxjs.Observable(function (observer) {
504 var timedOut = false;
505 // TODO use scheduler task rather than settimeout
506 var timeout = setTimeout(function () {
507 observer.complete();
508 timedOut = true;
509 }, interval);
510 return source.subscribe({
511 next: function (val) {
512 if (!timedOut) {
513 observer.next(val);
514 }
515 },
516 error: function (err) {
517 if (!timedOut) {
518 clearTimeout(timeout);
519 observer.error(err);
520 }
521 },
522 complete: function () {
523 if (!timedOut) {
524 clearTimeout(timeout);
525 observer.complete();
526 }
527 }
528 });
529 }); }; };
530 var typedMethod = function (it) {
531 switch (typeof it) {
532 case 'string':
533 return 'asString';
534 case 'boolean':
535 return 'asBoolean';
536 case 'number':
537 return 'asNumber';
538 default:
539 return 'asString';
540 }
541 };
542 function scanToObject(to) {
543 if (to === void 0) { to = 'strings'; }
544 return rxjs.pipe(
545 // TODO cleanup
546 operators.scan(function (c, p) {
547 var _a;
548 return (Object.assign(Object.assign({}, c), (_a = {}, _a[p.key] = typeof to === 'object' ?
549 p[typedMethod(to[p.key])]() :
550 p[AS_TO_FN[to]](), _a)));
551 }, typeof to === 'object' ?
552 to :
553 {}), operators.debounceTime(1), budget(10), operators.distinctUntilChanged(function (a, b) { return JSON.stringify(a) === JSON.stringify(b); }));
554 }
555 function mapToObject(to) {
556 if (to === void 0) { to = 'strings'; }
557 return rxjs.pipe(
558 // TODO this is getting a little long, cleanup
559 operators.map(function (params) { return params.reduce(function (c, p) {
560 var _a;
561 return (Object.assign(Object.assign({}, c), (_a = {}, _a[p.key] = typeof to === 'object' ?
562 p[typedMethod(to[p.key])]() :
563 p[AS_TO_FN[to]](), _a)));
564 }, typeof to === 'object' ?
565 to :
566 {}); }), operators.distinctUntilChanged(function (a, b) { return JSON.stringify(a) === JSON.stringify(b); }));
567 }
568 compat.ɵapplyMixins(AngularFireRemoteConfig, [proxyPolyfillCompat]);
569
570 var AngularFireRemoteConfigModule = /** @class */ (function () {
571 function AngularFireRemoteConfigModule() {
572 firebase__default['default'].registerVersion('angularfire', i1.VERSION.full, 'rc-compat');
573 }
574 return AngularFireRemoteConfigModule;
575 }());
576 AngularFireRemoteConfigModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfigModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
577 AngularFireRemoteConfigModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfigModule });
578 AngularFireRemoteConfigModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfigModule, providers: [AngularFireRemoteConfig] });
579 i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0__namespace, type: AngularFireRemoteConfigModule, decorators: [{
580 type: i0.NgModule,
581 args: [{
582 providers: [AngularFireRemoteConfig]
583 }]
584 }], ctorParameters: function () { return []; } });
585
586 /**
587 * Generated bundle index. Do not edit.
588 */
589
590 exports.AngularFireRemoteConfig = AngularFireRemoteConfig;
591 exports.AngularFireRemoteConfigModule = AngularFireRemoteConfigModule;
592 exports.DEFAULTS = DEFAULTS;
593 exports.Parameter = Parameter;
594 exports.SETTINGS = SETTINGS;
595 exports.Value = Value;
596 exports.budget = budget;
597 exports.filterFresh = filterFresh;
598 exports.filterRemote = filterRemote;
599 exports.mapToObject = mapToObject;
600 exports.scanToObject = scanToObject;
601
602 Object.defineProperty(exports, '__esModule', { value: true });
603
604})));
605//# sourceMappingURL=angular-fire-compat-remote-config.umd.js.map