Skip to content

Commit 98f4274

Browse files
authored
Merge pull request #12 from AppsFlyerSDK/DELIVERY-62168/semverBugFix
Delivery 62168/semver bug fix
2 parents d41f1eb + db523b7 commit 98f4274

File tree

7 files changed

+3946
-10
lines changed

7 files changed

+3946
-10
lines changed

__tests__/utils/utils.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {isVersionGreaterThanOrEqualTo} from "../../src/platforms/utils/utils.js"
2+
3+
const MINIMUM_OS_VERSION_SUPPORTED = "4.0.0"
4+
let falseDataSet = ["1.0.0", "1.0", "2.0", "3.99", "3.9", "0", "0.0", null, undefined, "", 0, 2]
5+
let trueDataSet = ["4", "4.0.0", "4.1", "4.0.1", "5", "5.0", "5.0.0", 4, 4.1, 5, 5.5, 44]
6+
7+
8+
it.each(falseDataSet)("false response for isVersionGreaterThanOrEqualTo", async (version) => {
9+
console.log(version)
10+
expect(isVersionGreaterThanOrEqualTo(version, MINIMUM_OS_VERSION_SUPPORTED)).toEqual(false);
11+
})
12+
13+
it.each(trueDataSet)("true response for isVersionGreaterThanOrEqualTo", async (version) => {
14+
console.log(version)
15+
expect(isVersionGreaterThanOrEqualTo(version, MINIMUM_OS_VERSION_SUPPORTED)).toEqual(true);
16+
})
17+
18+
19+

dist/appsflyerSdk.bundle.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "appsflyer-html5-ctv-sdk",
3-
"version": "0.0.2",
3+
"version": "0.0.3",
44
"description": "AppsFlyer SDK for TV application",
55
"type": "module",
66
"directories": {
@@ -22,15 +22,13 @@
2222
"author": "appsflyer",
2323
"license": "ISC",
2424
"devDependencies": {
25-
"@babel/preset-env": "~7.18.9",
25+
"@babel/preset-env": "7.23.2",
2626
"babel-jest": "~28.1.3",
2727
"babel-loader": "~8.2.5",
28-
"babel-preset-es2015": "~6.24.1",
2928
"eslint": "~8.20.0",
3029
"eslint-config-google": "~0.14.0",
3130
"jest": "~28.1.3",
3231
"jest-fetch-mock": "~3.0.3",
33-
"semver": "~7.3.8",
3432
"webpack": "~5.84.1",
3533
"webpack-cli": "~4.10.0"
3634
}

src/AppsFlyerSDK.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import LG from './platforms/lg.js';
44
import Vizio from './platforms/vizio.js';
55
import Vidaa from './platforms/vidaa.js';
66
import {INVALID_SDK, DEVICE_OS_NOT_SUPPORT, NO_PLATFORM_FOUND} from './core/utils/constants.js';
7+
import {MINIMUM_OS_VERSION_SUPPORTED} from './platforms/utils/constants.js';
8+
import {isVersionGreaterThanOrEqualTo} from './platforms/utils/utils.js';
79
import {Platform} from './platforms/utils/types.js';
8-
import semver from 'semver';
910

1011
const PLATFORM_MAPPING = [Samsung, LG, Vizio, Vidaa]
1112

@@ -81,9 +82,9 @@ class AppsFlyerSDK {
8182
setCustomerUserId(userId) {
8283
return this.isSDKValid() ? this.appsflyerInstance.setCustomerUserId(userId) : new Error(INVALID_SDK);
8384
}
84-
85+
8586
async validateOSVersion(os, osVersion){
86-
if((os == Platform.Tizen || os == Platform.Webos) && semver.gte(semver.coerce(osVersion), '4.0.0')){
87+
if((os == Platform.Tizen || os == Platform.Webos) && isVersionGreaterThanOrEqualTo(osVersion, MINIMUM_OS_VERSION_SUPPORTED)){
8788
return true
8889
}else{
8990
let raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);

src/platforms/utils/constants.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export const DEFAULT_DEVICE_ID = "00000000-0000-0000-0000-000000000000";
2-
3-
export const DEFAULT_APP_VERSION = '0.0.0';
2+
export const DEFAULT_APP_VERSION = '0.0.0';
3+
export const MINIMUM_OS_VERSION_SUPPORTED= '4.0.0'

src/platforms/utils/utils.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
export const isVersionGreaterThanOrEqualTo = (versionA, versionB) => {
2+
const isValidVersion = (version) => {
3+
return version !== null && version !== undefined && version !== "";
4+
};
5+
6+
if (!isValidVersion(versionA)) {
7+
return false;
8+
}
9+
10+
const normalizeVersion = (v) => v.split('.').map(part => parseInt(part, 10)); // Normalize version string
11+
12+
const compareVersions = (partsA, partsB) => {
13+
const maxLength = Math.max(partsA.length, partsB.length);
14+
15+
for (let i = 0; i < maxLength; i++) {
16+
const partA = partsA[i] || 0; // Use 0 if no more parts in version
17+
const partB = partsB[i] || 0; // Use 0 if no more parts in version
18+
19+
if (partA > partB) {
20+
return true;
21+
} else if (partA < partB) {
22+
return false;
23+
}
24+
}
25+
26+
return true; // Versions are equal
27+
};
28+
29+
const partsA = normalizeVersion(typeof versionA === 'number' ? versionA.toString() : versionA);
30+
const partsB = normalizeVersion(versionB);
31+
32+
return compareVersions(partsA, partsB);
33+
};

0 commit comments

Comments
 (0)