Skip to content

Commit 33388ae

Browse files
authored
Add version reporting for all packages (#2405)
Add version reporting for all packages plus bundle variant suffix
1 parent 85c9f48 commit 33388ae

37 files changed

+147
-37
lines changed

packages/app-types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export interface FirebaseNamespace {
103103
* @param library Name of 1p or 3p library (e.g. firestore, angularfire)
104104
* @param version Current version of that library.
105105
*/
106-
registerVersion(library: string, version: string): void;
106+
registerVersion(library: string, version: string, variant?: string): void;
107107

108108
// The current SDK version.
109109
SDK_VERSION: string;

packages/app/index.lite.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { registerCoreComponents } from './src/registerCoreComponents';
2020

2121
export const firebase = createFirebaseNamespaceLite();
2222

23-
registerCoreComponents(firebase);
23+
registerCoreComponents(firebase, 'lite');
2424

2525
// eslint-disable-next-line import/no-default-export
2626
export default firebase;

packages/app/index.node.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { registerCoreComponents } from './src/registerCoreComponents';
3737

3838
export const firebase = _firebase as FirebaseNamespace;
3939

40-
registerCoreComponents(firebase);
40+
registerCoreComponents(firebase, 'node');
4141

4242
// eslint-disable-next-line import/no-default-export
4343
export default firebase;

packages/app/index.rn.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const { AsyncStorage } = require('react-native');
3838

3939
export const firebase = _firebase as FirebaseNamespace;
4040

41-
registerCoreComponents(firebase);
41+
registerCoreComponents(firebase, 'rn');
4242

4343
// eslint-disable-next-line import/no-default-export
4444
export default firebase;

packages/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"bugs": {
5050
"url": "https://github.com/firebase/firebase-js-sdk/issues"
5151
},
52-
"typings": "dist/app/index.d.ts",
52+
"typings": "dist/packages/app/index.d.ts",
5353
"nyc": {
5454
"extension": [
5555
".ts"

packages/app/src/constants.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { name as performanceName } from '../../performance/package.json';
2626
import { name as remoteConfigName } from '../../remote-config/package.json';
2727
import { name as storageName } from '../../storage/package.json';
2828
import { name as firestoreName } from '../../firestore/package.json';
29+
import { name as packageName } from '../../../package.json';
2930

3031
export const PLATFORM_LOG_STRING = {
3132
[appName]: 'fire-core',
@@ -39,10 +40,5 @@ export const PLATFORM_LOG_STRING = {
3940
[storageName]: 'fire-gcs',
4041
[firestoreName]: 'fire-fst',
4142
'fire-js': 'fire-js', // Platform identifier for JS SDK.
42-
'fire-js-all-app': 'fire-js-all-app', // firebase/app import
43-
'fire-js-all': 'fire-js-all', // 'firebase' import
44-
'fire-js-all-node': 'fire-js-all-node',
45-
'fire-js-all-rn': 'fire-js-all-rn',
46-
'fire-js-all-lite': 'fire-js-all-lite',
47-
'fire-js-all-cdn': 'fire-js-all-cdn'
43+
[packageName]: 'fire-js-all'
4844
} as const;

packages/app/src/firebaseNamespaceCore.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,17 @@ export function createFirebaseNamespaceCore(
235235
: null;
236236
}
237237

238-
function registerVersion(libraryKeyOrName: string, version: string): void {
238+
function registerVersion(
239+
libraryKeyOrName: string,
240+
version: string,
241+
variant?: string
242+
): void {
239243
// TODO: We can use this check to whitelist strings when/if we set up
240244
// a good whitelist system.
241-
const library = PLATFORM_LOG_STRING[libraryKeyOrName] ?? libraryKeyOrName;
245+
let library = PLATFORM_LOG_STRING[libraryKeyOrName] ?? libraryKeyOrName;
246+
if (variant) {
247+
library += `-${variant}`;
248+
}
242249
const libraryMismatch = library.match(/\s|\//);
243250
const versionMismatch = version.match(/\s|\//);
244251
if (libraryMismatch || versionMismatch) {

packages/app/src/registerCoreComponents.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ import { Component, ComponentType } from '@firebase/component';
2121
import { PlatformLoggerService } from './platformLoggerService';
2222
import { name, version } from '../package.json';
2323

24-
export function registerCoreComponents(firebase: FirebaseNamespace): void {
24+
export function registerCoreComponents(
25+
firebase: FirebaseNamespace,
26+
variant?: string
27+
): void {
2528
(firebase as _FirebaseNamespace).INTERNAL.registerComponent(
2629
new Component(
2730
'platform-logger',
@@ -30,7 +33,7 @@ export function registerCoreComponents(firebase: FirebaseNamespace): void {
3033
)
3134
);
3235
// Register `app` package.
33-
firebase.registerVersion(name, version);
36+
firebase.registerVersion(name, version, variant);
3437
// Register platform SDK identifier (no version).
3538
firebase.registerVersion('fire-js', '');
3639
}

packages/app/test/platformLogger.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,29 @@ describe('Platform Logger Service', () => {
9090
return (firebase as any)['test-shell']();
9191
});
9292

93+
it(`logs core version with bundle variant`, () => {
94+
firebase.initializeApp({});
95+
registerCoreComponents(firebase, 'node');
96+
(firebase as _FirebaseNamespace).INTERNAL.registerComponent(
97+
new Component(
98+
'test-shell',
99+
async (container: ComponentContainer) => {
100+
const platformLoggerProvider = container.getProvider(
101+
'platform-logger'
102+
);
103+
const platformLogger = (await platformLoggerProvider.get()) as PlatformLoggerService;
104+
const platformInfoString = platformLogger.getPlatformInfoString();
105+
expect(platformInfoString).to.include(
106+
`fire-core-node/${appVersion}`
107+
);
108+
expect(platformInfoString).to.include('fire-js/');
109+
},
110+
ComponentType.PUBLIC
111+
)
112+
);
113+
return (firebase as any)['test-shell']();
114+
});
115+
93116
it(`logs other components' versions`, () => {
94117
firebase.initializeApp({});
95118
registerCoreComponents(firebase);

packages/auth/gulpfile.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const del = require('del');
2121
const express = require('express');
2222
const path = require('path');
2323
const sourcemaps = require('gulp-sourcemaps');
24+
const pkg = require('./package.json');
2425

2526
// The optimization level for the JS compiler.
2627
// Valid levels: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS, ADVANCED_OPTIMIZATIONS.
@@ -79,7 +80,9 @@ function createBuildTask(filename, prefix, suffix) {
7980
)
8081
],
8182
language_out: 'ES5',
82-
only_closure_dependencies: true
83+
only_closure_dependencies: true,
84+
// Insert current package.json version into registerVersion call.
85+
define: `AUTH_NPM_PACKAGE_VERSION=${pkg.version}`
8386
})
8487
)
8588
.pipe(sourcemaps.write('.'))

packages/auth/src/exports_auth.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ goog.require('fireauth.grecaptcha');
4848
goog.require('fireauth.idp.ProviderId');
4949
goog.require('goog.Promise');
5050

51+
/** @define {string} */
52+
const AUTH_NPM_PACKAGE_VERSION = '';
5153

5254
fireauth.exportlib.exportPrototypeMethods(
5355
fireauth.Auth.prototype, {
@@ -705,6 +707,7 @@ fireauth.exportlib.exportFunction(
705707

706708
firebase.INTERNAL.registerComponent(authComponent);
707709
firebase.INTERNAL.registerComponent(authInteropComponent);
710+
firebase.registerVersion('@firebase/auth', AUTH_NPM_PACKAGE_VERSION);
708711

709712
// Expose User as firebase.User.
710713
firebase.INTERNAL.extendNamespace({

packages/database/index.node.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import {
3838
} from '@firebase/component';
3939
import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
4040

41+
import { name, version } from './package.json';
42+
4143
setWebSocketImpl(Client);
4244

4345
const ServerValue = Database.ServerValue;
@@ -131,6 +133,8 @@ export function registerDatabase(instance: FirebaseNamespace) {
131133
.setMultipleInstances(true)
132134
);
133135

136+
instance.registerVersion(name, version, 'node');
137+
134138
if (isNodeSdk()) {
135139
module.exports = Object.assign({}, namespace, { initStandalone });
136140
}

packages/database/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import * as types from '@firebase/database-types';
3131
import { setSDKVersion } from './src/core/version';
3232
import { Component, ComponentType } from '@firebase/component';
3333

34+
import { name, version } from './package.json';
35+
3436
const ServerValue = Database.ServerValue;
3537

3638
export function registerDatabase(instance: FirebaseNamespace) {
@@ -71,6 +73,8 @@ export function registerDatabase(instance: FirebaseNamespace) {
7173
.setMultipleInstances(true)
7274
);
7375

76+
instance.registerVersion(name, version);
77+
7478
if (isNodeSdk()) {
7579
module.exports = namespace;
7680
}

packages/database/rollup.config.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18+
import json from 'rollup-plugin-json';
1819
import typescriptPlugin from 'rollup-plugin-typescript2';
1920
import typescript from 'typescript';
2021
import pkg from './package.json';
@@ -29,7 +30,8 @@ const deps = Object.keys(
2930
const es5BuildPlugins = [
3031
typescriptPlugin({
3132
typescript
32-
})
33+
}),
34+
json()
3335
];
3436

3537
const es5Builds = [
@@ -67,7 +69,8 @@ const es2017BuildPlugins = [
6769
target: 'es2017'
6870
}
6971
}
70-
})
72+
}),
73+
json({ preferConst: true })
7174
];
7275

7376
const es2017Builds = [

packages/firebase/app/index.ts

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

1818
import firebase from '@firebase/app';
19+
import { name, version } from '../package.json';
1920

20-
firebase.registerVersion('fire-js-all-app', firebase.SDK_VERSION);
21+
firebase.registerVersion(name, version, 'app');
2122

2223
export default firebase;

packages/firebase/externs/firebase-app-externs.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,3 +284,10 @@ firebase.CompleteFn;
284284

285285
/** @typedef {function(): void} */
286286
firebase.Unsubscribe;
287+
288+
/**
289+
* @param {string} name
290+
* @param {string} version
291+
* @param {?string} variant
292+
*/
293+
firebase.registerVersion = function(name, version, variant) {};

packages/firebase/index.d.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,13 @@ declare namespace firebase {
8787
* Registers a library's name and version for platform logging purposes.
8888
* @param library Name of 1p or 3p library (e.g. firestore, angularfire)
8989
* @param version Current version of that library.
90+
* @param variant Bundle variant, e.g., node, rn, etc.
9091
*/
91-
function registerVersion(library: string, version: string): void;
92+
function registerVersion(
93+
library: string,
94+
version: string,
95+
variant?: string
96+
): void;
9297

9398
/**
9499
* @hidden

packages/firebase/rollup.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import typescriptPlugin from 'rollup-plugin-typescript2';
2323
import typescript from 'typescript';
2424
import { uglify } from 'rollup-plugin-uglify';
2525
import { terser } from 'rollup-plugin-terser';
26+
import json from 'rollup-plugin-json';
2627
import pkg from './package.json';
2728

2829
import appPkg from './app/package.json';
@@ -33,6 +34,7 @@ const plugins = [
3334
typescriptPlugin({
3435
typescript
3536
}),
37+
json(),
3638
commonjs()
3739
];
3840

@@ -199,6 +201,7 @@ const completeBuilds = [
199201
typescriptPlugin({
200202
typescript
201203
}),
204+
json(),
202205
commonjs(),
203206
uglify()
204207
]
@@ -227,6 +230,9 @@ const completeBuilds = [
227230
}
228231
}
229232
}),
233+
json({
234+
preferConst: true
235+
}),
230236
commonjs(),
231237
terser()
232238
]

packages/firebase/src/index.cdn.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ https://www.gstatic.com/firebasejs/5.0.0/firebase-<PACKAGE>.js
2828

2929
import '@firebase/polyfill';
3030
import firebase from '../app';
31+
import { name, version } from '../package.json';
3132

3233
import '../auth';
3334
import '../database';
@@ -39,6 +40,6 @@ import '../performance';
3940
import '../analytics';
4041
import '../remote-config';
4142

42-
firebase.registerVersion('fire-js-all-cdn', firebase.SDK_VERSION);
43+
firebase.registerVersion(name, version, 'cdn');
4344

4445
export default firebase;

packages/firebase/src/index.node.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
*/
1717

1818
import firebase from '../app';
19+
import { name, version } from '../package.json';
1920

2021
import '../auth';
2122
import '../database';
2223
import '../firestore';
2324
import '../functions';
2425

25-
firebase.registerVersion('fire-js-all-node', firebase.SDK_VERSION);
26+
firebase.registerVersion(name, version, 'node');
2627

2728
export default firebase;

packages/firebase/src/index.perf.ts

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

1818
import firebase from '@firebase/app';
1919
import '@firebase/performance';
20+
import { name, version } from '../package.json';
2021

21-
firebase.registerVersion('fire-js-all-lite', firebase.SDK_VERSION);
22+
firebase.registerVersion(name, version, 'lite');
2223

2324
export default firebase;

packages/firebase/src/index.rn.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@
1616
*/
1717

1818
import firebase from '../app';
19+
import { name, version } from '../package.json';
1920

2021
import '../auth';
2122
import '../database';
2223
import '../storage';
2324

24-
firebase.registerVersion('fire-js-all-rn', firebase.SDK_VERSION);
25+
firebase.registerVersion(name, version, 'rn');
2526

2627
export default firebase;

packages/firebase/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import 'firebase/<PACKAGE>';
3737
`);
3838

3939
import firebase from '../app';
40+
import { name, version } from '../package.json';
4041

4142
import '../auth';
4243
import '../database';
@@ -48,6 +49,6 @@ import '../performance';
4849
import '../analytics';
4950
import '../remote-config';
5051

51-
firebase.registerVersion('fire-js-all', firebase.SDK_VERSION);
52+
firebase.registerVersion(name, version);
5253

5354
export default firebase;

packages/firestore/index.node.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ import { configureForFirebase } from './src/platform/config';
2020
import './src/platform_node/node_init';
2121
import { FirebaseNamespace } from '@firebase/app-types';
2222

23+
import { name, version } from './package.json';
24+
2325
export function registerFirestore(instance: FirebaseNamespace): void {
2426
configureForFirebase(instance);
27+
instance.registerVersion(name, version, 'node');
2528
}
2629

2730
registerFirestore(firebase);

0 commit comments

Comments
 (0)