Skip to content

Commit ce48439

Browse files
committed
Seperate internal interface from public interface.
1 parent 4aa04bc commit ce48439

32 files changed

+154
-167
lines changed

packages-exp/installations-exp/src/api/delete-installations.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ import { expect } from 'chai';
1919
import { SinonStub, stub } from 'sinon';
2020
import * as deleteInstallationRequestModule from '../functions/delete-installation-request';
2121
import { get, set } from '../helpers/idb-manager';
22-
import {
23-
FirebaseInstallations,
24-
AppConfig
25-
} from '@firebase/installations-types-exp';
2622
import {
2723
InProgressInstallationEntry,
2824
RegisteredInstallationEntry,
@@ -34,11 +30,15 @@ import '../testing/setup';
3430
import { ErrorCode } from '../util/errors';
3531
import { sleep } from '../util/sleep';
3632
import { deleteInstallations } from './delete-installations';
33+
import {
34+
FirebaseInstallationsImpl,
35+
AppConfig
36+
} from '../interfaces/installation-impl';
3737

3838
const FID = 'children-of-the-damned';
3939

4040
describe('deleteInstallation', () => {
41-
let installations: FirebaseInstallations;
41+
let installations: FirebaseInstallationsImpl;
4242
let deleteInstallationRequestSpy: SinonStub<
4343
[AppConfig, RegisteredInstallationEntry],
4444
Promise<void>

packages-exp/installations-exp/src/api/delete-installations.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ import { deleteInstallationRequest } from '../functions/delete-installation-requ
1919
import { remove, update } from '../helpers/idb-manager';
2020
import { RequestStatus } from '../interfaces/installation-entry';
2121
import { ERROR_FACTORY, ErrorCode } from '../util/errors';
22-
import { FirebaseInstallations } from '@firebase/installations-types-exp';
22+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
2323

2424
export async function deleteInstallations(
25-
installations: FirebaseInstallations
25+
installations: FirebaseInstallationsImpl
2626
): Promise<void> {
2727
const { appConfig } = installations;
2828

packages-exp/installations-exp/src/api/get-id.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ import { expect } from 'chai';
1919
import { SinonStub, stub } from 'sinon';
2020
import * as getInstallationEntryModule from '../helpers/get-installation-entry';
2121
import * as refreshAuthTokenModule from '../helpers/refresh-auth-token';
22-
import {
23-
FirebaseInstallations,
24-
AppConfig
25-
} from '@firebase/installations-types-exp';
2622
import {
2723
RegisteredInstallationEntry,
2824
RequestStatus
2925
} from '../interfaces/installation-entry';
3026
import { getFakeInstallations } from '../testing/fake-generators';
3127
import '../testing/setup';
3228
import { getId } from './get-id';
29+
import {
30+
FirebaseInstallationsImpl,
31+
AppConfig
32+
} from '../interfaces/installation-impl';
3333

3434
const FID = 'disciples-of-the-watch';
3535

3636
describe('getId', () => {
37-
let installations: FirebaseInstallations;
37+
let installations: FirebaseInstallationsImpl;
3838
let getInstallationEntrySpy: SinonStub<
3939
[AppConfig],
4040
Promise<getInstallationEntryModule.InstallationEntryWithRegistrationPromise>

packages-exp/installations-exp/src/api/get-id.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
import { getInstallationEntry } from '../helpers/get-installation-entry';
1919
import { refreshAuthToken } from '../helpers/refresh-auth-token';
20-
import { FirebaseInstallations } from '@firebase/installations-types-exp';
20+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
2121

2222
export async function getId(
23-
installations: FirebaseInstallations
23+
installations: FirebaseInstallationsImpl
2424
): Promise<string> {
2525
const { installationEntry, registrationPromise } = await getInstallationEntry(
2626
installations.appConfig

packages-exp/installations-exp/src/api/get-installations.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@
1818
import { FirebaseApp } from '@firebase/app-types-exp';
1919
import { FirebaseInstallations } from '@firebase/installations-types-exp';
2020
import { _getProvider } from '@firebase/app-exp';
21-
import { extractAppConfig } from '../helpers/extract-app-config';
2221

2322
export function getInstallations(app: FirebaseApp): FirebaseInstallations {
24-
const appConfig = extractAppConfig(app);
25-
const platformLoggerProvider = _getProvider(app, 'platform-logger');
26-
const installations: FirebaseInstallations = {
27-
appConfig,
28-
platformLoggerProvider
29-
};
30-
return installations;
23+
const installationsImpl = _getProvider(
24+
app,
25+
'installations-exp'
26+
).getImmediate();
27+
return installationsImpl;
3128
}

packages-exp/installations-exp/src/api/get-token.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ import { SinonFakeTimers, SinonStub, stub, useFakeTimers } from 'sinon';
2020
import * as createInstallationRequestModule from '../functions/create-installation-request';
2121
import * as generateAuthTokenRequestModule from '../functions/generate-auth-token-request';
2222
import { get, set } from '../helpers/idb-manager';
23-
import {
24-
FirebaseInstallations,
25-
AppConfig
26-
} from '@firebase/installations-types-exp';
2723
import {
2824
CompletedAuthToken,
2925
InProgressInstallationEntry,
@@ -37,6 +33,10 @@ import { TOKEN_EXPIRATION_BUFFER } from '../util/constants';
3733
import { ERROR_FACTORY, ErrorCode } from '../util/errors';
3834
import { sleep } from '../util/sleep';
3935
import { getToken } from './get-token';
36+
import {
37+
AppConfig,
38+
FirebaseInstallationsImpl
39+
} from '../interfaces/installation-impl';
4040

4141
const FID = 'dont-talk-to-strangers';
4242
const AUTH_TOKEN = 'authToken';
@@ -173,13 +173,13 @@ const setupInstallationEntryMap: Map<
173173
]);
174174

175175
describe('getToken', () => {
176-
let installations: FirebaseInstallations;
176+
let installations: FirebaseInstallationsImpl;
177177
let createInstallationRequestSpy: SinonStub<
178178
[AppConfig, InProgressInstallationEntry],
179179
Promise<RegisteredInstallationEntry>
180180
>;
181181
let generateAuthTokenRequestSpy: SinonStub<
182-
[FirebaseInstallations, RegisteredInstallationEntry],
182+
[FirebaseInstallationsImpl, RegisteredInstallationEntry],
183183
Promise<CompletedAuthToken>
184184
>;
185185

packages-exp/installations-exp/src/api/get-token.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
import { getInstallationEntry } from '../helpers/get-installation-entry';
1919
import { refreshAuthToken } from '../helpers/refresh-auth-token';
2020
import {
21-
FirebaseInstallations,
21+
FirebaseInstallationsImpl,
2222
AppConfig
23-
} from '@firebase/installations-types-exp';
23+
} from '../interfaces/installation-impl';
2424

2525
export async function getToken(
26-
installations: FirebaseInstallations,
26+
installations: FirebaseInstallationsImpl,
2727
forceRefresh = false
2828
): Promise<string> {
2929
await completeInstallationRegistration(installations.appConfig);

packages-exp/installations-exp/src/api/on-id-change.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ import '../testing/setup';
2121
import { onIdChange } from './on-id-change';
2222
import * as FidChangedModule from '../helpers/fid-changed';
2323
import { getFakeInstallations } from '../testing/fake-generators';
24-
import { FirebaseInstallations } from '@firebase/installations-types-exp';
24+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
2525

2626
describe('onIdChange', () => {
27-
let installations: FirebaseInstallations;
27+
let installations: FirebaseInstallationsImpl;
2828

2929
beforeEach(() => {
3030
installations = getFakeInstallations();

packages-exp/installations-exp/src/api/on-id-change.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import { addCallback, removeCallback } from '../helpers/fid-changed';
19-
import { FirebaseInstallations } from '@firebase/installations-types-exp';
19+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
2020

2121
export type IdChangeCallbackFn = (installationId: string) => void;
2222
export type IdChangeUnsubscribeFn = () => void;
@@ -26,7 +26,7 @@ export type IdChangeUnsubscribeFn = () => void;
2626
* Returns an unsubscribe function that will remove the callback when called.
2727
*/
2828
export function onIdChange(
29-
{ appConfig }: FirebaseInstallations,
29+
{ appConfig }: FirebaseInstallationsImpl,
3030
callback: IdChangeCallbackFn
3131
): IdChangeUnsubscribeFn {
3232
addCallback(appConfig, callback);

packages-exp/installations-exp/src/functions/common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import { FirebaseError } from '@firebase/util';
1919
import { GenerateAuthTokenResponse } from '../interfaces/api-response';
20-
import { AppConfig } from '@firebase/installations-types-exp';
2120
import {
2221
CompletedAuthToken,
2322
RegisteredInstallationEntry,
@@ -28,6 +27,7 @@ import {
2827
INTERNAL_AUTH_VERSION
2928
} from '../util/constants';
3029
import { ERROR_FACTORY, ErrorCode } from '../util/errors';
30+
import { AppConfig } from '../interfaces/installation-impl';
3131

3232
export function getInstallationsEndpoint({ projectId }: AppConfig): string {
3333
return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;

packages-exp/installations-exp/src/functions/config.ts

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,61 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { _registerComponent } from '@firebase/app-exp';
18+
import { _registerComponent, _getProvider } from '@firebase/app-exp';
1919
import { _FirebaseService } from '@firebase/app-types-exp';
2020
import {
2121
Component,
2222
ComponentType,
2323
InstanceFactory,
2424
ComponentContainer
2525
} from '@firebase/component';
26-
import {
27-
getInstallations,
28-
deleteInstallations,
29-
getId,
30-
getToken,
31-
onIdChange
32-
} from '../api/index';
33-
import { FirebaseInstallationsInternal } from '../interfaces/installation-internal';
26+
import { deleteInstallations, getId, getToken } from '../api/index';
27+
import { FirebaseInstallationsInternal } from '@firebase/installations-types-exp';
28+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
29+
import { extractAppConfig } from '../helpers/extract-app-config';
3430

35-
const installationsName = 'installations-exp';
31+
const INSTALLATIONS_NAME = 'installations-exp';
3632

37-
const factory: InstanceFactory<'installations-exp'> = (
33+
const publicFactory: InstanceFactory<'installations-exp'> = (
3834
container: ComponentContainer
3935
) => {
4036
const app = container.getProvider('app-exp').getImmediate();
41-
4237
// Throws if app isn't configured properly.
43-
const installations = getInstallations(app);
44-
const installationsService: FirebaseInstallationsInternal = {
38+
const appConfig = extractAppConfig(app);
39+
const platformLoggerProvider = _getProvider(app, 'platform-logger');
40+
41+
const installationsImpl: FirebaseInstallationsImpl = {
4542
app,
46-
getId: () => getId(installations),
47-
getToken: (forceRefresh?: boolean) => getToken(installations, forceRefresh),
48-
_delete: () => deleteInstallations(installations),
49-
onIdChange: (callback: (fid: string) => void) =>
50-
onIdChange(installations, callback)
43+
appConfig,
44+
platformLoggerProvider,
45+
_delete: () => deleteInstallations(installationsImpl)
5146
};
52-
return installationsService;
47+
return installationsImpl;
48+
};
49+
50+
const internalFactory: InstanceFactory<'installations-exp-internal'> = (
51+
container: ComponentContainer
52+
) => {
53+
const app = container.getProvider('app-exp').getImmediate();
54+
// Internal FIS instance relies on public FIS instance.
55+
const installationsImpl = _getProvider(
56+
app,
57+
INSTALLATIONS_NAME
58+
).getImmediate();
59+
60+
const installationsInternal: FirebaseInstallationsInternal = {
61+
getId: () => getId(installationsImpl),
62+
getToken: (forceRefresh?: boolean) =>
63+
getToken(installationsImpl, forceRefresh)
64+
};
65+
return installationsInternal;
5366
};
5467

5568
export function registerInstallations(): void {
5669
_registerComponent(
57-
new Component(installationsName, factory, ComponentType.PUBLIC)
70+
new Component(INSTALLATIONS_NAME, publicFactory, ComponentType.PUBLIC)
71+
);
72+
_registerComponent(
73+
new Component(INSTALLATIONS_NAME, internalFactory, ComponentType.PRIVATE)
5874
);
5975
}

packages-exp/installations-exp/src/functions/create-installation-request.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { FirebaseError } from '@firebase/util';
1919
import { expect } from 'chai';
2020
import { SinonStub, stub } from 'sinon';
2121
import { CreateInstallationResponse } from '../interfaces/api-response';
22-
import { AppConfig } from '@firebase/installations-types-exp';
22+
import { AppConfig } from '../interfaces/installation-impl';
2323
import {
2424
InProgressInstallationEntry,
2525
RequestStatus

packages-exp/installations-exp/src/functions/create-installation-request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
*/
1717

1818
import { CreateInstallationResponse } from '../interfaces/api-response';
19-
import { AppConfig } from '@firebase/installations-types-exp';
2019
import {
2120
InProgressInstallationEntry,
2221
RegisteredInstallationEntry,
@@ -30,6 +29,7 @@ import {
3029
getInstallationsEndpoint,
3130
retryIfServerError
3231
} from './common';
32+
import { AppConfig } from '../interfaces/installation-impl';
3333

3434
export async function createInstallationRequest(
3535
appConfig: AppConfig,

packages-exp/installations-exp/src/functions/delete-installation-request.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import { FirebaseError } from '@firebase/util';
1919
import { expect } from 'chai';
2020
import { SinonStub, stub } from 'sinon';
21-
import { AppConfig } from '@firebase/installations-types-exp';
21+
import { AppConfig } from '../interfaces/installation-impl';
2222
import {
2323
RegisteredInstallationEntry,
2424
RequestStatus

packages-exp/installations-exp/src/functions/delete-installation-request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { AppConfig } from '@firebase/installations-types-exp';
18+
import { AppConfig } from '../interfaces/installation-impl';
1919
import { RegisteredInstallationEntry } from '../interfaces/installation-entry';
2020
import {
2121
getErrorFromResponse,

packages-exp/installations-exp/src/functions/generate-auth-token-request.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { FirebaseError } from '@firebase/util';
1919
import { expect } from 'chai';
2020
import { SinonStub, stub } from 'sinon';
2121
import { GenerateAuthTokenResponse } from '../interfaces/api-response';
22-
import { FirebaseInstallations } from '@firebase/installations-types-exp';
2322
import {
2423
CompletedAuthToken,
2524
RegisteredInstallationEntry,
@@ -35,11 +34,12 @@ import {
3534
} from '../util/constants';
3635
import { ErrorResponse } from './common';
3736
import { generateAuthTokenRequest } from './generate-auth-token-request';
37+
import { FirebaseInstallationsImpl } from '../interfaces/installation-impl';
3838

3939
const FID = 'evil-has-no-boundaries';
4040

4141
describe('generateAuthTokenRequest', () => {
42-
let installations: FirebaseInstallations;
42+
let installations: FirebaseInstallationsImpl;
4343
let fetchSpy: SinonStub<[RequestInfo, RequestInit?], Promise<Response>>;
4444
let registeredInstallationEntry: RegisteredInstallationEntry;
4545
let response: GenerateAuthTokenResponse;

packages-exp/installations-exp/src/functions/generate-auth-token-request.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
*/
1717

1818
import { GenerateAuthTokenResponse } from '../interfaces/api-response';
19-
import {
20-
AppConfig,
21-
FirebaseInstallations
22-
} from '@firebase/installations-types-exp';
2319
import {
2420
CompletedAuthToken,
2521
RegisteredInstallationEntry
@@ -32,9 +28,13 @@ import {
3228
getInstallationsEndpoint,
3329
retryIfServerError
3430
} from './common';
31+
import {
32+
FirebaseInstallationsImpl,
33+
AppConfig
34+
} from '../interfaces/installation-impl';
3535

3636
export async function generateAuthTokenRequest(
37-
{ appConfig, platformLoggerProvider }: FirebaseInstallations,
37+
{ appConfig, platformLoggerProvider }: FirebaseInstallationsImpl,
3838
installationEntry: RegisteredInstallationEntry
3939
): Promise<CompletedAuthToken> {
4040
const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);

packages-exp/installations-exp/src/helpers/extract-app-config.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import { FirebaseError } from '@firebase/util';
1919
import { expect } from 'chai';
20-
import { AppConfig } from '@firebase/installations-types-exp';
20+
import { AppConfig } from '../interfaces/installation-impl';
2121
import { getFakeApp } from '../testing/fake-generators';
2222
import '../testing/setup';
2323
import { extractAppConfig } from './extract-app-config';

packages-exp/installations-exp/src/helpers/extract-app-config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import { FirebaseApp, FirebaseOptions } from '@firebase/app-types-exp';
1919
import { FirebaseError } from '@firebase/util';
20-
import { AppConfig } from '@firebase/installations-types-exp';
20+
import { AppConfig } from '../interfaces/installation-impl';
2121
import { ERROR_FACTORY, ErrorCode } from '../util/errors';
2222

2323
export function extractAppConfig(app: FirebaseApp): AppConfig {

0 commit comments

Comments
 (0)