@angular/fire 18.0.1 → 19.0.0-canary.a58b329
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/analytics/firebase.d.ts +2 -2
- package/analytics/screen-tracking.service.d.ts +1 -1
- package/auth/rxfire.d.ts +2 -2
- package/compat/database/database.d.ts +1 -1
- package/compat/firestore/firestore.d.ts +1 -1
- package/compat/storage/pipes/storageUrl.pipe.d.ts +2 -2
- package/compat/storage/storage.d.ts +1 -1
- package/compat/storage/storage.module.d.ts +1 -1
- package/database/rxfire.d.ts +4 -4
- package/docs/install-and-setup.md +10 -5
- package/docs/vertexai.md +3 -3
- package/fesm2022/angular-fire-analytics.mjs +12 -12
- package/fesm2022/angular-fire-analytics.mjs.map +1 -1
- package/fesm2022/angular-fire-app-check.mjs +4 -4
- package/fesm2022/angular-fire-app-check.mjs.map +1 -1
- package/fesm2022/angular-fire-app.mjs +4 -4
- package/fesm2022/angular-fire-app.mjs.map +1 -1
- package/fesm2022/angular-fire-auth-guard.mjs +7 -7
- package/fesm2022/angular-fire-auth-guard.mjs.map +1 -1
- package/fesm2022/angular-fire-auth.mjs +6 -6
- package/fesm2022/angular-fire-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-analytics.mjs +13 -13
- package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-auth-guard.mjs +7 -7
- package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-auth.mjs +7 -7
- package/fesm2022/angular-fire-compat-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-database.mjs +7 -7
- package/fesm2022/angular-fire-compat-database.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-firestore.mjs +9 -9
- package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-functions.mjs +7 -7
- package/fesm2022/angular-fire-compat-functions.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-messaging.mjs +7 -7
- package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-performance.mjs +10 -10
- package/fesm2022/angular-fire-compat-performance.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-remote-config.mjs +7 -7
- package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-storage.mjs +16 -15
- package/fesm2022/angular-fire-compat-storage.mjs.map +1 -1
- package/fesm2022/angular-fire-compat.mjs +4 -4
- package/fesm2022/angular-fire-compat.mjs.map +1 -1
- package/fesm2022/angular-fire-database.mjs +8 -8
- package/fesm2022/angular-fire-database.mjs.map +1 -1
- package/fesm2022/angular-fire-firestore-lite.mjs +11 -10
- package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -1
- package/fesm2022/angular-fire-firestore.mjs +14 -13
- package/fesm2022/angular-fire-firestore.mjs.map +1 -1
- package/fesm2022/angular-fire-functions.mjs +4 -4
- package/fesm2022/angular-fire-functions.mjs.map +1 -1
- package/fesm2022/angular-fire-messaging.mjs +4 -4
- package/fesm2022/angular-fire-messaging.mjs.map +1 -1
- package/fesm2022/angular-fire-performance.mjs +6 -6
- package/fesm2022/angular-fire-performance.mjs.map +1 -1
- package/fesm2022/angular-fire-remote-config.mjs +9 -9
- package/fesm2022/angular-fire-remote-config.mjs.map +1 -1
- package/fesm2022/angular-fire-storage.mjs +4 -4
- package/fesm2022/angular-fire-storage.mjs.map +1 -1
- package/fesm2022/{angular-fire-vertexai-preview.mjs → angular-fire-vertexai.mjs} +8 -8
- package/fesm2022/angular-fire-vertexai.mjs.map +1 -0
- package/fesm2022/angular-fire.mjs +37 -57
- package/fesm2022/angular-fire.mjs.map +1 -1
- package/firestore/firebase.d.ts +2 -1
- package/firestore/lite/firebase.d.ts +2 -1
- package/firestore/lite/rxfire.d.ts +4 -4
- package/firestore/rxfire.d.ts +7 -7
- package/package.json +16 -75
- package/performance/rxfire.d.ts +2 -2
- package/publish.sh +1 -0
- package/remote-config/rxfire.d.ts +5 -5
- package/schematics/add/index.js +1 -13
- package/schematics/deploy/actions.js +138 -394
- package/schematics/deploy/builder.js +139 -61
- package/schematics/setup/index.js +94 -64
- package/schematics/update/index.js +1 -7
- package/schematics/update/v7/index.js +1 -67
- package/schematics/versions.json +2 -3
- package/vertexai/firebase.d.ts +4 -0
- package/{vertexai-preview → vertexai}/index.d.ts +1 -1
- package/vertexai/package.json +3 -0
- package/{vertexai-preview → vertexai}/vertexai.d.ts +1 -1
- package/{vertexai-preview → vertexai}/vertexai.module.d.ts +1 -1
- package/zones.d.ts +3 -2
- package/esm2022/analytics/analytics.mjs +0 -16
- package/esm2022/analytics/analytics.module.mjs +0 -101
- package/esm2022/analytics/angular-fire-analytics.mjs +0 -5
- package/esm2022/analytics/firebase.mjs +0 -17
- package/esm2022/analytics/is-analytics-supported-factory.mjs +0 -16
- package/esm2022/analytics/overrides.mjs +0 -3
- package/esm2022/analytics/public_api.mjs +0 -6
- package/esm2022/analytics/screen-tracking.service.mjs +0 -148
- package/esm2022/analytics/user-tracking.service.mjs +0 -44
- package/esm2022/angular-fire.mjs +0 -5
- package/esm2022/app/angular-fire-app.mjs +0 -5
- package/esm2022/app/app.mjs +0 -15
- package/esm2022/app/app.module.mjs +0 -91
- package/esm2022/app/firebase.mjs +0 -13
- package/esm2022/app/public_api.mjs +0 -4
- package/esm2022/app-check/angular-fire-app-check.mjs +0 -5
- package/esm2022/app-check/app-check.mjs +0 -10
- package/esm2022/app-check/app-check.module.mjs +0 -80
- package/esm2022/app-check/firebase.mjs +0 -10
- package/esm2022/app-check/public_api.mjs +0 -5
- package/esm2022/auth/angular-fire-auth.mjs +0 -5
- package/esm2022/auth/auth.mjs +0 -16
- package/esm2022/auth/auth.module.mjs +0 -73
- package/esm2022/auth/firebase.mjs +0 -59
- package/esm2022/auth/public_api.mjs +0 -5
- package/esm2022/auth/rxfire.mjs +0 -7
- package/esm2022/auth-guard/angular-fire-auth-guard.mjs +0 -5
- package/esm2022/auth-guard/auth-guard.mjs +0 -53
- package/esm2022/auth-guard/auth-guard.module.mjs +0 -20
- package/esm2022/auth-guard/public_api.mjs +0 -3
- package/esm2022/compat/analytics/analytics.mjs +0 -160
- package/esm2022/compat/analytics/analytics.module.mjs +0 -35
- package/esm2022/compat/analytics/angular-fire-compat-analytics.mjs +0 -5
- package/esm2022/compat/analytics/base.mjs +0 -11
- package/esm2022/compat/analytics/public_api.mjs +0 -5
- package/esm2022/compat/analytics/screen-tracking.service.mjs +0 -49
- package/esm2022/compat/analytics/user-tracking.service.mjs +0 -53
- package/esm2022/compat/angular-fire-compat.mjs +0 -5
- package/esm2022/compat/auth/angular-fire-compat-auth.mjs +0 -5
- package/esm2022/compat/auth/auth.mjs +0 -161
- package/esm2022/compat/auth/auth.module.mjs +0 -20
- package/esm2022/compat/auth/base.mjs +0 -39
- package/esm2022/compat/auth/public_api.mjs +0 -4
- package/esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs +0 -5
- package/esm2022/compat/auth-guard/auth-guard.mjs +0 -53
- package/esm2022/compat/auth-guard/auth-guard.module.mjs +0 -20
- package/esm2022/compat/auth-guard/public_api.mjs +0 -3
- package/esm2022/compat/cache.mjs +0 -33
- package/esm2022/compat/database/angular-fire-compat-database.mjs +0 -5
- package/esm2022/compat/database/database.mjs +0 -119
- package/esm2022/compat/database/database.module.mjs +0 -20
- package/esm2022/compat/database/interfaces.mjs +0 -2
- package/esm2022/compat/database/list/audit-trail.mjs +0 -47
- package/esm2022/compat/database/list/changes.mjs +0 -85
- package/esm2022/compat/database/list/create-reference.mjs +0 -44
- package/esm2022/compat/database/list/data-operation.mjs +0 -11
- package/esm2022/compat/database/list/remove.mjs +0 -16
- package/esm2022/compat/database/list/snapshot-changes.mjs +0 -7
- package/esm2022/compat/database/list/state-changes.mjs +0 -9
- package/esm2022/compat/database/list/utils.mjs +0 -8
- package/esm2022/compat/database/object/create-reference.mjs +0 -19
- package/esm2022/compat/database/object/snapshot-changes.mjs +0 -7
- package/esm2022/compat/database/observable/fromRef.mjs +0 -48
- package/esm2022/compat/database/public_api.mjs +0 -9
- package/esm2022/compat/database/utils.mjs +0 -36
- package/esm2022/compat/firebase.app.mjs +0 -6
- package/esm2022/compat/firebase.app.module.mjs +0 -71
- package/esm2022/compat/firestore/angular-fire-compat-firestore.mjs +0 -5
- package/esm2022/compat/firestore/collection/changes.mjs +0 -108
- package/esm2022/compat/firestore/collection/collection.mjs +0 -123
- package/esm2022/compat/firestore/collection-group/collection-group.mjs +0 -86
- package/esm2022/compat/firestore/document/document.mjs +0 -87
- package/esm2022/compat/firestore/firestore.mjs +0 -257
- package/esm2022/compat/firestore/firestore.module.mjs +0 -32
- package/esm2022/compat/firestore/interfaces.mjs +0 -2
- package/esm2022/compat/firestore/observable/fromRef.mjs +0 -40
- package/esm2022/compat/firestore/public_api.mjs +0 -9
- package/esm2022/compat/functions/angular-fire-compat-functions.mjs +0 -5
- package/esm2022/compat/functions/base.mjs +0 -8
- package/esm2022/compat/functions/functions.mjs +0 -69
- package/esm2022/compat/functions/functions.module.mjs +0 -20
- package/esm2022/compat/functions/public_api.mjs +0 -4
- package/esm2022/compat/messaging/angular-fire-compat-messaging.mjs +0 -5
- package/esm2022/compat/messaging/base.mjs +0 -9
- package/esm2022/compat/messaging/messaging.mjs +0 -81
- package/esm2022/compat/messaging/messaging.module.mjs +0 -20
- package/esm2022/compat/messaging/public_api.mjs +0 -3
- package/esm2022/compat/performance/angular-fire-compat-performance.mjs +0 -5
- package/esm2022/compat/performance/base.mjs +0 -9
- package/esm2022/compat/performance/performance.mjs +0 -105
- package/esm2022/compat/performance/performance.module.mjs +0 -27
- package/esm2022/compat/performance/performance.service.mjs +0 -28
- package/esm2022/compat/performance/public_api.mjs +0 -4
- package/esm2022/compat/proxy.mjs +0 -58
- package/esm2022/compat/public_api.mjs +0 -5
- package/esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs +0 -5
- package/esm2022/compat/remote-config/base.mjs +0 -20
- package/esm2022/compat/remote-config/interfaces.mjs +0 -2
- package/esm2022/compat/remote-config/public_api.mjs +0 -3
- package/esm2022/compat/remote-config/remote-config.mjs +0 -206
- package/esm2022/compat/remote-config/remote-config.module.mjs +0 -20
- package/esm2022/compat/storage/angular-fire-compat-storage.mjs +0 -5
- package/esm2022/compat/storage/interfaces.mjs +0 -2
- package/esm2022/compat/storage/observable/fromTask.mjs +0 -36
- package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +0 -56
- package/esm2022/compat/storage/public_api.mjs +0 -7
- package/esm2022/compat/storage/ref.mjs +0 -28
- package/esm2022/compat/storage/storage.mjs +0 -95
- package/esm2022/compat/storage/storage.module.mjs +0 -22
- package/esm2022/compat/storage/task.mjs +0 -21
- package/esm2022/core.mjs +0 -43
- package/esm2022/database/angular-fire-database.mjs +0 -5
- package/esm2022/database/database.mjs +0 -16
- package/esm2022/database/database.module.mjs +0 -76
- package/esm2022/database/firebase.mjs +0 -44
- package/esm2022/database/public_api.mjs +0 -5
- package/esm2022/database/rxfire.mjs +0 -13
- package/esm2022/firestore/angular-fire-firestore.mjs +0 -5
- package/esm2022/firestore/firebase.mjs +0 -73
- package/esm2022/firestore/firestore.mjs +0 -16
- package/esm2022/firestore/firestore.module.mjs +0 -76
- package/esm2022/firestore/lite/angular-fire-firestore-lite.mjs +0 -5
- package/esm2022/firestore/lite/firebase.mjs +0 -48
- package/esm2022/firestore/lite/lite.mjs +0 -16
- package/esm2022/firestore/lite/lite.module.mjs +0 -75
- package/esm2022/firestore/lite/public_api.mjs +0 -5
- package/esm2022/firestore/lite/rxfire.mjs +0 -12
- package/esm2022/firestore/public_api.mjs +0 -5
- package/esm2022/firestore/rxfire.mjs +0 -15
- package/esm2022/functions/angular-fire-functions.mjs +0 -5
- package/esm2022/functions/firebase.mjs +0 -9
- package/esm2022/functions/functions.mjs +0 -16
- package/esm2022/functions/functions.module.mjs +0 -76
- package/esm2022/functions/public_api.mjs +0 -5
- package/esm2022/functions/rxfire.mjs +0 -5
- package/esm2022/messaging/angular-fire-messaging.mjs +0 -5
- package/esm2022/messaging/firebase.mjs +0 -10
- package/esm2022/messaging/is-messaging-supported-factory.mjs +0 -16
- package/esm2022/messaging/messaging.mjs +0 -16
- package/esm2022/messaging/messaging.module.mjs +0 -93
- package/esm2022/messaging/overrides.mjs +0 -3
- package/esm2022/messaging/public_api.mjs +0 -4
- package/esm2022/performance/angular-fire-performance.mjs +0 -5
- package/esm2022/performance/firebase.mjs +0 -8
- package/esm2022/performance/performance.mjs +0 -16
- package/esm2022/performance/performance.module.mjs +0 -83
- package/esm2022/performance/public_api.mjs +0 -5
- package/esm2022/performance/rxfire.mjs +0 -8
- package/esm2022/public_api.mjs +0 -3
- package/esm2022/remote-config/angular-fire-remote-config.mjs +0 -5
- package/esm2022/remote-config/firebase.mjs +0 -17
- package/esm2022/remote-config/is-remote-config-supported-factory.mjs +0 -16
- package/esm2022/remote-config/overrides.mjs +0 -3
- package/esm2022/remote-config/public_api.mjs +0 -5
- package/esm2022/remote-config/remote-config.mjs +0 -16
- package/esm2022/remote-config/remote-config.module.mjs +0 -93
- package/esm2022/remote-config/rxfire.mjs +0 -9
- package/esm2022/storage/angular-fire-storage.mjs +0 -5
- package/esm2022/storage/firebase.mjs +0 -20
- package/esm2022/storage/public_api.mjs +0 -5
- package/esm2022/storage/rxfire.mjs +0 -6
- package/esm2022/storage/storage.mjs +0 -16
- package/esm2022/storage/storage.module.mjs +0 -76
- package/esm2022/vertexai-preview/angular-fire-vertexai-preview.mjs +0 -5
- package/esm2022/vertexai-preview/firebase.mjs +0 -7
- package/esm2022/vertexai-preview/public_api.mjs +0 -4
- package/esm2022/vertexai-preview/vertexai.mjs +0 -16
- package/esm2022/vertexai-preview/vertexai.module.mjs +0 -73
- package/esm2022/zones.mjs +0 -194
- package/fesm2022/angular-fire-vertexai-preview.mjs.map +0 -1
- package/schematics/common.js +0 -81
- package/schematics/deploy/functions-templates.js +0 -57
- package/schematics/firebaseTools.js +0 -78
- package/schematics/interfaces.js +0 -16
- package/schematics/setup/prompts.js +0 -195
- package/schematics/utils.js +0 -189
- package/vertexai-preview/firebase.d.ts +0 -4
- package/vertexai-preview/package.json +0 -3
- /package/{vertexai-preview → vertexai}/public_api.d.ts +0 -0
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
|
|
2
|
-
import { keepUnstableUntilFirst, ɵAngularFireSchedulers } from '@angular/fire';
|
|
3
|
-
import { ɵapplyMixins, ɵlazySDKProxy } from '@angular/fire/compat';
|
|
4
|
-
import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';
|
|
5
|
-
import { isSupported } from 'firebase/remote-config';
|
|
6
|
-
import { EMPTY, Observable, concat, of, pipe } from 'rxjs';
|
|
7
|
-
import { debounceTime, distinctUntilChanged, filter, groupBy, map, mergeMap, observeOn, scan, shareReplay, startWith, switchMap, withLatestFrom } from 'rxjs/operators';
|
|
8
|
-
import { proxyPolyfillCompat } from './base';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/fire";
|
|
11
|
-
export const SETTINGS = new InjectionToken('angularfire2.remoteConfig.settings');
|
|
12
|
-
export const DEFAULTS = new InjectionToken('angularfire2.remoteConfig.defaultConfig');
|
|
13
|
-
const AS_TO_FN = { strings: 'asString', numbers: 'asNumber', booleans: 'asBoolean' };
|
|
14
|
-
const STATIC_VALUES = { numbers: 0, booleans: false, strings: undefined };
|
|
15
|
-
// TODO look into the types here, I don't like the anys
|
|
16
|
-
const proxyAll = (observable, as) => new Proxy(observable.pipe(mapToObject(as)), {
|
|
17
|
-
get: (self, name) => self[name] || observable.pipe(map(all => all.find(p => p.key === name)), map(param => param ? param[AS_TO_FN[as]]() : STATIC_VALUES[as]), distinctUntilChanged())
|
|
18
|
-
});
|
|
19
|
-
// TODO export as implements Partial<...> so minor doesn't break us
|
|
20
|
-
export class Value {
|
|
21
|
-
_source;
|
|
22
|
-
_value;
|
|
23
|
-
asBoolean() {
|
|
24
|
-
return ['1', 'true', 't', 'y', 'yes', 'on'].indexOf(this._value.toLowerCase()) > -1;
|
|
25
|
-
}
|
|
26
|
-
asString() {
|
|
27
|
-
return this._value;
|
|
28
|
-
}
|
|
29
|
-
asNumber() {
|
|
30
|
-
return Number(this._value) || 0;
|
|
31
|
-
}
|
|
32
|
-
getSource() {
|
|
33
|
-
return this._source;
|
|
34
|
-
}
|
|
35
|
-
constructor(_source, _value) {
|
|
36
|
-
this._source = _source;
|
|
37
|
-
this._value = _value;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// SEMVER use ConstructorParameters when we can support Typescript 3.6
|
|
41
|
-
export class Parameter extends Value {
|
|
42
|
-
key;
|
|
43
|
-
fetchTimeMillis;
|
|
44
|
-
constructor(key, fetchTimeMillis, source, value) {
|
|
45
|
-
super(source, value);
|
|
46
|
-
this.key = key;
|
|
47
|
-
this.fetchTimeMillis = fetchTimeMillis;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// If it's a Parameter array, test any, else test the individual Parameter
|
|
51
|
-
const filterTest = (fn) => filter(it => Array.isArray(it) ? it.some(fn) : fn(it));
|
|
52
|
-
// Allow the user to bypass the default values and wait till they get something from the server, even if it's a cached copy;
|
|
53
|
-
// if used in conjuntion with first() it will only fetch RC values from the server if they aren't cached locally
|
|
54
|
-
export const filterRemote = () => filterTest(p => p.getSource() === 'remote');
|
|
55
|
-
// filterFresh allows the developer to effectively set up a maximum cache time
|
|
56
|
-
export const filterFresh = (howRecentInMillis) => filterTest(p => p.fetchTimeMillis + howRecentInMillis >= new Date().getTime());
|
|
57
|
-
// I ditched loading the defaults into RC and a simple map for scan since we already have our own defaults implementation.
|
|
58
|
-
// The idea here being that if they have a default that never loads from the server, they will be able to tell via fetchTimeMillis
|
|
59
|
-
// on the Parameter. Also if it doesn't come from the server it won't emit again in .changes, due to the distinctUntilChanged,
|
|
60
|
-
// which we can simplify to === rather than deep comparison
|
|
61
|
-
const scanToParametersArray = (remoteConfig) => pipe(withLatestFrom(remoteConfig), scan((existing, [all, rc]) => {
|
|
62
|
-
// SEMVER use "new Set" to unique once we're only targeting es6
|
|
63
|
-
// at the scale we expect remote config to be at, we probably won't see a performance hit from this unoptimized uniqueness
|
|
64
|
-
// implementation.
|
|
65
|
-
// const allKeys = [...new Set([...existing.map(p => p.key), ...Object.keys(all)])];
|
|
66
|
-
const allKeys = [...existing.map(p => p.key), ...Object.keys(all)].filter((v, i, a) => a.indexOf(v) === i);
|
|
67
|
-
return allKeys.map(key => {
|
|
68
|
-
const updatedValue = all[key];
|
|
69
|
-
return updatedValue ? new Parameter(key, rc ? rc.fetchTimeMillis : -1, updatedValue.getSource(), updatedValue.asString())
|
|
70
|
-
: existing.find(p => p.key === key);
|
|
71
|
-
});
|
|
72
|
-
}, []));
|
|
73
|
-
export class AngularFireRemoteConfig {
|
|
74
|
-
zone;
|
|
75
|
-
changes;
|
|
76
|
-
parameters;
|
|
77
|
-
numbers;
|
|
78
|
-
booleans;
|
|
79
|
-
strings;
|
|
80
|
-
constructor(options, name, settings, defaultConfig, zone, schedulers,
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/ban-types
|
|
82
|
-
platformId) {
|
|
83
|
-
this.zone = zone;
|
|
84
|
-
const remoteConfig$ = of(undefined).pipe(observeOn(schedulers.outsideAngular), switchMap(() => isSupported()), switchMap(isSupported => isSupported ? import('firebase/compat/remote-config') : EMPTY), map(() => ɵfirebaseAppFactory(options, zone, name)), map(app => ɵcacheInstance(`${app.name}.remote-config`, 'AngularFireRemoteConfig', app.name, () => {
|
|
85
|
-
const rc = app.remoteConfig();
|
|
86
|
-
if (settings) {
|
|
87
|
-
rc.settings = settings;
|
|
88
|
-
}
|
|
89
|
-
if (defaultConfig) {
|
|
90
|
-
rc.defaultConfig = defaultConfig;
|
|
91
|
-
}
|
|
92
|
-
return rc;
|
|
93
|
-
}, [settings, defaultConfig])), startWith(undefined), shareReplay({ bufferSize: 1, refCount: false }));
|
|
94
|
-
const loadedRemoteConfig$ = remoteConfig$.pipe(filter(rc => !!rc));
|
|
95
|
-
const default$ = of(Object.keys(defaultConfig || {}).reduce((c, k) => ({ ...c, [k]: new Value('default', defaultConfig[k].toString()) }), {}));
|
|
96
|
-
// we should filter out the defaults we provided to RC, since we have our own implementation
|
|
97
|
-
// that gives us a -1 for fetchTimeMillis (so filterFresh can filter them out)
|
|
98
|
-
const filterOutDefaults = map(all => Object.keys(all)
|
|
99
|
-
.filter(key => all[key].getSource() !== 'default')
|
|
100
|
-
.reduce((acc, key) => ({ ...acc, [key]: all[key] }), {}));
|
|
101
|
-
const existing$ = loadedRemoteConfig$.pipe(switchMap(rc => rc.activate()
|
|
102
|
-
.then(() => rc.ensureInitialized())
|
|
103
|
-
.then(() => rc.getAll())), filterOutDefaults);
|
|
104
|
-
const fresh$ = loadedRemoteConfig$.pipe(switchMap(rc => zone.runOutsideAngular(() => rc.fetchAndActivate()
|
|
105
|
-
.then(() => rc.ensureInitialized())
|
|
106
|
-
.then(() => rc.getAll()))), filterOutDefaults);
|
|
107
|
-
this.parameters = concat(default$, existing$, fresh$).pipe(scanToParametersArray(remoteConfig$), keepUnstableUntilFirst, shareReplay({ bufferSize: 1, refCount: true }));
|
|
108
|
-
this.changes = this.parameters.pipe(switchMap(params => of(...params)), groupBy(param => param.key), mergeMap(group => group.pipe(distinctUntilChanged())));
|
|
109
|
-
this.strings = proxyAll(this.parameters, 'strings');
|
|
110
|
-
this.booleans = proxyAll(this.parameters, 'booleans');
|
|
111
|
-
this.numbers = proxyAll(this.parameters, 'numbers');
|
|
112
|
-
return ɵlazySDKProxy(this, loadedRemoteConfig$, zone);
|
|
113
|
-
}
|
|
114
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfig, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: SETTINGS, optional: true }, { token: DEFAULTS, optional: true }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
115
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfig, providedIn: 'any' });
|
|
116
|
-
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfig, decorators: [{
|
|
118
|
-
type: Injectable,
|
|
119
|
-
args: [{
|
|
120
|
-
providedIn: 'any'
|
|
121
|
-
}]
|
|
122
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
123
|
-
type: Inject,
|
|
124
|
-
args: [FIREBASE_OPTIONS]
|
|
125
|
-
}] }, { type: undefined, decorators: [{
|
|
126
|
-
type: Optional
|
|
127
|
-
}, {
|
|
128
|
-
type: Inject,
|
|
129
|
-
args: [FIREBASE_APP_NAME]
|
|
130
|
-
}] }, { type: undefined, decorators: [{
|
|
131
|
-
type: Optional
|
|
132
|
-
}, {
|
|
133
|
-
type: Inject,
|
|
134
|
-
args: [SETTINGS]
|
|
135
|
-
}] }, { type: undefined, decorators: [{
|
|
136
|
-
type: Optional
|
|
137
|
-
}, {
|
|
138
|
-
type: Inject,
|
|
139
|
-
args: [DEFAULTS]
|
|
140
|
-
}] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: Object, decorators: [{
|
|
141
|
-
type: Inject,
|
|
142
|
-
args: [PLATFORM_ID]
|
|
143
|
-
}] }] });
|
|
144
|
-
export const budget = (interval) => (source) => new Observable(observer => {
|
|
145
|
-
let timedOut = false;
|
|
146
|
-
// TODO use scheduler task rather than settimeout
|
|
147
|
-
const timeout = setTimeout(() => {
|
|
148
|
-
observer.complete();
|
|
149
|
-
timedOut = true;
|
|
150
|
-
}, interval);
|
|
151
|
-
return source.subscribe({
|
|
152
|
-
next(val) {
|
|
153
|
-
if (!timedOut) {
|
|
154
|
-
observer.next(val);
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
error(err) {
|
|
158
|
-
if (!timedOut) {
|
|
159
|
-
clearTimeout(timeout);
|
|
160
|
-
observer.error(err);
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
complete() {
|
|
164
|
-
if (!timedOut) {
|
|
165
|
-
clearTimeout(timeout);
|
|
166
|
-
observer.complete();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
const typedMethod = (it) => {
|
|
172
|
-
switch (typeof it) {
|
|
173
|
-
case 'string':
|
|
174
|
-
return 'asString';
|
|
175
|
-
case 'boolean':
|
|
176
|
-
return 'asBoolean';
|
|
177
|
-
case 'number':
|
|
178
|
-
return 'asNumber';
|
|
179
|
-
default:
|
|
180
|
-
return 'asString';
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
export function scanToObject(to = 'strings') {
|
|
184
|
-
return pipe(
|
|
185
|
-
// TODO cleanup
|
|
186
|
-
scan((c, p) => ({
|
|
187
|
-
...c, [p.key]: typeof to === 'object' ?
|
|
188
|
-
p[typedMethod(to[p.key])]() :
|
|
189
|
-
p[AS_TO_FN[to]]()
|
|
190
|
-
}), typeof to === 'object' ?
|
|
191
|
-
to :
|
|
192
|
-
{}), debounceTime(1), budget(10), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)));
|
|
193
|
-
}
|
|
194
|
-
export function mapToObject(to = 'strings') {
|
|
195
|
-
return pipe(
|
|
196
|
-
// TODO this is getting a little long, cleanup
|
|
197
|
-
map((params) => params.reduce((c, p) => ({
|
|
198
|
-
...c, [p.key]: typeof to === 'object' ?
|
|
199
|
-
p[typedMethod(to[p.key])]() :
|
|
200
|
-
p[AS_TO_FN[to]]()
|
|
201
|
-
}), typeof to === 'object' ?
|
|
202
|
-
to :
|
|
203
|
-
{})), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)));
|
|
204
|
-
}
|
|
205
|
-
ɵapplyMixins(AngularFireRemoteConfig, [proxyPolyfillCompat]);
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvcmVtb3RlLWNvbmZpZy9yZW1vdGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpQixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUE0QixVQUFVLEVBQW9CLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBSzdDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVyxvQ0FBb0MsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBaUIseUNBQXlDLENBQUMsQ0FBQztBQU10RyxNQUFNLFFBQVEsR0FB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LE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3RCLEVBQTRDLENBQUMsQ0FBQztRQUM5QyxFQUErQyxDQUNsRCxDQUFDLEVBQ0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEUsQ0FBQztBQUNKLENBQUM7QUFFRCxZQUFZLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsga2VlcFVuc3RhYmxlVW50aWxGaXJzdCwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zLCDJtWxhenlTREtQcm94eSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCB7IEZJUkVCQVNFX0FQUF9OQU1FLCBGSVJFQkFTRV9PUFRJT05TLCDJtWNhY2hlSW5zdGFuY2UsIMm1ZmlyZWJhc2VBcHBGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IGlzU3VwcG9ydGVkIH0gZnJvbSAnZmlyZWJhc2UvcmVtb3RlLWNvbmZpZyc7XG5pbXBvcnQgeyBFTVBUWSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uLCBjb25jYXQsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGdyb3VwQnksXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIG9ic2VydmVPbixcbiAgc2NhbixcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHR5cGUgQ29uZmlnVGVtcGxhdGUgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IFNFVFRJTkdTID0gbmV3IEluamVjdGlvblRva2VuPFNldHRpbmdzPignYW5ndWxhcmZpcmUyLnJlbW90ZUNvbmZpZy5zZXR0aW5ncycpO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPENvbmZpZ1RlbXBsYXRlPignYW5ndWxhcmZpcmUyLnJlbW90ZUNvbmZpZy5kZWZhdWx0Q29uZmlnJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlUmVtb3RlQ29uZmlnIGV4dGVuZHMgybVQcm9taXNlUHJveHk8ZmlyZWJhc2UucmVtb3RlQ29uZmlnLlJlbW90ZUNvbmZpZz4ge1xufVxuXG5jb25zdCBBU19UT19GTiA9IHsgc3RyaW5nczogJ2FzU3RyaW5nJywgbnVtYmVyczogJ2FzTnVtYmVyJywgYm9vbGVhbnM6ICdhc0Jvb2xlYW4nIH07XG5jb25zdCBTVEFUSUNfVkFMVUVTID0geyBudW1iZXJzOiAwLCBib29sZWFuczogZmFsc2UsIHN0cmluZ3M6IHVuZGVmaW5lZCB9O1xuXG4vLyBUT0RPIGxvb2sgaW50byB0aGUgdHlwZXMgaGVyZSwgSSBkb24ndCBsaWtlIHRoZSBhbnlzXG5jb25zdCBwcm94eUFsbCA9IChvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdPiwgYXM6ICdudW1iZXJzJyB8ICdib29sZWFucycgfCAnc3RyaW5ncycpID0+IG5ldyBQcm94eShcbiAgb2JzZXJ2YWJsZS5waXBlKG1hcFRvT2JqZWN0KGFzIGFzIGFueSkpLCB7XG4gICAgZ2V0OiAoc2VsZiwgbmFtZTogc3RyaW5nKSA9PiBzZWxmW25hbWVdIHx8IG9ic2VydmFibGUucGlwZShcbiAgICAgIG1hcChhbGwgPT4gYWxsLmZpbmQocCA9PiBwLmtleSA9PT0gbmFtZSkpLFxuICAgICAgbWFwKHBhcmFtID0+IHBhcmFtID8gcGFyYW1bQVNfVE9fRk5bYXNdXSgpIDogU1RBVElDX1ZBTFVFU1thc10pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgIClcbiAgfVxuKSBhcyBhbnk7XG5cbi8vIFRPRE8gZXhwb3J0IGFzIGltcGxlbWVudHMgUGFydGlhbDwuLi4+IHNvIG1pbm9yIGRvZXNuJ3QgYnJlYWsgdXNcbmV4cG9ydCBjbGFzcyBWYWx1ZSBpbXBsZW1lbnRzIGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZSB7XG4gIGFzQm9vbGVhbigpIHtcbiAgICByZXR1cm4gWycxJywgJ3RydWUnLCAndCcsICd5JywgJ3llcycsICdvbiddLmluZGV4T2YodGhpcy5fdmFsdWUudG9Mb3dlckNhc2UoKSkgPiAtMTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGFzTnVtYmVyKCkge1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmFsdWUpIHx8IDA7XG4gIH1cblxuICBnZXRTb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfc291cmNlOiBmaXJlYmFzZS5yZW1vdGVDb25maWcuVmFsdWVTb3VyY2UsIHB1YmxpYyBfdmFsdWU6IHN0cmluZykge1xuICB9XG59XG5cbi8vIFNFTVZFUiB1c2UgQ29uc3RydWN0b3JQYXJhbWV0ZXJzIHdoZW4gd2UgY2FuIHN1cHBvcnQgVHlwZXNjcmlwdCAzLjZcbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXIgZXh0ZW5kcyBWYWx1ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGZldGNoVGltZU1pbGxpczogbnVtYmVyLCBzb3VyY2U6IGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZVNvdXJjZSwgdmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKHNvdXJjZSwgdmFsdWUpO1xuICB9XG59XG5cbi8vIElmIGl0J3MgYSBQYXJhbWV0ZXIgYXJyYXksIHRlc3QgYW55LCBlbHNlIHRlc3QgdGhlIGluZGl2aWR1YWwgUGFyYW1ldGVyXG5jb25zdCBmaWx0ZXJUZXN0ID0gKGZuOiAocGFyYW06IFBhcmFtZXRlcikgPT4gYm9vbGVhbikgPT4gZmlsdGVyPFBhcmFtZXRlciB8IFBhcmFtZXRlcltdPihpdCA9PiBBcnJheS5pc0FycmF5KGl0KSA/IGl0LnNvbWUoZm4pIDogZm4oaXQpKTtcblxuLy8gQWxsb3cgdGhlIHVzZXIgdG8gYnlwYXNzIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2FpdCB0aWxsIHRoZXkgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBzZXJ2ZXIsIGV2ZW4gaWYgaXQncyBhIGNhY2hlZCBjb3B5O1xuLy8gaWYgdXNlZCBpbiBjb25qdW50aW9uIHdpdGggZmlyc3QoKSBpdCB3aWxsIG9ubHkgZmV0Y2ggUkMgdmFsdWVzIGZyb20gdGhlIHNlcnZlciBpZiB0aGV5IGFyZW4ndCBjYWNoZWQgbG9jYWxseVxuZXhwb3J0IGNvbnN0IGZpbHRlclJlbW90ZSA9ICgpID0+IGZpbHRlclRlc3QocCA9PiBwLmdldFNvdXJjZSgpID09PSAncmVtb3RlJyk7XG5cbi8vIGZpbHRlckZyZXNoIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIGVmZmVjdGl2ZWx5IHNldCB1cCBhIG1heGltdW0gY2FjaGUgdGltZVxuZXhwb3J0IGNvbnN0IGZpbHRlckZyZXNoID0gKGhvd1JlY2VudEluTWlsbGlzOiBudW1iZXIpID0+IGZpbHRlclRlc3QocCA9PiBwLmZldGNoVGltZU1pbGxpcyArIGhvd1JlY2VudEluTWlsbGlzID49IG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcblxuXG4vLyBJIGRpdGNoZWQgbG9hZGluZyB0aGUgZGVmYXVsdHMgaW50byBSQyBhbmQgYSBzaW1wbGUgbWFwIGZvciBzY2FuIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSBvdXIgb3duIGRlZmF1bHRzIGltcGxlbWVudGF0aW9uLlxuLy8gVGhlIGlkZWEgaGVyZSBiZWluZyB0aGF0IGlmIHRoZXkgaGF2ZSBhIGRlZmF1bHQgdGhhdCBuZXZlciBsb2FkcyBmcm9tIHRoZSBzZXJ2ZXIsIHRoZXkgd2lsbCBiZSBhYmxlIHRvIHRlbGwgdmlhIGZldGNoVGltZU1pbGxpc1xuLy8gb24gdGhlIFBhcmFtZXRlci4gQWxzbyBpZiBpdCBkb2Vzbid0IGNvbWUgZnJvbSB0aGUgc2VydmVyIGl0IHdvbid0IGVtaXQgYWdhaW4gaW4gLmNoYW5nZXMsIGR1ZSB0byB0aGUgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4vLyB3aGljaCB3ZSBjYW4gc2ltcGxpZnkgdG8gPT09IHJhdGhlciB0aGFuIGRlZXAgY29tcGFyaXNvblxuY29uc3Qgc2NhblRvUGFyYW1ldGVyc0FycmF5ID0gKFxuICByZW1vdGVDb25maWc6IE9ic2VydmFibGU8ZmlyZWJhc2UucmVtb3RlQ29uZmlnLlJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZD5cbik6IE9wZXJhdG9yRnVuY3Rpb248UmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPiwgUGFyYW1ldGVyW10+ID0+IHBpcGUoXG4gIHdpdGhMYXRlc3RGcm9tKHJlbW90ZUNvbmZpZyksXG4gIHNjYW4oKGV4aXN0aW5nLCBbYWxsLCByY10pID0+IHtcbiAgICAvLyBTRU1WRVIgdXNlIFwibmV3IFNldFwiIHRvIHVuaXF1ZSBvbmNlIHdlJ3JlIG9ubHkgdGFyZ2V0aW5nIGVzNlxuICAgIC8vIGF0IHRoZSBzY2FsZSB3ZSBleHBlY3QgcmVtb3RlIGNvbmZpZyB0byBiZSBhdCwgd2UgcHJvYmFibHkgd29uJ3Qgc2VlIGEgcGVyZm9ybWFuY2UgaGl0IGZyb20gdGhpcyB1bm9wdGltaXplZCB1bmlxdWVuZXNzXG4gICAgLy8gaW1wbGVtZW50YXRpb24uXG4gICAgLy8gY29uc3QgYWxsS2V5cyA9IFsuLi5uZXcgU2V0KFsuLi5leGlzdGluZy5tYXAocCA9PiBwLmtleSksIC4uLk9iamVjdC5rZXlzKGFsbCldKV07XG4gICAgY29uc3QgYWxsS2V5cyA9IFsuLi5leGlzdGluZy5tYXAocCA9PiBwLmtleSksIC4uLk9iamVjdC5rZXlzKGFsbCldLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcbiAgICByZXR1cm4gYWxsS2V5cy5tYXAoa2V5ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IGFsbFtrZXldO1xuICAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZSA/IG5ldyBQYXJhbWV0ZXIoa2V5LCByYyA/IHJjLmZldGNoVGltZU1pbGxpcyA6IC0xLCB1cGRhdGVkVmFsdWUuZ2V0U291cmNlKCksIHVwZGF0ZWRWYWx1ZS5hc1N0cmluZygpKVxuICAgICAgICA6IGV4aXN0aW5nLmZpbmQocCA9PiBwLmtleSA9PT0ga2V5KTtcbiAgICB9KTtcbiAgfSwgW10gYXMgUGFyYW1ldGVyW10pXG4pO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVSZW1vdGVDb25maWcge1xuXG4gIHJlYWRvbmx5IGNoYW5nZXM6IE9ic2VydmFibGU8UGFyYW1ldGVyPjtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJbXT47XG4gIHJlYWRvbmx5IG51bWJlcnM6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgbnVtYmVyIHwgdW5kZWZpbmVkPj4gJiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPG51bWJlcj4+O1xuICByZWFkb25seSBib29sZWFuczogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgdW5kZWZpbmVkPj4gJiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGJvb2xlYW4+PjtcbiAgcmVhZG9ubHkgc3RyaW5nczogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PiAmIFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGSVJFQkFTRV9PUFRJT05TKSBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGSVJFQkFTRV9BUFBfTkFNRSkgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFVFRJTkdTKSBzZXR0aW5nczogU2V0dGluZ3MgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREVGQVVMVFMpIGRlZmF1bHRDb25maWc6IENvbmZpZ1RlbXBsYXRlIHwgbnVsbCxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgY29uc3QgcmVtb3RlQ29uZmlnJCA9IG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBpc1N1cHBvcnRlZCgpKSxcbiAgICAgIHN3aXRjaE1hcChpc1N1cHBvcnRlZCA9PiBpc1N1cHBvcnRlZCA/IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L3JlbW90ZS1jb25maWcnKSA6IEVNUFRZKSxcbiAgICAgIG1hcCgoKSA9PiDJtWZpcmViYXNlQXBwRmFjdG9yeShvcHRpb25zLCB6b25lLCBuYW1lKSksXG4gICAgICBtYXAoYXBwID0+IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0ucmVtb3RlLWNvbmZpZ2AsICdBbmd1bGFyRmlyZVJlbW90ZUNvbmZpZycsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJjID0gYXBwLnJlbW90ZUNvbmZpZygpO1xuICAgICAgICBpZiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICByYy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0Q29uZmlnKSB7XG4gICAgICAgICAgcmMuZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJjO1xuICAgICAgfSwgW3NldHRpbmdzLCBkZWZhdWx0Q29uZmlnXSkpLFxuICAgICAgc3RhcnRXaXRoPGZpcmViYXNlLnJlbW90ZUNvbmZpZy5SZW1vdGVDb25maWcsIHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pXG4gICAgKSBhcyBPYnNlcnZhYmxlPGFueT47XG5cbiAgICBjb25zdCBsb2FkZWRSZW1vdGVDb25maWckID0gcmVtb3RlQ29uZmlnJC5waXBlKFxuICAgICAgZmlsdGVyPGZpcmViYXNlLnJlbW90ZUNvbmZpZy5SZW1vdGVDb25maWc+KHJjID0+ICEhcmMpXG4gICAgKTtcblxuICAgIGNvbnN0IGRlZmF1bHQkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZT4+ID0gb2YoT2JqZWN0LmtleXMoZGVmYXVsdENvbmZpZyB8fCB7fSkucmVkdWNlKFxuICAgICAgKGMsIGspID0+ICh7IC4uLmMsIFtrXTogbmV3IFZhbHVlKCdkZWZhdWx0JywgZGVmYXVsdENvbmZpZ1trXS50b1N0cmluZygpKSB9KSwge31cbiAgICApKTtcblxuICAgIC8vIHdlIHNob3VsZCBmaWx0ZXIgb3V0IHRoZSBkZWZhdWx0cyB3ZSBwcm92aWRlZCB0byBSQywgc2luY2Ugd2UgaGF2ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uXG4gICAgLy8gdGhhdCBnaXZlcyB1cyBhIC0xIGZvciBmZXRjaFRpbWVNaWxsaXMgKHNvIGZpbHRlckZyZXNoIGNhbiBmaWx0ZXIgdGhlbSBvdXQpXG4gICAgY29uc3QgZmlsdGVyT3V0RGVmYXVsdHMgPSBtYXA8UmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPiwgUmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPj4oYWxsID0+XG4gICAgICBPYmplY3Qua2V5cyhhbGwpXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+IGFsbFtrZXldLmdldFNvdXJjZSgpICE9PSAnZGVmYXVsdCcpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBhbGxba2V5XSB9KSwge30pXG4gICAgKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nJCA9IGxvYWRlZFJlbW90ZUNvbmZpZyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChyYyA9PlxuICAgICAgICByYy5hY3RpdmF0ZSgpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmMuZW5zdXJlSW5pdGlhbGl6ZWQoKSlcbiAgICAgICAgICAudGhlbigoKSA9PiByYy5nZXRBbGwoKSlcbiAgICAgICksXG4gICAgICBmaWx0ZXJPdXREZWZhdWx0c1xuICAgICk7XG5cbiAgICBjb25zdCBmcmVzaCQgPSBsb2FkZWRSZW1vdGVDb25maWckLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocmMgPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICByYy5mZXRjaEFuZEFjdGl2YXRlKClcbiAgICAgICAgICAudGhlbigoKSA9PiByYy5lbnN1cmVJbml0aWFsaXplZCgpKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJjLmdldEFsbCgpKVxuICAgICAgKSksXG4gICAgICBmaWx0ZXJPdXREZWZhdWx0c1xuICAgICk7XG5cbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBjb25jYXQoZGVmYXVsdCQsIGV4aXN0aW5nJCwgZnJlc2gkKS5waXBlKFxuICAgICAgc2NhblRvUGFyYW1ldGVyc0FycmF5KHJlbW90ZUNvbmZpZyQpLFxuICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdCxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApO1xuXG4gICAgdGhpcy5jaGFuZ2VzID0gdGhpcy5wYXJhbWV0ZXJzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGFyYW1zID0+IG9mKC4uLnBhcmFtcykpLFxuICAgICAgZ3JvdXBCeShwYXJhbSA9PiBwYXJhbS5rZXkpLFxuICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdHJpbmdzID0gcHJveHlBbGwodGhpcy5wYXJhbWV0ZXJzLCAnc3RyaW5ncycpO1xuICAgIHRoaXMuYm9vbGVhbnMgPSBwcm94eUFsbCh0aGlzLnBhcmFtZXRlcnMsICdib29sZWFucycpO1xuICAgIHRoaXMubnVtYmVycyA9IHByb3h5QWxsKHRoaXMucGFyYW1ldGVycywgJ251bWJlcnMnKTtcblxuICAgIHJldHVybiDJtWxhenlTREtQcm94eSh0aGlzLCBsb2FkZWRSZW1vdGVDb25maWckLCB6b25lKTtcbiAgfVxuXG59XG5cblxuZXhwb3J0IGNvbnN0IGJ1ZGdldCA9IDxUPihpbnRlcnZhbDogbnVtYmVyKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+ID0+IChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+IHtcbiAgbGV0IHRpbWVkT3V0ID0gZmFsc2U7XG4gIC8vIFRPRE8gdXNlIHNjaGVkdWxlciB0YXNrIHJhdGhlciB0aGFuIHNldHRpbWVvdXRcbiAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgdGltZWRPdXQgPSB0cnVlO1xuICB9LCBpbnRlcnZhbCk7XG4gIHJldHVybiBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICBuZXh0KHZhbCkge1xuICAgICAgaWYgKCF0aW1lZE91dCkge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBlcnJvcihlcnIpIHtcbiAgICAgIGlmICghdGltZWRPdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY29tcGxldGUoKSB7XG4gICAgICBpZiAoIXRpbWVkT3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbmNvbnN0IHR5cGVkTWV0aG9kID0gKGl0OiBhbnkpID0+IHtcbiAgc3dpdGNoICh0eXBlb2YgaXQpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuICdhc1N0cmluZyc7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gJ2FzQm9vbGVhbic7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAnYXNOdW1iZXInO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ2FzU3RyaW5nJztcbiAgfVxufTtcblxuXG5leHBvcnQgZnVuY3Rpb24gc2NhblRvT2JqZWN0KCk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdudW1iZXJzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdib29sZWFucycpOiBPcGVyYXRvckZ1bmN0aW9uPFBhcmFtZXRlciwgUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHVuZGVmaW5lZD4+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdzdHJpbmdzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3Q8VCBleHRlbmRzIENvbmZpZ1RlbXBsYXRlPih0ZW1wbGF0ZTogVCk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBUICYgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gc2NhblRvT2JqZWN0PFQgZXh0ZW5kcyBDb25maWdUZW1wbGF0ZT4odG86ICdudW1iZXJzJyB8ICdib29sZWFucycgfCAnc3RyaW5ncycgfCBUID0gJ3N0cmluZ3MnKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIC8vIFRPRE8gY2xlYW51cFxuICAgIHNjYW4oXG4gICAgICAoYywgcDogUGFyYW1ldGVyKSA9PiAoe1xuICAgICAgICAuLi5jLCBbcC5rZXldOiB0eXBlb2YgdG8gPT09ICdvYmplY3QnID9cbiAgICAgICAgICBwW3R5cGVkTWV0aG9kKHRvW3Aua2V5XSldKCkgOlxuICAgICAgICAgIHBbQVNfVE9fRk5bdG9dXSgpXG4gICAgICB9KSxcbiAgICAgIHR5cGVvZiB0byA9PT0gJ29iamVjdCcgP1xuICAgICAgICB0byBhcyBUICYgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6XG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlciB8IGJvb2xlYW4gfCBzdHJpbmc+XG4gICAgKSxcbiAgICBkZWJvdW5jZVRpbWUoMSksXG4gICAgYnVkZ2V0KDEwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3QoKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3QodG86ICdudW1iZXJzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyW10sIFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHVuZGVmaW5lZD4+O1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvT2JqZWN0KHRvOiAnYm9vbGVhbnMnKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHVuZGVmaW5lZD4+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdCh0bzogJ3N0cmluZ3MnKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3Q8VCBleHRlbmRzIENvbmZpZ1RlbXBsYXRlPih0ZW1wbGF0ZTogVCk6XG4gIE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyW10sIFQgJiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdDxUIGV4dGVuZHMgQ29uZmlnVGVtcGxhdGU+KHRvOiAnbnVtYmVycycgfCAnYm9vbGVhbnMnIHwgJ3N0cmluZ3MnIHwgVCA9ICdzdHJpbmdzJykge1xuICByZXR1cm4gcGlwZShcbiAgICAvLyBUT0RPIHRoaXMgaXMgZ2V0dGluZyBhIGxpdHRsZSBsb25nLCBjbGVhbnVwXG4gICAgbWFwKChwYXJhbXM6IFBhcmFtZXRlcltdKSA9PiBwYXJhbXMucmVkdWNlKFxuICAgICAgKGMsIHApID0+ICh7XG4gICAgICAgIC4uLmMsIFtwLmtleV06IHR5cGVvZiB0byA9PT0gJ29iamVjdCcgP1xuICAgICAgICAgIHBbdHlwZWRNZXRob2QodG9bcC5rZXldKV0oKSA6XG4gICAgICAgICAgcFtBU19UT19GTlt0b11dKClcbiAgICAgIH0pLFxuICAgICAgdHlwZW9mIHRvID09PSAnb2JqZWN0JyA/XG4gICAgICAgIHRvIGFzIFQgJiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IDpcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgYm9vbGVhbiB8IHN0cmluZz5cbiAgICApKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKVxuICApO1xufVxuXG7JtWFwcGx5TWl4aW5zKEFuZ3VsYXJGaXJlUmVtb3RlQ29uZmlnLCBbcHJveHlQb2x5ZmlsbENvbXBhdF0pO1xuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { VERSION } from '@angular/fire';
|
|
3
|
-
import firebase from 'firebase/compat/app';
|
|
4
|
-
import { AngularFireRemoteConfig } from './remote-config';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class AngularFireRemoteConfigModule {
|
|
7
|
-
constructor() {
|
|
8
|
-
firebase.registerVersion('angularfire', VERSION.full, 'rc-compat');
|
|
9
|
-
}
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfigModule });
|
|
12
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfigModule, providers: [AngularFireRemoteConfig] });
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireRemoteConfigModule, decorators: [{
|
|
15
|
-
type: NgModule,
|
|
16
|
-
args: [{
|
|
17
|
-
providers: [AngularFireRemoteConfig]
|
|
18
|
-
}]
|
|
19
|
-
}], ctorParameters: () => [] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3JlbW90ZS1jb25maWcvcmVtb3RlLWNvbmZpZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsxRCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3RDO1FBQ0ksUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO3VHQUhRLDZCQUE2Qjt3R0FBN0IsNkJBQTZCO3dHQUE3Qiw2QkFBNkIsYUFGN0IsQ0FBRSx1QkFBdUIsQ0FBRTs7MkZBRTNCLDZCQUE2QjtrQkFIekMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBRSx1QkFBdUIsQ0FBRTtpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgfSBmcm9tICcuL3JlbW90ZS1jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVJlbW90ZUNvbmZpZ01vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdyYy1jb21wYXQnKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlLWNvbXBhdC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL2FuZ3VsYXItZmlyZS1jb21wYXQtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvc3RvcmFnZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5cbmV4cG9ydCB0eXBlIFVwbG9hZFRhc2sgPSBmaXJlYmFzZS5zdG9yYWdlLlVwbG9hZFRhc2s7XG5leHBvcnQgdHlwZSBVcGxvYWRUYXNrU25hcHNob3QgPSBmaXJlYmFzZS5zdG9yYWdlLlVwbG9hZFRhc2tTbmFwc2hvdDtcbmV4cG9ydCB0eXBlIFVwbG9hZE1ldGFkYXRhID0gZmlyZWJhc2Uuc3RvcmFnZS5VcGxvYWRNZXRhZGF0YTtcblxuZXhwb3J0IHR5cGUgU2V0dGFibGVNZXRhZGF0YSA9IGZpcmViYXNlLnN0b3JhZ2UuU2V0dGFibGVNZXRhZGF0YTtcbmV4cG9ydCB0eXBlIFJlZmVyZW5jZSA9IGZpcmViYXNlLnN0b3JhZ2UuUmVmZXJlbmNlO1xuZXhwb3J0IHR5cGUgU3RyaW5nRm9ybWF0ID0gZmlyZWJhc2Uuc3RvcmFnZS5TdHJpbmdGb3JtYXQ7XG5leHBvcnQgdHlwZSBMaXN0UmVzdWx0ID0gZmlyZWJhc2Uuc3RvcmFnZS5MaXN0UmVzdWx0O1xuZXhwb3J0IHR5cGUgTGlzdE9wdGlvbnMgPSBmaXJlYmFzZS5zdG9yYWdlLkxpc3RPcHRpb25zO1xuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { debounceTime } from 'rxjs/operators';
|
|
3
|
-
// need to import, else the types become import('firebase/compat/app').default.storage.UploadTask
|
|
4
|
-
// and it no longer works w/Firebase v7
|
|
5
|
-
// Things aren't working great, I'm having to put in a lot of work-arounds for what
|
|
6
|
-
// appear to be Firebase JS SDK bugs https://github.com/firebase/firebase-js-sdk/issues/4158
|
|
7
|
-
export function fromTask(task) {
|
|
8
|
-
return new Observable(subscriber => {
|
|
9
|
-
const progress = (snap) => subscriber.next(snap);
|
|
10
|
-
const error = e => subscriber.error(e);
|
|
11
|
-
const complete = () => subscriber.complete();
|
|
12
|
-
// emit the current snapshot, so they don't have to wait for state_changes
|
|
13
|
-
// to fire next... this is stale if the task is no longer running :(
|
|
14
|
-
progress(task.snapshot);
|
|
15
|
-
const unsub = task.on('state_changed', progress);
|
|
16
|
-
// it turns out that neither task snapshot nor 'state_changed' fire the last
|
|
17
|
-
// snapshot before completion, the one with status 'success" and 100% progress
|
|
18
|
-
// so let's use the promise form of the task for that
|
|
19
|
-
task.then(snapshot => {
|
|
20
|
-
progress(snapshot);
|
|
21
|
-
complete();
|
|
22
|
-
}, e => {
|
|
23
|
-
// TODO investigate, again this is stale, we never fire a canceled or error it seems
|
|
24
|
-
progress(task.snapshot);
|
|
25
|
-
error(e);
|
|
26
|
-
});
|
|
27
|
-
// on's type if Function, rather than () => void, need to wrap
|
|
28
|
-
return function unsubscribe() {
|
|
29
|
-
unsub();
|
|
30
|
-
};
|
|
31
|
-
}).pipe(
|
|
32
|
-
// deal with sync emissions from first emitting `task.snapshot`, this makes sure
|
|
33
|
-
// that if the task is already finished we don't emit the old running state
|
|
34
|
-
debounceTime(0));
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3N0b3JhZ2Uvb2JzZXJ2YWJsZS9mcm9tVGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxpR0FBaUc7QUFDakcsdUNBQXVDO0FBRXZDLG1GQUFtRjtBQUNuRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFnQjtJQUN2QyxPQUFPLElBQUksVUFBVSxDQUFxQixVQUFVLENBQUMsRUFBRTtRQUNyRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QywwRUFBMEU7UUFDMUUsb0VBQW9FO1FBQ3BFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakQsNEVBQTRFO1FBQzVFLDhFQUE4RTtRQUM5RSxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDTCxvRkFBb0Y7WUFDcEYsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILDhEQUE4RDtRQUM5RCxPQUFPLFNBQVMsV0FBVztZQUN6QixLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDTCxnRkFBZ0Y7SUFDaEYsMkVBQTJFO0lBQzNFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDaEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBVcGxvYWRUYXNrLCBVcGxvYWRUYXNrU25hcHNob3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLy8gbmVlZCB0byBpbXBvcnQsIGVsc2UgdGhlIHR5cGVzIGJlY29tZSBpbXBvcnQoJ2ZpcmViYXNlL2NvbXBhdC9hcHAnKS5kZWZhdWx0LnN0b3JhZ2UuVXBsb2FkVGFza1xuLy8gYW5kIGl0IG5vIGxvbmdlciB3b3JrcyB3L0ZpcmViYXNlIHY3XG5cbi8vIFRoaW5ncyBhcmVuJ3Qgd29ya2luZyBncmVhdCwgSSdtIGhhdmluZyB0byBwdXQgaW4gYSBsb3Qgb2Ygd29yay1hcm91bmRzIGZvciB3aGF0XG4vLyBhcHBlYXIgdG8gYmUgRmlyZWJhc2UgSlMgU0RLIGJ1Z3MgaHR0cHM6Ly9naXRodWIuY29tL2ZpcmViYXNlL2ZpcmViYXNlLWpzLXNkay9pc3N1ZXMvNDE1OFxuZXhwb3J0IGZ1bmN0aW9uIGZyb21UYXNrKHRhc2s6IFVwbG9hZFRhc2spIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFVwbG9hZFRhc2tTbmFwc2hvdD4oc3Vic2NyaWJlciA9PiB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSAoc25hcDogVXBsb2FkVGFza1NuYXBzaG90KSA9PiBzdWJzY3JpYmVyLm5leHQoc25hcCk7XG4gICAgY29uc3QgZXJyb3IgPSBlID0+IHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgLy8gZW1pdCB0aGUgY3VycmVudCBzbmFwc2hvdCwgc28gdGhleSBkb24ndCBoYXZlIHRvIHdhaXQgZm9yIHN0YXRlX2NoYW5nZXNcbiAgICAvLyB0byBmaXJlIG5leHQuLi4gdGhpcyBpcyBzdGFsZSBpZiB0aGUgdGFzayBpcyBubyBsb25nZXIgcnVubmluZyA6KFxuICAgIHByb2dyZXNzKHRhc2suc25hcHNob3QpO1xuICAgIGNvbnN0IHVuc3ViID0gdGFzay5vbignc3RhdGVfY2hhbmdlZCcsIHByb2dyZXNzKTtcbiAgICAvLyBpdCB0dXJucyBvdXQgdGhhdCBuZWl0aGVyIHRhc2sgc25hcHNob3Qgbm9yICdzdGF0ZV9jaGFuZ2VkJyBmaXJlIHRoZSBsYXN0XG4gICAgLy8gc25hcHNob3QgYmVmb3JlIGNvbXBsZXRpb24sIHRoZSBvbmUgd2l0aCBzdGF0dXMgJ3N1Y2Nlc3NcIiBhbmQgMTAwJSBwcm9ncmVzc1xuICAgIC8vIHNvIGxldCdzIHVzZSB0aGUgcHJvbWlzZSBmb3JtIG9mIHRoZSB0YXNrIGZvciB0aGF0XG4gICAgdGFzay50aGVuKHNuYXBzaG90ID0+IHtcbiAgICAgIHByb2dyZXNzKHNuYXBzaG90KTtcbiAgICAgIGNvbXBsZXRlKCk7XG4gICAgfSwgZSA9PiB7XG4gICAgICAvLyBUT0RPIGludmVzdGlnYXRlLCBhZ2FpbiB0aGlzIGlzIHN0YWxlLCB3ZSBuZXZlciBmaXJlIGEgY2FuY2VsZWQgb3IgZXJyb3IgaXQgc2VlbXNcbiAgICAgIHByb2dyZXNzKHRhc2suc25hcHNob3QpO1xuICAgICAgZXJyb3IoZSk7XG4gICAgfSk7XG4gICAgLy8gb24ncyB0eXBlIGlmIEZ1bmN0aW9uLCByYXRoZXIgdGhhbiAoKSA9PiB2b2lkLCBuZWVkIHRvIHdyYXBcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICB1bnN1YigpO1xuICAgIH07XG4gIH0pLnBpcGUoXG4gICAgLy8gZGVhbCB3aXRoIHN5bmMgZW1pc3Npb25zIGZyb20gZmlyc3QgZW1pdHRpbmcgYHRhc2suc25hcHNob3RgLCB0aGlzIG1ha2VzIHN1cmVcbiAgICAvLyB0aGF0IGlmIHRoZSB0YXNrIGlzIGFscmVhZHkgZmluaXNoZWQgd2UgZG9uJ3QgZW1pdCB0aGUgb2xkIHJ1bm5pbmcgc3RhdGVcbiAgICBkZWJvdW5jZVRpbWUoMClcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { AsyncPipe } from '@angular/common';
|
|
2
|
-
import { ChangeDetectorRef, NgModule, Optional, Pipe, TransferState, makeStateKey } from '@angular/core';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import { tap } from 'rxjs/operators';
|
|
5
|
-
import { AngularFireStorage } from '../storage';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../storage";
|
|
8
|
-
/** to be used with in combination with | async */
|
|
9
|
-
export class GetDownloadURLPipe {
|
|
10
|
-
storage;
|
|
11
|
-
state;
|
|
12
|
-
asyncPipe;
|
|
13
|
-
path;
|
|
14
|
-
downloadUrl$;
|
|
15
|
-
constructor(storage, cdr, state) {
|
|
16
|
-
this.storage = storage;
|
|
17
|
-
this.state = state;
|
|
18
|
-
this.asyncPipe = new AsyncPipe(cdr);
|
|
19
|
-
}
|
|
20
|
-
transform(path) {
|
|
21
|
-
if (path !== this.path) {
|
|
22
|
-
this.path = path;
|
|
23
|
-
const key = makeStateKey(`|getDownloadURL|${path}`);
|
|
24
|
-
const existing = this.state?.get(key, undefined);
|
|
25
|
-
this.downloadUrl$ = existing ? of(existing) : this.storage.ref(path).getDownloadURL().pipe(tap(it => this.state?.set(key, it)));
|
|
26
|
-
}
|
|
27
|
-
return this.asyncPipe.transform(this.downloadUrl$);
|
|
28
|
-
}
|
|
29
|
-
ngOnDestroy() {
|
|
30
|
-
this.asyncPipe.ngOnDestroy();
|
|
31
|
-
}
|
|
32
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipe, deps: [{ token: i1.AngularFireStorage }, { token: i0.ChangeDetectorRef }, { token: i0.TransferState, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
33
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipe, name: "getDownloadURL", pure: false });
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipe, decorators: [{
|
|
36
|
-
type: Pipe,
|
|
37
|
-
args: [{
|
|
38
|
-
name: 'getDownloadURL',
|
|
39
|
-
pure: false,
|
|
40
|
-
}]
|
|
41
|
-
}], ctorParameters: () => [{ type: i1.AngularFireStorage }, { type: i0.ChangeDetectorRef }, { type: i0.TransferState, decorators: [{
|
|
42
|
-
type: Optional
|
|
43
|
-
}] }] });
|
|
44
|
-
export class GetDownloadURLPipeModule {
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
46
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipeModule, declarations: [GetDownloadURLPipe], exports: [GetDownloadURLPipe] });
|
|
47
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipeModule });
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: GetDownloadURLPipeModule, decorators: [{
|
|
50
|
-
type: NgModule,
|
|
51
|
-
args: [{
|
|
52
|
-
declarations: [GetDownloadURLPipe],
|
|
53
|
-
exports: [GetDownloadURLPipe],
|
|
54
|
-
}]
|
|
55
|
-
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVVybC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL3BpcGVzL3N0b3JhZ2VVcmwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFpQixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRWhELGtEQUFrRDtBQUtsRCxNQUFNLE9BQU8sa0JBQWtCO0lBT25CO0lBRVk7SUFQZCxTQUFTLENBQVk7SUFDckIsSUFBSSxDQUFTO0lBQ2IsWUFBWSxDQUFrQjtJQUV0QyxZQUNVLE9BQTJCLEVBQ25DLEdBQXNCLEVBQ0YsS0FBb0I7UUFGaEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFFZixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBRXhDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixNQUFNLEdBQUcsR0FBRyxZQUFZLENBQVMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDeEYsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7dUdBNUJVLGtCQUFrQjtxR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLElBQUksRUFBRSxLQUFLO2lCQUNaOzswQkFVSSxRQUFROztBQTJCYixNQUFNLE9BQU8sd0JBQXdCO3VHQUF4Qix3QkFBd0I7d0dBQXhCLHdCQUF3QixpQkFwQ3hCLGtCQUFrQixhQUFsQixrQkFBa0I7d0dBb0NsQix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUUsa0JBQWtCLENBQUU7b0JBQ3BDLE9BQU8sRUFBRSxDQUFFLGtCQUFrQixDQUFFO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgTmdNb2R1bGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFRyYW5zZmVyU3RhdGUsIG1ha2VTdGF0ZUtleSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlU3RvcmFnZSB9IGZyb20gJy4uL3N0b3JhZ2UnO1xuXG4vKiogdG8gYmUgdXNlZCB3aXRoIGluIGNvbWJpbmF0aW9uIHdpdGggfCBhc3luYyAqL1xuQFBpcGUoe1xuICBuYW1lOiAnZ2V0RG93bmxvYWRVUkwnLFxuICBwdXJlOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgR2V0RG93bmxvYWRVUkxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGFzeW5jUGlwZTogQXN5bmNQaXBlO1xuICBwcml2YXRlIHBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBkb3dubG9hZFVybCQ6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JhZ2U6IEFuZ3VsYXJGaXJlU3RvcmFnZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgc3RhdGU6IFRyYW5zZmVyU3RhdGVcbiAgKSB7XG4gICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNkcik7XG4gIH1cblxuICB0cmFuc2Zvcm0ocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKHBhdGggIT09IHRoaXMucGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgIGNvbnN0IGtleSA9IG1ha2VTdGF0ZUtleTxzdHJpbmc+KGB8Z2V0RG93bmxvYWRVUkx8JHtwYXRofWApO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnN0YXRlPy5nZXQoa2V5LCB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kb3dubG9hZFVybCQgPSBleGlzdGluZyA/IG9mKGV4aXN0aW5nKSA6IHRoaXMuc3RvcmFnZS5yZWYocGF0aCkuZ2V0RG93bmxvYWRVUkwoKS5waXBlKFxuICAgICAgICB0YXAoaXQgPT4gdGhpcy5zdGF0ZT8uc2V0KGtleSwgaXQpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybSh0aGlzLmRvd25sb2FkVXJsJCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmFzeW5jUGlwZS5uZ09uRGVzdHJveSgpO1xuICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbIEdldERvd25sb2FkVVJMUGlwZSBdLFxuICBleHBvcnRzOiBbIEdldERvd25sb2FkVVJMUGlwZSBdLFxufSlcbmV4cG9ydCBjbGFzcyBHZXREb3dubG9hZFVSTFBpcGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './ref';
|
|
2
|
-
export * from './storage';
|
|
3
|
-
export * from './task';
|
|
4
|
-
export * from './observable/fromTask';
|
|
5
|
-
export * from './storage.module';
|
|
6
|
-
export * from './pipes/storageUrl.pipe';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvc3RvcmFnZS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzayc7XG5leHBvcnQgKiBmcm9tICcuL29ic2VydmFibGUvZnJvbVRhc2snO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3N0b3JhZ2VVcmwucGlwZSc7XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { keepUnstableUntilFirst, observeOutsideAngular } from '@angular/fire';
|
|
2
|
-
import { from, of } from 'rxjs';
|
|
3
|
-
import { switchMap } from 'rxjs/operators';
|
|
4
|
-
import { createUploadTask } from './task';
|
|
5
|
-
/**
|
|
6
|
-
* Create an AngularFire wrapped Storage Reference. This object
|
|
7
|
-
* creates observable methods from promise based methods.
|
|
8
|
-
*/
|
|
9
|
-
export function createStorageRef(ref) {
|
|
10
|
-
return {
|
|
11
|
-
getDownloadURL: () => of(undefined).pipe(observeOutsideAngular, switchMap(() => ref.getDownloadURL()), keepUnstableUntilFirst),
|
|
12
|
-
getMetadata: () => of(undefined).pipe(observeOutsideAngular, switchMap(() => ref.getMetadata()), keepUnstableUntilFirst),
|
|
13
|
-
delete: () => from(ref.delete()),
|
|
14
|
-
child: (path) => createStorageRef(ref.child(path)),
|
|
15
|
-
updateMetadata: (meta) => from(ref.updateMetadata(meta)),
|
|
16
|
-
put: (data, metadata) => {
|
|
17
|
-
const task = ref.put(data, metadata);
|
|
18
|
-
return createUploadTask(task);
|
|
19
|
-
},
|
|
20
|
-
putString: (data, format, metadata) => {
|
|
21
|
-
const task = ref.putString(data, format, metadata);
|
|
22
|
-
return createUploadTask(task);
|
|
23
|
-
},
|
|
24
|
-
list: (options) => from(ref.list(options)),
|
|
25
|
-
listAll: () => from(ref.listAll())
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFjLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBeUIsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFjakU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFjO0lBRWQsT0FBTztRQUNMLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN0QyxxQkFBcUIsRUFDckIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUNyQyxzQkFBc0IsQ0FDdkI7UUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbkMscUJBQXFCLEVBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDbEMsc0JBQXNCLENBQ3ZCO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsS0FBSyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELGNBQWMsRUFBRSxDQUFDLElBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLEdBQUcsRUFBRSxDQUFDLElBQVMsRUFBRSxRQUF5QixFQUFFLEVBQUU7WUFDNUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBWSxFQUFFLE1BQXFCLEVBQUUsUUFBeUIsRUFBRSxFQUFFO1lBQzVFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNuQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtlZXBVbnN0YWJsZVVudGlsRmlyc3QsIG9ic2VydmVPdXRzaWRlQW5ndWxhciB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExpc3RPcHRpb25zLCBMaXN0UmVzdWx0LCBSZWZlcmVuY2UsIFNldHRhYmxlTWV0YWRhdGEsIFN0cmluZ0Zvcm1hdCwgVXBsb2FkTWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVVcGxvYWRUYXNrLCBjcmVhdGVVcGxvYWRUYXNrIH0gZnJvbSAnLi90YXNrJztcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZVN0b3JhZ2VSZWZlcmVuY2Uge1xuICBnZXREb3dubG9hZFVSTCgpOiBPYnNlcnZhYmxlPGFueT47XG4gIGdldE1ldGFkYXRhKCk6IE9ic2VydmFibGU8YW55PjtcbiAgZGVsZXRlKCk6IE9ic2VydmFibGU8YW55PjtcbiAgY2hpbGQocGF0aDogc3RyaW5nKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlO1xuICB1cGRhdGVNZXRhZGF0YShtZXRhOiBTZXR0YWJsZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdXQoZGF0YTogYW55LCBtZXRhZGF0YT86IFVwbG9hZE1ldGFkYXRhIHwgdW5kZWZpbmVkKTogQW5ndWxhckZpcmVVcGxvYWRUYXNrO1xuICBwdXRTdHJpbmcoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBBbmd1bGFyRmlyZVVwbG9hZFRhc2s7XG4gIGxpc3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxMaXN0UmVzdWx0PjtcbiAgbGlzdEFsbCgpOiBPYnNlcnZhYmxlPExpc3RSZXN1bHQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyRmlyZSB3cmFwcGVkIFN0b3JhZ2UgUmVmZXJlbmNlLiBUaGlzIG9iamVjdFxuICogY3JlYXRlcyBvYnNlcnZhYmxlIG1ldGhvZHMgZnJvbSBwcm9taXNlIGJhc2VkIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdG9yYWdlUmVmKFxuICByZWY6IFJlZmVyZW5jZVxuKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlIHtcbiAgcmV0dXJuIHtcbiAgICBnZXREb3dubG9hZFVSTDogKCkgPT4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU91dHNpZGVBbmd1bGFyLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHJlZi5nZXREb3dubG9hZFVSTCgpKSxcbiAgICAgIGtlZXBVbnN0YWJsZVVudGlsRmlyc3RcbiAgICApLFxuICAgIGdldE1ldGFkYXRhOiAoKSA9PiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBvYnNlcnZlT3V0c2lkZUFuZ3VsYXIsXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gcmVmLmdldE1ldGFkYXRhKCkpLFxuICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdFxuICAgICksXG4gICAgZGVsZXRlOiAoKSA9PiBmcm9tKHJlZi5kZWxldGUoKSksXG4gICAgY2hpbGQ6IChwYXRoOiBzdHJpbmcpID0+IGNyZWF0ZVN0b3JhZ2VSZWYocmVmLmNoaWxkKHBhdGgpKSxcbiAgICB1cGRhdGVNZXRhZGF0YTogKG1ldGE6IFNldHRhYmxlTWV0YWRhdGEpID0+IGZyb20ocmVmLnVwZGF0ZU1ldGFkYXRhKG1ldGEpKSxcbiAgICBwdXQ6IChkYXRhOiBhbnksIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0KGRhdGEsIG1ldGFkYXRhKTtcbiAgICAgIHJldHVybiBjcmVhdGVVcGxvYWRUYXNrKHRhc2spO1xuICAgIH0sXG4gICAgcHV0U3RyaW5nOiAoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBTdHJpbmdGb3JtYXQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0U3RyaW5nKGRhdGEsIGZvcm1hdCwgbWV0YWRhdGEpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVVwbG9hZFRhc2sodGFzayk7XG4gICAgfSxcbiAgICBsaXN0OiAob3B0aW9ucz86IExpc3RPcHRpb25zKSA9PiBmcm9tKHJlZi5saXN0KG9wdGlvbnMpKSxcbiAgICBsaXN0QWxsOiAoKSA9PiBmcm9tKHJlZi5saXN0QWxsKCkpXG4gIH07XG59XG4iXX0=
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
|
|
2
|
-
import { ɵAngularFireSchedulers } from '@angular/fire';
|
|
3
|
-
import { AppCheckInstances } from '@angular/fire/app-check';
|
|
4
|
-
import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';
|
|
5
|
-
import { createStorageRef } from './ref';
|
|
6
|
-
import 'firebase/compat/storage';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/fire";
|
|
9
|
-
import * as i2 from "@angular/fire/app-check";
|
|
10
|
-
export const BUCKET = new InjectionToken('angularfire2.storageBucket');
|
|
11
|
-
export const MAX_UPLOAD_RETRY_TIME = new InjectionToken('angularfire2.storage.maxUploadRetryTime');
|
|
12
|
-
export const MAX_OPERATION_RETRY_TIME = new InjectionToken('angularfire2.storage.maxOperationRetryTime');
|
|
13
|
-
export const USE_EMULATOR = new InjectionToken('angularfire2.storage.use-emulator');
|
|
14
|
-
/**
|
|
15
|
-
* AngularFireStorage Service
|
|
16
|
-
*
|
|
17
|
-
* This service is the main entry point for this feature module. It provides
|
|
18
|
-
* an API for uploading and downloading binary files from Cloud Storage for
|
|
19
|
-
* Firebase.
|
|
20
|
-
*/
|
|
21
|
-
export class AngularFireStorage {
|
|
22
|
-
storage;
|
|
23
|
-
constructor(options, name, storageBucket,
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
25
|
-
platformId, zone, schedulers, maxUploadRetryTime, maxOperationRetryTime, _useEmulator, _appCheckInstances) {
|
|
26
|
-
const app = ɵfirebaseAppFactory(options, zone, name);
|
|
27
|
-
this.storage = ɵcacheInstance(`${app.name}.storage.${storageBucket}`, 'AngularFireStorage', app.name, () => {
|
|
28
|
-
const storage = zone.runOutsideAngular(() => app.storage(storageBucket || undefined));
|
|
29
|
-
const useEmulator = _useEmulator;
|
|
30
|
-
if (useEmulator) {
|
|
31
|
-
storage.useEmulator(...useEmulator);
|
|
32
|
-
}
|
|
33
|
-
if (maxUploadRetryTime) {
|
|
34
|
-
storage.setMaxUploadRetryTime(maxUploadRetryTime);
|
|
35
|
-
}
|
|
36
|
-
if (maxOperationRetryTime) {
|
|
37
|
-
storage.setMaxOperationRetryTime(maxOperationRetryTime);
|
|
38
|
-
}
|
|
39
|
-
return storage;
|
|
40
|
-
}, [maxUploadRetryTime, maxOperationRetryTime]);
|
|
41
|
-
}
|
|
42
|
-
ref(path) {
|
|
43
|
-
return createStorageRef(this.storage.ref(path));
|
|
44
|
-
}
|
|
45
|
-
refFromURL(path) {
|
|
46
|
-
return createStorageRef(this.storage.refFromURL(path));
|
|
47
|
-
}
|
|
48
|
-
upload(path, data, metadata) {
|
|
49
|
-
const storageRef = this.storage.ref(path);
|
|
50
|
-
const ref = createStorageRef(storageRef);
|
|
51
|
-
return ref.put(data, metadata);
|
|
52
|
-
}
|
|
53
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorage, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: BUCKET, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: MAX_UPLOAD_RETRY_TIME, optional: true }, { token: MAX_OPERATION_RETRY_TIME, optional: true }, { token: USE_EMULATOR, optional: true }, { token: i2.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
54
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorage, providedIn: 'any' });
|
|
55
|
-
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorage, decorators: [{
|
|
57
|
-
type: Injectable,
|
|
58
|
-
args: [{
|
|
59
|
-
providedIn: 'any'
|
|
60
|
-
}]
|
|
61
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
62
|
-
type: Inject,
|
|
63
|
-
args: [FIREBASE_OPTIONS]
|
|
64
|
-
}] }, { type: undefined, decorators: [{
|
|
65
|
-
type: Optional
|
|
66
|
-
}, {
|
|
67
|
-
type: Inject,
|
|
68
|
-
args: [FIREBASE_APP_NAME]
|
|
69
|
-
}] }, { type: undefined, decorators: [{
|
|
70
|
-
type: Optional
|
|
71
|
-
}, {
|
|
72
|
-
type: Inject,
|
|
73
|
-
args: [BUCKET]
|
|
74
|
-
}] }, { type: Object, decorators: [{
|
|
75
|
-
type: Inject,
|
|
76
|
-
args: [PLATFORM_ID]
|
|
77
|
-
}] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{
|
|
78
|
-
type: Optional
|
|
79
|
-
}, {
|
|
80
|
-
type: Inject,
|
|
81
|
-
args: [MAX_UPLOAD_RETRY_TIME]
|
|
82
|
-
}] }, { type: undefined, decorators: [{
|
|
83
|
-
type: Optional
|
|
84
|
-
}, {
|
|
85
|
-
type: Inject,
|
|
86
|
-
args: [MAX_OPERATION_RETRY_TIME]
|
|
87
|
-
}] }, { type: undefined, decorators: [{
|
|
88
|
-
type: Optional
|
|
89
|
-
}, {
|
|
90
|
-
type: Inject,
|
|
91
|
-
args: [USE_EMULATOR]
|
|
92
|
-
}] }, { type: i2.AppCheckInstances, decorators: [{
|
|
93
|
-
type: Optional
|
|
94
|
-
}] }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvc3RvcmFnZS9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSWhILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLHlCQUF5QixDQUFDOzs7O0FBRWpDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBUyw0QkFBNEIsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFTLHlDQUF5QyxDQUFDLENBQUM7QUFDM0csTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsNENBQTRDLENBQUMsQ0FBQztBQUdqSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQXVCLG1DQUFtQyxDQUFDLENBQUM7QUFFMUc7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUNiLE9BQU8sQ0FBMkI7SUFFbEQsWUFDNEIsT0FBd0IsRUFDWCxJQUErQixFQUMxQyxhQUE0QjtJQUN4RCx3REFBd0Q7SUFDbkMsVUFBa0IsRUFDdkMsSUFBWSxFQUNaLFVBQWtDLEVBQ1Msa0JBQXVCLEVBQ3BCLHFCQUEwQixFQUN0QyxZQUFpQixFQUN2QyxrQkFBcUM7UUFFakQsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLFlBQVksYUFBYSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDekcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxXQUFXLEdBQUcsWUFBeUMsQ0FBQztZQUM5RCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVk7UUFDZCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVksRUFBRSxJQUFTLEVBQUUsUUFBeUI7UUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO3VHQTdDVSxrQkFBa0Isa0JBSW5CLGdCQUFnQixhQUNKLGlCQUFpQiw2QkFDakIsTUFBTSw2QkFFbEIsV0FBVyx5RUFHQyxxQkFBcUIsNkJBQ3JCLHdCQUF3Qiw2QkFDeEIsWUFBWTsyR0FidkIsa0JBQWtCLGNBRmpCLEtBQUs7OzJGQUVOLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQUtJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU07OzBCQUV6QixNQUFNOzJCQUFDLFdBQVc7OzBCQUdsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQ3hDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCOzswQkFDM0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZOzswQkFDL0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE5nWm9uZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQXBwQ2hlY2tJbnN0YW5jZXMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcC1jaGVjayc7XG5pbXBvcnQgeyBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUywgybVjYWNoZUluc3RhbmNlLCDJtWZpcmViYXNlQXBwRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCB7IEZpcmViYXNlT3B0aW9ucyB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBVcGxvYWRNZXRhZGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVTdG9yYWdlUmVmIH0gZnJvbSAnLi9yZWYnO1xuaW1wb3J0ICdmaXJlYmFzZS9jb21wYXQvc3RvcmFnZSc7XG5cbmV4cG9ydCBjb25zdCBCVUNLRVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLnN0b3JhZ2VCdWNrZXQnKTtcbmV4cG9ydCBjb25zdCBNQVhfVVBMT0FEX1JFVFJZX1RJTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignYW5ndWxhcmZpcmUyLnN0b3JhZ2UubWF4VXBsb2FkUmV0cnlUaW1lJyk7XG5leHBvcnQgY29uc3QgTUFYX09QRVJBVElPTl9SRVRSWV9USU1FID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ2FuZ3VsYXJmaXJlMi5zdG9yYWdlLm1heE9wZXJhdGlvblJldHJ5VGltZScpO1xuXG50eXBlIFVzZUVtdWxhdG9yQXJndW1lbnRzID0gUGFyYW1ldGVyczxmaXJlYmFzZS5zdG9yYWdlLlN0b3JhZ2VbJ3VzZUVtdWxhdG9yJ10+O1xuZXhwb3J0IGNvbnN0IFVTRV9FTVVMQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVc2VFbXVsYXRvckFyZ3VtZW50cz4oJ2FuZ3VsYXJmaXJlMi5zdG9yYWdlLnVzZS1lbXVsYXRvcicpO1xuXG4vKipcbiAqIEFuZ3VsYXJGaXJlU3RvcmFnZSBTZXJ2aWNlXG4gKlxuICogVGhpcyBzZXJ2aWNlIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGlzIGZlYXR1cmUgbW9kdWxlLiBJdCBwcm92aWRlc1xuICogYW4gQVBJIGZvciB1cGxvYWRpbmcgYW5kIGRvd25sb2FkaW5nIGJpbmFyeSBmaWxlcyBmcm9tIENsb3VkIFN0b3JhZ2UgZm9yXG4gKiBGaXJlYmFzZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55J1xufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVN0b3JhZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RvcmFnZTogZmlyZWJhc2Uuc3RvcmFnZS5TdG9yYWdlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRklSRUJBU0VfT1BUSU9OUykgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklSRUJBU0VfQVBQX05BTUUpIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChCVUNLRVQpIHN0b3JhZ2VCdWNrZXQ6IHN0cmluZyB8IG51bGwsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgem9uZTogTmdab25lLFxuICAgIHNjaGVkdWxlcnM6IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFYX1VQTE9BRF9SRVRSWV9USU1FKSBtYXhVcGxvYWRSZXRyeVRpbWU6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BWF9PUEVSQVRJT05fUkVUUllfVElNRSkgbWF4T3BlcmF0aW9uUmV0cnlUaW1lOiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VfRU1VTEFUT1IpIF91c2VFbXVsYXRvcjogYW55LFxuICAgIEBPcHRpb25hbCgpIF9hcHBDaGVja0luc3RhbmNlczogQXBwQ2hlY2tJbnN0YW5jZXMsXG4gICkge1xuICAgIGNvbnN0IGFwcCA9IMm1ZmlyZWJhc2VBcHBGYWN0b3J5KG9wdGlvbnMsIHpvbmUsIG5hbWUpO1xuICAgIHRoaXMuc3RvcmFnZSA9IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0uc3RvcmFnZS4ke3N0b3JhZ2VCdWNrZXR9YCwgJ0FuZ3VsYXJGaXJlU3RvcmFnZScsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBhcHAuc3RvcmFnZShzdG9yYWdlQnVja2V0IHx8IHVuZGVmaW5lZCkpO1xuICAgICAgY29uc3QgdXNlRW11bGF0b3IgPSBfdXNlRW11bGF0b3IgYXMgVXNlRW11bGF0b3JBcmd1bWVudHN8bnVsbDtcbiAgICAgIGlmICh1c2VFbXVsYXRvcikge1xuICAgICAgICBzdG9yYWdlLnVzZUVtdWxhdG9yKC4uLnVzZUVtdWxhdG9yKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhVcGxvYWRSZXRyeVRpbWUpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRNYXhVcGxvYWRSZXRyeVRpbWUobWF4VXBsb2FkUmV0cnlUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhPcGVyYXRpb25SZXRyeVRpbWUpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRNYXhPcGVyYXRpb25SZXRyeVRpbWUobWF4T3BlcmF0aW9uUmV0cnlUaW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdG9yYWdlO1xuICAgIH0sIFttYXhVcGxvYWRSZXRyeVRpbWUsIG1heE9wZXJhdGlvblJldHJ5VGltZV0pO1xuICB9XG5cbiAgcmVmKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBjcmVhdGVTdG9yYWdlUmVmKHRoaXMuc3RvcmFnZS5yZWYocGF0aCkpO1xuICB9XG5cbiAgcmVmRnJvbVVSTChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY3JlYXRlU3RvcmFnZVJlZih0aGlzLnN0b3JhZ2UucmVmRnJvbVVSTChwYXRoKSk7XG4gIH1cblxuICB1cGxvYWQocGF0aDogc3RyaW5nLCBkYXRhOiBhbnksIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpIHtcbiAgICBjb25zdCBzdG9yYWdlUmVmID0gdGhpcy5zdG9yYWdlLnJlZihwYXRoKTtcbiAgICBjb25zdCByZWYgPSBjcmVhdGVTdG9yYWdlUmVmKHN0b3JhZ2VSZWYpO1xuICAgIHJldHVybiByZWYucHV0KGRhdGEsIG1ldGFkYXRhKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { VERSION } from '@angular/fire';
|
|
3
|
-
import firebase from 'firebase/compat/app';
|
|
4
|
-
import { GetDownloadURLPipeModule } from './pipes/storageUrl.pipe';
|
|
5
|
-
import { AngularFireStorage } from './storage';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class AngularFireStorageModule {
|
|
8
|
-
constructor() {
|
|
9
|
-
firebase.registerVersion('angularfire', VERSION.full, 'gcs-compat');
|
|
10
|
-
}
|
|
11
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorageModule, exports: [GetDownloadURLPipeModule] });
|
|
13
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorageModule, providers: [AngularFireStorage], imports: [GetDownloadURLPipeModule] });
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireStorageModule, decorators: [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
exports: [GetDownloadURLPipeModule],
|
|
19
|
-
providers: [AngularFireStorage]
|
|
20
|
-
}]
|
|
21
|
-
}], ctorParameters: () => [] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3N0b3JhZ2Uvc3RvcmFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFNL0MsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQztRQUNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQzt1R0FIVSx3QkFBd0I7d0dBQXhCLHdCQUF3QixZQUh4Qix3QkFBd0I7d0dBR3hCLHdCQUF3QixhQUZ4QixDQUFFLGtCQUFrQixDQUFFLFlBRHRCLHdCQUF3Qjs7MkZBR3hCLHdCQUF3QjtrQkFKcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBRSx3QkFBd0IsQ0FBRTtvQkFDckMsU0FBUyxFQUFFLENBQUUsa0JBQWtCLENBQUU7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IEdldERvd25sb2FkVVJMUGlwZU1vZHVsZSB9IGZyb20gJy4vcGlwZXMvc3RvcmFnZVVybC5waXBlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFsgR2V0RG93bmxvYWRVUkxQaXBlTW9kdWxlIF0sXG4gIHByb3ZpZGVyczogWyBBbmd1bGFyRmlyZVN0b3JhZ2UgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVN0b3JhZ2VNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBmaXJlYmFzZS5yZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnZ2NzLWNvbXBhdCcpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { map } from 'rxjs/operators';
|
|
2
|
-
import { fromTask } from './observable/fromTask';
|
|
3
|
-
/**
|
|
4
|
-
* Create an AngularFireUploadTask from a regular UploadTask from the Storage SDK.
|
|
5
|
-
* This method creates an observable of the upload and returns on object that provides
|
|
6
|
-
* multiple methods for controlling and monitoring the file upload.
|
|
7
|
-
*/
|
|
8
|
-
export function createUploadTask(task) {
|
|
9
|
-
const inner$ = fromTask(task);
|
|
10
|
-
return {
|
|
11
|
-
task,
|
|
12
|
-
then: task.then.bind(task),
|
|
13
|
-
catch: task.catch.bind(task),
|
|
14
|
-
pause: task.pause.bind(task),
|
|
15
|
-
cancel: task.cancel.bind(task),
|
|
16
|
-
resume: task.resume.bind(task),
|
|
17
|
-
snapshotChanges: () => inner$,
|
|
18
|
-
percentageChanges: () => inner$.pipe(map(s => s.bytesTransferred / s.totalBytes * 100))
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvc3RvcmFnZS90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQmpEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBZ0I7SUFDL0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO1FBQzdCLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUNsRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXBsb2FkVGFzaywgVXBsb2FkVGFza1NuYXBzaG90IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGZyb21UYXNrIH0gZnJvbSAnLi9vYnNlcnZhYmxlL2Zyb21UYXNrJztcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZVVwbG9hZFRhc2sge1xuICB0YXNrOiBVcGxvYWRUYXNrO1xuICBzbmFwc2hvdENoYW5nZXMoKTogT2JzZXJ2YWJsZTxVcGxvYWRUYXNrU25hcHNob3QgfCB1bmRlZmluZWQ+O1xuICBwZXJjZW50YWdlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD47XG4gIHBhdXNlKCk6IGJvb2xlYW47XG4gIGNhbmNlbCgpOiBib29sZWFuO1xuICByZXN1bWUoKTogYm9vbGVhbjtcbiAgdGhlbihcbiAgICBvbkZ1bGZpbGxlZD86ICgoYTogVXBsb2FkVGFza1NuYXBzaG90KSA9PiBhbnkpIHwgbnVsbCxcbiAgICBvblJlamVjdGVkPzogKChhOiBFcnJvcikgPT4gYW55KSB8IG51bGxcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBjYXRjaChvblJlamVjdGVkOiAoYTogRXJyb3IpID0+IGFueSk6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gQW5ndWxhckZpcmVVcGxvYWRUYXNrIGZyb20gYSByZWd1bGFyIFVwbG9hZFRhc2sgZnJvbSB0aGUgU3RvcmFnZSBTREsuXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9ic2VydmFibGUgb2YgdGhlIHVwbG9hZCBhbmQgcmV0dXJucyBvbiBvYmplY3QgdGhhdCBwcm92aWRlc1xuICogbXVsdGlwbGUgbWV0aG9kcyBmb3IgY29udHJvbGxpbmcgYW5kIG1vbml0b3JpbmcgdGhlIGZpbGUgdXBsb2FkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBsb2FkVGFzayh0YXNrOiBVcGxvYWRUYXNrKTogQW5ndWxhckZpcmVVcGxvYWRUYXNrIHtcbiAgY29uc3QgaW5uZXIkID0gZnJvbVRhc2sodGFzayk7XG4gIHJldHVybiB7XG4gICAgdGFzayxcbiAgICB0aGVuOiB0YXNrLnRoZW4uYmluZCh0YXNrKSxcbiAgICBjYXRjaDogdGFzay5jYXRjaC5iaW5kKHRhc2spLFxuICAgIHBhdXNlOiB0YXNrLnBhdXNlLmJpbmQodGFzayksXG4gICAgY2FuY2VsOiB0YXNrLmNhbmNlbC5iaW5kKHRhc2spLFxuICAgIHJlc3VtZTogdGFzay5yZXN1bWUuYmluZCh0YXNrKSxcbiAgICBzbmFwc2hvdENoYW5nZXM6ICgpID0+IGlubmVyJCxcbiAgICBwZXJjZW50YWdlQ2hhbmdlczogKCkgPT4gaW5uZXIkLnBpcGUoXG4gICAgICBtYXAocyA9PiBzLmJ5dGVzVHJhbnNmZXJyZWQgLyBzLnRvdGFsQnl0ZXMgKiAxMDApXG4gICAgKVxuICB9O1xufVxuIl19
|