Skip to content

Commit 71ef398

Browse files
author
Kamil Sobol
authored
Report npm user agent (#2248)
* Report npm user agent * change field.
1 parent 97697a9 commit 71ef398

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

.changeset/dry-falcons-hammer.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@aws-amplify/platform-core': patch
3+
---
4+
5+
Report npm user agent

packages/platform-core/src/usage-data/usage_data.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ export type UsageData = {
1616
accountId: string;
1717
input: { command: string; plugin: string };
1818
codePathDurations: { platformStartup?: number; totalDuration?: number };
19+
projectSetting: { editor?: string };
1920
};

packages/platform-core/src/usage-data/usage_data_emitter.test.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { afterEach, describe, mock, test } from 'node:test';
1+
import { after, afterEach, before, describe, mock, test } from 'node:test';
22
import assert from 'node:assert';
33
import { DefaultUsageDataEmitter } from './usage_data_emitter';
44
import { v4, validate } from 'uuid';
@@ -12,6 +12,9 @@ import { UsageData } from './usage_data';
1212
import isCI from 'is-ci';
1313
import { AmplifyError, AmplifyUserError } from '..';
1414

15+
const originalNpmUserAgent = process.env.npm_config_user_agent;
16+
const testNpmUserAgent = 'testNpmUserAgent';
17+
1518
void describe('UsageDataEmitter', () => {
1619
let usageDataEmitter: DefaultUsageDataEmitter;
1720

@@ -39,6 +42,14 @@ void describe('UsageDataEmitter', () => {
3942

4043
mock.method(https, 'request', () => reqMock);
4144

45+
before(() => {
46+
process.env.npm_config_user_agent = testNpmUserAgent;
47+
});
48+
49+
after(() => {
50+
process.env.npm_config_user_agent = originalNpmUserAgent;
51+
});
52+
4253
afterEach(() => {
4354
onReqEndMock.mock.resetCalls();
4455
onReqEndMock.mock.restore();
@@ -72,6 +83,10 @@ void describe('UsageDataEmitter', () => {
7283
assert.deepStrictEqual(usageDataSent.isCi, isCI);
7384
assert.deepStrictEqual(usageDataSent.osPlatform, os.platform());
7485
assert.deepStrictEqual(usageDataSent.osRelease, os.release());
86+
assert.deepStrictEqual(
87+
usageDataSent.projectSetting.editor,
88+
testNpmUserAgent
89+
);
7590
assert.ok(validate(usageDataSent.sessionUuid));
7691
assert.ok(validate(usageDataSent.installationUuid));
7792
assert.ok(usageDataSent.error == undefined);
@@ -105,6 +120,10 @@ void describe('UsageDataEmitter', () => {
105120
assert.deepStrictEqual(usageDataSent.isCi, isCI);
106121
assert.deepStrictEqual(usageDataSent.osPlatform, os.platform());
107122
assert.deepStrictEqual(usageDataSent.osRelease, os.release());
123+
assert.deepStrictEqual(
124+
usageDataSent.projectSetting.editor,
125+
testNpmUserAgent
126+
);
108127
assert.ok(validate(usageDataSent.sessionUuid));
109128
assert.ok(validate(usageDataSent.installationUuid));
110129
assert.strictEqual(usageDataSent.error?.message, 'some error message');

packages/platform-core/src/usage-data/usage_data_emitter.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export class DefaultUsageDataEmitter implements UsageDataEmitter {
6464
metrics?: Record<string, number>;
6565
dimensions?: Record<string, string>;
6666
error?: AmplifyError;
67-
}) => {
67+
}): Promise<UsageData> => {
6868
return {
6969
accountId: await this.accountIdFetcher.fetch(),
7070
sessionUuid: this.sessionUuid,
@@ -86,6 +86,9 @@ export class DefaultUsageDataEmitter implements UsageDataEmitter {
8686
codePathDurations: this.translateMetricsToUsageData(options.metrics),
8787
input: this.translateDimensionsToUsageData(options.dimensions),
8888
isCi: isCI,
89+
projectSetting: {
90+
editor: process.env.npm_config_user_agent,
91+
},
8992
};
9093
};
9194

0 commit comments

Comments
 (0)