@cloudcome/utils-core 1.18.0 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/version.cjs +15 -6
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +15 -6
- package/dist/version.mjs.map +1 -1
- package/package.json +1 -1
package/dist/version.cjs
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const regexp = require("./regexp.cjs");
|
|
3
4
|
const type = require("./type.cjs");
|
|
4
|
-
function internal_numerical(
|
|
5
|
-
|
|
5
|
+
function internal_numerical(pos, str) {
|
|
6
|
+
if (type.isUndefined(str)) throw new Error(`${pos}不存在`);
|
|
7
|
+
if (!regexp.isInteger(str)) throw new Error(`${pos}不是整数`);
|
|
8
|
+
const num = Number(str);
|
|
9
|
+
if (num < 0) throw new Error(`${pos}不是正整数`);
|
|
10
|
+
return num;
|
|
6
11
|
}
|
|
7
12
|
function versionParse(version) {
|
|
8
|
-
const
|
|
13
|
+
const parts = version.split(".");
|
|
14
|
+
if (parts.length !== 3) {
|
|
15
|
+
throw new Error("版本号格式不正确");
|
|
16
|
+
}
|
|
17
|
+
const [major, minor, patch] = parts;
|
|
9
18
|
return {
|
|
10
|
-
major: internal_numerical(major),
|
|
11
|
-
minor: internal_numerical(minor),
|
|
12
|
-
patch: internal_numerical(patch)
|
|
19
|
+
major: internal_numerical("主版本号", major),
|
|
20
|
+
minor: internal_numerical("次版本号", minor),
|
|
21
|
+
patch: internal_numerical("修订号", patch)
|
|
13
22
|
};
|
|
14
23
|
}
|
|
15
24
|
function versionCompare(version1, version2) {
|
package/dist/version.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["import { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param n -
|
|
1
|
+
{"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["import { isInteger, isNumerical } from './regexp';\nimport { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param pos - 位置描述,用于错误提示\n * @param str - 要转换的数字字符串\n * @returns 安全的数字(如果输入为NaN则返回0)\n */\nfunction internal_numerical(pos: string, str?: string) {\n if (isUndefined(str)) throw new Error(`${pos}不存在`);\n if (!isInteger(str)) throw new Error(`${pos}不是整数`);\n const num = Number(str);\n if (num < 0) throw new Error(`${pos}不是正整数`);\n return num;\n}\n\n/**\n * 将语义化版本号字符串解析为VersionObject对象\n * @param version - 要解析的版本号字符串 (例如 \"1.2.3\")\n * @returns 包含主版本号、次版本号和修订号的对象\n * @throws 如果版本号字符串格式无效将抛出错误\n */\nexport function versionParse(version: string): VersionObject {\n const parts = version.split('.');\n\n if (parts.length !== 3) {\n throw new Error('版本号格式不正确');\n }\n\n const [major, minor, patch] = parts;\n\n return {\n major: internal_numerical('主版本号', major),\n minor: internal_numerical('次版本号', minor),\n patch: internal_numerical('修订号', patch),\n };\n}\n\n/**\n * 比较两个语义化版本号字符串\n * @param version1 - 要比较的第一个版本号字符串\n * @param version2 - 要比较的第二个版本号字符串\n * @returns 如果version1较大返回1,version2较大返回-1,相等返回0\n * @throws 如果任一版本号字符串格式无效将抛出错误\n */\nexport function versionCompare(version1: string, version2: string): number {\n const vo1 = versionParse(version1);\n const vo2 = versionParse(version2);\n const order: (keyof VersionObject)[] = ['major', 'minor', 'patch'];\n\n for (const key of order) {\n const n1 = vo1[key];\n const n2 = vo2[key];\n\n if (n1 > n2) {\n return 1;\n }\n\n if (n1 < n2) {\n return -1;\n }\n }\n\n return 0;\n}\n"],"names":["isUndefined","isInteger"],"mappings":";;;;AA2BA,SAAS,mBAAmB,KAAa,KAAc;AACjD,MAAAA,KAAA,YAAY,GAAG,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,KAAK;AAC7C,MAAA,CAACC,OAAAA,UAAU,GAAG,SAAS,IAAI,MAAM,GAAG,GAAG,MAAM;AAC3C,QAAA,MAAM,OAAO,GAAG;AACtB,MAAI,MAAM,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,OAAO;AACnC,SAAA;AACT;AAQO,SAAS,aAAa,SAAgC;AACrD,QAAA,QAAQ,QAAQ,MAAM,GAAG;AAE3B,MAAA,MAAM,WAAW,GAAG;AAChB,UAAA,IAAI,MAAM,UAAU;AAAA,EAAA;AAG5B,QAAM,CAAC,OAAO,OAAO,KAAK,IAAI;AAEvB,SAAA;AAAA,IACL,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,OAAO,KAAK;AAAA,EACxC;AACF;AASgB,SAAA,eAAe,UAAkB,UAA0B;AACnE,QAAA,MAAM,aAAa,QAAQ;AAC3B,QAAA,MAAM,aAAa,QAAQ;AACjC,QAAM,QAAiC,CAAC,SAAS,SAAS,OAAO;AAEjE,aAAW,OAAO,OAAO;AACjB,UAAA,KAAK,IAAI,GAAG;AACZ,UAAA,KAAK,IAAI,GAAG;AAElB,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAGT,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;;;"}
|
package/dist/version.mjs
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
+
import { isInteger } from "./regexp.mjs";
|
|
1
2
|
import { isUndefined } from "./type.mjs";
|
|
2
|
-
function internal_numerical(
|
|
3
|
-
|
|
3
|
+
function internal_numerical(pos, str) {
|
|
4
|
+
if (isUndefined(str)) throw new Error(`${pos}不存在`);
|
|
5
|
+
if (!isInteger(str)) throw new Error(`${pos}不是整数`);
|
|
6
|
+
const num = Number(str);
|
|
7
|
+
if (num < 0) throw new Error(`${pos}不是正整数`);
|
|
8
|
+
return num;
|
|
4
9
|
}
|
|
5
10
|
function versionParse(version) {
|
|
6
|
-
const
|
|
11
|
+
const parts = version.split(".");
|
|
12
|
+
if (parts.length !== 3) {
|
|
13
|
+
throw new Error("版本号格式不正确");
|
|
14
|
+
}
|
|
15
|
+
const [major, minor, patch] = parts;
|
|
7
16
|
return {
|
|
8
|
-
major: internal_numerical(major),
|
|
9
|
-
minor: internal_numerical(minor),
|
|
10
|
-
patch: internal_numerical(patch)
|
|
17
|
+
major: internal_numerical("主版本号", major),
|
|
18
|
+
minor: internal_numerical("次版本号", minor),
|
|
19
|
+
patch: internal_numerical("修订号", patch)
|
|
11
20
|
};
|
|
12
21
|
}
|
|
13
22
|
function versionCompare(version1, version2) {
|
package/dist/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["import { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param n -
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["import { isInteger, isNumerical } from './regexp';\nimport { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param pos - 位置描述,用于错误提示\n * @param str - 要转换的数字字符串\n * @returns 安全的数字(如果输入为NaN则返回0)\n */\nfunction internal_numerical(pos: string, str?: string) {\n if (isUndefined(str)) throw new Error(`${pos}不存在`);\n if (!isInteger(str)) throw new Error(`${pos}不是整数`);\n const num = Number(str);\n if (num < 0) throw new Error(`${pos}不是正整数`);\n return num;\n}\n\n/**\n * 将语义化版本号字符串解析为VersionObject对象\n * @param version - 要解析的版本号字符串 (例如 \"1.2.3\")\n * @returns 包含主版本号、次版本号和修订号的对象\n * @throws 如果版本号字符串格式无效将抛出错误\n */\nexport function versionParse(version: string): VersionObject {\n const parts = version.split('.');\n\n if (parts.length !== 3) {\n throw new Error('版本号格式不正确');\n }\n\n const [major, minor, patch] = parts;\n\n return {\n major: internal_numerical('主版本号', major),\n minor: internal_numerical('次版本号', minor),\n patch: internal_numerical('修订号', patch),\n };\n}\n\n/**\n * 比较两个语义化版本号字符串\n * @param version1 - 要比较的第一个版本号字符串\n * @param version2 - 要比较的第二个版本号字符串\n * @returns 如果version1较大返回1,version2较大返回-1,相等返回0\n * @throws 如果任一版本号字符串格式无效将抛出错误\n */\nexport function versionCompare(version1: string, version2: string): number {\n const vo1 = versionParse(version1);\n const vo2 = versionParse(version2);\n const order: (keyof VersionObject)[] = ['major', 'minor', 'patch'];\n\n for (const key of order) {\n const n1 = vo1[key];\n const n2 = vo2[key];\n\n if (n1 > n2) {\n return 1;\n }\n\n if (n1 < n2) {\n return -1;\n }\n }\n\n return 0;\n}\n"],"names":[],"mappings":";;AA2BA,SAAS,mBAAmB,KAAa,KAAc;AACjD,MAAA,YAAY,GAAG,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,KAAK;AAC7C,MAAA,CAAC,UAAU,GAAG,SAAS,IAAI,MAAM,GAAG,GAAG,MAAM;AAC3C,QAAA,MAAM,OAAO,GAAG;AACtB,MAAI,MAAM,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,OAAO;AACnC,SAAA;AACT;AAQO,SAAS,aAAa,SAAgC;AACrD,QAAA,QAAQ,QAAQ,MAAM,GAAG;AAE3B,MAAA,MAAM,WAAW,GAAG;AAChB,UAAA,IAAI,MAAM,UAAU;AAAA,EAAA;AAG5B,QAAM,CAAC,OAAO,OAAO,KAAK,IAAI;AAEvB,SAAA;AAAA,IACL,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,OAAO,KAAK;AAAA,EACxC;AACF;AASgB,SAAA,eAAe,UAAkB,UAA0B;AACnE,QAAA,MAAM,aAAa,QAAQ;AAC3B,QAAA,MAAM,aAAa,QAAQ;AACjC,QAAM,QAAiC,CAAC,SAAS,SAAS,OAAO;AAEjE,aAAW,OAAO,OAAO;AACjB,UAAA,KAAK,IAAI,GAAG;AACZ,UAAA,KAAK,IAAI,GAAG;AAElB,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAGT,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;"}
|