mirror of
https://github.com/hanzoai/firebase-js-sdk.git
synced 2026-09-24 16:59:10 +00:00
Included initStandalone (#7258)
Added private `initStandalone` API into modular SDK
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@firebase/database-compat": patch
|
||||
"@firebase/database": patch
|
||||
---
|
||||
|
||||
Included `initStandalone` as an internal method to RTDB.
|
||||
@@ -14,7 +14,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
AppCheckInternalComponentName,
|
||||
FirebaseAppCheckInternal
|
||||
} from '@firebase/app-check-interop-types';
|
||||
import { FirebaseApp } from '@firebase/app-types';
|
||||
import {
|
||||
FirebaseAuthInternal,
|
||||
@@ -48,6 +51,7 @@ export function initStandalone<T>({
|
||||
url,
|
||||
version,
|
||||
customAuthImpl,
|
||||
customAppCheckImpl,
|
||||
namespace,
|
||||
nodeAdmin = false
|
||||
}: {
|
||||
@@ -55,6 +59,7 @@ export function initStandalone<T>({
|
||||
url: string;
|
||||
version: string;
|
||||
customAuthImpl: FirebaseAuthInternal;
|
||||
customAppCheckImpl?: FirebaseAppCheckInternal;
|
||||
namespace: T;
|
||||
nodeAdmin?: boolean;
|
||||
}): {
|
||||
@@ -63,24 +68,40 @@ export function initStandalone<T>({
|
||||
} {
|
||||
_setSDKVersion(version);
|
||||
|
||||
const container = new ComponentContainer('database-standalone');
|
||||
/**
|
||||
* ComponentContainer('database-standalone') is just a placeholder that doesn't perform
|
||||
* any actual function.
|
||||
*/
|
||||
const authProvider = new Provider<FirebaseAuthInternalName>(
|
||||
'auth-internal',
|
||||
new ComponentContainer('database-standalone')
|
||||
container
|
||||
);
|
||||
authProvider.setComponent(
|
||||
new Component('auth-internal', () => customAuthImpl, ComponentType.PRIVATE)
|
||||
);
|
||||
|
||||
let appCheckProvider: Provider<AppCheckInternalComponentName> = undefined;
|
||||
if (customAppCheckImpl) {
|
||||
appCheckProvider = new Provider<AppCheckInternalComponentName>(
|
||||
'app-check-internal',
|
||||
container
|
||||
);
|
||||
appCheckProvider.setComponent(
|
||||
new Component(
|
||||
'app-check-internal',
|
||||
() => customAppCheckImpl,
|
||||
ComponentType.PRIVATE
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
instance: new Database(
|
||||
_repoManagerDatabaseFromApp(
|
||||
app,
|
||||
authProvider,
|
||||
/* appCheckProvider= */ undefined,
|
||||
appCheckProvider,
|
||||
url,
|
||||
nodeAdmin
|
||||
),
|
||||
|
||||
@@ -96,4 +96,5 @@ export {
|
||||
hijackHash as _TEST_ACCESS_hijackHash,
|
||||
forceRestClient as _TEST_ACCESS_forceRestClient
|
||||
} from './api/test_access';
|
||||
export * from './internal/index';
|
||||
/* eslint-enable camelcase */
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2023 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
FirebaseAppCheckInternal,
|
||||
AppCheckInternalComponentName
|
||||
} from '@firebase/app-check-interop-types';
|
||||
import { FirebaseApp } from '@firebase/app-types';
|
||||
import {
|
||||
FirebaseAuthInternal,
|
||||
FirebaseAuthInternalName
|
||||
} from '@firebase/auth-interop-types';
|
||||
import {
|
||||
Component,
|
||||
ComponentContainer,
|
||||
ComponentType,
|
||||
Provider
|
||||
} from '@firebase/component';
|
||||
|
||||
import { Database } from '../api.standalone';
|
||||
import { repoManagerDatabaseFromApp } from '../api/Database';
|
||||
import { setSDKVersion } from '../core/version';
|
||||
|
||||
/**
|
||||
* Used by console to create a database based on the app,
|
||||
* passed database URL and a custom auth implementation.
|
||||
* @internal
|
||||
* @param app - A valid FirebaseApp-like object
|
||||
* @param url - A valid Firebase databaseURL
|
||||
* @param version - custom version e.g. firebase-admin version
|
||||
* @param customAppCheckImpl - custom app check implementation
|
||||
* @param customAuthImpl - custom auth implementation
|
||||
*/
|
||||
export function _initStandalone({
|
||||
app,
|
||||
url,
|
||||
version,
|
||||
customAuthImpl,
|
||||
customAppCheckImpl,
|
||||
nodeAdmin = false
|
||||
}: {
|
||||
app: FirebaseApp;
|
||||
url: string;
|
||||
version: string;
|
||||
customAuthImpl: FirebaseAuthInternal;
|
||||
customAppCheckImpl?: FirebaseAppCheckInternal;
|
||||
nodeAdmin?: boolean;
|
||||
}): Database {
|
||||
setSDKVersion(version);
|
||||
|
||||
/**
|
||||
* ComponentContainer('database-standalone') is just a placeholder that doesn't perform
|
||||
* any actual function.
|
||||
*/
|
||||
const componentContainer = new ComponentContainer('database-standalone');
|
||||
const authProvider = new Provider<FirebaseAuthInternalName>(
|
||||
'auth-internal',
|
||||
componentContainer
|
||||
);
|
||||
let appCheckProvider: Provider<AppCheckInternalComponentName>;
|
||||
if (customAppCheckImpl) {
|
||||
appCheckProvider = new Provider<AppCheckInternalComponentName>(
|
||||
'app-check-internal',
|
||||
componentContainer
|
||||
);
|
||||
appCheckProvider.setComponent(
|
||||
new Component(
|
||||
'app-check-internal',
|
||||
() => customAppCheckImpl,
|
||||
ComponentType.PRIVATE
|
||||
)
|
||||
);
|
||||
}
|
||||
authProvider.setComponent(
|
||||
new Component('auth-internal', () => customAuthImpl, ComponentType.PRIVATE)
|
||||
);
|
||||
|
||||
return repoManagerDatabaseFromApp(
|
||||
app,
|
||||
authProvider,
|
||||
appCheckProvider,
|
||||
url,
|
||||
nodeAdmin
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user