@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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +208 -0
  3. package/dist/config-manager.d.ts +34 -0
  4. package/dist/config-manager.d.ts.map +1 -0
  5. package/dist/config-manager.js +138 -0
  6. package/dist/config-manager.js.map +1 -0
  7. package/dist/debug/consul-debug.d.ts +6 -0
  8. package/dist/debug/consul-debug.d.ts.map +1 -0
  9. package/dist/debug/consul-debug.js +53 -0
  10. package/dist/debug/consul-debug.js.map +1 -0
  11. package/dist/decorators.d.ts +12 -0
  12. package/dist/decorators.d.ts.map +1 -0
  13. package/dist/decorators.js +29 -0
  14. package/dist/decorators.js.map +1 -0
  15. package/dist/examples/annotation-example.d.ts +1 -0
  16. package/dist/examples/annotation-example.d.ts.map +1 -0
  17. package/dist/examples/annotation-example.js +273 -0
  18. package/dist/examples/annotation-example.js.map +1 -0
  19. package/dist/examples/config-example.d.ts +1 -0
  20. package/dist/examples/config-example.d.ts.map +1 -0
  21. package/dist/examples/config-example.js +83 -0
  22. package/dist/examples/config-example.js.map +1 -0
  23. package/dist/examples/consul-config-example.v2.d.ts +1 -0
  24. package/dist/examples/consul-config-example.v2.d.ts.map +1 -0
  25. package/dist/examples/consul-config-example.v2.js +145 -0
  26. package/dist/examples/consul-config-example.v2.js.map +1 -0
  27. package/dist/examples/database-config.d.ts +1 -0
  28. package/dist/examples/database-config.d.ts.map +1 -0
  29. package/dist/examples/database-config.js +23 -0
  30. package/dist/examples/database-config.js.map +1 -0
  31. package/dist/examples/hot-reload-test.d.ts +1 -0
  32. package/dist/examples/hot-reload-test.d.ts.map +1 -0
  33. package/dist/examples/hot-reload-test.js +65 -0
  34. package/dist/examples/hot-reload-test.js.map +1 -0
  35. package/dist/factory.d.ts +45 -0
  36. package/dist/factory.d.ts.map +1 -0
  37. package/dist/factory.js +46 -0
  38. package/dist/factory.js.map +1 -0
  39. package/dist/index.d.ts +5 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +5 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/interfaces.d.ts +100 -0
  44. package/dist/interfaces.d.ts.map +1 -0
  45. package/dist/interfaces.js +6 -0
  46. package/dist/interfaces.js.map +1 -0
  47. package/dist/sources/consul-config-source.d.ts +79 -0
  48. package/dist/sources/consul-config-source.d.ts.map +1 -0
  49. package/dist/sources/consul-config-source.js +332 -0
  50. package/dist/sources/consul-config-source.js.map +1 -0
  51. package/dist/sources/environment-config-source.d.ts +34 -0
  52. package/dist/sources/environment-config-source.d.ts.map +1 -0
  53. package/dist/sources/environment-config-source.js +77 -0
  54. package/dist/sources/environment-config-source.js.map +1 -0
  55. package/dist/sources/index.d.ts +6 -0
  56. package/dist/sources/index.d.ts.map +1 -0
  57. package/dist/sources/index.js +6 -0
  58. package/dist/sources/index.js.map +1 -0
  59. package/dist/sources/json-config-source.d.ts +57 -0
  60. package/dist/sources/json-config-source.d.ts.map +1 -0
  61. package/dist/sources/json-config-source.js +153 -0
  62. package/dist/sources/json-config-source.js.map +1 -0
  63. package/dist/sources/remote-api-config-source.d.ts +62 -0
  64. package/dist/sources/remote-api-config-source.d.ts.map +1 -0
  65. package/dist/sources/remote-api-config-source.js +169 -0
  66. package/dist/sources/remote-api-config-source.js.map +1 -0
  67. package/dist/sources/yaml-config-source.d.ts +57 -0
  68. package/dist/sources/yaml-config-source.d.ts.map +1 -0
  69. package/dist/sources/yaml-config-source.js +163 -0
  70. package/dist/sources/yaml-config-source.js.map +1 -0
  71. package/package.json +66 -0
@@ -0,0 +1,57 @@
1
+ import type { IConfigSource } from '../interfaces';
2
+ /**
3
+ * YAML配置文件源
4
+ */
5
+ export declare class YamlConfigSource 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
+ * 从YAML文件加载配置
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=yaml-config-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-config-source.d.ts","sourceRoot":"","sources":["../../src/sources/yaml-config-source.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;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;IAiBhE;;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;IA8CpB;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;YACW,QAAQ;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,163 @@
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
+ import * as YAML from 'yaml';
8
+ const logger = createLogger('YamlConfigSource');
9
+ /**
10
+ * YAML配置文件源
11
+ */
12
+ let YamlConfigSource = class YamlConfigSource {
13
+ /**
14
+ * @param filePath 配置文件路径
15
+ * @param watchChanges 是否监听文件变化
16
+ */
17
+ constructor(filePath, watchChanges = false) {
18
+ this.watchChanges = watchChanges;
19
+ this.cache = {};
20
+ this.watcher = null;
21
+ this.callbacks = new Map();
22
+ this.filePath = path.resolve(filePath);
23
+ if (this.watchChanges) {
24
+ this.setupWatcher();
25
+ }
26
+ }
27
+ /**
28
+ * 从YAML文件加载配置
29
+ */
30
+ async load(key, _pathPrefix) {
31
+ try {
32
+ if (Object.keys(this.cache).length === 0) {
33
+ await this.loadFile();
34
+ }
35
+ if (!key) {
36
+ return this.cache;
37
+ }
38
+ return this.getNestedValue(this.cache, key);
39
+ }
40
+ catch (error) {
41
+ logger.error('从YAML加载配置失败', error);
42
+ return undefined;
43
+ }
44
+ }
45
+ /**
46
+ * 获取配置源名称
47
+ */
48
+ getName() {
49
+ return `YamlConfigSource(${this.filePath})`;
50
+ }
51
+ /**
52
+ * 是否支持热更新
53
+ */
54
+ supportsHotReload() {
55
+ return this.watchChanges;
56
+ }
57
+ /**
58
+ * 订阅配置变更
59
+ */
60
+ subscribe(key, callback) {
61
+ if (!this.supportsHotReload()) {
62
+ logger.warn('此配置源未启用热更新,无法订阅变更');
63
+ return;
64
+ }
65
+ const callbacks = this.callbacks.get(key) ?? [];
66
+ callbacks.push(callback);
67
+ this.callbacks.set(key, callbacks);
68
+ }
69
+ /**
70
+ * 取消订阅配置变更
71
+ */
72
+ unsubscribe(key) {
73
+ this.callbacks.delete(key);
74
+ }
75
+ /**
76
+ * 设置文件变更监听器
77
+ */
78
+ setupWatcher() {
79
+ try {
80
+ // 先确保文件存在
81
+ if (!fs.existsSync(this.filePath)) {
82
+ logger.warn(`配置文件不存在: ${this.filePath}`);
83
+ return;
84
+ }
85
+ logger.info(`开始监听文件变更: ${this.filePath}`);
86
+ // 监听文件变更 - 使用更强大的选项
87
+ this.watcher = fs.watch(this.filePath, {
88
+ persistent: true,
89
+ encoding: 'utf8',
90
+ recursive: false,
91
+ }, (eventType, filename) => {
92
+ logger.info(`检测到文件变更: ${filename ?? this.filePath}, 事件类型: ${eventType}`);
93
+ // 文件变更后等待一小段时间再读取,确保写入完成
94
+ setTimeout(() => {
95
+ this.handleFileChange().catch(error => {
96
+ logger.error(`处理文件变更时出错: ${error instanceof Error ? error.message : String(error)}`);
97
+ });
98
+ }, 100);
99
+ });
100
+ }
101
+ catch (error) {
102
+ logger.error(`设置文件监听失败: ${error instanceof Error ? error.message : String(error)}`);
103
+ }
104
+ }
105
+ /**
106
+ * 处理文件变更
107
+ */
108
+ async handleFileChange() {
109
+ const oldCache = { ...this.cache };
110
+ await this.loadFile();
111
+ // 通知所有订阅者
112
+ this.callbacks.forEach((callbacks, key) => {
113
+ const newValue = this.getNestedValue(this.cache, key);
114
+ const oldValue = this.getNestedValue(oldCache, key);
115
+ if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
116
+ callbacks.forEach(callback => callback(newValue));
117
+ }
118
+ });
119
+ }
120
+ /**
121
+ * 加载文件到缓存
122
+ */
123
+ async loadFile() {
124
+ try {
125
+ const content = await readFile(this.filePath, 'utf-8');
126
+ this.cache = YAML.parse(content);
127
+ }
128
+ catch (error) {
129
+ throw new Error(`加载YAML文件失败: ${error instanceof Error ? error.message : String(error)}`);
130
+ }
131
+ }
132
+ /**
133
+ * 获取嵌套对象的属性值
134
+ */
135
+ getNestedValue(obj, key) {
136
+ const parts = key.split('.');
137
+ let current = obj;
138
+ for (const part of parts) {
139
+ if (current === undefined ||
140
+ current === null ||
141
+ typeof current !== 'object') {
142
+ return undefined;
143
+ }
144
+ current = current[part];
145
+ }
146
+ return current;
147
+ }
148
+ /**
149
+ * 关闭资源
150
+ */
151
+ dispose() {
152
+ if (this.watcher) {
153
+ this.watcher.close();
154
+ this.watcher = null;
155
+ }
156
+ }
157
+ };
158
+ YamlConfigSource = __decorate([
159
+ injectable(),
160
+ __metadata("design:paramtypes", [String, Object])
161
+ ], YamlConfigSource);
162
+ export { YamlConfigSource };
163
+ //# sourceMappingURL=yaml-config-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-config-source.js","sourceRoot":"","sources":["../../src/sources/yaml-config-source.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@nexe/config-manager",
3
+ "version": "0.1.0",
4
+ "description": "Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "LICENSE"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "tsc --watch",
15
+ "clean": "rm -rf dist",
16
+ "check-types": "tsc --noEmit",
17
+ "test": "bun test",
18
+ "test:watch": "bun test --watch",
19
+ "prepublishOnly": "npm run clean && npm run build",
20
+ "publish:npm": "npm publish --access public"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/aqz236/nexe.git",
25
+ "directory": "packages/tools/config-manager"
26
+ },
27
+ "homepage": "https://github.com/aqz236/nexe/tree/main/packages/tools/config-manager#readme",
28
+ "bugs": {
29
+ "url": "https://github.com/aqz236/nexe/issues"
30
+ },
31
+ "author": "aqz236",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "reflect-metadata": "^0.2.2",
35
+ "tsyringe": "^4.10.0",
36
+ "@nexe/logger": "^0.1.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/bun": "^1.2.19",
40
+ "@types/node": "^24.1.0",
41
+ "@types/reflect-metadata": "^0.1.0",
42
+ "typescript": "5.9.2"
43
+ },
44
+ "peerDependencies": {
45
+ "typescript": ">=5.0.0"
46
+ },
47
+ "exports": {
48
+ ".": {
49
+ "import": "./dist/index.js",
50
+ "require": "./dist/index.js",
51
+ "types": "./dist/index.d.ts"
52
+ }
53
+ },
54
+ "keywords": [
55
+ "nexe",
56
+ "config",
57
+ "configuration",
58
+ "config-manager",
59
+ "hot-reload",
60
+ "consul",
61
+ "environment",
62
+ "json",
63
+ "yaml",
64
+ "toml"
65
+ ]
66
+ }