@danqiusheng/nest-nacos 1.0.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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +509 -0
  3. package/dist/index.d.ts +14 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +30 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/nacos-config.service.d.ts +62 -0
  8. package/dist/nacos-config.service.d.ts.map +1 -0
  9. package/dist/nacos-config.service.js +179 -0
  10. package/dist/nacos-config.service.js.map +1 -0
  11. package/dist/nacos-naming.service.d.ts +68 -0
  12. package/dist/nacos-naming.service.d.ts.map +1 -0
  13. package/dist/nacos-naming.service.js +153 -0
  14. package/dist/nacos-naming.service.js.map +1 -0
  15. package/dist/nacos.constants.d.ts +8 -0
  16. package/dist/nacos.constants.d.ts.map +1 -0
  17. package/dist/nacos.constants.js +13 -0
  18. package/dist/nacos.constants.js.map +1 -0
  19. package/dist/nacos.decorators.d.ts +9 -0
  20. package/dist/nacos.decorators.d.ts.map +1 -0
  21. package/dist/nacos.decorators.js +27 -0
  22. package/dist/nacos.decorators.js.map +1 -0
  23. package/dist/nacos.health.d.ts +14 -0
  24. package/dist/nacos.health.d.ts.map +1 -0
  25. package/dist/nacos.health.js +57 -0
  26. package/dist/nacos.health.js.map +1 -0
  27. package/dist/nacos.interfaces.d.ts +99 -0
  28. package/dist/nacos.interfaces.d.ts.map +1 -0
  29. package/dist/nacos.interfaces.js +3 -0
  30. package/dist/nacos.interfaces.js.map +1 -0
  31. package/dist/nacos.module.d.ts +17 -0
  32. package/dist/nacos.module.d.ts.map +1 -0
  33. package/dist/nacos.module.js +78 -0
  34. package/dist/nacos.module.js.map +1 -0
  35. package/dist/nacos.providers.d.ts +16 -0
  36. package/dist/nacos.providers.d.ts.map +1 -0
  37. package/dist/nacos.providers.js +78 -0
  38. package/dist/nacos.providers.js.map +1 -0
  39. package/package.json +62 -0
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var NacosConfigService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.NacosConfigService = void 0;
17
+ /**
18
+ * NestJS Nacos 插件 - Config 服务(配置中心)
19
+ *
20
+ * 封装 NacosConfigClient,负责:
21
+ * - 配置读取与发布
22
+ * - 配置变更订阅(服务端推送)
23
+ * - 本地配置缓存(支持热更新)
24
+ */
25
+ const common_1 = require("@nestjs/common");
26
+ const nacos_constants_1 = require("./nacos.constants");
27
+ let NacosConfigService = NacosConfigService_1 = class NacosConfigService {
28
+ constructor(client, options) {
29
+ this.client = client;
30
+ this.options = options;
31
+ this.logger = new common_1.Logger(NacosConfigService_1.name);
32
+ /** 配置缓存:key = `${dataId}@@${group}` */
33
+ this.cache = new Map();
34
+ /** 订阅回调集合:key = `${dataId}@@${group}` */
35
+ this.listeners = new Map();
36
+ }
37
+ /** 模块初始化:等待客户端就绪 + 预加载订阅配置 */
38
+ async onModuleInit() {
39
+ if (!this.client) {
40
+ this.logger.warn('NacosConfigClient 未初始化,Config 功能跳过');
41
+ return;
42
+ }
43
+ await this.client.ready();
44
+ this.logger.log('NacosConfigClient 已就绪');
45
+ // 预加载并订阅配置项
46
+ const configs = this.options?.subscribeConfigs ?? [];
47
+ for (const { dataId, group } of configs) {
48
+ await this.loadAndSubscribe(dataId, group);
49
+ }
50
+ }
51
+ async onModuleDestroy() {
52
+ if (!this.client)
53
+ return;
54
+ this.logger.log('NacosConfigClient 已关闭');
55
+ }
56
+ /**
57
+ * 获取配置内容
58
+ * @param dataId 配置 ID
59
+ * @param group 分组名,默认 'DEFAULT_GROUP'
60
+ * @returns 配置内容字符串
61
+ */
62
+ async getConfig(dataId, group = 'DEFAULT_GROUP') {
63
+ if (!this.client)
64
+ throw new Error('NacosConfigClient 未初始化');
65
+ const key = `${dataId}@@${group}`;
66
+ if (this.cache.has(key)) {
67
+ return this.cache.get(key);
68
+ }
69
+ const content = await this.client.getConfig(dataId, group);
70
+ this.cache.set(key, content);
71
+ return content;
72
+ }
73
+ /**
74
+ * 获取配置并解析为 JSON 对象
75
+ */
76
+ async getConfigAsJson(dataId, group = 'DEFAULT_GROUP') {
77
+ const content = await this.getConfig(dataId, group);
78
+ try {
79
+ return JSON.parse(content);
80
+ }
81
+ catch {
82
+ this.logger.warn(`配置 ${dataId} 不是合法 JSON,返回原始字符串`);
83
+ return content;
84
+ }
85
+ }
86
+ /**
87
+ * 发布配置
88
+ * @param dataId 配置 ID
89
+ * @param group 分组名
90
+ * @param content 配置内容
91
+ */
92
+ async publish(dataId, group, content) {
93
+ if (!this.client)
94
+ throw new Error('NacosConfigClient 未初始化');
95
+ const result = await this.client.publishSingle(dataId, group, content);
96
+ const key = `${dataId}@@${group}`;
97
+ this.cache.set(key, content);
98
+ this.logger.log(`已发布配置: ${dataId} (${group})`);
99
+ return result;
100
+ }
101
+ /**
102
+ * 删除配置
103
+ */
104
+ async remove(dataId, group) {
105
+ if (!this.client)
106
+ throw new Error('NacosConfigClient 未初始化');
107
+ const result = await this.client.remove(dataId, group);
108
+ const key = `${dataId}@@${group}`;
109
+ this.cache.delete(key);
110
+ this.logger.log(`已删除配置: ${dataId} (${group})`);
111
+ return result;
112
+ }
113
+ /**
114
+ * 订阅配置变更(服务端推送)
115
+ * @param dataId 配置 ID
116
+ * @param group 分组名
117
+ * @param listener 回调函数,参数为新配置内容
118
+ */
119
+ subscribe(dataId, group, listener) {
120
+ if (!this.client)
121
+ throw new Error('NacosConfigClient 未初始化');
122
+ const key = `${dataId}@@${group}`;
123
+ // 内部包装:更新缓存 + 通知所有监听者
124
+ const wrapper = (content) => {
125
+ this.cache.set(key, content);
126
+ this.listeners.get(key)?.forEach((fn) => fn(content));
127
+ };
128
+ this.client.subscribe({ dataId, group }, wrapper);
129
+ if (!this.listeners.has(key)) {
130
+ this.listeners.set(key, new Set());
131
+ }
132
+ this.listeners.get(key).add(listener);
133
+ this.logger.log(`已订阅配置: ${dataId} (${group})`);
134
+ }
135
+ /**
136
+ * 取消订阅
137
+ */
138
+ unSubscribe(dataId, group, listener) {
139
+ if (!this.client)
140
+ throw new Error('NacosConfigClient 未初始化');
141
+ const key = `${dataId}@@${group}`;
142
+ // SDK 要求 listener 必填,此处兼容可选参数
143
+ this.client.unSubscribe({ dataId, group }, (listener ?? (() => undefined)));
144
+ if (listener) {
145
+ this.listeners.get(key)?.delete(listener);
146
+ }
147
+ else {
148
+ this.listeners.delete(key);
149
+ }
150
+ }
151
+ /** 获取原始客户端 */
152
+ getRawClient() {
153
+ return this.client;
154
+ }
155
+ /** 内部方法:加载配置并建立订阅 */
156
+ async loadAndSubscribe(dataId, group) {
157
+ try {
158
+ const content = await this.getConfig(dataId, group);
159
+ this.logger.log(`已加载配置: ${dataId} (${group})`);
160
+ this.subscribe(dataId, group, (newContent) => {
161
+ this.logger.log(`配置已更新: ${dataId} (${group})`);
162
+ });
163
+ void content;
164
+ }
165
+ catch (err) {
166
+ this.logger.error(`加载配置失败: ${dataId} (${group})`, err);
167
+ }
168
+ }
169
+ };
170
+ exports.NacosConfigService = NacosConfigService;
171
+ exports.NacosConfigService = NacosConfigService = NacosConfigService_1 = __decorate([
172
+ (0, common_1.Injectable)(),
173
+ __param(0, (0, common_1.Optional)()),
174
+ __param(0, (0, common_1.Inject)(nacos_constants_1.NACOS_CONFIG_CLIENT)),
175
+ __param(1, (0, common_1.Optional)()),
176
+ __param(1, (0, common_1.Inject)(nacos_constants_1.NACOS_OPTIONS)),
177
+ __metadata("design:paramtypes", [Object, Object])
178
+ ], NacosConfigService);
179
+ //# sourceMappingURL=nacos-config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos-config.service.js","sourceRoot":"","sources":["../src/nacos-config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,2CAAqG;AAErG,uDAAuE;AAIhE,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAO7B,YAC2C,MAAiD,EACvD,OAAmD;QAD5B,WAAM,GAAN,MAAM,CAA0B;QACtC,YAAO,GAAP,OAAO,CAA2B;QARvE,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9D,uCAAuC;QACtB,UAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnD,yCAAyC;QACxB,cAAS,GAAG,IAAI,GAAG,EAA0C,CAAC;IAK5E,CAAC;IAEJ,8BAA8B;IAC9B,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAEzC,YAAY;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;QACrD,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,KAAK,GAAG,eAAe;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC9B,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAU,MAAc,EAAE,KAAK,GAAG,eAAe;QACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,oBAAoB,CAAC,CAAC;YACnD,OAAO,OAAuB,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,KAAa,EAAE,OAAe;QAC1D,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,KAAa;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAc,EAAE,KAAa,EAAE,QAAmC;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC;QAClC,sBAAsB;QACtB,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAc,EAAE,KAAa,EAAE,QAAoC;QAC7E,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC;QAClC,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAQ,CAAC,CAAC;QACnF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,cAAc;IACd,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,qBAAqB;IACb,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,KAAa;QAC1D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,KAAK,OAAO,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF,CAAA;AAlJY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,qCAAmB,CAAC,CAAA;IACvC,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,+BAAa,CAAC,CAAA;;GATzB,kBAAkB,CAkJ9B"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * NestJS Nacos 插件 - Naming 服务(服务发现/注册)
3
+ *
4
+ * 封装 NacosNamingClient,负责:
5
+ * - 客户端生命周期管理(初始化 / 关闭)
6
+ * - 服务实例自动注册与注销
7
+ * - 服务订阅与实例查询
8
+ */
9
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
10
+ import { NacosNamingClient } from 'nacos';
11
+ import { NacosInstanceOptions, NacosModuleOptions } from './nacos.interfaces';
12
+ export declare class NacosNamingService implements OnModuleInit, OnModuleDestroy {
13
+ private readonly client;
14
+ private readonly options;
15
+ private readonly logger;
16
+ /** 已注册的实例配置(用于模块销毁时注销) */
17
+ private registeredInstances;
18
+ constructor(client: NacosNamingClient | null, options: NacosModuleOptions | null);
19
+ /** 模块初始化:等待客户端就绪 + 自动注册实例 */
20
+ onModuleInit(): Promise<void>;
21
+ /** 模块销毁:注销所有已注册实例 + 关闭客户端 */
22
+ onModuleDestroy(): Promise<void>;
23
+ /**
24
+ * 注册服务实例
25
+ * @param inst 实例配置
26
+ */
27
+ register(inst: NacosInstanceOptions): Promise<void>;
28
+ /**
29
+ * 注销服务实例
30
+ * @param inst 实例配置
31
+ */
32
+ deregister(inst: NacosInstanceOptions): Promise<void>;
33
+ /**
34
+ * 查询服务的所有实例
35
+ * @param serviceName 服务名
36
+ * @param groupName 分组名
37
+ * @param clusters 集群名
38
+ * @param subscribe 是否订阅,默认 true
39
+ */
40
+ getAllInstances(serviceName: string, groupName?: string, clusters?: string, subscribe?: boolean): Promise<import("nacos-naming").Hosts>;
41
+ /**
42
+ * 查询健康实例
43
+ */
44
+ selectInstances(serviceName: string, groupName?: string, clusters?: string, healthy?: boolean, subscribe?: boolean): Promise<import("nacos-naming").Hosts>;
45
+ /**
46
+ * 订阅服务实例变更(服务端推送)
47
+ * @param info 服务信息,字符串为 serviceName,对象为 { serviceName, groupName, clusters }
48
+ * @param listener 回调函数,参数为实例列表
49
+ */
50
+ subscribe(info: string | {
51
+ serviceName: string;
52
+ groupName?: string;
53
+ clusters?: string;
54
+ }, listener: (hosts: any[]) => void): void;
55
+ /**
56
+ * 取消订阅
57
+ */
58
+ unSubscribe(info: string | {
59
+ serviceName: string;
60
+ groupName?: string;
61
+ clusters?: string;
62
+ }, listener?: (hosts: any[]) => void): void;
63
+ /** 获取 Nacos 服务端状态:'UP' 或 'DOWN' */
64
+ getServerStatus(): string;
65
+ /** 获取原始客户端(需要使用高级 API 时) */
66
+ getRawClient(): NacosNamingClient | null;
67
+ }
68
+ //# sourceMappingURL=nacos-naming.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos-naming.service.d.ts","sourceRoot":"","sources":["../src/nacos-naming.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAA8B,eAAe,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,qBACa,kBAAmB,YAAW,YAAY,EAAE,eAAe;IAM3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,0BAA0B;IAC1B,OAAO,CAAC,mBAAmB,CAA8B;gBAGG,MAAM,EAAE,iBAAiB,GAAG,IAAI,EACtC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAGxF,6BAA6B;IACvB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,6BAA6B;IACvB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,UAAO;IAMlB;;OAEG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,UAAO,EACd,SAAS,UAAO;IAMlB;;;;OAIG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,GAC/B,IAAI;IAMP;;OAEG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,GAChC,IAAI;IAMP,mCAAmC;IACnC,eAAe,IAAI,MAAM;IAKzB,4BAA4B;IAC5B,YAAY,IAAI,iBAAiB,GAAG,IAAI;CAGzC"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var NacosNamingService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.NacosNamingService = void 0;
17
+ /**
18
+ * NestJS Nacos 插件 - Naming 服务(服务发现/注册)
19
+ *
20
+ * 封装 NacosNamingClient,负责:
21
+ * - 客户端生命周期管理(初始化 / 关闭)
22
+ * - 服务实例自动注册与注销
23
+ * - 服务订阅与实例查询
24
+ */
25
+ const common_1 = require("@nestjs/common");
26
+ const nacos_constants_1 = require("./nacos.constants");
27
+ let NacosNamingService = NacosNamingService_1 = class NacosNamingService {
28
+ constructor(client, options) {
29
+ this.client = client;
30
+ this.options = options;
31
+ this.logger = new common_1.Logger(NacosNamingService_1.name);
32
+ /** 已注册的实例配置(用于模块销毁时注销) */
33
+ this.registeredInstances = [];
34
+ }
35
+ /** 模块初始化:等待客户端就绪 + 自动注册实例 */
36
+ async onModuleInit() {
37
+ if (!this.client) {
38
+ this.logger.warn('NacosNamingClient 未初始化,Naming 功能跳过');
39
+ return;
40
+ }
41
+ await this.client.ready();
42
+ this.logger.log('NacosNamingClient 已就绪');
43
+ // 自动注册配置中的服务实例
44
+ const instances = this.options?.instances ?? [];
45
+ for (const inst of instances) {
46
+ await this.register(inst);
47
+ }
48
+ }
49
+ /** 模块销毁:注销所有已注册实例 + 关闭客户端 */
50
+ async onModuleDestroy() {
51
+ if (!this.client)
52
+ return;
53
+ // 注销所有已注册实例
54
+ for (const inst of this.registeredInstances) {
55
+ try {
56
+ await this.deregister(inst);
57
+ }
58
+ catch (err) {
59
+ this.logger.error(`注销实例失败: ${inst.serviceName}`, err);
60
+ }
61
+ }
62
+ this.logger.log('NacosNamingClient 已关闭');
63
+ }
64
+ /**
65
+ * 注册服务实例
66
+ * @param inst 实例配置
67
+ */
68
+ async register(inst) {
69
+ if (!this.client)
70
+ throw new Error('NacosNamingClient 未初始化');
71
+ const { serviceName, ip, port, groupName, ...rest } = inst;
72
+ // SDK 的 Instance 类型要求 instanceId/healthy/enabled,但注册时由服务端生成,故用 as any
73
+ await this.client.registerInstance(serviceName, {
74
+ ip,
75
+ port,
76
+ ...rest,
77
+ }, groupName);
78
+ this.registeredInstances.push(inst);
79
+ this.logger.log(`已注册服务实例: ${serviceName} (${ip}:${port})`);
80
+ }
81
+ /**
82
+ * 注销服务实例
83
+ * @param inst 实例配置
84
+ */
85
+ async deregister(inst) {
86
+ if (!this.client)
87
+ throw new Error('NacosNamingClient 未初始化');
88
+ const { serviceName, ip, port, groupName } = inst;
89
+ await this.client.deregisterInstance(serviceName, { ip, port }, groupName);
90
+ this.registeredInstances = this.registeredInstances.filter((i) => !(i.serviceName === serviceName && i.ip === ip && i.port === port));
91
+ this.logger.log(`已注销服务实例: ${serviceName} (${ip}:${port})`);
92
+ }
93
+ /**
94
+ * 查询服务的所有实例
95
+ * @param serviceName 服务名
96
+ * @param groupName 分组名
97
+ * @param clusters 集群名
98
+ * @param subscribe 是否订阅,默认 true
99
+ */
100
+ async getAllInstances(serviceName, groupName, clusters, subscribe = true) {
101
+ if (!this.client)
102
+ throw new Error('NacosNamingClient 未初始化');
103
+ return this.client.getAllInstances(serviceName, groupName, clusters, subscribe);
104
+ }
105
+ /**
106
+ * 查询健康实例
107
+ */
108
+ async selectInstances(serviceName, groupName, clusters, healthy = true, subscribe = true) {
109
+ if (!this.client)
110
+ throw new Error('NacosNamingClient 未初始化');
111
+ return this.client.selectInstances(serviceName, groupName, clusters, healthy, subscribe);
112
+ }
113
+ /**
114
+ * 订阅服务实例变更(服务端推送)
115
+ * @param info 服务信息,字符串为 serviceName,对象为 { serviceName, groupName, clusters }
116
+ * @param listener 回调函数,参数为实例列表
117
+ */
118
+ subscribe(info, listener) {
119
+ if (!this.client)
120
+ throw new Error('NacosNamingClient 未初始化');
121
+ this.client.subscribe(info, listener);
122
+ this.logger.log(`已订阅服务: ${typeof info === 'string' ? info : info.serviceName}`);
123
+ }
124
+ /**
125
+ * 取消订阅
126
+ */
127
+ unSubscribe(info, listener) {
128
+ if (!this.client)
129
+ throw new Error('NacosNamingClient 未初始化');
130
+ // SDK 要求 listener 必填,此处兼容可选参数
131
+ this.client.unSubscribe(info, (listener ?? (() => undefined)));
132
+ }
133
+ /** 获取 Nacos 服务端状态:'UP' 或 'DOWN' */
134
+ getServerStatus() {
135
+ if (!this.client)
136
+ return 'DOWN';
137
+ return this.client.getServerStatus();
138
+ }
139
+ /** 获取原始客户端(需要使用高级 API 时) */
140
+ getRawClient() {
141
+ return this.client;
142
+ }
143
+ };
144
+ exports.NacosNamingService = NacosNamingService;
145
+ exports.NacosNamingService = NacosNamingService = NacosNamingService_1 = __decorate([
146
+ (0, common_1.Injectable)(),
147
+ __param(0, (0, common_1.Optional)()),
148
+ __param(0, (0, common_1.Inject)(nacos_constants_1.NACOS_NAMING_CLIENT)),
149
+ __param(1, (0, common_1.Optional)()),
150
+ __param(1, (0, common_1.Inject)(nacos_constants_1.NACOS_OPTIONS)),
151
+ __metadata("design:paramtypes", [Object, Object])
152
+ ], NacosNamingService);
153
+ //# sourceMappingURL=nacos-naming.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos-naming.service.js","sourceRoot":"","sources":["../src/nacos-naming.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * NestJS Nacos 插件 - 依赖注入 Token 常量
3
+ */
4
+ export declare const NACOS_OPTIONS = "NACOS_OPTIONS";
5
+ export declare const NACOS_MODULE_ID = "NACOS_MODULE_ID";
6
+ export declare const NACOS_NAMING_CLIENT = "NACOS_NAMING_CLIENT";
7
+ export declare const NACOS_CONFIG_CLIENT = "NACOS_CONFIG_CLIENT";
8
+ //# sourceMappingURL=nacos.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.constants.d.ts","sourceRoot":"","sources":["../src/nacos.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAGjD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * NestJS Nacos 插件 - 依赖注入 Token 常量
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NACOS_CONFIG_CLIENT = exports.NACOS_NAMING_CLIENT = exports.NACOS_MODULE_ID = exports.NACOS_OPTIONS = void 0;
7
+ // Nacos 模块配置 Token
8
+ exports.NACOS_OPTIONS = 'NACOS_OPTIONS';
9
+ exports.NACOS_MODULE_ID = 'NACOS_MODULE_ID';
10
+ // Nacos 客户端 Token
11
+ exports.NACOS_NAMING_CLIENT = 'NACOS_NAMING_CLIENT';
12
+ exports.NACOS_CONFIG_CLIENT = 'NACOS_CONFIG_CLIENT';
13
+ //# sourceMappingURL=nacos.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.constants.js","sourceRoot":"","sources":["../src/nacos.constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mBAAmB;AACN,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AAEjD,kBAAkB;AACL,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAC5C,QAAA,mBAAmB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** 注入 NacosNamingService */
2
+ export declare const InjectNacosNaming: () => PropertyDecorator & ParameterDecorator;
3
+ /** 注入 NacosConfigService */
4
+ export declare const InjectNacosConfig: () => PropertyDecorator & ParameterDecorator;
5
+ /** 注入原始 Naming 客户端(高级用法) */
6
+ export declare const InjectNacosNamingClient: () => PropertyDecorator & ParameterDecorator;
7
+ /** 注入原始 Config 客户端(高级用法) */
8
+ export declare const InjectNacosConfigClient: () => PropertyDecorator & ParameterDecorator;
9
+ //# sourceMappingURL=nacos.decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.decorators.d.ts","sourceRoot":"","sources":["../src/nacos.decorators.ts"],"names":[],"mappings":"AAYA,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,8CAAmC,CAAC;AAElE,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,8CAAmC,CAAC;AAElE,4BAA4B;AAC5B,eAAO,MAAM,uBAAuB,8CAAoC,CAAC;AAEzE,4BAA4B;AAC5B,eAAO,MAAM,uBAAuB,8CAAoC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectNacosConfigClient = exports.InjectNacosNamingClient = exports.InjectNacosConfig = exports.InjectNacosNaming = void 0;
4
+ /**
5
+ * NestJS Nacos 插件 - 装饰器
6
+ *
7
+ * @InjectNacosNaming() — 注入 Naming 服务
8
+ * @InjectNacosConfig() — 注入 Config 服务
9
+ * @NacosConfig() — 参数装饰器:在路由/方法参数上直接获取某 dataId 的配置值(需配合 ConfigService 预加载)
10
+ */
11
+ const common_1 = require("@nestjs/common");
12
+ const nacos_constants_1 = require("./nacos.constants");
13
+ const nacos_naming_service_1 = require("./nacos-naming.service");
14
+ const nacos_config_service_1 = require("./nacos-config.service");
15
+ /** 注入 NacosNamingService */
16
+ const InjectNacosNaming = () => (0, common_1.Inject)(nacos_naming_service_1.NacosNamingService);
17
+ exports.InjectNacosNaming = InjectNacosNaming;
18
+ /** 注入 NacosConfigService */
19
+ const InjectNacosConfig = () => (0, common_1.Inject)(nacos_config_service_1.NacosConfigService);
20
+ exports.InjectNacosConfig = InjectNacosConfig;
21
+ /** 注入原始 Naming 客户端(高级用法) */
22
+ const InjectNacosNamingClient = () => (0, common_1.Inject)(nacos_constants_1.NACOS_NAMING_CLIENT);
23
+ exports.InjectNacosNamingClient = InjectNacosNamingClient;
24
+ /** 注入原始 Config 客户端(高级用法) */
25
+ const InjectNacosConfigClient = () => (0, common_1.Inject)(nacos_constants_1.NACOS_CONFIG_CLIENT);
26
+ exports.InjectNacosConfigClient = InjectNacosConfigClient;
27
+ //# sourceMappingURL=nacos.decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.decorators.js","sourceRoot":"","sources":["../src/nacos.decorators.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,2CAA+C;AAC/C,uDAA6E;AAC7E,iEAA4D;AAC5D,iEAA4D;AAE5D,4BAA4B;AACrB,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,yCAAkB,CAAC,CAAC;AAArD,QAAA,iBAAiB,qBAAoC;AAElE,4BAA4B;AACrB,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,yCAAkB,CAAC,CAAC;AAArD,QAAA,iBAAiB,qBAAoC;AAElE,4BAA4B;AACrB,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,qCAAmB,CAAC,CAAC;AAA5D,QAAA,uBAAuB,2BAAqC;AAEzE,4BAA4B;AACrB,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,qCAAmB,CAAC,CAAC;AAA5D,QAAA,uBAAuB,2BAAqC"}
@@ -0,0 +1,14 @@
1
+ import { NacosNamingService } from './nacos-naming.service';
2
+ export declare class NacosHealthIndicator {
3
+ private readonly namingService;
4
+ private readonly logger;
5
+ constructor(namingService: NacosNamingService);
6
+ /**
7
+ * 检查 Nacos 服务端连接状态
8
+ * @returns { status: 'up' | 'down' }
9
+ */
10
+ isHealthy(): {
11
+ status: 'up' | 'down';
12
+ };
13
+ }
14
+ //# sourceMappingURL=nacos.health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.health.d.ts","sourceRoot":"","sources":["../src/nacos.health.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBACa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEnC,aAAa,EAAE,kBAAkB;IAE9D;;;OAGG;IACH,SAAS,IAAI;QAAE,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE;CAUvC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var NacosHealthIndicator_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.NacosHealthIndicator = void 0;
14
+ /**
15
+ * NestJS Nacos 插件 - 健康检查指示器(可选)
16
+ *
17
+ * 配合 @nestjs/terminus 使用,暴露 /health 端点时可检查 Nacos 连接状态。
18
+ * 用法:在 HealthController 中注入并调用 .isHealthy()
19
+ *
20
+ * import { HealthIndicatorService } from '@nestjs/terminus';
21
+ * @Injectable()
22
+ * export class HealthService {
23
+ * constructor(private nacos: NacosHealthIndicator) {}
24
+ * check() { return this.nacos.isHealthy('nacos'); }
25
+ * }
26
+ *
27
+ * 若未安装 @nestjs/terminus,可直接使用 isHealthy() 方法。
28
+ */
29
+ const common_1 = require("@nestjs/common");
30
+ const nacos_naming_service_1 = require("./nacos-naming.service");
31
+ let NacosHealthIndicator = NacosHealthIndicator_1 = class NacosHealthIndicator {
32
+ constructor(namingService) {
33
+ this.namingService = namingService;
34
+ this.logger = new common_1.Logger(NacosHealthIndicator_1.name);
35
+ }
36
+ /**
37
+ * 检查 Nacos 服务端连接状态
38
+ * @returns { status: 'up' | 'down' }
39
+ */
40
+ isHealthy() {
41
+ try {
42
+ const serverStatus = this.namingService.getServerStatus();
43
+ const isUp = serverStatus === 'UP';
44
+ return { status: isUp ? 'up' : 'down' };
45
+ }
46
+ catch (err) {
47
+ this.logger.error('Nacos 健康检查失败', err);
48
+ return { status: 'down' };
49
+ }
50
+ }
51
+ };
52
+ exports.NacosHealthIndicator = NacosHealthIndicator;
53
+ exports.NacosHealthIndicator = NacosHealthIndicator = NacosHealthIndicator_1 = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __metadata("design:paramtypes", [nacos_naming_service_1.NacosNamingService])
56
+ ], NacosHealthIndicator);
57
+ //# sourceMappingURL=nacos.health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos.health.js","sourceRoot":"","sources":["../src/nacos.health.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,2CAAoD;AACpD,iEAA4D;AAGrD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YAA6B,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;QAF7C,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEC,CAAC;IAElE;;;OAGG;IACH,SAAS;QACP,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,YAAY,KAAK,IAAI,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAnBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAIiC,yCAAkB;GAHnD,oBAAoB,CAmBhC"}