diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bdad480..2e5be225 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +## [5.0.3](https://github.com/Nativescript/firebase/compare/5.0.2...5.0.3) (2025-06-26) + + +### Features + +* **apps/demo-angular:** add standalone components for Firebase Messaging, Performance, and Remote Config ([58e47d5](https://github.com/Nativescript/firebase/commit/58e47d5d844eb03567c1b89a1b9b25d5256c155d)) + +* **firebase-auth:** create Angular provider for Firebase Auth service + +* **firebase-core:** create Angular provider for Firebase Core initialization + +* **firebase-database:** create Angular provider for Firebase Database service + +* **firebase-firestore:** create Angular provider for Firestore service + +* **firebase-storage:** create Angular provider for Firebase Storage service + +* **chore:** remove unused Firebase Analytics components and modules + +* **chore:** update TypeScript configuration for Angular compatibility + + + # [5.0.0](https://github.com/NativeScript/firebase/compare/3.3.2...5.0.0) (2025-05-13) @@ -455,6 +478,3 @@ ### Features * nx migrate @nativescript/plugin-tools ([d081a2d](https://github.com/NativeScript/firebase/commit/d081a2dd1c645e696bf6ae8d8888319dc751e869)) - - - diff --git a/apps/demo-angular/.eslintrc.json b/apps/demo-angular/.eslintrc.json index be41074b..5c555982 100644 --- a/apps/demo-angular/.eslintrc.json +++ b/apps/demo-angular/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*", "node_modules/**/*"], + "ignorePatterns": ["!**/*", "node_modules/**/*", "platforms/**/*", "hooks/**/*"], "overrides": [ { "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], diff --git a/apps/demo-angular/package.json b/apps/demo-angular/package.json index 4d885186..bc9935f6 100644 --- a/apps/demo-angular/package.json +++ b/apps/demo-angular/package.json @@ -19,7 +19,8 @@ "@nativescript/firebase-functions": "file:../../dist/packages/firebase-functions", "@nativescript/firebase-app-check-debug": "file:../../dist/packages/firebase-app-check-debug", "@nativescript/firebase-messaging-core": "file:../../dist/packages/firebase-messaging-core", - "@nativescript/firebase-ui": "file:../../dist/packages/firebase-ui" + "@nativescript/firebase-ui": "file:../../dist/packages/firebase-ui", + "@nativescript/google-signin": "~2.1.0" }, "devDependencies": { "@nativescript/android": "~8.8.0", diff --git a/apps/demo-angular/src/app.component.ts b/apps/demo-angular/src/app.component.ts index 2813bee6..a1c518a4 100644 --- a/apps/demo-angular/src/app.component.ts +++ b/apps/demo-angular/src/app.component.ts @@ -5,7 +5,8 @@ import { AppService } from './app.service'; template: ` `, + standalone: false, }) export class AppComponent { - constructor(appService: AppService){} + constructor(appService: AppService) {} } diff --git a/apps/demo-angular/src/app.module.ts b/apps/demo-angular/src/app.module.ts index 6efd6983..cee2f6ab 100644 --- a/apps/demo-angular/src/app.module.ts +++ b/apps/demo-angular/src/app.module.ts @@ -1,5 +1,6 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptModule } from '@nativescript/angular'; +import { provideFirebaseCoreInitializer } from '@nativescript/firebase-core/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; @@ -8,9 +9,9 @@ import { AppService } from './app.service'; @NgModule({ schemas: [NO_ERRORS_SCHEMA], - declarations: [AppComponent, HomeComponent], + declarations: [AppComponent], bootstrap: [AppComponent], - imports: [NativeScriptModule, AppRoutingModule], - providers: [AppService] + imports: [NativeScriptModule, AppRoutingModule, HomeComponent], + providers: [AppService, provideFirebaseCoreInitializer()], }) export class AppModule {} diff --git a/apps/demo-angular/src/plugin-demos/firebase-analytics.component.ts b/apps/demo-angular/src/plugin-demos/firebase-analytics.component.ts index 382e5ede..918818b7 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-analytics.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-analytics.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseAnalytics } from '@demo/shared'; -import { } from '@nativescript/firebase-analytics'; +import {} from '@nativescript/firebase-analytics'; @Component({ selector: 'demo-firebase-analytics', templateUrl: 'firebase-analytics.component.html', + standalone: false, }) export class FirebaseAnalyticsComponent { - - demoShared: DemoSharedFirebaseAnalytics; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseAnalytics; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseAnalytics(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseAnalytics(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-app-check-debug.component.ts b/apps/demo-angular/src/plugin-demos/firebase-app-check-debug.component.ts index a648e6de..4aeff91f 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-app-check-debug.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-app-check-debug.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseAppCheckDebug } from '@demo/shared'; -import { } from '@nativescript/firebase-app-check-debug'; +import {} from '@nativescript/firebase-app-check-debug'; @Component({ selector: 'demo-firebase-app-check-debug', templateUrl: 'firebase-app-check-debug.component.html', + standalone: false, }) export class FirebaseAppCheckDebugComponent { - - demoShared: DemoSharedFirebaseAppCheckDebug; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseAppCheckDebug; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseAppCheckDebug(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseAppCheckDebug(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-app-check.component.ts b/apps/demo-angular/src/plugin-demos/firebase-app-check.component.ts index 7658da37..72971d3c 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-app-check.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-app-check.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseAppCheck } from '@demo/shared'; -import { } from '@nativescript/firebase-app-check'; +import {} from '@nativescript/firebase-app-check'; @Component({ selector: 'demo-firebase-app-check', templateUrl: 'firebase-app-check.component.html', + standalone: false, }) export class FirebaseAppCheckComponent { - - demoShared: DemoSharedFirebaseAppCheck; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseAppCheck; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseAppCheck(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseAppCheck(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-auth.component.html b/apps/demo-angular/src/plugin-demos/firebase-auth.component.html index 050af23e..e44cbbee 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-auth.component.html +++ b/apps/demo-angular/src/plugin-demos/firebase-auth.component.html @@ -2,7 +2,27 @@ - + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/firebase-auth.component.ts b/apps/demo-angular/src/plugin-demos/firebase-auth.component.ts index 033ed1fb..55d227ec 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-auth.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-auth.component.ts @@ -1,19 +1,186 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseAuth } from '@demo/shared'; -import { } from '@nativescript/firebase-auth'; +import { Auth, GoogleAuthProvider, OAuthProvider, PhoneAuthProvider, User } from '@nativescript/firebase-auth'; +import { GoogleSignin } from '@nativescript/google-signin'; +let didInit = false; @Component({ selector: 'demo-firebase-auth', templateUrl: 'firebase-auth.component.html', + standalone: false, }) export class FirebaseAuthComponent { - - demoShared: DemoSharedFirebaseAuth; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseAuth; + uid: string; + displayName: string; + displayEmail: string; + photoURL: string; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseAuth(); - } + email: string; + password: string; + user: User; + phoneNumber: string; + code: string; + verificationId: string; -} \ No newline at end of file + constructor(private auth: Auth) {} + + ngOnInit() { + this.demoShared = new DemoSharedFirebaseAuth(); + + this.auth.addAuthStateChangeListener((user) => { + this._setCurrentUser(user); + }); + } + + async linkGithub() { + if (!this.user) { + return; + } + const provider = new OAuthProvider('github.com'); + provider.addCustomParameter('allow_signup', 'false'); + provider.setScopes(['user:email']); + + this.auth + .getProviderCredential(provider) + .then((cred) => { + this.auth.currentUser.linkWithCredential(cred); + console.log('cred', cred); + }) + .catch((e) => { + console.log('Failed to link Github', e); + }); + } + + async linkYahoo() { + if (!this.user) { + return; + } + const provider = new OAuthProvider('yahoo.com'); + provider.addCustomParameter('prompt', 'login'); + provider.addCustomParameter('language', 'en'); + + this.auth + .getProviderCredential(provider) + .then((cred) => { + this.auth.currentUser.linkWithCredential(cred); + }) + .catch((e) => { + console.log('Failed to link Yahoo', e); + }); + } + + async linkGoogle() { + try { + if (!this.user) { + return; + } + if (!didInit) { + await GoogleSignin.configure(); + didInit = true; + } + const isAvailable = await GoogleSignin.playServicesAvailable(); + if (!isAvailable) { + return; + } + const user = await GoogleSignin.signIn(); + const cred = GoogleAuthProvider.credential(user.idToken, user.accessToken); + const linked = await this.user.linkWithCredential(cred); + console.log(linked); + } catch (e) { + console.log('linkGoogle', e.native); + } + } + + async linkPhone() { + if (!this.auth.currentUser) { + console.info('Login to link phone'); + return; + } + try { + const cred = PhoneAuthProvider.provider().credential(this.verificationId, this.code); + const linkedCred = await this.auth.currentUser.linkWithCredential(cred); + console.log('verificationId', linkedCred); + } catch (e) { + console.log('linkPhone error:', e); + } + } + + async getVerificationCode() { + try { + this.verificationId = await PhoneAuthProvider.provider().verifyPhoneNumber(this.phoneNumber); + } catch (e) { + console.log('getVerificationCode error:', e); + } + } + + async loginWithPhone() { + try { + const cred = PhoneAuthProvider.provider().credential(this.verificationId, this.code); + const value = await this.auth.signInWithCredential(cred); + console.log('verificationId', this.verificationId); + console.log('loginUser', value); + this._setCurrentUser(value.user); + } catch (e) { + console.log('linkPhone error:', e); + } + } + + createUser() { + this.auth + .createUserWithEmailAndPassword(this.email, this.password) + .then((user) => { + this.user = user.user; + user.user.sendEmailVerification(); + }) + .catch((e) => { + console.error('createUser', e); + }); + } + + loginUser() { + this.auth + .signInWithEmailAndPassword(this.email, this.password) + .then((value) => { + console.log('loginUser', value); + this._setCurrentUser(value.user); + }) + .catch((e) => { + console.error('loginUser', e); + }); + } + + _setCurrentUser(user: User) { + this.user = user; + this.uid = user?.uid; + this.displayName = user?.displayName; + this.displayEmail = user?.email; + this.photoURL = user?.photoURL; + } + + getCurrentUser() { + const auth = this.auth; + this._setCurrentUser(auth?.currentUser); + } + + logOutUser() { + this.auth.signOut(); + this._setCurrentUser(undefined); + } + + loginMs() { + // https://firebase.google.com/docs/auth/android/microsoft-oauth#handle_the_sign-in_flow_with_the_firebase_sdk + + const provider = new OAuthProvider('microsoft.com'); + provider.addCustomParameter('prompt', 'consent'); + provider.addCustomParameter('login_hint', 'user@firstadd.onmicrosoft.com'); + provider.addCustomParameter('tenant', 'TENANT_ID'); + + provider.setScopes(['mail.read', 'calendars.read']); + + this.auth + .signInWithProvider(provider) + .then((credentials) => {}) + .catch((err) => {}); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-auth.module.ts b/apps/demo-angular/src/plugin-demos/firebase-auth.module.ts index 8f7a4d80..c18928fd 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-auth.module.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-auth.module.ts @@ -1,10 +1,12 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; import { FirebaseAuthComponent } from './firebase-auth.component'; +import { provideAuth } from '@nativescript/firebase-auth/angular'; @NgModule({ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: FirebaseAuthComponent }])], - declarations: [FirebaseAuthComponent], - schemas: [ NO_ERRORS_SCHEMA] + declarations: [FirebaseAuthComponent], + providers: [provideAuth()], + schemas: [NO_ERRORS_SCHEMA], }) export class FirebaseAuthModule {} diff --git a/apps/demo-angular/src/plugin-demos/firebase-core.component.ts b/apps/demo-angular/src/plugin-demos/firebase-core.component.ts index 5d6494cf..c396f069 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-core.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-core.component.ts @@ -1,19 +1,17 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseCore } from '@demo/shared'; -import { } from '@nativescript/firebase-core'; @Component({ selector: 'demo-firebase-core', templateUrl: 'firebase-core.component.html', + standalone: false, }) export class FirebaseCoreComponent { - - demoShared: DemoSharedFirebaseCore; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseCore; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseCore(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseCore(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-crashlytics.component.ts b/apps/demo-angular/src/plugin-demos/firebase-crashlytics.component.ts index e5b9db33..bd8365ca 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-crashlytics.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-crashlytics.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseCrashlytics } from '@demo/shared'; -import { } from '@nativescript/firebase-crashlytics'; +import {} from '@nativescript/firebase-crashlytics'; @Component({ selector: 'demo-firebase-crashlytics', templateUrl: 'firebase-crashlytics.component.html', + standalone: false, }) export class FirebaseCrashlyticsComponent { - - demoShared: DemoSharedFirebaseCrashlytics; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseCrashlytics; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseCrashlytics(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseCrashlytics(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-database.component.html b/apps/demo-angular/src/plugin-demos/firebase-database.component.html index d7a7dc26..3a8617e2 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-database.component.html +++ b/apps/demo-angular/src/plugin-demos/firebase-database.component.html @@ -2,7 +2,7 @@ - + diff --git a/apps/demo-angular/src/plugin-demos/firebase-database.component.ts b/apps/demo-angular/src/plugin-demos/firebase-database.component.ts index 3e333177..49b5e917 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-database.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-database.component.ts @@ -1,19 +1,140 @@ -import { Component, NgZone } from '@angular/core'; +import { Component, inject, NgZone } from '@angular/core'; import { DemoSharedFirebaseDatabase } from '@demo/shared'; -import { } from '@nativescript/firebase-database'; +import { Auth } from '@nativescript/firebase-auth'; +import { Database } from '@nativescript/firebase-database'; @Component({ selector: 'demo-firebase-database', templateUrl: 'firebase-database.component.html', + standalone: false, }) export class FirebaseDatabaseComponent { - - demoShared: DemoSharedFirebaseDatabase; - - constructor(private _ngZone: NgZone) {} + database = inject(Database); + auth = inject(Auth); - ngOnInit() { - this.demoShared = new DemoSharedFirebaseDatabase(); - } + testIt(): void { + this.transaction(); + this.randomData(); + this.children(); + this.setData(); + this.issue113(); + this.issue141(); + } -} \ No newline at end of file + issue105() { + var obj = { + list: [ + { propertyA: 'valueA', propertyB: null }, + { propertyA: 'aaa', propertyB: null }, + ], + }; + this.database + .ref('/issues/105') + .set(obj) + .then((v) => { + console.log('done'); + }) + .catch((e) => { + console.log('error', e); + }); + } + + issue113() { + this.database + .ref('/issues/113') + .set(2.1) + .then((v) => { + console.log('done'); + }) + .catch((e) => { + console.log('error', e); + }); + } + + issue141() { + let on = true; + const ref = this.database.ref('/issues/141'); + const cb = (data, key) => { + if (!on) { + throw new Error('issue 141 Listener: failed to unsubscribe'); + } + console.log('issue141', data.val(), 'previous', key); + ref.off('value', cb); + on = false; + + ref.set({ name: 'Osei Fortune' }); + }; + ref.on('value', cb); + ref.set({ name: 'Osei' }); + } + + setData() { + this.database + .ref('/person/me') + .set({ name: 'set', boolean: true, updated: new Date() }) + .then((value) => { + console.log('set some data', value); + }) + .catch((e) => { + console.log('failed to set data', e); + }); + } + + randomData() { + this.database + .ref('/random') + .push({ name: 'random', float: 1.1 }) + .then((value) => { + console.log('push randomData', value); + }); + } + + children() { + this.database + .ref('/posts') + .once('value') + .then((res) => { + let count = 0; + res.forEach((snapshot) => { + const val = snapshot.val(); + console.log('val', 'index', count, val); + if (val.likes === 3) { + return true; + } + count++; + }); + }); + } + + transaction() { + this.database + .ref('/posts/1') + .orderByValue() + .once('value') + .then((value) => { + console.log('transaction', value.exportVal()); + console.dir(value.exportVal()); + console.log('transaction', value.val()); + }); + + // this.database + // .ref('/posts') + // .child('1') + // .transaction((data: any) => { + // if (data) { + // data.likes += 1; + // return data; + // } else { + // return { + // likes: 1, + // }; + // } + // }) + // .then((result) => { + // console.log('transaction', 'result', result); + // }) + // .catch((e) => { + // console.log('transaction', 'error', e); + // }); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-database.module.ts b/apps/demo-angular/src/plugin-demos/firebase-database.module.ts index bd945376..9281f0d6 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-database.module.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-database.module.ts @@ -1,10 +1,13 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; import { FirebaseDatabaseComponent } from './firebase-database.component'; +import { provideAuth } from '@nativescript/firebase-auth/angular'; +import { provideFirebaseDatabase } from '@nativescript/firebase-database/angular'; @NgModule({ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: FirebaseDatabaseComponent }])], - declarations: [FirebaseDatabaseComponent], - schemas: [ NO_ERRORS_SCHEMA] + declarations: [FirebaseDatabaseComponent], + providers: [provideAuth(), provideFirebaseDatabase()], + schemas: [NO_ERRORS_SCHEMA], }) export class FirebaseDatabaseModule {} diff --git a/apps/demo-angular/src/plugin-demos/firebase-dynamic-links.component.ts b/apps/demo-angular/src/plugin-demos/firebase-dynamic-links.component.ts index b77759ae..9511f5b1 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-dynamic-links.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-dynamic-links.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseDynamicLinks } from '@demo/shared'; -import { } from '@nativescript/firebase-dynamic-links'; +import {} from '@nativescript/firebase-dynamic-links'; @Component({ selector: 'demo-firebase-dynamic-links', templateUrl: 'firebase-dynamic-links.component.html', + standalone: false, }) export class FirebaseDynamicLinksComponent { - - demoShared: DemoSharedFirebaseDynamicLinks; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseDynamicLinks; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseDynamicLinks(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseDynamicLinks(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-firestore.component.html b/apps/demo-angular/src/plugin-demos/firebase-firestore.component.html index b5e83106..f6696aee 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-firestore.component.html +++ b/apps/demo-angular/src/plugin-demos/firebase-firestore.component.html @@ -2,7 +2,7 @@ - + diff --git a/apps/demo-angular/src/plugin-demos/firebase-firestore.component.ts b/apps/demo-angular/src/plugin-demos/firebase-firestore.component.ts index d4fa9585..690eb15e 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-firestore.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-firestore.component.ts @@ -1,19 +1,167 @@ -import { Component, NgZone } from '@angular/core'; -import { DemoSharedFirebaseFirestore } from '@demo/shared'; -import { } from '@nativescript/firebase-firestore'; +import { Component, inject } from '@angular/core'; +import { FieldPath, FieldValue, Firestore, GeoPoint, Timestamp } from '@nativescript/firebase-firestore'; @Component({ selector: 'demo-firebase-firestore', templateUrl: 'firebase-firestore.component.html', + standalone: false, }) export class FirebaseFirestoreComponent { - - demoShared: DemoSharedFirebaseFirestore; - - constructor(private _ngZone: NgZone) {} + private firestore = inject(Firestore); - ngOnInit() { - this.demoShared = new DemoSharedFirebaseFirestore(); - } + testIt(): void { + this.issue_139(); + this.issue_51(); + //Promise.all([this.init(), this.invalid_field_path(), this.issue_139(), this.field_path()]); + } -} \ No newline at end of file + issue_51() { + const doc = this.firestore.collection('users').doc('0Myq8dlF1dQtC7tX4WlA'); + + const users = this.firestore.collection('users'); + + doc.onSnapshot({ + next(snapshot) { + console.log('onSnapshot', 'object'); + }, + }); + + doc.onSnapshot( + { includeMetadataChanges: true }, + { + next(snapshot) { + console.log('onSnapshot', 'options', '&', 'object'); + }, + } + ); + + doc.onSnapshot((doc) => { + console.log('onSnapshot', '&', 'function'); + }); + + doc.onSnapshot({ includeMetadataChanges: true }, (doc) => { + console.log('onSnapshot', 'options', '&', 'function'); + }); + + users.onSnapshot({ + next(snapshot) { + console.log('users', 'onSnapshot', 'object'); + }, + }); + + users.onSnapshot( + { includeMetadataChanges: true }, + { + next(snapshot) { + console.log('users', 'onSnapshot', 'options', '&', 'object'); + }, + } + ); + + users.onSnapshot((doc) => { + console.log('users', 'onSnapshot', '&', 'function'); + }); + + users.onSnapshot({ includeMetadataChanges: true }, (doc) => { + console.log('users', 'onSnapshot', 'options', '&', 'function'); + }); + } + + async init() { + this.firestore + .collection('users') + .add({ + first: 'Ada', + last: 'Lovelace', + born: 1815, + }) + .then((docRef) => { + console.log('Document written with ID: ', docRef.id); + }) + .catch((error) => { + console.error('Error adding document: ', error); + }); + + const geo = new GeoPoint(10, -10); + this.firestore + .collection('geo') + .add({ + thing: 'it', + geo, + }) + .then((docRef) => { + console.log('Geo Document written with ID: ', docRef.id); + }) + .catch((error) => { + console.error('Error adding geo document: ', error); + }); + + this.firestore + .collection('items') + .get() + .then((items) => { + console.log(items.docs[0].data()); + }); + + const exampleDoc = this.firestore.collection('things').doc('exampleDoc'); + const exampleDoc2 = this.firestore.collection('things').doc('exampleDoc2'); + + this.firestore + .batch() + .set(exampleDoc, { + message: 'Hello doc', + }) + .set(exampleDoc2, { + date: new Date(), + }) + .commit() + .then(() => {}) + .catch((error) => { + console.error(error); + }); + } + + async invalid_field_path() { + try { + await this.firestore + .collection('products') + .doc('Oq4eU5p4Lj7Eh6dfjbBX') + .set({ + name: 'Product 1', + ts: Timestamp.fromDate(new Date()), + }); + await this.firestore + .collection('products') + .doc('Oq4eU5p4Lj7Eh6dfjbBX') + .update({ + name: 'Product 2', + ts: Timestamp.fromDate(new Date()), + }); + } catch (error) { + console.log('error', error); + } + } + + async issue_139() { + const data = { + a: { + b: FieldValue.serverTimestamp(), + }, + }; + + data[new FieldPath(['test', '123']) as any] = 'thing'; + this.firestore + .doc('test/1234') + .update(data) + .then((done) => { + console.log('done', 'issue 139'); + }) + .catch((e) => { + console.error('done', 'issue 139', e); + }); + } + + async field_path() { + const fp = new FieldPath(['test', '123']); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-firestore.module.ts b/apps/demo-angular/src/plugin-demos/firebase-firestore.module.ts index 8881ad13..9efade4a 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-firestore.module.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-firestore.module.ts @@ -1,10 +1,12 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; import { FirebaseFirestoreComponent } from './firebase-firestore.component'; +import { provideFirestore } from '@nativescript/firebase-firestore/angular'; @NgModule({ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: FirebaseFirestoreComponent }])], - declarations: [FirebaseFirestoreComponent], - schemas: [ NO_ERRORS_SCHEMA] + declarations: [FirebaseFirestoreComponent], + providers: [provideFirestore()], + schemas: [NO_ERRORS_SCHEMA], }) export class FirebaseFirestoreModule {} diff --git a/apps/demo-angular/src/plugin-demos/firebase-functions.component.ts b/apps/demo-angular/src/plugin-demos/firebase-functions.component.ts index aa6cedd0..140cdd87 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-functions.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-functions.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseFunctions } from '@demo/shared'; -import { } from '@nativescript/firebase-functions'; +import {} from '@nativescript/firebase-functions'; @Component({ selector: 'demo-firebase-functions', templateUrl: 'firebase-functions.component.html', + standalone: false, }) export class FirebaseFunctionsComponent { - - demoShared: DemoSharedFirebaseFunctions; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseFunctions; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseFunctions(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseFunctions(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-in-app-messaging.component.ts b/apps/demo-angular/src/plugin-demos/firebase-in-app-messaging.component.ts index 98e150af..6feb395f 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-in-app-messaging.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-in-app-messaging.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseInAppMessaging } from '@demo/shared'; -import { } from '@nativescript/firebase-in-app-messaging'; +import {} from '@nativescript/firebase-in-app-messaging'; @Component({ selector: 'demo-firebase-in-app-messaging', templateUrl: 'firebase-in-app-messaging.component.html', + standalone: false, }) export class FirebaseInAppMessagingComponent { - - demoShared: DemoSharedFirebaseInAppMessaging; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseInAppMessaging; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseInAppMessaging(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseInAppMessaging(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-installations.component.ts b/apps/demo-angular/src/plugin-demos/firebase-installations.component.ts index 7742e815..509c345b 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-installations.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-installations.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseInstallations } from '@demo/shared'; -import { } from '@nativescript/firebase-installations'; +import {} from '@nativescript/firebase-installations'; @Component({ selector: 'demo-firebase-installations', templateUrl: 'firebase-installations.component.html', + standalone: false, }) export class FirebaseInstallationsComponent { - - demoShared: DemoSharedFirebaseInstallations; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseInstallations; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseInstallations(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseInstallations(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-messaging-core.component.ts b/apps/demo-angular/src/plugin-demos/firebase-messaging-core.component.ts index 5522340b..6b9d7c01 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-messaging-core.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-messaging-core.component.ts @@ -1,10 +1,11 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseMessagingCore } from '@demo/shared'; -import {} from '@nativescript/firebase-messaging-core'; +import {} from '@nativescript/firebase-messaging'; @Component({ selector: 'demo-firebase-messaging-core', templateUrl: 'firebase-messaging-core.component.html', + standalone: false, }) export class FirebaseMessagingCoreComponent { demoShared: DemoSharedFirebaseMessagingCore; diff --git a/apps/demo-angular/src/plugin-demos/firebase-messaging.component.ts b/apps/demo-angular/src/plugin-demos/firebase-messaging.component.ts index 414e8fe5..f5aa34c7 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-messaging.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-messaging.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseMessaging } from '@demo/shared'; -import { } from '@nativescript/firebase-messaging'; +import {} from '@nativescript/firebase-messaging'; @Component({ selector: 'demo-firebase-messaging', templateUrl: 'firebase-messaging.component.html', + standalone: false, }) export class FirebaseMessagingComponent { - - demoShared: DemoSharedFirebaseMessaging; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseMessaging; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseMessaging(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseMessaging(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-performance.component.ts b/apps/demo-angular/src/plugin-demos/firebase-performance.component.ts index 534ced9e..3f1a968b 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-performance.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-performance.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebasePerformance } from '@demo/shared'; -import { } from '@nativescript/firebase-performance'; +import {} from '@nativescript/firebase-performance'; @Component({ selector: 'demo-firebase-performance', templateUrl: 'firebase-performance.component.html', + standalone: false, }) export class FirebasePerformanceComponent { - - demoShared: DemoSharedFirebasePerformance; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebasePerformance; - ngOnInit() { - this.demoShared = new DemoSharedFirebasePerformance(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebasePerformance(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-remote-config.component.ts b/apps/demo-angular/src/plugin-demos/firebase-remote-config.component.ts index 3819b363..e9f9f23b 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-remote-config.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-remote-config.component.ts @@ -1,19 +1,18 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedFirebaseRemoteConfig } from '@demo/shared'; -import { } from '@nativescript/firebase-remote-config'; +import {} from '@nativescript/firebase-remote-config'; @Component({ selector: 'demo-firebase-remote-config', templateUrl: 'firebase-remote-config.component.html', + standalone: false, }) export class FirebaseRemoteConfigComponent { - - demoShared: DemoSharedFirebaseRemoteConfig; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseRemoteConfig; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseRemoteConfig(); - } + constructor(private _ngZone: NgZone) {} -} \ No newline at end of file + ngOnInit() { + this.demoShared = new DemoSharedFirebaseRemoteConfig(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-storage.component.html b/apps/demo-angular/src/plugin-demos/firebase-storage.component.html index 40da47d8..084e11dc 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-storage.component.html +++ b/apps/demo-angular/src/plugin-demos/firebase-storage.component.html @@ -2,6 +2,10 @@ + + + + diff --git a/apps/demo-angular/src/plugin-demos/firebase-storage.component.ts b/apps/demo-angular/src/plugin-demos/firebase-storage.component.ts index 6f2e3070..c0d7556c 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-storage.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-storage.component.ts @@ -1,19 +1,79 @@ -import { Component, NgZone } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { DemoSharedFirebaseStorage } from '@demo/shared'; -import { } from '@nativescript/firebase-storage'; +import { path, knownFolders, File } from '@nativescript/core'; +import { Auth } from '@nativescript/firebase-auth'; +import { Storage } from '@nativescript/firebase-storage'; +import { Metadata, TaskEvent } from '@nativescript/firebase-storage'; @Component({ selector: 'demo-firebase-storage', templateUrl: 'firebase-storage.component.html', + standalone: false, }) export class FirebaseStorageComponent { - - demoShared: DemoSharedFirebaseStorage; - - constructor(private _ngZone: NgZone) {} + demoShared: DemoSharedFirebaseStorage; + storage = inject(Storage); + auth = inject(Auth); + textToUpload = ''; + textToUploadFileName = ''; - ngOnInit() { - this.demoShared = new DemoSharedFirebaseStorage(); - } + ngOnInit() { + this.demoShared = new DemoSharedFirebaseStorage(); + } -} \ No newline at end of file + uploadText() { + if (!this.textToUpload?.trim?.().length) { + return; + } + const metadata = new Metadata(); + metadata.contentType = 'text/plain'; + this.storage + .ref() + .child(`text_files/${this.textToUploadFileName ? this.textToUploadFileName : Date.now()}.txt`) + .putString(this.textToUpload, null, metadata) + .on(TaskEvent.STATE_CHANGED, { + complete() { + console.info('uploadText', 'completed'); + }, + error(err) { + console.error('uploadText', 'error', err); + }, + next(snapshot) { + console.info('uploadText', 'next', 'state', snapshot.state, snapshot.error); + if (snapshot.totalBytes) { + console.log('uploadFile', 'next', 'progress %', (snapshot.bytesTransferred / snapshot.totalBytes) * 100); + } + if (snapshot.error) { + console.error('uploadText', 'next', snapshot.error); + } + }, + }); + } + + uploadFile() { + const file = File.fromPath(path.join(knownFolders.currentApp().path, 'images', 'deadpool.jpeg')); + const metadata = new Metadata(); + metadata.contentType = 'image/jpg'; + this.storage + .ref() + .child('images/deadpool.jpeg') + .putFile(file.path, metadata) + .on(TaskEvent.STATE_CHANGED, { + complete() { + console.info('uploadFile', 'completed'); + }, + error(err) { + console.error('uploadFile', 'error', err); + }, + next(snapshot) { + console.info('uploadFile', 'next', 'state', snapshot.state); + if (snapshot.totalBytes) { + console.log('uploadFile', 'next', 'progress %', (snapshot.bytesTransferred / snapshot.totalBytes) * 100); + } + if (snapshot.error) { + console.error('uploadFile', 'next', snapshot.error); + } + }, + }); + } +} diff --git a/apps/demo-angular/src/plugin-demos/firebase-storage.module.ts b/apps/demo-angular/src/plugin-demos/firebase-storage.module.ts index 4993c8eb..acaa9a93 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-storage.module.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-storage.module.ts @@ -1,10 +1,12 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; import { FirebaseStorageComponent } from './firebase-storage.component'; +import { provideFirebaseStorage } from '@nativescript/firebase-storage/angular'; @NgModule({ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: FirebaseStorageComponent }])], - declarations: [FirebaseStorageComponent], - schemas: [ NO_ERRORS_SCHEMA] + declarations: [FirebaseStorageComponent], + providers: [provideFirebaseStorage()], + schemas: [NO_ERRORS_SCHEMA], }) export class FirebaseStorageModule {} diff --git a/apps/demo-angular/src/plugin-demos/firebase-ui.component.html b/apps/demo-angular/src/plugin-demos/firebase-ui.component.html index fea92084..d1d76f54 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-ui.component.html +++ b/apps/demo-angular/src/plugin-demos/firebase-ui.component.html @@ -2,7 +2,8 @@ - + + diff --git a/apps/demo-angular/src/plugin-demos/firebase-ui.component.ts b/apps/demo-angular/src/plugin-demos/firebase-ui.component.ts index ac4b8d54..15d4c9bc 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-ui.component.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-ui.component.ts @@ -1,17 +1,38 @@ -import { Component, NgZone } from '@angular/core'; -import { DemoSharedFirebaseUi } from '@demo/shared'; -import {} from '@nativescript/firebase-ui'; +import { Component, inject } from '@angular/core'; +import { UI } from '@nativescript/firebase-ui'; +import { AppleProvider, EmailProvider, GithubProvider, GoogleProvider, MicrosoftProvider, TwitterProvider, YahooProvider } from '@nativescript/firebase-ui'; @Component({ selector: 'demo-firebase-ui', templateUrl: 'firebase-ui.component.html', + standalone: false, }) export class FirebaseUiComponent { - demoShared: DemoSharedFirebaseUi; + private firebaseUI = inject(UI); - constructor(private _ngZone: NgZone) {} + show() { + this.firebaseUI + .show({ + providers: [new AppleProvider(), new GoogleProvider(), new TwitterProvider(), new GithubProvider(), new EmailProvider(), new MicrosoftProvider(), new YahooProvider()], + }) + .then((result) => { + console.log(result.user); + console.log(result.hasCredentialForLinking); + console.log(result.providerType); + }) + .catch((error) => { + console.error('show error:', error); + }); + } - ngOnInit() { - this.demoShared = new DemoSharedFirebaseUi(); + signOut() { + this.firebaseUI + .signOut() + .then(() => { + console.log('signOut complete'); + }) + .catch((e) => { + console.error('signOut error:', e); + }); } } diff --git a/apps/demo-angular/src/plugin-demos/firebase-ui.module.ts b/apps/demo-angular/src/plugin-demos/firebase-ui.module.ts index e816820d..dd090884 100644 --- a/apps/demo-angular/src/plugin-demos/firebase-ui.module.ts +++ b/apps/demo-angular/src/plugin-demos/firebase-ui.module.ts @@ -1,10 +1,12 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; import { FirebaseUiComponent } from './firebase-ui.component'; +import { provideFirebaseUI } from '@nativescript/firebase-ui/angular'; @NgModule({ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: FirebaseUiComponent }])], declarations: [FirebaseUiComponent], + providers: [provideFirebaseUI()], schemas: [NO_ERRORS_SCHEMA], }) export class FirebaseUiModule {} diff --git a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.html b/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.html deleted file mode 100644 index 56889eea..00000000 --- a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.ts b/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.ts deleted file mode 100644 index a8fc1508..00000000 --- a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, NgZone } from '@angular/core'; -import { DemoSharedNativescriptFirebaseAnalytics } from '@demo/shared'; -import { } from '@nativescript/firebase-analytics'; - -@Component({ - selector: 'demo-firebase-analytics', - templateUrl: 'firebase-analytics.component.html', -}) -export class NativescriptFirebaseAnalyticsComponent { - - demoShared: DemoSharedNativescriptFirebaseAnalytics; - - constructor(private _ngZone: NgZone) {} - - ngOnInit() { - this.demoShared = new DemoSharedNativescriptFirebaseAnalytics(); - } - -} \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.module.ts b/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.module.ts deleted file mode 100644 index 81af1d75..00000000 --- a/apps/demo-angular/src/plugin-demos/nativescript-firebase-analytics.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; -import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; -import { NativescriptFirebaseAnalyticsComponent } from './firebase-analytics.component'; - -@NgModule({ - imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: NativescriptFirebaseAnalyticsComponent }])], - declarations: [NativescriptFirebaseAnalyticsComponent], - schemas: [ NO_ERRORS_SCHEMA] -}) -export class NativescriptFirebaseAnalyticsModule {} diff --git a/apps/demo-angular/tsconfig.json b/apps/demo-angular/tsconfig.json index 6bcd3a50..45fb4f45 100644 --- a/apps/demo-angular/tsconfig.json +++ b/apps/demo-angular/tsconfig.json @@ -20,6 +20,7 @@ "@nativescript/firebase-messaging": ["packages/firebase-messaging/index.d.ts"], "@nativescript/firebase-functions": ["packages/firebase-functions/index.d.ts"], "@nativescript/firebase-app-check-debug": ["packages/firebase-app-check-debug/index.d.ts"], + "@nativescript/firebase-ui": ["packages/firebase-ui/index.d.ts"], "@nativescript/*": ["../../dist/packages/*"] } }, diff --git a/package.json b/package.json index e1a82d19..154f854b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plugins", - "version": "5.0.0", + "version": "5.0.3", "license": "MIT", "scripts": { "postinstall": "husky && npx ts-patch install", diff --git a/packages/firebase-auth/angular/.eslintrc.json b/packages/firebase-auth/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-auth/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-auth/angular/index.ts b/packages/firebase-auth/angular/index.ts new file mode 100644 index 00000000..859ca152 --- /dev/null +++ b/packages/firebase-auth/angular/index.ts @@ -0,0 +1,48 @@ +import { Provider } from '@angular/core'; +import { firebase, FirebaseApp } from '@nativescript/firebase-core'; +import { Auth } from '@nativescript/firebase-auth'; + +type EmulatorConfig = { + host: string; + port: number; +}; + +type AuthProviderConfig = { + app?: FirebaseApp; + emulator?: EmulatorConfig; +}; + +/** + * Provides the Firebase Authentication service. + * This function creates a provider for the Auth service, allowing you to use Firebase Authentication in your Angular application. + * + * @param config - Configuration options for the Auth provider. + * - app: The Firebase app instance to use. If not provided, the default app will be used. + * - emulator: Configuration for the Firebase Authentication emulator. + * - host: The host of the emulator server + * - port: The port number of the emulator server + * + * @returns An array of providers for the Auth service. + */ +export function provideAuth(config: AuthProviderConfig = {}): Provider[] { + return [ + { + provide: Auth, + useFactory: () => { + const auth = firebase().auth(config.app); + + if (config.emulator) { + if (!config.emulator.host) { + throw new Error('Firebase Auth emulator host must be provided'); + } + if (!config.emulator.port || config.emulator.port < 0) { + throw new Error('Firebase Auth emulator port must be a valid positive number'); + } + auth.useEmulator(config.emulator.host, config.emulator.port); + } + + return auth; + }, + }, + ]; +} diff --git a/packages/firebase-auth/angular/ng-package.json b/packages/firebase-auth/angular/ng-package.json new file mode 100644 index 00000000..470f0ea7 --- /dev/null +++ b/packages/firebase-auth/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-auth/angular" +} diff --git a/packages/firebase-auth/angular/package.json b/packages/firebase-auth/angular/package.json new file mode 100644 index 00000000..8917c809 --- /dev/null +++ b/packages/firebase-auth/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-auth-angular" +} diff --git a/packages/firebase-auth/angular/tsconfig.angular.json b/packages/firebase-auth/angular/tsconfig.angular.json new file mode 100644 index 00000000..83a3318d --- /dev/null +++ b/packages/firebase-auth/angular/tsconfig.angular.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-auth": ["../../../dist/packages/firebase-auth"], + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-auth/angular/tsconfig.json b/packages/firebase-auth/angular/tsconfig.json new file mode 100644 index 00000000..882b6018 --- /dev/null +++ b/packages/firebase-auth/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDirs": [".", "../.."] + } +} diff --git a/packages/firebase-auth/package.json b/packages/firebase-auth/package.json index d4601904..8fdbf6fc 100644 --- a/packages/firebase-auth/package.json +++ b/packages/firebase-auth/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-auth", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - Auth", "main": "index", "typings": "index.d.ts", diff --git a/packages/firebase-core/angular/.eslintrc.json b/packages/firebase-core/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-core/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-core/angular/index.ts b/packages/firebase-core/angular/index.ts new file mode 100644 index 00000000..24d029d2 --- /dev/null +++ b/packages/firebase-core/angular/index.ts @@ -0,0 +1,27 @@ +import { firebase, Firebase, FirebaseApp } from '@nativescript/firebase-core'; +import { EnvironmentProviders, makeEnvironmentProviders, provideAppInitializer } from '@angular/core'; + +// Type for the parameters of Firebase.initializeApp +// This is used to ensure that the parameters passed to the initializer match the expected type. +export type FirebaseInitializerParameters = Parameters; + +/** + * Provides the Firebase Core initializer. + * This function creates a provider for the Firebase Core initialization, allowing you to use Firebase services in your Angular application. + * + * @param options - The arguments to pass to the Firebase.initializeApp method. + * @param configOrName - The API key for your Firebase project. + * @returns An array of providers for the Firebase Core initialization. + */ +export function provideFirebaseCoreInitializer(...args: FirebaseInitializerParameters): EnvironmentProviders[] { + let firebaseApp: FirebaseApp; + return [ + provideAppInitializer(async () => (firebaseApp = await firebase().initializeApp(...args))), + makeEnvironmentProviders([ + { + provide: FirebaseApp, + useValue: firebaseApp, + }, + ]), + ]; +} diff --git a/packages/firebase-core/angular/ng-package.json b/packages/firebase-core/angular/ng-package.json new file mode 100644 index 00000000..0fe2b101 --- /dev/null +++ b/packages/firebase-core/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-core/angular" +} diff --git a/packages/firebase-core/angular/package.json b/packages/firebase-core/angular/package.json new file mode 100644 index 00000000..d017d1c8 --- /dev/null +++ b/packages/firebase-core/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-core-angular" +} diff --git a/packages/firebase-core/angular/tsconfig.angular.json b/packages/firebase-core/angular/tsconfig.angular.json new file mode 100644 index 00000000..06852cd0 --- /dev/null +++ b/packages/firebase-core/angular/tsconfig.angular.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-core/angular/tsconfig.json b/packages/firebase-core/angular/tsconfig.json new file mode 100644 index 00000000..c0b256a9 --- /dev/null +++ b/packages/firebase-core/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDir": "." + } +} diff --git a/packages/firebase-core/package.json b/packages/firebase-core/package.json index a441832d..71201201 100644 --- a/packages/firebase-core/package.json +++ b/packages/firebase-core/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-core", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - Core", "main": "index", "typings": "index.d.ts", diff --git a/packages/firebase-database/angular/.eslintrc.json b/packages/firebase-database/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-database/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-database/angular/index.ts b/packages/firebase-database/angular/index.ts new file mode 100644 index 00000000..31c9337a --- /dev/null +++ b/packages/firebase-database/angular/index.ts @@ -0,0 +1,12 @@ +import { Provider } from '@angular/core'; +import { Database } from '@nativescript/firebase-database'; +import { firebase } from '@nativescript/firebase-core'; + +export function provideFirebaseDatabase(): Provider { + return { + provide: Database, + useFactory: () => { + return firebase().database(); + }, + }; +} diff --git a/packages/firebase-database/angular/ng-package.json b/packages/firebase-database/angular/ng-package.json new file mode 100644 index 00000000..eaddc6a9 --- /dev/null +++ b/packages/firebase-database/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-database/angular" +} diff --git a/packages/firebase-database/angular/package.json b/packages/firebase-database/angular/package.json new file mode 100644 index 00000000..ffcc1749 --- /dev/null +++ b/packages/firebase-database/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-database-angular" +} diff --git a/packages/firebase-database/angular/tsconfig.angular.json b/packages/firebase-database/angular/tsconfig.angular.json new file mode 100644 index 00000000..14bc1c92 --- /dev/null +++ b/packages/firebase-database/angular/tsconfig.angular.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-database": ["../../../dist/packages/firebase-database"], + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-database/angular/tsconfig.json b/packages/firebase-database/angular/tsconfig.json new file mode 100644 index 00000000..882b6018 --- /dev/null +++ b/packages/firebase-database/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDirs": [".", "../.."] + } +} diff --git a/packages/firebase-database/package.json b/packages/firebase-database/package.json index 385091e2..616bcfb9 100644 --- a/packages/firebase-database/package.json +++ b/packages/firebase-database/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-database", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - Database", "main": "index", "typings": "index.d.ts", diff --git a/packages/firebase-firestore/angular/.eslintrc.json b/packages/firebase-firestore/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-firestore/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-firestore/angular/index.ts b/packages/firebase-firestore/angular/index.ts new file mode 100644 index 00000000..3a6680c7 --- /dev/null +++ b/packages/firebase-firestore/angular/index.ts @@ -0,0 +1,44 @@ +import { Provider } from '@angular/core'; +import { firebase, FirebaseApp } from '@nativescript/firebase-core'; +import { Firestore } from '@nativescript/firebase-firestore'; + +export type FirestoreProviderConfig = { + app?: FirebaseApp; + emulator?: { + emulatorHost?: string; + emulatorPort?: number; + }; +}; + +/** + * Provides the Firebase Firestore service. + * This function creates a provider for the Firestore service, allowing you to use Firebase Firestore in your Angular application. + * + * @param config - Configuration options for the Firestore provider. + * - app: The Firebase app instance to use. If not provided, the default app will be used. + * - emulator: Configuration for the Firestore emulator. + * - emulatorHost: The host of the emulator server + * - emulatorPort: The port number of the emulator server + * + * @returns An array of providers for the Firestore service. + */ +export function provideFirestore(config: FirestoreProviderConfig = {}): Provider[] { + return [ + { + provide: Firestore, + useFactory: () => { + const firestore = firebase().firestore(config.app); + if (config.emulator && config.emulator.emulatorHost && config.emulator.emulatorPort) { + if (!config.emulator.emulatorHost) { + throw new Error('Firestore emulator host must be provided'); + } + if (!config.emulator.emulatorPort || config.emulator.emulatorPort < 0) { + throw new Error('Firestore emulator port must be a valid positive number'); + } + firestore.useEmulator(config.emulator.emulatorHost, config.emulator.emulatorPort); + } + return firestore; + }, + }, + ]; +} diff --git a/packages/firebase-firestore/angular/ng-package.json b/packages/firebase-firestore/angular/ng-package.json new file mode 100644 index 00000000..fbc51eea --- /dev/null +++ b/packages/firebase-firestore/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-firestore/angular" +} diff --git a/packages/firebase-firestore/angular/package.json b/packages/firebase-firestore/angular/package.json new file mode 100644 index 00000000..b52e9f08 --- /dev/null +++ b/packages/firebase-firestore/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-firestore-angular" +} diff --git a/packages/firebase-firestore/angular/tsconfig.angular.json b/packages/firebase-firestore/angular/tsconfig.angular.json new file mode 100644 index 00000000..c55ccbc0 --- /dev/null +++ b/packages/firebase-firestore/angular/tsconfig.angular.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"], + "@nativescript/firebase-firestore": ["../../../dist/packages/firebase-firestore"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-firestore/angular/tsconfig.json b/packages/firebase-firestore/angular/tsconfig.json new file mode 100644 index 00000000..882b6018 --- /dev/null +++ b/packages/firebase-firestore/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDirs": [".", "../.."] + } +} diff --git a/packages/firebase-firestore/package.json b/packages/firebase-firestore/package.json index 4d45385c..5a8c9807 100644 --- a/packages/firebase-firestore/package.json +++ b/packages/firebase-firestore/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-firestore", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - Firestore", "main": "index", "typings": "index.d.ts", diff --git a/packages/firebase-storage/angular/.eslintrc.json b/packages/firebase-storage/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-storage/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-storage/angular/index.ts b/packages/firebase-storage/angular/index.ts new file mode 100644 index 00000000..b2238305 --- /dev/null +++ b/packages/firebase-storage/angular/index.ts @@ -0,0 +1,14 @@ +import { Provider } from '@angular/core'; +import { Storage } from '@nativescript/firebase-storage'; +import { firebase } from '@nativescript/firebase-core'; + +export function provideFirebaseStorage(): Provider { + return { + provide: Storage, + useFactory: () => { + return firebase().storage(); + }, + }; + // This function is a placeholder for any future logic needed to provide Firebase Storage functionality. + // Currently, it does not perform any operations. +} diff --git a/packages/firebase-storage/angular/ng-package.json b/packages/firebase-storage/angular/ng-package.json new file mode 100644 index 00000000..f8cbdeb9 --- /dev/null +++ b/packages/firebase-storage/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-storage/angular" +} diff --git a/packages/firebase-storage/angular/package.json b/packages/firebase-storage/angular/package.json new file mode 100644 index 00000000..b0b10580 --- /dev/null +++ b/packages/firebase-storage/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-storage-angular" +} diff --git a/packages/firebase-storage/angular/tsconfig.angular.json b/packages/firebase-storage/angular/tsconfig.angular.json new file mode 100644 index 00000000..17fff88e --- /dev/null +++ b/packages/firebase-storage/angular/tsconfig.angular.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-storage": ["../../../dist/packages/firebase-storage"], + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-storage/angular/tsconfig.json b/packages/firebase-storage/angular/tsconfig.json new file mode 100644 index 00000000..882b6018 --- /dev/null +++ b/packages/firebase-storage/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDirs": [".", "../.."] + } +} diff --git a/packages/firebase-storage/package.json b/packages/firebase-storage/package.json index 91a45627..bf56a727 100644 --- a/packages/firebase-storage/package.json +++ b/packages/firebase-storage/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-storage", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - Storage", "main": "index", "typings": "index.d.ts", diff --git a/packages/firebase-ui/angular/.eslintrc.json b/packages/firebase-ui/angular/.eslintrc.json new file mode 100644 index 00000000..a129a9f3 --- /dev/null +++ b/packages/firebase-ui/angular/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["../.eslintrc.json"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "allowCircularSelfDependency": true + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/firebase-ui/angular/index.ts b/packages/firebase-ui/angular/index.ts new file mode 100644 index 00000000..e22fb6c4 --- /dev/null +++ b/packages/firebase-ui/angular/index.ts @@ -0,0 +1,20 @@ +import { Provider } from '@angular/core'; +import { UI } from '@nativescript/firebase-ui'; +import { firebase } from '@nativescript/firebase-core'; + +export { UI }; + +/** + * Provides the FirebaseUI service. + * This service is used to initialize and manage FirebaseUI instances. + * + * @returns {Provider} A provider for the FirebaseUI service. + */ +export function provideFirebaseUI(): Provider { + return { + provide: UI, + useFactory: () => { + return firebase().ui(); + }, + }; +} diff --git a/packages/firebase-ui/angular/ng-package.json b/packages/firebase-ui/angular/ng-package.json new file mode 100644 index 00000000..7267873c --- /dev/null +++ b/packages/firebase-ui/angular/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + }, + "allowedNonPeerDependencies": ["."], + "dest": "../../../dist/packages/firebase-ui/angular" +} diff --git a/packages/firebase-ui/angular/package.json b/packages/firebase-ui/angular/package.json new file mode 100644 index 00000000..987bbea9 --- /dev/null +++ b/packages/firebase-ui/angular/package.json @@ -0,0 +1,3 @@ +{ + "name": "@nativescript/firebase-ui-angular" +} diff --git a/packages/firebase-ui/angular/tsconfig.angular.json b/packages/firebase-ui/angular/tsconfig.angular.json new file mode 100644 index 00000000..a343528a --- /dev/null +++ b/packages/firebase-ui/angular/tsconfig.angular.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json", + "compilerOptions": { + "types": ["node"], + "baseUrl": ".", + "paths": { + "@nativescript/firebase-ui": ["../../../dist/packages/firebase-ui"], + "@nativescript/firebase-core": ["../../../dist/packages/firebase-core"] + }, + "outDir": "../../../dist/out-tsc", + "declarationDir": "../../../dist/out-tsc" + }, + "files": ["index.ts"] +} diff --git a/packages/firebase-ui/angular/tsconfig.json b/packages/firebase-ui/angular/tsconfig.json new file mode 100644 index 00000000..882b6018 --- /dev/null +++ b/packages/firebase-ui/angular/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "rootDirs": [".", "../.."] + } +} diff --git a/packages/firebase-ui/package.json b/packages/firebase-ui/package.json index f6e1b54c..6c92a6ce 100644 --- a/packages/firebase-ui/package.json +++ b/packages/firebase-ui/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/firebase-ui", - "version": "5.0.2", + "version": "5.0.3", "description": "NativeScript Firebase - UI", "main": "index", "typings": "index.d.ts", diff --git a/tsconfig.base.json b/tsconfig.base.json index ce91584c..ee84db24 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -40,7 +40,12 @@ "@nativescript/firebase-performance": ["packages/firebase-performance/index.d.ts"], "@nativescript/firebase-remote-config": ["packages/firebase-remote-config/index.d.ts"], "@nativescript/firebase-storage": ["packages/firebase-storage/index.d.ts"], - "@nativescript/firebase-ui": ["packages/firebase-ui/index.d.ts"] + "@nativescript/firebase-ui": ["packages/firebase-ui/index.d.ts"], + "@nativescript/firebase-auth/angular": ["packages/firebase-auth/angular/index.ts"], + "@nativescript/firebase-firestore/angular": ["packages/firebase-firestore/angular/index.ts"], + "@nativescript/firebase-ui/angular": ["packages/firebase-ui/angular/index.ts"], + "@nativescript/firebase-storage/angular": ["packages/firebase-storage/angular/index.ts"], + "@nativescript/firebase-database/angular": ["packages/firebase-database/angular/index.ts"] } }, "exclude": ["node_modules", "tmp"]