@xiaozhi-client/version 1.10.7 → 1.10.8-beta.7
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/package.json +1 -1
- package/project.json +61 -0
- package/dist/index.d.ts +0 -72
- package/dist/index.js +0 -158
- package/dist/index.js.map +0 -1
package/package.json
CHANGED
package/project.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "version",
|
|
3
|
+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
+
"sourceRoot": "packages/version/src",
|
|
5
|
+
"projectType": "library",
|
|
6
|
+
"targets": {
|
|
7
|
+
"build": {
|
|
8
|
+
"executor": "nx:run-commands",
|
|
9
|
+
"options": {
|
|
10
|
+
"command": "tsup",
|
|
11
|
+
"cwd": "packages/version"
|
|
12
|
+
},
|
|
13
|
+
"outputs": ["{workspaceRoot}/packages/version/dist"]
|
|
14
|
+
},
|
|
15
|
+
"test": {
|
|
16
|
+
"executor": "nx:run-commands",
|
|
17
|
+
"options": {
|
|
18
|
+
"command": "vitest run --coverage.enabled=false",
|
|
19
|
+
"cwd": "packages/version"
|
|
20
|
+
},
|
|
21
|
+
"outputs": ["{workspaceRoot}/coverage"]
|
|
22
|
+
},
|
|
23
|
+
"test:watch": {
|
|
24
|
+
"executor": "nx:run-commands",
|
|
25
|
+
"options": {
|
|
26
|
+
"command": "vitest",
|
|
27
|
+
"cwd": "packages/version"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"test:coverage": {
|
|
31
|
+
"executor": "nx:run-commands",
|
|
32
|
+
"options": {
|
|
33
|
+
"command": "vitest run --coverage",
|
|
34
|
+
"cwd": "packages/version"
|
|
35
|
+
},
|
|
36
|
+
"outputs": ["{workspaceRoot}/coverage"]
|
|
37
|
+
},
|
|
38
|
+
"type-check": {
|
|
39
|
+
"executor": "nx:run-commands",
|
|
40
|
+
"options": {
|
|
41
|
+
"command": "tsc --noEmit",
|
|
42
|
+
"cwd": "packages/version"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"dev": {
|
|
46
|
+
"executor": "nx:run-commands",
|
|
47
|
+
"options": {
|
|
48
|
+
"command": "tsup --watch",
|
|
49
|
+
"cwd": "packages/version"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"nx-release-publish": {
|
|
53
|
+
"executor": "nx:run-commands",
|
|
54
|
+
"options": {
|
|
55
|
+
"command": "../../scripts/publish-with-tag.sh",
|
|
56
|
+
"cwd": "packages/version"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"tags": ["type:lib", "scope:version"]
|
|
61
|
+
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 版本号常量(构建时注入)
|
|
3
|
-
*
|
|
4
|
-
* 如果构建时能读取到 package.json,则为真实版本号
|
|
5
|
-
* 否则为占位符,运行时从 package.json 读取
|
|
6
|
-
*/
|
|
7
|
-
declare const VERSION: string;
|
|
8
|
-
declare const APP_NAME: string;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 版本管理工具
|
|
12
|
-
*
|
|
13
|
-
* 提供版本号获取、比较、验证等功能
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* 版本信息接口
|
|
17
|
-
*/
|
|
18
|
-
interface VersionInfo {
|
|
19
|
-
version: string;
|
|
20
|
-
name?: string;
|
|
21
|
-
description?: string;
|
|
22
|
-
author?: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 版本工具类
|
|
26
|
-
*/
|
|
27
|
-
declare class VersionUtils {
|
|
28
|
-
private static cachedVersion;
|
|
29
|
-
private static cachedVersionInfo;
|
|
30
|
-
/**
|
|
31
|
-
* 获取版本号
|
|
32
|
-
*
|
|
33
|
-
* 优先使用构建时注入的版本号常量
|
|
34
|
-
* 如果是占位符,则运行时从 package.json 读取
|
|
35
|
-
*/
|
|
36
|
-
static getVersion(): string;
|
|
37
|
-
/**
|
|
38
|
-
* 获取完整版本信息
|
|
39
|
-
*/
|
|
40
|
-
static getVersionInfo(): VersionInfo;
|
|
41
|
-
/**
|
|
42
|
-
* 比较版本号
|
|
43
|
-
*
|
|
44
|
-
* @param version1 第一个版本号
|
|
45
|
-
* @param version2 第二个版本号
|
|
46
|
-
* @returns 返回值:1 表示 version1 > version2,-1 表示 version1 < version2,0 表示相等
|
|
47
|
-
*/
|
|
48
|
-
static compareVersions(version1: string, version2: string): number;
|
|
49
|
-
/**
|
|
50
|
-
* 检查版本是否有效
|
|
51
|
-
*
|
|
52
|
-
* @param version 版本号字符串
|
|
53
|
-
* @returns 是否为有效的语义化版本号
|
|
54
|
-
*/
|
|
55
|
-
static isValidVersion(version: string): boolean;
|
|
56
|
-
/**
|
|
57
|
-
* 运行时从 package.json 读取版本号
|
|
58
|
-
*/
|
|
59
|
-
private static getRuntimeVersion;
|
|
60
|
-
/**
|
|
61
|
-
* 运行时从 package.json 读取完整版本信息
|
|
62
|
-
*/
|
|
63
|
-
private static getRuntimeVersionInfo;
|
|
64
|
-
/**
|
|
65
|
-
* 清除版本缓存
|
|
66
|
-
*
|
|
67
|
-
* 主要用于测试场景
|
|
68
|
-
*/
|
|
69
|
-
static clearCache(): void;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export { APP_NAME, VERSION, type VersionInfo, VersionUtils };
|
package/dist/index.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
|
-
// src/version-constants.ts
|
|
5
|
-
var VERSION = "1.10.7";
|
|
6
|
-
var APP_NAME = "xiaozhi-client";
|
|
7
|
-
|
|
8
|
-
// src/VersionUtils.ts
|
|
9
|
-
import fs from "fs";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { fileURLToPath } from "url";
|
|
12
|
-
var VersionUtils = class _VersionUtils {
|
|
13
|
-
static {
|
|
14
|
-
__name(this, "VersionUtils");
|
|
15
|
-
}
|
|
16
|
-
static cachedVersion = null;
|
|
17
|
-
static cachedVersionInfo = null;
|
|
18
|
-
/**
|
|
19
|
-
* 获取版本号
|
|
20
|
-
*
|
|
21
|
-
* 优先使用构建时注入的版本号常量
|
|
22
|
-
* 如果是占位符,则运行时从 package.json 读取
|
|
23
|
-
*/
|
|
24
|
-
static getVersion() {
|
|
25
|
-
if (VERSION === "__VERSION__") {
|
|
26
|
-
return _VersionUtils.getRuntimeVersion();
|
|
27
|
-
}
|
|
28
|
-
return VERSION;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 获取完整版本信息
|
|
32
|
-
*/
|
|
33
|
-
static getVersionInfo() {
|
|
34
|
-
if (_VersionUtils.cachedVersionInfo) {
|
|
35
|
-
return _VersionUtils.cachedVersionInfo;
|
|
36
|
-
}
|
|
37
|
-
if (VERSION === "__VERSION__") {
|
|
38
|
-
_VersionUtils.cachedVersionInfo = _VersionUtils.getRuntimeVersionInfo();
|
|
39
|
-
return _VersionUtils.cachedVersionInfo;
|
|
40
|
-
}
|
|
41
|
-
_VersionUtils.cachedVersionInfo = {
|
|
42
|
-
version: VERSION,
|
|
43
|
-
name: APP_NAME === "__APP_NAME__" ? void 0 : APP_NAME
|
|
44
|
-
};
|
|
45
|
-
return _VersionUtils.cachedVersionInfo;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* 比较版本号
|
|
49
|
-
*
|
|
50
|
-
* @param version1 第一个版本号
|
|
51
|
-
* @param version2 第二个版本号
|
|
52
|
-
* @returns 返回值:1 表示 version1 > version2,-1 表示 version1 < version2,0 表示相等
|
|
53
|
-
*/
|
|
54
|
-
static compareVersions(version1, version2) {
|
|
55
|
-
const v1Parts = version1.split(".").map(Number);
|
|
56
|
-
const v2Parts = version2.split(".").map(Number);
|
|
57
|
-
const maxLength = Math.max(v1Parts.length, v2Parts.length);
|
|
58
|
-
for (let i = 0; i < maxLength; i++) {
|
|
59
|
-
const v1Part = v1Parts[i] || 0;
|
|
60
|
-
const v2Part = v2Parts[i] || 0;
|
|
61
|
-
if (v1Part > v2Part) return 1;
|
|
62
|
-
if (v1Part < v2Part) return -1;
|
|
63
|
-
}
|
|
64
|
-
return 0;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* 检查版本是否有效
|
|
68
|
-
*
|
|
69
|
-
* @param version 版本号字符串
|
|
70
|
-
* @returns 是否为有效的语义化版本号
|
|
71
|
-
*/
|
|
72
|
-
static isValidVersion(version) {
|
|
73
|
-
const versionRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
|
|
74
|
-
return versionRegex.test(version);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* 运行时从 package.json 读取版本号
|
|
78
|
-
*/
|
|
79
|
-
static getRuntimeVersion() {
|
|
80
|
-
if (_VersionUtils.cachedVersion) {
|
|
81
|
-
return _VersionUtils.cachedVersion;
|
|
82
|
-
}
|
|
83
|
-
try {
|
|
84
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
85
|
-
const currentDir = path.dirname(__filename);
|
|
86
|
-
const possiblePaths = [
|
|
87
|
-
// 从 packages/version/dist/version/index.js 到项目根目录的 package.json
|
|
88
|
-
path.join(currentDir, "..", "..", "..", "package.json"),
|
|
89
|
-
// 从 dist/version/index.js 到项目根目录的 package.json
|
|
90
|
-
path.join(currentDir, "..", "..", "package.json"),
|
|
91
|
-
// 全局安装环境
|
|
92
|
-
path.join(currentDir, "..", "..", "..", "..", "package.json")
|
|
93
|
-
];
|
|
94
|
-
for (const packagePath of possiblePaths) {
|
|
95
|
-
if (fs.existsSync(packagePath)) {
|
|
96
|
-
const packageJson = JSON.parse(fs.readFileSync(packagePath, "utf8"));
|
|
97
|
-
if (packageJson.version) {
|
|
98
|
-
_VersionUtils.cachedVersion = packageJson.version;
|
|
99
|
-
return packageJson.version;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
_VersionUtils.cachedVersion = "unknown";
|
|
104
|
-
return "unknown";
|
|
105
|
-
} catch (error) {
|
|
106
|
-
console.warn("\u65E0\u6CD5\u4ECE package.json \u8BFB\u53D6\u7248\u672C\u4FE1\u606F:", error);
|
|
107
|
-
_VersionUtils.cachedVersion = "unknown";
|
|
108
|
-
return "unknown";
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* 运行时从 package.json 读取完整版本信息
|
|
113
|
-
*/
|
|
114
|
-
static getRuntimeVersionInfo() {
|
|
115
|
-
try {
|
|
116
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
117
|
-
const currentDir = path.dirname(__filename);
|
|
118
|
-
const possiblePaths = [
|
|
119
|
-
// 从 packages/version/dist/version/index.js 到项目根目录的 package.json
|
|
120
|
-
path.join(currentDir, "..", "..", "..", "package.json"),
|
|
121
|
-
// 从 dist/version/index.js 到项目根目录的 package.json
|
|
122
|
-
path.join(currentDir, "..", "..", "package.json"),
|
|
123
|
-
// 全局安装环境
|
|
124
|
-
path.join(currentDir, "..", "..", "..", "..", "package.json")
|
|
125
|
-
];
|
|
126
|
-
for (const packagePath of possiblePaths) {
|
|
127
|
-
if (fs.existsSync(packagePath)) {
|
|
128
|
-
const packageJson = JSON.parse(fs.readFileSync(packagePath, "utf8"));
|
|
129
|
-
return {
|
|
130
|
-
version: packageJson.version || "unknown",
|
|
131
|
-
name: packageJson.name,
|
|
132
|
-
description: packageJson.description,
|
|
133
|
-
author: packageJson.author
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return { version: "unknown" };
|
|
138
|
-
} catch (error) {
|
|
139
|
-
console.warn("\u65E0\u6CD5\u8BFB\u53D6\u7248\u672C\u4FE1\u606F:", error);
|
|
140
|
-
return { version: "unknown" };
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* 清除版本缓存
|
|
145
|
-
*
|
|
146
|
-
* 主要用于测试场景
|
|
147
|
-
*/
|
|
148
|
-
static clearCache() {
|
|
149
|
-
_VersionUtils.cachedVersion = null;
|
|
150
|
-
_VersionUtils.cachedVersionInfo = null;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
export {
|
|
154
|
-
APP_NAME,
|
|
155
|
-
VERSION,
|
|
156
|
-
VersionUtils
|
|
157
|
-
};
|
|
158
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version-constants.ts","../src/VersionUtils.ts"],"sourcesContent":["/**\n * 版本号常量(构建时注入)\n *\n * 如果构建时能读取到 package.json,则为真实版本号\n * 否则为占位符,运行时从 package.json 读取\n */\nexport const VERSION = __VERSION__;\nexport const APP_NAME = __APP_NAME__;\n","/**\n * 版本管理工具\n *\n * 提供版本号获取、比较、验证等功能\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { VERSION, APP_NAME } from \"./version-constants.js\";\n\n/**\n * 版本信息接口\n */\nexport interface VersionInfo {\n version: string;\n name?: string;\n description?: string;\n author?: string;\n}\n\n/**\n * 版本工具类\n */\nexport class VersionUtils {\n private static cachedVersion: string | null = null;\n private static cachedVersionInfo: VersionInfo | null = null;\n\n /**\n * 获取版本号\n *\n * 优先使用构建时注入的版本号常量\n * 如果是占位符,则运行时从 package.json 读取\n */\n static getVersion(): string {\n // 如果版本号是占位符,则运行时读取\n if (VERSION === \"__VERSION__\") {\n return VersionUtils.getRuntimeVersion();\n }\n\n // 使用构建时注入的版本号\n return VERSION;\n }\n\n /**\n * 获取完整版本信息\n */\n static getVersionInfo(): VersionInfo {\n // 如果有缓存,直接返回\n if (VersionUtils.cachedVersionInfo) {\n return VersionUtils.cachedVersionInfo;\n }\n\n // 如果版本号是占位符,则运行时读取\n if (VERSION === \"__VERSION__\") {\n VersionUtils.cachedVersionInfo = VersionUtils.getRuntimeVersionInfo();\n return VersionUtils.cachedVersionInfo;\n }\n\n // 使用构建时注入的版本号\n VersionUtils.cachedVersionInfo = {\n version: VERSION,\n name: APP_NAME === \"__APP_NAME__\" ? undefined : APP_NAME,\n };\n\n return VersionUtils.cachedVersionInfo;\n }\n\n /**\n * 比较版本号\n *\n * @param version1 第一个版本号\n * @param version2 第二个版本号\n * @returns 返回值:1 表示 version1 > version2,-1 表示 version1 < version2,0 表示相等\n */\n static compareVersions(version1: string, version2: string): number {\n const v1Parts = version1.split(\".\").map(Number);\n const v2Parts = version2.split(\".\").map(Number);\n const maxLength = Math.max(v1Parts.length, v2Parts.length);\n\n for (let i = 0; i < maxLength; i++) {\n const v1Part = v1Parts[i] || 0;\n const v2Part = v2Parts[i] || 0;\n\n if (v1Part > v2Part) return 1;\n if (v1Part < v2Part) return -1;\n }\n\n return 0;\n }\n\n /**\n * 检查版本是否有效\n *\n * @param version 版本号字符串\n * @returns 是否为有效的语义化版本号\n */\n static isValidVersion(version: string): boolean {\n // 支持语义化版本号:1.2.3 或 1.2.3-alpha.1 或 1.2.3-beta.1+build.123\n const versionRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\n return versionRegex.test(version);\n }\n\n /**\n * 运行时从 package.json 读取版本号\n */\n private static getRuntimeVersion(): string {\n // 如果有缓存,直接返回\n if (VersionUtils.cachedVersion) {\n return VersionUtils.cachedVersion;\n }\n\n try {\n // 在 ES 模块环境中获取当前目录\n const __filename = fileURLToPath(import.meta.url);\n const currentDir = path.dirname(__filename);\n\n // 尝试多个可能的 package.json 路径\n const possiblePaths = [\n // 从 packages/version/dist/version/index.js 到项目根目录的 package.json\n path.join(currentDir, \"..\", \"..\", \"..\", \"package.json\"),\n // 从 dist/version/index.js 到项目根目录的 package.json\n path.join(currentDir, \"..\", \"..\", \"package.json\"),\n // 全局安装环境\n path.join(currentDir, \"..\", \"..\", \"..\", \"..\", \"package.json\"),\n ];\n\n for (const packagePath of possiblePaths) {\n if (fs.existsSync(packagePath)) {\n const packageJson = JSON.parse(fs.readFileSync(packagePath, \"utf8\"));\n if (packageJson.version) {\n VersionUtils.cachedVersion = packageJson.version;\n return packageJson.version;\n }\n }\n }\n\n // 如果都找不到,返回默认版本\n VersionUtils.cachedVersion = \"unknown\";\n return \"unknown\";\n } catch (error) {\n console.warn(\"无法从 package.json 读取版本信息:\", error);\n VersionUtils.cachedVersion = \"unknown\";\n return \"unknown\";\n }\n }\n\n /**\n * 运行时从 package.json 读取完整版本信息\n */\n private static getRuntimeVersionInfo(): VersionInfo {\n try {\n const __filename = fileURLToPath(import.meta.url);\n const currentDir = path.dirname(__filename);\n\n const possiblePaths = [\n // 从 packages/version/dist/version/index.js 到项目根目录的 package.json\n path.join(currentDir, \"..\", \"..\", \"..\", \"package.json\"),\n // 从 dist/version/index.js 到项目根目录的 package.json\n path.join(currentDir, \"..\", \"..\", \"package.json\"),\n // 全局安装环境\n path.join(currentDir, \"..\", \"..\", \"..\", \"..\", \"package.json\"),\n ];\n\n for (const packagePath of possiblePaths) {\n if (fs.existsSync(packagePath)) {\n const packageJson = JSON.parse(fs.readFileSync(packagePath, \"utf8\"));\n return {\n version: packageJson.version || \"unknown\",\n name: packageJson.name,\n description: packageJson.description,\n author: packageJson.author,\n };\n }\n }\n\n return { version: \"unknown\" };\n } catch (error) {\n console.warn(\"无法读取版本信息:\", error);\n return { version: \"unknown\" };\n }\n }\n\n /**\n * 清除版本缓存\n *\n * 主要用于测试场景\n */\n static clearCache(): void {\n VersionUtils.cachedVersion = null;\n VersionUtils.cachedVersionInfo = null;\n }\n}\n"],"mappings":"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","names":[]}
|