@asenajs/asena 0.7.1 → 0.8.1

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 (148) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/adapter/AsenaAdapter.d.ts +2 -2
  3. package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
  4. package/dist/lib/adapter/types/ServeOptions.d.ts +16 -0
  5. package/dist/lib/adapter/types/ValidationError.d.ts +53 -0
  6. package/dist/lib/adapter/types/ValidationError.js +24 -0
  7. package/dist/lib/adapter/types/ValidationError.js.map +1 -0
  8. package/dist/lib/adapter/types/index.d.ts +1 -0
  9. package/dist/lib/adapter/types/index.js +1 -0
  10. package/dist/lib/adapter/types/index.js.map +1 -1
  11. package/dist/lib/ioc/Container.d.ts +25 -0
  12. package/dist/lib/ioc/Container.js +47 -0
  13. package/dist/lib/ioc/Container.js.map +1 -1
  14. package/dist/lib/ioc/CoreContainer.d.ts +5 -3
  15. package/dist/lib/ioc/CoreContainer.js +9 -3
  16. package/dist/lib/ioc/CoreContainer.js.map +1 -1
  17. package/dist/lib/ioc/IocEngine.d.ts +50 -4
  18. package/dist/lib/ioc/IocEngine.js +138 -12
  19. package/dist/lib/ioc/IocEngine.js.map +1 -1
  20. package/dist/lib/ioc/component/componentRegistry.d.ts +22 -0
  21. package/dist/lib/ioc/component/componentRegistry.js +119 -0
  22. package/dist/lib/ioc/component/componentRegistry.js.map +1 -0
  23. package/dist/lib/ioc/component/componentUtils.js +4 -0
  24. package/dist/lib/ioc/component/componentUtils.js.map +1 -1
  25. package/dist/lib/ioc/component/decorators/Inject.js +16 -0
  26. package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
  27. package/dist/lib/ioc/component/index.d.ts +1 -0
  28. package/dist/lib/ioc/component/index.js +1 -0
  29. package/dist/lib/ioc/component/index.js.map +1 -1
  30. package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -0
  31. package/dist/lib/ioc/constants/ComponentConstants.js +5 -0
  32. package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
  33. package/dist/lib/ioc/helper/fileHelper.d.ts +9 -0
  34. package/dist/lib/ioc/helper/fileHelper.js +41 -11
  35. package/dist/lib/ioc/helper/fileHelper.js.map +1 -1
  36. package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
  37. package/dist/lib/ioc/types/ICoreServiceNamesType.js +1 -0
  38. package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
  39. package/dist/lib/ioc/types/InjectableComponent.d.ts +10 -0
  40. package/dist/lib/ioc/types/IocConfig.d.ts +7 -0
  41. package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -1
  42. package/dist/lib/ioc/types/decorators/ComponentType.js +1 -0
  43. package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
  44. package/dist/lib/server/AsenaServer.d.ts +47 -3
  45. package/dist/lib/server/AsenaServer.js +167 -28
  46. package/dist/lib/server/AsenaServer.js.map +1 -1
  47. package/dist/lib/server/AsenaServerFactory.d.ts +38 -3
  48. package/dist/lib/server/AsenaServerFactory.js +21 -2
  49. package/dist/lib/server/AsenaServerFactory.js.map +1 -1
  50. package/dist/lib/server/config/AsenaConfig.d.ts +82 -4
  51. package/dist/lib/server/config/AsenaConfig.js +39 -1
  52. package/dist/lib/server/config/AsenaConfig.js.map +1 -1
  53. package/dist/lib/server/decorators/components/MessageController.d.ts +49 -0
  54. package/dist/lib/server/decorators/components/MessageController.js +62 -0
  55. package/dist/lib/server/decorators/components/MessageController.js.map +1 -0
  56. package/dist/lib/server/decorators/components/index.d.ts +1 -0
  57. package/dist/lib/server/decorators/components/index.js +1 -0
  58. package/dist/lib/server/decorators/components/index.js.map +1 -1
  59. package/dist/lib/server/event/EventDispatchService.d.ts +3 -7
  60. package/dist/lib/server/event/EventDispatchService.js +9 -40
  61. package/dist/lib/server/event/EventDispatchService.js.map +1 -1
  62. package/dist/lib/server/event/PatternHandlerIndex.d.ts +53 -0
  63. package/dist/lib/server/event/PatternHandlerIndex.js +100 -0
  64. package/dist/lib/server/event/PatternHandlerIndex.js.map +1 -0
  65. package/dist/lib/server/event/decorators/On.d.ts +4 -0
  66. package/dist/lib/server/event/decorators/On.js +6 -0
  67. package/dist/lib/server/event/decorators/On.js.map +1 -1
  68. package/dist/lib/server/event/index.d.ts +1 -0
  69. package/dist/lib/server/event/index.js +2 -0
  70. package/dist/lib/server/event/index.js.map +1 -1
  71. package/dist/lib/server/event/types.d.ts +12 -0
  72. package/dist/lib/server/health/HealthServer.d.ts +26 -0
  73. package/dist/lib/server/health/HealthServer.js +63 -0
  74. package/dist/lib/server/health/HealthServer.js.map +1 -0
  75. package/dist/lib/server/health/index.d.ts +1 -0
  76. package/dist/lib/server/health/index.js +2 -0
  77. package/dist/lib/server/health/index.js.map +1 -0
  78. package/dist/lib/server/messaging/Ulak.d.ts +156 -0
  79. package/dist/lib/server/messaging/Ulak.js +174 -0
  80. package/dist/lib/server/messaging/Ulak.js.map +1 -1
  81. package/dist/lib/server/messaging/types.d.ts +5 -1
  82. package/dist/lib/server/messaging/types.js +5 -0
  83. package/dist/lib/server/messaging/types.js.map +1 -1
  84. package/dist/lib/server/microservice/InMemoryTransport.d.ts +45 -0
  85. package/dist/lib/server/microservice/InMemoryTransport.js +124 -0
  86. package/dist/lib/server/microservice/InMemoryTransport.js.map +1 -0
  87. package/dist/lib/server/microservice/MicroserviceTransport.d.ts +132 -0
  88. package/dist/lib/server/microservice/MicroserviceTransport.js +2 -0
  89. package/dist/lib/server/microservice/MicroserviceTransport.js.map +1 -0
  90. package/dist/lib/server/microservice/decorators/EventPattern.d.ts +38 -0
  91. package/dist/lib/server/microservice/decorators/EventPattern.js +59 -0
  92. package/dist/lib/server/microservice/decorators/EventPattern.js.map +1 -0
  93. package/dist/lib/server/microservice/decorators/MessagePattern.d.ts +31 -0
  94. package/dist/lib/server/microservice/decorators/MessagePattern.js +55 -0
  95. package/dist/lib/server/microservice/decorators/MessagePattern.js.map +1 -0
  96. package/dist/lib/server/microservice/decorators/index.d.ts +2 -0
  97. package/dist/lib/server/microservice/decorators/index.js +3 -0
  98. package/dist/lib/server/microservice/decorators/index.js.map +1 -0
  99. package/dist/lib/server/microservice/index.d.ts +5 -0
  100. package/dist/lib/server/microservice/index.js +11 -0
  101. package/dist/lib/server/microservice/index.js.map +1 -0
  102. package/dist/lib/server/microservice/interceptorChain.d.ts +20 -0
  103. package/dist/lib/server/microservice/interceptorChain.js +39 -0
  104. package/dist/lib/server/microservice/interceptorChain.js.map +1 -0
  105. package/dist/lib/server/microservice/types.d.ts +142 -0
  106. package/dist/lib/server/microservice/types.js +5 -0
  107. package/dist/lib/server/microservice/types.js.map +1 -0
  108. package/dist/lib/server/src/services/PrepareEventService.d.ts +4 -1
  109. package/dist/lib/server/src/services/PrepareEventService.js +10 -3
  110. package/dist/lib/server/src/services/PrepareEventService.js.map +1 -1
  111. package/dist/lib/server/src/services/PrepareMicroserviceService.d.ts +66 -0
  112. package/dist/lib/server/src/services/PrepareMicroserviceService.js +193 -0
  113. package/dist/lib/server/src/services/PrepareMicroserviceService.js.map +1 -0
  114. package/dist/lib/test/factory/deepMock.d.ts +25 -0
  115. package/dist/lib/test/factory/deepMock.js +105 -0
  116. package/dist/lib/test/factory/deepMock.js.map +1 -0
  117. package/dist/lib/test/factory/ulakStub.d.ts +44 -0
  118. package/dist/lib/test/factory/ulakStub.js +40 -0
  119. package/dist/lib/test/factory/ulakStub.js.map +1 -0
  120. package/dist/lib/test/harness/createTestApp.d.ts +33 -0
  121. package/dist/lib/test/harness/createTestApp.js +105 -0
  122. package/dist/lib/test/harness/createTestApp.js.map +1 -0
  123. package/dist/lib/test/harness/createWebTest.d.ts +28 -0
  124. package/dist/lib/test/harness/createWebTest.js +127 -0
  125. package/dist/lib/test/harness/createWebTest.js.map +1 -0
  126. package/dist/lib/test/harness/silentLogger.d.ts +27 -0
  127. package/dist/lib/test/harness/silentLogger.js +54 -0
  128. package/dist/lib/test/harness/silentLogger.js.map +1 -0
  129. package/dist/lib/test/harness/types.d.ts +147 -0
  130. package/dist/lib/test/harness/types.js +2 -0
  131. package/dist/lib/test/harness/types.js.map +1 -0
  132. package/dist/lib/test/http/TestHttpCall.d.ts +78 -0
  133. package/dist/lib/test/http/TestHttpCall.js +149 -0
  134. package/dist/lib/test/http/TestHttpCall.js.map +1 -0
  135. package/dist/lib/test/http/TestHttpResponse.d.ts +46 -0
  136. package/dist/lib/test/http/TestHttpResponse.js +70 -0
  137. package/dist/lib/test/http/TestHttpResponse.js.map +1 -0
  138. package/dist/lib/test/index.d.ts +9 -0
  139. package/dist/lib/test/index.js +8 -0
  140. package/dist/lib/test/index.js.map +1 -1
  141. package/dist/lib/test/metadata/discovery.d.ts +21 -0
  142. package/dist/lib/test/metadata/discovery.js +37 -8
  143. package/dist/lib/test/metadata/discovery.js.map +1 -1
  144. package/dist/lib/test/mockComponent.d.ts +25 -0
  145. package/dist/lib/test/mockComponent.js +39 -6
  146. package/dist/lib/test/mockComponent.js.map +1 -1
  147. package/dist/lib/test/types.d.ts +13 -0
  148. package/package.json +11 -7
@@ -1,11 +1,25 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
3
  // create file helper class
4
+ const CONFIG_FILE_NAME = 'asena-config.ts';
5
+ /**
6
+ * Directories that never hold application components. `node_modules` alone is the
7
+ * overwhelming majority of a project's files, and walking it made every boot stat
8
+ * tens of thousands of paths. Dotfolders (`.git`, `.idea`, `.vscode`, ...) are
9
+ * skipped by prefix rather than by name.
10
+ */
11
+ const EXCLUDED_DIRECTORIES = new Set(['node_modules']);
12
+ const isExcludedDirectory = (name) => name.startsWith('.') || EXCLUDED_DIRECTORIES.has(name);
4
13
  export const getAllFiles = (dirPath, arrayOfFiles = []) => {
5
- const files = fs.readdirSync(dirPath);
14
+ // Sorted because `readdirSync` order is not defined: without this, which file wins a
15
+ // name collision - or which config is picked up first - can differ between machines
16
+ const files = fs.readdirSync(dirPath, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));
6
17
  files.forEach((file) => {
7
- const filePath = path.join(dirPath, file);
8
- if (fs.statSync(filePath).isDirectory()) {
18
+ const filePath = path.join(dirPath, file.name);
19
+ if (file.isDirectory()) {
20
+ if (isExcludedDirectory(file.name)) {
21
+ return;
22
+ }
9
23
  getAllFiles(filePath, arrayOfFiles);
10
24
  }
11
25
  else {
@@ -18,20 +32,36 @@ export const readJson = (path) => {
18
32
  const file = fs.readFileSync(path, { encoding: 'utf-8' });
19
33
  return JSON.parse(file);
20
34
  };
35
+ /**
36
+ * @description Locate and load `asena-config.ts`.
37
+ *
38
+ * The config sits in the project root in every supported layout, so that is checked
39
+ * directly before falling back to a walk. The fallback is also order-dependent - the
40
+ * first match wins and `readdirSync` order is not defined - which is the second reason
41
+ * to prefer the direct hit.
42
+ * @returns {Promise<IocConfig | null>} The config, or null when there is none
43
+ */
21
44
  export const readConfigFile = async () => {
22
45
  const folderPath = path.join(process.cwd());
46
+ const rootConfig = path.join(folderPath, CONFIG_FILE_NAME);
47
+ if (fs.existsSync(rootConfig)) {
48
+ return importConfigFile(rootConfig);
49
+ }
23
50
  const files = getAllFiles(folderPath);
24
51
  for (const file of files) {
25
- if (file.endsWith('asena-config.ts')) {
26
- try {
27
- return (await import(file)).default;
28
- }
29
- catch (e) {
30
- console.error('Cannot read config file', e);
31
- throw new Error('AsenaConfig file cannot read.');
32
- }
52
+ if (file.endsWith(CONFIG_FILE_NAME)) {
53
+ return importConfigFile(file);
33
54
  }
34
55
  }
35
56
  return null;
36
57
  };
58
+ const importConfigFile = async (file) => {
59
+ try {
60
+ return (await import(file)).default;
61
+ }
62
+ catch (e) {
63
+ console.error('Cannot read config file', e);
64
+ throw new Error('AsenaConfig file cannot read.');
65
+ }
66
+ };
37
67
  //# sourceMappingURL=fileHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileHelper.js","sourceRoot":"","sources":["../../../../lib/ioc/helper/fileHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,2BAA2B;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,eAAyB,EAAE,EAAY,EAAE;IACpF,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACxC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAA+B,EAAE;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAa,WAAW,CAAC,UAAU,CAAC,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAoB,CAAC;YACnD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;gBAE5C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"fileHelper.js","sourceRoot":"","sources":["../../../../lib/ioc/helper/fileHelper.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare enum ICoreServiceNames {
19
19
  PREPARE_EVENT_SERVICE = "PrepareEventService",
20
20
  PREPARE_SCHEDULE_SERVICE = "PrepareScheduleService",
21
21
  PREPARE_FRONTEND_CONTROLLER_SERVICE = "PrepareFrontendControllerService",
22
+ PREPARE_MICROSERVICE_SERVICE = "PrepareMicroserviceService",
22
23
  CRON_RUNNER = "CronRunner",
23
24
  CORE_CONTAINER = "CoreContainer",
24
25
  ASENA_SERVER = "AsenaServer"
@@ -24,6 +24,7 @@ export var ICoreServiceNames;
24
24
  ICoreServiceNames["PREPARE_EVENT_SERVICE"] = "PrepareEventService";
25
25
  ICoreServiceNames["PREPARE_SCHEDULE_SERVICE"] = "PrepareScheduleService";
26
26
  ICoreServiceNames["PREPARE_FRONTEND_CONTROLLER_SERVICE"] = "PrepareFrontendControllerService";
27
+ ICoreServiceNames["PREPARE_MICROSERVICE_SERVICE"] = "PrepareMicroserviceService";
27
28
  // Schedule Services (Phase 5)
28
29
  ICoreServiceNames["CRON_RUNNER"] = "CronRunner";
29
30
  // Factory Services (Phase 6+)
@@ -1 +1 @@
1
- {"version":3,"file":"ICoreServiceNamesType.js","sourceRoot":"","sources":["../../../../lib/ioc/types/ICoreServiceNamesType.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,iBA8BX;AA9BD,WAAY,iBAAiB;IAC3B,2CAA2C;IAC3C,4CAAuB,CAAA;IACvB,mDAA8B,CAAA;IAC9B,6CAAwB,CAAA;IACxB,mDAA8B,CAAA;IAE9B,wCAAwC;IACxC,0CAAqB,CAAA;IAErB,2BAA2B;IAC3B,mDAA8B,CAAA;IAC9B,oEAA+C,CAAA;IAE/C,6BAA6B;IAC7B,4EAAuD,CAAA;IACvD,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,4FAAuE,CAAA;IACvE,kEAA6C,CAAA;IAC7C,wEAAmD,CAAA;IACnD,6FAAwE,CAAA;IAExE,8BAA8B;IAC9B,+CAA0B,CAAA;IAE1B,8BAA8B;IAC9B,qDAAgC,CAAA;IAChC,iDAA4B,CAAA;AAC9B,CAAC,EA9BW,iBAAiB,KAAjB,iBAAiB,QA8B5B"}
1
+ {"version":3,"file":"ICoreServiceNamesType.js","sourceRoot":"","sources":["../../../../lib/ioc/types/ICoreServiceNamesType.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,iBA+BX;AA/BD,WAAY,iBAAiB;IAC3B,2CAA2C;IAC3C,4CAAuB,CAAA;IACvB,mDAA8B,CAAA;IAC9B,6CAAwB,CAAA;IACxB,mDAA8B,CAAA;IAE9B,wCAAwC;IACxC,0CAAqB,CAAA;IAErB,2BAA2B;IAC3B,mDAA8B,CAAA;IAC9B,oEAA+C,CAAA;IAE/C,6BAA6B;IAC7B,4EAAuD,CAAA;IACvD,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,4FAAuE,CAAA;IACvE,kEAA6C,CAAA;IAC7C,wEAAmD,CAAA;IACnD,6FAAwE,CAAA;IACxE,gFAA2D,CAAA;IAE3D,8BAA8B;IAC9B,+CAA0B,CAAA;IAE1B,8BAA8B;IAC9B,qDAAgC,CAAA;IAChC,iDAA4B,CAAA;AAC9B,CAAC,EA/BW,iBAAiB,KAAjB,iBAAiB,QA+B5B"}
@@ -6,6 +6,16 @@ export interface InjectableComponent {
6
6
  export interface Dependencies {
7
7
  [key: string]: string;
8
8
  }
9
+ /**
10
+ * Maps a field name to the class reference it was injected with.
11
+ *
12
+ * Only populated for class-based injections (`@Inject(UserService)`); string-based
13
+ * injections (`@Inject('UserService')`) carry no class reference and are absent here.
14
+ * Used by the test utilities to auto-generate method mocks from the real class shape.
15
+ */
16
+ export interface DependencyClasses {
17
+ [key: string]: Class;
18
+ }
9
19
  export interface Expressions {
10
20
  [key: string]: (injectedClass: any) => any;
11
21
  }
@@ -1,4 +1,11 @@
1
1
  export interface IocConfig {
2
2
  sourceFolder: string;
3
3
  rootFile: string;
4
+ /**
5
+ * Milliseconds a single component file may take to import before the engine
6
+ * warns about it. Set to 0 to disable the warning.
7
+ *
8
+ * @default 10000
9
+ */
10
+ importTimeout?: number;
4
11
  }
@@ -8,5 +8,6 @@ export declare enum ComponentType {
8
8
  WEBSOCKET = "WEBSOCKET",
9
9
  CONFIG = "CONFIG",
10
10
  EVENT = "EVENT",
11
- POST_PROCESSOR = "POST_PROCESSOR"
11
+ POST_PROCESSOR = "POST_PROCESSOR",
12
+ MESSAGE_CONTROLLER = "MESSAGE_CONTROLLER"
12
13
  }
@@ -10,5 +10,6 @@ export var ComponentType;
10
10
  ComponentType["CONFIG"] = "CONFIG";
11
11
  ComponentType["EVENT"] = "EVENT";
12
12
  ComponentType["POST_PROCESSOR"] = "POST_PROCESSOR";
13
+ ComponentType["MESSAGE_CONTROLLER"] = "MESSAGE_CONTROLLER";
13
14
  })(ComponentType || (ComponentType = {}));
14
15
  //# sourceMappingURL=ComponentType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentType.js","sourceRoot":"","sources":["../../../../../lib/ioc/types/decorators/ComponentType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,0CAAyB,CAAA;IACzB,4DAA2C,CAAA;IAC3C,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,kDAAiC,CAAA;AACnC,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB"}
1
+ {"version":3,"file":"ComponentType.js","sourceRoot":"","sources":["../../../../../lib/ioc/types/decorators/ComponentType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,0CAAyB,CAAA;IACzB,4DAA2C,CAAA;IAC3C,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,kDAAiC,CAAA;IACjC,0DAAyC,CAAA;AAC3C,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB"}
@@ -1,5 +1,7 @@
1
1
  import { type CoreContainer, type ICoreService } from '../ioc';
2
- import type { AsenaAdapter } from '../adapter';
2
+ import type { AsenaAdapter, AsenaStartOptions } from '../adapter';
3
+ import * as bun from 'bun';
4
+ import type { HealthOptions } from './AsenaServerFactory';
3
5
  /**
4
6
  * @description AsenaServer - Main server class for Asena framework
5
7
  * Now a core service managed by IoC container with field injection
@@ -7,8 +9,10 @@ import type { AsenaAdapter } from '../adapter';
7
9
  export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements ICoreService {
8
10
  serviceName: string;
9
11
  private _coreContainer;
10
- private _adapter;
12
+ private _adapter?;
11
13
  private _logger;
14
+ private _iocEngine;
15
+ private _ulak;
12
16
  private prepareMiddleware;
13
17
  private prepareConfigService;
14
18
  private prepareWebsocketService;
@@ -17,10 +21,16 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
17
21
  private prepareEventService;
18
22
  private prepareScheduleService;
19
23
  private prepareFrontendControllerService;
24
+ private prepareMicroserviceService;
20
25
  private cronRunner;
21
26
  private _port;
22
27
  private _gc;
23
28
  private controllers;
29
+ private microserviceTransports;
30
+ private messagingInterceptors;
31
+ private _health?;
32
+ private healthServer?;
33
+ private _httpServer?;
24
34
  /**
25
35
  * @description Lifecycle hook - called after dependencies are injected
26
36
  * @returns {void}
@@ -29,9 +39,10 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
29
39
  /**
30
40
  * @description Start the server
31
41
  * Main entry point after factory creation
42
+ * @param {AsenaStartOptions} options - Optional transport overrides forwarded to the adapter
32
43
  * @returns {Promise<void>}
33
44
  */
34
- start(): Promise<void>;
45
+ start(options?: AsenaStartOptions): Promise<void>;
35
46
  /**
36
47
  * @description Stop the server and release resources
37
48
  * @param {boolean} closeActiveConnections - Whether to close active connections immediately
@@ -45,11 +56,37 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
45
56
  * @returns {this}
46
57
  */
47
58
  port(port: number): this;
59
+ /**
60
+ * @description Configure the optional health endpoint (mainly for headless/K8s probes)
61
+ * Builder pattern for API compatibility
62
+ * @param {HealthOptions} options - Health endpoint options
63
+ * @returns {this}
64
+ */
65
+ health(options: HealthOptions): this;
66
+ /**
67
+ * @description Lazily resolve the HTTP adapter if one was registered.
68
+ * Headless mode (no adapter) is valid - all adapter-dependent steps are skipped.
69
+ * @returns {Promise<void>}
70
+ */
71
+ private resolveAdapter;
72
+ /**
73
+ * @description Warn about HTTP-only components that cannot work without an adapter
74
+ * @returns {void}
75
+ */
76
+ private warnAdapterlessComponents;
48
77
  /**
49
78
  * @description Get current CoreContainer instance
50
79
  * @returns {CoreContainer}
51
80
  */
52
81
  get coreContainer(): CoreContainer;
82
+ /**
83
+ * @description The Bun server the adapter is listening on, once start() has run.
84
+ *
85
+ * Undefined in headless mode and before start(). Read `httpServer.port` to learn the
86
+ * actually bound port - the only way to find it out when starting on port 0.
87
+ * @returns {bun.Server | undefined}
88
+ */
89
+ get httpServer(): bun.Server<any> | undefined;
53
90
  /**
54
91
  * @description Initialize and register all controllers
55
92
  * @returns {Promise<void>}
@@ -119,4 +156,11 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
119
156
  * @returns {Promise<void>}
120
157
  */
121
158
  private prepareConfigs;
159
+ /**
160
+ * @description Prepare microservice message handlers and transports
161
+ * Runs before the HTTP adapter starts so handlers are live before HTTP goes up.
162
+ * Also validates that @MessageController components have a configured transport (fail fast).
163
+ * @returns {Promise<void>}
164
+ */
165
+ private prepareMicroservices;
122
166
  }
@@ -14,6 +14,8 @@ import * as bun from 'bun';
14
14
  import { blue, green, yellow } from '../logger';
15
15
  import { getOwnTypedMetadata, getTypedMetadata } from '../utils/typedMetadata';
16
16
  import { Inject, PostConstruct } from '../ioc/component';
17
+ import { normalizeTransportConfig } from './config/AsenaConfig';
18
+ import { HealthServer } from './health/HealthServer';
17
19
  /**
18
20
  * @description AsenaServer - Main server class for Asena framework
19
21
  * Now a core service managed by IoC container with field injection
@@ -21,8 +23,12 @@ import { Inject, PostConstruct } from '../ioc/component';
21
23
  let AsenaServer = class AsenaServer {
22
24
  serviceName = 'AsenaServer';
23
25
  _coreContainer;
26
+ // NOT injected eagerly: resolved lazily in start() via container.has()
27
+ // so the server can boot in headless mode without an HTTP adapter
24
28
  _adapter;
25
29
  _logger;
30
+ _iocEngine;
31
+ _ulak;
26
32
  prepareMiddleware;
27
33
  prepareConfigService;
28
34
  prepareWebsocketService;
@@ -31,11 +37,21 @@ let AsenaServer = class AsenaServer {
31
37
  prepareEventService;
32
38
  prepareScheduleService;
33
39
  prepareFrontendControllerService;
40
+ prepareMicroserviceService;
34
41
  cronRunner;
35
42
  // Instance state
36
43
  _port;
37
44
  _gc = false;
38
45
  controllers = [];
46
+ // Microservice transports collected from the transport() config hook
47
+ microserviceTransports = new Map();
48
+ messagingInterceptors = [];
49
+ // Optional health endpoint (mainly for headless deployments / K8s probes)
50
+ _health;
51
+ healthServer;
52
+ // The Bun server returned by the adapter - exposes the actually bound port, which is
53
+ // what a caller needs when starting on port 0 or on a unix socket
54
+ _httpServer;
39
55
  /**
40
56
  * @description Lifecycle hook - called after dependencies are injected
41
57
  * @returns {void}
@@ -46,25 +62,46 @@ let AsenaServer = class AsenaServer {
46
62
  /**
47
63
  * @description Start the server
48
64
  * Main entry point after factory creation
65
+ * @param {AsenaStartOptions} options - Optional transport overrides forwarded to the adapter
49
66
  * @returns {Promise<void>}
50
67
  */
51
- async start() {
52
- this._logger.info(`Adapter: ${green(this._adapter.name)} implemented`);
53
- this._adapter.setPort(this._port);
68
+ async start(options) {
69
+ await this.resolveAdapter();
70
+ if (this._adapter) {
71
+ this._logger.info(`Adapter: ${green(this._adapter.name)} implemented`);
72
+ this._adapter.setPort(this._port);
73
+ }
74
+ else {
75
+ this._logger.info('Headless mode: no HTTP adapter configured');
76
+ this.warnAdapterlessComponents();
77
+ }
78
+ // Runs here rather than during the scan: statements between create() and start()
79
+ // in the entry file have executed by now, so a component declared below the
80
+ // bootstrap call is visible and can be reported instead of silently missing
81
+ this._iocEngine.warnAboutLateEntryComponents();
54
82
  this._logger.info('All components registered and ready to use');
55
83
  // Phase 7: Application setup
56
84
  this._coreContainer.setPhase(CoreBootstrapPhase.APPLICATION_SETUP);
57
85
  await this.prepareConfigs();
86
+ await this.prepareMicroservices();
58
87
  await this.prepareEventService.prepare();
59
88
  await this.prepareScheduleService.prepare();
60
- await this.initializeControllers();
61
- await this.prepareFrontendControllers();
62
- await this.prepareWebSocket();
89
+ if (this._adapter) {
90
+ await this.initializeControllers();
91
+ await this.prepareFrontendControllers();
92
+ await this.prepareWebSocket();
93
+ }
63
94
  // Phase 8: Server ready
64
95
  this._coreContainer.setPhase(CoreBootstrapPhase.SERVER_READY);
65
- await this._adapter.start();
96
+ if (this._adapter) {
97
+ this._httpServer = await this._adapter.start(options);
98
+ }
66
99
  // Start scheduled jobs after server is ready
67
100
  this.cronRunner.startAll();
101
+ if (this._health) {
102
+ this.healthServer = new HealthServer(this._health, this._ulak, this._logger);
103
+ this.healthServer.start();
104
+ }
68
105
  if (this._gc) {
69
106
  bun.gc(true);
70
107
  }
@@ -76,7 +113,11 @@ let AsenaServer = class AsenaServer {
76
113
  */
77
114
  async stop(closeActiveConnections = true) {
78
115
  this.cronRunner.stopAll();
79
- await this._adapter.stop(closeActiveConnections);
116
+ this.healthServer?.stop();
117
+ // Adapter first: in-flight HTTP handlers may still call ulak.send(), so
118
+ // transports must outlive the HTTP surface that uses them
119
+ await this._adapter?.stop(closeActiveConnections);
120
+ await this.prepareMicroserviceService.destroy();
80
121
  }
81
122
  /**
82
123
  * @description Configure server port
@@ -88,6 +129,51 @@ let AsenaServer = class AsenaServer {
88
129
  this._port = port;
89
130
  return this;
90
131
  }
132
+ /**
133
+ * @description Configure the optional health endpoint (mainly for headless/K8s probes)
134
+ * Builder pattern for API compatibility
135
+ * @param {HealthOptions} options - Health endpoint options
136
+ * @returns {this}
137
+ */
138
+ health(options) {
139
+ this._health = options;
140
+ return this;
141
+ }
142
+ /**
143
+ * @description Lazily resolve the HTTP adapter if one was registered.
144
+ * Headless mode (no adapter) is valid - all adapter-dependent steps are skipped.
145
+ * @returns {Promise<void>}
146
+ */
147
+ async resolveAdapter() {
148
+ if (this._adapter) {
149
+ return;
150
+ }
151
+ if (this._coreContainer.container.has(ICoreServiceNames.ASENA_ADAPTER)) {
152
+ this._adapter = await this._coreContainer.resolve(ICoreServiceNames.ASENA_ADAPTER);
153
+ }
154
+ }
155
+ /**
156
+ * @description Warn about HTTP-only components that cannot work without an adapter
157
+ * @returns {void}
158
+ */
159
+ warnAdapterlessComponents() {
160
+ const httpOnlyTypes = [ComponentType.CONTROLLER, ComponentType.WEBSOCKET, ComponentType.FRONTEND_CONTROLLER];
161
+ const services = this._coreContainer.container.services;
162
+ for (const type of httpOnlyTypes) {
163
+ const names = [];
164
+ for (const value of Object.values(services)) {
165
+ const entries = Array.isArray(value) ? value : [value];
166
+ for (const entry of entries) {
167
+ if (entry?.Class && getTypedMetadata(type, entry.Class)) {
168
+ names.push(entry.Class.name);
169
+ }
170
+ }
171
+ }
172
+ if (names.length) {
173
+ this._logger.warn(`Headless mode: ${type} component(s) [${names.join(', ')}] require an HTTP adapter and will be ignored`);
174
+ }
175
+ }
176
+ }
91
177
  /**
92
178
  * @description Get current CoreContainer instance
93
179
  * @returns {CoreContainer}
@@ -95,6 +181,16 @@ let AsenaServer = class AsenaServer {
95
181
  get coreContainer() {
96
182
  return this._coreContainer;
97
183
  }
184
+ /**
185
+ * @description The Bun server the adapter is listening on, once start() has run.
186
+ *
187
+ * Undefined in headless mode and before start(). Read `httpServer.port` to learn the
188
+ * actually bound port - the only way to find it out when starting on port 0.
189
+ * @returns {bun.Server | undefined}
190
+ */
191
+ get httpServer() {
192
+ return this._httpServer;
193
+ }
98
194
  /**
99
195
  * @description Initialize and register all controllers
100
196
  * @returns {Promise<void>}
@@ -285,49 +381,88 @@ let AsenaServer = class AsenaServer {
285
381
  return;
286
382
  }
287
383
  if (typeof configInstance.serveOptions === 'function') {
288
- await this._adapter.serveOptions(configInstance.serveOptions.bind(configInstance));
384
+ if (this._adapter) {
385
+ await this._adapter.serveOptions(configInstance.serveOptions.bind(configInstance));
386
+ }
387
+ else {
388
+ this._logger.warn('Headless mode: serveOptions() ignored (no HTTP adapter)');
389
+ }
289
390
  }
290
391
  if (typeof configInstance.onError === 'function') {
291
- await this._adapter.onError(configInstance.onError.bind(configInstance));
392
+ if (this._adapter) {
393
+ await this._adapter.onError(configInstance.onError.bind(configInstance));
394
+ }
395
+ else {
396
+ this._logger.warn('Headless mode: onError() ignored (no HTTP adapter)');
397
+ }
292
398
  }
293
399
  // Pattern-based global middleware registration
294
400
  if (typeof configInstance.globalMiddlewares === 'function') {
295
- const middlewareEntries = await configInstance.globalMiddlewares();
296
- for (const entry of middlewareEntries) {
297
- // Normalize entry to config format (handles backward compatibility)
298
- const config = this.normalizeMiddlewareEntry(entry);
299
- // Prepare middleware instances
300
- const preparedMiddlewares = await this.prepareMiddlewares([config.middleware]);
301
- // Register with adapter (pass route config)
302
- for (const middleware of preparedMiddlewares) {
303
- await this._adapter.use(middleware, config.routes);
401
+ if (this._adapter) {
402
+ const middlewareEntries = await configInstance.globalMiddlewares();
403
+ for (const entry of middlewareEntries) {
404
+ // Normalize entry to config format (handles backward compatibility)
405
+ const config = this.normalizeMiddlewareEntry(entry);
406
+ // Prepare middleware instances
407
+ const preparedMiddlewares = await this.prepareMiddlewares([config.middleware]);
408
+ // Register with adapter (pass route config)
409
+ for (const middleware of preparedMiddlewares) {
410
+ await this._adapter.use(middleware, config.routes);
411
+ }
304
412
  }
305
413
  }
414
+ else {
415
+ this._logger.warn('Headless mode: globalMiddlewares() ignored (no HTTP adapter)');
416
+ }
306
417
  }
307
- // WebSocket transport configuration
418
+ // Transport configuration (WebSocket + microservice)
308
419
  if (typeof configInstance.transport === 'function') {
309
- const transport = await configInstance.transport();
310
- const wsAdapter = this._adapter.getWebsocketAdapter();
311
- if (wsAdapter) {
312
- wsAdapter.transport = transport;
420
+ const result = await configInstance.transport();
421
+ const normalized = await normalizeTransportConfig(result);
422
+ if (normalized.websocket) {
423
+ if (this._adapter) {
424
+ const wsAdapter = this._adapter.getWebsocketAdapter();
425
+ if (wsAdapter) {
426
+ wsAdapter.transport = normalized.websocket;
427
+ }
428
+ }
429
+ else {
430
+ this._logger.warn('Headless mode: websocket transport ignored (no HTTP adapter)');
431
+ }
313
432
  }
433
+ // Microservice part works in BOTH modes - consumed by prepareMicroservices()
434
+ this.microserviceTransports = normalized.microservices;
435
+ this.messagingInterceptors = normalized.interceptors;
314
436
  }
315
437
  const name = getOwnTypedMetadata(ComponentConstants.NameKey, configInstance.constructor);
316
438
  this._logger.info(`Config ${yellow(name)} applied`);
317
439
  }
440
+ /**
441
+ * @description Prepare microservice message handlers and transports
442
+ * Runs before the HTTP adapter starts so handlers are live before HTTP goes up.
443
+ * Also validates that @MessageController components have a configured transport (fail fast).
444
+ * @returns {Promise<void>}
445
+ */
446
+ async prepareMicroservices() {
447
+ await this.prepareMicroserviceService.prepare(this.microserviceTransports, this.messagingInterceptors);
448
+ }
318
449
  };
319
450
  __decorate([
320
451
  Inject(ICoreServiceNames.CORE_CONTAINER),
321
452
  __metadata("design:type", Function)
322
453
  ], AsenaServer.prototype, "_coreContainer", void 0);
323
- __decorate([
324
- Inject(ICoreServiceNames.ASENA_ADAPTER),
325
- __metadata("design:type", Object)
326
- ], AsenaServer.prototype, "_adapter", void 0);
327
454
  __decorate([
328
455
  Inject(ICoreServiceNames.SERVER_LOGGER),
329
456
  __metadata("design:type", Object)
330
457
  ], AsenaServer.prototype, "_logger", void 0);
458
+ __decorate([
459
+ Inject(ICoreServiceNames.IOC_ENGINE),
460
+ __metadata("design:type", Function)
461
+ ], AsenaServer.prototype, "_iocEngine", void 0);
462
+ __decorate([
463
+ Inject(ICoreServiceNames.__ULAK__),
464
+ __metadata("design:type", Function)
465
+ ], AsenaServer.prototype, "_ulak", void 0);
331
466
  __decorate([
332
467
  Inject(ICoreServiceNames.PREPARE_MIDDLEWARE_SERVICE),
333
468
  __metadata("design:type", Function)
@@ -360,6 +495,10 @@ __decorate([
360
495
  Inject(ICoreServiceNames.PREPARE_FRONTEND_CONTROLLER_SERVICE),
361
496
  __metadata("design:type", Function)
362
497
  ], AsenaServer.prototype, "prepareFrontendControllerService", void 0);
498
+ __decorate([
499
+ Inject(ICoreServiceNames.PREPARE_MICROSERVICE_SERVICE),
500
+ __metadata("design:type", Function)
501
+ ], AsenaServer.prototype, "prepareMicroserviceService", void 0);
363
502
  __decorate([
364
503
  Inject(ICoreServiceNames.CRON_RUNNER),
365
504
  __metadata("design:type", Function)
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaServer.js","sourceRoot":"","sources":["../../../lib/server/AsenaServer.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EACL,aAAa,EACb,kBAAkB,EAElB,WAAW,EAEX,iBAAiB,GAClB,MAAM,QAAQ,CAAC;AAUhB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAqB,MAAM,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAO/E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMzD;;;GAGG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;IACf,WAAW,GAAG,aAAa,CAAC;IAG3B,cAAc,CAAiB;IAG/B,QAAQ,CAAK;IAGb,OAAO,CAAgB;IAGvB,iBAAiB,CAA4B;IAG7C,oBAAoB,CAAwB;IAG5C,uBAAuB,CAA2B;IAGlD,uBAAuB,CAA2B;IAGlD,+BAA+B,CAAmC;IAGlE,mBAAmB,CAAsB;IAGzC,sBAAsB,CAAyB;IAG/C,gCAAgC,CAAmC;IAGnE,UAAU,CAAa;IAE/B,iBAAiB;IACT,KAAK,CAAU;IAEf,GAAG,GAAG,KAAK,CAAC;IAEZ,WAAW,GAAY,EAAE,CAAC;IAElC;;;OAGG;IAEI,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAEhE,6BAA6B;QAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAE5B,6CAA6C;QAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,IAAI;QAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAC,IAAY;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB;QACjC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2D,CAAC;QAE5F,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,mBAAmB,CAAQ,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAErG,MAAM,SAAS,GAAW,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAEhH,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YAE5D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC7E,MAAM,cAAc,GAClB,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;gBAE5F,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;gBAE1F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAExE,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC1C,WAAW,EAAE,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,CAAC;oBACpE,SAAS,EAAE,iBAAiB;oBAC5B,cAAc;oBACd,kBAAkB,EAAE,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,gBAA8E,EAC9E,MAAc,EACd,QAAgB,EAChB,cAAsB,EACtB,WAAmB;QAEnB,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;QAEvD,iDAAiD;QACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,KAAK;gBACxC,yBAAyB,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,WAAW,MAAM;gBAC9E,kBAAkB,cAAc,IAAI,WAAW,IAAI,CACtD,CAAC;QACJ,CAAC;QAED,iGAAiG;QACjG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,mBAAmB,GAAG,KAAK;wBAClE,yBAAyB,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,WAAW,MAAM;wBACxE,kBAAkB,cAAc,IAAI,WAAW,IAAI,CACtD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,MAAM,MAAM,GAAG,OAAO,QAAQ,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,uBAAuB,QAAQ,KAAK;gBACvE,yBAAyB,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,WAAW,MAAM;gBAC9E,kBAAkB,cAAc,IAAI,WAAW,IAAI,CACtD,CAAC;QACJ,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAQ,aAAa,CAAC,UAAU,CAAC,CAAC;QAEpG,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,0CAA0C;YAC1C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,WAAsB,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,wBAAwB,CAAC,gBAAkC;QACvE,OAAO,MAAM,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,qBAAqB,CACjC,EAAE,UAAU,EAAE,SAAS,EAA2B,EAClD,SAAS,GAAG,KAAK;QAEjB,MAAM,cAAc,GAClB,gBAAgB,CAAoB,kBAAkB,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEvG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,8DAA8D;QAC9D,8CAA8C;QAC9C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAAC,SAA8B;QAC3D,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,sBAAsB,CAAC,gBAA2B;QAC9D,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,WAAW,IAAI,EAAE,CAAC;QAE7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,WAA8B;QAC7D,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,0BAA0B;QACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,CAAC;QAEzE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;QAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YACzF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAA6B,EAAE,EAAE,IAAI,CAAC,CAAC;YAE1G,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACzC,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW;gBACxB,gBAAgB,EAAE,SAAS;gBAC3B,cAAc,EAAE,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC;aAC5F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,wBAAwB,CAAC,KAA4B;QAC3D,gDAAgD;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,SAAS,EAAE,wCAAwC;SAC5D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAEjE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,cAAc,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,OAAO,cAAc,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,+CAA+C;QAC/C,IAAI,OAAO,cAAc,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAEnE,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,oEAAoE;gBACpE,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAEpD,+BAA+B;gBAC/B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBAE/E,4CAA4C;gBAC5C,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;oBAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,cAAc,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAEtD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;QAEjG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AA9YS;IADP,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC;;mDACF;AAG/B;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;6CACnB;AAGb;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;4CACT;AAGvB;IADP,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;;sDACA;AAG7C;IADP,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;;yDACG;AAG5C;IADP,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,CAAC;;4DACM;AAGlD;IADP,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,CAAC;;4DACM;AAGlD;IADP,MAAM,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;;oEACY;AAGlE;IADP,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;;wDACC;AAGzC;IADP,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;;2DACI;AAG/C;IADP,MAAM,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;;qEACa;AAGnE;IADP,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;;+CACP;AAcxB;IADN,aAAa,EAAE;;;;yCAGf;AArDU,WAAW;IADvB,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC;GAC/B,WAAW,CAkZvB"}
1
+ {"version":3,"file":"AsenaServer.js","sourceRoot":"","sources":["../../../lib/server/AsenaServer.ts"],"names":[],"mappings":"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"}