@cloudcome/utils-core
Version:
cloudcome core utils
1 lines • 2.72 kB
Source Map (JSON)
{"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 - 要转换的数字\n * @returns 安全的数字(如果输入为NaN则返回0)\n */\nfunction internal_numerical(n?: number) {\n return Number.isNaN(n) || isUndefined(n) ? 0 : n;\n}\n\n/**\n * 将语义化版本号字符串解析为VersionObject对象\n * @param version - 要解析的版本号字符串 (例如 \"1.2.3\")\n * @returns 包含主版本号、次版本号和修订号的对象\n * @throws 如果版本号字符串格式无效将抛出错误\n */\nexport function versionParse(version: string): VersionObject {\n const [major, minor, patch] = version.split('.').map(Number);\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"],"mappings":";;;AAyBA,SAAS,mBAAmB,GAAY;AACtC,SAAO,OAAO,MAAM,CAAC,KAAKA,KAAAA,YAAY,CAAC,IAAI,IAAI;AACjD;AAQO,SAAS,aAAa,SAAgC;AACrD,QAAA,CAAC,OAAO,OAAO,KAAK,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AACpD,SAAA;AAAA,IACL,OAAO,mBAAmB,KAAK;AAAA,IAC/B,OAAO,mBAAmB,KAAK;AAAA,IAC/B,OAAO,mBAAmB,KAAK;AAAA,EACjC;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;;;"}