From db1612401f1d135b49b12be185d46f121f50af48 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 14 Sep 2024 12:38:51 +0700 Subject: [PATCH] Add new helper method: `isFromEU()` to detect whether user comes from an EU country --- package-lock.json | 22 ++++++++++++++++++++++ package.json | 3 +++ script/build-esm.js | 3 ++- src/helpers/ua-parser-helpers.d.ts | 2 ++ src/helpers/ua-parser-helpers.js | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 7149841..c1e3251 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,9 @@ } ], "license": "AGPL-3.0-or-later", + "dependencies": { + "detect-europe-js": "^0.1.1" + }, "bin": { "ua-parser-js": "script/cli.js" }, @@ -1664,6 +1667,25 @@ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, + "node_modules/detect-europe-js": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/detect-europe-js/-/detect-europe-js-0.1.1.tgz", + "integrity": "sha512-+bUXDf+tI3L4dcEuRdAFa44Amx9aEaJzoZssx7Xis4H1bXWc5fAcOP850BOj0wJPRzOdovOuOVEvrg6T+GflZA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ] + }, "node_modules/detect-libc": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", diff --git a/package.json b/package.json index 618a794..6a7d31a 100755 --- a/package.json +++ b/package.json @@ -210,6 +210,9 @@ "test:mocha": "mocha test/mocha*js", "test:playwright": "playwright test" }, + "dependencies": { + "detect-europe-js": "^0.1.1" + }, "devDependencies": { "@babel/parser": "7.15.8", "@babel/traverse": "7.23.2", diff --git a/script/build-esm.js b/script/build-esm.js index cd75238..68b8258 100755 --- a/script/build-esm.js +++ b/script/build-esm.js @@ -7,7 +7,8 @@ const generateMJS = (module) => { let text = fs.readFileSync(src, 'utf-8'); replacements.push( - [/const (.+?)\s*=\s*require\(\'(.+)\'\)/ig, 'import $1 from \'$2.mjs\''], + [/const (.+?)\s*=\s*require\(\'\.(.+)\'\)/ig, 'import $1 from \'$2.mjs\''], + [/const (.+?)\s*=\s*require\(\'(.+)\'\)/ig, 'import $1 from \'$2\''], [/module\.exports =/ig, 'export'] ); replacements.forEach(rep => { diff --git a/src/helpers/ua-parser-helpers.d.ts b/src/helpers/ua-parser-helpers.d.ts index c58fc14..6a97658 100644 --- a/src/helpers/ua-parser-helpers.d.ts +++ b/src/helpers/ua-parser-helpers.d.ts @@ -7,6 +7,7 @@ import { IResult } from "../main/ua-parser"; declare function getDeviceVendor(model: string): string | undefined; declare function isAppleSilicon(res: IResult): boolean; declare function isChromeFamily(res: IResult): boolean; +declare function isFromEU(): boolean; declare function isFrozenUA(ua: string): boolean; declare function isStandalonePWA(): boolean; @@ -14,6 +15,7 @@ export { getDeviceVendor, isAppleSilicon, isChromeFamily, + isFromEU, isFrozenUA, isStandalonePWA } \ No newline at end of file diff --git a/src/helpers/ua-parser-helpers.js b/src/helpers/ua-parser-helpers.js index e0729c9..7211612 100644 --- a/src/helpers/ua-parser-helpers.js +++ b/src/helpers/ua-parser-helpers.js @@ -9,6 +9,7 @@ const { CPU, OS, Engine } = require('../enums/ua-parser-enums'); const { UAParser } = require('../main/ua-parser'); +const { isFromEU } = require('detect-europe-js'); const getDeviceVendor = (model) => UAParser(`Mozilla/5.0 (Linux; Android 10; ${model}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36`).device.vendor; @@ -50,6 +51,7 @@ module.exports = { getDeviceVendor, isAppleSilicon, isChromeFamily, + isFromEU, isFrozenUA, isStandalonePWA } \ No newline at end of file