@angular/fire 18.0.1 → 19.0.0-canary.45ccd39
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/analytics.module.d.ts +2 -2
- package/analytics/firebase.d.ts +3 -3
- 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/data-connect/data-connect.d.ts +9 -0
- package/data-connect/data-connect.module.d.ts +13 -0
- package/data-connect/firebase.d.ts +12 -0
- package/{vertexai-preview → data-connect}/index.d.ts +1 -1
- package/data-connect/package.json +3 -0
- package/data-connect/public_api.d.ts +3 -0
- 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 +25 -52
- 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 +7 -7
- package/fesm2022/angular-fire-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-analytics.mjs +15 -15
- 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 +10 -9
- package/fesm2022/angular-fire-compat-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-database.mjs +20 -19
- package/fesm2022/angular-fire-compat-database.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-firestore.mjs +25 -24
- 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 +10 -9
- package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-storage.mjs +20 -18
- 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-data-connect.mjs +100 -0
- package/fesm2022/angular-fire-data-connect.mjs.map +1 -0
- 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 +15 -42
- 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 +20 -47
- 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 +101 -105
- 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/messaging/firebase.d.ts +2 -2
- package/messaging/messaging.module.d.ts +2 -2
- package/package.json +21 -76
- package/performance/rxfire.d.ts +2 -2
- package/publish.sh +1 -0
- package/remote-config/firebase.d.ts +2 -2
- package/remote-config/remote-config.module.d.ts +2 -2
- 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/index.d.ts +5 -0
- 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 +1 -11
- package/analytics/is-analytics-supported-factory.d.ts +0 -4
- package/analytics/overrides.d.ts +0 -1
- 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/messaging/is-messaging-supported-factory.d.ts +0 -4
- package/messaging/overrides.d.ts +0 -1
- package/remote-config/is-remote-config-supported-factory.d.ts +0 -4
- package/remote-config/overrides.d.ts +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
package/esm2022/zones.mjs
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
2
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
3
|
-
import { Observable, asyncScheduler, queueScheduler } from 'rxjs';
|
|
4
|
-
import { observeOn, subscribeOn, tap } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
7
|
-
function noop() {
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.
|
|
11
|
-
*/
|
|
12
|
-
export class ɵZoneScheduler {
|
|
13
|
-
zone;
|
|
14
|
-
delegate;
|
|
15
|
-
constructor(zone, delegate = queueScheduler) {
|
|
16
|
-
this.zone = zone;
|
|
17
|
-
this.delegate = delegate;
|
|
18
|
-
}
|
|
19
|
-
now() {
|
|
20
|
-
return this.delegate.now();
|
|
21
|
-
}
|
|
22
|
-
schedule(work, delay, state) {
|
|
23
|
-
const targetZone = this.zone;
|
|
24
|
-
// Wrap the specified work function to make sure that if nested scheduling takes place the
|
|
25
|
-
// work is executed in the correct zone
|
|
26
|
-
const workInZone = function (state) {
|
|
27
|
-
targetZone.runGuarded(() => {
|
|
28
|
-
work.apply(this, [state]);
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
// Scheduling itself needs to be run in zone to ensure setInterval calls for async scheduling are done
|
|
32
|
-
// inside the correct zone. This scheduler needs to schedule asynchronously always to ensure that
|
|
33
|
-
// firebase emissions are never synchronous. Specifying a delay causes issues with the queueScheduler delegate.
|
|
34
|
-
return this.delegate.schedule(workInZone, delay, state);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
class BlockUntilFirstOperator {
|
|
38
|
-
zone;
|
|
39
|
-
// @ts-ignore
|
|
40
|
-
task = null;
|
|
41
|
-
constructor(zone) {
|
|
42
|
-
this.zone = zone;
|
|
43
|
-
}
|
|
44
|
-
call(subscriber, source) {
|
|
45
|
-
const unscheduleTask = this.unscheduleTask.bind(this);
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
this.task = this.zone.run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));
|
|
48
|
-
return source.pipe(tap({ next: unscheduleTask, complete: unscheduleTask, error: unscheduleTask })).subscribe(subscriber).add(unscheduleTask);
|
|
49
|
-
}
|
|
50
|
-
unscheduleTask() {
|
|
51
|
-
// maybe this is a race condition, invoke in a timeout
|
|
52
|
-
// hold for 10ms while I try to figure out what is going on
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
if (this.task != null && this.task.state === 'scheduled') {
|
|
55
|
-
this.task.invoke();
|
|
56
|
-
this.task = null;
|
|
57
|
-
}
|
|
58
|
-
}, 10);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export class ɵAngularFireSchedulers {
|
|
62
|
-
ngZone;
|
|
63
|
-
outsideAngular;
|
|
64
|
-
insideAngular;
|
|
65
|
-
constructor(ngZone) {
|
|
66
|
-
this.ngZone = ngZone;
|
|
67
|
-
// @ts-ignore
|
|
68
|
-
this.outsideAngular = ngZone.runOutsideAngular(() => new ɵZoneScheduler(Zone.current));
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
this.insideAngular = ngZone.run(() => new ɵZoneScheduler(Zone.current, asyncScheduler));
|
|
71
|
-
globalThis.ɵAngularFireScheduler ||= this;
|
|
72
|
-
}
|
|
73
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ɵAngularFireSchedulers, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ɵAngularFireSchedulers, providedIn: 'root' });
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ɵAngularFireSchedulers, decorators: [{
|
|
77
|
-
type: Injectable,
|
|
78
|
-
args: [{
|
|
79
|
-
providedIn: 'root',
|
|
80
|
-
}]
|
|
81
|
-
}], ctorParameters: () => [{ type: i0.NgZone }] });
|
|
82
|
-
function getSchedulers() {
|
|
83
|
-
const schedulers = globalThis.ɵAngularFireScheduler;
|
|
84
|
-
if (!schedulers) {
|
|
85
|
-
throw new Error(`Either AngularFireModule has not been provided in your AppModule (this can be done manually or implictly using
|
|
86
|
-
provideFirebaseApp) or you're calling an AngularFire method outside of an NgModule (which is not supported).`);
|
|
87
|
-
}
|
|
88
|
-
return schedulers;
|
|
89
|
-
}
|
|
90
|
-
function runOutsideAngular(fn) {
|
|
91
|
-
return getSchedulers().ngZone.runOutsideAngular(() => fn());
|
|
92
|
-
}
|
|
93
|
-
function run(fn) {
|
|
94
|
-
return getSchedulers().ngZone.run(() => fn());
|
|
95
|
-
}
|
|
96
|
-
export function observeOutsideAngular(obs$) {
|
|
97
|
-
return obs$.pipe(observeOn(getSchedulers().outsideAngular));
|
|
98
|
-
}
|
|
99
|
-
export function observeInsideAngular(obs$) {
|
|
100
|
-
return obs$.pipe(observeOn(getSchedulers().insideAngular));
|
|
101
|
-
}
|
|
102
|
-
export function keepUnstableUntilFirst(obs$) {
|
|
103
|
-
return ɵkeepUnstableUntilFirstFactory(getSchedulers())(obs$);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Operator to block the zone until the first value has been emitted or the observable
|
|
107
|
-
* has completed/errored. This is used to make sure that universal waits until the first
|
|
108
|
-
* value from firebase but doesn't block the zone forever since the firebase subscription
|
|
109
|
-
* is still alive.
|
|
110
|
-
*/
|
|
111
|
-
export function ɵkeepUnstableUntilFirstFactory(schedulers) {
|
|
112
|
-
return function keepUnstableUntilFirst(obs$) {
|
|
113
|
-
obs$ = obs$.lift(new BlockUntilFirstOperator(schedulers.ngZone));
|
|
114
|
-
return obs$.pipe(
|
|
115
|
-
// Run the subscribe body outside of Angular (e.g. calling Firebase SDK to add a listener to a change event)
|
|
116
|
-
subscribeOn(schedulers.outsideAngular),
|
|
117
|
-
// Run operators inside the angular zone (e.g. side effects via tap())
|
|
118
|
-
observeOn(schedulers.insideAngular)
|
|
119
|
-
// INVESTIGATE https://github.com/angular/angularfire/pull/2315
|
|
120
|
-
// share()
|
|
121
|
-
);
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
// @ts-ignore
|
|
125
|
-
const zoneWrapFn = (it, macrotask) => {
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
127
|
-
const _this = this;
|
|
128
|
-
// function() is needed for the arguments object
|
|
129
|
-
return function () {
|
|
130
|
-
const _arguments = arguments;
|
|
131
|
-
if (macrotask) {
|
|
132
|
-
setTimeout(() => {
|
|
133
|
-
if (macrotask.state === 'scheduled') {
|
|
134
|
-
macrotask.invoke();
|
|
135
|
-
}
|
|
136
|
-
}, 10);
|
|
137
|
-
}
|
|
138
|
-
return run(() => it.apply(_this, _arguments));
|
|
139
|
-
};
|
|
140
|
-
};
|
|
141
|
-
export const ɵzoneWrap = (it, blockUntilFirst) => {
|
|
142
|
-
// function() is needed for the arguments object
|
|
143
|
-
return function () {
|
|
144
|
-
// @ts-ignore
|
|
145
|
-
let macrotask;
|
|
146
|
-
const _arguments = arguments;
|
|
147
|
-
// if this is a callback function, e.g, onSnapshot, we should create a microtask and invoke it
|
|
148
|
-
// only once one of the callback functions is tripped.
|
|
149
|
-
for (let i = 0; i < arguments.length; i++) {
|
|
150
|
-
if (typeof _arguments[i] === 'function') {
|
|
151
|
-
if (blockUntilFirst) {
|
|
152
|
-
// @ts-ignore
|
|
153
|
-
macrotask ||= run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));
|
|
154
|
-
}
|
|
155
|
-
// TODO create a microtask to track callback functions
|
|
156
|
-
_arguments[i] = zoneWrapFn(_arguments[i], macrotask);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const ret = runOutsideAngular(() => it.apply(this, _arguments));
|
|
160
|
-
if (!blockUntilFirst) {
|
|
161
|
-
if (ret instanceof Observable) {
|
|
162
|
-
const schedulers = getSchedulers();
|
|
163
|
-
return ret.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
return run(() => ret);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
if (ret instanceof Observable) {
|
|
170
|
-
return ret.pipe(keepUnstableUntilFirst);
|
|
171
|
-
}
|
|
172
|
-
else if (ret instanceof Promise) {
|
|
173
|
-
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
174
|
-
return run(() => new Promise((resolve, reject) => ret.then(it => run(() => resolve(it)), reason => run(() => reject(reason)))));
|
|
175
|
-
}
|
|
176
|
-
else if (typeof ret === 'function' && macrotask) {
|
|
177
|
-
// Handle unsubscribe
|
|
178
|
-
// function() is needed for the arguments object
|
|
179
|
-
return function () {
|
|
180
|
-
setTimeout(() => {
|
|
181
|
-
if (macrotask && macrotask.state === 'scheduled') {
|
|
182
|
-
macrotask.invoke();
|
|
183
|
-
}
|
|
184
|
-
}, 10);
|
|
185
|
-
return ret.apply(this, arguments);
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
// TODO how do we handle storage uploads in Zone? and other stuff with cancel() etc?
|
|
190
|
-
return run(() => ret);
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvem9uZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBT1YsY0FBYyxFQUNkLGNBQWMsRUFDZixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU3RCxnRUFBZ0U7QUFDaEUsU0FBUyxJQUFJO0FBQ2IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDTDtJQUFtQjtJQUF2QyxZQUFvQixJQUFTLEVBQVUsV0FBZ0IsY0FBYztRQUFqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7SUFDckUsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1RCxFQUFFLEtBQWMsRUFBRSxLQUFXO1FBQzNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsMEZBQTBGO1FBQzFGLHVDQUF1QztRQUN2QyxNQUFNLFVBQVUsR0FBRyxVQUFxQyxLQUFVO1lBQ2hFLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixzR0FBc0c7UUFDdEcsaUdBQWlHO1FBQ2pHLCtHQUErRztRQUMvRyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxL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RTtvQkFDZCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRSxDQUFDO3dCQUNqRCxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixvRkFBb0Y7WUFDcEYsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQVEsQ0FBQztBQUNYLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBPcGVyYXRvcixcbiAgU2NoZWR1bGVyQWN0aW9uLFxuICBTY2hlZHVsZXJMaWtlLFxuICBTdWJzY3JpYmVyLFxuICBTdWJzY3JpcHRpb24sXG4gIFRlYXJkb3duTG9naWMsXG4gIGFzeW5jU2NoZWR1bGVyLFxuICBxdWV1ZVNjaGVkdWxlclxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9ic2VydmVPbiwgc3Vic2NyaWJlT24sIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuZnVuY3Rpb24gbm9vcCgpIHtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgdGFza3Mgc28gdGhhdCB0aGV5IGFyZSBpbnZva2VkIGluc2lkZSB0aGUgWm9uZSB0aGF0IGlzIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBjbGFzcyDJtVpvbmVTY2hlZHVsZXIgaW1wbGVtZW50cyBTY2hlZHVsZXJMaWtlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBhbnksIHByaXZhdGUgZGVsZWdhdGU6IGFueSA9IHF1ZXVlU2NoZWR1bGVyKSB7XG4gIH1cblxuICBub3coKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubm93KCk7XG4gIH1cblxuICBzY2hlZHVsZSh3b3JrOiAodGhpczogU2NoZWR1bGVyQWN0aW9uPGFueT4sIHN0YXRlPzogYW55KSA9PiB2b2lkLCBkZWxheT86IG51bWJlciwgc3RhdGU/OiBhbnkpOiBTdWJzY3JpcHRpb24ge1xuICAgIGNvbnN0IHRhcmdldFpvbmUgPSB0aGlzLnpvbmU7XG4gICAgLy8gV3JhcCB0aGUgc3BlY2lmaWVkIHdvcmsgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHRoYXQgaWYgbmVzdGVkIHNjaGVkdWxpbmcgdGFrZXMgcGxhY2UgdGhlXG4gICAgLy8gd29yayBpcyBleGVjdXRlZCBpbiB0aGUgY29ycmVjdCB6b25lXG4gICAgY29uc3Qgd29ya0luWm9uZSA9IGZ1bmN0aW9uKHRoaXM6IFNjaGVkdWxlckFjdGlvbjxhbnk+LCBzdGF0ZTogYW55KSB7XG4gICAgICB0YXJnZXRab25lLnJ1bkd1YXJkZWQoKCkgPT4ge1xuICAgICAgICB3b3JrLmFwcGx5KHRoaXMsIFtzdGF0ZV0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIFNjaGVkdWxpbmcgaXRzZWxmIG5lZWRzIHRvIGJlIHJ1biBpbiB6b25lIHRvIGVuc3VyZSBzZXRJbnRlcnZhbCBjYWxscyBmb3IgYXN5bmMgc2NoZWR1bGluZyBhcmUgZG9uZVxuICAgIC8vIGluc2lkZSB0aGUgY29ycmVjdCB6b25lLiBUaGlzIHNjaGVkdWxlciBuZWVkcyB0byBzY2hlZHVsZSBhc3luY2hyb25vdXNseSBhbHdheXMgdG8gZW5zdXJlIHRoYXRcbiAgICAvLyBmaXJlYmFzZSBlbWlzc2lvbnMgYXJlIG5ldmVyIHN5bmNocm9ub3VzLiBTcGVjaWZ5aW5nIGEgZGVsYXkgY2F1c2VzIGlzc3VlcyB3aXRoIHRoZSBxdWV1ZVNjaGVkdWxlciBkZWxlZ2F0ZS5cbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zY2hlZHVsZSh3b3JrSW5ab25lLCBkZWxheSwgc3RhdGUpO1xuICB9XG59XG5cbmNsYXNzIEJsb2NrVW50aWxGaXJzdE9wZXJhdG9yPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICAvLyBAdHMtaWdub3JlXG4gIHByaXZhdGUgdGFzazogTWFjcm9UYXNrIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBhbnkpIHtcbiAgfVxuXG4gIGNhbGwoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxUPiwgc291cmNlOiBPYnNlcnZhYmxlPFQ+KTogVGVhcmRvd25Mb2dpYyB7XG4gICAgY29uc3QgdW5zY2hlZHVsZVRhc2sgPSB0aGlzLnVuc2NoZWR1bGVUYXNrLmJpbmQodGhpcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMudGFzayA9IHRoaXMuem9uZS5ydW4oKCkgPT4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKCdmaXJlYmFzZVpvbmVCbG9jaycsIG5vb3AsIHt9LCBub29wLCBub29wKSk7XG5cbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICB0YXAoeyBuZXh0OiB1bnNjaGVkdWxlVGFzaywgY29tcGxldGU6IHVuc2NoZWR1bGVUYXNrLCBlcnJvcjogdW5zY2hlZHVsZVRhc2sgfSlcbiAgICApLnN1YnNjcmliZShzdWJzY3JpYmVyKS5hZGQodW5zY2hlZHVsZVRhc2spO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNjaGVkdWxlVGFzaygpIHtcbiAgICAvLyBtYXliZSB0aGlzIGlzIGEgcmFjZSBjb25kaXRpb24sIGludm9rZSBpbiBhIHRpbWVvdXRcbiAgICAvLyBob2xkIGZvciAxMG1zIHdoaWxlIEkgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudGFzayAhPSBudWxsICYmIHRoaXMudGFzay5zdGF0ZSA9PT0gJ3NjaGVkdWxlZCcpIHtcbiAgICAgICAgdGhpcy50YXNrLmludm9rZSgpO1xuICAgICAgICB0aGlzLnRhc2sgPSBudWxsO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMge1xuICBwdWJsaWMgcmVhZG9ubHkgb3V0c2lkZUFuZ3VsYXI6IMm1Wm9uZVNjaGVkdWxlcjtcbiAgcHVibGljIHJlYWRvbmx5IGluc2lkZUFuZ3VsYXI6IMm1Wm9uZVNjaGVkdWxlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5vdXRzaWRlQW5ndWxhciA9IG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgybVab25lU2NoZWR1bGVyKFpvbmUuY3VycmVudCkpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmluc2lkZUFuZ3VsYXIgPSBuZ1pvbmUucnVuKCgpID0+IG5ldyDJtVpvbmVTY2hlZHVsZXIoWm9uZS5jdXJyZW50LCBhc3luY1NjaGVkdWxlcikpO1xuICAgIGdsb2JhbFRoaXMuybVBbmd1bGFyRmlyZVNjaGVkdWxlciB8fD0gdGhpcztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY2hlZHVsZXJzKCkge1xuICBjb25zdCBzY2hlZHVsZXJzID0gZ2xvYmFsVGhpcy7JtUFuZ3VsYXJGaXJlU2NoZWR1bGVyIGFzIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzfHVuZGVmaW5lZDtcbiAgaWYgKCFzY2hlZHVsZXJzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuYEVpdGhlciBBbmd1bGFyRmlyZU1vZHVsZSBoYXMgbm90IGJlZW4gcHJvdmlkZWQgaW4geW91ciBBcHBNb2R1bGUgKHRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHkgb3IgaW1wbGljdGx5IHVzaW5nXG5wcm92aWRlRmlyZWJhc2VBcHApIG9yIHlvdSdyZSBjYWxsaW5nIGFuIEFuZ3VsYXJGaXJlIG1ldGhvZCBvdXRzaWRlIG9mIGFuIE5nTW9kdWxlICh3aGljaCBpcyBub3Qgc3VwcG9ydGVkKS5gKTtcbiAgfVxuICByZXR1cm4gc2NoZWR1bGVycztcbn1cblxuZnVuY3Rpb24gcnVuT3V0c2lkZUFuZ3VsYXI8VD4oZm46ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IFQge1xuICByZXR1cm4gZ2V0U2NoZWR1bGVycygpLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBmbigpKTtcbn1cblxuZnVuY3Rpb24gcnVuPFQ+KGZuOiAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHtcbiAgcmV0dXJuIGdldFNjaGVkdWxlcnMoKS5uZ1pvbmUucnVuKCgpID0+IGZuKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZU91dHNpZGVBbmd1bGFyPFQ+KG9icyQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG9icyQucGlwZShvYnNlcnZlT24oZ2V0U2NoZWR1bGVycygpLm91dHNpZGVBbmd1bGFyKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlSW5zaWRlQW5ndWxhcjxUPihvYnMkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBvYnMkLnBpcGUob2JzZXJ2ZU9uKGdldFNjaGVkdWxlcnMoKS5pbnNpZGVBbmd1bGFyKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZWVwVW5zdGFibGVVbnRpbEZpcnN0PFQ+KG9icyQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIMm1a2VlcFVuc3RhYmxlVW50aWxGaXJzdEZhY3RvcnkoZ2V0U2NoZWR1bGVycygpKShvYnMkKTtcbn1cblxuLyoqXG4gKiBPcGVyYXRvciB0byBibG9jayB0aGUgem9uZSB1bnRpbCB0aGUgZmlyc3QgdmFsdWUgaGFzIGJlZW4gZW1pdHRlZCBvciB0aGUgb2JzZXJ2YWJsZVxuICogaGFzIGNvbXBsZXRlZC9lcnJvcmVkLiBUaGlzIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHRoYXQgdW5pdmVyc2FsIHdhaXRzIHVudGlsIHRoZSBmaXJzdFxuICogdmFsdWUgZnJvbSBmaXJlYmFzZSBidXQgZG9lc24ndCBibG9jayB0aGUgem9uZSBmb3JldmVyIHNpbmNlIHRoZSBmaXJlYmFzZSBzdWJzY3JpcHRpb25cbiAqIGlzIHN0aWxsIGFsaXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gybVrZWVwVW5zdGFibGVVbnRpbEZpcnN0RmFjdG9yeShzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycykge1xuICByZXR1cm4gZnVuY3Rpb24ga2VlcFVuc3RhYmxlVW50aWxGaXJzdDxUPihvYnMkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgb2JzJCA9IG9icyQubGlmdChcbiAgICAgIG5ldyBCbG9ja1VudGlsRmlyc3RPcGVyYXRvcihzY2hlZHVsZXJzLm5nWm9uZSlcbiAgICApO1xuXG4gICAgcmV0dXJuIG9icyQucGlwZShcbiAgICAgIC8vIFJ1biB0aGUgc3Vic2NyaWJlIGJvZHkgb3V0c2lkZSBvZiBBbmd1bGFyIChlLmcuIGNhbGxpbmcgRmlyZWJhc2UgU0RLIHRvIGFkZCBhIGxpc3RlbmVyIHRvIGEgY2hhbmdlIGV2ZW50KVxuICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICAvLyBSdW4gb3BlcmF0b3JzIGluc2lkZSB0aGUgYW5ndWxhciB6b25lIChlLmcuIHNpZGUgZWZmZWN0cyB2aWEgdGFwKCkpXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKVxuICAgICAgLy8gSU5WRVNUSUdBVEUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcmZpcmUvcHVsbC8yMzE1XG4gICAgICAvLyBzaGFyZSgpXG4gICAgKTtcbiAgfTtcbn1cblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qgem9uZVdyYXBGbiA9IChpdDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnksIG1hY3JvdGFzazogTWFjcm9UYXNrfHVuZGVmaW5lZCkgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgY29uc3QgX3RoaXMgPSB0aGlzO1xuICAvLyBmdW5jdGlvbigpIGlzIG5lZWRlZCBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3RcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IF9hcmd1bWVudHMgPSBhcmd1bWVudHM7XG4gICAgaWYgKG1hY3JvdGFzaykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChtYWNyb3Rhc2suc3RhdGUgPT09ICdzY2hlZHVsZWQnKSB7XG4gICAgICAgICAgbWFjcm90YXNrLmludm9rZSgpO1xuICAgICAgICB9XG4gICAgICB9LCAxMCk7XG4gICAgfVxuICAgIHJldHVybiBydW4oKCkgPT4gaXQuYXBwbHkoX3RoaXMsIF9hcmd1bWVudHMpKTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCDJtXpvbmVXcmFwID0gPFQ9IHVua25vd24+KGl0OiBULCBibG9ja1VudGlsRmlyc3Q6IGJvb2xlYW4pOiBUID0+IHtcbiAgLy8gZnVuY3Rpb24oKSBpcyBuZWVkZWQgZm9yIHRoZSBhcmd1bWVudHMgb2JqZWN0XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbGV0IG1hY3JvdGFzazogTWFjcm9UYXNrIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IF9hcmd1bWVudHMgPSBhcmd1bWVudHM7XG4gICAgLy8gaWYgdGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uLCBlLmcsIG9uU25hcHNob3QsIHdlIHNob3VsZCBjcmVhdGUgYSBtaWNyb3Rhc2sgYW5kIGludm9rZSBpdFxuICAgIC8vIG9ubHkgb25jZSBvbmUgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBpcyB0cmlwcGVkLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodHlwZW9mIF9hcmd1bWVudHNbaV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaWYgKGJsb2NrVW50aWxGaXJzdCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBtYWNyb3Rhc2sgfHw9IHJ1bigoKSA9PiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2soJ2ZpcmViYXNlWm9uZUJsb2NrJywgbm9vcCwge30sIG5vb3AsIG5vb3ApKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIGNyZWF0ZSBhIG1pY3JvdGFzayB0byB0cmFjayBjYWxsYmFjayBmdW5jdGlvbnNcbiAgICAgICAgX2FyZ3VtZW50c1tpXSA9IHpvbmVXcmFwRm4oX2FyZ3VtZW50c1tpXSwgbWFjcm90YXNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmV0ID0gcnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gKGl0IGFzIGFueSkuYXBwbHkodGhpcywgX2FyZ3VtZW50cykpO1xuICAgIGlmICghYmxvY2tVbnRpbEZpcnN0KSB7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICBjb25zdCBzY2hlZHVsZXJzID0gZ2V0U2NoZWR1bGVycygpO1xuICAgICAgICByZXR1cm4gcmV0LnBpcGUoXG4gICAgICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcnVuKCgpID0+IHJldCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICByZXR1cm4gcmV0LnBpcGUoa2VlcFVuc3RhYmxlVW50aWxGaXJzdCkgYXMgYW55O1xuICAgIH0gZWxzZSBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzXG4gICAgICByZXR1cm4gcnVuKCgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJldC50aGVuKGl0ID0+IHJ1bigoKSA9PiByZXNvbHZlKGl0KSksIHJlYXNvbiA9PiBydW4oKCkgPT4gcmVqZWN0KHJlYXNvbikpKSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJldCA9PT0gJ2Z1bmN0aW9uJyAmJiBtYWNyb3Rhc2spIHtcbiAgICAgIC8vIEhhbmRsZSB1bnN1YnNjcmliZVxuICAgICAgLy8gZnVuY3Rpb24oKSBpcyBuZWVkZWQgZm9yIHRoZSBhcmd1bWVudHMgb2JqZWN0XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmIChtYWNyb3Rhc2sgJiYgbWFjcm90YXNrLnN0YXRlID09PSAnc2NoZWR1bGVkJykge1xuICAgICAgICAgICAgbWFjcm90YXNrLmludm9rZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgICAgICByZXR1cm4gcmV0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPIGhvdyBkbyB3ZSBoYW5kbGUgc3RvcmFnZSB1cGxvYWRzIGluIFpvbmU/IGFuZCBvdGhlciBzdHVmZiB3aXRoIGNhbmNlbCgpIGV0Yz9cbiAgICAgIHJldHVybiBydW4oKCkgPT4gcmV0KTtcbiAgICB9XG4gIH0gYXMgYW55O1xufTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"angular-fire-vertexai-preview.mjs","sources":["../../../src/vertexai-preview/vertexai.ts","../../../src/vertexai-preview/vertexai.module.ts","../../../src/vertexai-preview/firebase.ts","../../../src/vertexai-preview/angular-fire-vertexai-preview.ts"],"sourcesContent":["import { ɵgetAllInstancesOf } from '@angular/fire';\nimport { VertexAI as FirebaseVertexAI } from 'firebase/vertexai-preview';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface VertexAI extends FirebaseVertexAI {}\n\nexport class VertexAI {\n constructor(vertexai: FirebaseVertexAI) {\n return vertexai;\n }\n}\n\nexport const VERTEX_AI_PROVIDER_NAME = 'vertexai';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface VertexAIInstances extends Array<FirebaseVertexAI> {}\n\nexport class VertexAIInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseVertexAI>(VERTEX_AI_PROVIDER_NAME);\n }\n}\n\nexport const vertexAIInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseVertexAI>(VERTEX_AI_PROVIDER_NAME))),\n distinct(),\n);\n","import {\n EnvironmentProviders,\n InjectionToken,\n Injector,\n NgModule,\n NgZone,\n Optional,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire';\nimport { ɵAppCheckInstances } from '@angular/fire';\nimport { FirebaseApp, FirebaseApps } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\nimport { VertexAI as FirebaseVertexAI } from 'firebase/vertexai-preview';\nimport { VERTEX_AI_PROVIDER_NAME, VertexAI, VertexAIInstances } from './vertexai';\n\nexport const PROVIDED_VERTEX_AI_INSTANCES = new InjectionToken<VertexAI[]>('angularfire2.vertexai-instances');\n\nexport function defaultVertexAIInstanceFactory(provided: FirebaseVertexAI[]|undefined, defaultApp: FirebaseApp) {\n const defaultVertexAI = ɵgetDefaultInstanceOf<FirebaseVertexAI>(VERTEX_AI_PROVIDER_NAME, provided, defaultApp);\n return defaultVertexAI && new VertexAI(defaultVertexAI);\n}\n\nexport function vertexAIInstanceFactory(fn: (injector: Injector) => FirebaseVertexAI) {\n return (zone: NgZone, injector: Injector) => {\n const vertexAI = zone.runOutsideAngular(() => fn(injector));\n return new VertexAI(vertexAI);\n };\n}\n\nconst VERTEX_AI_INSTANCES_PROVIDER = {\n provide: VertexAIInstances,\n deps: [\n [new Optional(), PROVIDED_VERTEX_AI_INSTANCES ],\n ]\n};\n\nconst DEFAULT_VERTEX_AI_INSTANCE_PROVIDER = {\n provide: VertexAI,\n useFactory: defaultVertexAIInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_VERTEX_AI_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_VERTEX_AI_INSTANCE_PROVIDER,\n VERTEX_AI_INSTANCES_PROVIDER,\n ]\n})\nexport class VertexAIModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'vertexai');\n }\n}\n\nexport function provideVertexAI(fn: (injector: Injector) => FirebaseVertexAI, ...deps: any[]): EnvironmentProviders {\n registerVersion('angularfire', VERSION.full, 'vertexai');\n\n return makeEnvironmentProviders([\n DEFAULT_VERTEX_AI_INSTANCE_PROVIDER,\n VERTEX_AI_INSTANCES_PROVIDER,\n {\n provide: PROVIDED_VERTEX_AI_INSTANCES,\n useFactory: vertexAIInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n [new Optional(), ɵAppCheckInstances ],\n ...deps,\n ]\n }\n ]);\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/vertexai-preview';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n getVertexAI as _getVertexAI,\n getGenerativeModel as _getGenerativeModel\n} from 'firebase/vertexai-preview';\n\nexport const getVertexAI = ɵzoneWrap(_getVertexAI, true);\nexport const getGenerativeModel = ɵzoneWrap(_getGenerativeModel, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵgetAllInstancesOf","ɵgetDefaultInstanceOf","ɵAngularFireSchedulers","ɵAppCheckInstances","ɵzoneWrap","_getVertexAI","_getGenerativeModel"],"mappings":"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"}
|
package/messaging/overrides.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const isSupported: () => any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const isSupported: () => any;
|
package/schematics/common.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.addDependencies = exports.safeReadJSON = exports.overwriteIfExists = exports.stringifyFormatted = exports.shortSiteName = void 0;
|
|
27
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
28
|
-
const semver = __importStar(require("semver"));
|
|
29
|
-
const shortSiteName = (site) => { var _a; return (_a = site === null || site === void 0 ? void 0 : site.name) === null || _a === void 0 ? void 0 : _a.split('/').pop(); };
|
|
30
|
-
exports.shortSiteName = shortSiteName;
|
|
31
|
-
const stringifyFormatted = (obj) => JSON.stringify(obj, null, 2);
|
|
32
|
-
exports.stringifyFormatted = stringifyFormatted;
|
|
33
|
-
const overwriteIfExists = (tree, path, content) => {
|
|
34
|
-
if (tree.exists(path)) {
|
|
35
|
-
tree.overwrite(path, content);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
tree.create(path, content);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
exports.overwriteIfExists = overwriteIfExists;
|
|
42
|
-
function safeReadJSON(path, tree) {
|
|
43
|
-
try {
|
|
44
|
-
return JSON.parse(tree.read(path).toString());
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
throw new schematics_1.SchematicsException(`Error when parsing ${path}: ${e.message}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.safeReadJSON = safeReadJSON;
|
|
51
|
-
const addDependencies = (host, deps, context) => {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
const packageJson = host.exists('package.json') && safeReadJSON('package.json', host);
|
|
54
|
-
if (packageJson === undefined) {
|
|
55
|
-
throw new schematics_1.SchematicsException('Could not locate package.json');
|
|
56
|
-
}
|
|
57
|
-
(_a = packageJson.devDependencies) !== null && _a !== void 0 ? _a : (packageJson.devDependencies = {});
|
|
58
|
-
(_b = packageJson.dependencies) !== null && _b !== void 0 ? _b : (packageJson.dependencies = {});
|
|
59
|
-
Object.keys(deps).forEach(depName => {
|
|
60
|
-
const dep = deps[depName];
|
|
61
|
-
const existingDeps = dep.dev ? packageJson.devDependencies : packageJson.dependencies;
|
|
62
|
-
const existingVersion = existingDeps[depName];
|
|
63
|
-
if (existingVersion) {
|
|
64
|
-
try {
|
|
65
|
-
if (!semver.intersects(existingVersion, dep.version)) {
|
|
66
|
-
context.logger.warn(`⚠️ The ${depName} devDependency specified in your package.json (${existingVersion}) does not fulfill AngularFire's dependency (${dep.version})`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
if (existingVersion !== dep.version) {
|
|
71
|
-
context.logger.warn(`⚠️ The ${depName} devDependency specified in your package.json (${existingVersion}) does not fulfill AngularFire's dependency (${dep.version})`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
existingDeps[depName] = dep.version;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
(0, exports.overwriteIfExists)(host, 'package.json', (0, exports.stringifyFormatted)(packageJson));
|
|
80
|
-
};
|
|
81
|
-
exports.addDependencies = addDependencies;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dockerfile = exports.functionGen2 = exports.defaultFunction = exports.defaultPackage = exports.DEFAULT_FUNCTION_NAME = exports.DEFAULT_NODE_VERSION = void 0;
|
|
4
|
-
exports.DEFAULT_NODE_VERSION = 14;
|
|
5
|
-
exports.DEFAULT_FUNCTION_NAME = 'ssr';
|
|
6
|
-
const DEFAULT_FUNCTION_REGION = 'us-central1';
|
|
7
|
-
const DEFAULT_RUNTIME_OPTIONS = {
|
|
8
|
-
timeoutSeconds: 60,
|
|
9
|
-
memory: '1GB'
|
|
10
|
-
};
|
|
11
|
-
const defaultPackage = (dependencies, devDependencies, options, main) => ({
|
|
12
|
-
name: 'functions',
|
|
13
|
-
description: 'Angular Universal Application',
|
|
14
|
-
main: main !== null && main !== void 0 ? main : 'index.js',
|
|
15
|
-
scripts: {
|
|
16
|
-
start: main ? `node ${main}` : 'firebase functions:shell',
|
|
17
|
-
},
|
|
18
|
-
engines: {
|
|
19
|
-
node: (options.functionsNodeVersion || exports.DEFAULT_NODE_VERSION).toString()
|
|
20
|
-
},
|
|
21
|
-
dependencies,
|
|
22
|
-
devDependencies,
|
|
23
|
-
private: true
|
|
24
|
-
});
|
|
25
|
-
exports.defaultPackage = defaultPackage;
|
|
26
|
-
const defaultFunction = (path, options, functionName) => `const functions = require('firebase-functions');
|
|
27
|
-
|
|
28
|
-
// Increase readability in Cloud Logging
|
|
29
|
-
require("firebase-functions/lib/logger/compat");
|
|
30
|
-
|
|
31
|
-
const expressApp = require('./${path}/main').app();
|
|
32
|
-
|
|
33
|
-
exports.${functionName || exports.DEFAULT_FUNCTION_NAME} = functions
|
|
34
|
-
.region('${options.region || DEFAULT_FUNCTION_REGION}')
|
|
35
|
-
.runWith(${JSON.stringify(options.functionsRuntimeOptions || DEFAULT_RUNTIME_OPTIONS)})
|
|
36
|
-
.https
|
|
37
|
-
.onRequest(expressApp);
|
|
38
|
-
`;
|
|
39
|
-
exports.defaultFunction = defaultFunction;
|
|
40
|
-
const functionGen2 = (path, options, functionName) => `const { onRequest } = require('firebase-functions/v2/https');
|
|
41
|
-
|
|
42
|
-
// Increase readability in Cloud Logging
|
|
43
|
-
require("firebase-functions/lib/logger/compat");
|
|
44
|
-
|
|
45
|
-
const expressApp = require('./${path}/main').app();
|
|
46
|
-
|
|
47
|
-
exports.${functionName || exports.DEFAULT_FUNCTION_NAME} = onRequest(${JSON.stringify(Object.assign({ region: options.region || DEFAULT_FUNCTION_REGION }, (options.functionsRuntimeOptions || DEFAULT_RUNTIME_OPTIONS)))}, expressApp);
|
|
48
|
-
`;
|
|
49
|
-
exports.functionGen2 = functionGen2;
|
|
50
|
-
const dockerfile = (options) => `FROM node:${options.functionsNodeVersion || exports.DEFAULT_NODE_VERSION}-slim
|
|
51
|
-
WORKDIR /usr/src/app
|
|
52
|
-
COPY package*.json ./
|
|
53
|
-
RUN npm install --only=production
|
|
54
|
-
COPY . ./
|
|
55
|
-
CMD [ "npm", "start" ]
|
|
56
|
-
`;
|
|
57
|
-
exports.dockerfile = dockerfile;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.getFirebaseTools = void 0;
|
|
30
|
-
const child_process_1 = require("child_process");
|
|
31
|
-
const ora_1 = __importDefault(require("ora"));
|
|
32
|
-
const semver = __importStar(require("semver"));
|
|
33
|
-
const getFirebaseTools = () => globalThis.firebaseTools ?
|
|
34
|
-
Promise.resolve(globalThis.firebaseTools) :
|
|
35
|
-
new Promise((resolve, reject) => {
|
|
36
|
-
var _a;
|
|
37
|
-
(_a = process.env).FIREBASE_CLI_EXPERIMENTS || (_a.FIREBASE_CLI_EXPERIMENTS = 'webframeworks');
|
|
38
|
-
try {
|
|
39
|
-
resolve(require('firebase-tools'));
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
try {
|
|
43
|
-
const root = (0, child_process_1.execSync)('npm root --location=global').toString().trim();
|
|
44
|
-
resolve(require(`${root}/firebase-tools`));
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
const spinner = (0, ora_1.default)({
|
|
48
|
-
text: `Installing firebase-tools...`,
|
|
49
|
-
discardStdin: process.platform !== 'win32',
|
|
50
|
-
}).start();
|
|
51
|
-
(0, child_process_1.spawn)('npm', ['i', '--location=global', 'firebase-tools'], {
|
|
52
|
-
stdio: 'pipe',
|
|
53
|
-
shell: true,
|
|
54
|
-
}).on('close', (code) => {
|
|
55
|
-
if (code === 0) {
|
|
56
|
-
spinner.succeed('firebase-tools installed globally.');
|
|
57
|
-
spinner.stop();
|
|
58
|
-
const root = (0, child_process_1.execSync)('npm root -g').toString().trim();
|
|
59
|
-
resolve(require(`${root}/firebase-tools`));
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
spinner.fail('Package install failed.');
|
|
63
|
-
reject();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}).then(firebaseTools => {
|
|
69
|
-
globalThis.firebaseTools = firebaseTools;
|
|
70
|
-
const version = firebaseTools.cli.version();
|
|
71
|
-
console.log(`Using firebase-tools version ${version}`);
|
|
72
|
-
if (semver.compare(version, '13.0.0') === -1) {
|
|
73
|
-
console.error('firebase-tools version 13.0.0+ is required, please upgrade and run again');
|
|
74
|
-
return Promise.reject();
|
|
75
|
-
}
|
|
76
|
-
return firebaseTools;
|
|
77
|
-
});
|
|
78
|
-
exports.getFirebaseTools = getFirebaseTools;
|
package/schematics/interfaces.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.featureOptions = void 0;
|
|
4
|
-
exports.featureOptions = [
|
|
5
|
-
{ name: 'Authentication', value: 0 },
|
|
6
|
-
{ name: 'Google Analytics', value: 1 },
|
|
7
|
-
{ name: 'App Check', value: 2 },
|
|
8
|
-
{ name: 'Firestore', value: 7 },
|
|
9
|
-
{ name: 'Realtime Database', value: 3 },
|
|
10
|
-
{ name: 'Cloud Functions (callable)', value: 4 },
|
|
11
|
-
{ name: 'Cloud Messaging', value: 5 },
|
|
12
|
-
{ name: 'Performance Monitoring', value: 6 },
|
|
13
|
-
{ name: 'Cloud Storage', value: 8 },
|
|
14
|
-
{ name: 'Remote Config', value: 9 },
|
|
15
|
-
{ name: 'VertexAI (preview)', value: 10 },
|
|
16
|
-
];
|