@geekmidas/constructs 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/{AWSLambdaFunction-DCh1tOhB.d.mts → AWSLambdaFunction-D9RZhm0N.d.mts} +3 -3
  2. package/dist/{AWSLambdaSubscriberAdaptor-DtNZPMoV.d.mts → AWSLambdaSubscriberAdaptor-C0aZBU64.d.mts} +2 -2
  3. package/dist/{AmazonApiGatewayEndpointAdaptor-CPqlw2Rx.cjs → AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs} +38 -25
  4. package/dist/AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs.map +1 -0
  5. package/dist/{AmazonApiGatewayEndpointAdaptor-TP_hLNAa.d.cts → AmazonApiGatewayEndpointAdaptor-CbJqLU6I.d.cts} +2 -2
  6. package/dist/{AmazonApiGatewayEndpointAdaptor-BaTM2TNu.d.mts → AmazonApiGatewayEndpointAdaptor-DC3N7zY_.d.mts} +3 -3
  7. package/dist/{AmazonApiGatewayEndpointAdaptor-Cm4iD199.mjs → AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs} +38 -25
  8. package/dist/AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs.map +1 -0
  9. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B2ZpUFiC.d.mts → AmazonApiGatewayV1EndpointAdaptor-BVxgQ-7J.d.mts} +4 -4
  10. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CConfCqz.d.cts → AmazonApiGatewayV1EndpointAdaptor-CVwJ5k16.d.cts} +3 -3
  11. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D38HuQa9.mjs → AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs} +2 -2
  12. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D38HuQa9.mjs.map → AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs.map} +1 -1
  13. package/dist/{AmazonApiGatewayV1EndpointAdaptor-tjpvLBRb.cjs → AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs} +2 -2
  14. package/dist/{AmazonApiGatewayV1EndpointAdaptor-tjpvLBRb.cjs.map → AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs.map} +1 -1
  15. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DurJvFwa.d.cts → AmazonApiGatewayV2EndpointAdaptor-1oBZdQH3.d.cts} +3 -3
  16. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BwMQInBi.d.mts → AmazonApiGatewayV2EndpointAdaptor-C3H8Hpv7.d.mts} +4 -4
  17. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ByYtiJtN.mjs → AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs} +2 -2
  18. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ByYtiJtN.mjs.map → AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs.map} +1 -1
  19. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DcJ_w3ro.cjs → AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs} +2 -2
  20. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DcJ_w3ro.cjs.map → AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs.map} +1 -1
  21. package/dist/{Authorizer-D1w7MpK6.d.mts → Authorizer-Cpx59w_q.d.mts} +1 -1
  22. package/dist/{BaseFunctionBuilder-Oc2xmxmg.d.mts → BaseFunctionBuilder-CoV7J45W.d.mts} +2 -2
  23. package/dist/{Construct-DCPATqec.d.mts → Construct-jBKqb-Zi.d.mts} +1 -1
  24. package/dist/Construct.d.mts +1 -1
  25. package/dist/{Cron-DPEcDCDW.d.mts → Cron-JZkp_fHy.d.mts} +2 -2
  26. package/dist/{CronBuilder-CxKTiepV.d.mts → CronBuilder-BmFDO0Dm.d.mts} +4 -4
  27. package/dist/{Endpoint-DbPsw13b.mjs → Endpoint-B70_KKhu.mjs} +8 -2
  28. package/dist/Endpoint-B70_KKhu.mjs.map +1 -0
  29. package/dist/{Endpoint-CA-byrDr.cjs → Endpoint-BJo9Hhwm.cjs} +8 -2
  30. package/dist/Endpoint-BJo9Hhwm.cjs.map +1 -0
  31. package/dist/{Endpoint-DoY1Owv2.d.mts → Endpoint-C5djXyae.d.mts} +69 -6
  32. package/dist/{Endpoint-BJPJTGjV.d.cts → Endpoint-CC2RGjkl.d.cts} +66 -3
  33. package/dist/{EndpointBuilder-BJRkivxQ.d.mts → EndpointBuilder-CD8LkBda.d.mts} +42 -5
  34. package/dist/{EndpointBuilder-Bhyft7WY.cjs → EndpointBuilder-DeswNQdG.cjs} +55 -3
  35. package/dist/EndpointBuilder-DeswNQdG.cjs.map +1 -0
  36. package/dist/{EndpointBuilder-69uVrKZL.mjs → EndpointBuilder-FyyoFTJ5.mjs} +55 -3
  37. package/dist/{EndpointBuilder-Bhyft7WY.cjs.map → EndpointBuilder-FyyoFTJ5.mjs.map} +1 -1
  38. package/dist/{EndpointBuilder-CQ-jOXsD.d.cts → EndpointBuilder-vXk6eIJk.d.cts} +39 -2
  39. package/dist/{EndpointFactory-DgwmAR_8.d.cts → EndpointFactory-3g-7Rznt.d.cts} +30 -8
  40. package/dist/{EndpointFactory-BKEPcQgE.d.mts → EndpointFactory-DaFR9LQG.d.mts} +31 -9
  41. package/dist/{EndpointFactory-BcVbkrxf.cjs → EndpointFactory-DcT_g9M_.cjs} +63 -14
  42. package/dist/EndpointFactory-DcT_g9M_.cjs.map +1 -0
  43. package/dist/{EndpointFactory-ARUlRlyM.mjs → EndpointFactory-KJAjBWmO.mjs} +63 -14
  44. package/dist/EndpointFactory-KJAjBWmO.mjs.map +1 -0
  45. package/dist/{Function-Dthlh2Fb.d.mts → Function-Vh1t-Qjj.d.mts} +2 -2
  46. package/dist/{FunctionBuilder-CZFBLfdV.d.mts → FunctionBuilder-3jsoFffg.d.mts} +4 -4
  47. package/dist/{FunctionExecutionWrapper-CfuajSB5.d.mts → FunctionExecutionWrapper-CI3CaoCo.d.mts} +2 -2
  48. package/dist/{HonoEndpointAdaptor-DBjipl6Q.d.mts → HonoEndpointAdaptor-BusUWu1w.d.cts} +8 -8
  49. package/dist/{HonoEndpointAdaptor-sSG85VER.d.cts → HonoEndpointAdaptor-C10W7xCf.d.mts} +6 -6
  50. package/dist/{HonoEndpointAdaptor-BmB4Sc7L.mjs → HonoEndpointAdaptor-CcvXzoYV.mjs} +41 -28
  51. package/dist/HonoEndpointAdaptor-CcvXzoYV.mjs.map +1 -0
  52. package/dist/{HonoEndpointAdaptor-CnqR6PSB.cjs → HonoEndpointAdaptor-DodwLM0-.cjs} +41 -28
  53. package/dist/HonoEndpointAdaptor-DodwLM0-.cjs.map +1 -0
  54. package/dist/{Subscriber-DvOtIyWq.cjs → Subscriber-DOt3svUC.cjs} +1 -1
  55. package/dist/{Subscriber-DvOtIyWq.cjs.map → Subscriber-DOt3svUC.cjs.map} +1 -1
  56. package/dist/{Subscriber-BfxLwZpX.d.mts → Subscriber-aNr1qkxR.d.mts} +2 -2
  57. package/dist/{Subscriber-JzcFFi4p.mjs → Subscriber-kCHbH2fZ.mjs} +1 -1
  58. package/dist/{Subscriber-JzcFFi4p.mjs.map → Subscriber-kCHbH2fZ.mjs.map} +1 -1
  59. package/dist/{SubscriberBuilder-lTiTUS1o.d.mts → SubscriberBuilder-CWS4tdbp.d.mts} +2 -2
  60. package/dist/{SubscriberBuilder-DUuV207i.cjs → SubscriberBuilder-Cj2u9k5Q.cjs} +2 -2
  61. package/dist/{SubscriberBuilder-DUuV207i.cjs.map → SubscriberBuilder-Cj2u9k5Q.cjs.map} +1 -1
  62. package/dist/{SubscriberBuilder-tm4oVOt3.mjs → SubscriberBuilder-DmxMU89X.mjs} +2 -2
  63. package/dist/{SubscriberBuilder-tm4oVOt3.mjs.map → SubscriberBuilder-DmxMU89X.mjs.map} +1 -1
  64. package/dist/{TestEndpointAdaptor-o7JbNcL-.mjs → TestEndpointAdaptor-1pPixE6y.mjs} +2 -2
  65. package/dist/{TestEndpointAdaptor-o7JbNcL-.mjs.map → TestEndpointAdaptor-1pPixE6y.mjs.map} +1 -1
  66. package/dist/{TestEndpointAdaptor-CGQVysE0.d.mts → TestEndpointAdaptor-5-unBV8O.d.mts} +3 -3
  67. package/dist/{TestEndpointAdaptor-CJO-og9U.d.cts → TestEndpointAdaptor-Bm0UjDtV.d.cts} +2 -2
  68. package/dist/{TestEndpointAdaptor-BtLcw4JW.cjs → TestEndpointAdaptor-wA-fmq4v.cjs} +2 -2
  69. package/dist/{TestEndpointAdaptor-BtLcw4JW.cjs.map → TestEndpointAdaptor-wA-fmq4v.cjs.map} +1 -1
  70. package/dist/adaptors/aws.cjs +4 -4
  71. package/dist/adaptors/aws.d.cts +5 -5
  72. package/dist/adaptors/aws.d.mts +15 -15
  73. package/dist/adaptors/aws.mjs +4 -4
  74. package/dist/adaptors/hono.cjs +3 -3
  75. package/dist/adaptors/hono.d.cts +3 -3
  76. package/dist/adaptors/hono.d.mts +9 -9
  77. package/dist/adaptors/hono.mjs +3 -3
  78. package/dist/adaptors/testing.cjs +2 -2
  79. package/dist/adaptors/testing.d.cts +3 -3
  80. package/dist/adaptors/testing.d.mts +9 -9
  81. package/dist/adaptors/testing.mjs +2 -2
  82. package/dist/crons/Cron.d.cts +1 -1
  83. package/dist/crons/Cron.d.mts +6 -6
  84. package/dist/crons/CronBuilder.d.cts +1 -1
  85. package/dist/crons/CronBuilder.d.mts +7 -7
  86. package/dist/crons/index.d.cts +1 -1
  87. package/dist/crons/index.d.mts +11 -11
  88. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +2 -2
  89. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +3 -3
  90. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
  91. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +2 -2
  92. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +3 -3
  93. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +4 -4
  94. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
  95. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +3 -3
  96. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +3 -3
  97. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +4 -4
  98. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
  99. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +3 -3
  100. package/dist/endpoints/Authorizer.d.mts +1 -1
  101. package/dist/endpoints/Endpoint.cjs +1 -1
  102. package/dist/endpoints/Endpoint.d.cts +2 -2
  103. package/dist/endpoints/Endpoint.d.mts +8 -8
  104. package/dist/endpoints/Endpoint.mjs +1 -1
  105. package/dist/endpoints/EndpointBuilder.cjs +3 -2
  106. package/dist/endpoints/EndpointBuilder.d.cts +3 -3
  107. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  108. package/dist/endpoints/EndpointBuilder.mjs +3 -2
  109. package/dist/endpoints/EndpointFactory.cjs +4 -3
  110. package/dist/endpoints/EndpointFactory.d.cts +4 -4
  111. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  112. package/dist/endpoints/EndpointFactory.mjs +4 -3
  113. package/dist/endpoints/HonoEndpointAdaptor.cjs +3 -3
  114. package/dist/endpoints/HonoEndpointAdaptor.d.cts +3 -3
  115. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  116. package/dist/endpoints/HonoEndpointAdaptor.mjs +3 -3
  117. package/dist/endpoints/TestEndpointAdaptor.cjs +2 -2
  118. package/dist/endpoints/TestEndpointAdaptor.d.cts +3 -3
  119. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  120. package/dist/endpoints/TestEndpointAdaptor.mjs +2 -2
  121. package/dist/endpoints/audit.d.cts +2 -2
  122. package/dist/endpoints/audit.d.mts +8 -8
  123. package/dist/endpoints/helpers.cjs +2 -2
  124. package/dist/endpoints/helpers.d.cts +2 -2
  125. package/dist/endpoints/helpers.d.mts +8 -8
  126. package/dist/endpoints/helpers.mjs +2 -2
  127. package/dist/endpoints/index.cjs +5 -3
  128. package/dist/endpoints/index.cjs.map +1 -1
  129. package/dist/endpoints/index.d.cts +7 -7
  130. package/dist/endpoints/index.d.mts +13 -13
  131. package/dist/endpoints/index.mjs +5 -4
  132. package/dist/endpoints/index.mjs.map +1 -1
  133. package/dist/endpoints/processAudits.d.cts +2 -2
  134. package/dist/endpoints/processAudits.d.mts +8 -8
  135. package/dist/endpoints/rls.cjs +3 -0
  136. package/dist/endpoints/rls.d.cts +9 -0
  137. package/dist/endpoints/rls.d.mts +9 -0
  138. package/dist/endpoints/rls.mjs +3 -0
  139. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  140. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  141. package/dist/functions/Function.d.mts +2 -2
  142. package/dist/functions/FunctionBuilder.d.mts +4 -4
  143. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  144. package/dist/functions/TestFunctionAdaptor.d.mts +2 -2
  145. package/dist/functions/index.d.cts +1 -1
  146. package/dist/functions/index.d.mts +5 -5
  147. package/dist/{helpers-CrrdyA04.mjs → helpers-C3B2lVrM.mjs} +2 -2
  148. package/dist/{helpers-CrrdyA04.mjs.map → helpers-C3B2lVrM.mjs.map} +1 -1
  149. package/dist/{helpers-DiPZVJQC.cjs → helpers-DxxSpLfw.cjs} +2 -2
  150. package/dist/{helpers-DiPZVJQC.cjs.map → helpers-DxxSpLfw.cjs.map} +1 -1
  151. package/dist/index-BtVKIOXm.d.mts +10 -0
  152. package/dist/index-CqH4_Ieb.d.cts +10 -0
  153. package/dist/index.d.mts +2 -2
  154. package/dist/publisher.d.mts +1 -1
  155. package/dist/rls-Bf3FRwto.mjs +9 -0
  156. package/dist/rls-Bf3FRwto.mjs.map +1 -0
  157. package/dist/rls-CmJ7bRsz.cjs +15 -0
  158. package/dist/rls-CmJ7bRsz.cjs.map +1 -0
  159. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  160. package/dist/subscribers/Subscriber.cjs +1 -1
  161. package/dist/subscribers/Subscriber.d.mts +2 -2
  162. package/dist/subscribers/Subscriber.mjs +1 -1
  163. package/dist/subscribers/SubscriberBuilder.cjs +2 -2
  164. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  165. package/dist/subscribers/SubscriberBuilder.mjs +2 -2
  166. package/dist/subscribers/index.cjs +2 -2
  167. package/dist/subscribers/index.d.cts +2 -2
  168. package/dist/subscribers/index.d.mts +5 -5
  169. package/dist/subscribers/index.mjs +2 -2
  170. package/dist/{types-Cy1IhmUB.d.mts → types-CScirkHt.d.mts} +1 -1
  171. package/dist/types.d.mts +1 -1
  172. package/package.json +6 -5
  173. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +57 -26
  174. package/src/endpoints/Endpoint.ts +19 -0
  175. package/src/endpoints/EndpointBuilder.ts +57 -0
  176. package/src/endpoints/EndpointFactory.ts +119 -12
  177. package/src/endpoints/HonoEndpointAdaptor.ts +66 -37
  178. package/src/endpoints/index.ts +7 -0
  179. package/src/endpoints/rls.ts +67 -0
  180. package/dist/AmazonApiGatewayEndpointAdaptor-CPqlw2Rx.cjs.map +0 -1
  181. package/dist/AmazonApiGatewayEndpointAdaptor-Cm4iD199.mjs.map +0 -1
  182. package/dist/Endpoint-CA-byrDr.cjs.map +0 -1
  183. package/dist/Endpoint-DbPsw13b.mjs.map +0 -1
  184. package/dist/EndpointBuilder-69uVrKZL.mjs.map +0 -1
  185. package/dist/EndpointFactory-ARUlRlyM.mjs.map +0 -1
  186. package/dist/EndpointFactory-BcVbkrxf.cjs.map +0 -1
  187. package/dist/HonoEndpointAdaptor-BmB4Sc7L.mjs.map +0 -1
  188. package/dist/HonoEndpointAdaptor-CnqR6PSB.cjs.map +0 -1
  189. package/dist/index-9gJrM7Rw.d.mts +0 -10
  190. package/dist/index-Ceo-GuhJ.d.cts +0 -10
@@ -1 +0,0 @@
1
- {"version":3,"file":"HonoEndpointAdaptor-CnqR6PSB.cjs","names":["endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\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","metadata","output","result","validationError: any","e: any","docsPath: string","openApiOptions?: HonoEndpointOptions['openApiOptions']"],"sources":["../src/endpoints/HonoEndpointAdaptor.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction } from '@geekmidas/audit';\nimport 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 { logger as honoLogger } from 'hono/logger';\nimport { timing } from 'hono/timing';\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';\nimport type { MappedAudit } from './audit';\nimport {\n createAuditContext,\n executeWithAuditTransaction,\n} from './processAudits';\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 TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\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 TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >,\n ) {}\n\n static isDev = process.env.NODE_ENV === 'development';\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');\n // @ts-ignore\n const logger = c.get('__logger') as Logger;\n\n if (Endpoint.isSuccessStatus(c.res.status) && endpoint) {\n // Process events (audits are handled in the handler with transaction support)\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 timing middleware (always enabled)\n app.use('*', timing());\n\n // Add logger middleware in development mode\n\n if (HonoEndpoint.isDev) {\n app.use('*', honoLogger());\n }\n\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 TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TDatabase = undefined,\n TDatabaseServiceName 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 TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\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 // Resolve database service early so it's available for session extraction\n const rawDb = endpoint.databaseService\n ? await serviceDiscovery\n .register([endpoint.databaseService])\n .then(\n (s) =>\n s[endpoint.databaseService!.serviceName as keyof typeof s],\n )\n : undefined;\n\n const session = await endpoint.getSession({\n services,\n logger,\n header,\n cookie,\n ...(rawDb !== undefined && { db: rawDb }),\n } as any);\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 // Create audit context if audit storage is configured\n const auditContext = await createAuditContext(\n endpoint,\n serviceDiscovery,\n logger,\n {\n session,\n header,\n cookie,\n services: services as Record<string, unknown>,\n },\n );\n\n // Warn if declarative audits are configured but no audit storage\n const audits = endpoint.audits as MappedAudit<\n TAuditAction,\n TOutSchema\n >[];\n if (!auditContext && audits?.length) {\n logger.warn('No auditor storage service available');\n }\n\n // Execute handler with automatic audit transaction support\n const result = await executeWithAuditTransaction(\n auditContext,\n async (auditor) => {\n // Use audit transaction as db only if the storage uses the same database service\n const sameDatabase =\n auditContext?.storage?.databaseServiceName &&\n auditContext.storage.databaseServiceName ===\n endpoint.databaseService?.serviceName;\n const db = sameDatabase\n ? (auditor?.getTransaction?.() ?? rawDb)\n : rawDb;\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,\n cookie,\n auditor,\n db,\n } as unknown as EndpointContext<\n TInput,\n TServices,\n TLogger,\n TSession,\n TAuditAction,\n TDatabase,\n TAuditStorage\n >,\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 = endpoint.outputSchema\n ? await endpoint.parseOutput(data)\n : undefined;\n\n return { output, metadata, responseBuilder };\n },\n // Process declarative audits after handler (inside transaction)\n async (result, auditor) => {\n if (!audits?.length) return;\n\n for (const audit of audits) {\n if (audit.when && !audit.when(result.output as any)) {\n continue;\n }\n const payload = audit.payload(result.output as any);\n const entityId = audit.entityId?.(result.output as any);\n auditor.audit(audit.type as any, payload as any, {\n table: audit.table,\n entityId,\n });\n }\n },\n // Pass rawDb so storage can reuse existing transactions\n { db: rawDb },\n );\n\n const { output, metadata } = result;\n\n try {\n let status = endpoint.status as ContentfulStatusCode;\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 // @ts-ignore\n c.set('__response', output);\n // @ts-ignore\n c.set('__endpoint', endpoint);\n // @ts-ignore\n c.set('__logger', logger);\n // @ts-ignore\n c.set('__session', session);\n // @ts-ignore\n c.set('__services', services);\n\n if (HonoEndpoint.isDev) {\n logger.info({ status, body: output }, 'Outgoing response');\n }\n // @ts-ignore\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 if (HonoEndpoint.isDev) {\n logger.info(\n { status: error.statusCode, body: error },\n 'Outgoing response',\n );\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 if (HonoEndpoint.isDev) {\n logger.info(\n { status: error.statusCode, body: error },\n 'Outgoing response',\n );\n }\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,10 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-CZFBLfdV.mjs";
2
- import * as _geekmidas_audit9 from "@geekmidas/audit";
3
- import * as _geekmidas_logger8 from "@geekmidas/logger";
4
- import * as _geekmidas_schema7 from "@geekmidas/schema";
5
-
6
- //#region src/functions/index.d.ts
7
- declare const f: FunctionBuilder<_geekmidas_schema7.ComposableStandardSchema, undefined, [], _geekmidas_logger8.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit9.AuditableAction<string, unknown>>;
8
- //#endregion
9
- export { f };
10
- //# sourceMappingURL=index-9gJrM7Rw.d.mts.map
@@ -1,10 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-FV6r3I7X.cjs";
2
- import * as _geekmidas_audit9 from "@geekmidas/audit";
3
- import * as _geekmidas_logger8 from "@geekmidas/logger";
4
- import * as _geekmidas_schema7 from "@geekmidas/schema";
5
-
6
- //#region src/functions/index.d.ts
7
- declare const f: FunctionBuilder<_geekmidas_schema7.ComposableStandardSchema, undefined, [], _geekmidas_logger8.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit9.AuditableAction<string, unknown>>;
8
- //#endregion
9
- export { f };
10
- //# sourceMappingURL=index-Ceo-GuhJ.d.cts.map