123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- import { Compat } from '@firebase/util';
- import { Component } from '@firebase/component';
- import { LogCallback } from '@firebase/logger';
- import { LogLevelString } from '@firebase/logger';
- import { LogOptions } from '@firebase/logger';
- import { Name } from '@firebase/component';
-
- declare const firebase: FirebaseNamespace;
- export default firebase;
-
- /**
- * This interface will be enhanced by other products by adding e.g. firestore(), messaging() methods.
- * As a result, FirebaseAppImpl can't directly implement it, otherwise there will be typings errors:
- *
- * For example, "Class 'FirebaseAppImpl' incorrectly implements interface 'FirebaseApp'.
- * Property 'installations' is missing in type 'FirebaseAppImpl' but required in type 'FirebaseApp'"
- *
- * To workaround this issue, we defined a _FirebaseApp interface which is implemented by FirebaseAppImpl
- * and let FirebaseApp extends it.
- */
- export declare interface FirebaseApp extends _FirebaseApp {
- }
-
- declare interface _FirebaseApp {
- /**
- * The (read-only) name (identifier) for this App. '[DEFAULT]' is the default
- * App.
- */
- name: string;
- /**
- * The (read-only) configuration options from the app initialization.
- */
- options: FirebaseOptions;
- /**
- * The settable config flag for GDPR opt-in/opt-out
- */
- automaticDataCollectionEnabled: boolean;
- /**
- * Make the given App unusable and free resources.
- */
- delete(): Promise<void>;
- }
-
- declare interface FirebaseAppConfig {
- name?: string;
- automaticDataCollectionEnabled?: boolean;
- }
-
- declare interface FirebaseAppContructor {
- new (): FirebaseApp;
- }
-
- export declare interface FirebaseNamespace {
- /**
- * Create (and initialize) a FirebaseApp.
- *
- * @param options Options to configure the services used in the App.
- * @param config The optional config for your firebase app
- */
- initializeApp(options: FirebaseOptions, config?: FirebaseAppConfig): FirebaseApp;
- /**
- * Create (and initialize) a FirebaseApp.
- *
- * @param options Options to configure the services used in the App.
- * @param name The optional name of the app to initialize ('[DEFAULT]' if
- * omitted)
- */
- initializeApp(options: FirebaseOptions, name?: string): FirebaseApp;
- app: {
- /**
- * Retrieve an instance of a FirebaseApp.
- *
- * Usage: firebase.app()
- *
- * @param name The optional name of the app to return ('[DEFAULT]' if omitted)
- */
- (name?: string): FirebaseApp;
- /**
- * For testing FirebaseApp instances:
- * app() instanceof firebase.app.App
- *
- * DO NOT call this constuctor directly (use firebase.app() instead).
- */
- App: FirebaseAppContructor;
- };
- /**
- * A (read-only) array of all the initialized Apps.
- */
- apps: FirebaseApp[];
- /**
- * Registers a library's name and version for platform logging purposes.
- * @param library Name of 1p or 3p library (e.g. firestore, angularfire)
- * @param version Current version of that library.
- */
- registerVersion(library: string, version: string, variant?: string): void;
- setLogLevel(logLevel: LogLevelString): void;
- onLog(logCallback: LogCallback, options?: LogOptions): void;
- SDK_VERSION: string;
- }
-
- export declare interface _FirebaseNamespace extends FirebaseNamespace {
- INTERNAL: {
- /**
- * Internal API to register a Firebase Service into the firebase namespace.
- *
- * Each service will create a child namespace (firebase.<name>) which acts as
- * both a namespace for service specific properties, and also as a service
- * accessor function (firebase.<name>() or firebase.<name>(app)).
- *
- * @param name The Firebase Service being registered.
- * @param createService Factory function to create a service instance.
- * @param serviceProperties Properties to copy to the service's namespace.
- * @param appHook All appHooks called before initializeApp returns to caller.
- * @param allowMultipleInstances Whether the registered service supports
- * multiple instances per app. If not specified, the default is false.
- */
- registerComponent<T extends Name>(component: Component<T>): FirebaseServiceNamespace<_FirebaseService> | null;
- /**
- * Internal API to remove an app from the list of registered apps.
- */
- removeApp(name: string): void;
- useAsService(app: FirebaseApp, serviceName: string): string | null;
- [index: string]: unknown;
- };
- }
-
- declare interface FirebaseOptions {
- apiKey?: string;
- authDomain?: string;
- databaseURL?: string;
- projectId?: string;
- storageBucket?: string;
- messagingSenderId?: string;
- appId?: string;
- measurementId?: string;
- }
-
- export declare interface _FirebaseService extends Compat<unknown> {
- app: FirebaseApp;
- INTERNAL?: FirebaseServiceInternals;
- }
-
- declare interface FirebaseServiceInternals {
- /**
- * Delete the service and free it's resources - called from
- * app.delete().
- */
- delete(): Promise<void>;
- }
-
- /**
- * All ServiceNamespaces extend from FirebaseServiceNamespace
- */
- declare interface FirebaseServiceNamespace<T extends _FirebaseService> {
- (app?: FirebaseApp): T;
- }
-
- export { }
|