From ab299a23b7bc75d50ab0b02205809cca274ba63d Mon Sep 17 00:00:00 2001 From: Suryaansh Chawla Date: Fri, 1 Aug 2025 17:03:52 +0530 Subject: [PATCH] Zalo integration in UAParser (#1) (#792) --- src/enums/ua-parser-enums.d.ts | 1 + src/enums/ua-parser-enums.js | 3 ++- src/main/ua-parser.js | 2 ++ test/data/ua/browser/browser-all.json | 22 ++++++++++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/enums/ua-parser-enums.d.ts b/src/enums/ua-parser-enums.d.ts index a8070fe..933bccb 100644 --- a/src/enums/ua-parser-enums.d.ts +++ b/src/enums/ua-parser-enums.d.ts @@ -154,6 +154,7 @@ export const Browser: Readonly<{ WHALE: "Whale"; WOLVIC: "Wolvic"; YANDEX: "Yandex"; + ZALO: "Zalo"; }>; export const BrowserType: Readonly<{ CRAWLER: "crawler"; diff --git a/src/enums/ua-parser-enums.js b/src/enums/ua-parser-enums.js index ecedb6d..828e9e8 100644 --- a/src/enums/ua-parser-enums.js +++ b/src/enums/ua-parser-enums.js @@ -158,7 +158,8 @@ const Browser = Object.freeze({ WEIBO: 'Weibo', WHALE: 'Whale', WOLVIC: 'Wolvic', - YANDEX: 'Yandex' + YANDEX: 'Yandex', + ZALO: 'Zalo' // TODO : test! }); diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 0d5eb3d..4051869 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -455,6 +455,8 @@ ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [ /\[(linkedin)app\]/i // LinkedIn App for iOS & Android ], [NAME, [TYPE, INAPP]], [ + /(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i // Zalo + ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [ /(chromium)[\/ ]([-\w\.]+)/i // Chromium ], [NAME, VERSION], [ diff --git a/test/data/ua/browser/browser-all.json b/test/data/ua/browser/browser-all.json index 9f39de9..a2a6379 100644 --- a/test/data/ua/browser/browser-all.json +++ b/test/data/ua/browser/browser-all.json @@ -2695,5 +2695,27 @@ "major" : "10", "type" : "inapp" } + }, + { + "desc" : "Zalo on iOS", + "ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Zalo/20.05.01 Mobile/15E148", + "expect" : + { + "name" : "Zalo", + "version" : "20.05.01", + "major" : "20", + "type" : "inapp" + } + }, + { + "desc" : "Zalo on Android", + "ua" : "Mozilla/5.0 (Linux; Android 10; Vsmart Live Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 Zalo/20.04.02.r1", + "expect" : + { + "name" : "Zalo", + "version" : "20.04.02.r1", + "major" : "20", + "type" : "inapp" + } } ] \ No newline at end of file