Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/database/src/core/AuthTokenProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { FirebaseApp } from '@firebase/app-types';
import { FirebaseAuthTokenData } from '@firebase/app-types/private';
import { log, warn } from './util/util';

export interface TokenProvider {
export interface AuthTokenProvider {
/**
* @param {boolean} forceRefresh
* @return {!Promise<FirebaseAuthTokenData>}
Expand All @@ -36,7 +36,7 @@ export interface TokenProvider {
/**
* Abstraction around FirebaseApp's token fetching capabilities.
*/
export class AuthTokenProvider implements TokenProvider {
export class FirebaseAuthTokenProvider implements AuthTokenProvider {
/**
* @param {!FirebaseApp} app_
*/
Expand Down
19 changes: 0 additions & 19 deletions packages/database/src/core/Constants.ts

This file was deleted.

4 changes: 2 additions & 2 deletions packages/database/src/core/EmulatorAuthTokenProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
import { FirebaseApp } from '@firebase/app-types';
import { FirebaseAuthTokenData } from '@firebase/app-types/private';

import { TokenProvider } from './AuthTokenProvider';
import { AuthTokenProvider } from './AuthTokenProvider';
import { log, warn } from './util/util';

class EmulatorAuthToken implements FirebaseAuthTokenData {
constructor(public accessToken: string) {}
}

export class EmulatorAuthTokenProvider implements TokenProvider {
export class EmulatorAuthTokenProvider implements AuthTokenProvider {
constructor(private app_: FirebaseApp) {}

getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData> {
Expand Down
4 changes: 2 additions & 2 deletions packages/database/src/core/PersistentConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import { isAdmin, isValidFormat } from '@firebase/util';
import { Connection } from '../realtime/Connection';
import { isMobileCordova, isReactNative, isNodeSdk } from '@firebase/util';
import { ServerActions } from './ServerActions';
import { TokenProvider } from './AuthTokenProvider';
import { AuthTokenProvider } from './AuthTokenProvider';
import { RepoInfo } from './RepoInfo';
import { Query } from '../api/Query';
import { SDK_VERSION } from './version';
Expand Down Expand Up @@ -133,7 +133,7 @@ export class PersistentConnection extends ServerActions {
) => void,
private onConnectStatus_: (a: boolean) => void,
private onServerInfoUpdate_: (a: any) => void,
private authTokenProvider_: TokenProvider,
private authTokenProvider_: AuthTokenProvider,
private authOverride_?: Object | null
) {
super();
Expand Down
9 changes: 6 additions & 3 deletions packages/database/src/core/ReadonlyRestClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ import { safeGet } from '@firebase/util';
import { querystring } from '@firebase/util';
import { ServerActions } from './ServerActions';
import { RepoInfo } from './RepoInfo';
import { TokenProvider } from './AuthTokenProvider';
import {
FirebaseAuthTokenProvider,
AuthTokenProvider
} from './AuthTokenProvider';
import { Query } from '../api/Query';

/**
Expand Down Expand Up @@ -67,7 +70,7 @@ export class ReadonlyRestClient extends ServerActions {
/**
* @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to
* @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server
* @param {TokenProvider} authTokenProvider_
* @param {FirebaseAuthTokenProvider} authTokenProvider_
* @implements {ServerActions}
*/
constructor(
Expand All @@ -78,7 +81,7 @@ export class ReadonlyRestClient extends ServerActions {
c: boolean,
d: number | null
) => void,
private authTokenProvider_: TokenProvider
private authTokenProvider_: AuthTokenProvider
) {
super();
}
Expand Down
19 changes: 14 additions & 5 deletions packages/database/src/core/Repo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,19 @@ import { SparseSnapshotTree } from './SparseSnapshotTree';
import { SyncTree } from './SyncTree';
import { SnapshotHolder } from './SnapshotHolder';
import { stringify } from '@firebase/util';
import { beingCrawled, each, exceptionGuard, warn, log } from './util/util';
import {
beingCrawled,
each,
exceptionGuard,
warn,
log,
FIREBASE_DATABASE_EMULATOR_HOST_VAR
} from './util/util';
import { map, isEmpty } from '@firebase/util';
import { AuthTokenProvider, TokenProvider } from './AuthTokenProvider';
import {
FirebaseAuthTokenProvider,
AuthTokenProvider
} from './AuthTokenProvider';
import { EmulatorAuthTokenProvider } from './EmulatorAuthTokenProvider';
import { StatsManager } from './stats/StatsManager';
import { StatsReporter } from './stats/StatsReporter';
Expand All @@ -38,7 +48,6 @@ import { PersistentConnection } from './PersistentConnection';
import { ReadonlyRestClient } from './ReadonlyRestClient';
import { FirebaseApp } from '@firebase/app-types';
import { RepoInfo } from './RepoInfo';
import { FIREBASE_DATABASE_EMULATOR_HOST_VAR } from './Constants';
import { Database } from '../api/Database';
import { ServerActions } from './ServerActions';
import { Query } from '../api/Query';
Expand Down Expand Up @@ -83,14 +92,14 @@ export class Repo {
forceRestClient: boolean,
public app: FirebaseApp
) {
let authTokenProvider: TokenProvider;
let authTokenProvider: AuthTokenProvider;
if (
typeof process !== 'undefined' &&
process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR]
) {
authTokenProvider = new EmulatorAuthTokenProvider(app);
} else {
authTokenProvider = new AuthTokenProvider(app);
authTokenProvider = new FirebaseAuthTokenProvider(app);
}

this.stats_ = StatsManager.getCollection(repoInfo_);
Expand Down
3 changes: 1 addition & 2 deletions packages/database/src/core/RepoManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@

import { FirebaseApp } from '@firebase/app-types';
import { safeGet } from '@firebase/util';
import { FIREBASE_DATABASE_EMULATOR_HOST_VAR } from './Constants';
import { Repo } from './Repo';
import { fatal } from './util/util';
import { fatal, FIREBASE_DATABASE_EMULATOR_HOST_VAR } from './util/util';
import { parseRepoInfo, parseURL } from './util/libs/parser';
import { validateUrl } from './util/validation';
import './Repo_transaction';
Expand Down
11 changes: 11 additions & 0 deletions packages/database/src/core/util/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ import { Logger, LogLevel } from '@firebase/logger';

const logClient = new Logger('@firebase/database');

/**
* Environment variable for enabling interaction with the Firebase Realtime Database
* emulator. If set, the module will present the endpoint with a fake "owner" credential
* (see EmulatorAuthTokenProvider) instead of one belonging to a real account.
*
* The expected format for this variable is '<HOST>:<PORT>'. The transfer protocol must be
* omitted and will default to 'http'.
*/
export const FIREBASE_DATABASE_EMULATOR_HOST_VAR =
'FIREBASE_DATABASE_EMULATOR_HOST';

/**
* Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).
* @type {function(): number} Generated ID.
Expand Down