Skip to content

Commit f49f64b

Browse files
author
uzair-folio3
committed
Update index.ts
1 parent d0ea6bf commit f49f64b

File tree

1 file changed

+49
-56
lines changed
  • packages/optimizely-sdk/lib/utils/semantic_version

1 file changed

+49
-56
lines changed

packages/optimizely-sdk/lib/utils/semantic_version/index.ts

Lines changed: 49 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -20,77 +20,77 @@ const MODULE_NAME = 'SEMANTIC VERSION';
2020
const logger = getLogger();
2121

2222
/**
23-
* Evaluate if provided string is number only
24-
* @param {unknown} content
25-
* @return {boolean} true if the string is number only
26-
*
27-
*/
23+
* Evaluate if provided string is number only
24+
* @param {unknown} content
25+
* @return {boolean} true if the string is number only
26+
*
27+
*/
2828
function isNumber(content: string): boolean {
2929
return /^\d+$/.test(content);
3030
}
3131

3232
/**
33-
* Evaluate if provided version contains pre-release "-"
34-
* @param {unknown} version
35-
* @return {boolean} true if the version contains "-" and meets condition
36-
*
37-
*/
33+
* Evaluate if provided version contains pre-release "-"
34+
* @param {unknown} version
35+
* @return {boolean} true if the version contains "-" and meets condition
36+
*
37+
*/
3838
function isPreReleaseVersion(version: string): boolean {
3939
const preReleaseIndex = version.indexOf(VERSION_TYPE.PRE_RELEASE_VERSION_DELIMITER);
4040
const buildIndex = version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER);
4141

4242
if (preReleaseIndex < 0) {
43-
return false;
43+
return false;
4444
}
4545

46-
if (buildIndex < 0 ) {
47-
return true;
46+
if (buildIndex < 0) {
47+
return true;
4848
}
4949

5050
return preReleaseIndex < buildIndex;
5151
}
52-
52+
5353
/**
5454
* Evaluate if provided version contains build "+"
5555
* @param {unknown} version
5656
* @return {boolean} true if the version contains "+" and meets condition
57-
*
57+
*
5858
*/
5959
function isBuildVersion(version: string): boolean {
6060
const preReleaseIndex = version.indexOf(VERSION_TYPE.PRE_RELEASE_VERSION_DELIMITER);
6161
const buildIndex = version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER);
6262

6363
if (buildIndex < 0) {
64-
return false;
64+
return false;
6565
}
6666

67-
if (preReleaseIndex < 0 ) {
68-
return true;
67+
if (preReleaseIndex < 0) {
68+
return true;
6969
}
7070

7171
return buildIndex < preReleaseIndex;
7272
}
73-
73+
7474
/**
7575
* check if there is any white spaces " " in version
7676
* @param {unknown} version
7777
* @return {boolean} true if the version contains " "
78-
*
78+
*
7979
*/
8080
function hasWhiteSpaces(version: string): boolean {
8181
return /\s/.test(version);
8282
}
83-
83+
8484
/**
8585
* split version in parts
8686
* @param {unknown} version
8787
* @return {boolean} The array of version split into smaller parts i.e major, minor, patch etc
88-
* null if given version is in invalid format
88+
* null if given version is in invalid format
8989
*/
9090
function splitVersion(version: string): string[] | null {
9191
let targetPrefix = version;
9292
let targetSuffix = '';
93-
93+
9494
// check that version shouldn't have white space
9595
if (hasWhiteSpaces(version)) {
9696
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
@@ -101,43 +101,41 @@ function splitVersion(version: string): string[] | null {
101101
if (isPreReleaseVersion(version)) {
102102
targetPrefix = version.substring(0, version.indexOf(VERSION_TYPE.PRE_RELEASE_VERSION_DELIMITER));
103103
targetSuffix = version.substring(version.indexOf(VERSION_TYPE.PRE_RELEASE_VERSION_DELIMITER) + 1);
104-
}
105-
else if (isBuildVersion(version)) {
106-
targetPrefix = version.substring(0, version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER));
107-
targetSuffix = version.substring(version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER) + 1);
104+
} else if (isBuildVersion(version)) {
105+
targetPrefix = version.substring(0, version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER));
106+
targetSuffix = version.substring(version.indexOf(VERSION_TYPE.BUILD_VERSION_DELIMITER) + 1);
108107
}
109108

110109
// check dot counts in target_prefix
111110
if (typeof targetPrefix !== 'string' || typeof targetSuffix !== 'string') {
112-
return null;
111+
return null;
113112
}
114113

115-
const dotCount = targetPrefix.split(".").length - 1;
116-
if (dotCount > 2){
117-
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
118-
return null;
114+
const dotCount = targetPrefix.split('.').length - 1;
115+
if (dotCount > 2) {
116+
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
117+
return null;
119118
}
120119

121-
const targetVersionParts = targetPrefix.split(".")
120+
const targetVersionParts = targetPrefix.split('.');
122121
if (targetVersionParts.length != dotCount + 1) {
123-
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
124-
return null;
122+
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
123+
return null;
125124
}
126-
for (const part of targetVersionParts){
127-
if (!isNumber(part)) {
125+
for (const part of targetVersionParts) {
126+
if (!isNumber(part)) {
128127
logger.warn(LOG_MESSAGES.UNKNOWN_MATCH_TYPE, MODULE_NAME, version);
129128
return null;
129+
}
130130
}
131-
}
132-
131+
133132
if (targetSuffix) {
134-
targetVersionParts.push(targetSuffix)
133+
targetVersionParts.push(targetSuffix);
135134
}
136135

137-
return targetVersionParts
138-
136+
return targetVersionParts;
139137
}
140-
138+
141139
/**
142140
* Compare user version with condition version
143141
* @param {string} conditionsVersion
@@ -159,24 +157,20 @@ export function compareVersion(conditionsVersion: string, userProvidedVersion: s
159157

160158
for (let idx = 0; idx < conditionsVersionParts.length; idx++) {
161159
if (userVersionPartsLen <= idx) {
162-
return isPreReleaseVersion(conditionsVersion) || isBuildVersion(conditionsVersion) ? 1 : -1;
163-
}
164-
else if (!isNumber(userVersionParts[idx])) {
160+
return isPreReleaseVersion(conditionsVersion) || isBuildVersion(conditionsVersion) ? 1 : -1;
161+
} else if (!isNumber(userVersionParts[idx])) {
165162
if (userVersionParts[idx] < conditionsVersionParts[idx]) {
166163
return isPreReleaseVersion(conditionsVersion) && !isPreReleaseVersion(userProvidedVersion) ? 1 : -1;
167-
}
168-
else if (userVersionParts[idx] > conditionsVersionParts[idx]) {
164+
} else if (userVersionParts[idx] > conditionsVersionParts[idx]) {
169165
return !isPreReleaseVersion(conditionsVersion) && isPreReleaseVersion(userProvidedVersion) ? -1 : 1;
170166
}
171-
}
172-
else {
167+
} else {
173168
const userVersionPart = parseInt(userVersionParts[idx]);
174169
const conditionsVersionPart = parseInt(conditionsVersionParts[idx]);
175170
if (userVersionPart > conditionsVersionPart) {
176-
return 1;
177-
}
178-
else if (userVersionPart < conditionsVersionPart) {
179-
return -1;
171+
return 1;
172+
} else if (userVersionPart < conditionsVersionPart) {
173+
return -1;
180174
}
181175
}
182176
}
@@ -185,7 +179,6 @@ export function compareVersion(conditionsVersion: string, userProvidedVersion: s
185179
if (isPreReleaseVersion(userProvidedVersion) && !isPreReleaseVersion(conditionsVersion)) {
186180
return -1;
187181
}
188-
182+
189183
return 0;
190184
}
191-

0 commit comments

Comments
 (0)