@geekmidas/constructs 0.0.3 → 0.0.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.
Files changed (142) hide show
  1. package/dist/{AmazonApiGatewayEndpointAdaptor-D_Q_NTMT.cjs → AmazonApiGatewayEndpointAdaptor-BEzWkW5m.cjs} +32 -9
  2. package/dist/AmazonApiGatewayEndpointAdaptor-BEzWkW5m.cjs.map +1 -0
  3. package/dist/{AmazonApiGatewayEndpointAdaptor-DtzgQ9Vb.d.cts → AmazonApiGatewayEndpointAdaptor-BFhJ2Rpz.d.cts} +5 -2
  4. package/dist/{AmazonApiGatewayEndpointAdaptor-DNZLntHj.d.mts → AmazonApiGatewayEndpointAdaptor-BrB3RfbI.d.mts} +5 -2
  5. package/dist/{AmazonApiGatewayEndpointAdaptor-QzIAnWzS.mjs → AmazonApiGatewayEndpointAdaptor-CASfHEj9.mjs} +32 -9
  6. package/dist/AmazonApiGatewayEndpointAdaptor-CASfHEj9.mjs.map +1 -0
  7. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Gw-j61qM.d.cts → AmazonApiGatewayV1EndpointAdaptor-Bd-o8ese.d.cts} +3 -3
  8. package/dist/{AmazonApiGatewayV1EndpointAdaptor-DbJa4cpU.d.mts → AmazonApiGatewayV1EndpointAdaptor-BtNXt0-4.d.mts} +3 -3
  9. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BF5bGWV1.mjs → AmazonApiGatewayV1EndpointAdaptor-RPnkGENb.mjs} +2 -2
  10. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BF5bGWV1.mjs.map → AmazonApiGatewayV1EndpointAdaptor-RPnkGENb.mjs.map} +1 -1
  11. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Bh4tckwd.cjs → AmazonApiGatewayV1EndpointAdaptor-l1df4rFt.cjs} +2 -2
  12. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Bh4tckwd.cjs.map → AmazonApiGatewayV1EndpointAdaptor-l1df4rFt.cjs.map} +1 -1
  13. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BOaOkLXF.mjs → AmazonApiGatewayV2EndpointAdaptor-C5Ctz7C_.mjs} +2 -2
  14. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BOaOkLXF.mjs.map → AmazonApiGatewayV2EndpointAdaptor-C5Ctz7C_.mjs.map} +1 -1
  15. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BlKn-KJ6.d.mts → AmazonApiGatewayV2EndpointAdaptor-DAJdtgek.d.mts} +3 -3
  16. package/dist/{AmazonApiGatewayV2EndpointAdaptor-L4Ywv3Pk.cjs → AmazonApiGatewayV2EndpointAdaptor-DH9yJsC8.cjs} +2 -2
  17. package/dist/{AmazonApiGatewayV2EndpointAdaptor-L4Ywv3Pk.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DH9yJsC8.cjs.map} +1 -1
  18. package/dist/{AmazonApiGatewayV2EndpointAdaptor-LUlpwmUW.d.cts → AmazonApiGatewayV2EndpointAdaptor-DX-Uci5w.d.cts} +3 -3
  19. package/dist/{Endpoint-D1nnEsBU.cjs → Endpoint-BVZJb4OR.cjs} +128 -4
  20. package/dist/Endpoint-BVZJb4OR.cjs.map +1 -0
  21. package/dist/{Endpoint-DYUjJdEs.d.mts → Endpoint-C7jPJzAH.d.mts} +115 -6
  22. package/dist/{Endpoint-DNlmybXV.mjs → Endpoint-DVEmKo6G.mjs} +123 -5
  23. package/dist/Endpoint-DVEmKo6G.mjs.map +1 -0
  24. package/dist/{Endpoint-C7z9YJHK.d.cts → Endpoint-XUMNAXYy.d.cts} +115 -6
  25. package/dist/{EndpointBuilder-CpjIMYb0.mjs → EndpointBuilder-Bhy91l_c.mjs} +2 -2
  26. package/dist/{EndpointBuilder-CpjIMYb0.mjs.map → EndpointBuilder-Bhy91l_c.mjs.map} +1 -1
  27. package/dist/{EndpointBuilder-B2iScUND.d.mts → EndpointBuilder-CFtWQhcv.d.mts} +2 -2
  28. package/dist/{EndpointBuilder-BhRd626m.cjs → EndpointBuilder-DDnqW7rT.cjs} +2 -2
  29. package/dist/{EndpointBuilder-BhRd626m.cjs.map → EndpointBuilder-DDnqW7rT.cjs.map} +1 -1
  30. package/dist/{EndpointBuilder-1fw103D6.d.cts → EndpointBuilder-t6fVEKBH.d.cts} +2 -2
  31. package/dist/{EndpointFactory-DLpEbLzL.mjs → EndpointFactory-CNz3Wa08.mjs} +4 -3
  32. package/dist/EndpointFactory-CNz3Wa08.mjs.map +1 -0
  33. package/dist/{EndpointFactory-ChmVHWim.cjs → EndpointFactory-Cw_6-53M.cjs} +4 -3
  34. package/dist/EndpointFactory-Cw_6-53M.cjs.map +1 -0
  35. package/dist/{EndpointFactory-D576BhaH.d.cts → EndpointFactory-DBRGrXAy.d.mts} +10 -10
  36. package/dist/{EndpointFactory-DZQpM-9K.d.mts → EndpointFactory-DInjHvFR.d.cts} +10 -10
  37. package/dist/{HonoEndpointAdaptor-01cH100U.d.mts → HonoEndpointAdaptor-BY2Ovj31.d.mts} +4 -4
  38. package/dist/{HonoEndpointAdaptor-6LERutxi.cjs → HonoEndpointAdaptor-BsGMcxYb.cjs} +23 -8
  39. package/dist/HonoEndpointAdaptor-BsGMcxYb.cjs.map +1 -0
  40. package/dist/{HonoEndpointAdaptor-ua6mp3gt.d.cts → HonoEndpointAdaptor-OtKS5Dsd.d.cts} +4 -4
  41. package/dist/{HonoEndpointAdaptor-fs2928iO.mjs → HonoEndpointAdaptor-Y4AD3E9g.mjs} +23 -8
  42. package/dist/HonoEndpointAdaptor-Y4AD3E9g.mjs.map +1 -0
  43. package/dist/{Subscriber-G7EUI3yc.cjs → Subscriber-CSt7EOlT.cjs} +1 -1
  44. package/dist/{Subscriber-G7EUI3yc.cjs.map → Subscriber-CSt7EOlT.cjs.map} +1 -1
  45. package/dist/{Subscriber-BTwKnz3c.mjs → Subscriber-DkCDcTUL.mjs} +1 -1
  46. package/dist/{Subscriber-BTwKnz3c.mjs.map → Subscriber-DkCDcTUL.mjs.map} +1 -1
  47. package/dist/{SubscriberBuilder-C1me_972.mjs → SubscriberBuilder-Bn9Hyi28.mjs} +2 -2
  48. package/dist/{SubscriberBuilder-C1me_972.mjs.map → SubscriberBuilder-Bn9Hyi28.mjs.map} +1 -1
  49. package/dist/{SubscriberBuilder-C6iZvuDe.cjs → SubscriberBuilder-RsiOmnwq.cjs} +2 -2
  50. package/dist/{SubscriberBuilder-C6iZvuDe.cjs.map → SubscriberBuilder-RsiOmnwq.cjs.map} +1 -1
  51. package/dist/{TestEndpointAdaptor-B4SvJvK-.cjs → TestEndpointAdaptor-CbNeUT3Y.cjs} +20 -6
  52. package/dist/TestEndpointAdaptor-CbNeUT3Y.cjs.map +1 -0
  53. package/dist/{TestEndpointAdaptor-CelYsQi0.mjs → TestEndpointAdaptor-DD3aygPp.mjs} +20 -6
  54. package/dist/TestEndpointAdaptor-DD3aygPp.mjs.map +1 -0
  55. package/dist/{TestEndpointAdaptor-Da0ooGt2.d.mts → TestEndpointAdaptor-Db0cm1fb.d.mts} +3 -3
  56. package/dist/{TestEndpointAdaptor-CHcgyI3V.d.cts → TestEndpointAdaptor-v7A-7hTs.d.cts} +3 -3
  57. package/dist/adaptors/aws.cjs +4 -4
  58. package/dist/adaptors/aws.d.cts +5 -5
  59. package/dist/adaptors/aws.d.mts +4 -4
  60. package/dist/adaptors/aws.mjs +4 -4
  61. package/dist/adaptors/hono.cjs +3 -3
  62. package/dist/adaptors/hono.d.cts +3 -3
  63. package/dist/adaptors/hono.d.mts +2 -2
  64. package/dist/adaptors/hono.mjs +3 -3
  65. package/dist/adaptors/testing.cjs +2 -2
  66. package/dist/adaptors/testing.d.cts +3 -3
  67. package/dist/adaptors/testing.d.mts +2 -2
  68. package/dist/adaptors/testing.mjs +2 -2
  69. package/dist/crons/Cron.d.cts +1 -1
  70. package/dist/crons/CronBuilder.d.cts +1 -1
  71. package/dist/crons/index.d.cts +5 -5
  72. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +2 -2
  73. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +3 -3
  74. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +2 -2
  75. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +2 -2
  76. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +3 -3
  77. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +4 -4
  78. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +3 -3
  79. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +3 -3
  80. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +3 -3
  81. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +4 -4
  82. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +3 -3
  83. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +3 -3
  84. package/dist/endpoints/Endpoint.cjs +2 -1
  85. package/dist/endpoints/Endpoint.d.cts +3 -3
  86. package/dist/endpoints/Endpoint.d.mts +2 -2
  87. package/dist/endpoints/Endpoint.mjs +2 -2
  88. package/dist/endpoints/EndpointBuilder.cjs +2 -2
  89. package/dist/endpoints/EndpointBuilder.d.cts +3 -3
  90. package/dist/endpoints/EndpointBuilder.d.mts +2 -2
  91. package/dist/endpoints/EndpointBuilder.mjs +2 -2
  92. package/dist/endpoints/EndpointFactory.cjs +3 -3
  93. package/dist/endpoints/EndpointFactory.d.cts +4 -4
  94. package/dist/endpoints/EndpointFactory.d.mts +3 -3
  95. package/dist/endpoints/EndpointFactory.mjs +3 -3
  96. package/dist/endpoints/HonoEndpointAdaptor.cjs +3 -3
  97. package/dist/endpoints/HonoEndpointAdaptor.d.cts +3 -3
  98. package/dist/endpoints/HonoEndpointAdaptor.d.mts +2 -2
  99. package/dist/endpoints/HonoEndpointAdaptor.mjs +3 -3
  100. package/dist/endpoints/TestEndpointAdaptor.cjs +2 -2
  101. package/dist/endpoints/TestEndpointAdaptor.d.cts +3 -3
  102. package/dist/endpoints/TestEndpointAdaptor.d.mts +2 -2
  103. package/dist/endpoints/TestEndpointAdaptor.mjs +2 -2
  104. package/dist/endpoints/helpers.cjs +2 -2
  105. package/dist/endpoints/helpers.d.cts +2 -2
  106. package/dist/endpoints/helpers.d.mts +1 -1
  107. package/dist/endpoints/helpers.mjs +2 -2
  108. package/dist/endpoints/index.cjs +3 -3
  109. package/dist/endpoints/index.cjs.map +1 -1
  110. package/dist/endpoints/index.d.cts +7 -7
  111. package/dist/endpoints/index.d.mts +6 -6
  112. package/dist/endpoints/index.mjs +3 -3
  113. package/dist/endpoints/index.mjs.map +1 -1
  114. package/dist/functions/index.d.cts +1 -1
  115. package/dist/{helpers-CjvCSIF5.cjs → helpers-BSzj2AiQ.cjs} +2 -2
  116. package/dist/{helpers-CjvCSIF5.cjs.map → helpers-BSzj2AiQ.cjs.map} +1 -1
  117. package/dist/{helpers-CP7A0U_s.mjs → helpers-C9WBx7ms.mjs} +2 -2
  118. package/dist/{helpers-CP7A0U_s.mjs.map → helpers-C9WBx7ms.mjs.map} +1 -1
  119. package/dist/index-BxApEwAF.d.cts +9 -0
  120. package/dist/subscribers/Subscriber.cjs +1 -1
  121. package/dist/subscribers/Subscriber.mjs +1 -1
  122. package/dist/subscribers/SubscriberBuilder.cjs +2 -2
  123. package/dist/subscribers/SubscriberBuilder.mjs +2 -2
  124. package/dist/subscribers/index.cjs +2 -2
  125. package/dist/subscribers/index.d.cts +2 -2
  126. package/dist/subscribers/index.d.mts +2 -2
  127. package/dist/subscribers/index.mjs +2 -2
  128. package/package.json +4 -4
  129. package/src/endpoints/EndpointFactory.ts +88 -18
  130. package/src/endpoints/index.ts +1 -1
  131. package/test.ts +92 -0
  132. package/dist/AmazonApiGatewayEndpointAdaptor-D_Q_NTMT.cjs.map +0 -1
  133. package/dist/AmazonApiGatewayEndpointAdaptor-QzIAnWzS.mjs.map +0 -1
  134. package/dist/Endpoint-D1nnEsBU.cjs.map +0 -1
  135. package/dist/Endpoint-DNlmybXV.mjs.map +0 -1
  136. package/dist/EndpointFactory-ChmVHWim.cjs.map +0 -1
  137. package/dist/EndpointFactory-DLpEbLzL.mjs.map +0 -1
  138. package/dist/HonoEndpointAdaptor-6LERutxi.cjs.map +0 -1
  139. package/dist/HonoEndpointAdaptor-fs2928iO.mjs.map +0 -1
  140. package/dist/TestEndpointAdaptor-B4SvJvK-.cjs.map +0 -1
  141. package/dist/TestEndpointAdaptor-CelYsQi0.mjs.map +0 -1
  142. package/dist/index-zOH9f4sh.d.cts +0 -9
@@ -1,8 +1,8 @@
1
- import { AuthorizeFn, SessionFn } from "./Endpoint-DYUjJdEs.mjs";
2
- import { EndpointBuilder } from "./EndpointBuilder-B2iScUND.mjs";
3
- import { Service } from "@geekmidas/services";
1
+ import { AuthorizeFn, SessionFn } from "./Endpoint-XUMNAXYy.cjs";
2
+ import { EndpointBuilder } from "./EndpointBuilder-t6fVEKBH.cjs";
4
3
  import { EventPublisher, MappedEvent } from "@geekmidas/events";
5
4
  import { Logger } from "@geekmidas/logger";
5
+ import { Service } from "@geekmidas/services";
6
6
 
7
7
  //#region src/endpoints/EndpointFactory.d.ts
8
8
  declare class EndpointFactory<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string> {
@@ -21,12 +21,12 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
21
21
  defaultEventPublisher
22
22
  }?: EndpointFactoryOptions<TServices, TBasePath, TLogger, TSession, TEventPublisher, TEventPublisherServiceName>);
23
23
  static joinPaths<TBasePath extends string, P extends string>(path: P, basePath?: TBasePath): JoinPaths<TBasePath, P>;
24
- route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession, TEventPublisher>;
25
- authorize(fn: AuthorizeFn<TServices, TLogger, TSession>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TEventPublisher>;
26
- services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession, TEventPublisher>;
27
- logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession>;
28
- publisher<T extends EventPublisher<any>, TServiceName extends string = string>(publisher: Service<TServiceName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, T>;
29
- session<T>(session: SessionFn<TServices, TLogger, T>): EndpointFactory<TServices, TBasePath, TLogger, T, undefined, string>;
24
+ route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession, TEventPublisher, TEventPublisherServiceName>;
25
+ authorize(fn: AuthorizeFn<TServices, TLogger, TSession>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TEventPublisher, TEventPublisherServiceName>;
26
+ services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession, TEventPublisher, TEventPublisherServiceName>;
27
+ logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession, TEventPublisher, TEventPublisherServiceName>;
28
+ publisher<T extends EventPublisher<any>, TServiceName extends string = string>(publisher: Service<TServiceName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, T, TServiceName>;
29
+ session<T>(session: SessionFn<TServices, TLogger, T>): EndpointFactory<TServices, TBasePath, TLogger, T, TEventPublisher, TEventPublisherServiceName>;
30
30
  private createBuilder;
31
31
  post<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "POST", {}, TServices, TLogger, undefined, TSession, TEventPublisher, string>;
32
32
  get<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "GET", {}, TServices, TLogger, undefined, TSession, TEventPublisher, string>;
@@ -49,4 +49,4 @@ interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath ext
49
49
  declare const e: EndpointFactory<[], "", Logger, unknown, undefined, string>;
50
50
  //#endregion
51
51
  export { EndpointFactory, EndpointFactoryOptions, JoinPaths, RemoveTrailingSlash, e };
52
- //# sourceMappingURL=EndpointFactory-DZQpM-9K.d.mts.map
52
+ //# sourceMappingURL=EndpointFactory-DInjHvFR.d.cts.map
@@ -1,12 +1,12 @@
1
1
  import { HttpMethod } from "./types-CVq20-fE.mjs";
2
- import { Endpoint, EndpointSchemas } from "./Endpoint-DYUjJdEs.mjs";
2
+ import { Endpoint, EndpointSchemas } from "./Endpoint-C7jPJzAH.mjs";
3
3
  import { EnvironmentParser } from "@geekmidas/envkit";
4
4
  import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
5
5
  import { Context, Hono } from "hono";
6
6
  import { EventPublisher } from "@geekmidas/events";
7
7
  import { Logger } from "@geekmidas/logger";
8
8
  import { StandardSchemaV1 } from "@standard-schema/spec";
9
- import * as hono_types7 from "hono/types";
9
+ import * as hono_types6 from "hono/types";
10
10
 
11
11
  //#region src/endpoints/HonoEndpointAdaptor.d.ts
12
12
  interface HonoEndpointOptions {
@@ -31,11 +31,11 @@ declare class HonoEndpoint<TRoute extends string, TMethod extends HttpMethod, TI
31
31
  static validate<T extends StandardSchemaV1>(c: Context<any, string, {}>, data: unknown, schema?: T): Promise<unknown>;
32
32
  addRoute(serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono): void;
33
33
  static applyEventMiddleware(app: Hono, serviceDiscovery: ServiceDiscovery<any, any>): void;
34
- static fromRoutes<TLogger extends Logger, TServices extends Service[]>(routes: string[], envParser: EnvironmentParser<{}>, app: Hono<hono_types7.BlankEnv, hono_types7.BlankSchema, "/"> | undefined, logger: TLogger, cwd?: string, options?: HonoEndpointOptions): Promise<Hono>;
34
+ static fromRoutes<TLogger extends Logger, TServices extends Service[]>(routes: string[], envParser: EnvironmentParser<{}>, app: Hono<hono_types6.BlankEnv, hono_types6.BlankSchema, "/"> | undefined, logger: TLogger, cwd?: string, options?: HonoEndpointOptions): Promise<Hono>;
35
35
  static addRoutes<TServices extends Service[] = [], TLogger extends Logger = Logger>(endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[], serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono, options?: HonoEndpointOptions): void;
36
36
  static addRoute<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown, TEventPublisher extends EventPublisher<any> | undefined = undefined>(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher>, serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono): void;
37
37
  static addDocsRoute<TServices extends Service[] = [], TLogger extends Logger = Logger>(endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[], app: Hono, docsPath: string, openApiOptions?: HonoEndpointOptions['openApiOptions']): void;
38
38
  }
39
39
  //#endregion
40
40
  export { HonoEndpoint, HonoEndpointOptions };
41
- //# sourceMappingURL=HonoEndpointAdaptor-01cH100U.d.mts.map
41
+ //# sourceMappingURL=HonoEndpointAdaptor-BY2Ovj31.d.mts.map
@@ -1,12 +1,13 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
2
  const require_publisher = require('./publisher-lFQleddL.cjs');
3
- const require_Endpoint = require('./Endpoint-D1nnEsBU.cjs');
4
- const require_helpers = require('./helpers-CjvCSIF5.cjs');
3
+ const require_Endpoint = require('./Endpoint-BVZJb4OR.cjs');
4
+ const require_helpers = require('./helpers-BSzj2AiQ.cjs');
5
5
  const require_parseHonoQuery = require('./parseHonoQuery-BiPp8bEJ.cjs');
6
6
  const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
7
7
  const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
8
8
  const __geekmidas_rate_limit = require_chunk.__toESM(require("@geekmidas/rate-limit"));
9
9
  const hono = require_chunk.__toESM(require("hono"));
10
+ const hono_cookie = require_chunk.__toESM(require("hono/cookie"));
10
11
  const hono_validator = require_chunk.__toESM(require("hono/validator"));
11
12
 
12
13
  //#region src/endpoints/HonoEndpointAdaptor.ts
@@ -75,14 +76,17 @@ var HonoEndpoint = class HonoEndpoint {
75
76
  try {
76
77
  const headerValues = c.req.header();
77
78
  const header = require_Endpoint.Endpoint.createHeaders(headerValues);
79
+ const cookie = require_Endpoint.Endpoint.createCookies(headerValues.cookie);
78
80
  const services = await serviceDiscovery.register(endpoint.services);
79
81
  const session = await endpoint.getSession({
80
82
  services,
81
83
  logger,
82
- header
84
+ header,
85
+ cookie
83
86
  });
84
87
  const isAuthorized = await endpoint.authorize({
85
88
  header,
89
+ cookie,
86
90
  services,
87
91
  logger,
88
92
  session
@@ -103,6 +107,7 @@ var HonoEndpoint = class HonoEndpoint {
103
107
  const rateLimitHeaders = (0, __geekmidas_rate_limit.getRateLimitHeaders)(rateLimitInfo, endpoint.rateLimit);
104
108
  for (const [key, value] of Object.entries(rateLimitHeaders)) if (value) c.header(key, value);
105
109
  }
110
+ const responseBuilder = new require_Endpoint.ResponseBuilder();
106
111
  const response = await endpoint.handler({
107
112
  services,
108
113
  logger,
@@ -110,11 +115,21 @@ var HonoEndpoint = class HonoEndpoint {
110
115
  query: c.req.valid("query"),
111
116
  params: c.req.valid("param"),
112
117
  session,
113
- header: require_Endpoint.Endpoint.createHeaders(headerValues)
114
- });
118
+ header: require_Endpoint.Endpoint.createHeaders(headerValues),
119
+ cookie: require_Endpoint.Endpoint.createCookies(headerValues.cookie)
120
+ }, responseBuilder);
115
121
  try {
116
- const status = endpoint.status;
117
- const output = endpoint.outputSchema ? await endpoint.parseOutput(response) : {};
122
+ let data = response;
123
+ let metadata = responseBuilder.getMetadata();
124
+ let status = endpoint.status;
125
+ if (require_Endpoint.Endpoint.hasMetadata(response)) {
126
+ data = response.data;
127
+ metadata = response.metadata;
128
+ }
129
+ if (metadata.status) status = metadata.status;
130
+ if (metadata.headers) for (const [key, value] of Object.entries(metadata.headers)) c.header(key, value);
131
+ if (metadata.cookies) for (const [name, { value, options }] of metadata.cookies) (0, hono_cookie.setCookie)(c, name, value, options);
132
+ const output = endpoint.outputSchema ? await endpoint.parseOutput(data) : {};
118
133
  c.set("__response", output);
119
134
  c.set("__endpoint", endpoint);
120
135
  c.set("__logger", logger);
@@ -151,4 +166,4 @@ Object.defineProperty(exports, 'HonoEndpoint', {
151
166
  return HonoEndpoint;
152
167
  }
153
168
  });
154
- //# sourceMappingURL=HonoEndpointAdaptor-6LERutxi.cjs.map
169
+ //# sourceMappingURL=HonoEndpointAdaptor-BsGMcxYb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HonoEndpointAdaptor-BsGMcxYb.cjs","names":["endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >","c: Context<any, string, {}>","data: unknown","schema?: T","serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>","app: Hono","serviceDiscovery: ServiceDiscovery<any, any>","routes: string[]","envParser: EnvironmentParser<{}>","Hono","logger: TLogger","options?: HonoEndpointOptions","endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[]","ResponseBuilder","validationError: any","e: any","docsPath: string","openApiOptions?: HonoEndpointOptions['openApiOptions']"],"sources":["../src/endpoints/HonoEndpointAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { checkRateLimit, getRateLimitHeaders } from '@geekmidas/rate-limit';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type Context, Hono } from 'hono';\nimport { setCookie } from 'hono/cookie';\nimport { validator } from 'hono/validator';\nimport type { HttpMethod, LowerHttpMethod } from '../types';\nimport {\n Endpoint,\n type EndpointContext,\n type EndpointSchemas,\n ResponseBuilder,\n} from './Endpoint';\nimport { getEndpointsFromRoutes } from './helpers';\nimport { parseHonoQuery } from './parseHonoQuery';\n\nimport { wrapError } from '@geekmidas/errors';\nimport {\n type Service,\n ServiceDiscovery,\n type ServiceRecord,\n} from '@geekmidas/services';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\nimport { publishConstructEvents } from '../publisher';\n\nexport interface HonoEndpointOptions {\n /**\n * Path where OpenAPI documentation will be served.\n * Set to false to disable docs route.\n * @default '/docs'\n */\n docsPath?: string | false;\n /**\n * OpenAPI schema options\n */\n openApiOptions?: {\n title?: string;\n version?: string;\n description?: string;\n };\n}\n\nexport class HonoEndpoint<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n> {\n constructor(\n private readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n ) {}\n\n static async validate<T extends StandardSchemaV1>(\n c: Context<any, string, {}>,\n data: unknown,\n schema?: T,\n ) {\n if (!schema) {\n return undefined;\n }\n\n const parsed = await Endpoint.validate(schema, data);\n\n if (parsed.issues) {\n return c.json(parsed.issues, 422);\n }\n\n return parsed.value;\n }\n addRoute(\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n ): void {\n HonoEndpoint.addRoute(this.endpoint, serviceDiscovery, app);\n }\n\n static applyEventMiddleware(\n app: Hono,\n serviceDiscovery: ServiceDiscovery<any, any>,\n ) {\n app.use(async (c, next) => {\n await next();\n // @ts-ignore\n const endpoint = c.get('__endpoint') as Endpoint<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >;\n // @ts-ignore\n const response = c.get('__response') as InferStandardSchema<TOutSchema>;\n // @ts-ignore\n const logger = c.get('__logger') as Logger;\n\n if (Endpoint.isSuccessStatus(c.res.status) && endpoint) {\n await publishConstructEvents<any, any>(\n endpoint,\n response,\n serviceDiscovery,\n logger,\n );\n }\n });\n }\n\n static async fromRoutes<TLogger extends Logger, TServices extends Service[]>(\n routes: string[],\n envParser: EnvironmentParser<{}>,\n app = new Hono(),\n logger: TLogger,\n cwd = process.cwd(),\n options?: HonoEndpointOptions,\n ): Promise<Hono> {\n const endpoints = await getEndpointsFromRoutes<TServices>(routes, cwd);\n const serviceDiscovery = ServiceDiscovery.getInstance<\n ServiceRecord<TServices>,\n TLogger\n >(logger, envParser);\n\n HonoEndpoint.addRoutes(endpoints, serviceDiscovery, app, options);\n\n return app;\n }\n\n static addRoutes<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n >(\n endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[],\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n options?: HonoEndpointOptions,\n ): void {\n // Add docs route if not disabled\n const docsPath =\n options?.docsPath !== false ? options?.docsPath || '/docs' : null;\n if (docsPath) {\n HonoEndpoint.addDocsRoute(\n endpoints,\n app,\n docsPath,\n options?.openApiOptions,\n );\n }\n\n // Sort endpoints to ensure static routes come before dynamic ones\n const sortedEndpoints = endpoints.sort((a, b) => {\n const aSegments = a.route.split('/');\n const bSegments = b.route.split('/');\n\n // Compare each segment\n for (let i = 0; i < Math.max(aSegments.length, bSegments.length); i++) {\n const aSegment = aSegments[i] || '';\n const bSegment = bSegments[i] || '';\n\n // If one is dynamic and the other is not, static comes first\n const aIsDynamic = aSegment.startsWith(':');\n const bIsDynamic = bSegment.startsWith(':');\n\n if (!aIsDynamic && bIsDynamic) return -1;\n if (aIsDynamic && !bIsDynamic) return 1;\n\n // If both are the same type, compare alphabetically\n if (aSegment !== bSegment) {\n return aSegment.localeCompare(bSegment);\n }\n }\n\n return 0;\n });\n HonoEndpoint.applyEventMiddleware(app, serviceDiscovery);\n for (const endpoint of sortedEndpoints) {\n HonoEndpoint.addRoute(endpoint, serviceDiscovery, app);\n }\n }\n\n static addRoute<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n >(\n endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n ): void {\n const { route } = endpoint;\n const method = endpoint.method.toLowerCase() as LowerHttpMethod<TMethod>;\n\n app[method](\n route,\n validator('json', (value, c) =>\n HonoEndpoint.validate(c, value, endpoint.input?.body),\n ),\n validator('query', (_, c) => {\n const parsedQuery = parseHonoQuery(c);\n return HonoEndpoint.validate(c, parsedQuery, endpoint.input?.query);\n }),\n validator('param', (params, c) =>\n HonoEndpoint.validate(c, params, endpoint.input?.params),\n ),\n async (c) => {\n const logger = endpoint.logger.child({\n endpoint: endpoint.fullPath,\n route: endpoint.route,\n host: c.header('host'),\n method: endpoint.method,\n path: c.req.path,\n }) as TLogger;\n\n try {\n const headerValues = c.req.header();\n\n const header = Endpoint.createHeaders(headerValues);\n const cookie = Endpoint.createCookies(headerValues.cookie);\n\n const services = await serviceDiscovery.register(endpoint.services);\n\n const session = await endpoint.getSession({\n services,\n logger,\n header,\n cookie,\n });\n\n const isAuthorized = await endpoint.authorize({\n header,\n cookie,\n services,\n logger,\n session,\n });\n\n if (!isAuthorized) {\n logger.warn('Unauthorized access attempt');\n return c.json({ error: 'Unauthorized' }, 401);\n }\n\n // Check rate limit if configured\n if (endpoint.rateLimit) {\n const rateLimitInfo = await checkRateLimit(endpoint.rateLimit, {\n header,\n services,\n logger,\n session,\n path: c.req.path,\n method: endpoint.method,\n });\n\n // Set rate limit headers\n const rateLimitHeaders = getRateLimitHeaders(\n rateLimitInfo,\n endpoint.rateLimit,\n );\n for (const [key, value] of Object.entries(rateLimitHeaders)) {\n if (value) {\n c.header(key, value);\n }\n }\n }\n\n const responseBuilder = new ResponseBuilder();\n const response = await endpoint.handler(\n {\n services,\n logger,\n body: c.req.valid('json'),\n query: c.req.valid('query'),\n params: c.req.valid('param'),\n session,\n header: Endpoint.createHeaders(headerValues),\n cookie: Endpoint.createCookies(headerValues.cookie),\n } as unknown as EndpointContext<\n TInput,\n TServices,\n TLogger,\n TSession\n >,\n responseBuilder,\n );\n\n // Publish events if configured\n\n // Validate output if schema is defined\n\n try {\n // Check if response has metadata\n let data = response;\n let metadata = responseBuilder.getMetadata();\n let status = endpoint.status as ContentfulStatusCode;\n\n if (Endpoint.hasMetadata(response)) {\n data = response.data;\n metadata = response.metadata;\n }\n\n // Apply response metadata\n if (metadata.status) {\n status = metadata.status as ContentfulStatusCode;\n }\n\n if (metadata.headers) {\n for (const [key, value] of Object.entries(metadata.headers)) {\n c.header(key, value);\n }\n }\n\n if (metadata.cookies) {\n for (const [name, { value, options }] of metadata.cookies) {\n setCookie(c, name, value, options);\n }\n }\n\n const output = endpoint.outputSchema\n ? await endpoint.parseOutput(data)\n : ({} as any);\n // @ts-ignore\n c.set('__response', output);\n // @ts-ignore\n c.set('__endpoint', endpoint);\n // @ts-ignore\n c.set('__logger', logger);\n\n return c.json(output, status);\n } catch (validationError: any) {\n logger.error(validationError, 'Output validation failed');\n const error = wrapError(\n validationError,\n 422,\n 'Response validation failed',\n );\n return c.json(error, error.statusCode as ContentfulStatusCode);\n }\n } catch (e: any) {\n logger.error(e, 'Error processing endpoint request');\n const error = wrapError(e, 500, 'Internal Server Error');\n return c.json(error, error.statusCode as ContentfulStatusCode);\n }\n },\n );\n }\n\n static addDocsRoute<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n >(\n endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[],\n app: Hono,\n docsPath: string,\n openApiOptions?: HonoEndpointOptions['openApiOptions'],\n ): void {\n app.get(docsPath, async (c) => {\n try {\n const openApiSchema = await Endpoint.buildOpenApiSchema(\n endpoints,\n openApiOptions,\n );\n\n return c.json(openApiSchema);\n } catch (error) {\n console.error('Error generating OpenAPI schema:', error);\n return c.json(\n { error: 'Failed to generate OpenAPI documentation' },\n 500,\n );\n }\n });\n }\n}\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { HttpMethod } from "./types-Bp9ysFXd.cjs";
2
- import { Endpoint, EndpointSchemas } from "./Endpoint-C7z9YJHK.cjs";
2
+ import { Endpoint, EndpointSchemas } from "./Endpoint-XUMNAXYy.cjs";
3
3
  import { EventPublisher } from "@geekmidas/events";
4
4
  import { Logger } from "@geekmidas/logger";
5
5
  import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
7
7
  import { EnvironmentParser } from "@geekmidas/envkit";
8
- import * as hono_types7 from "hono/types";
8
+ import * as hono_types5 from "hono/types";
9
9
  import { Context, Hono } from "hono";
10
10
 
11
11
  //#region src/endpoints/HonoEndpointAdaptor.d.ts
@@ -31,11 +31,11 @@ declare class HonoEndpoint<TRoute extends string, TMethod extends HttpMethod, TI
31
31
  static validate<T extends StandardSchemaV1>(c: Context<any, string, {}>, data: unknown, schema?: T): Promise<unknown>;
32
32
  addRoute(serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono): void;
33
33
  static applyEventMiddleware(app: Hono, serviceDiscovery: ServiceDiscovery<any, any>): void;
34
- static fromRoutes<TLogger extends Logger, TServices extends Service[]>(routes: string[], envParser: EnvironmentParser<{}>, app: Hono<hono_types7.BlankEnv, hono_types7.BlankSchema, "/"> | undefined, logger: TLogger, cwd?: string, options?: HonoEndpointOptions): Promise<Hono>;
34
+ static fromRoutes<TLogger extends Logger, TServices extends Service[]>(routes: string[], envParser: EnvironmentParser<{}>, app: Hono<hono_types5.BlankEnv, hono_types5.BlankSchema, "/"> | undefined, logger: TLogger, cwd?: string, options?: HonoEndpointOptions): Promise<Hono>;
35
35
  static addRoutes<TServices extends Service[] = [], TLogger extends Logger = Logger>(endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[], serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono, options?: HonoEndpointOptions): void;
36
36
  static addRoute<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown, TEventPublisher extends EventPublisher<any> | undefined = undefined>(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher>, serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>, app: Hono): void;
37
37
  static addDocsRoute<TServices extends Service[] = [], TLogger extends Logger = Logger>(endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[], app: Hono, docsPath: string, openApiOptions?: HonoEndpointOptions['openApiOptions']): void;
38
38
  }
39
39
  //#endregion
40
40
  export { HonoEndpoint, HonoEndpointOptions };
41
- //# sourceMappingURL=HonoEndpointAdaptor-ua6mp3gt.d.cts.map
41
+ //# sourceMappingURL=HonoEndpointAdaptor-OtKS5Dsd.d.cts.map
@@ -1,11 +1,12 @@
1
1
  import { publishConstructEvents } from "./publisher-Bw4770Hi.mjs";
2
- import { Endpoint } from "./Endpoint-DNlmybXV.mjs";
3
- import { getEndpointsFromRoutes } from "./helpers-CP7A0U_s.mjs";
2
+ import { Endpoint, ResponseBuilder } from "./Endpoint-DVEmKo6G.mjs";
3
+ import { getEndpointsFromRoutes } from "./helpers-C9WBx7ms.mjs";
4
4
  import { parseHonoQuery } from "./parseHonoQuery-yWRoKFFl.mjs";
5
5
  import { wrapError } from "@geekmidas/errors";
6
6
  import { ServiceDiscovery } from "@geekmidas/services";
7
7
  import { checkRateLimit, getRateLimitHeaders } from "@geekmidas/rate-limit";
8
8
  import { Hono } from "hono";
9
+ import { setCookie } from "hono/cookie";
9
10
  import { validator } from "hono/validator";
10
11
 
11
12
  //#region src/endpoints/HonoEndpointAdaptor.ts
@@ -74,14 +75,17 @@ var HonoEndpoint = class HonoEndpoint {
74
75
  try {
75
76
  const headerValues = c.req.header();
76
77
  const header = Endpoint.createHeaders(headerValues);
78
+ const cookie = Endpoint.createCookies(headerValues.cookie);
77
79
  const services = await serviceDiscovery.register(endpoint.services);
78
80
  const session = await endpoint.getSession({
79
81
  services,
80
82
  logger,
81
- header
83
+ header,
84
+ cookie
82
85
  });
83
86
  const isAuthorized = await endpoint.authorize({
84
87
  header,
88
+ cookie,
85
89
  services,
86
90
  logger,
87
91
  session
@@ -102,6 +106,7 @@ var HonoEndpoint = class HonoEndpoint {
102
106
  const rateLimitHeaders = getRateLimitHeaders(rateLimitInfo, endpoint.rateLimit);
103
107
  for (const [key, value] of Object.entries(rateLimitHeaders)) if (value) c.header(key, value);
104
108
  }
109
+ const responseBuilder = new ResponseBuilder();
105
110
  const response = await endpoint.handler({
106
111
  services,
107
112
  logger,
@@ -109,11 +114,21 @@ var HonoEndpoint = class HonoEndpoint {
109
114
  query: c.req.valid("query"),
110
115
  params: c.req.valid("param"),
111
116
  session,
112
- header: Endpoint.createHeaders(headerValues)
113
- });
117
+ header: Endpoint.createHeaders(headerValues),
118
+ cookie: Endpoint.createCookies(headerValues.cookie)
119
+ }, responseBuilder);
114
120
  try {
115
- const status = endpoint.status;
116
- const output = endpoint.outputSchema ? await endpoint.parseOutput(response) : {};
121
+ let data = response;
122
+ let metadata = responseBuilder.getMetadata();
123
+ let status = endpoint.status;
124
+ if (Endpoint.hasMetadata(response)) {
125
+ data = response.data;
126
+ metadata = response.metadata;
127
+ }
128
+ if (metadata.status) status = metadata.status;
129
+ if (metadata.headers) for (const [key, value] of Object.entries(metadata.headers)) c.header(key, value);
130
+ if (metadata.cookies) for (const [name, { value, options }] of metadata.cookies) setCookie(c, name, value, options);
131
+ const output = endpoint.outputSchema ? await endpoint.parseOutput(data) : {};
117
132
  c.set("__response", output);
118
133
  c.set("__endpoint", endpoint);
119
134
  c.set("__logger", logger);
@@ -145,4 +160,4 @@ var HonoEndpoint = class HonoEndpoint {
145
160
 
146
161
  //#endregion
147
162
  export { HonoEndpoint };
148
- //# sourceMappingURL=HonoEndpointAdaptor-fs2928iO.mjs.map
163
+ //# sourceMappingURL=HonoEndpointAdaptor-Y4AD3E9g.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HonoEndpointAdaptor-Y4AD3E9g.mjs","names":["endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >","c: Context<any, string, {}>","data: unknown","schema?: T","serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>","app: Hono","serviceDiscovery: ServiceDiscovery<any, any>","routes: string[]","envParser: EnvironmentParser<{}>","logger: TLogger","options?: HonoEndpointOptions","endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[]","validationError: any","e: any","docsPath: string","openApiOptions?: HonoEndpointOptions['openApiOptions']"],"sources":["../src/endpoints/HonoEndpointAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { checkRateLimit, getRateLimitHeaders } from '@geekmidas/rate-limit';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type Context, Hono } from 'hono';\nimport { setCookie } from 'hono/cookie';\nimport { validator } from 'hono/validator';\nimport type { HttpMethod, LowerHttpMethod } from '../types';\nimport {\n Endpoint,\n type EndpointContext,\n type EndpointSchemas,\n ResponseBuilder,\n} from './Endpoint';\nimport { getEndpointsFromRoutes } from './helpers';\nimport { parseHonoQuery } from './parseHonoQuery';\n\nimport { wrapError } from '@geekmidas/errors';\nimport {\n type Service,\n ServiceDiscovery,\n type ServiceRecord,\n} from '@geekmidas/services';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\nimport { publishConstructEvents } from '../publisher';\n\nexport interface HonoEndpointOptions {\n /**\n * Path where OpenAPI documentation will be served.\n * Set to false to disable docs route.\n * @default '/docs'\n */\n docsPath?: string | false;\n /**\n * OpenAPI schema options\n */\n openApiOptions?: {\n title?: string;\n version?: string;\n description?: string;\n };\n}\n\nexport class HonoEndpoint<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n> {\n constructor(\n private readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n ) {}\n\n static async validate<T extends StandardSchemaV1>(\n c: Context<any, string, {}>,\n data: unknown,\n schema?: T,\n ) {\n if (!schema) {\n return undefined;\n }\n\n const parsed = await Endpoint.validate(schema, data);\n\n if (parsed.issues) {\n return c.json(parsed.issues, 422);\n }\n\n return parsed.value;\n }\n addRoute(\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n ): void {\n HonoEndpoint.addRoute(this.endpoint, serviceDiscovery, app);\n }\n\n static applyEventMiddleware(\n app: Hono,\n serviceDiscovery: ServiceDiscovery<any, any>,\n ) {\n app.use(async (c, next) => {\n await next();\n // @ts-ignore\n const endpoint = c.get('__endpoint') as Endpoint<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >;\n // @ts-ignore\n const response = c.get('__response') as InferStandardSchema<TOutSchema>;\n // @ts-ignore\n const logger = c.get('__logger') as Logger;\n\n if (Endpoint.isSuccessStatus(c.res.status) && endpoint) {\n await publishConstructEvents<any, any>(\n endpoint,\n response,\n serviceDiscovery,\n logger,\n );\n }\n });\n }\n\n static async fromRoutes<TLogger extends Logger, TServices extends Service[]>(\n routes: string[],\n envParser: EnvironmentParser<{}>,\n app = new Hono(),\n logger: TLogger,\n cwd = process.cwd(),\n options?: HonoEndpointOptions,\n ): Promise<Hono> {\n const endpoints = await getEndpointsFromRoutes<TServices>(routes, cwd);\n const serviceDiscovery = ServiceDiscovery.getInstance<\n ServiceRecord<TServices>,\n TLogger\n >(logger, envParser);\n\n HonoEndpoint.addRoutes(endpoints, serviceDiscovery, app, options);\n\n return app;\n }\n\n static addRoutes<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n >(\n endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[],\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n options?: HonoEndpointOptions,\n ): void {\n // Add docs route if not disabled\n const docsPath =\n options?.docsPath !== false ? options?.docsPath || '/docs' : null;\n if (docsPath) {\n HonoEndpoint.addDocsRoute(\n endpoints,\n app,\n docsPath,\n options?.openApiOptions,\n );\n }\n\n // Sort endpoints to ensure static routes come before dynamic ones\n const sortedEndpoints = endpoints.sort((a, b) => {\n const aSegments = a.route.split('/');\n const bSegments = b.route.split('/');\n\n // Compare each segment\n for (let i = 0; i < Math.max(aSegments.length, bSegments.length); i++) {\n const aSegment = aSegments[i] || '';\n const bSegment = bSegments[i] || '';\n\n // If one is dynamic and the other is not, static comes first\n const aIsDynamic = aSegment.startsWith(':');\n const bIsDynamic = bSegment.startsWith(':');\n\n if (!aIsDynamic && bIsDynamic) return -1;\n if (aIsDynamic && !bIsDynamic) return 1;\n\n // If both are the same type, compare alphabetically\n if (aSegment !== bSegment) {\n return aSegment.localeCompare(bSegment);\n }\n }\n\n return 0;\n });\n HonoEndpoint.applyEventMiddleware(app, serviceDiscovery);\n for (const endpoint of sortedEndpoints) {\n HonoEndpoint.addRoute(endpoint, serviceDiscovery, app);\n }\n }\n\n static addRoute<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n >(\n endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,\n app: Hono,\n ): void {\n const { route } = endpoint;\n const method = endpoint.method.toLowerCase() as LowerHttpMethod<TMethod>;\n\n app[method](\n route,\n validator('json', (value, c) =>\n HonoEndpoint.validate(c, value, endpoint.input?.body),\n ),\n validator('query', (_, c) => {\n const parsedQuery = parseHonoQuery(c);\n return HonoEndpoint.validate(c, parsedQuery, endpoint.input?.query);\n }),\n validator('param', (params, c) =>\n HonoEndpoint.validate(c, params, endpoint.input?.params),\n ),\n async (c) => {\n const logger = endpoint.logger.child({\n endpoint: endpoint.fullPath,\n route: endpoint.route,\n host: c.header('host'),\n method: endpoint.method,\n path: c.req.path,\n }) as TLogger;\n\n try {\n const headerValues = c.req.header();\n\n const header = Endpoint.createHeaders(headerValues);\n const cookie = Endpoint.createCookies(headerValues.cookie);\n\n const services = await serviceDiscovery.register(endpoint.services);\n\n const session = await endpoint.getSession({\n services,\n logger,\n header,\n cookie,\n });\n\n const isAuthorized = await endpoint.authorize({\n header,\n cookie,\n services,\n logger,\n session,\n });\n\n if (!isAuthorized) {\n logger.warn('Unauthorized access attempt');\n return c.json({ error: 'Unauthorized' }, 401);\n }\n\n // Check rate limit if configured\n if (endpoint.rateLimit) {\n const rateLimitInfo = await checkRateLimit(endpoint.rateLimit, {\n header,\n services,\n logger,\n session,\n path: c.req.path,\n method: endpoint.method,\n });\n\n // Set rate limit headers\n const rateLimitHeaders = getRateLimitHeaders(\n rateLimitInfo,\n endpoint.rateLimit,\n );\n for (const [key, value] of Object.entries(rateLimitHeaders)) {\n if (value) {\n c.header(key, value);\n }\n }\n }\n\n const responseBuilder = new ResponseBuilder();\n const response = await endpoint.handler(\n {\n services,\n logger,\n body: c.req.valid('json'),\n query: c.req.valid('query'),\n params: c.req.valid('param'),\n session,\n header: Endpoint.createHeaders(headerValues),\n cookie: Endpoint.createCookies(headerValues.cookie),\n } as unknown as EndpointContext<\n TInput,\n TServices,\n TLogger,\n TSession\n >,\n responseBuilder,\n );\n\n // Publish events if configured\n\n // Validate output if schema is defined\n\n try {\n // Check if response has metadata\n let data = response;\n let metadata = responseBuilder.getMetadata();\n let status = endpoint.status as ContentfulStatusCode;\n\n if (Endpoint.hasMetadata(response)) {\n data = response.data;\n metadata = response.metadata;\n }\n\n // Apply response metadata\n if (metadata.status) {\n status = metadata.status as ContentfulStatusCode;\n }\n\n if (metadata.headers) {\n for (const [key, value] of Object.entries(metadata.headers)) {\n c.header(key, value);\n }\n }\n\n if (metadata.cookies) {\n for (const [name, { value, options }] of metadata.cookies) {\n setCookie(c, name, value, options);\n }\n }\n\n const output = endpoint.outputSchema\n ? await endpoint.parseOutput(data)\n : ({} as any);\n // @ts-ignore\n c.set('__response', output);\n // @ts-ignore\n c.set('__endpoint', endpoint);\n // @ts-ignore\n c.set('__logger', logger);\n\n return c.json(output, status);\n } catch (validationError: any) {\n logger.error(validationError, 'Output validation failed');\n const error = wrapError(\n validationError,\n 422,\n 'Response validation failed',\n );\n return c.json(error, error.statusCode as ContentfulStatusCode);\n }\n } catch (e: any) {\n logger.error(e, 'Error processing endpoint request');\n const error = wrapError(e, 500, 'Internal Server Error');\n return c.json(error, error.statusCode as ContentfulStatusCode);\n }\n },\n );\n }\n\n static addDocsRoute<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n >(\n endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[],\n app: Hono,\n docsPath: string,\n openApiOptions?: HonoEndpointOptions['openApiOptions'],\n ): void {\n app.get(docsPath, async (c) => {\n try {\n const openApiSchema = await Endpoint.buildOpenApiSchema(\n endpoints,\n openApiOptions,\n );\n\n return c.json(openApiSchema);\n } catch (error) {\n console.error('Error generating OpenAPI schema:', error);\n return c.json(\n { error: 'Failed to generate OpenAPI documentation' },\n 500,\n );\n }\n });\n }\n}\n"],"mappings":"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"}
@@ -31,4 +31,4 @@ Object.defineProperty(exports, 'Subscriber', {
31
31
  return Subscriber;
32
32
  }
33
33
  });
34
- //# sourceMappingURL=Subscriber-G7EUI3yc.cjs.map
34
+ //# sourceMappingURL=Subscriber-CSt7EOlT.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subscriber-G7EUI3yc.cjs","names":["ConsoleLogger","Construct","obj: any","ConstructType","handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >"],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { Construct, ConstructType } from '../Construct';\n\nimport type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n TPublisher extends EventPublisher<any> | undefined,\n TEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n ? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n : never;\n\nexport class Subscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends\n ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices\n> {\n __IS_SUBSCRIBER__ = true;\n\n static isSubscriber(\n obj: any,\n ): obj is Subscriber<any, any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_SUBSCRIBER__ === true &&\n obj.type === ConstructType.Subscriber,\n );\n }\n\n constructor(\n public readonly handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n public readonly timeout: number = 30000,\n protected _subscribedEvents?: TSubscribedEvents,\n public readonly outputSchema?: OutSchema,\n public readonly services: TServices = [] as unknown as TServices,\n public readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n public readonly publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >,\n ) {\n super(\n ConstructType.Subscriber,\n logger,\n services,\n [],\n publisherService,\n outputSchema,\n );\n }\n\n get subscribedEvents(): TSubscribedEvents | undefined {\n return this._subscribedEvents;\n }\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n ctx: SubscriberContext<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> = {\n events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n"],"mappings":";;;;;AAaA,MAAM,iBAAiB,IAAIA;AAU3B,IAAa,aAAb,cAQUC,4BAMR;CACA,oBAAoB;CAEpB,OAAO,aACLC,KACiD;AACjD,SAAO,QACL,OACE,IAAI,sBAAsB,QAC1B,IAAI,SAASC,gCAAc,WAC9B;CACF;CAED,YACkBC,SAOAC,UAAkB,KACxBC,mBACMC,cACAC,WAAsB,CAAE,GACxBC,SAAkB,gBAClBC,kBAIhB;AACA,QACEP,gCAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACD;EAxBe;EAOA;EACN;EACM;EACA;EACA;EACA;CAajB;CAED,IAAI,mBAAkD;AACpD,SAAO,KAAK;CACb;AACF"}
1
+ {"version":3,"file":"Subscriber-CSt7EOlT.cjs","names":["ConsoleLogger","Construct","obj: any","ConstructType","handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >"],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { Construct, ConstructType } from '../Construct';\n\nimport type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n TPublisher extends EventPublisher<any> | undefined,\n TEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n ? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n : never;\n\nexport class Subscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends\n ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices\n> {\n __IS_SUBSCRIBER__ = true;\n\n static isSubscriber(\n obj: any,\n ): obj is Subscriber<any, any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_SUBSCRIBER__ === true &&\n obj.type === ConstructType.Subscriber,\n );\n }\n\n constructor(\n public readonly handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n public readonly timeout: number = 30000,\n protected _subscribedEvents?: TSubscribedEvents,\n public readonly outputSchema?: OutSchema,\n public readonly services: TServices = [] as unknown as TServices,\n public readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n public readonly publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >,\n ) {\n super(\n ConstructType.Subscriber,\n logger,\n services,\n [],\n publisherService,\n outputSchema,\n );\n }\n\n get subscribedEvents(): TSubscribedEvents | undefined {\n return this._subscribedEvents;\n }\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n ctx: SubscriberContext<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> = {\n events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n"],"mappings":";;;;;AAaA,MAAM,iBAAiB,IAAIA;AAU3B,IAAa,aAAb,cAQUC,4BAMR;CACA,oBAAoB;CAEpB,OAAO,aACLC,KACiD;AACjD,SAAO,QACL,OACE,IAAI,sBAAsB,QAC1B,IAAI,SAASC,gCAAc,WAC9B;CACF;CAED,YACkBC,SAOAC,UAAkB,KACxBC,mBACMC,cACAC,WAAsB,CAAE,GACxBC,SAAkB,gBAClBC,kBAIhB;AACA,QACEP,gCAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACD;EAxBe;EAOA;EACN;EACM;EACA;EACA;EACA;CAajB;CAED,IAAI,mBAAkD;AACpD,SAAO,KAAK;CACb;AACF"}
@@ -25,4 +25,4 @@ var Subscriber = class extends Construct {
25
25
 
26
26
  //#endregion
27
27
  export { Subscriber };
28
- //# sourceMappingURL=Subscriber-BTwKnz3c.mjs.map
28
+ //# sourceMappingURL=Subscriber-DkCDcTUL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subscriber-BTwKnz3c.mjs","names":["DEFAULT_LOGGER","obj: any","handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >"],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { Construct, ConstructType } from '../Construct';\n\nimport type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n TPublisher extends EventPublisher<any> | undefined,\n TEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n ? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n : never;\n\nexport class Subscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends\n ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices\n> {\n __IS_SUBSCRIBER__ = true;\n\n static isSubscriber(\n obj: any,\n ): obj is Subscriber<any, any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_SUBSCRIBER__ === true &&\n obj.type === ConstructType.Subscriber,\n );\n }\n\n constructor(\n public readonly handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n public readonly timeout: number = 30000,\n protected _subscribedEvents?: TSubscribedEvents,\n public readonly outputSchema?: OutSchema,\n public readonly services: TServices = [] as unknown as TServices,\n public readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n public readonly publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >,\n ) {\n super(\n ConstructType.Subscriber,\n logger,\n services,\n [],\n publisherService,\n outputSchema,\n );\n }\n\n get subscribedEvents(): TSubscribedEvents | undefined {\n return this._subscribedEvents;\n }\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n ctx: SubscriberContext<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> = {\n events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n"],"mappings":";;;;AAaA,MAAMA,mBAAiB,IAAI;AAU3B,IAAa,aAAb,cAQU,UAMR;CACA,oBAAoB;CAEpB,OAAO,aACLC,KACiD;AACjD,SAAO,QACL,OACE,IAAI,sBAAsB,QAC1B,IAAI,SAAS,cAAc,WAC9B;CACF;CAED,YACkBC,SAOAC,UAAkB,KACxBC,mBACMC,cACAC,WAAsB,CAAE,GACxBC,SAAkBP,kBAClBQ,kBAIhB;AACA,QACE,cAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACD;EAxBe;EAOA;EACN;EACM;EACA;EACA;EACA;CAajB;CAED,IAAI,mBAAkD;AACpD,SAAO,KAAK;CACb;AACF"}
1
+ {"version":3,"file":"Subscriber-DkCDcTUL.mjs","names":["DEFAULT_LOGGER","obj: any","handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >"],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { Construct, ConstructType } from '../Construct';\n\nimport type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n TPublisher extends EventPublisher<any> | undefined,\n TEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n ? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n : never;\n\nexport class Subscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends\n ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices\n> {\n __IS_SUBSCRIBER__ = true;\n\n static isSubscriber(\n obj: any,\n ): obj is Subscriber<any, any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_SUBSCRIBER__ === true &&\n obj.type === ConstructType.Subscriber,\n );\n }\n\n constructor(\n public readonly handler: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n public readonly timeout: number = 30000,\n protected _subscribedEvents?: TSubscribedEvents,\n public readonly outputSchema?: OutSchema,\n public readonly services: TServices = [] as unknown as TServices,\n public readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n public readonly publisherService?: Service<\n TEventPublisherServiceName,\n TEventPublisher\n >,\n ) {\n super(\n ConstructType.Subscriber,\n logger,\n services,\n [],\n publisherService,\n outputSchema,\n );\n }\n\n get subscribedEvents(): TSubscribedEvents | undefined {\n return this._subscribedEvents;\n }\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n ctx: SubscriberContext<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n TEventPublisher extends EventPublisher<any> | undefined,\n TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> = {\n events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n"],"mappings":";;;;AAaA,MAAMA,mBAAiB,IAAI;AAU3B,IAAa,aAAb,cAQU,UAMR;CACA,oBAAoB;CAEpB,OAAO,aACLC,KACiD;AACjD,SAAO,QACL,OACE,IAAI,sBAAsB,QAC1B,IAAI,SAAS,cAAc,WAC9B;CACF;CAED,YACkBC,SAOAC,UAAkB,KACxBC,mBACMC,cACAC,WAAsB,CAAE,GACxBC,SAAkBP,kBAClBQ,kBAIhB;AACA,QACE,cAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACD;EAxBe;EAOA;EACN;EACM;EACA;EACA;EACA;CAajB;CAED,IAAI,mBAAkD;AACpD,SAAO,KAAK;CACb;AACF"}
@@ -1,4 +1,4 @@
1
- import { Subscriber } from "./Subscriber-BTwKnz3c.mjs";
1
+ import { Subscriber } from "./Subscriber-DkCDcTUL.mjs";
2
2
  import { DEFAULT_LOGGER } from "@geekmidas/logger/console";
3
3
 
4
4
  //#region src/subscribers/SubscriberBuilder.ts
@@ -51,4 +51,4 @@ var SubscriberBuilder = class {
51
51
 
52
52
  //#endregion
53
53
  export { SubscriberBuilder };
54
- //# sourceMappingURL=SubscriberBuilder-C1me_972.mjs.map
54
+ //# sourceMappingURL=SubscriberBuilder-Bn9Hyi28.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriberBuilder-C1me_972.mjs","names":["timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >"],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _subscribedEvents: TSubscribedEvents = [] as any;\n private _timeout?: number;\n private outputSchema?: OutSchema;\n private _services: TServices = [] as Service[] as TServices;\n private _logger: TLogger = DEFAULT_LOGGER;\n private _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n constructor() {\n this._timeout = 30000; // Default timeout\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this.outputSchema = schema as unknown as OutSchema;\n return this as any;\n }\n\n services<T extends Service[]>(\n services: T,\n ): SubscriberBuilder<\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._services = [...this._services, ...services] as any;\n return this as any;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): SubscriberBuilder<\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._logger = logger as unknown as TLogger;\n return this as any;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TSubscribedEvents\n > {\n this._publisher = publisher as any;\n return this as any;\n }\n\n subscribe<\n TEvent extends TEventPublisher extends EventPublisher<any>\n ?\n | ExtractPublisherMessage<TEventPublisher>['type']\n | ExtractPublisherMessage<TEventPublisher>['type'][]\n : never,\n >(\n event: TEvent,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TEvent extends any[]\n ? [...TSubscribedEvents, ...TEvent]\n : [...TSubscribedEvents, TEvent]\n > {\n const eventsToAdd = Array.isArray(event) ? event : [event];\n this._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n return this as any;\n }\n\n handle(\n fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n ): Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n const subscriber = new Subscriber(\n fn,\n this._timeout,\n this._subscribedEvents,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n );\n\n // Reset builder state after creating the subscriber to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._publisher = undefined;\n this._subscribedEvents = [] as any;\n this._timeout = 30000; // Reset to default\n this.outputSchema = undefined;\n\n return subscriber;\n }\n}\n"],"mappings":";;;;AAUA,IAAa,oBAAb,MAOE;CACA,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmB;CAC3B,AAAQ;CAER,cAAc;AACZ,OAAK,WAAW;CACjB;CAED,QAAQA,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,eAAe;AACpB,SAAO;CACR;CAED,SACEC,UAQA;AACA,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,UAAU;AACf,SAAO;CACR;CAED,UACEC,WAQA;AACA,OAAK,aAAa;AAClB,SAAO;CACR;CAED,UAOEC,OAUA;EACA,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACR;CAED,OACEC,IAcA;EACA,MAAM,aAAa,IAAI,WACrB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"SubscriberBuilder-Bn9Hyi28.mjs","names":["timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >"],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _subscribedEvents: TSubscribedEvents = [] as any;\n private _timeout?: number;\n private outputSchema?: OutSchema;\n private _services: TServices = [] as Service[] as TServices;\n private _logger: TLogger = DEFAULT_LOGGER;\n private _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n constructor() {\n this._timeout = 30000; // Default timeout\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this.outputSchema = schema as unknown as OutSchema;\n return this as any;\n }\n\n services<T extends Service[]>(\n services: T,\n ): SubscriberBuilder<\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._services = [...this._services, ...services] as any;\n return this as any;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): SubscriberBuilder<\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._logger = logger as unknown as TLogger;\n return this as any;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TSubscribedEvents\n > {\n this._publisher = publisher as any;\n return this as any;\n }\n\n subscribe<\n TEvent extends TEventPublisher extends EventPublisher<any>\n ?\n | ExtractPublisherMessage<TEventPublisher>['type']\n | ExtractPublisherMessage<TEventPublisher>['type'][]\n : never,\n >(\n event: TEvent,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TEvent extends any[]\n ? [...TSubscribedEvents, ...TEvent]\n : [...TSubscribedEvents, TEvent]\n > {\n const eventsToAdd = Array.isArray(event) ? event : [event];\n this._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n return this as any;\n }\n\n handle(\n fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n ): Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n const subscriber = new Subscriber(\n fn,\n this._timeout,\n this._subscribedEvents,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n );\n\n // Reset builder state after creating the subscriber to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._publisher = undefined;\n this._subscribedEvents = [] as any;\n this._timeout = 30000; // Reset to default\n this.outputSchema = undefined;\n\n return subscriber;\n }\n}\n"],"mappings":";;;;AAUA,IAAa,oBAAb,MAOE;CACA,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmB;CAC3B,AAAQ;CAER,cAAc;AACZ,OAAK,WAAW;CACjB;CAED,QAAQA,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,eAAe;AACpB,SAAO;CACR;CAED,SACEC,UAQA;AACA,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,UAAU;AACf,SAAO;CACR;CAED,UACEC,WAQA;AACA,OAAK,aAAa;AAClB,SAAO;CACR;CAED,UAOEC,OAUA;EACA,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACR;CAED,OACEC,IAcA;EACA,MAAM,aAAa,IAAI,WACrB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACR;AACF"}
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Subscriber = require('./Subscriber-G7EUI3yc.cjs');
2
+ const require_Subscriber = require('./Subscriber-CSt7EOlT.cjs');
3
3
  const __geekmidas_logger_console = require_chunk.__toESM(require("@geekmidas/logger/console"));
4
4
 
5
5
  //#region src/subscribers/SubscriberBuilder.ts
@@ -57,4 +57,4 @@ Object.defineProperty(exports, 'SubscriberBuilder', {
57
57
  return SubscriberBuilder;
58
58
  }
59
59
  });
60
- //# sourceMappingURL=SubscriberBuilder-C6iZvuDe.cjs.map
60
+ //# sourceMappingURL=SubscriberBuilder-RsiOmnwq.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriberBuilder-C6iZvuDe.cjs","names":["DEFAULT_LOGGER","timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","Subscriber"],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _subscribedEvents: TSubscribedEvents = [] as any;\n private _timeout?: number;\n private outputSchema?: OutSchema;\n private _services: TServices = [] as Service[] as TServices;\n private _logger: TLogger = DEFAULT_LOGGER;\n private _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n constructor() {\n this._timeout = 30000; // Default timeout\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this.outputSchema = schema as unknown as OutSchema;\n return this as any;\n }\n\n services<T extends Service[]>(\n services: T,\n ): SubscriberBuilder<\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._services = [...this._services, ...services] as any;\n return this as any;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): SubscriberBuilder<\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._logger = logger as unknown as TLogger;\n return this as any;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TSubscribedEvents\n > {\n this._publisher = publisher as any;\n return this as any;\n }\n\n subscribe<\n TEvent extends TEventPublisher extends EventPublisher<any>\n ?\n | ExtractPublisherMessage<TEventPublisher>['type']\n | ExtractPublisherMessage<TEventPublisher>['type'][]\n : never,\n >(\n event: TEvent,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TEvent extends any[]\n ? [...TSubscribedEvents, ...TEvent]\n : [...TSubscribedEvents, TEvent]\n > {\n const eventsToAdd = Array.isArray(event) ? event : [event];\n this._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n return this as any;\n }\n\n handle(\n fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n ): Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n const subscriber = new Subscriber(\n fn,\n this._timeout,\n this._subscribedEvents,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n );\n\n // Reset builder state after creating the subscriber to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._publisher = undefined;\n this._subscribedEvents = [] as any;\n this._timeout = 30000; // Reset to default\n this.outputSchema = undefined;\n\n return subscriber;\n }\n}\n"],"mappings":";;;;;AAUA,IAAa,oBAAb,MAOE;CACA,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmBA;CAC3B,AAAQ;CAER,cAAc;AACZ,OAAK,WAAW;CACjB;CAED,QAAQC,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,eAAe;AACpB,SAAO;CACR;CAED,SACEC,UAQA;AACA,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,UAAU;AACf,SAAO;CACR;CAED,UACEC,WAQA;AACA,OAAK,aAAa;AAClB,SAAO;CACR;CAED,UAOEC,OAUA;EACA,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACR;CAED,OACEC,IAcA;EACA,MAAM,aAAa,IAAIC,8BACrB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUR;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"SubscriberBuilder-RsiOmnwq.cjs","names":["DEFAULT_LOGGER","timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >","Subscriber"],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n EventPublisher,\n ExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _subscribedEvents: TSubscribedEvents = [] as any;\n private _timeout?: number;\n private outputSchema?: OutSchema;\n private _services: TServices = [] as Service[] as TServices;\n private _logger: TLogger = DEFAULT_LOGGER;\n private _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n constructor() {\n this._timeout = 30000; // Default timeout\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this.outputSchema = schema as unknown as OutSchema;\n return this as any;\n }\n\n services<T extends Service[]>(\n services: T,\n ): SubscriberBuilder<\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._services = [...this._services, ...services] as any;\n return this as any;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): SubscriberBuilder<\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n this._logger = logger as unknown as TLogger;\n return this as any;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TSubscribedEvents\n > {\n this._publisher = publisher as any;\n return this as any;\n }\n\n subscribe<\n TEvent extends TEventPublisher extends EventPublisher<any>\n ?\n | ExtractPublisherMessage<TEventPublisher>['type']\n | ExtractPublisherMessage<TEventPublisher>['type'][]\n : never,\n >(\n event: TEvent,\n ): SubscriberBuilder<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TEvent extends any[]\n ? [...TSubscribedEvents, ...TEvent]\n : [...TSubscribedEvents, TEvent]\n > {\n const eventsToAdd = Array.isArray(event) ? event : [event];\n this._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n return this as any;\n }\n\n handle(\n fn: SubscriberHandler<\n TEventPublisher,\n TSubscribedEvents,\n TServices,\n TLogger,\n OutSchema\n >,\n ): Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n > {\n const subscriber = new Subscriber(\n fn,\n this._timeout,\n this._subscribedEvents,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n );\n\n // Reset builder state after creating the subscriber to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._publisher = undefined;\n this._subscribedEvents = [] as any;\n this._timeout = 30000; // Reset to default\n this.outputSchema = undefined;\n\n return subscriber;\n }\n}\n"],"mappings":";;;;;AAUA,IAAa,oBAAb,MAOE;CACA,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmBA;CAC3B,AAAQ;CAER,cAAc;AACZ,OAAK,WAAW;CACjB;CAED,QAAQC,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,eAAe;AACpB,SAAO;CACR;CAED,SACEC,UAQA;AACA,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACR;CAED,OACEC,QAQA;AACA,OAAK,UAAU;AACf,SAAO;CACR;CAED,UACEC,WAQA;AACA,OAAK,aAAa;AAClB,SAAO;CACR;CAED,UAOEC,OAUA;EACA,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACR;CAED,OACEC,IAcA;EACA,MAAM,aAAa,IAAIC,8BACrB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUR;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACR;AACF"}
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
2
  const require_publisher = require('./publisher-lFQleddL.cjs');
3
- const require_Endpoint = require('./Endpoint-D1nnEsBU.cjs');
3
+ const require_Endpoint = require('./Endpoint-BVZJb4OR.cjs');
4
4
  const __geekmidas_envkit = require_chunk.__toESM(require("@geekmidas/envkit"));
5
5
  const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
6
6
 
@@ -18,6 +18,7 @@ var TestEndpointAdaptor = class TestEndpointAdaptor {
18
18
  const query = await this.endpoint.parseInput(ctx.query, "query");
19
19
  const params = await this.endpoint.parseInput(ctx.params, "params");
20
20
  const header = require_Endpoint.Endpoint.createHeaders(ctx.headers);
21
+ const cookie = require_Endpoint.Endpoint.createCookies(ctx.headers.cookie);
21
22
  const logger = this.endpoint.logger.child({
22
23
  route: this.endpoint.route,
23
24
  host: ctx.headers.host,
@@ -26,8 +27,10 @@ var TestEndpointAdaptor = class TestEndpointAdaptor {
26
27
  const session = await this.endpoint.getSession({
27
28
  logger,
28
29
  services: ctx.services,
29
- header
30
+ header,
31
+ cookie
30
32
  });
33
+ const responseBuilder = new require_Endpoint.ResponseBuilder();
31
34
  const response = await this.endpoint.handler({
32
35
  body,
33
36
  query,
@@ -35,11 +38,22 @@ var TestEndpointAdaptor = class TestEndpointAdaptor {
35
38
  session,
36
39
  services: ctx.services,
37
40
  logger,
38
- header
39
- });
40
- const output = await this.endpoint.parseOutput(response);
41
+ header,
42
+ cookie
43
+ }, responseBuilder);
44
+ let data = response;
45
+ let metadata = responseBuilder.getMetadata();
46
+ if (require_Endpoint.Endpoint.hasMetadata(response)) {
47
+ data = response.data;
48
+ metadata = response.metadata;
49
+ }
50
+ const output = await this.endpoint.parseOutput(data);
41
51
  ctx.publisher && await this.serviceDiscovery.register([ctx.publisher]);
42
52
  await require_publisher.publishConstructEvents(this.endpoint, output, this.serviceDiscovery);
53
+ if (metadata.headers && Object.keys(metadata.headers).length > 0 || metadata.cookies && metadata.cookies.size > 0 || metadata.status) return {
54
+ data: output,
55
+ metadata
56
+ };
43
57
  return output;
44
58
  }
45
59
  };
@@ -51,4 +65,4 @@ Object.defineProperty(exports, 'TestEndpointAdaptor', {
51
65
  return TestEndpointAdaptor;
52
66
  }
53
67
  });
54
- //# sourceMappingURL=TestEndpointAdaptor-B4SvJvK-.cjs.map
68
+ //# sourceMappingURL=TestEndpointAdaptor-CbNeUT3Y.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestEndpointAdaptor-CbNeUT3Y.cjs","names":["endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName\n >","EnvironmentParser","serviceDiscovery: ServiceDiscovery<\n any,\n any\n >","ctx: TestRequestAdaptor<\n TInput,\n TServices,\n TEventPublisher,\n TEventPublisherServiceName\n >","ResponseBuilder"],"sources":["../src/endpoints/TestEndpointAdaptor.ts"],"sourcesContent":["import { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n type Service,\n ServiceDiscovery,\n type ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishConstructEvents } from '../publisher';\nimport type { HttpMethod } from '../types';\nimport {\n Endpoint,\n type EndpointSchemas,\n ResponseBuilder,\n type ResponseWithMetadata,\n} from './Endpoint';\n\nexport class TestEndpointAdaptor<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n> {\n static getDefaultServiceDiscover<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n >(\n endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName\n >,\n ) {\n return ServiceDiscovery.getInstance(\n endpoint.logger,\n new EnvironmentParser({}),\n );\n }\n constructor(\n private readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName\n >,\n private serviceDiscovery: ServiceDiscovery<\n any,\n any\n > = TestEndpointAdaptor.getDefaultServiceDiscover(endpoint),\n ) {}\n\n async request(\n ctx: TestRequestAdaptor<\n TInput,\n TServices,\n TEventPublisher,\n TEventPublisherServiceName\n >,\n ): Promise<\n | InferStandardSchema<TOutSchema>\n | ResponseWithMetadata<InferStandardSchema<TOutSchema>>\n > {\n const body = await this.endpoint.parseInput((ctx as any).body, 'body');\n const query = await this.endpoint.parseInput((ctx as any).query, 'query');\n const params = await this.endpoint.parseInput(\n (ctx as any).params,\n 'params',\n );\n\n const header = Endpoint.createHeaders(ctx.headers);\n const cookie = Endpoint.createCookies(ctx.headers.cookie);\n const logger = this.endpoint.logger.child({\n route: this.endpoint.route,\n host: ctx.headers.host,\n method: this.endpoint.method,\n }) as TLogger;\n const session = await this.endpoint.getSession({\n logger,\n services: ctx.services,\n header,\n cookie,\n });\n\n const responseBuilder = new ResponseBuilder();\n const response = await this.endpoint.handler(\n {\n body,\n query,\n params,\n session,\n services: ctx.services,\n logger,\n header,\n cookie,\n } as any,\n responseBuilder,\n );\n\n // Check if response has metadata\n let data = response;\n let metadata = responseBuilder.getMetadata();\n\n if (Endpoint.hasMetadata(response)) {\n data = response.data;\n metadata = response.metadata;\n }\n\n const output = await this.endpoint.parseOutput(data);\n ctx.publisher && (await this.serviceDiscovery.register([ctx.publisher]));\n\n await publishConstructEvents(this.endpoint, output, this.serviceDiscovery);\n\n // Return with metadata if any was set\n if (\n (metadata.headers && Object.keys(metadata.headers).length > 0) ||\n (metadata.cookies && metadata.cookies.size > 0) ||\n metadata.status\n ) {\n return { data: output, metadata };\n }\n\n return output;\n }\n}\n\nexport type TestRequestAdaptor<\n TInput extends EndpointSchemas = {},\n TServices extends Service[] = [],\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n> = {\n services: ServiceRecord<TServices>;\n headers: Record<string, string>;\n publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n} & InferComposableStandardSchema<TInput>;\n"],"mappings":";;;;;;;AAsBA,IAAa,sBAAb,MAAa,oBAUX;CACA,OAAO,0BAWLA,UAWA;AACA,SAAO,sCAAiB,YACtB,SAAS,QACT,IAAIC,qCAAkB,CAAE,GACzB;CACF;CACD,YACmBD,UAWTE,mBAGJ,oBAAoB,0BAA0B,SAAS,EAC3D;EAfiB;EAWT;CAIN;CAEJ,MAAM,QACJC,KASA;EACA,MAAM,OAAO,MAAM,KAAK,SAAS,WAAY,IAAY,MAAM,OAAO;EACtE,MAAM,QAAQ,MAAM,KAAK,SAAS,WAAY,IAAY,OAAO,QAAQ;EACzE,MAAM,SAAS,MAAM,KAAK,SAAS,WAChC,IAAY,QACb,SACD;EAED,MAAM,SAAS,0BAAS,cAAc,IAAI,QAAQ;EAClD,MAAM,SAAS,0BAAS,cAAc,IAAI,QAAQ,OAAO;EACzD,MAAM,SAAS,KAAK,SAAS,OAAO,MAAM;GACxC,OAAO,KAAK,SAAS;GACrB,MAAM,IAAI,QAAQ;GAClB,QAAQ,KAAK,SAAS;EACvB,EAAC;EACF,MAAM,UAAU,MAAM,KAAK,SAAS,WAAW;GAC7C;GACA,UAAU,IAAI;GACd;GACA;EACD,EAAC;EAEF,MAAM,kBAAkB,IAAIC;EAC5B,MAAM,WAAW,MAAM,KAAK,SAAS,QACnC;GACE;GACA;GACA;GACA;GACA,UAAU,IAAI;GACd;GACA;GACA;EACD,GACD,gBACD;EAGD,IAAI,OAAO;EACX,IAAI,WAAW,gBAAgB,aAAa;AAE5C,MAAI,0BAAS,YAAY,SAAS,EAAE;AAClC,UAAO,SAAS;AAChB,cAAW,SAAS;EACrB;EAED,MAAM,SAAS,MAAM,KAAK,SAAS,YAAY,KAAK;AACpD,MAAI,aAAc,MAAM,KAAK,iBAAiB,SAAS,CAAC,IAAI,SAAU,EAAC;AAEvE,QAAM,yCAAuB,KAAK,UAAU,QAAQ,KAAK,iBAAiB;AAG1E,MACG,SAAS,WAAW,OAAO,KAAK,SAAS,QAAQ,CAAC,SAAS,KAC3D,SAAS,WAAW,SAAS,QAAQ,OAAO,KAC7C,SAAS,OAET,QAAO;GAAE,MAAM;GAAQ;EAAU;AAGnC,SAAO;CACR;AACF"}