From 7517aa234fac10aaa2d520b6e6db65066e72f1d0 Mon Sep 17 00:00:00 2001 From: Daniel Sogl Date: Mon, 27 Jul 2026 22:21:10 +0200 Subject: [PATCH] feat(firebase-x): add methods added upstream since last sync, deprecate getByteArray cordova-plugin-firebasex is now a backward-compatible meta-package (20.0.2) that installs 9 modular sub-plugins behind the same window.FirebasePlugin global. Diffed the wrapper against the published www/*.js shims of each sub-plugin (core, messaging, analytics, auth, crashlytics, config, performance, firestore, functions) and added every exported method that was missing, without touching any existing method signature. --- .../plugins/firebase-x/index.ts | 484 ++++++++++++++++++ 1 file changed, 484 insertions(+) diff --git a/src/@awesome-cordova-plugins/plugins/firebase-x/index.ts b/src/@awesome-cordova-plugins/plugins/firebase-x/index.ts index 0a8fda3b8..2e6791e45 100644 --- a/src/@awesome-cordova-plugins/plugins/firebase-x/index.ts +++ b/src/@awesome-cordova-plugins/plugins/firebase-x/index.ts @@ -111,6 +111,26 @@ export interface FirebaseUser { * name */ name?: string; + + /** + * whether the user is anonymous + */ + isAnonymous?: boolean; + + /** + * account creation timestamp in milliseconds + */ + creationTimestamp?: number; + + /** + * last sign-in timestamp in milliseconds + */ + lastSignInTimestamp?: number; + + /** + * array of linked provider info objects + */ + providers?: any[]; } export interface MessagePayloadAps { alert?: { @@ -133,6 +153,59 @@ export interface MessagePayload { tap?: 'background' | 'foreground'; aps?: MessagePayloadAps; } + +export interface OnDeviceConversionUserIdentifier { + /** + * The user's email address. Mutually exclusive with phoneNumber. + */ + emailAddress?: string; + + /** + * The user's phone number in E.164 format. Mutually exclusive with emailAddress. + */ + phoneNumber?: string; +} + +export interface EnrollSecondAuthFactorOptions { + /** + * A display name for this factor. Auto-generated (masking all but the last 4 digits of the phone number) if not provided. + */ + displayName?: string; +} + +export interface VerifySecondAuthFactorParams { + /** + * Index of the enrolled factor to verify (for an MFA sign-in challenge). + */ + selectedIndex?: number; + + /** + * The verification ID from phone verification. + */ + verificationId?: string; + + /** + * The SMS verification code entered by the user. + */ + code?: string; +} + +export interface EnrolledSecondAuthFactor { + /** + * The factor's index. + */ + index: number; + + /** + * The enrolled phone number. + */ + phoneNumber: string; + + /** + * The display name for this factor, if set. + */ + displayName?: string; +} /** * @name Firebase X * @description @@ -160,6 +233,10 @@ export interface MessagePayload { * ``` * @interfaces * IChannelOptions + * OnDeviceConversionUserIdentifier + * EnrollSecondAuthFactorOptions + * VerifySecondAuthFactorParams + * EnrolledSecondAuthFactor */ @Plugin({ pluginName: 'FirebaseX', @@ -190,6 +267,66 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Alias for getId(). Returns the current Firebase Installation ID (FID). + * + * @returns {Promise} + */ + @Cordova() + getInstallationId(): Promise { + return; + } + + /** + * Returns a valid Firebase Installation auth token (always force-refreshed). + * + * @returns {Promise} + */ + @Cordova() + getInstallationToken(): Promise { + return; + } + + /** + * Deletes the current Firebase Installation ID and all associated data. Firebase will generate a new FID on next access. + * + * @returns {Promise} + */ + @Cordova() + deleteInstallationId(): Promise { + return; + } + + /** + * Registers a listener that is called whenever the Firebase Installation ID changes. + * + * @param {Function} fn - callback function to invoke with the new installation ID string + */ + @Cordova() + registerInstallationIdChangeListener(fn: any): Promise { + return; + } + + /** + * Registers a listener that is called when the application transitions to the foreground (iOS applicationDidBecomeActive / Android onResume). + * + * @param {Function} fn - callback function to invoke when the app becomes active + */ + @Cordova() + registerApplicationDidBecomeActiveListener(fn: any): Promise { + return; + } + + /** + * Registers a listener that is called when the application transitions to the background (iOS applicationDidEnterBackground / Android onPause). + * + * @param {Function} fn - callback function to invoke when the app enters the background + */ + @Cordova() + registerApplicationDidEnterBackgroundListener(fn: any): Promise { + return; + } + /** * Get the current FCM user. * @@ -261,6 +398,20 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * iOS 12+ only. + * Get notified when the user taps the notification settings action in the system notification settings. + * Requires UNAuthorizationOptionProvidesAppNotificationSettings. + * + * @returns {Observable} + */ + @Cordova({ + observable: true, + }) + onOpenSettings(): Observable { + return; + } + /** * Grant permission to receive push notifications (will trigger prompt) and return hasPermission: true. iOS only (Android will always return true). * @@ -273,6 +424,19 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * iOS 12+ only. Grant critical alert permission (bypasses Do Not Disturb and the ringer switch). Requires a special Apple entitlement. + * On Android this is a no-op and returns false. + * + * @returns {Promise} + */ + @Cordova({ + platforms: ['iOS'], + }) + grantCriticalPermission(): Promise { + return; + } + /** * Check permission to receive push notifications and return hasPermission: true. iOS only (Android will always return true). * @@ -283,6 +447,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * iOS 12+ only. Check whether the app has critical alert permission. On Android this always returns false. + * + * @returns {Promise} + */ + @Cordova() + hasCriticalPermission(): Promise { + return; + } + /** * Unregister from firebase, used to stop receiving push notifications. Call this when you logout user from your app. */ @@ -428,6 +602,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Get the current analytics data collection enabled state. + * + * @returns {Promise} + */ + @Cordova() + isAnalyticsCollectionEnabled(): Promise { + return; + } + /** * Enable/disable Crashlytics collection. * @@ -439,6 +623,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Get the current Crashlytics data collection enabled state. + * + * @returns {Promise} + */ + @Cordova() + isCrashlyticsCollectionEnabled(): Promise { + return; + } + /** * Enable/disable performance collection. * @@ -450,6 +644,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Get the current performance data collection enabled state. + * + * @returns {Promise} + */ + @Cordova() + isPerformanceCollectionEnabled(): Promise { + return; + } + /** * Log an event using Analytics * @@ -496,6 +700,20 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * iOS only. Initiates on-device conversion measurement using an email address or phone number. + * Only one identifier type may be provided per call. + * + * @param {OnDeviceConversionUserIdentifier} userIdentifier + * @returns {Promise} + */ + @Cordova({ + platforms: ['iOS'], + }) + initiateOnDeviceConversionMeasurement(userIdentifier: OnDeviceConversionUserIdentifier): Promise { + return; + } + /** * Set Crashlytics user identifier. * To diagnose an issue, it’s often helpful to know which of your users experienced a given crash. @@ -512,6 +730,18 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Set a custom key-value pair for Crashlytics crash reports. Appears in the "Keys" tab of a crash report. + * + * @param {string} key + * @param {string | number | boolean} value + * @returns {Promise} + */ + @Cordova() + setCrashlyticsCustomKey(key: string, value: string | number | boolean): Promise { + return; + } + /** * Simulates (causes) a fatal native crash which causes a crash event to be sent to Crashlytics (useful for testing). * See the Firebase documentation regarding crash testing. @@ -552,6 +782,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Returns whether the app crashed during the previous execution. + * + * @returns {Promise} + */ + @Cordova() + didCrashOnPreviousExecution(): Promise { + return; + } + /** * Requests verification of a phone number in order to authenticate a user and sign then into Firebase in your app. * @@ -583,6 +823,57 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Enrolls a phone number as a second authentication factor (MFA) for the current user. + * + * @param {string} number - phone number to enroll as a second factor, in E.164 format + * @param {EnrollSecondAuthFactorOptions} [opts] - optional parameters + * @returns {Promise} resolves with the enrollment result (contains verificationId for SMS code entry) + */ + @Cordova({ + callbackOrder: 'reverse', + }) + enrollSecondAuthFactor(number: string, opts?: EnrollSecondAuthFactorOptions): Promise { + return; + } + + /** + * Verifies a second authentication factor during an MFA sign-in challenge or enrollment. + * + * @param {VerifySecondAuthFactorParams} params + * @param {object} [opts] - reserved for future use + * @returns {Promise} + */ + @Cordova({ + callbackOrder: 'reverse', + }) + verifySecondAuthFactor(params: VerifySecondAuthFactorParams, opts?: object): Promise { + return; + } + + /** + * Lists the second authentication factors enrolled for the current user. + * + * @returns {Promise} + */ + @Cordova() + listEnrolledSecondAuthFactors(): Promise { + return; + } + + /** + * Removes an enrolled second authentication factor from the current user. + * + * @param {number} selectedIndex - index of the enrolled factor to remove (from listEnrolledSecondAuthFactors()) + * @returns {Promise} + */ + @Cordova({ + callbackOrder: 'reverse', + }) + unenrollSecondAuthFactor(selectedIndex: number): Promise { + return; + } + /** * Switch current authentification system language, for example, the phone sms code. * @@ -626,6 +917,19 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Creates an email/password credential without signing in. The returned credential can be used with + * signInWithCredential(), linkUserWithCredential(), or reauthenticateWithCredential(). + * + * @param email + * @param password + * @returns {Promise} + */ + @Cordova() + authenticateUserWithEmailAndPassword(email: string, password: string): Promise { + return; + } + /** * Signs in user with custom token. * @@ -666,6 +970,43 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Authenticates the user with Microsoft Sign-In via Firebase OAuthProvider. Returns a credential for use with signInWithCredential(). + * + * @param locale - optional locale to pass to the Microsoft sign-in provider + */ + @Cordova({ + callbackOrder: 'reverse', + }) + authenticateUserWithMicrosoft(locale?: string): Promise { + return; + } + + /** + * Authenticates the user with Facebook using an access token obtained from the Facebook SDK. + * Returns a credential for use with signInWithCredential(). + * + * @param accessToken - a Facebook access token obtained via the Facebook Login SDK + */ + @Cordova() + authenticateUserWithFacebook(accessToken: string): Promise { + return; + } + + /** + * Authenticates the user with a generic OAuth provider via Firebase OAuthProvider. Returns a credential for use with signInWithCredential(). + * + * @param providerId - the OAuth provider ID (e.g. "github.com", "twitter.com", "yahoo.com") + * @param customParameters - optional custom OAuth parameters to send to the provider + * @param scopes - optional OAuth scopes to request from the provider + */ + @Cordova({ + callbackOrder: 'reverse', + }) + authenticateUserWithOAuth(providerId: string, customParameters?: object, scopes?: string[]): Promise { + return; + } + /** * Links the user account to an existing Firebase user account with credentials obtained using verifyPhoneNumber(). * See the Android- and iOS-specific Firebase documentation for more info. @@ -691,6 +1032,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Unlinks a provider from the currently signed-in user, removing that sign-in method. + * + * @param {string} providerId - the provider ID to unlink (e.g. "google.com", "password", "phone") + */ + @Cordova() + unlinkUserWithProvider(providerId: string): Promise { + return; + } + /** * Checks if there is a current Firebase user signed into the app. */ @@ -729,6 +1080,17 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Sends a verification email to the specified new email address before updating. + * The email is only updated after the user clicks the verification link. + * + * @param email - the new email address to verify + */ + @Cordova() + verifyBeforeUpdateEmail(email: string): Promise { + return; + } + /** * Sends a verification email to the currently configured email address of the current Firebase user signed into the app. * When the user opens the contained link, their email address will have been verified. @@ -777,6 +1139,37 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Registers a callback that fires whenever the user's ID token changes (sign-in, sign-out, and token refresh events). + * + * @param {Function} fn - callback function to invoke when the ID token changes + */ + @Cordova() + registerAuthIdTokenChangeListener(fn: any): Promise { + return; + } + + /** + * Configures Firebase Auth to connect to a local Auth emulator for testing. Must be called before any other auth operations. + * + * @param {string} host - the emulator host (e.g. "localhost" or "10.0.2.2" for Android emulator) + * @param {number} port - the emulator port (e.g. 9099) + */ + @Cordova() + useAuthEmulator(host: string, port: number): Promise { + return; + } + + /** + * Retrieves the custom claims from the current user's ID token. Custom claims are set server-side using the Firebase Admin SDK. + * + * @returns {Promise} + */ + @Cordova() + getClaims(): Promise { + return; + } + /** * Fetch Remote Config parameter values for your app. * @@ -809,6 +1202,16 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { return; } + /** + * Reset all Remote Config values back to defaults. Note: not currently available on iOS. + * + * @returns {Promise} + */ + @Cordova() + resetRemoteConfig(): Promise { + return; + } + /** * Returns a Map of Firebase Remote Config key value pairs. * @@ -834,6 +1237,7 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { /** * Android only. Retrieve a Remote Config byte array. * + * @deprecated Removed upstream in cordova-plugin-firebasex 20.0.0 (modular plugin rewrite); no longer present in the Remote Config API. * @param {string} key * @returns {Promise} */ @@ -1033,6 +1437,86 @@ export class FirebaseX extends AwesomeCordovaNativePlugin { ): Promise { return; } + + /** + * Checks whether a document exists in a Firestore collection. + * + * @param {string} documentId - document ID of the document to check. + * @param {string} collection - name of top-level collection to check. + * @returns {Promise} + */ + @Cordova() + documentExistsInFirestoreCollection(documentId: string, collection: string): Promise { + return; + } + + /** + * Registers a real-time listener on a single document in a Firestore collection. + * The success callback is called multiple times: first with {eventType: "id", id: listenerId}, + * then with {eventType: "change", snapshot, source, fromCache} on each change. + * Call removeFirestoreListener() with the returned listener ID to stop listening. + * + * @param {string} documentId - document ID of the document to listen to. + * @param {string} collection - name of top-level collection to listen to. + * @param {boolean} includeMetadata - whether to include metadata-only changes. + * @returns {Observable} + */ + @Cordova({ + callbackOrder: 'reverse', + observable: true, + }) + listenToDocumentInFirestoreCollection( + documentId: string, + collection: string, + includeMetadata?: boolean + ): Observable { + return; + } + + /** + * Registers a real-time listener on an entire Firestore collection, optionally filtered. + * The success callback is called multiple times: first with {eventType: "id", id: listenerId}, + * then with {eventType: "change", documents: {...}} on each change. + * Call removeFirestoreListener() with the returned listener ID to stop listening. + * + * @param {string} collection - name of top-level collection to listen to. + * @param {Array} filters - filters to apply to the collection (same format as fetchFirestoreCollection()). + * @param {boolean} includeMetadata - whether to include metadata-only changes. + * @returns {Observable} + */ + @Cordova({ + callbackOrder: 'reverse', + observable: true, + }) + listenToFirestoreCollection(collection: string, filters?: any[], includeMetadata?: boolean): Observable { + return; + } + + /** + * Removes a previously registered Firestore snapshot listener. + * + * @param {string} listenerId - the listener ID returned in the initial listener response. + * @returns {Promise} + */ + @Cordova({ + callbackOrder: 'reverse', + }) + removeFirestoreListener(listenerId: string): Promise { + return; + } + + /** + * Invokes an HTTPS-callable Cloud Function by name. + * + * @param {string} name - the name of the Cloud Function to call. + * @param {any} args - arguments to pass to the function (any JSON-serialisable value). + * @returns {Promise} the function's return value + */ + @Cordova() + functionsHttpsCallable(name: string, args: any): Promise { + return; + } + /** * Set new V2 consent mode *