@aomex/common-service 3.14.1 → 3.14.2

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.14.2](https://github.com/aomex/aomex/compare/v3.14.1...v3.14.2) (2025-01-14)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **service:** 执行初始化方法init时无法访问其它服务 ([45973c1](https://github.com/aomex/aomex/commit/45973c145f0954f6a8959ffdadcc207a34960722))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [3.14.1](https://github.com/aomex/aomex/compare/v3.14.0...v3.14.1) (2025-01-09)
7
18
 
8
19
  **Note:** Version bump only for package @aomex/common-service
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ declare abstract class Service {
23
23
  constructor(_services: Record<string, Service>);
24
24
  protected get services(): CombinedServices;
25
25
  /**
26
- * 会自动触发的初始化方法
26
+ * 会自动触发的初始化方法。如果返回值是Promise类型,主进程会等待Promise结束
27
27
  */
28
28
  protected init(): void | Promise<void>;
29
29
  }
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var Service = class {
14
14
  return this._services;
15
15
  }
16
16
  /**
17
- * 会自动触发的初始化方法
17
+ * 会自动触发的初始化方法。如果返回值是Promise类型,主进程会等待Promise结束
18
18
  */
19
19
  init() {
20
20
  }
@@ -23,17 +23,15 @@ var Service = class {
23
23
  // src/combine-services.ts
24
24
  var combineServices = async (classes) => {
25
25
  const services = {};
26
- const caches = {};
27
26
  await Promise.all(
28
- Object.entries(classes).map(async ([key, Class]) => {
29
- const instance = new Class(services);
27
+ Object.entries(classes).map(([key, Class]) => {
28
+ const service = new Class(services);
29
+ services[key] = service;
30
+ return service;
31
+ }).map(async (instance) => {
30
32
  await instance["init"]();
31
- caches[key] = instance;
32
33
  })
33
34
  );
34
- Object.entries(caches).forEach(([key, service]) => {
35
- services[key] = service;
36
- });
37
35
  Object.freeze(services);
38
36
  return services;
39
37
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/service.ts","../src/combine-services.ts"],"sourcesContent":["import type { CombinedServices } from './combine-services';\n\nexport abstract class Service {\n protected get displayName() {\n const className = this.constructor.name;\n if (className.endsWith('Service')) {\n return className.slice(0, -7);\n }\n return className;\n }\n\n constructor(private readonly _services: Record<string, Service>) {}\n\n protected get services(): CombinedServices {\n return this._services as CombinedServices;\n }\n\n /**\n * 会自动触发的初始化方法\n */\n protected init(): void | Promise<void> {}\n}\n","import { Service } from './service';\n/**\n * 为了让服务层有提示,你需要手动处理这一步:\n * \n * ```typescript\n export const services = await combineServices({...});\n \n declare module '@aomex/common' {\n type T = typeof services;\n export interface CombinedServices extends T {}\n }\n * ```\n */\nexport interface CombinedServices {}\n\n/**\n * 把所有服务绑定在一起,然后导出使用\n */\nexport const combineServices = async <\n T extends Record<string, new (services: Record<string, Service>) => Service>,\n>(\n classes: T,\n): Promise<{ readonly [K in keyof T]: InstanceType<T[K]> }> => {\n const services: Record<string, Service> = {};\n const caches: Record<string, Service> = {};\n\n await Promise.all(\n Object.entries(classes).map(async ([key, Class]) => {\n const instance = new Class(services);\n await instance['init']();\n caches[key] = instance;\n }),\n );\n\n Object.entries(caches).forEach(([key, service]) => {\n services[key] = service;\n });\n\n Object.freeze(services);\n\n return services as any;\n};\n"],"mappings":";AAEO,IAAe,UAAf,MAAuB;AAAA,EAS5B,YAA6B,WAAoC;AAApC;AAAA,EAAqC;AAAA,EARlE,IAAc,cAAc;AAC1B,UAAM,YAAY,KAAK,YAAY;AACnC,QAAI,UAAU,SAAS,SAAS,GAAG;AACjC,aAAO,UAAU,MAAM,GAAG,EAAE;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAIA,IAAc,WAA6B;AACzC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKU,OAA6B;AAAA,EAAC;AAC1C;;;ACHO,IAAM,kBAAkB,OAG7B,YAC6D;AAC7D,QAAM,WAAoC,CAAC;AAC3C,QAAM,SAAkC,CAAC;AAEzC,QAAM,QAAQ;AAAA,IACZ,OAAO,QAAQ,OAAO,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;AAClD,YAAM,WAAW,IAAI,MAAM,QAAQ;AACnC,YAAM,SAAS,MAAM,EAAE;AACvB,aAAO,GAAG,IAAI;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,SAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,OAAO,MAAM;AACjD,aAAS,GAAG,IAAI;AAAA,EAClB,CAAC;AAED,SAAO,OAAO,QAAQ;AAEtB,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/service.ts","../src/combine-services.ts"],"sourcesContent":["import type { CombinedServices } from './combine-services';\n\nexport abstract class Service {\n protected get displayName() {\n const className = this.constructor.name;\n if (className.endsWith('Service')) {\n return className.slice(0, -7);\n }\n return className;\n }\n\n constructor(private readonly _services: Record<string, Service>) {}\n\n protected get services(): CombinedServices {\n return this._services as CombinedServices;\n }\n\n /**\n * 会自动触发的初始化方法。如果返回值是Promise类型,主进程会等待Promise结束\n */\n protected init(): void | Promise<void> {}\n}\n","import { Service } from './service';\n/**\n * 为了让服务层有提示,你需要手动处理这一步:\n * \n * ```typescript\n export const services = await combineServices({...});\n \n declare module '@aomex/common' {\n type T = typeof services;\n export interface CombinedServices extends T {}\n }\n * ```\n */\nexport interface CombinedServices {}\n\n/**\n * 把所有服务绑定在一起,然后导出使用\n */\nexport const combineServices = async <\n T extends Record<string, new (services: Record<string, Service>) => Service>,\n>(\n classes: T,\n): Promise<{ readonly [K in keyof T]: InstanceType<T[K]> }> => {\n const services: Record<string, Service> = {};\n\n await Promise.all(\n Object.entries(classes)\n .map(([key, Class]) => {\n const service = new Class(services);\n services[key] = service;\n return service;\n })\n .map(async (instance) => {\n await instance['init']();\n }),\n );\n\n Object.freeze(services);\n\n return services as any;\n};\n"],"mappings":";AAEO,IAAe,UAAf,MAAuB;AAAA,EAS5B,YAA6B,WAAoC;AAApC;AAAA,EAAqC;AAAA,EARlE,IAAc,cAAc;AAC1B,UAAM,YAAY,KAAK,YAAY;AACnC,QAAI,UAAU,SAAS,SAAS,GAAG;AACjC,aAAO,UAAU,MAAM,GAAG,EAAE;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAIA,IAAc,WAA6B;AACzC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKU,OAA6B;AAAA,EAAC;AAC1C;;;ACHO,IAAM,kBAAkB,OAG7B,YAC6D;AAC7D,QAAM,WAAoC,CAAC;AAE3C,QAAM,QAAQ;AAAA,IACZ,OAAO,QAAQ,OAAO,EACnB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,YAAM,UAAU,IAAI,MAAM,QAAQ;AAClC,eAAS,GAAG,IAAI;AAChB,aAAO;AAAA,IACT,CAAC,EACA,IAAI,OAAO,aAAa;AACvB,YAAM,SAAS,MAAM,EAAE;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,SAAO,OAAO,QAAQ;AAEtB,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aomex/common-service",
3
- "version": "3.14.1",
3
+ "version": "3.14.2",
4
4
  "description": "aomex服务层",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",