@nexe/config-manager 0.1.0
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/LICENSE +21 -0
- package/README.md +208 -0
- package/dist/config-manager.d.ts +34 -0
- package/dist/config-manager.d.ts.map +1 -0
- package/dist/config-manager.js +138 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/debug/consul-debug.d.ts +6 -0
- package/dist/debug/consul-debug.d.ts.map +1 -0
- package/dist/debug/consul-debug.js +53 -0
- package/dist/debug/consul-debug.js.map +1 -0
- package/dist/decorators.d.ts +12 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +29 -0
- package/dist/decorators.js.map +1 -0
- package/dist/examples/annotation-example.d.ts +1 -0
- package/dist/examples/annotation-example.d.ts.map +1 -0
- package/dist/examples/annotation-example.js +273 -0
- package/dist/examples/annotation-example.js.map +1 -0
- package/dist/examples/config-example.d.ts +1 -0
- package/dist/examples/config-example.d.ts.map +1 -0
- package/dist/examples/config-example.js +83 -0
- package/dist/examples/config-example.js.map +1 -0
- package/dist/examples/consul-config-example.v2.d.ts +1 -0
- package/dist/examples/consul-config-example.v2.d.ts.map +1 -0
- package/dist/examples/consul-config-example.v2.js +145 -0
- package/dist/examples/consul-config-example.v2.js.map +1 -0
- package/dist/examples/database-config.d.ts +1 -0
- package/dist/examples/database-config.d.ts.map +1 -0
- package/dist/examples/database-config.js +23 -0
- package/dist/examples/database-config.js.map +1 -0
- package/dist/examples/hot-reload-test.d.ts +1 -0
- package/dist/examples/hot-reload-test.d.ts.map +1 -0
- package/dist/examples/hot-reload-test.js +65 -0
- package/dist/examples/hot-reload-test.js.map +1 -0
- package/dist/factory.d.ts +45 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +46 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +100 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +6 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/sources/consul-config-source.d.ts +79 -0
- package/dist/sources/consul-config-source.d.ts.map +1 -0
- package/dist/sources/consul-config-source.js +332 -0
- package/dist/sources/consul-config-source.js.map +1 -0
- package/dist/sources/environment-config-source.d.ts +34 -0
- package/dist/sources/environment-config-source.d.ts.map +1 -0
- package/dist/sources/environment-config-source.js +77 -0
- package/dist/sources/environment-config-source.js.map +1 -0
- package/dist/sources/index.d.ts +6 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/index.js +6 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/sources/json-config-source.d.ts +57 -0
- package/dist/sources/json-config-source.d.ts.map +1 -0
- package/dist/sources/json-config-source.js +153 -0
- package/dist/sources/json-config-source.js.map +1 -0
- package/dist/sources/remote-api-config-source.d.ts +62 -0
- package/dist/sources/remote-api-config-source.d.ts.map +1 -0
- package/dist/sources/remote-api-config-source.js +169 -0
- package/dist/sources/remote-api-config-source.js.map +1 -0
- package/dist/sources/yaml-config-source.d.ts +57 -0
- package/dist/sources/yaml-config-source.d.ts.map +1 -0
- package/dist/sources/yaml-config-source.js +163 -0
- package/dist/sources/yaml-config-source.js.map +1 -0
- package/package.json +66 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"consul-config-source.js","sourceRoot":"","sources":["../../src/sources/consul-config-source.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import type { IConfigSource } from '../interfaces';
|
2
|
+
/**
|
3
|
+
* 环境变量配置源
|
4
|
+
*/
|
5
|
+
export declare class EnvironmentConfigSource implements IConfigSource {
|
6
|
+
private prefix;
|
7
|
+
/**
|
8
|
+
* @param prefix 环境变量前缀,例如:'APP_'
|
9
|
+
*/
|
10
|
+
constructor(prefix?: string);
|
11
|
+
/**
|
12
|
+
* 从环境变量加载配置
|
13
|
+
*/
|
14
|
+
load(key?: string, _pathPrefix?: string): Promise<unknown>;
|
15
|
+
/**
|
16
|
+
* 获取配置源名称
|
17
|
+
*/
|
18
|
+
getName(): string;
|
19
|
+
/**
|
20
|
+
* 环境变量配置不支持热更新
|
21
|
+
*/
|
22
|
+
supportsHotReload(): boolean;
|
23
|
+
/**
|
24
|
+
* 转换环境变量键名
|
25
|
+
* 将点分隔的配置键转换为下划线分隔的环境变量键
|
26
|
+
* 例如:'app.server.port' -> 'APP_SERVER_PORT'
|
27
|
+
*/
|
28
|
+
private getEnvKey;
|
29
|
+
/**
|
30
|
+
* 尝试解析环境变量值
|
31
|
+
*/
|
32
|
+
private parseValue;
|
33
|
+
}
|
34
|
+
//# sourceMappingURL=environment-config-source.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"environment-config-source.d.ts","sourceRoot":"","sources":["../../src/sources/environment-config-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,qBACa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;gBACS,MAAM,SAAK;IAIvB;;OAEG;IACG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,UAAU;CA0BnB"}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { injectable } from 'tsyringe';
|
3
|
+
/**
|
4
|
+
* 环境变量配置源
|
5
|
+
*/
|
6
|
+
let EnvironmentConfigSource = class EnvironmentConfigSource {
|
7
|
+
/**
|
8
|
+
* @param prefix 环境变量前缀,例如:'APP_'
|
9
|
+
*/
|
10
|
+
constructor(prefix = '') {
|
11
|
+
this.prefix = prefix;
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* 从环境变量加载配置
|
15
|
+
*/
|
16
|
+
async load(key, _pathPrefix) {
|
17
|
+
if (!key) {
|
18
|
+
return undefined;
|
19
|
+
}
|
20
|
+
const envKey = this.getEnvKey(key);
|
21
|
+
const value = process.env[envKey];
|
22
|
+
return this.parseValue(value);
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* 获取配置源名称
|
26
|
+
*/
|
27
|
+
getName() {
|
28
|
+
return 'EnvironmentConfigSource';
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* 环境变量配置不支持热更新
|
32
|
+
*/
|
33
|
+
supportsHotReload() {
|
34
|
+
return false;
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* 转换环境变量键名
|
38
|
+
* 将点分隔的配置键转换为下划线分隔的环境变量键
|
39
|
+
* 例如:'app.server.port' -> 'APP_SERVER_PORT'
|
40
|
+
*/
|
41
|
+
getEnvKey(key) {
|
42
|
+
return `${this.prefix}${key.replace(/\./g, '_').toUpperCase()}`;
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* 尝试解析环境变量值
|
46
|
+
*/
|
47
|
+
parseValue(value) {
|
48
|
+
if (value === undefined) {
|
49
|
+
return undefined;
|
50
|
+
}
|
51
|
+
// 尝试解析为数字
|
52
|
+
if (/^-?\d+(\.\d+)?$/.test(value)) {
|
53
|
+
return Number(value);
|
54
|
+
}
|
55
|
+
// 尝试解析为布尔值
|
56
|
+
if (value.toLowerCase() === 'true') {
|
57
|
+
return true;
|
58
|
+
}
|
59
|
+
if (value.toLowerCase() === 'false') {
|
60
|
+
return false;
|
61
|
+
}
|
62
|
+
// 尝试解析为JSON
|
63
|
+
try {
|
64
|
+
return JSON.parse(value);
|
65
|
+
}
|
66
|
+
catch {
|
67
|
+
// 如果不是JSON,则返回原始字符串
|
68
|
+
return value;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
};
|
72
|
+
EnvironmentConfigSource = __decorate([
|
73
|
+
injectable(),
|
74
|
+
__metadata("design:paramtypes", [Object])
|
75
|
+
], EnvironmentConfigSource);
|
76
|
+
export { EnvironmentConfigSource };
|
77
|
+
//# sourceMappingURL=environment-config-source.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"environment-config-source.js","sourceRoot":"","sources":["../../src/sources/environment-config-source.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;GAEG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGlC;;OAEG;IACH,YAAY,MAAM,GAAG,EAAE;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,GAAY,EAAE,WAAoB;QAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,GAAW;QAC3B,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAyB;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,UAAU;QACV,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,YAAY;QACZ,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAA;AA1EY,uBAAuB;IADnC,UAAU,EAAE;;GACA,uBAAuB,CA0EnC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import type { IConfigSource } from '../interfaces';
|
2
|
+
/**
|
3
|
+
* JSON配置文件源
|
4
|
+
*/
|
5
|
+
export declare class JsonConfigSource implements IConfigSource {
|
6
|
+
private watchChanges;
|
7
|
+
private filePath;
|
8
|
+
private cache;
|
9
|
+
private watcher;
|
10
|
+
private callbacks;
|
11
|
+
/**
|
12
|
+
* @param filePath 配置文件路径
|
13
|
+
* @param watchChanges 是否监听文件变化
|
14
|
+
*/
|
15
|
+
constructor(filePath: string, watchChanges?: boolean);
|
16
|
+
/**
|
17
|
+
* 从JSON文件加载配置
|
18
|
+
*/
|
19
|
+
load(key?: string, _pathPrefix?: string): Promise<unknown>;
|
20
|
+
/**
|
21
|
+
* 获取配置源名称
|
22
|
+
*/
|
23
|
+
getName(): string;
|
24
|
+
/**
|
25
|
+
* 是否支持热更新
|
26
|
+
*/
|
27
|
+
supportsHotReload(): boolean;
|
28
|
+
/**
|
29
|
+
* 订阅配置变更
|
30
|
+
*/
|
31
|
+
subscribe(key: string, callback: (value: unknown) => void): void;
|
32
|
+
/**
|
33
|
+
* 取消订阅配置变更
|
34
|
+
*/
|
35
|
+
unsubscribe(key: string): void;
|
36
|
+
/**
|
37
|
+
* 设置文件变更监听器
|
38
|
+
*/
|
39
|
+
private setupWatcher;
|
40
|
+
/**
|
41
|
+
* 处理文件变更
|
42
|
+
*/
|
43
|
+
private handleFileChange;
|
44
|
+
/**
|
45
|
+
* 加载文件到缓存
|
46
|
+
*/
|
47
|
+
private loadFile;
|
48
|
+
/**
|
49
|
+
* 获取嵌套对象的属性值
|
50
|
+
*/
|
51
|
+
private getNestedValue;
|
52
|
+
/**
|
53
|
+
* 关闭资源
|
54
|
+
*/
|
55
|
+
dispose(): void;
|
56
|
+
}
|
57
|
+
//# sourceMappingURL=json-config-source.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"json-config-source.d.ts","sourceRoot":"","sources":["../../src/sources/json-config-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD;;GAEG;AACH,qBACa,gBAAiB,YAAW,aAAa;IAYlD,OAAO,CAAC,YAAY;IAXtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAmD;IAEpE;;;OAGG;gBAED,QAAQ,EAAE,MAAM,EACR,YAAY,UAAQ;IAQ9B;;OAEG;IACG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBhE;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAWhE;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;YACW,QAAQ;IAWtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
@@ -0,0 +1,153 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { createLogger } from '@nexe/logger';
|
3
|
+
import * as fs from 'fs';
|
4
|
+
import { readFile } from 'fs/promises';
|
5
|
+
import * as path from 'path';
|
6
|
+
import { injectable } from 'tsyringe';
|
7
|
+
const logger = createLogger('JsonConfigSource');
|
8
|
+
/**
|
9
|
+
* JSON配置文件源
|
10
|
+
*/
|
11
|
+
let JsonConfigSource = class JsonConfigSource {
|
12
|
+
/**
|
13
|
+
* @param filePath 配置文件路径
|
14
|
+
* @param watchChanges 是否监听文件变化
|
15
|
+
*/
|
16
|
+
constructor(filePath, watchChanges = false) {
|
17
|
+
this.watchChanges = watchChanges;
|
18
|
+
this.cache = {};
|
19
|
+
this.watcher = null;
|
20
|
+
this.callbacks = new Map();
|
21
|
+
this.filePath = path.resolve(filePath);
|
22
|
+
if (this.watchChanges) {
|
23
|
+
this.setupWatcher();
|
24
|
+
}
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* 从JSON文件加载配置
|
28
|
+
*/
|
29
|
+
async load(key, _pathPrefix) {
|
30
|
+
try {
|
31
|
+
if (Object.keys(this.cache).length === 0) {
|
32
|
+
await this.loadFile();
|
33
|
+
}
|
34
|
+
if (!key) {
|
35
|
+
return this.cache;
|
36
|
+
}
|
37
|
+
return this.getNestedValue(this.cache, key);
|
38
|
+
}
|
39
|
+
catch (error) {
|
40
|
+
logger.error(`从JSON加载配置失败: ${error instanceof Error ? error.message : String(error)}`);
|
41
|
+
return undefined;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* 获取配置源名称
|
46
|
+
*/
|
47
|
+
getName() {
|
48
|
+
return `JsonConfigSource(${this.filePath})`;
|
49
|
+
}
|
50
|
+
/**
|
51
|
+
* 是否支持热更新
|
52
|
+
*/
|
53
|
+
supportsHotReload() {
|
54
|
+
return this.watchChanges;
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* 订阅配置变更
|
58
|
+
*/
|
59
|
+
subscribe(key, callback) {
|
60
|
+
if (!this.supportsHotReload()) {
|
61
|
+
logger.warn('此配置源未启用热更新,无法订阅变更');
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
const callbacks = this.callbacks.get(key) ?? [];
|
65
|
+
callbacks.push(callback);
|
66
|
+
this.callbacks.set(key, callbacks);
|
67
|
+
}
|
68
|
+
/**
|
69
|
+
* 取消订阅配置变更
|
70
|
+
*/
|
71
|
+
unsubscribe(key) {
|
72
|
+
this.callbacks.delete(key);
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* 设置文件变更监听器
|
76
|
+
*/
|
77
|
+
setupWatcher() {
|
78
|
+
try {
|
79
|
+
// 先确保文件存在
|
80
|
+
if (!fs.existsSync(this.filePath)) {
|
81
|
+
logger.warn(`配置文件不存在: ${this.filePath}`);
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
// 监听文件变更
|
85
|
+
this.watcher = fs.watch(this.filePath, () => {
|
86
|
+
this.handleFileChange().catch(error => {
|
87
|
+
logger.error(`处理文件变更时出错: ${error instanceof Error ? error.message : String(error)}`);
|
88
|
+
});
|
89
|
+
});
|
90
|
+
}
|
91
|
+
catch (error) {
|
92
|
+
logger.error(`设置文件监听失败: ${error instanceof Error ? error.message : String(error)}`);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* 处理文件变更
|
97
|
+
*/
|
98
|
+
async handleFileChange() {
|
99
|
+
const oldCache = { ...this.cache };
|
100
|
+
await this.loadFile();
|
101
|
+
// 通知所有订阅者
|
102
|
+
this.callbacks.forEach((callbacks, key) => {
|
103
|
+
const newValue = this.getNestedValue(this.cache, key);
|
104
|
+
const oldValue = this.getNestedValue(oldCache, key);
|
105
|
+
if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
|
106
|
+
callbacks.forEach(callback => callback(newValue));
|
107
|
+
}
|
108
|
+
});
|
109
|
+
}
|
110
|
+
/**
|
111
|
+
* 加载文件到缓存
|
112
|
+
*/
|
113
|
+
async loadFile() {
|
114
|
+
try {
|
115
|
+
const content = await readFile(this.filePath, 'utf-8');
|
116
|
+
this.cache = JSON.parse(content);
|
117
|
+
}
|
118
|
+
catch (error) {
|
119
|
+
throw new Error(`加载JSON文件失败: ${error instanceof Error ? error.message : String(error)}`);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
/**
|
123
|
+
* 获取嵌套对象的属性值
|
124
|
+
*/
|
125
|
+
getNestedValue(obj, key) {
|
126
|
+
const parts = key.split('.');
|
127
|
+
let current = obj;
|
128
|
+
for (const part of parts) {
|
129
|
+
if (current === undefined ||
|
130
|
+
current === null ||
|
131
|
+
typeof current !== 'object') {
|
132
|
+
return undefined;
|
133
|
+
}
|
134
|
+
current = current[part];
|
135
|
+
}
|
136
|
+
return current;
|
137
|
+
}
|
138
|
+
/**
|
139
|
+
* 关闭资源
|
140
|
+
*/
|
141
|
+
dispose() {
|
142
|
+
if (this.watcher) {
|
143
|
+
this.watcher.close();
|
144
|
+
this.watcher = null;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
};
|
148
|
+
JsonConfigSource = __decorate([
|
149
|
+
injectable(),
|
150
|
+
__metadata("design:paramtypes", [String, Object])
|
151
|
+
], JsonConfigSource);
|
152
|
+
export { JsonConfigSource };
|
153
|
+
//# sourceMappingURL=json-config-source.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"json-config-source.js","sourceRoot":"","sources":["../../src/sources/json-config-source.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import type { IConfigSource } from '../interfaces';
|
2
|
+
/**
|
3
|
+
* 远程API配置源
|
4
|
+
*/
|
5
|
+
export declare class RemoteApiConfigSource implements IConfigSource {
|
6
|
+
private baseUrl;
|
7
|
+
private headers;
|
8
|
+
private pollingInterval?;
|
9
|
+
private pollingTimer?;
|
10
|
+
private cache;
|
11
|
+
private callbacks;
|
12
|
+
/**
|
13
|
+
* @param baseUrl 远程API基础URL
|
14
|
+
* @param headers 请求头
|
15
|
+
* @param pollingInterval 轮询间隔(毫秒),如果设置则启用轮询更新
|
16
|
+
*/
|
17
|
+
constructor(baseUrl: string, headers?: Record<string, string>, pollingInterval?: number);
|
18
|
+
/**
|
19
|
+
* 从远程API加载配置
|
20
|
+
*/
|
21
|
+
load(key?: string, _pathPrefix?: string): Promise<unknown>;
|
22
|
+
/**
|
23
|
+
* 获取配置源名称
|
24
|
+
*/
|
25
|
+
getName(): string;
|
26
|
+
/**
|
27
|
+
* 是否支持热更新
|
28
|
+
*/
|
29
|
+
supportsHotReload(): boolean;
|
30
|
+
/**
|
31
|
+
* 订阅配置变更
|
32
|
+
*/
|
33
|
+
subscribe(key: string, callback: (value: unknown) => void): void;
|
34
|
+
/**
|
35
|
+
* 取消订阅配置变更
|
36
|
+
*/
|
37
|
+
unsubscribe(key: string): void;
|
38
|
+
/**
|
39
|
+
* 开始轮询更新
|
40
|
+
*/
|
41
|
+
private startPolling;
|
42
|
+
/**
|
43
|
+
* 轮询检查配置变更
|
44
|
+
*/
|
45
|
+
private pollForChanges;
|
46
|
+
/**
|
47
|
+
* 获取特定键的配置值
|
48
|
+
*/
|
49
|
+
/**
|
50
|
+
* 获取所有配置
|
51
|
+
*/
|
52
|
+
private fetchAllConfig;
|
53
|
+
/**
|
54
|
+
* 获取嵌套对象的属性值
|
55
|
+
*/
|
56
|
+
private getNestedValue;
|
57
|
+
/**
|
58
|
+
* 关闭资源
|
59
|
+
*/
|
60
|
+
dispose(): void;
|
61
|
+
}
|
62
|
+
//# sourceMappingURL=remote-api-config-source.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"remote-api-config-source.d.ts","sourceRoot":"","sources":["../../src/sources/remote-api-config-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;GAEG;AACH,qBACa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAmD;IAEpE;;;;OAIG;gBAED,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,eAAe,CAAC,EAAE,MAAM;IAW1B;;OAEG;IACG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBhE;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAWhE;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,cAAc;IAe5B;;OAEG;IAsBH;;OAEG;YACW,cAAc;IAoB5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
@@ -0,0 +1,169 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { createLogger } from '@nexe/logger';
|
3
|
+
import { injectable } from 'tsyringe';
|
4
|
+
const logger = createLogger('RemoteApiConfigSource');
|
5
|
+
/**
|
6
|
+
* 远程API配置源
|
7
|
+
*/
|
8
|
+
let RemoteApiConfigSource = class RemoteApiConfigSource {
|
9
|
+
/**
|
10
|
+
* @param baseUrl 远程API基础URL
|
11
|
+
* @param headers 请求头
|
12
|
+
* @param pollingInterval 轮询间隔(毫秒),如果设置则启用轮询更新
|
13
|
+
*/
|
14
|
+
constructor(baseUrl, headers = {}, pollingInterval) {
|
15
|
+
this.cache = {};
|
16
|
+
this.callbacks = new Map();
|
17
|
+
this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
18
|
+
this.headers = headers;
|
19
|
+
this.pollingInterval = pollingInterval;
|
20
|
+
if (this.pollingInterval && this.pollingInterval > 0) {
|
21
|
+
this.startPolling();
|
22
|
+
}
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* 从远程API加载配置
|
26
|
+
*/
|
27
|
+
async load(key, _pathPrefix) {
|
28
|
+
try {
|
29
|
+
if (Object.keys(this.cache).length === 0) {
|
30
|
+
await this.fetchAllConfig();
|
31
|
+
}
|
32
|
+
if (!key) {
|
33
|
+
return this.cache;
|
34
|
+
}
|
35
|
+
return this.getNestedValue(this.cache, key);
|
36
|
+
}
|
37
|
+
catch (error) {
|
38
|
+
logger.error(`从远程API加载配置失败: ${error instanceof Error ? error.message : String(error)}`);
|
39
|
+
return undefined;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
/**
|
43
|
+
* 获取配置源名称
|
44
|
+
*/
|
45
|
+
getName() {
|
46
|
+
return `RemoteApiConfigSource(${this.baseUrl})`;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* 是否支持热更新
|
50
|
+
*/
|
51
|
+
supportsHotReload() {
|
52
|
+
return !!this.pollingInterval;
|
53
|
+
}
|
54
|
+
/**
|
55
|
+
* 订阅配置变更
|
56
|
+
*/
|
57
|
+
subscribe(key, callback) {
|
58
|
+
if (!this.supportsHotReload()) {
|
59
|
+
logger.warn('此配置源未启用热更新,无法订阅变更');
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
const callbacks = this.callbacks.get(key) ?? [];
|
63
|
+
callbacks.push(callback);
|
64
|
+
this.callbacks.set(key, callbacks);
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* 取消订阅配置变更
|
68
|
+
*/
|
69
|
+
unsubscribe(key) {
|
70
|
+
this.callbacks.delete(key);
|
71
|
+
}
|
72
|
+
/**
|
73
|
+
* 开始轮询更新
|
74
|
+
*/
|
75
|
+
startPolling() {
|
76
|
+
if (this.pollingTimer) {
|
77
|
+
clearInterval(this.pollingTimer);
|
78
|
+
}
|
79
|
+
this.pollingTimer = setInterval(() => {
|
80
|
+
this.pollForChanges().catch(error => {
|
81
|
+
logger.error(`轮询配置更新失败: ${error instanceof Error ? error.message : String(error)}`);
|
82
|
+
});
|
83
|
+
}, this.pollingInterval);
|
84
|
+
}
|
85
|
+
/**
|
86
|
+
* 轮询检查配置变更
|
87
|
+
*/
|
88
|
+
async pollForChanges() {
|
89
|
+
const oldCache = { ...this.cache };
|
90
|
+
await this.fetchAllConfig();
|
91
|
+
// 通知所有订阅者
|
92
|
+
this.callbacks.forEach((callbacks, key) => {
|
93
|
+
const newValue = this.getNestedValue(this.cache, key);
|
94
|
+
const oldValue = this.getNestedValue(oldCache, key);
|
95
|
+
if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
|
96
|
+
callbacks.forEach(callback => callback(newValue));
|
97
|
+
}
|
98
|
+
});
|
99
|
+
}
|
100
|
+
/**
|
101
|
+
* 获取特定键的配置值
|
102
|
+
*/
|
103
|
+
// private async fetchConfig(key: string): Promise<unknown> {
|
104
|
+
// try {
|
105
|
+
// const url = `${this.baseUrl}/config/${encodeURIComponent(key)}`;
|
106
|
+
// const response = await fetch(url, { headers: this.headers });
|
107
|
+
// if (!response.ok) {
|
108
|
+
// throw new Error(
|
109
|
+
// `API返回错误: ${response.status} ${response.statusText}`,
|
110
|
+
// );
|
111
|
+
// }
|
112
|
+
// const data = await response.json() as { value?: unknown };
|
113
|
+
// return data.value; // 根据实际API响应格式调整
|
114
|
+
// } catch (error) {
|
115
|
+
// logger.error(
|
116
|
+
// `获取配置值失败: ${error instanceof Error ? error.message : String(error)}`,
|
117
|
+
// );
|
118
|
+
// return undefined;
|
119
|
+
// }
|
120
|
+
// }
|
121
|
+
/**
|
122
|
+
* 获取所有配置
|
123
|
+
*/
|
124
|
+
async fetchAllConfig() {
|
125
|
+
try {
|
126
|
+
const url = `${this.baseUrl}/config`;
|
127
|
+
const response = await fetch(url, { headers: this.headers });
|
128
|
+
if (!response.ok) {
|
129
|
+
throw new Error(`API返回错误: ${response.status} ${response.statusText}`);
|
130
|
+
}
|
131
|
+
const data = (await response.json());
|
132
|
+
this.cache = data;
|
133
|
+
}
|
134
|
+
catch (error) {
|
135
|
+
throw new Error(`获取所有配置失败: ${error instanceof Error ? error.message : String(error)}`);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
/**
|
139
|
+
* 获取嵌套对象的属性值
|
140
|
+
*/
|
141
|
+
getNestedValue(obj, key) {
|
142
|
+
const parts = key.split('.');
|
143
|
+
let current = obj;
|
144
|
+
for (const part of parts) {
|
145
|
+
if (current === undefined ||
|
146
|
+
current === null ||
|
147
|
+
typeof current !== 'object') {
|
148
|
+
return undefined;
|
149
|
+
}
|
150
|
+
current = current[part];
|
151
|
+
}
|
152
|
+
return current;
|
153
|
+
}
|
154
|
+
/**
|
155
|
+
* 关闭资源
|
156
|
+
*/
|
157
|
+
dispose() {
|
158
|
+
if (this.pollingTimer) {
|
159
|
+
clearInterval(this.pollingTimer);
|
160
|
+
this.pollingTimer = undefined;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
};
|
164
|
+
RemoteApiConfigSource = __decorate([
|
165
|
+
injectable(),
|
166
|
+
__metadata("design:paramtypes", [String, Object, Number])
|
167
|
+
], RemoteApiConfigSource);
|
168
|
+
export { RemoteApiConfigSource };
|
169
|
+
//# sourceMappingURL=remote-api-config-source.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"remote-api-config-source.js","sourceRoot":"","sources":["../../src/sources/remote-api-config-source.ts"],"names":[],"mappings":"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"}
|