Skip to content

Commit afdfced

Browse files
authored
Merge branch 'master' into setConsent
2 parents 767421e + 69e2ee0 commit afdfced

File tree

84 files changed

+674
-263
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+674
-263
lines changed

.changeset/nervous-starfishes-crash.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/rotten-tables-brush.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/sharp-rules-enjoy.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/silly-panthers-mix.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@firebase/analytics': minor
3+
---
4+
5+
Add function `setDefaultEventParameters()` to set data that will be logged on every Analytics SDK event

.changeset/tame-rice-peel.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

.changeset/witty-windows-unite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@firebase/auth": patch
3+
---
4+
5+
Update user agent detection to better detect iPad; fixes bug for some iPad devices running Cordova apps

.github/workflows/health-metrics-pull-request.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
name: Health Metrics
22

3-
on: [push, pull_request]
3+
on:
4+
push:
5+
branches: ['**']
6+
pull_request:
47

58
env:
69
GITHUB_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}

.github/workflows/release-pr.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ jobs:
1010
release:
1111
name: Create Release PR
1212
runs-on: ubuntu-latest
13+
if: ${{ !startsWith(github.event.head_commit.message, 'Version Packages (#') }}
1314
steps:
1415
- name: Checkout Repo
1516
uses: actions/checkout@master

.github/workflows/release-prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
# Release script requires git history and tags.
2222
fetch-depth: 0
2323
ref: release
24+
token: ${{ secrets.OSS_BOT_GITHUB_TOKEN }}
2425
- name: Yarn install
2526
run: yarn
2627
- name: Publish to NPM
@@ -31,7 +32,6 @@ jobs:
3132
# TODO: Make these flags defaults in the release script.
3233
run: yarn release --releaseType Production --ci --skipTests --skipReinstall --ignoreUnstaged
3334
env:
34-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3535
NPM_TOKEN_ANALYTICS: ${{secrets.NPM_TOKEN_ANALYTICS}}
3636
NPM_TOKEN_ANALYTICS_INTEROP_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_INTEROP_TYPES}}
3737
NPM_TOKEN_ANALYTICS_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_TYPES}}

.github/workflows/test-all.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
name: Test All Packages
22

3-
on: push
3+
on:
4+
push:
5+
branches: ['**']
6+
47
env:
58
# make chromedriver detect installed Chrome version and download the corresponding driver
69
DETECT_CHROMEDRIVER_VERSION: true

common/api-review/analytics.api.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,9 @@ export function setConsent(consentSettings: ConsentSettings): void;
413413
// @public @deprecated
414414
export function setCurrentScreen(analyticsInstance: Analytics, screenName: string, options?: AnalyticsCallOptions): void;
415415

416+
// @public
417+
export function setDefaultEventParameters(customParams: CustomParams): void;
418+
416419
// @public
417420
export function settings(options: SettingsOptions): void;
418421

integration/compat-interop/package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@
88
"test:debug": "karma start --browsers Chrome --auto-watch"
99
},
1010
"dependencies": {
11-
"@firebase/app": "0.7.26",
12-
"@firebase/app-compat": "0.1.27",
13-
"@firebase/analytics": "0.7.10",
14-
"@firebase/analytics-compat": "0.1.11",
15-
"@firebase/auth": "0.20.3",
16-
"@firebase/auth-compat": "0.2.16",
17-
"@firebase/functions": "0.8.2",
18-
"@firebase/functions-compat": "0.2.2",
19-
"@firebase/messaging": "0.9.14",
20-
"@firebase/messaging-compat": "0.1.14",
21-
"@firebase/performance": "0.5.10",
22-
"@firebase/performance-compat": "0.1.10",
23-
"@firebase/remote-config": "0.3.9",
24-
"@firebase/remote-config-compat": "0.1.10"
11+
"@firebase/app": "0.7.27",
12+
"@firebase/app-compat": "0.1.28",
13+
"@firebase/analytics": "0.7.11",
14+
"@firebase/analytics-compat": "0.1.12",
15+
"@firebase/auth": "0.20.4",
16+
"@firebase/auth-compat": "0.2.17",
17+
"@firebase/functions": "0.8.3",
18+
"@firebase/functions-compat": "0.2.3",
19+
"@firebase/messaging": "0.9.15",
20+
"@firebase/messaging-compat": "0.1.15",
21+
"@firebase/performance": "0.5.11",
22+
"@firebase/performance-compat": "0.1.11",
23+
"@firebase/remote-config": "0.3.10",
24+
"@firebase/remote-config-compat": "0.1.11"
2525
},
2626
"devDependencies": {
2727
"typescript": "4.2.2"

integration/firebase/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"test:ci": "node ../../scripts/run_tests_in_ci.js -s test"
88
},
99
"devDependencies": {
10-
"firebase": "9.8.3",
10+
"firebase": "9.8.4",
1111
"@types/chai": "4.3.1",
1212
"@types/mocha": "9.1.1",
1313
"chai": "4.3.6",

integration/firestore/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"test:memory:debug": "yarn build:memory; karma start --auto-watch --browsers Chrome"
1616
},
1717
"dependencies": {
18-
"@firebase/app": "0.7.26",
19-
"@firebase/firestore": "3.4.10"
18+
"@firebase/app": "0.7.27",
19+
"@firebase/firestore": "3.4.11"
2020
},
2121
"devDependencies": {
2222
"@types/mocha": "9.1.1",

integration/messaging/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"test:manual": "mocha --exit"
1010
},
1111
"devDependencies": {
12-
"firebase": "9.8.3",
12+
"firebase": "9.8.4",
1313
"chai": "4.3.6",
1414
"chromedriver": "98.0.1",
1515
"express": "4.18.1",

packages/analytics-compat/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# @firebase/analytics-compat
22

3+
## 0.1.12
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [[`835f1d46a`](https://github.com/firebase/firebase-js-sdk/commit/835f1d46a6780535bc660ef7dc23293350d5fe43), [`efe2000fc`](https://github.com/firebase/firebase-js-sdk/commit/efe2000fc499e2c85c4e5e0fef6741ff3bad2eb0)]:
8+
- @firebase/analytics@0.7.11
9+
- @firebase/util@1.6.2
10+
- @firebase/component@0.5.16
11+
312
## 0.1.11
413

514
### Patch Changes

packages/analytics-compat/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@firebase/analytics-compat",
3-
"version": "0.1.11",
3+
"version": "0.1.12",
44
"description": "",
55
"author": "Firebase <[email protected]> (https://firebase.google.com/)",
66
"main": "dist/index.cjs.js",
@@ -24,7 +24,7 @@
2424
"@firebase/app-compat": "0.x"
2525
},
2626
"devDependencies": {
27-
"@firebase/app-compat": "0.1.27",
27+
"@firebase/app-compat": "0.1.28",
2828
"rollup": "2.72.1",
2929
"@rollup/plugin-json": "4.1.0",
3030
"rollup-plugin-typescript2": "0.31.2",
@@ -53,10 +53,10 @@
5353
},
5454
"typings": "dist/src/index.d.ts",
5555
"dependencies": {
56-
"@firebase/component": "0.5.15",
57-
"@firebase/analytics": "0.7.10",
56+
"@firebase/component": "0.5.16",
57+
"@firebase/analytics": "0.7.11",
5858
"@firebase/analytics-types": "0.7.0",
59-
"@firebase/util": "1.6.1",
59+
"@firebase/util": "1.6.2",
6060
"tslib": "^2.1.0"
6161
},
6262
"nyc": {

packages/analytics/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# @firebase/analytics
22

3+
## 0.7.11
4+
5+
### Patch Changes
6+
7+
- [`835f1d46a`](https://github.com/firebase/firebase-js-sdk/commit/835f1d46a6780535bc660ef7dc23293350d5fe43) [#6357](https://github.com/firebase/firebase-js-sdk/pull/6357) - Fix typo in GtagConfigParams
8+
9+
- Updated dependencies [[`efe2000fc`](https://github.com/firebase/firebase-js-sdk/commit/efe2000fc499e2c85c4e5e0fef6741ff3bad2eb0)]:
10+
- @firebase/util@1.6.2
11+
- @firebase/component@0.5.16
12+
- @firebase/installations@0.5.11
13+
314
## 0.7.10
415

516
### Patch Changes

packages/analytics/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@firebase/analytics",
3-
"version": "0.7.10",
3+
"version": "0.7.11",
44
"description": "A analytics package for new firebase packages",
55
"author": "Firebase <[email protected]> (https://firebase.google.com/)",
66
"main": "dist/index.cjs.js",
@@ -40,15 +40,15 @@
4040
"@firebase/app": "0.x"
4141
},
4242
"dependencies": {
43-
"@firebase/installations": "0.5.10",
43+
"@firebase/installations": "0.5.11",
4444
"@firebase/logger": "0.3.3",
45-
"@firebase/util": "1.6.1",
46-
"@firebase/component": "0.5.15",
45+
"@firebase/util": "1.6.2",
46+
"@firebase/component": "0.5.16",
4747
"tslib": "^2.1.0"
4848
},
4949
"license": "Apache-2.0",
5050
"devDependencies": {
51-
"@firebase/app": "0.7.26",
51+
"@firebase/app": "0.7.27",
5252
"rollup": "2.72.1",
5353
"@rollup/plugin-commonjs": "21.1.0",
5454
"@rollup/plugin-json": "4.1.0",

packages/analytics/src/api.test.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,22 @@ import { expect } from 'chai';
1919
import { SinonStub, stub } from 'sinon';
2020
import '../testing/setup';
2121
import { getFullApp } from '../testing/get-fake-firebase-services';
22-
import { getAnalytics, initializeAnalytics } from './api';
22+
import {
23+
getAnalytics,
24+
initializeAnalytics,
25+
setDefaultEventParameters
26+
} from './api';
2327
import { FirebaseApp, deleteApp } from '@firebase/app';
2428
import { AnalyticsError } from './errors';
2529
import * as init from './initialize-analytics';
2630
const fakeAppParams = { appId: 'abcdefgh12345:23405', apiKey: 'AAbbCCdd12345' };
31+
import * as factory from './factory';
32+
import { defaultEventParametersForInit } from './functions';
2733

2834
describe('FirebaseAnalytics API tests', () => {
2935
let initStub: SinonStub = stub();
3036
let app: FirebaseApp;
37+
const wrappedGtag: SinonStub = stub();
3138

3239
beforeEach(() => {
3340
initStub = stub(init, '_initializeAnalytics').resolves(
@@ -94,4 +101,26 @@ describe('FirebaseAnalytics API tests', () => {
94101
const analyticsInstance = initializeAnalytics(app);
95102
expect(getAnalytics(app)).to.equal(analyticsInstance);
96103
});
104+
it('setDefaultEventParameters() updates defaultEventParametersForInit if gtag does not exist ', () => {
105+
const eventParametersForInit = {
106+
'github_user': 'dwyfrequency',
107+
'company': 'google'
108+
};
109+
app = getFullApp(fakeAppParams);
110+
setDefaultEventParameters(eventParametersForInit);
111+
expect(defaultEventParametersForInit).to.deep.equal(eventParametersForInit);
112+
});
113+
it('setDefaultEventParameters() calls gtag set if wrappedGtagFunction exists', () => {
114+
const eventParametersForInit = {
115+
'github_user': 'dwyfrequency',
116+
'company': 'google'
117+
};
118+
stub(factory, 'wrappedGtagFunction').get(() => wrappedGtag);
119+
app = getFullApp(fakeAppParams);
120+
setDefaultEventParameters(eventParametersForInit);
121+
expect(wrappedGtag).to.have.been.calledWithExactly(
122+
'set',
123+
eventParametersForInit
124+
);
125+
});
97126
});

packages/analytics/src/api.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ import {
4949
setUserId as internalSetUserId,
5050
setUserProperties as internalSetUserProperties,
5151
setAnalyticsCollectionEnabled as internalSetAnalyticsCollectionEnabled,
52-
_setConsentDefaultForInit
52+
_setConsentDefaultForInit,
53+
_setDefaultEventParametersForInit
5354
} from './functions';
5455
import { ERROR_FACTORY, AnalyticsError } from './errors';
5556

@@ -226,6 +227,23 @@ export function setAnalyticsCollectionEnabled(
226227
enabled
227228
).catch(e => logger.error(e));
228229
}
230+
231+
/**
232+
* Adds data that will be set on every event logged from the SDK, including automatic ones.
233+
* With gtag's "set" command, the values passed persist on the current page and are passed with
234+
* all subsequent events.
235+
* @public
236+
* @param customParams Any custom params the user may pass to gtag.js.
237+
*/
238+
export function setDefaultEventParameters(customParams: CustomParams): void {
239+
// Check if reference to existing gtag function on window object exists
240+
if (wrappedGtagFunction) {
241+
wrappedGtagFunction(GtagCommand.SET, customParams);
242+
} else {
243+
_setDefaultEventParametersForInit(customParams);
244+
}
245+
}
246+
229247
/**
230248
* Sends a Google Analytics event with given `eventParams`. This method
231249
* automatically associates this logged event with this Firebase web

packages/analytics/src/functions.test.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import {
2323
logEvent,
2424
setUserId,
2525
setUserProperties,
26-
setAnalyticsCollectionEnabled
26+
setAnalyticsCollectionEnabled,
27+
defaultEventParametersForInit,
28+
_setDefaultEventParametersForInit
2729
} from './functions';
2830
import { GtagCommand } from './constants';
2931

@@ -170,4 +172,24 @@ describe('FirebaseAnalytics methods', () => {
170172
expect(window[`ga-disable-${fakeMeasurementId}`]).to.be.true;
171173
delete window[`ga-disable-${fakeMeasurementId}`];
172174
});
175+
it('_setDefaultEventParametersForInit() stores individual params correctly', async () => {
176+
const eventParametersForInit = {
177+
'github_user': 'dwyfrequency',
178+
'company': 'google'
179+
};
180+
_setDefaultEventParametersForInit(eventParametersForInit);
181+
expect(defaultEventParametersForInit).to.deep.equal(eventParametersForInit);
182+
});
183+
it('_setDefaultEventParametersForInit() replaces previous params with new params', async () => {
184+
const eventParametersForInit = {
185+
'github_user': 'dwyfrequency',
186+
'company': 'google'
187+
};
188+
const additionalParams = { 'food': 'sushi' };
189+
_setDefaultEventParametersForInit(eventParametersForInit);
190+
_setDefaultEventParametersForInit(additionalParams);
191+
expect(defaultEventParametersForInit).to.deep.equal({
192+
...additionalParams
193+
});
194+
});
173195
});

packages/analytics/src/functions.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ import {
2424
} from './public-types';
2525
import { Gtag } from './types';
2626
import { GtagCommand } from './constants';
27+
28+
/**
29+
* Event parameters to set on 'gtag' during initialization.
30+
*/
31+
export let defaultEventParametersForInit: CustomParams | undefined;
32+
2733
/**
2834
* Logs an analytics event through the Firebase SDK.
2935
*
@@ -160,3 +166,15 @@ export function _setConsentDefaultForInit(
160166
): void {
161167
defaultConsentSettingsForInit = consentSettings;
162168
}
169+
170+
/**
171+
* Sets the variable `defaultEventParametersForInit` for use in the initialization of
172+
* analytics.
173+
*
174+
* @param customParams Any custom params the user may pass to gtag.js.
175+
*/
176+
export function _setDefaultEventParametersForInit(
177+
customParams?: CustomParams
178+
): void {
179+
defaultEventParametersForInit = customParams;
180+
}

0 commit comments

Comments
 (0)