light-di 1.2.0 → 1.3.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.
@@ -0,0 +1,13 @@
1
+ import { ILightDIBaseService } from './ILightDIBaseService';
2
+ /**
3
+ * 服务实现装饰器
4
+ * 自动设置 LightDI 相关的静态属性和方法
5
+ *
6
+ * 使用方式:
7
+ * @ServiceImpl(IBizA)
8
+ * export class BizAImpl implements IBizA {
9
+ * // 实现接口方法
10
+ * }
11
+ */
12
+ export declare function ServiceImpl<T extends ILightDIBaseService>(interfaceClass: abstract new () => T): <U extends new () => T>(target: U) => U;
13
+ //# sourceMappingURL=BaseServiceImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseServiceImpl.d.ts","sourceRoot":"","sources":["../../LightDI/BaseServiceImpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,mBAAmB,EAAE,cAAc,EAAE,QAAQ,WAAW,CAAC,IAC5E,CAAC,SAAS,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAG,CAAC,CAiBtD"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceImpl = ServiceImpl;
4
+ const ServiceToken_1 = require("./ServiceToken");
5
+ /**
6
+ * 服务实现装饰器
7
+ * 自动设置 LightDI 相关的静态属性和方法
8
+ *
9
+ * 使用方式:
10
+ * @ServiceImpl(IBizA)
11
+ * export class BizAImpl implements IBizA {
12
+ * // 实现接口方法
13
+ * }
14
+ */
15
+ function ServiceImpl(interfaceClass) {
16
+ return function (target) {
17
+ // 应用 Service 装饰器(建立接口到实现的映射)
18
+ (0, ServiceToken_1.Service)(interfaceClass)(target);
19
+ // 设置静态属性
20
+ target.__interface__ = interfaceClass;
21
+ target.__self__ = interfaceClass;
22
+ // 设置 ManagerProvider 方法(如果不存在)
23
+ if (!target.ManagerProvider) {
24
+ target.ManagerProvider = function () {
25
+ return new target();
26
+ };
27
+ }
28
+ return target;
29
+ };
30
+ }
31
+ //# sourceMappingURL=BaseServiceImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseServiceImpl.js","sourceRoot":"","sources":["../../LightDI/BaseServiceImpl.ts"],"names":[],"mappings":";;AAaA,kCAkBC;AA9BD,iDAAyC;AAEzC;;;;;;;;;GASG;AACH,SAAgB,WAAW,CAAgC,cAAoC;IAC7F,OAAO,UAAiC,MAAS;QAC/C,6BAA6B;QAC7B,IAAA,sBAAO,EAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;QAEhC,SAAS;QACR,MAAc,CAAC,aAAa,GAAG,cAAc,CAAC;QAC9C,MAAc,CAAC,QAAQ,GAAG,cAAc,CAAC;QAE1C,+BAA+B;QAC/B,IAAI,CAAE,MAAc,CAAC,eAAe,EAAE,CAAC;YACpC,MAAc,CAAC,eAAe,GAAG;gBAChC,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * LightDI 基础服务抽象类
3
+ * 所有服务接口都应该继承此类
4
+ */
5
+ export declare abstract class ILightDIBaseService {
6
+ }
7
+ //# sourceMappingURL=ILightDIBaseService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILightDIBaseService.d.ts","sourceRoot":"","sources":["../../LightDI/ILightDIBaseService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,8BAAsB,mBAAmB;CAGxC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ILightDIBaseService = void 0;
4
+ /**
5
+ * LightDI 基础服务抽象类
6
+ * 所有服务接口都应该继承此类
7
+ */
8
+ class ILightDIBaseService {
9
+ }
10
+ exports.ILightDIBaseService = ILightDIBaseService;
11
+ //# sourceMappingURL=ILightDIBaseService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILightDIBaseService.js","sourceRoot":"","sources":["../../LightDI/ILightDIBaseService.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAsB,mBAAmB;CAGxC;AAHD,kDAGC"}
@@ -0,0 +1,23 @@
1
+ import { ILightDIBaseService } from './ILightDIBaseService';
2
+ /**
3
+ * LightDI 管理器接口
4
+ */
5
+ export interface ILightDIManager {
6
+ /**
7
+ * 绑定服务实现类
8
+ * @param ImplementationClass 服务实现类
9
+ * @param key 可选的服务键,默认为 'default'
10
+ */
11
+ bind<T extends ILightDIBaseService>(ImplementationClass: new () => T, key?: string): void;
12
+ /**
13
+ * 获取服务实例
14
+ * @param InterfaceClass 接口类
15
+ * @param key 可选的服务键,默认为 'default'
16
+ */
17
+ getService<T extends ILightDIBaseService>(InterfaceClass: abstract new () => T, key?: string): T;
18
+ /**
19
+ * 清除所有服务实例(主要用于测试)
20
+ */
21
+ clear(): void;
22
+ }
23
+ //# sourceMappingURL=ILightDIManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILightDIManager.d.ts","sourceRoot":"","sources":["../../LightDI/ILightDIManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,IAAI,CAAC,CAAC,SAAS,mBAAmB,EAChC,mBAAmB,EAAE,UAAU,CAAC,EAChC,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAAC;IAER;;;;OAIG;IACH,UAAU,CAAC,CAAC,SAAS,mBAAmB,EACtC,cAAc,EAAE,QAAQ,WAAW,CAAC,EACpC,GAAG,CAAC,EAAE,MAAM,GACX,CAAC,CAAC;IAEL;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ILightDIManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILightDIManager.js","sourceRoot":"","sources":["../../LightDI/ILightDIManager.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { ILightDIBaseService } from './ILightDIBaseService';
2
+ import { ILightDIManager } from './ILightDIManager';
3
+ /**
4
+ * LightDI 管理器实现
5
+ * 用于管理依赖注入的服务实例
6
+ */
7
+ export declare class LightDIManagerImpl implements ILightDIManager {
8
+ static readonly DEFAULT_KEY = "default";
9
+ private services;
10
+ private instanceToInterface;
11
+ constructor();
12
+ /**
13
+ * 绑定服务实现类
14
+ * 使用方式: bind<IxxxService>(ImplClass, key?)
15
+ * @param ImplClass 服务实现类
16
+ * @param key 可选的服务键,默认为 DEFAULT_KEY
17
+ */
18
+ bind<T extends ILightDIBaseService>(ImplClass: new () => T, key?: string): void;
19
+ /**
20
+ * 获取服务实例
21
+ * 使用方式: getService(IBizA, key?)
22
+ */
23
+ getService<T extends ILightDIBaseService>(InterfaceClass: abstract new () => T, key?: string): T;
24
+ /**
25
+ * 清除所有服务实例(主要用于测试)
26
+ */
27
+ clear(): void;
28
+ }
29
+ /**
30
+ * LightDI 管理器单例
31
+ */
32
+ export declare class LightDIManager {
33
+ private static instance;
34
+ /**
35
+ * 初始化管理器(应在应用启动时调用一次)
36
+ */
37
+ static init(manager?: ILightDIManager): ILightDIManager;
38
+ /**
39
+ * 获取单例实例(如果未初始化则自动初始化)
40
+ */
41
+ static getInstance(): ILightDIManager;
42
+ /**
43
+ * 默认 key 常量
44
+ */
45
+ static readonly DEFAULT_KEY = "default";
46
+ }
47
+ //# sourceMappingURL=LightDIManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightDIManager.d.ts","sourceRoot":"","sources":["../../LightDI/LightDIManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAExD,gBAAuB,WAAW,aAAa;IAG/C,OAAO,CAAC,QAAQ,CAA8D;IAG9E,OAAO,CAAC,mBAAmB,CAA4C;;IAIvE;;;;;OAKG;IACI,IAAI,CAAC,CAAC,SAAS,mBAAmB,EACvC,SAAS,EAAE,UAAU,CAAC,EACtB,GAAG,GAAE,MAAuC,GAC3C,IAAI;IA2BP;;;OAGG;IACI,UAAU,CAAC,CAAC,SAAS,mBAAmB,EAC7C,cAAc,EAAE,QAAQ,WAAW,CAAC,EACpC,GAAG,CAAC,EAAE,MAAM,GACX,CAAC;IAmBJ;;OAEG;IACI,KAAK,IAAI,IAAI;CAGrB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;WACW,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,eAAe;IAO9D;;OAEG;WACW,WAAW,IAAI,eAAe;IAO5C;;OAEG;IACH,gBAAuB,WAAW,aAAkC;CACrE"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LightDIManager = exports.LightDIManagerImpl = void 0;
4
+ const ServiceToken_1 = require("./ServiceToken");
5
+ /**
6
+ * LightDI 管理器实现
7
+ * 用于管理依赖注入的服务实例
8
+ */
9
+ class LightDIManagerImpl {
10
+ constructor() {
11
+ // 使用接口构造函数作为 key,value 是 key-value 映射的 Map
12
+ this.services = new Map();
13
+ // 存储实例到接口类型的映射
14
+ this.instanceToInterface = new WeakMap();
15
+ }
16
+ /**
17
+ * 绑定服务实现类
18
+ * 使用方式: bind<IxxxService>(ImplClass, key?)
19
+ * @param ImplClass 服务实现类
20
+ * @param key 可选的服务键,默认为 DEFAULT_KEY
21
+ */
22
+ bind(ImplClass, key = LightDIManagerImpl.DEFAULT_KEY) {
23
+ // 从实现类中获取接口类型
24
+ const InterfaceClass = (0, ServiceToken_1.getServiceInterface)(ImplClass);
25
+ // 创建实例,优先使用 ManagerProvider
26
+ let instance;
27
+ const StaticImplClass = ImplClass;
28
+ if (StaticImplClass.ManagerProvider &&
29
+ typeof StaticImplClass.ManagerProvider === 'function') {
30
+ instance = StaticImplClass.ManagerProvider();
31
+ }
32
+ else {
33
+ instance = new ImplClass();
34
+ }
35
+ // 存储实例到接口的映射
36
+ this.instanceToInterface.set(instance, InterfaceClass);
37
+ if (!this.services.has(InterfaceClass)) {
38
+ this.services.set(InterfaceClass, new Map());
39
+ }
40
+ const serviceMap = this.services.get(InterfaceClass);
41
+ serviceMap.set(key, instance);
42
+ }
43
+ /**
44
+ * 获取服务实例
45
+ * 使用方式: getService(IBizA, key?)
46
+ */
47
+ getService(InterfaceClass, key) {
48
+ const actualKey = key ?? LightDIManagerImpl.DEFAULT_KEY;
49
+ const serviceMap = this.services.get(InterfaceClass);
50
+ // 如果找到了对应的服务映射
51
+ if (serviceMap) {
52
+ const instance = serviceMap.get(actualKey);
53
+ if (instance) {
54
+ return instance;
55
+ }
56
+ }
57
+ // 如果找不到实例,抛出错误
58
+ throw new Error(`Service instance not found for ${InterfaceClass.name} with key "${actualKey}"`);
59
+ }
60
+ /**
61
+ * 清除所有服务实例(主要用于测试)
62
+ */
63
+ clear() {
64
+ this.services.clear();
65
+ }
66
+ }
67
+ exports.LightDIManagerImpl = LightDIManagerImpl;
68
+ // 默认 key
69
+ LightDIManagerImpl.DEFAULT_KEY = 'default';
70
+ /**
71
+ * LightDI 管理器单例
72
+ */
73
+ class LightDIManager {
74
+ /**
75
+ * 初始化管理器(应在应用启动时调用一次)
76
+ */
77
+ static init(manager) {
78
+ if (!LightDIManager.instance) {
79
+ LightDIManager.instance = manager || new LightDIManagerImpl();
80
+ }
81
+ return LightDIManager.instance;
82
+ }
83
+ /**
84
+ * 获取单例实例(如果未初始化则自动初始化)
85
+ */
86
+ static getInstance() {
87
+ if (!LightDIManager.instance) {
88
+ return LightDIManager.init();
89
+ }
90
+ return LightDIManager.instance;
91
+ }
92
+ }
93
+ exports.LightDIManager = LightDIManager;
94
+ /**
95
+ * 默认 key 常量
96
+ */
97
+ LightDIManager.DEFAULT_KEY = LightDIManagerImpl.DEFAULT_KEY;
98
+ //# sourceMappingURL=LightDIManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightDIManager.js","sourceRoot":"","sources":["../../LightDI/LightDIManager.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AAGrD;;;GAGG;AACH,MAAa,kBAAkB;IAU7B;QANA,2CAA2C;QACnC,aAAQ,GAAoD,IAAI,GAAG,EAAE,CAAC;QAE9E,eAAe;QACP,wBAAmB,GAA8B,IAAI,OAAO,EAAE,CAAC;IAEvD,CAAC;IAEjB;;;;;OAKG;IACI,IAAI,CACT,SAAsB,EACtB,MAAc,kBAAkB,CAAC,WAAW;QAE5C,cAAc;QACd,MAAM,cAAc,GAAG,IAAA,kCAAmB,EAAC,SAAS,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,IAAI,QAAW,CAAC;QAChB,MAAM,eAAe,GAAG,SAAgB,CAAC;QACzC,IACE,eAAe,CAAC,eAAe;YAC/B,OAAO,eAAe,CAAC,eAAe,KAAK,UAAU,EACrD,CAAC;YACD,QAAQ,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QAC7B,CAAC;QAED,aAAa;QACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;QACtD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,UAAU,CACf,cAAoC,EACpC,GAAY;QAEZ,MAAM,SAAS,GAAG,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAErD,eAAe;QACf,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAa,CAAC;YACvB,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,IAAI,KAAK,CACb,kCAAkC,cAAc,CAAC,IAAI,cAAc,SAAS,GAAG,CAChF,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;;AA/EH,gDAgFC;AA/EC,SAAS;AACc,8BAAW,GAAG,SAAS,AAAZ,CAAa;AAgFjD;;GAEG;AACH,MAAa,cAAc;IAGzB;;OAEG;IACI,MAAM,CAAC,IAAI,CAAC,OAAyB;QAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,cAAc,CAAC,QAAQ,GAAG,OAAO,IAAI,IAAI,kBAAkB,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;;AArBH,wCA2BC;AAJC;;GAEG;AACoB,0BAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 服务装饰器
3
+ * 用于标记实现类对应的接口
4
+ * 使用方式: @Service(IBizA)
5
+ */
6
+ export declare function Service<T = any>(interfaceClass: abstract new () => T): (target: new () => T) => void;
7
+ /**
8
+ * 获取接口类对应的实现类
9
+ */
10
+ export declare function getImplementationClass(interfaceClass: Function): Function | undefined;
11
+ /**
12
+ * 获取实现类对应的接口类
13
+ */
14
+ export declare function getServiceInterface(target: Function): Function;
15
+ //# sourceMappingURL=ServiceToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceToken.d.ts","sourceRoot":"","sources":["../../LightDI/ServiceToken.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,cAAc,EAAE,QAAQ,WAAW,CAAC,IAClD,QAAQ,UAAU,CAAC,UAOrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAErF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAU9D"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = Service;
4
+ exports.getImplementationClass = getImplementationClass;
5
+ exports.getServiceInterface = getServiceInterface;
6
+ /**
7
+ * 服务装饰器元数据的 key
8
+ */
9
+ const SERVICE_INTERFACE_KEY = 'typedi:service:interface';
10
+ /**
11
+ * 接口类到实现类的映射表
12
+ */
13
+ const interfaceToImplementation = new WeakMap();
14
+ /**
15
+ * 服务装饰器
16
+ * 用于标记实现类对应的接口
17
+ * 使用方式: @Service(IBizA)
18
+ */
19
+ function Service(interfaceClass) {
20
+ return function (target) {
21
+ // 将接口类存储到实现类的静态属性中
22
+ target[SERVICE_INTERFACE_KEY] = interfaceClass;
23
+ // 建立接口类到实现类的映射
24
+ interfaceToImplementation.set(interfaceClass, target);
25
+ };
26
+ }
27
+ /**
28
+ * 获取接口类对应的实现类
29
+ */
30
+ function getImplementationClass(interfaceClass) {
31
+ return interfaceToImplementation.get(interfaceClass);
32
+ }
33
+ /**
34
+ * 获取实现类对应的接口类
35
+ */
36
+ function getServiceInterface(target) {
37
+ // 从静态属性获取
38
+ const interfaceClass = target[SERVICE_INTERFACE_KEY];
39
+ if (!interfaceClass) {
40
+ throw new Error(`Cannot find interface class for ${target.name}. ` +
41
+ `Please use @Service(IBizA) decorator on the implementation class.`);
42
+ }
43
+ return interfaceClass;
44
+ }
45
+ //# sourceMappingURL=ServiceToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceToken.js","sourceRoot":"","sources":["../../LightDI/ServiceToken.ts"],"names":[],"mappings":";;AAeA,0BAQC;AAKD,wDAEC;AAKD,kDAUC;AA7CD;;GAEG;AACH,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEzD;;GAEG;AACH,MAAM,yBAAyB,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpE;;;;GAIG;AACH,SAAgB,OAAO,CAAU,cAAoC;IACnE,OAAO,UAAU,MAAmB;QAClC,mBAAmB;QAClB,MAAc,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAAC;QAExD,eAAe;QACf,yBAAyB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,cAAwB;IAC7D,OAAO,yBAAyB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAgB;IAClD,UAAU;IACV,MAAM,cAAc,GAAI,MAAc,CAAC,qBAAqB,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,CAAC,IAAI,IAAI;YAClD,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { ILightDIBaseService } from './ILightDIBaseService';
2
+ /**
3
+ * 导出核心类型和接口
4
+ */
5
+ export { ILightDIBaseService } from './ILightDIBaseService';
6
+ export { LightDIManager } from './LightDIManager';
7
+ export { ServiceImpl } from './BaseServiceImpl';
8
+ /**
9
+ * 全局便捷函数
10
+ * 提供简洁的 API 来使用 LightDI
11
+ */
12
+ /**
13
+ * 绑定服务实现类
14
+ * @param ImplClass 服务实现类
15
+ * @param key 可选的服务键,默认为 'default'
16
+ */
17
+ export declare function bind<T extends ILightDIBaseService>(ImplClass: new () => T, key?: string): void;
18
+ /**
19
+ * 获取服务实例
20
+ * @param InterfaceClass 接口类
21
+ * @param key 可选的服务键,默认为 'default'
22
+ */
23
+ export declare function getService<T extends ILightDIBaseService>(InterfaceClass: abstract new () => T, key?: string): T;
24
+ /**
25
+ * 清除所有服务实例(主要用于测试)
26
+ */
27
+ export declare function clear(): void;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../LightDI/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,mBAAmB,EAChD,SAAS,EAAE,UAAU,CAAC,EACtB,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,mBAAmB,EACtD,cAAc,EAAE,QAAQ,WAAW,CAAC,EACpC,GAAG,CAAC,EAAE,MAAM,GACX,CAAC,CAEH;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAE5B"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceImpl = exports.LightDIManager = exports.ILightDIBaseService = void 0;
4
+ exports.bind = bind;
5
+ exports.getService = getService;
6
+ exports.clear = clear;
7
+ const LightDIManager_1 = require("./LightDIManager");
8
+ /**
9
+ * 导出核心类型和接口
10
+ */
11
+ var ILightDIBaseService_1 = require("./ILightDIBaseService");
12
+ Object.defineProperty(exports, "ILightDIBaseService", { enumerable: true, get: function () { return ILightDIBaseService_1.ILightDIBaseService; } });
13
+ var LightDIManager_2 = require("./LightDIManager");
14
+ Object.defineProperty(exports, "LightDIManager", { enumerable: true, get: function () { return LightDIManager_2.LightDIManager; } });
15
+ var BaseServiceImpl_1 = require("./BaseServiceImpl");
16
+ Object.defineProperty(exports, "ServiceImpl", { enumerable: true, get: function () { return BaseServiceImpl_1.ServiceImpl; } });
17
+ /**
18
+ * 全局便捷函数
19
+ * 提供简洁的 API 来使用 LightDI
20
+ */
21
+ /**
22
+ * 绑定服务实现类
23
+ * @param ImplClass 服务实现类
24
+ * @param key 可选的服务键,默认为 'default'
25
+ */
26
+ function bind(ImplClass, key) {
27
+ LightDIManager_1.LightDIManager.getInstance().bind(ImplClass, key);
28
+ }
29
+ /**
30
+ * 获取服务实例
31
+ * @param InterfaceClass 接口类
32
+ * @param key 可选的服务键,默认为 'default'
33
+ */
34
+ function getService(InterfaceClass, key) {
35
+ return LightDIManager_1.LightDIManager.getInstance().getService(InterfaceClass, key);
36
+ }
37
+ /**
38
+ * 清除所有服务实例(主要用于测试)
39
+ */
40
+ function clear() {
41
+ LightDIManager_1.LightDIManager.getInstance().clear();
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../LightDI/index.ts"],"names":[],"mappings":";;;AAoBA,oBAKC;AAOD,gCAKC;AAKD,sBAEC;AA5CD,qDAAkD;AAGlD;;GAEG;AACH,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AAEpB;;;GAGG;AAEH;;;;GAIG;AACH,SAAgB,IAAI,CAClB,SAAsB,EACtB,GAAY;IAEZ,+BAAc,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CACxB,cAAoC,EACpC,GAAY;IAEZ,OAAO,+BAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK;IACnB,+BAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC"}
@@ -2,9 +2,9 @@
2
2
  * LightDI - TypeScript 依赖注入框架
3
3
  * 主入口文件,导出所有公共 API
4
4
  */
5
- export { ILightDIBaseService } from '../TypeDI/ILightDIBaseService';
6
- export { ILightDIManager } from '../TypeDI/ILightDIManager';
7
- export { LightDIManager, LightDIManagerImpl } from '../TypeDI/LightDIManager';
8
- export { ServiceImpl } from '../TypeDI/BaseServiceImpl';
9
- export { bind, getService, clear } from '../TypeDI/index';
5
+ export { ILightDIBaseService } from '../LightDI/ILightDIBaseService';
6
+ export { ILightDIManager } from '../LightDI/ILightDIManager';
7
+ export { LightDIManager, LightDIManagerImpl } from '../LightDI/LightDIManager';
8
+ export { ServiceImpl } from '../LightDI/BaseServiceImpl';
9
+ export { bind, getService, clear } from '../LightDI/index';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/src/index.js CHANGED
@@ -6,17 +6,17 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.clear = exports.getService = exports.bind = exports.ServiceImpl = exports.LightDIManagerImpl = exports.LightDIManager = exports.ILightDIBaseService = void 0;
8
8
  // 导出核心类型和接口
9
- var ILightDIBaseService_1 = require("../TypeDI/ILightDIBaseService");
9
+ var ILightDIBaseService_1 = require("../LightDI/ILightDIBaseService");
10
10
  Object.defineProperty(exports, "ILightDIBaseService", { enumerable: true, get: function () { return ILightDIBaseService_1.ILightDIBaseService; } });
11
11
  // 导出管理器
12
- var LightDIManager_1 = require("../TypeDI/LightDIManager");
12
+ var LightDIManager_1 = require("../LightDI/LightDIManager");
13
13
  Object.defineProperty(exports, "LightDIManager", { enumerable: true, get: function () { return LightDIManager_1.LightDIManager; } });
14
14
  Object.defineProperty(exports, "LightDIManagerImpl", { enumerable: true, get: function () { return LightDIManager_1.LightDIManagerImpl; } });
15
15
  // 导出装饰器和工具函数
16
- var BaseServiceImpl_1 = require("../TypeDI/BaseServiceImpl");
16
+ var BaseServiceImpl_1 = require("../LightDI/BaseServiceImpl");
17
17
  Object.defineProperty(exports, "ServiceImpl", { enumerable: true, get: function () { return BaseServiceImpl_1.ServiceImpl; } });
18
18
  // 导出全局便捷函数
19
- var index_1 = require("../TypeDI/index");
19
+ var index_1 = require("../LightDI/index");
20
20
  Object.defineProperty(exports, "bind", { enumerable: true, get: function () { return index_1.bind; } });
21
21
  Object.defineProperty(exports, "getService", { enumerable: true, get: function () { return index_1.getService; } });
22
22
  Object.defineProperty(exports, "clear", { enumerable: true, get: function () { return index_1.clear; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,YAAY;AACZ,qEAAoE;AAA3D,0HAAA,mBAAmB,OAAA;AAG5B,QAAQ;AACR,2DAA8E;AAArE,gHAAA,cAAc,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAE3C,aAAa;AACb,6DAAwD;AAA/C,8GAAA,WAAW,OAAA;AAEpB,WAAW;AACX,yCAA0D;AAAjD,6FAAA,IAAI,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,8FAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,YAAY;AACZ,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAG5B,QAAQ;AACR,4DAA+E;AAAtE,gHAAA,cAAc,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAE3C,aAAa;AACb,8DAAyD;AAAhD,8GAAA,WAAW,OAAA;AAEpB,WAAW;AACX,0CAA2D;AAAlD,6FAAA,IAAI,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,8FAAA,KAAK,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "light-di",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "LightDI - TypeScript Dependency Injection Framework - 服务之间只通过接口依赖,实现解耦",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",