@lee-zg/melange 1.2.3 → 1.2.5

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.
@@ -0,0 +1,201 @@
1
+ import { C as Constructor } from './types-BtOUCLB-.cjs';
2
+
3
+ /**
4
+ * @fileoverview 依赖注入容器
5
+ * @module melange/core/container
6
+ * @description 提供一个简单而强大的依赖注入容器
7
+ * 支持单例、工厂函数和自动解析。
8
+ */
9
+
10
+ /**
11
+ * 用于标识依赖项的令牌类型。
12
+ * 可以是字符串、符号或类构造函数。
13
+ */
14
+ type Token<T = unknown> = string | symbol | Constructor<T>;
15
+ /**
16
+ * 创建实例的工厂函数类型。
17
+ */
18
+ type Factory<T> = (container: Container) => T;
19
+ /**
20
+ * 依赖注册的生命周期选项。
21
+ */
22
+ declare enum Lifecycle {
23
+ /** 每次都创建新实例 */
24
+ Transient = "transient",
25
+ /** 创建单个实例并重复使用 */
26
+ Singleton = "singleton"
27
+ }
28
+ /**
29
+ * 依赖注入容器。
30
+ * 管理依赖项的生命周期和解析。
31
+ *
32
+ * @description
33
+ * Container 类提供控制反转 (IoC) 功能,
34
+ * 允许您通过在运行时注册和解析依赖项来解耦代码。
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // 创建容器
39
+ * const container = new Container();
40
+ *
41
+ * // 注册类
42
+ * container.register('logger', () => new ConsoleLogger());
43
+ *
44
+ * // 注册单例
45
+ * container.registerSingleton('config', () => loadConfig());
46
+ *
47
+ * // 解析依赖项
48
+ * const logger = container.resolve<Logger>('logger');
49
+ *
50
+ * // 使用装饰器
51
+ * @Injectable()
52
+ * class UserService {
53
+ * constructor(@Inject('logger') private logger: Logger) {}
54
+ * }
55
+ * container.registerClass(UserService);
56
+ * ```
57
+ */
58
+ declare class Container {
59
+ /**
60
+ * 已注册依赖项的映射
61
+ */
62
+ private registrations;
63
+ /**
64
+ * 用于分层解析的父容器
65
+ */
66
+ private parent;
67
+ /**
68
+ * 创建新的容器实例。
69
+ *
70
+ * @param parent - 用于分层解析的可选父容器
71
+ */
72
+ constructor(parent?: Container);
73
+ /**
74
+ * 使用工厂函数注册依赖项。
75
+ *
76
+ * @template T - 依赖项类型
77
+ * @param token - 用于标识依赖项的令牌
78
+ * @param factory - 创建依赖项的工厂函数
79
+ * @param lifecycle - 依赖项的生命周期(默认:Transient)
80
+ * @returns 容器实例,用于链式调用
81
+ */
82
+ register<T>(token: Token<T>, factory: Factory<T>, lifecycle?: Lifecycle): this;
83
+ /**
84
+ * 注册单例依赖项。
85
+ * 工厂函数只会被调用一次,之后返回相同的实例。
86
+ *
87
+ * @template T - 依赖项类型
88
+ * @param token - 用于标识依赖项的令牌
89
+ * @param factory - 创建依赖项的工厂函数
90
+ * @returns 容器实例,用于链式调用
91
+ */
92
+ registerSingleton<T>(token: Token<T>, factory: Factory<T>): this;
93
+ /**
94
+ * 直接将值注册为单例。
95
+ *
96
+ * @template T - 值类型
97
+ * @param token - 用于标识依赖项的令牌
98
+ * @param value - 要注册的值
99
+ * @returns 容器实例,用于链式调用
100
+ */
101
+ registerValue<T>(token: Token<T>, value: T): this;
102
+ /**
103
+ * 将类注册为依赖项。
104
+ * 类的实例化会自动解析其依赖项。
105
+ *
106
+ * @template T - 类类型
107
+ * @param ClassConstructor - 要注册的类构造函数
108
+ * @param lifecycle - 依赖项的生命周期(默认:Transient)
109
+ * @returns 容器实例,用于链式调用
110
+ */
111
+ registerClass<T extends object>(ClassConstructor: Constructor<T>, lifecycle?: Lifecycle): this;
112
+ /**
113
+ * 通过令牌解析依赖项。
114
+ *
115
+ * @template T - 依赖项类型
116
+ * @param token - 标识依赖项的令牌
117
+ * @returns 已解析的依赖项
118
+ * @throws Error 如果依赖项未注册
119
+ */
120
+ resolve<T>(token: Token<T>): T;
121
+ /**
122
+ * 检查依赖项是否已注册。
123
+ *
124
+ * @param token - 要检查的令牌
125
+ * @returns 如果依赖项已注册则返回 true
126
+ */
127
+ has(token: Token): boolean;
128
+ /**
129
+ * 移除依赖项注册。
130
+ *
131
+ * @param token - 要移除的令牌
132
+ * @returns 如果注册已被移除则返回 true
133
+ */
134
+ unregister(token: Token): boolean;
135
+ /**
136
+ * 清除所有注册。
137
+ */
138
+ clear(): void;
139
+ /**
140
+ * 创建子容器。
141
+ * 子容器从父容器继承注册。
142
+ *
143
+ * @returns 新的子容器
144
+ */
145
+ createChild(): Container;
146
+ /**
147
+ * 获取类的注入元数据。
148
+ */
149
+ private getInjectMetadata;
150
+ }
151
+ /**
152
+ * 为了方便而提供的全局容器实例。
153
+ */
154
+ declare const globalContainer: Container;
155
+ /**
156
+ * 将类标记为可注入。
157
+ * 自动依赖解析所必需。
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * @Injectable()
162
+ * class UserService {
163
+ * constructor(private userRepo: UserRepository) {}
164
+ * }
165
+ * ```
166
+ *
167
+ * @returns 类装饰器
168
+ */
169
+ declare function Injectable(): ClassDecorator;
170
+ /**
171
+ * 标记构造函数参数以进行注入。
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * @Injectable()
176
+ * class UserService {
177
+ * constructor(@Inject('logger') private logger: Logger) {}
178
+ * }
179
+ * ```
180
+ *
181
+ * @param token - 要注入的令牌
182
+ * @returns 参数装饰器
183
+ */
184
+ declare function Inject(token: Token): ParameterDecorator;
185
+ /**
186
+ * 将类标记为单例。
187
+ * 结合 @Injectable 和单例生命周期。
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * @Singleton()
192
+ * class ConfigService {
193
+ * // 只会存在一个实例
194
+ * }
195
+ * ```
196
+ *
197
+ * @returns 类装饰器
198
+ */
199
+ declare function Singleton(): ClassDecorator;
200
+
201
+ export { Container as C, type Factory as F, Injectable as I, Lifecycle as L, Singleton as S, type Token as T, Inject as a, globalContainer as g };
@@ -0,0 +1,201 @@
1
+ import { C as Constructor } from './types-BtOUCLB-.js';
2
+
3
+ /**
4
+ * @fileoverview 依赖注入容器
5
+ * @module melange/core/container
6
+ * @description 提供一个简单而强大的依赖注入容器
7
+ * 支持单例、工厂函数和自动解析。
8
+ */
9
+
10
+ /**
11
+ * 用于标识依赖项的令牌类型。
12
+ * 可以是字符串、符号或类构造函数。
13
+ */
14
+ type Token<T = unknown> = string | symbol | Constructor<T>;
15
+ /**
16
+ * 创建实例的工厂函数类型。
17
+ */
18
+ type Factory<T> = (container: Container) => T;
19
+ /**
20
+ * 依赖注册的生命周期选项。
21
+ */
22
+ declare enum Lifecycle {
23
+ /** 每次都创建新实例 */
24
+ Transient = "transient",
25
+ /** 创建单个实例并重复使用 */
26
+ Singleton = "singleton"
27
+ }
28
+ /**
29
+ * 依赖注入容器。
30
+ * 管理依赖项的生命周期和解析。
31
+ *
32
+ * @description
33
+ * Container 类提供控制反转 (IoC) 功能,
34
+ * 允许您通过在运行时注册和解析依赖项来解耦代码。
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // 创建容器
39
+ * const container = new Container();
40
+ *
41
+ * // 注册类
42
+ * container.register('logger', () => new ConsoleLogger());
43
+ *
44
+ * // 注册单例
45
+ * container.registerSingleton('config', () => loadConfig());
46
+ *
47
+ * // 解析依赖项
48
+ * const logger = container.resolve<Logger>('logger');
49
+ *
50
+ * // 使用装饰器
51
+ * @Injectable()
52
+ * class UserService {
53
+ * constructor(@Inject('logger') private logger: Logger) {}
54
+ * }
55
+ * container.registerClass(UserService);
56
+ * ```
57
+ */
58
+ declare class Container {
59
+ /**
60
+ * 已注册依赖项的映射
61
+ */
62
+ private registrations;
63
+ /**
64
+ * 用于分层解析的父容器
65
+ */
66
+ private parent;
67
+ /**
68
+ * 创建新的容器实例。
69
+ *
70
+ * @param parent - 用于分层解析的可选父容器
71
+ */
72
+ constructor(parent?: Container);
73
+ /**
74
+ * 使用工厂函数注册依赖项。
75
+ *
76
+ * @template T - 依赖项类型
77
+ * @param token - 用于标识依赖项的令牌
78
+ * @param factory - 创建依赖项的工厂函数
79
+ * @param lifecycle - 依赖项的生命周期(默认:Transient)
80
+ * @returns 容器实例,用于链式调用
81
+ */
82
+ register<T>(token: Token<T>, factory: Factory<T>, lifecycle?: Lifecycle): this;
83
+ /**
84
+ * 注册单例依赖项。
85
+ * 工厂函数只会被调用一次,之后返回相同的实例。
86
+ *
87
+ * @template T - 依赖项类型
88
+ * @param token - 用于标识依赖项的令牌
89
+ * @param factory - 创建依赖项的工厂函数
90
+ * @returns 容器实例,用于链式调用
91
+ */
92
+ registerSingleton<T>(token: Token<T>, factory: Factory<T>): this;
93
+ /**
94
+ * 直接将值注册为单例。
95
+ *
96
+ * @template T - 值类型
97
+ * @param token - 用于标识依赖项的令牌
98
+ * @param value - 要注册的值
99
+ * @returns 容器实例,用于链式调用
100
+ */
101
+ registerValue<T>(token: Token<T>, value: T): this;
102
+ /**
103
+ * 将类注册为依赖项。
104
+ * 类的实例化会自动解析其依赖项。
105
+ *
106
+ * @template T - 类类型
107
+ * @param ClassConstructor - 要注册的类构造函数
108
+ * @param lifecycle - 依赖项的生命周期(默认:Transient)
109
+ * @returns 容器实例,用于链式调用
110
+ */
111
+ registerClass<T extends object>(ClassConstructor: Constructor<T>, lifecycle?: Lifecycle): this;
112
+ /**
113
+ * 通过令牌解析依赖项。
114
+ *
115
+ * @template T - 依赖项类型
116
+ * @param token - 标识依赖项的令牌
117
+ * @returns 已解析的依赖项
118
+ * @throws Error 如果依赖项未注册
119
+ */
120
+ resolve<T>(token: Token<T>): T;
121
+ /**
122
+ * 检查依赖项是否已注册。
123
+ *
124
+ * @param token - 要检查的令牌
125
+ * @returns 如果依赖项已注册则返回 true
126
+ */
127
+ has(token: Token): boolean;
128
+ /**
129
+ * 移除依赖项注册。
130
+ *
131
+ * @param token - 要移除的令牌
132
+ * @returns 如果注册已被移除则返回 true
133
+ */
134
+ unregister(token: Token): boolean;
135
+ /**
136
+ * 清除所有注册。
137
+ */
138
+ clear(): void;
139
+ /**
140
+ * 创建子容器。
141
+ * 子容器从父容器继承注册。
142
+ *
143
+ * @returns 新的子容器
144
+ */
145
+ createChild(): Container;
146
+ /**
147
+ * 获取类的注入元数据。
148
+ */
149
+ private getInjectMetadata;
150
+ }
151
+ /**
152
+ * 为了方便而提供的全局容器实例。
153
+ */
154
+ declare const globalContainer: Container;
155
+ /**
156
+ * 将类标记为可注入。
157
+ * 自动依赖解析所必需。
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * @Injectable()
162
+ * class UserService {
163
+ * constructor(private userRepo: UserRepository) {}
164
+ * }
165
+ * ```
166
+ *
167
+ * @returns 类装饰器
168
+ */
169
+ declare function Injectable(): ClassDecorator;
170
+ /**
171
+ * 标记构造函数参数以进行注入。
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * @Injectable()
176
+ * class UserService {
177
+ * constructor(@Inject('logger') private logger: Logger) {}
178
+ * }
179
+ * ```
180
+ *
181
+ * @param token - 要注入的令牌
182
+ * @returns 参数装饰器
183
+ */
184
+ declare function Inject(token: Token): ParameterDecorator;
185
+ /**
186
+ * 将类标记为单例。
187
+ * 结合 @Injectable 和单例生命周期。
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * @Singleton()
192
+ * class ConfigService {
193
+ * // 只会存在一个实例
194
+ * }
195
+ * ```
196
+ *
197
+ * @returns 类装饰器
198
+ */
199
+ declare function Singleton(): ClassDecorator;
200
+
201
+ export { Container as C, type Factory as F, Injectable as I, Lifecycle as L, Singleton as S, type Token as T, Inject as a, globalContainer as g };
@@ -1,4 +1,5 @@
1
- import { v as EventHandler, x as Subscription, C as Constructor } from '../types-BtOUCLB-.cjs';
1
+ import { v as EventHandler, x as Subscription } from '../types-BtOUCLB-.cjs';
2
+ export { C as Container, F as Factory, a as Inject, I as Injectable, L as Lifecycle, S as Singleton, T as Token, g as globalContainer } from '../container-B8n-ok8M.cjs';
2
3
 
3
4
  /**
4
5
  * @fileoverview 用于发布/订阅模式的事件发射器类
@@ -125,204 +126,6 @@ declare class EventEmitter<Events extends EventMap = EventMap> {
125
126
  private addListener;
126
127
  }
127
128
 
128
- /**
129
- * @fileoverview 依赖注入容器
130
- * @module melange/core/container
131
- * @description 提供一个简单而强大的依赖注入容器
132
- * 支持单例、工厂函数和自动解析。
133
- */
134
-
135
- /**
136
- * 用于标识依赖项的令牌类型。
137
- * 可以是字符串、符号或类构造函数。
138
- */
139
- type Token<T = unknown> = string | symbol | Constructor<T>;
140
- /**
141
- * 创建实例的工厂函数类型。
142
- */
143
- type Factory<T> = (container: Container) => T;
144
- /**
145
- * 依赖注册的生命周期选项。
146
- */
147
- declare enum Lifecycle {
148
- /** 每次都创建新实例 */
149
- Transient = "transient",
150
- /** 创建单个实例并重复使用 */
151
- Singleton = "singleton"
152
- }
153
- /**
154
- * 依赖注入容器。
155
- * 管理依赖项的生命周期和解析。
156
- *
157
- * @description
158
- * Container 类提供控制反转 (IoC) 功能,
159
- * 允许您通过在运行时注册和解析依赖项来解耦代码。
160
- *
161
- * @example
162
- * ```typescript
163
- * // 创建容器
164
- * const container = new Container();
165
- *
166
- * // 注册类
167
- * container.register('logger', () => new ConsoleLogger());
168
- *
169
- * // 注册单例
170
- * container.registerSingleton('config', () => loadConfig());
171
- *
172
- * // 解析依赖项
173
- * const logger = container.resolve<Logger>('logger');
174
- *
175
- * // 使用装饰器
176
- * @Injectable()
177
- * class UserService {
178
- * constructor(@Inject('logger') private logger: Logger) {}
179
- * }
180
- * container.registerClass(UserService);
181
- * ```
182
- */
183
- declare class Container {
184
- /**
185
- * 已注册依赖项的映射
186
- */
187
- private registrations;
188
- /**
189
- * 用于分层解析的父容器
190
- */
191
- private parent;
192
- /**
193
- * 创建新的容器实例。
194
- *
195
- * @param parent - 用于分层解析的可选父容器
196
- */
197
- constructor(parent?: Container);
198
- /**
199
- * 使用工厂函数注册依赖项。
200
- *
201
- * @template T - 依赖项类型
202
- * @param token - 用于标识依赖项的令牌
203
- * @param factory - 创建依赖项的工厂函数
204
- * @param lifecycle - 依赖项的生命周期(默认:Transient)
205
- * @returns 容器实例,用于链式调用
206
- */
207
- register<T>(token: Token<T>, factory: Factory<T>, lifecycle?: Lifecycle): this;
208
- /**
209
- * 注册单例依赖项。
210
- * 工厂函数只会被调用一次,之后返回相同的实例。
211
- *
212
- * @template T - 依赖项类型
213
- * @param token - 用于标识依赖项的令牌
214
- * @param factory - 创建依赖项的工厂函数
215
- * @returns 容器实例,用于链式调用
216
- */
217
- registerSingleton<T>(token: Token<T>, factory: Factory<T>): this;
218
- /**
219
- * 直接将值注册为单例。
220
- *
221
- * @template T - 值类型
222
- * @param token - 用于标识依赖项的令牌
223
- * @param value - 要注册的值
224
- * @returns 容器实例,用于链式调用
225
- */
226
- registerValue<T>(token: Token<T>, value: T): this;
227
- /**
228
- * 将类注册为依赖项。
229
- * 类的实例化会自动解析其依赖项。
230
- *
231
- * @template T - 类类型
232
- * @param ClassConstructor - 要注册的类构造函数
233
- * @param lifecycle - 依赖项的生命周期(默认:Transient)
234
- * @returns 容器实例,用于链式调用
235
- */
236
- registerClass<T extends object>(ClassConstructor: Constructor<T>, lifecycle?: Lifecycle): this;
237
- /**
238
- * 通过令牌解析依赖项。
239
- *
240
- * @template T - 依赖项类型
241
- * @param token - 标识依赖项的令牌
242
- * @returns 已解析的依赖项
243
- * @throws Error 如果依赖项未注册
244
- */
245
- resolve<T>(token: Token<T>): T;
246
- /**
247
- * 检查依赖项是否已注册。
248
- *
249
- * @param token - 要检查的令牌
250
- * @returns 如果依赖项已注册则返回 true
251
- */
252
- has(token: Token): boolean;
253
- /**
254
- * 移除依赖项注册。
255
- *
256
- * @param token - 要移除的令牌
257
- * @returns 如果注册已被移除则返回 true
258
- */
259
- unregister(token: Token): boolean;
260
- /**
261
- * 清除所有注册。
262
- */
263
- clear(): void;
264
- /**
265
- * 创建子容器。
266
- * 子容器从父容器继承注册。
267
- *
268
- * @returns 新的子容器
269
- */
270
- createChild(): Container;
271
- /**
272
- * 获取类的注入元数据。
273
- */
274
- private getInjectMetadata;
275
- }
276
- /**
277
- * 为了方便而提供的全局容器实例。
278
- */
279
- declare const globalContainer: Container;
280
- /**
281
- * 将类标记为可注入。
282
- * 自动依赖解析所必需。
283
- *
284
- * @example
285
- * ```typescript
286
- * @Injectable()
287
- * class UserService {
288
- * constructor(private userRepo: UserRepository) {}
289
- * }
290
- * ```
291
- *
292
- * @returns 类装饰器
293
- */
294
- declare function Injectable(): ClassDecorator;
295
- /**
296
- * 标记构造函数参数以进行注入。
297
- *
298
- * @example
299
- * ```typescript
300
- * @Injectable()
301
- * class UserService {
302
- * constructor(@Inject('logger') private logger: Logger) {}
303
- * }
304
- * ```
305
- *
306
- * @param token - 要注入的令牌
307
- * @returns 参数装饰器
308
- */
309
- declare function Inject(token: Token): ParameterDecorator;
310
- /**
311
- * 将类标记为单例。
312
- * 结合 @Injectable 和单例生命周期。
313
- *
314
- * @example
315
- * ```typescript
316
- * @Singleton()
317
- * class ConfigService {
318
- * // 只会存在一个实例
319
- * }
320
- * ```
321
- *
322
- * @returns 类装饰器
323
- */
324
- declare function Singleton(): ClassDecorator;
325
-
326
129
  /**
327
130
  * @fileoverview 方法和类装饰器
328
131
  * @module melange/core/decorators
@@ -715,4 +518,4 @@ declare function toDisposable(dispose: () => void): IDisposable;
715
518
  */
716
519
  declare function combineDisposables(...disposables: IDisposable[]): IDisposable;
717
520
 
718
- export { Bind, Container, Debounce, Deprecated, Disposable, DisposableStore, EventEmitter, type EventMap, type Factory, Frozen, type IDisposable, Inject, Injectable, Lifecycle, Log, Memoize, Retry, Sealed, Singleton, Throttle, Timeout, type Token, Validate, combineDisposables, globalContainer, toDisposable };
521
+ export { Bind, Debounce, Deprecated, Disposable, DisposableStore, EventEmitter, type EventMap, Frozen, type IDisposable, Log, Memoize, Retry, Sealed, Throttle, Timeout, Validate, combineDisposables, toDisposable };