Skip to content

Commit 3928d08

Browse files
committed
ci: add validation for parameters length
Needed as otherwise if the parameter is longer we are unable to map this in GA4. GA4 has a limit of: - 24 characters for custom user dimension parameter names - 40 characters for custom event dimension parameter names - 40 characters for custom metric dimension parameter names
1 parent bf7ed0d commit 3928d08

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

docs/design/analytics.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ PROJECT NAME TO BUILD OR A MODULE NAME.**
4444
| AngularCLIVersion | `up.ng_cli_version` | `string` |
4545
| AngularCLIMajorVersion | `upn.ng_cli_major_version` | `number` |
4646
| PackageManager | `up.ng_package_manager` | `string` |
47-
| PackageManagerVersion | `up.ng_package_manager_version` | `string` |
48-
| PackageManagerMajorVersion | `upn.ng_package_manager_major_version` | `number` |
47+
| PackageManagerVersion | `up.ng_pkg_manager_version` | `string` |
48+
| PackageManagerMajorVersion | `upn.ng_pkg_manager_major_v` | `number` |
4949
<!--USER_DIMENSIONS_TABLE_END-->
5050

5151
### List of Event Custom Dimensions

packages/angular/cli/src/analytics/analytics-parameters.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ export enum UserCustomDimension {
5454
AngularCLIVersion = 'up.ng_cli_version',
5555
AngularCLIMajorVersion = 'upn.ng_cli_major_version',
5656
PackageManager = 'up.ng_package_manager',
57-
PackageManagerVersion = 'up.ng_package_manager_version',
58-
PackageManagerMajorVersion = 'upn.ng_package_manager_major_version',
57+
PackageManagerVersion = 'up.ng_pkg_manager_version',
58+
PackageManagerMajorVersion = 'upn.ng_pkg_manager_major_v',
5959
}
6060

6161
/**

scripts/validate-user-analytics.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ async function _checkUserDimensions(dimensionsTable: string, logger: logging.Log
4040
);
4141
}
4242

43+
for (const { parameter } of data) {
44+
const param = parameter.split('.')[1];
45+
if (param.length > 24) {
46+
throw new Error(`User dimension parameter ${param} is more than 24 characters.`);
47+
}
48+
}
49+
4350
const generatedTable = userAnalyticsTable({ data }).trim();
4451
if (dimensionsTable !== generatedTable) {
4552
logger.error(
@@ -59,7 +66,7 @@ async function _checkDimensions(dimensionsTable: string, logger: logging.Logger)
5966

6067
logger.info('Gathering options for user-analytics...');
6168
const schemaUserAnalyticsValidator = (obj: Object) => {
62-
for (const [key, value] of Object.entries(obj)) {
69+
for (const value of Object.values(obj)) {
6370
if (value && typeof value === 'object') {
6471
const userAnalytics = value['x-user-analytics'];
6572
if (userAnalytics && !eventCustomDimensionValues.has(userAnalytics)) {
@@ -97,6 +104,13 @@ async function _checkDimensions(dimensionsTable: string, logger: logging.Logger)
97104
);
98105
}
99106

107+
for (const { parameter } of data) {
108+
const param = parameter.split('.')[1];
109+
if (param.length > 40) {
110+
throw new Error(`Event dimension parameter ${param} is more than 40 characters.`);
111+
}
112+
}
113+
100114
const generatedTable = userAnalyticsTable({ data }).trim();
101115
if (dimensionsTable !== generatedTable) {
102116
logger.error(
@@ -124,6 +138,13 @@ async function _checkMetrics(metricsTable: string, logger: logging.Logger) {
124138
);
125139
}
126140

141+
for (const { parameter } of data) {
142+
const param = parameter.split('.')[1];
143+
if (param.length > 40) {
144+
throw new Error(`Event metric parameter ${param} is more than 40 characters.`);
145+
}
146+
}
147+
127148
const generatedTable = userAnalyticsTable({ data }).trim();
128149
if (metricsTable !== generatedTable) {
129150
logger.error('Expected metrics table to be the same as generated. Copy the lines below:');

0 commit comments

Comments
 (0)