From d5e833eb2364251a877538b0ddd1188921aaa29b Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Mon, 1 Jun 2026 21:57:16 +0000 Subject: [PATCH 1/2] Update formatter to handle plus signs in emails with Google domains --- util/src/formatter.ts | 1 + util/test/formatter.test.ts | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/util/src/formatter.ts b/util/src/formatter.ts index aa578bb..d4e60d1 100644 --- a/util/src/formatter.ts +++ b/util/src/formatter.ts @@ -47,6 +47,7 @@ export class UserDataFormatter { } if (domain === 'gmail.com' || domain === 'googlemail.com') { + username = username.split('+')[0]; username = username.replace(/\./g, ''); } diff --git a/util/test/formatter.test.ts b/util/test/formatter.test.ts index 0f7fbe9..592f307 100644 --- a/util/test/formatter.test.ts +++ b/util/test/formatter.test.ts @@ -28,6 +28,9 @@ describe('UserDataFormatter', () => { expect(formatter.formatEmailAddress('QuinnY@EXAMPLE.com')).to.equal( 'quinny@example.com', ); + expect( + formatter.formatEmailAddress('user.name+NYC@Example.com'), + ).to.equal('user.name+nyc@example.com'); }); it('should throw an error for invalid email addresses', () => { @@ -47,6 +50,14 @@ describe('UserDataFormatter', () => { expect( formatter.formatEmailAddress('jefferson.Loves.hiking@googlemail.com'), ).to.equal('jeffersonloveshiking@googlemail.com'); + expect( + formatter.formatEmailAddress('Cloudy.SanFrancisco+shopping@gmail.com'), + ).to.equal('cloudysanfrancisco@gmail.com'); + expect( + formatter.formatEmailAddress( + 'Cloudy.SanFrancisco+shopping@googlemail.com', + ), + ).to.equal('cloudysanfrancisco@googlemail.com'); }); }); From c6a5ca1d40169f1572f6174deeed9327874948dc Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Tue, 2 Jun 2026 14:01:15 +0000 Subject: [PATCH 2/2] Update version of util library --- package-lock.json | 4 ++-- samples/package.json | 2 +- util/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f29ecf..4adc10d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4986,7 +4986,7 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@google-ads/data-manager-util": "^0.2.0", + "@google-ads/data-manager-util": "^0.3.0", "@google-ads/datamanager": "^0.1.0", "csv-parser": "^3.0.0", "yargs": "^17.7.2" @@ -5001,7 +5001,7 @@ }, "util": { "name": "@google-ads/data-manager-util", - "version": "0.2.0", + "version": "0.3.0", "license": "Apache-2.0", "devDependencies": { "@types/chai": "^4.3.0", diff --git a/samples/package.json b/samples/package.json index e0d64d4..718bef7 100644 --- a/samples/package.json +++ b/samples/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "@google-ads/datamanager": "^0.1.0", - "@google-ads/data-manager-util": "^0.2.0", + "@google-ads/data-manager-util": "^0.3.0", "csv-parser": "^3.0.0", "yargs": "^17.7.2" }, diff --git a/util/package.json b/util/package.json index 337ef45..e07fca8 100644 --- a/util/package.json +++ b/util/package.json @@ -1,6 +1,6 @@ { "name": "@google-ads/data-manager-util", - "version": "0.2.0", + "version": "0.3.0", "description": "A utility library for the Data Manager API for Node.js.", "main": "dist/src/index.js", "types": "dist/src/index.d.ts",