From aec00b3bfb9a50500a37346b49e2137a503faa2e Mon Sep 17 00:00:00 2001 From: James Daniels Date: Sat, 11 Sep 2021 00:17:46 -0400 Subject: [PATCH] Cleanup the samples --- samples/advanced/src/app/app.browser.module.ts | 5 +++++ samples/advanced/src/app/app.module.ts | 9 --------- samples/advanced/src/app/app.server.module.ts | 5 +++++ samples/compat/src/app/app.browser.module.ts | 17 +++++++++++++++++ samples/compat/src/app/app.module.ts | 13 ++----------- samples/compat/src/app/app.server.module.ts | 6 ++++++ samples/compat/src/environments/environment.ts | 2 +- samples/compat/src/main.ts | 4 ++-- samples/modular/server.ts | 5 +++++ samples/modular/src/app/app.browser.module.ts | 5 +++++ samples/modular/src/app/app.module.ts | 9 --------- samples/modular/src/app/app.server.module.ts | 5 +++++ 12 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 samples/compat/src/app/app.browser.module.ts diff --git a/samples/advanced/src/app/app.browser.module.ts b/samples/advanced/src/app/app.browser.module.ts index 002bb4654..576d5927d 100644 --- a/samples/advanced/src/app/app.browser.module.ts +++ b/samples/advanced/src/app/app.browser.module.ts @@ -12,6 +12,7 @@ import { BrowserTransferStateModule } from '@angular/platform-browser'; import { provideAuth, connectAuthEmulator } from '@angular/fire/auth'; import { initializeAuth, browserPopupRedirectResolver, indexedDBLocalPersistence } from '@angular/fire/auth'; +import { initializeAppCheck, provideAppCheck, ReCaptchaV3Provider } from '@angular/fire/app-check'; @NgModule({ imports: [ @@ -30,6 +31,10 @@ import { initializeAuth, browserPopupRedirectResolver, indexedDBLocalPersistence } return auth; }), + provideAppCheck(() => { + const provider = new ReCaptchaV3Provider(environment.recaptcha3SiteKey); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, registrationStrategy: 'registerWhenStable:30000' diff --git a/samples/advanced/src/app/app.module.ts b/samples/advanced/src/app/app.module.ts index be1eb4782..296a29361 100644 --- a/samples/advanced/src/app/app.module.ts +++ b/samples/advanced/src/app/app.module.ts @@ -2,7 +2,6 @@ import { InjectionToken, NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { provideFirebaseApp, initializeApp } from '@angular/fire/app'; import { FunctionsModule } from '@angular/fire/functions'; -import { provideAppCheck, initializeAppCheck, ReCaptchaV3Provider, CustomProvider } from '@angular/fire/app-check'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -20,8 +19,6 @@ import { StorageComponent } from './storage/storage.component'; import type { app } from 'firebase-admin'; import { AppCheckComponent } from './app-check/app-check.component'; -const isNode = () => typeof process !== 'undefined' && process.versions?.node; - export const FIREBASE_ADMIN = new InjectionToken('firebase-admin'); @NgModule({ @@ -43,12 +40,6 @@ export const FIREBASE_ADMIN = new InjectionToken('firebase-admin'); AppRoutingModule, FunctionsModule, provideFirebaseApp(() => initializeApp(environment.firebase)), - provideAppCheck(() => { - const provider = isNode() ? - new CustomProvider({ getToken: () => Promise.reject() }) : - new ReCaptchaV3Provider(environment.recaptcha3SiteKey); - return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); - }), ], providers: [ ], bootstrap: [ ], diff --git a/samples/advanced/src/app/app.server.module.ts b/samples/advanced/src/app/app.server.module.ts index d0100689d..6439d1882 100644 --- a/samples/advanced/src/app/app.server.module.ts +++ b/samples/advanced/src/app/app.server.module.ts @@ -4,12 +4,17 @@ import * as admin from 'firebase-admin'; import { AppModule, FIREBASE_ADMIN } from './app.module'; import { AppComponent } from './app.component'; +import { initializeAppCheck, provideAppCheck, CustomProvider } from '@angular/fire/app-check'; @NgModule({ imports: [ AppModule, ServerModule, ServerTransferStateModule, + provideAppCheck(() => { + const provider = new CustomProvider({ getToken: () => Promise.reject() }); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), ], providers: [{ provide: FIREBASE_ADMIN, useFactory: () => admin.apps[0] || admin.initializeApp( diff --git a/samples/compat/src/app/app.browser.module.ts b/samples/compat/src/app/app.browser.module.ts new file mode 100644 index 000000000..40bb8f091 --- /dev/null +++ b/samples/compat/src/app/app.browser.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { AppModule } from './app.module'; +import { AppComponent } from './app.component'; +import { environment } from '../environments/environment'; +import { provideAppCheck, initializeAppCheck, ReCaptchaV3Provider } from '@angular/fire/app-check'; + +@NgModule({ + imports: [ + AppModule, + provideAppCheck(() => { + const provider = new ReCaptchaV3Provider(environment.recaptcha3SiteKey); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), + ], + bootstrap: [AppComponent], +}) +export class AppBrowserModule {} diff --git a/samples/compat/src/app/app.module.ts b/samples/compat/src/app/app.module.ts index fb17f60b9..44ee53637 100644 --- a/samples/compat/src/app/app.module.ts +++ b/samples/compat/src/app/app.module.ts @@ -24,11 +24,10 @@ import { AngularFirestoreModule, USE_EMULATOR as USE_FIRESTORE_EMULATOR, SETTING import { AngularFireStorageModule, USE_EMULATOR as USE_STORAGE_EMULATOR } from '@angular/fire/compat/storage'; import { AngularFireAuthModule, USE_DEVICE_LANGUAGE, USE_EMULATOR as USE_AUTH_EMULATOR } from '@angular/fire/compat/auth'; import { AngularFireMessagingModule, SERVICE_WORKER, VAPID_KEY } from '@angular/fire/compat/messaging'; -import { AngularFireFunctionsModule, USE_EMULATOR as USE_FUNCTIONS_EMULATOR, ORIGIN as FUNCTIONS_ORIGIN } from '@angular/fire/compat/functions'; +import { AngularFireFunctionsModule, USE_EMULATOR as USE_FUNCTIONS_EMULATOR } from '@angular/fire/compat/functions'; import { AngularFireRemoteConfigModule, SETTINGS as REMOTE_CONFIG_SETTINGS, DEFAULTS as REMOTE_CONFIG_DEFAULTS } from '@angular/fire/compat/remote-config'; import { AngularFirePerformanceModule, PerformanceMonitoringService } from '@angular/fire/compat/performance'; import { AngularFireAuthGuardModule } from '@angular/fire/compat/auth-guard'; -import { provideAppCheck, initializeAppCheck, ReCaptchaV3Provider, CustomProvider } from '@angular/fire/app-check'; import { DatabaseComponent } from './database/database.component'; import { StorageComponent } from './storage/storage.component'; @@ -40,9 +39,6 @@ import { FunctionsComponent } from './functions/functions.component'; import { UpboatsComponent } from './upboats/upboats.component'; import { initializeApp, provideFirebaseApp } from '@angular/fire/app'; -// @ts-ignore -const isNode = () => typeof process !== 'undefined' && process.versions?.node; - @NgModule({ declarations: [ AppComponent, @@ -71,13 +67,8 @@ const isNode = () => typeof process !== 'undefined' && process.versions?.node; AngularFireAnalyticsModule, AngularFireFunctionsModule, AngularFirePerformanceModule, + // provide modular style for AppCheck, see app.browser/server provideFirebaseApp(() => initializeApp(environment.firebase)), - provideAppCheck(() => { - const provider = isNode() ? - new CustomProvider({ getToken: () => Promise.reject() }) : - new ReCaptchaV3Provider(environment.recaptcha3SiteKey); - return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); - }), ], providers: [ UserTrackingService, diff --git a/samples/compat/src/app/app.server.module.ts b/samples/compat/src/app/app.server.module.ts index d1f47b84f..f5c79b10b 100644 --- a/samples/compat/src/app/app.server.module.ts +++ b/samples/compat/src/app/app.server.module.ts @@ -5,10 +5,16 @@ import { AppModule } from './app.module'; import { AppComponent } from './app.component'; import { APP_BASE_HREF } from '@angular/common'; +import { provideAppCheck, CustomProvider, initializeAppCheck } from '@angular/fire/app-check'; + @NgModule({ imports: [ AppModule, ServerModule, + provideAppCheck(() => { + const provider = new CustomProvider({ getToken: () => Promise.reject() }); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), ], providers: [ { provide: APP_BASE_HREF, useFactory: () => isDevMode() ? '/us-central1/ssr' : '/ssr' }, diff --git a/samples/compat/src/environments/environment.ts b/samples/compat/src/environments/environment.ts index 9c6f760d1..47780b2e8 100644 --- a/samples/compat/src/environments/environment.ts +++ b/samples/compat/src/environments/environment.ts @@ -3,7 +3,7 @@ // The list of file replacements can be found in `angular.json`. export const environment = { - useEmulators: false, + useEmulators: true, production: false, firebase: { apiKey: 'AIzaSyA7CNE9aHbcSEbt9y03QReJ-Xr0nwKg7Yg', diff --git a/samples/compat/src/main.ts b/samples/compat/src/main.ts index ebf5fc9a6..852cd0e2c 100644 --- a/samples/compat/src/main.ts +++ b/samples/compat/src/main.ts @@ -1,7 +1,7 @@ import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { AppModule } from './app/app.module'; +import { AppBrowserModule } from './app/app.browser.module'; import { environment } from './environments/environment'; if (environment.production) { @@ -9,6 +9,6 @@ if (environment.production) { } document.addEventListener('DOMContentLoaded', () => { - platformBrowserDynamic().bootstrapModule(AppModule) + platformBrowserDynamic().bootstrapModule(AppBrowserModule) .catch(err => console.error(err)); }); diff --git a/samples/modular/server.ts b/samples/modular/server.ts index 6dca4a724..49524cc64 100644 --- a/samples/modular/server.ts +++ b/samples/modular/server.ts @@ -9,6 +9,11 @@ import { AppServerModule } from './src/main.server'; import { APP_BASE_HREF } from '@angular/common'; import { existsSync } from 'fs'; +// These polyfills are for app-check Node.js +// @ts-ignore +globalThis.self = globalThis; +globalThis.fetch = require('node-fetch').default; + import '@angular/fire/firestore-protos'; // The Express app is exported so that it can be used by serverless Functions. diff --git a/samples/modular/src/app/app.browser.module.ts b/samples/modular/src/app/app.browser.module.ts index 89a6e03d3..0cdfd0fd1 100644 --- a/samples/modular/src/app/app.browser.module.ts +++ b/samples/modular/src/app/app.browser.module.ts @@ -11,6 +11,7 @@ import { environment } from '../environments/environment'; import { provideAuth, connectAuthEmulator } from '@angular/fire/auth'; import { initializeAuth, browserPopupRedirectResolver, indexedDBLocalPersistence } from '@angular/fire/auth'; +import { provideAppCheck, initializeAppCheck, ReCaptchaV3Provider } from '@angular/fire/app-check'; @NgModule({ imports: [ @@ -28,6 +29,10 @@ import { initializeAuth, browserPopupRedirectResolver, indexedDBLocalPersistence } return auth; }), + provideAppCheck(() => { + const provider = new ReCaptchaV3Provider(environment.recaptcha3SiteKey); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, registrationStrategy: 'registerWhenStable:30000' diff --git a/samples/modular/src/app/app.module.ts b/samples/modular/src/app/app.module.ts index bd12bd436..e8c4c0b92 100644 --- a/samples/modular/src/app/app.module.ts +++ b/samples/modular/src/app/app.module.ts @@ -5,7 +5,6 @@ import { connectFunctionsEmulator, FunctionsModule, getFunctions, provideFunctio import { connectFirestoreEmulator, getFirestore, provideFirestore, enableMultiTabIndexedDbPersistence } from '@angular/fire/firestore'; import { connectDatabaseEmulator, getDatabase, provideDatabase } from '@angular/fire/database'; import { connectStorageEmulator, getStorage, provideStorage } from '@angular/fire/storage'; -import { provideAppCheck, CustomProvider, ReCaptchaV3Provider, initializeAppCheck } from '@angular/fire/app-check'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -27,8 +26,6 @@ export const persistenceEnabled = new Promise(resolve => { resolvePersistenceEnabled = resolve; }); -const isNode = () => typeof process !== 'undefined' && process.versions?.node; - @NgModule({ declarations: [ AppComponent, @@ -80,12 +77,6 @@ const isNode = () => typeof process !== 'undefined' && process.versions?.node; } return functions; }), - provideAppCheck(() => { - const provider = isNode() ? - new CustomProvider({ getToken: () => Promise.reject() }) : - new ReCaptchaV3Provider(environment.recaptcha3SiteKey); - return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); - }), ], providers: [ ], bootstrap: [ ], diff --git a/samples/modular/src/app/app.server.module.ts b/samples/modular/src/app/app.server.module.ts index 795380cd2..3fbbe2116 100644 --- a/samples/modular/src/app/app.server.module.ts +++ b/samples/modular/src/app/app.server.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { ServerModule } from '@angular/platform-server'; +import { provideAppCheck, CustomProvider, initializeAppCheck } from '@angular/fire/app-check'; import { AppModule } from './app.module'; import { AppComponent } from './app.component'; @@ -8,6 +9,10 @@ import { AppComponent } from './app.component'; imports: [ AppModule, ServerModule, + provideAppCheck(() => { + const provider = new CustomProvider({ getToken: () => Promise.reject() }); + return initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true }); + }), ], bootstrap: [AppComponent], })