Skip to content

Commit a67d320

Browse files
authored
[Exp] Export public types from App, RC, FCM, Perf, and Installations (#4350)
* share use_typings.js * fix bugs * export public types from app-exp * build app-exp release * export types from app, rc and fcm * export types from perf * export types from installations * fix perf type exports
1 parent 9533688 commit a67d320

File tree

15 files changed

+83
-31
lines changed

15 files changed

+83
-31
lines changed

common/api-review/app-exp.api.md

+9-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
```ts
66

77
import { Component } from '@firebase/component';
8-
import { FirebaseApp } from '@firebase/app-types-exp';
9-
import { FirebaseAppConfig } from '@firebase/app-types-exp';
10-
import { FirebaseOptions } from '@firebase/app-types-exp';
8+
import { FirebaseApp } from '@firebase/app-types';
9+
import { FirebaseAppConfig } from '@firebase/app-types';
10+
import { FirebaseOptions } from '@firebase/app-types';
1111
import { LogCallback } from '@firebase/logger';
1212
import { LogLevelString } from '@firebase/logger';
1313
import { LogOptions } from '@firebase/logger';
@@ -35,6 +35,12 @@ export const _DEFAULT_ENTRY_NAME = "[DEFAULT]";
3535
// @public
3636
export function deleteApp(app: FirebaseApp): Promise<void>;
3737

38+
export { FirebaseApp }
39+
40+
export { FirebaseAppConfig }
41+
42+
export { FirebaseOptions }
43+
3844
// @public
3945
export function getApp(name?: string): FirebaseApp;
4046

common/api-review/app-types-exp.api.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ export interface _FirebaseService {
6060
_delete(): Promise<void>;
6161
}
6262

63-
// @public (undocumented)
64-
export interface PlatformLoggerService {
63+
// @internal (undocumented)
64+
export interface _PlatformLoggerService {
6565
// (undocumented)
6666
getPlatformInfoString(): string;
6767
}
6868

69-
// @public (undocumented)
70-
export interface VersionService {
69+
// @internal (undocumented)
70+
export interface _VersionService {
7171
// (undocumented)
7272
library: string;
7373
// (undocumented)

packages-exp/app-exp/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
"predoc": "node ../../scripts/exp/remove-exp.js temp",
2626
"doc": "api-documenter markdown --input temp --output docs",
2727
"build:doc": "yarn build && yarn doc",
28-
"typings:public": "node ./use_typings.js --public",
29-
"typings:internal": "node ./use_typings.js"
28+
"typings:public": "node ../../scripts/exp/use_typings.js ./dist/app-exp-public.d.ts",
29+
"typings:internal": "node ../../scripts/exp/use_typings.js ./dist/app-exp.d.ts"
3030
},
3131
"dependencies": {
3232
"@firebase/app-types-exp": "0.0.900",

packages-exp/app-exp/rollup.config.release.js

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const es5BuildPlugins = [
2828
typescriptPlugin({
2929
typescript,
3030
clean: true,
31+
abortOnError: false,
3132
transformers: [importPathTransformer]
3233
}),
3334
json()
@@ -53,6 +54,7 @@ const es2017BuildPlugins = [
5354
}
5455
},
5556
clean: true,
57+
abortOnError: false,
5658
transformers: [importPathTransformer]
5759
}),
5860
json({

packages-exp/app-exp/src/api.ts

+2
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,5 @@ export function onLog(
303303
export function setLogLevel(logLevel: LogLevelString): void {
304304
setLogLevelImpl(logLevel);
305305
}
306+
307+
export { FirebaseApp, FirebaseAppConfig, FirebaseOptions };
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"extends": "../../config/api-extractor.json",
33
// Point it to your entry point d.ts file.
4-
"mainEntryPointFilePath": "<projectFolder>/index.d.ts"
4+
"mainEntryPointFilePath": "<projectFolder>/index.d.ts",
5+
"dtsRollup": {
6+
"enabled": true,
7+
"untrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>.d.ts",
8+
"publicTrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>-public.d.ts"
9+
}
510
}

packages-exp/app-types-exp/index.d.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ export interface FirebaseAppConfig {
9898
}
9999

100100
/**
101-
* @public
101+
* @internal
102102
*/
103-
export interface PlatformLoggerService {
103+
export interface _PlatformLoggerService {
104104
getPlatformInfoString(): string;
105105
}
106106

@@ -116,15 +116,18 @@ export interface _FirebaseService {
116116
_delete(): Promise<void>;
117117
}
118118

119-
export interface VersionService {
119+
/**
120+
* @internal
121+
*/
122+
export interface _VersionService {
120123
library: string;
121124
version: string;
122125
}
123126

124127
declare module '@firebase/component' {
125128
interface NameServiceMapping {
126129
'app-exp': FirebaseApp;
127-
'app-version': VersionService;
128-
'platform-logger': PlatformLoggerService;
130+
'app-version': _VersionService;
131+
'platform-logger': _PlatformLoggerService;
129132
}
130133
}

packages-exp/app-types-exp/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
"api-report": "api-extractor run --local --verbose",
1212
"predoc": "node ../../scripts/exp/remove-exp.js temp",
1313
"doc": "api-documenter markdown --input temp --output docs",
14-
"build:doc": "yarn api-report && yarn doc"
14+
"build:doc": "yarn api-report && yarn doc",
15+
"build:release": "yarn api-report && yarn typings:public",
16+
"typings:public": "node ../../scripts/exp/use_typings.js ./dist/app-types-exp-public.d.ts",
17+
"typings:internal": "node ../../scripts/exp/use_typings.js ./index.d.ts"
1518
},
1619
"files": [
1720
"index.d.ts",

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

+2
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,5 @@ export async function deleteInstallations(
5454
}
5555
}
5656
}
57+
58+
export { FirebaseInstallations };

packages-exp/messaging-exp/src/api.ts

+2
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,5 @@ export function onBackgroundMessage(
126126
): Unsubscribe {
127127
return _onBackgroundMessage(messaging as MessagingService, nextOrObserver);
128128
}
129+
130+
export { FirebaseMessaging, MessagePayload };

packages-exp/messaging-types-exp/index.d.ts

+19-5
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,29 @@
1515
* limitations under the License.
1616
*/
1717

18-
// Currently supported fcm notification display parameters. Note that
19-
// {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications/NotificationOptions}
20-
// defines a full list of display notification parameters. This interface we only include what the
21-
// SEND API support for clarity.
18+
/**
19+
* Currently supported fcm notification display parameters. Note that
20+
* {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications/NotificationOptions}
21+
* defines a full list of display notification parameters. This interface we only include what the
22+
* SEND API support for clarity.
23+
*/
2224
export interface NotificationPayload {
2325
title?: string;
2426
body?: string;
2527
image?: string;
2628
}
2729

30+
/**
31+
* @public
32+
*/
2833
export interface FcmOptions {
2934
link?: string;
3035
analyticsLabel?: string;
3136
}
3237

38+
/**
39+
* @public
40+
*/
3341
export interface MessagePayload {
3442
notification?: NotificationPayload;
3543
data?: { [key: string]: string };
@@ -38,9 +46,15 @@ export interface MessagePayload {
3846
collapseKey: string;
3947
}
4048

49+
/**
50+
* @public
51+
*/
4152
export interface FirebaseMessaging {}
4253

43-
export type FirebaseMessagingName = 'messaging';
54+
/**
55+
* @internal
56+
*/
57+
export type _FirebaseMessagingName = 'messaging';
4458

4559
declare module '@firebase/component' {
4660
interface NameServiceMapping {

packages-exp/performance-exp/src/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,5 @@ function registerPerformance(): void {
9797

9898
registerPerformance();
9999
registerVersion(name, version);
100+
101+
export { FirebasePerformance, PerformanceSettings, PerformanceTrace };

packages-exp/performance-types-exp/index.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ export interface PerformanceSettings {
2626
instrumentationEnabled?: boolean;
2727
}
2828

29+
/**
30+
* @public
31+
*/
2932
export interface FirebasePerformance {
3033
/**
3134
* Controls the logging of automatic traces and HTTP/S network monitoring.
@@ -38,6 +41,9 @@ export interface FirebasePerformance {
3841
dataCollectionEnabled: boolean;
3942
}
4043

44+
/**
45+
* @public
46+
*/
4147
export interface PerformanceTrace {
4248
/**
4349
* Starts the timing for the trace instance.

packages-exp/remote-config-exp/src/api.ts

+2
Original file line numberDiff line numberDiff line change
@@ -257,3 +257,5 @@ export function setLogLevel(
257257
function getAllKeys(obj1: {} = {}, obj2: {} = {}): string[] {
258258
return Object.keys({ ...obj1, ...obj2 });
259259
}
260+
261+
export { RemoteConfig, ValueType, RemoteConfigLogLevel };

packages-exp/app-exp/use_typings.js renamed to scripts/exp/use_typings.js

+13-10
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,27 @@
1616
* limitations under the License.
1717
*/
1818

19+
// NOTE: the script assumes it runs at the root of the package you want to update
20+
1921
const { writeFileSync } = require('fs');
2022
const { argv } = require('yargs');
2123

2224
const path = require('path');
23-
const packageJsonPath = path.resolve(__dirname, './package.json');
25+
const packageJsonPath = path.resolve(process.cwd(), './package.json');
2426

25-
// point typings field to the public d.ts file in package.json
26-
const TYPINGS_PATH = argv.public
27-
? './dist/app-exp-public.d.ts'
28-
: './dist/app-exp.d.ts';
29-
console.log(
30-
`Updating the packages-exp/app-exp typings field to the ${
31-
argv.public ? 'public' : 'internal'
32-
} d.ts file ${TYPINGS_PATH}`
33-
);
27+
// point typings field to supplied path in package.json
28+
const TYPINGS_PATH = argv._[0];
29+
30+
if (!TYPINGS_PATH) {
31+
throw Error('Please supply a file path');
32+
}
3433
const packageJson = require(packageJsonPath);
3534
packageJson.typings = TYPINGS_PATH;
3635

36+
console.log(
37+
`Pointing the typings field in ${packageJson.name} to ${TYPINGS_PATH}`
38+
);
39+
3740
writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, {
3841
encoding: 'utf-8'
3942
});

0 commit comments

Comments
 (0)