Skip to content

Commit 41dc2ed

Browse files
refactor: remove @analytics/ua-parser as dependency of @amplitude/analytics-connector (#70)
1 parent af1adba commit 41dc2ed

File tree

6 files changed

+24
-26
lines changed

6 files changed

+24
-26
lines changed

packages/analytics-connector/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@
2727
"bugs": {
2828
"url": "https://github.com/amplitude/experiment-js-client/issues"
2929
},
30-
"dependencies": {
31-
"@amplitude/ua-parser-js": "^0.7.31"
32-
},
30+
"dependencies": {},
3331
"devDependencies": {
3432
"@types/amplitude-js": "^8.0.2",
3533
"amplitude-js": "^8.12.0"

packages/analytics-connector/rollup.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const configs = [
7171
entryFileNames: 'analytics-connector.esm.js',
7272
format: 'esm',
7373
}),
74-
external: ['@amplitude/ua-parser-js'],
74+
external: [],
7575
},
7676

7777
// modern build for field "es2015" - not ie, esm, es2015 syntax
@@ -81,7 +81,7 @@ const configs = [
8181
entryFileNames: 'analytics-connector.es2015.js',
8282
format: 'esm',
8383
}),
84-
external: ['@amplitude/ua-parser-js'],
84+
external: [],
8585
},
8686
];
8787

packages/analytics-connector/src/applicationContextProvider.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { UAParser } from '@amplitude/ua-parser-js';
2-
31
export type ApplicationContext = {
42
versionName?: string;
53
language?: string;
@@ -16,31 +14,18 @@ export interface ApplicationContextProvider {
1614
export class ApplicationContextProviderImpl
1715
implements ApplicationContextProvider
1816
{
19-
private readonly ua = new UAParser(
20-
typeof navigator !== 'undefined' ? navigator.userAgent : null,
21-
).getResult();
2217
public versionName: string;
2318
getApplicationContext(): ApplicationContext {
2419
return {
2520
versionName: this.versionName,
2621
language: getLanguage(),
2722
platform: 'Web',
28-
os: getOs(this.ua),
29-
deviceModel: getDeviceModel(this.ua),
23+
os: undefined,
24+
deviceModel: undefined,
3025
};
3126
}
3227
}
3328

34-
const getOs = (ua: UAParser): string => {
35-
return [ua.browser?.name, ua.browser?.major]
36-
.filter((e) => e !== null && e !== undefined)
37-
.join(' ');
38-
};
39-
40-
const getDeviceModel = (ua: UAParser): string => {
41-
return ua.os?.name;
42-
};
43-
4429
const getLanguage = (): string => {
4530
return (
4631
(typeof navigator !== 'undefined' &&

packages/experiment-browser/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
},
3636
"dependencies": {
3737
"@amplitude/analytics-connector": "^1.4.7",
38+
"@amplitude/ua-parser-js": "^0.7.31",
3839
"base64-js": "1.5.1",
3940
"unfetch": "4.1.0"
4041
},

packages/experiment-browser/rollup.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const configs = [
7171
entryFileNames: 'experiment.esm.js',
7272
format: 'esm',
7373
}),
74-
external: ['@amplitude/ua-parser-js', '@amplitude/analytics-connector'],
74+
external: ['@amplitude/analytics-connector'],
7575
},
7676

7777
// modern build for field "es2015" - not ie, esm, es2015 syntax
@@ -81,7 +81,7 @@ const configs = [
8181
entryFileNames: 'experiment.es2015.js',
8282
format: 'esm',
8383
}),
84-
external: ['@amplitude/ua-parser-js', '@amplitude/analytics-connector'],
84+
external: ['@amplitude/analytics-connector'],
8585
},
8686
];
8787

packages/experiment-browser/src/integration/default.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { ApplicationContextProvider } from '@amplitude/analytics-connector';
2+
import { UAParser } from '@amplitude/ua-parser-js';
23

34
import { ExperimentUserProvider } from '../types/provider';
45
import { ExperimentUser } from '../types/user';
56

67
export class DefaultUserProvider implements ExperimentUserProvider {
8+
private readonly ua = new UAParser(
9+
typeof navigator !== 'undefined' ? navigator.userAgent : null,
10+
).getResult();
711
private readonly contextProvider: ApplicationContextProvider;
812
public readonly userProvider: ExperimentUserProvider | undefined;
913
constructor(
@@ -21,9 +25,19 @@ export class DefaultUserProvider implements ExperimentUserProvider {
2125
version: context.versionName,
2226
language: context.language,
2327
platform: context.platform,
24-
os: context.os,
25-
device_model: context.deviceModel,
28+
os: context.os || this.getOs(this.ua),
29+
device_model: context.deviceModel || this.getDeviceModel(this.ua),
2630
...user,
2731
};
2832
}
33+
34+
private getOs(ua: UAParser): string {
35+
return [ua.browser?.name, ua.browser?.major]
36+
.filter((e) => e !== null && e !== undefined)
37+
.join(' ');
38+
}
39+
40+
private getDeviceModel(ua: UAParser): string | undefined {
41+
return ua.os?.name;
42+
}
2943
}

0 commit comments

Comments
 (0)