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
This commit is contained in:
Alan Agius 2022-10-12 09:45:26 +00:00 committed by Alan Agius
parent bf7ed0d3e5
commit 3928d084e6
3 changed files with 26 additions and 5 deletions

View File

@ -44,8 +44,8 @@ PROJECT NAME TO BUILD OR A MODULE NAME.**
| AngularCLIVersion | `up.ng_cli_version` | `string` |
| AngularCLIMajorVersion | `upn.ng_cli_major_version` | `number` |
| PackageManager | `up.ng_package_manager` | `string` |
| PackageManagerVersion | `up.ng_package_manager_version` | `string` |
| PackageManagerMajorVersion | `upn.ng_package_manager_major_version` | `number` |
| PackageManagerVersion | `up.ng_pkg_manager_version` | `string` |
| PackageManagerMajorVersion | `upn.ng_pkg_manager_major_v` | `number` |
<!--USER_DIMENSIONS_TABLE_END-->
### List of Event Custom Dimensions

View File

@ -54,8 +54,8 @@ export enum UserCustomDimension {
AngularCLIVersion = 'up.ng_cli_version',
AngularCLIMajorVersion = 'upn.ng_cli_major_version',
PackageManager = 'up.ng_package_manager',
PackageManagerVersion = 'up.ng_package_manager_version',
PackageManagerMajorVersion = 'upn.ng_package_manager_major_version',
PackageManagerVersion = 'up.ng_pkg_manager_version',
PackageManagerMajorVersion = 'upn.ng_pkg_manager_major_v',
}
/**

View File

@ -40,6 +40,13 @@ async function _checkUserDimensions(dimensionsTable: string, logger: logging.Log
);
}
for (const { parameter } of data) {
const param = parameter.split('.')[1];
if (param.length > 24) {
throw new Error(`User dimension parameter ${param} is more than 24 characters.`);
}
}
const generatedTable = userAnalyticsTable({ data }).trim();
if (dimensionsTable !== generatedTable) {
logger.error(
@ -59,7 +66,7 @@ async function _checkDimensions(dimensionsTable: string, logger: logging.Logger)
logger.info('Gathering options for user-analytics...');
const schemaUserAnalyticsValidator = (obj: Object) => {
for (const [key, value] of Object.entries(obj)) {
for (const value of Object.values(obj)) {
if (value && typeof value === 'object') {
const userAnalytics = value['x-user-analytics'];
if (userAnalytics && !eventCustomDimensionValues.has(userAnalytics)) {
@ -97,6 +104,13 @@ async function _checkDimensions(dimensionsTable: string, logger: logging.Logger)
);
}
for (const { parameter } of data) {
const param = parameter.split('.')[1];
if (param.length > 40) {
throw new Error(`Event dimension parameter ${param} is more than 40 characters.`);
}
}
const generatedTable = userAnalyticsTable({ data }).trim();
if (dimensionsTable !== generatedTable) {
logger.error(
@ -124,6 +138,13 @@ async function _checkMetrics(metricsTable: string, logger: logging.Logger) {
);
}
for (const { parameter } of data) {
const param = parameter.split('.')[1];
if (param.length > 40) {
throw new Error(`Event metric parameter ${param} is more than 40 characters.`);
}
}
const generatedTable = userAnalyticsTable({ data }).trim();
if (metricsTable !== generatedTable) {
logger.error('Expected metrics table to be the same as generated. Copy the lines below:');