@wu529778790/open-im 1.2.0 → 1.2.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/config.js +35 -21
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -10,7 +10,6 @@ import { join, isAbsolute } from 'node:path';
|
|
|
10
10
|
import { homedir } from 'node:os';
|
|
11
11
|
import { APP_HOME } from './constants.js';
|
|
12
12
|
const CONFIG_PATH = join(APP_HOME, 'config.json');
|
|
13
|
-
const CLAUDE_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
14
13
|
function loadFileConfig() {
|
|
15
14
|
try {
|
|
16
15
|
return JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'));
|
|
@@ -19,17 +18,34 @@ function loadFileConfig() {
|
|
|
19
18
|
return {};
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
|
-
/**
|
|
21
|
+
/** 获取用户主目录(兼容不同运行环境,如 launchd、systemd 等) */
|
|
22
|
+
function getClaudeConfigHome() {
|
|
23
|
+
return process.env.HOME || process.env.USERPROFILE || homedir();
|
|
24
|
+
}
|
|
25
|
+
/** 从 Claude Code 配置文件加载 env,支持多路径(与 Claude Code 共用) */
|
|
23
26
|
function loadClaudeSettingsEnv() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
const home = getClaudeConfigHome();
|
|
28
|
+
const paths = [
|
|
29
|
+
join(home, '.claude', 'settings.json'),
|
|
30
|
+
join(home, '.claude.json'),
|
|
31
|
+
];
|
|
32
|
+
for (const p of paths) {
|
|
33
|
+
try {
|
|
34
|
+
const raw = JSON.parse(readFileSync(p, 'utf-8'));
|
|
35
|
+
const env = raw?.env;
|
|
36
|
+
if (env && typeof env === 'object') {
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const [k, v] of Object.entries(env)) {
|
|
39
|
+
if (v != null && typeof k === 'string') {
|
|
40
|
+
result[k] = String(v);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
/* 文件不存在或格式错误,尝试下一路径 */
|
|
29
48
|
}
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
/* 文件不存在或格式错误,忽略 */
|
|
33
49
|
}
|
|
34
50
|
return {};
|
|
35
51
|
}
|
|
@@ -73,20 +89,18 @@ function parseCommaSeparated(value) {
|
|
|
73
89
|
export function loadConfig() {
|
|
74
90
|
const file = loadFileConfig();
|
|
75
91
|
// 将配置文件中的 env 设置到环境变量(优先级低于现有环境变量)
|
|
76
|
-
|
|
77
|
-
for (const [key, value] of Object.entries(
|
|
78
|
-
if (!(key in process.env)) {
|
|
79
|
-
process.env[key] = value;
|
|
92
|
+
const mergeEnv = (env) => {
|
|
93
|
+
for (const [key, value] of Object.entries(env)) {
|
|
94
|
+
if (!(key in process.env) && value != null && typeof key === 'string') {
|
|
95
|
+
process.env[key] = String(value);
|
|
80
96
|
}
|
|
81
97
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
98
|
+
};
|
|
99
|
+
if (file.env)
|
|
100
|
+
mergeEnv(file.env);
|
|
101
|
+
// 从 Claude Code 配置合并 API 凭证(~/.claude/settings.json 或 ~/.claude.json,最低优先级)
|
|
84
102
|
const claudeEnv = loadClaudeSettingsEnv();
|
|
85
|
-
|
|
86
|
-
if (!(key in process.env)) {
|
|
87
|
-
process.env[key] = value;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
103
|
+
mergeEnv(claudeEnv);
|
|
90
104
|
const fileTelegram = file.platforms?.telegram;
|
|
91
105
|
const fileFeishu = file.platforms?.feishu;
|
|
92
106
|
const fileWechat = file.platforms?.wechat;
|