@forklaunch/core 1.5.1 → 1.5.3

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 (265) hide show
  1. package/lib/cache/{index.d.mts → cacheKey.d.ts} +2 -6
  2. package/lib/cache/cacheKey.d.ts.map +1 -0
  3. package/lib/cache/index.d.ts +4 -15
  4. package/lib/cache/index.d.ts.map +1 -0
  5. package/lib/{ttlCache.interface-B3xaLT00.d.ts → cache/interfaces/ttlCache.interface.d.ts} +3 -5
  6. package/lib/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
  7. package/lib/{ttlCacheRecord.types-oX0ti5SP.d.mts → cache/types/ttlCacheRecord.types.d.ts} +3 -4
  8. package/lib/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
  9. package/lib/controllers/index.d.ts +2 -13
  10. package/lib/controllers/index.d.ts.map +1 -0
  11. package/lib/controllers/{index.d.mts → interfaces/controller.interface.d.ts} +2 -3
  12. package/lib/controllers/interfaces/controller.interface.d.ts.map +1 -0
  13. package/lib/environment/index.d.ts +2 -28
  14. package/lib/environment/index.d.ts.map +1 -0
  15. package/lib/environment/{index.d.mts → loadCascadingEnv.d.ts} +4 -5
  16. package/lib/environment/loadCascadingEnv.d.ts.map +1 -0
  17. package/lib/http/application/expressLikeApplication.d.ts +34 -0
  18. package/lib/http/application/expressLikeApplication.d.ts.map +1 -0
  19. package/lib/http/bootstrap/listen.d.ts +2 -0
  20. package/lib/http/bootstrap/listen.d.ts.map +1 -0
  21. package/lib/http/cluster/cluster.types.d.ts +17 -0
  22. package/lib/http/cluster/cluster.types.d.ts.map +1 -0
  23. package/lib/http/cluster/isPortBound.d.ts +2 -0
  24. package/lib/http/cluster/isPortBound.d.ts.map +1 -0
  25. package/lib/http/createHmacToken.d.ts +19 -0
  26. package/lib/http/createHmacToken.d.ts.map +1 -0
  27. package/lib/http/discriminateAuthMethod.d.ts +85 -0
  28. package/lib/http/discriminateAuthMethod.d.ts.map +1 -0
  29. package/lib/http/generateHmacAuthHeaders.d.ts +31 -0
  30. package/lib/http/generateHmacAuthHeaders.d.ts.map +1 -0
  31. package/lib/http/guards/hasFeatureChecks.d.ts +2 -0
  32. package/lib/http/guards/hasFeatureChecks.d.ts.map +1 -0
  33. package/lib/http/guards/hasPermissionChecks.d.ts +2 -0
  34. package/lib/http/guards/hasPermissionChecks.d.ts.map +1 -0
  35. package/lib/http/guards/hasRoleChecks.d.ts +2 -0
  36. package/lib/http/guards/hasRoleChecks.d.ts.map +1 -0
  37. package/lib/http/guards/hasScopeChecks.d.ts +2 -0
  38. package/lib/http/guards/hasScopeChecks.d.ts.map +1 -0
  39. package/lib/http/guards/hasSend.d.ts +17 -0
  40. package/lib/http/guards/hasSend.d.ts.map +1 -0
  41. package/lib/http/guards/hasSubscriptionChecks.d.ts +2 -0
  42. package/lib/http/guards/hasSubscriptionChecks.d.ts.map +1 -0
  43. package/lib/http/guards/hasVersionedSchema.d.ts +2 -0
  44. package/lib/http/guards/hasVersionedSchema.d.ts.map +1 -0
  45. package/lib/http/guards/isBasicAuthMethod.d.ts +3 -0
  46. package/lib/http/guards/isBasicAuthMethod.d.ts.map +1 -0
  47. package/lib/http/guards/isConstrainedForklaunchRouter.d.ts +21 -0
  48. package/lib/http/guards/isConstrainedForklaunchRouter.d.ts.map +1 -0
  49. package/lib/http/guards/isExpressLikeSchemaHandler.d.ts +32 -0
  50. package/lib/http/guards/isExpressLikeSchemaHandler.d.ts.map +1 -0
  51. package/lib/http/guards/isForklaunchExpressLikeRouter.d.ts +28 -0
  52. package/lib/http/guards/isForklaunchExpressLikeRouter.d.ts.map +1 -0
  53. package/lib/http/guards/isForklaunchRequest.d.ts +26 -0
  54. package/lib/http/guards/isForklaunchRequest.d.ts.map +1 -0
  55. package/lib/http/guards/isForklaunchResponse.d.ts +23 -0
  56. package/lib/http/guards/isForklaunchResponse.d.ts.map +1 -0
  57. package/lib/http/guards/isForklaunchRouter.d.ts +21 -0
  58. package/lib/http/guards/isForklaunchRouter.d.ts.map +1 -0
  59. package/lib/http/guards/isHmacMethod.d.ts +9 -0
  60. package/lib/http/guards/isHmacMethod.d.ts.map +1 -0
  61. package/lib/http/guards/isHttpContractDetails.d.ts +29 -0
  62. package/lib/http/guards/isHttpContractDetails.d.ts.map +1 -0
  63. package/lib/http/guards/isJwtAuthMethod.d.ts +3 -0
  64. package/lib/http/guards/isJwtAuthMethod.d.ts.map +1 -0
  65. package/lib/http/guards/isLoggerMeta.d.ts +3 -0
  66. package/lib/http/guards/isLoggerMeta.d.ts.map +1 -0
  67. package/lib/http/guards/isPath.d.ts +2 -0
  68. package/lib/http/guards/isPath.d.ts.map +1 -0
  69. package/lib/http/guards/isPathParamContractDetails.d.ts +4 -0
  70. package/lib/http/guards/isPathParamContractDetails.d.ts.map +1 -0
  71. package/lib/http/guards/isRequestShape.d.ts +3 -0
  72. package/lib/http/guards/isRequestShape.d.ts.map +1 -0
  73. package/lib/http/guards/isResponseCompiledSchema.d.ts +3 -0
  74. package/lib/http/guards/isResponseCompiledSchema.d.ts.map +1 -0
  75. package/lib/http/guards/isSdkHandler.d.ts +9 -0
  76. package/lib/http/guards/isSdkHandler.d.ts.map +1 -0
  77. package/lib/http/guards/isSdkRouter.d.ts +9 -0
  78. package/lib/http/guards/isSdkRouter.d.ts.map +1 -0
  79. package/lib/http/guards/isTypedHandler.d.ts +5 -0
  80. package/lib/http/guards/isTypedHandler.d.ts.map +1 -0
  81. package/lib/http/guards/isVersionedInputSchema.d.ts +3 -0
  82. package/lib/http/guards/isVersionedInputSchema.d.ts.map +1 -0
  83. package/lib/http/handlers/delete.d.ts +5 -0
  84. package/lib/http/handlers/delete.d.ts.map +1 -0
  85. package/lib/http/handlers/get.d.ts +5 -0
  86. package/lib/http/handlers/get.d.ts.map +1 -0
  87. package/lib/http/handlers/head.d.ts +5 -0
  88. package/lib/http/handlers/head.d.ts.map +1 -0
  89. package/lib/http/handlers/middleware.d.ts +10 -0
  90. package/lib/http/handlers/middleware.d.ts.map +1 -0
  91. package/lib/http/handlers/options.d.ts +5 -0
  92. package/lib/http/handlers/options.d.ts.map +1 -0
  93. package/lib/http/handlers/patch.d.ts +5 -0
  94. package/lib/http/handlers/patch.d.ts.map +1 -0
  95. package/lib/http/handlers/post.d.ts +5 -0
  96. package/lib/http/handlers/post.d.ts.map +1 -0
  97. package/lib/http/handlers/put.d.ts +5 -0
  98. package/lib/http/handlers/put.d.ts.map +1 -0
  99. package/lib/http/handlers/trace.d.ts +5 -0
  100. package/lib/http/handlers/trace.d.ts.map +1 -0
  101. package/lib/http/handlers/typedAuthHandler.d.ts +5 -0
  102. package/lib/http/handlers/typedAuthHandler.d.ts.map +1 -0
  103. package/lib/http/handlers/typedHandler.d.ts +14 -0
  104. package/lib/http/handlers/typedHandler.d.ts.map +1 -0
  105. package/lib/http/httpStatusCodes.d.ts +75 -0
  106. package/lib/http/httpStatusCodes.d.ts.map +1 -0
  107. package/lib/http/index.d.ts +47 -1244
  108. package/lib/http/index.d.ts.map +1 -0
  109. package/lib/http/index.js +445 -410
  110. package/lib/http/index.js.map +1 -1
  111. package/lib/http/index.mjs +439 -407
  112. package/lib/http/index.mjs.map +1 -1
  113. package/lib/http/interfaces/expressLikeRouter.interface.d.ts +25 -0
  114. package/lib/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
  115. package/lib/http/mcpGenerator/mcpGenerator.d.ts +17 -0
  116. package/lib/http/mcpGenerator/mcpGenerator.d.ts.map +1 -0
  117. package/lib/http/middleware/request/auth.middleware.d.ts +16 -0
  118. package/lib/http/middleware/request/auth.middleware.d.ts.map +1 -0
  119. package/lib/http/middleware/request/cors.middleware.d.ts +13 -0
  120. package/lib/http/middleware/request/cors.middleware.d.ts.map +1 -0
  121. package/lib/http/middleware/request/createContext.middleware.d.ts +15 -0
  122. package/lib/http/middleware/request/createContext.middleware.d.ts.map +1 -0
  123. package/lib/http/middleware/request/enrichDetails.middleware.d.ts +18 -0
  124. package/lib/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
  125. package/lib/http/middleware/request/parse.middleware.d.ts +17 -0
  126. package/lib/http/middleware/request/parse.middleware.d.ts.map +1 -0
  127. package/lib/http/middleware/request/tenantContext.middleware.d.ts +41 -0
  128. package/lib/http/middleware/request/tenantContext.middleware.d.ts.map +1 -0
  129. package/lib/http/middleware/response/enrichExpressLikeSend.middleware.d.ts +32 -0
  130. package/lib/http/middleware/response/enrichExpressLikeSend.middleware.d.ts.map +1 -0
  131. package/lib/http/middleware/response/parse.middleware.d.ts +31 -0
  132. package/lib/http/middleware/response/parse.middleware.d.ts.map +1 -0
  133. package/lib/http/openApiV3Generator/openApiV3Generator.d.ts +17 -0
  134. package/lib/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
  135. package/lib/http/rateLimit/index.d.ts +2 -0
  136. package/lib/http/rateLimit/index.d.ts.map +1 -0
  137. package/lib/http/rateLimit/rateLimiter.d.ts +66 -0
  138. package/lib/http/rateLimit/rateLimiter.d.ts.map +1 -0
  139. package/lib/http/router/discriminateBody.d.ts +43 -0
  140. package/lib/http/router/discriminateBody.d.ts.map +1 -0
  141. package/lib/http/router/expressLikeRouter.d.ts +240 -0
  142. package/lib/http/router/expressLikeRouter.d.ts.map +1 -0
  143. package/lib/http/router/routerSharedLogic.d.ts +50 -0
  144. package/lib/http/router/routerSharedLogic.d.ts.map +1 -0
  145. package/lib/http/router/unpackRouters.d.ts +7 -0
  146. package/lib/http/router/unpackRouters.d.ts.map +1 -0
  147. package/lib/http/telemetry/auditLogger.d.ts +21 -0
  148. package/lib/http/telemetry/auditLogger.d.ts.map +1 -0
  149. package/lib/http/telemetry/constants.d.ts +6 -0
  150. package/lib/http/telemetry/constants.d.ts.map +1 -0
  151. package/lib/http/telemetry/evaluateTelemetryOptions.d.ts +11 -0
  152. package/lib/http/telemetry/evaluateTelemetryOptions.d.ts.map +1 -0
  153. package/lib/http/telemetry/metricsDefinition.d.ts +3 -0
  154. package/lib/http/telemetry/metricsDefinition.d.ts.map +1 -0
  155. package/lib/http/telemetry/openTelemetryCollector.d.ts +53 -0
  156. package/lib/http/telemetry/openTelemetryCollector.d.ts.map +1 -0
  157. package/lib/http/telemetry/pinoLogger.d.ts +20 -0
  158. package/lib/http/telemetry/pinoLogger.d.ts.map +1 -0
  159. package/lib/http/telemetry/recordMetric.d.ts +5 -0
  160. package/lib/http/telemetry/recordMetric.d.ts.map +1 -0
  161. package/lib/http/types/apiDefinition.types.d.ts +471 -0
  162. package/lib/http/types/apiDefinition.types.d.ts.map +1 -0
  163. package/lib/http/types/contractDetails.types.d.ts +404 -0
  164. package/lib/http/types/contractDetails.types.d.ts.map +1 -0
  165. package/lib/http/types/docsConfiguration.types.d.ts +7 -0
  166. package/lib/http/types/docsConfiguration.types.d.ts.map +1 -0
  167. package/lib/http/types/expressLikeOptions.d.ts +224 -0
  168. package/lib/http/types/expressLikeOptions.d.ts.map +1 -0
  169. package/lib/http/types/expressLikeRouter.types.d.ts +127 -0
  170. package/lib/http/types/expressLikeRouter.types.d.ts.map +1 -0
  171. package/lib/http/types/openTelemetryCollector.types.d.ts +21 -0
  172. package/lib/http/types/openTelemetryCollector.types.d.ts.map +1 -0
  173. package/lib/http/types/router.types.d.ts +52 -0
  174. package/lib/http/types/router.types.d.ts.map +1 -0
  175. package/lib/http/types/sdk.types.d.ts +259 -0
  176. package/lib/http/types/sdk.types.d.ts.map +1 -0
  177. package/lib/http/types/typedHandler.types.d.ts +18 -0
  178. package/lib/http/types/typedHandler.types.d.ts.map +1 -0
  179. package/lib/mappers/guards/isSchemaResolutionFunction.d.ts +10 -0
  180. package/lib/mappers/guards/isSchemaResolutionFunction.d.ts.map +1 -0
  181. package/lib/mappers/index.d.ts +3 -68
  182. package/lib/mappers/index.d.ts.map +1 -0
  183. package/lib/mappers/mapServiceSchemas.d.ts +33 -0
  184. package/lib/mappers/mapServiceSchemas.d.ts.map +1 -0
  185. package/lib/mappers/mapper.d.ts +26 -0
  186. package/lib/mappers/mapper.d.ts.map +1 -0
  187. package/lib/mappers/types/schemaResolution.types.d.ts +9 -0
  188. package/lib/mappers/types/schemaResolution.types.d.ts.map +1 -0
  189. package/lib/objectstore/index.d.ts +3 -71
  190. package/lib/objectstore/index.d.ts.map +1 -0
  191. package/lib/objectstore/{index.d.mts → interfaces/objectstore.interface.d.ts} +3 -16
  192. package/lib/objectstore/interfaces/objectstore.interface.d.ts.map +1 -0
  193. package/lib/objectstore/objectstoreKey.d.ts +11 -0
  194. package/lib/objectstore/objectstoreKey.d.ts.map +1 -0
  195. package/lib/persistence/complianceEventSubscriber.d.ts +13 -0
  196. package/lib/persistence/complianceEventSubscriber.d.ts.map +1 -0
  197. package/lib/persistence/compliancePropertyBuilder.d.ts +26 -0
  198. package/lib/persistence/compliancePropertyBuilder.d.ts.map +1 -0
  199. package/lib/persistence/complianceTypes.d.ts +64 -0
  200. package/lib/persistence/complianceTypes.d.ts.map +1 -0
  201. package/lib/persistence/defineComplianceEntity.d.ts +19 -0
  202. package/lib/persistence/defineComplianceEntity.d.ts.map +1 -0
  203. package/lib/persistence/encryptedType.d.ts +85 -0
  204. package/lib/persistence/encryptedType.d.ts.map +1 -0
  205. package/lib/persistence/fieldEncryptor.d.ts +48 -0
  206. package/lib/persistence/fieldEncryptor.d.ts.map +1 -0
  207. package/lib/persistence/index.d.ts +10 -403
  208. package/lib/persistence/index.d.ts.map +1 -0
  209. package/lib/persistence/index.js.map +1 -1
  210. package/lib/persistence/index.mjs.map +1 -1
  211. package/lib/persistence/rls.d.ts +56 -0
  212. package/lib/persistence/rls.d.ts.map +1 -0
  213. package/lib/persistence/tenantEm.d.ts +60 -0
  214. package/lib/persistence/tenantEm.d.ts.map +1 -0
  215. package/lib/persistence/tenantFilter.d.ts +47 -0
  216. package/lib/persistence/tenantFilter.d.ts.map +1 -0
  217. package/lib/secrets/index.d.ts +2 -0
  218. package/lib/secrets/index.d.ts.map +1 -0
  219. package/lib/secrets/secretsAccessor.d.ts +17 -0
  220. package/lib/secrets/secretsAccessor.d.ts.map +1 -0
  221. package/lib/services/complianceDataService.d.ts +47 -0
  222. package/lib/services/complianceDataService.d.ts.map +1 -0
  223. package/lib/services/configInjector.d.ts +43 -0
  224. package/lib/services/configInjector.d.ts.map +1 -0
  225. package/lib/services/guards/isConstructed.d.ts +3 -0
  226. package/lib/services/guards/isConstructed.d.ts.map +1 -0
  227. package/lib/services/guards/isConstructedSingleton.d.ts +3 -0
  228. package/lib/services/guards/isConstructedSingleton.d.ts.map +1 -0
  229. package/lib/services/guards/isConstructor.d.ts +3 -0
  230. package/lib/services/guards/isConstructor.d.ts.map +1 -0
  231. package/lib/services/index.d.ts +10 -184
  232. package/lib/services/index.d.ts.map +1 -0
  233. package/lib/services/retentionService.d.ts +31 -0
  234. package/lib/services/retentionService.d.ts.map +1 -0
  235. package/lib/services/runRetentionEnforcement.d.ts +19 -0
  236. package/lib/services/runRetentionEnforcement.d.ts.map +1 -0
  237. package/lib/services/types/configInjector.types.d.ts +39 -0
  238. package/lib/services/types/configInjector.types.d.ts.map +1 -0
  239. package/lib/services/types/entityManager.types.d.ts +4 -0
  240. package/lib/services/types/entityManager.types.d.ts.map +1 -0
  241. package/lib/services/types/service.types.d.ts +5 -0
  242. package/lib/services/types/service.types.d.ts.map +1 -0
  243. package/lib/ws/asyncApiV3Generator/asyncApiV3Generator.d.ts +12 -0
  244. package/lib/ws/asyncApiV3Generator/asyncApiV3Generator.d.ts.map +1 -0
  245. package/lib/ws/index.d.ts +4 -67
  246. package/lib/ws/index.d.ts.map +1 -0
  247. package/lib/ws/index.js.map +1 -1
  248. package/lib/ws/index.mjs.map +1 -1
  249. package/lib/ws/types/eventSchema.types.d.ts +28 -0
  250. package/lib/ws/types/eventSchema.types.d.ts.map +1 -0
  251. package/lib/ws/webSocketLike.d.ts +18 -0
  252. package/lib/ws/webSocketLike.d.ts.map +1 -0
  253. package/package.json +47 -46
  254. package/LICENSE +0 -21
  255. package/lib/apiDefinition.types-DF_crhB0.d.mts +0 -1092
  256. package/lib/apiDefinition.types-DW4lfZqy.d.ts +0 -1092
  257. package/lib/http/index.d.mts +0 -1244
  258. package/lib/mappers/index.d.mts +0 -68
  259. package/lib/openTelemetryCollector-BS-ej09T.d.mts +0 -70
  260. package/lib/openTelemetryCollector-BS-ej09T.d.ts +0 -70
  261. package/lib/persistence/index.d.mts +0 -403
  262. package/lib/services/index.d.mts +0 -185
  263. package/lib/ttlCache.interface-CEOkrt8d.d.mts +0 -77
  264. package/lib/ttlCacheRecord.types-oX0ti5SP.d.ts +0 -25
  265. package/lib/ws/index.d.mts +0 -67
@@ -1,1244 +1,47 @@
1
- import { ParsedQs } from 'qs';
2
- export { ParsedQs } from 'qs';
3
- import { Prettify, SanitizePathSlashes, PrettyCamelCase, TypeSafeFunction, UnionToIntersection, EmptyObject } from '@forklaunch/common';
4
- import { AnySchemaValidator } from '@forklaunch/validator';
5
- import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
6
- import { O as OpenTelemetryCollector, M as MetricsDefinition, T as TelemetryOptions } from '../openTelemetryCollector-BS-ej09T.js';
7
- export { L as LogFn, a as LoggerMeta, b as MetricType, P as PinoLogger, h as httpRequestsTotalCounter, c as httpServerDurationHistogram, l as logger, m as meta } from '../openTelemetryCollector-BS-ej09T.js';
8
- import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, C as ContractDetails, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, i as ExpressLikeApplicationOptions, j as ParamsDictionary, k as VersionedRequests, l as AuthMethods, D as DecodeResource, m as BasicAuthMethods, F as ForklaunchRequest, n as MiddlewareContractDetails, o as ExpressLikeSchemaAuthMapper, p as ForklaunchNextFunction, q as ForklaunchResponse, r as ForklaunchResHeaders, s as ForklaunchStatusResponse, t as ForklaunchSendableData } from '../apiDefinition.types-DW4lfZqy.js';
9
- export { u as AccessLevel, v as BodyObject, w as DefaultSubscriptionData, x as DocsConfiguration, y as ErrorContainer, z as ExpressLikeAuthMapper, G as ExpressLikeGlobalAuthOptions, I as ExpressLikeHandler, J as ExpressLikeSchemaGlobalAuthOptions, K as ExtractBody, N as ExtractContentType, O as ExtractResponseBody, T as ExtractedParamsObject, U as FileBody, W as ForklaunchBaseRequest, X as ForklaunchResErrors, Y as HmacMethods, Z as HttpMethod, _ as JsonBody, $ as JwtAuthMethods, a0 as LiveTypeFunctionRequestInit, a1 as MapParamsSchema, a2 as MapReqBodySchema, a3 as MapReqHeadersSchema, a4 as MapReqQuerySchema, a5 as MapResBodyMapSchema, a6 as MapResHeadersSchema, a7 as MapSchema, a8 as MapSessionSchema, a9 as MapVersionedReqsSchema, aa as MapVersionedRespsSchema, ab as MultipartForm, ac as NumberOnlyObject, ad as PathParamMethod, ae as PermissionSet, af as RawTypedResponseBody, ag as RequestContext, ah as ResolvedForklaunchAuthRequest, ai as ResolvedForklaunchRequest, aj as ResolvedForklaunchResponse, ak as ResponseBody, al as ResponseCompiledSchema, am as ResponseShape, an as RoleSet, ao as ServerSentEventBody, S as StringOnlyObject, ap as TextBody, aq as TypedBody, ar as TypedRequestBody, as as TypedResponseBody, at as UnknownBody, au as UnknownResponseBody, av as UrlEncodedForm, aw as VersionedResponses } from '../apiDefinition.types-DW4lfZqy.js';
10
- import { JWTPayload, JWK } from 'jose';
11
- import { ZodSchemaValidator } from '@forklaunch/validator/zod';
12
- import { FastMCP } from 'fastmcp';
13
- import http from 'http';
14
- import { OpenAPIObject } from 'openapi3-ts/oas31';
15
- import { LevelWithSilentOrString } from 'pino';
16
- export { LevelWithSilent, LevelWithSilentOrString, Logger } from 'pino';
17
- import { T as TtlCache } from '../ttlCache.interface-B3xaLT00.js';
18
- export { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_RESPONSE_STATUS_CODE, ATTR_HTTP_ROUTE, ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
19
- import '@opentelemetry/api';
20
- import '@opentelemetry/api-logs';
21
- import 'stream';
22
- import 'cors';
23
- import '@scalar/express-api-reference';
24
- import '../ttlCacheRecord.types-oX0ti5SP.js';
25
-
26
- interface PathBasedHandler<RouterHandler> {
27
- (path: string, ...handlers: RouterHandler[]): unknown;
28
- }
29
- interface PathOrMiddlewareBasedHandler<RouterHandler> extends PathBasedHandler<RouterHandler> {
30
- (...args: RouterHandler[]): unknown;
31
- }
32
- interface NestableRouterBasedHandler<RouterHandler, Router> extends PathOrMiddlewareBasedHandler<RouterHandler> {
33
- (...args: (Router | RouterHandler)[]): unknown;
34
- (path: string, ...handlers: (Router | RouterHandler)[]): unknown;
35
- }
36
- interface ExpressLikeRouter<RouterHandler, Router> extends ServerOptions<typeof IncomingMessage, typeof ServerResponse> {
37
- use: NestableRouterBasedHandler<RouterHandler, Router>;
38
- all: PathOrMiddlewareBasedHandler<RouterHandler>;
39
- connect: PathOrMiddlewareBasedHandler<RouterHandler>;
40
- get: PathBasedHandler<RouterHandler>;
41
- post: PathBasedHandler<RouterHandler>;
42
- put: PathBasedHandler<RouterHandler>;
43
- patch: PathBasedHandler<RouterHandler>;
44
- delete: PathBasedHandler<RouterHandler>;
45
- options: PathBasedHandler<RouterHandler>;
46
- head: PathBasedHandler<RouterHandler>;
47
- trace: PathBasedHandler<RouterHandler>;
48
- }
49
-
50
- interface ConstrainedForklaunchRouter<SV extends AnySchemaValidator, RequestHandler> extends ForklaunchRouter<SV> {
51
- requestHandler: RequestHandler;
52
- }
53
- /**
54
- * Interface representing a Forklaunch router.
55
- *
56
- * @template SV - A type that extends AnySchemaValidator.
57
- */
58
- interface ForklaunchRouter<SV extends AnySchemaValidator> {
59
- /** The base path for the router */
60
- basePath: `/${string}`;
61
- /** The routes associated with the router */
62
- routes: ForklaunchRoute<SV>[];
63
- /** Nested routers */
64
- routers: ForklaunchRouter<SV>[];
65
- /** Nested route map */
66
- _fetchMap: Record<string, unknown>;
67
- /** The SDK for the router */
68
- sdk: Record<string, unknown>;
69
- /** The name of the SDK for the router */
70
- sdkName?: string;
71
- /** The SDK paths for the router */
72
- sdkPaths: Record<string, string>;
73
- /** Options for the router */
74
- routerOptions?: ExpressLikeRouterOptions<SV, SessionObject<SV>>;
75
- /** Insert the SDK path into the router */
76
- insertIntoRouterSdkPaths?: (params: {
77
- sdkPath: string;
78
- path: string;
79
- method: string;
80
- name: string;
81
- }) => void;
82
- }
83
- /**
84
- * Interface representing a Forklaunch route.
85
- *
86
- * @template SV - A type that extends AnySchemaValidator.
87
- */
88
- interface ForklaunchRoute<SV extends AnySchemaValidator> {
89
- /** The base path for the route */
90
- basePath: string;
91
- /** The path for the route, which can be a string, RegExp, or an array of strings or RegExps */
92
- path: `/${string}`;
93
- /** The HTTP method for the route */
94
- method: Method;
95
- /** The contract details for the route */
96
- contractDetails: PathParamHttpContractDetails<SV> | HttpContractDetails<SV>;
97
- }
98
-
99
- type ContractDetailsExpressLikeSchemaHandler<SV extends AnySchemaValidator, ContractMethod extends Method, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>> = ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>;
100
- type TypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>> = {
101
- _typedHandler: true;
102
- _path: Path | undefined;
103
- contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>;
104
- handlers: ContractDetailsExpressLikeSchemaHandler<SV, ContractMethod, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>[];
105
- };
106
- type ExpressLikeTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>> = {
107
- _typedHandler: true;
108
- _path: Path | undefined;
109
- _method: ContractMethod;
110
- contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>;
111
- handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[];
112
- };
113
-
114
- interface LiveTypeRouteDefinition<SV extends AnySchemaValidator, BasePath extends `/${string}`, ContractMethod extends Method, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, Session extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction, ChainableRouter extends {
115
- _fetchMap: object;
116
- sdk: object;
117
- }> {
118
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, const VersionedApi extends VersionSchema<SV, ContractMethod>, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: Path, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter & {
119
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] extends Record<SanitizePathSlashes<`${BasePath}${Path}`>, unknown> ? ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, ChainableRouter['_fetchMap'][SanitizePathSlashes<`${BasePath}${Path}`>] & Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>> : ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>>>;
120
- sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, Auth>>>;
121
- };
122
- <Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, const VersionedApi extends VersionSchema<SV, ContractMethod>, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
123
- ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>[],
124
- TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>
125
- ]): ChainableRouter & {
126
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] extends Record<SanitizePathSlashes<`${BasePath}${Path}`>, unknown> ? ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, ChainableRouter['_fetchMap'][SanitizePathSlashes<`${BasePath}${Path}`>] & Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>> : ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>>>;
127
- sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, Auth>>>;
128
- };
129
- <Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, const VersionedApi extends VersionSchema<SV, ContractMethod>, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: PathMatch<SuppliedPath, Path>, typedHandler: TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>): ChainableRouter & {
130
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] extends Record<SanitizePathSlashes<`${BasePath}${Path}`>, unknown> ? ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, ChainableRouter['_fetchMap'][SanitizePathSlashes<`${BasePath}${Path}`>] & Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>> : ChainableRouter['_fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>>>;
131
- sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, Auth>>>;
132
- };
133
- }
134
- interface TypedMiddlewareDefinition<ChainableRouter, SV extends AnySchemaValidator, Session extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
135
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
136
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, SessionSchema extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: Path, contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, SessionSchema, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
137
- (middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
138
- <Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
139
- ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>[],
140
- TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>
141
- ]): ChainableRouter;
142
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
143
- ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, BaseResponse, NextFunction>[],
144
- TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>
145
- ]): ChainableRouter;
146
- <Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: PathMatch<SuppliedPath, Path>, typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>): ChainableRouter;
147
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>): ChainableRouter;
148
- }
149
- interface TypedNestableMiddlewareDefinition<ChainableRouter extends {
150
- _fetchMap: object;
151
- basePath: `/${string}`;
152
- sdk: Record<string, unknown>;
153
- }, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, SV extends AnySchemaValidator, Session extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction> extends TypedMiddlewareDefinition<ChainableRouter, SV, Session, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
154
- (middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
155
- <Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(router: Router): ChainableRouter & {
156
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
157
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
158
- }>;
159
- sdk: Prettify<ChainableRouter['sdk'] & {
160
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
161
- }>;
162
- };
163
- <Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(middlewareOrRouter: RouterHandler | Router, ...otherMiddlewareOrRouters: [...(RouterHandler | Router)[]]): ChainableRouter & {
164
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
165
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
166
- }>;
167
- sdk: Prettify<ChainableRouter['sdk'] & {
168
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
169
- }>;
170
- };
171
- <Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(path: Router['basePath'], router: Router): ChainableRouter & {
172
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
173
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
174
- }>;
175
- sdk: Prettify<ChainableRouter['sdk'] & {
176
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
177
- }>;
178
- };
179
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewares: (ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router)[]): ChainableRouter & {
180
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
181
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
182
- }>;
183
- sdk: Prettify<ChainableRouter['sdk'] & {
184
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
185
- }>;
186
- };
187
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewareAndTypedHandler: [
188
- ...(ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router)[],
189
- TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>
190
- ]): ChainableRouter & {
191
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
192
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
193
- }>;
194
- sdk: Prettify<ChainableRouter['sdk'] & {
195
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
196
- }>;
197
- };
198
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: `/${string}` extends Router['basePath'] ? Path : PathMatch<Path, Router['basePath']>, contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewares: (ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router)[]): ChainableRouter & {
199
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
200
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
201
- }>;
202
- sdk: Prettify<ChainableRouter['sdk'] & {
203
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
204
- }>;
205
- };
206
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewares: (ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, Session, BaseRequest, BaseResponse, NextFunction> | Router)[]): ChainableRouter & {
207
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
208
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
209
- }>;
210
- sdk: Prettify<ChainableRouter['sdk'] & {
211
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
212
- }>;
213
- };
214
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(path: `/${string}` extends Router['basePath'] ? Path : PathMatch<Path, Router['basePath']>, typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>): ChainableRouter & {
215
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
216
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
217
- }>;
218
- sdk: Prettify<ChainableRouter['sdk'] & {
219
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
220
- }>;
221
- };
222
- <Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>): ChainableRouter & {
223
- _fetchMap: Prettify<ChainableRouter['_fetchMap'] & {
224
- [Key in keyof Router['_fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['_fetchMap'][Key];
225
- }>;
226
- sdk: Prettify<ChainableRouter['sdk'] & {
227
- [K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
228
- }>;
229
- };
230
- }
231
- type ContractDetailsOrMiddlewareOrTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, BaseSession extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>> = ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth> | ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, BaseSession>, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
232
- type MiddlewareOrMiddlewareWithTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, BaseSession extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>> = ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, BaseSession>, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
233
-
234
- /**
235
- * Creates a type-safe fetch function based on a provided fetch map.
236
- * This type generates a function that provides compile-time type safety for HTTP requests,
237
- * ensuring that the correct path and request parameters are used for each endpoint.
238
- *
239
- * @template FetchMap - A record mapping paths to their corresponding TypeSafeFunction signatures
240
- * @param FetchMap[Path] - Each path should map to a TypeSafeFunction that defines the request/response contract
241
- *
242
- * @returns A generic function that:
243
- * - Takes a path parameter constrained to keys of FetchMap
244
- * - Takes optional request initialization parameters based on the function signature
245
- * - Returns a Promise of the expected response type
246
- *
247
- * @remarks
248
- * The function parameters are conditionally typed:
249
- * - If the mapped function expects body, query, params, or headers, reqInit is required
250
- * - Otherwise, reqInit is optional
251
- * - If the path doesn't map to a TypeSafeFunction, reqInit is never
252
- **/
253
- type FetchFunction<FetchMap> = <const Path extends keyof FetchMap, const Method extends keyof FetchMap[Path], const Version extends keyof FetchMap[Path][Method]>(path: Path, ...reqInit: FetchMap[Path][Method] extends TypeSafeFunction ? 'GET' extends keyof FetchMap[Path] ? FetchMap[Path]['GET'] extends TypeSafeFunction ? Parameters<FetchMap[Path]['GET']>[1] extends {
254
- body: unknown;
255
- } | {
256
- query: unknown;
257
- } | {
258
- params: unknown;
259
- } | {
260
- headers: unknown;
261
- } | {
262
- version: unknown;
263
- } ? [
264
- reqInit: Omit<Parameters<FetchMap[Path][Method]>[1], 'method'> & {
265
- method: Method;
266
- }
267
- ] : [
268
- reqInit?: Omit<Parameters<FetchMap[Path][Method]>[1], 'method'> & {
269
- method: Method;
270
- }
271
- ] : [
272
- reqInit: Omit<Parameters<FetchMap[Path][Method]>[1], 'method'> & {
273
- method: Method;
274
- }
275
- ] : [
276
- reqInit: Omit<Parameters<FetchMap[Path][Method]>[1], 'method'> & {
277
- method: Method;
278
- }
279
- ] : FetchMap[Path][Method] extends Record<string, TypeSafeFunction> ? [
280
- reqInit: Omit<Parameters<FetchMap[Path][Method][Version]>[0], 'method' | 'version'> & {
281
- method: Method;
282
- version: Version;
283
- }
284
- ] : [{
285
- method: Method;
286
- }]) => Promise<FetchMap[Path][Method] extends TypeSafeFunction ? Awaited<ReturnType<FetchMap[Path][Method]>> : FetchMap[Path][Method] extends Record<string, TypeSafeFunction> ? Awaited<ReturnType<FetchMap[Path][Method][Version]>> : never>;
287
- /**
288
- * Represents the structure of a SDK router.
289
- *
290
- * @property sdk - The SDK object containing all the SDK functions.
291
- * @property _fetchMap - The fetch map object containing all the fetch functions.
292
- * @property sdkPaths - The SDK paths object containing all the SDK paths.
293
- */
294
- type SdkRouter = {
295
- sdk: Record<string, unknown>;
296
- _fetchMap: Record<string, unknown>;
297
- sdkPaths: Record<string, string>;
298
- };
299
- /**
300
- * Recursive interface representing a hierarchical map of router configurations.
301
- * Each entry can either be a leaf node with SDK and fetch map configurations,
302
- * or a nested RouterMap for deeper routing structures.
303
- *
304
- * @template SV - The schema validator type that constrains the router structure
305
- * @param SV - Must extend AnySchemaValidator to ensure type safety
306
- *
307
- * @example
308
- * ```typescript
309
- * const routerMap: RouterMap<ZodValidator> = {
310
- * api: {
311
- * users: {
312
- * sdk: { getUser: () => Promise.resolve({}) },
313
- * _fetchMap: { getUser: { get: () => fetch('/api/users') } }
314
- * },
315
- * posts: {
316
- * sdk: { getPosts: () => Promise.resolve([]) },
317
- * _fetchMap: { getPosts: { get: () => fetch('/api/posts') } }
318
- * }
319
- * }
320
- * };
321
- * ```
322
- */
323
- type RouterMap<SV extends AnySchemaValidator> = {
324
- [K: string]: SdkRouter | RouterMap<SV>;
325
- };
326
- /**
327
- * Recursive type representing a hierarchical map of SDK handlers.
328
- * Each key can either be a leaf node containing a SdkHandler, or a nested SdkHandlerObject for deeper structures.
329
- *
330
- * @template SV - The schema validator type that constrains the handler structure.
331
- *
332
- * @example
333
- * ```typescript
334
- * const handlers: SdkHandlerObject<ZodValidator> = {
335
- * users: {
336
- * getUser: someSdkHandler,
337
- * posts: {
338
- * getPosts: anotherSdkHandler
339
- * }
340
- * }
341
- * };
342
- * ```
343
- */
344
- type SdkHandlerObject<SV extends AnySchemaValidator> = {
345
- [K: string]: SdkHandler | SdkHandlerObject<SV>;
346
- };
347
- /**
348
- * @deprecated
349
- * Tail-recursive type that extracts and flattens fetch map interfaces from a RouterMap structure.
350
- * This version uses an accumulator pattern to avoid deep recursion and improve performance.
351
- * Similar to MapToSdk but focuses on _fetchMap properties and merges all fetch maps into a single intersection type.
352
- *
353
- * @template SV - The schema validator type
354
- * @template T - The RouterMap to extract fetch maps from
355
- * @template Acc - The accumulator type for collecting fetch maps (defaults to empty object)
356
- * @param SV - Must extend AnySchemaValidator
357
- * @param T - Must extend RouterMap<SV>
358
- * @param Acc - The accumulated fetch maps so far
359
- *
360
- * @returns An intersection type containing all fetch map interfaces from the router structure,
361
- * flattened into a single type for unified fetch functionality
362
- *
363
- * @example
364
- * ```typescript
365
- * // Given a RouterMap with nested fetch maps
366
- * type ExtractedFetch = MapToFetch<ZodValidator, typeof routerMap>;
367
- * // Results in: { getUser: { get: () => Promise<Response> } } & { getPosts: { get: () => Promise<Response> } }
368
- * ```
369
- */
370
- type MapToFetch<SV extends AnySchemaValidator, T extends RouterMap<SV>> = UnionToIntersection<Prettify<{
371
- [K in keyof T]: T[K] extends RouterMap<SV> ? MapToFetch<SV, T[K]> : T[K] extends {
372
- _fetchMap: unknown;
373
- } ? T[K]['_fetchMap'] extends Record<string, unknown> ? T[K]['_fetchMap'] : never : never;
374
- }[keyof T]>>;
375
- /**
376
- * Base interface for controller entries that defines the structure
377
- * of each controller method with its path, HTTP method, and contract details.
378
- * This type serves as the foundation for type-safe SDK generation by ensuring
379
- * all controller entries follow a consistent structure.
380
- *
381
- * @example
382
- * ```typescript
383
- * const controller: Record<string, SdkHandler> = {
384
- * createUser: {
385
- * _path: '/users',
386
- * _method: 'post',
387
- * contractDetails: {
388
- * name: 'createUser',
389
- * body: { name: string, email: string },
390
- * responses: { 201: { id: string, name: string } }
391
- * }
392
- * }
393
- * };
394
- * ```
395
- */
396
- type SdkHandler = {
397
- /** The HTTP path for this endpoint, must start with '/' */
398
- _path?: `/${string}`;
399
- /** The HTTP method for this endpoint (get, post, put, etc.) */
400
- _method?: Method;
401
- /** Contract details defining the request/response schema for this endpoint */
402
- contractDetails: {
403
- /** The name of this endpoint/method */
404
- name: string;
405
- /** URL parameters schema */
406
- params?: unknown;
407
- /** Response schemas for different status codes */
408
- responses?: unknown;
409
- /** Query parameters schema */
410
- query?: unknown;
411
- /** Request body schema */
412
- body?: unknown;
413
- /** Request headers schema */
414
- requestHeaders?: unknown;
415
- /** Response headers schema */
416
- responseHeaders?: unknown;
417
- /** Authentication requirements */
418
- auth?: unknown;
419
- /** API versioning information */
420
- versions?: unknown;
421
- };
422
- };
423
- /**
424
- * Recursively maps a client controller definition to its corresponding live SDK function types.
425
- *
426
- * This utility type traverses the structure of a client controller object, replacing each
427
- * {@link SdkHandler} with its corresponding {@link MapHandlerToLiveSdk} type, while recursively
428
- * processing nested objects. This enables type-safe SDK generation for complex controller hierarchies.
429
- *
430
- * @template SV - The schema validator type (e.g., zod, typebox).
431
- * @template Client - The client controller object to map.
432
- *
433
- * @example
434
- * type MySdk = MapToSdk<typeof z, typeof myController>;
435
- */
436
- type MapToSdk<SV extends AnySchemaValidator, Client> = {
437
- [K in keyof Client]: Client[K] extends SdkHandler ? MapHandlerToLiveSdk<SV, Client[K]> : MapToSdk<SV, Client[K]>;
438
- };
439
- type MapHandlerToLiveSdk<SV extends AnySchemaValidator, T extends SdkHandler> = LiveSdkFunction<SV, T['contractDetails']['params'] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, T['contractDetails']['responses'] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, T['contractDetails']['body'] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, T['contractDetails']['query'] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, T['contractDetails']['requestHeaders'] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, T['contractDetails']['responseHeaders'] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, T['contractDetails']['versions'] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, T['contractDetails']['auth'] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>;
440
- /**
441
- * @deprecated
442
- * Extracts and constructs a LiveTypeFunction from an SdkHandler object.
443
- * This optimized version reduces redundant type inference while maintaining type safety.
444
- *
445
- * @template Entry - The controller entry containing path, method, and contract details
446
- * @template SV - The schema validator type that constrains the contract details
447
- * @template BasePath - The base path prefix to prepend to the entry's path
448
- *
449
- * @example
450
- * ```typescript
451
- * type UserCreateFunction = ExtractLiveTypeFn<
452
- * { _path: '/users', _method: 'post', contractDetails: { body: { name: string } } },
453
- * SchemaValidator,
454
- * '/api/v1'
455
- * >;
456
- * ```
457
- */
458
- type ExtractLiveTypeFn<Entry extends SdkHandler, SV extends AnySchemaValidator, BasePath extends `/${string}`> = LiveTypeFunction<SV, Entry['_path'] extends infer Path | undefined ? Path extends `/${string}` ? `${BasePath}${Path}` : never : never, Entry['contractDetails']['params'] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Entry['contractDetails']['responses'] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Entry['contractDetails']['body'] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Entry['contractDetails']['query'] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Entry['contractDetails']['requestHeaders'] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Entry['contractDetails']['responseHeaders'] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Entry['_method'] extends Method ? Entry['_method'] : never, Entry['contractDetails']['versions'] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Entry['contractDetails']['auth'] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>;
459
- /**
460
- * @deprecated
461
- * Transforms a controller object into a fetch map structure that provides
462
- * type-safe access to HTTP endpoints. This optimized version reduces complexity
463
- * while maintaining full type safety and discriminated union behavior.
464
- *
465
- * @template T - The controller object type containing all endpoint definitions
466
- * @template SV - The schema validator type that constrains the contract details
467
- * @template RouterBasePath - The base path prefix for the router
468
- *
469
- * @example
470
- * ```typescript
471
- * const controller = {
472
- * createUser: { _path: '/users', _method: 'post', contractDetails: { body: { name: string } } },
473
- * getUser: { _path: '/users/:id', _method: 'get', contractDetails: { params: { id: string } } }
474
- * } as const;
475
- *
476
- * type FetchMap = ToFetchMap<typeof controller, SchemaValidator, '/api/v1'>;
477
- * // Results in properly typed fetch map with discriminated methods per path
478
- * ```
479
- */
480
- type ToFetchMap<T extends Record<string, SdkHandler>, SV extends AnySchemaValidator, RouterBasePath extends `/${string}`> = Prettify<{
481
- [K in keyof T as T[K]['_path'] extends infer P | undefined ? P extends `/${string}` ? `${RouterBasePath}${P}` : never : never]: {
482
- [M in T[K]['_method'] as M extends Method ? Uppercase<M> : never]: ExtractLiveTypeFn<Extract<T[K], {
483
- _path: T[K]['_path'];
484
- _method: M;
485
- }>, SV, RouterBasePath>;
486
- };
487
- }>;
488
-
489
- /**
490
- * Extracts route middleware and handlers from route registration arguments.
491
- * This is a port function that converts typed handlers into Express middleware
492
- * without actually registering them on a router.
493
- *
494
- * @template SV - The schema validator type.
495
- * @template Name - The route name.
496
- * @template ContractMethod - The HTTP method.
497
- * @template Path - The route path.
498
- * @template P - The type of request parameters.
499
- * @template ResBodyMap - The type of response body map.
500
- * @template ReqBody - The type of request body.
501
- * @template ReqQuery - The type of request query.
502
- * @template ReqHeaders - The type of request headers.
503
- * @template ResHeaders - The type of response headers.
504
- * @template LocalsObj - The type of local variables.
505
- * @template VersionedApi - The versioned API schema.
506
- * @template RouterSession - The router session type.
507
- * @template BaseRequest - The base request type.
508
- * @template BaseResponse - The base response type.
509
- * @template NextFunction - The next function type.
510
- * @template Auth - The auth schema.
511
- * @template RouterHandler - The router handler type.
512
- * @param {object} params - The parameters for extracting route handlers.
513
- * @param {ContractMethod} params.method - The HTTP method.
514
- * @param {Path} params.path - The route path.
515
- * @param {string} params.basePath - The base path for the router.
516
- * @param {SV} params.schemaValidator - The schema validator.
517
- * @param {ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>} params.contractDetailsOrMiddlewareOrTypedHandler - The contract details or typed handler.
518
- * @param {MiddlewareOrMiddlewareWithTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>[]} params.middlewareOrMiddlewareAndTypedHandler - Additional middleware or typed handlers.
519
- * @param {OpenTelemetryCollector<MetricsDefinition>} params.openTelemetryCollector - The OpenTelemetry collector.
520
- * @param {RouterHandler[]} params.postEnrichMiddleware - Additional middleware to run after enrichment.
521
- * @param {ExpressLikeRouterOptions<SV, RouterSession> | undefined} params.routerOptions - Router options.
522
- * @returns {{ middlewares: RouterHandler[]; controllerHandler: ExpressLikeHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedRequests, VersionedResponses, RouterSession, BaseRequest, BaseResponse, NextFunction> }} - The extracted middlewares and controller handler.
523
- */
524
- declare function extractRouteHandlers<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, RouterSession extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, RouterHandler>(params: {
525
- method: ContractMethod;
526
- path: Path;
527
- basePath: string;
528
- schemaValidator: SV;
529
- contractDetailsOrMiddlewareOrTypedHandler: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>;
530
- middlewareOrMiddlewareAndTypedHandler: MiddlewareOrMiddlewareWithTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>[];
531
- openTelemetryCollector?: OpenTelemetryCollector<MetricsDefinition>;
532
- postEnrichMiddleware?: RouterHandler[];
533
- routerOptions?: ExpressLikeRouterOptions<SV, RouterSession>;
534
- }): {
535
- middlewares: RouterHandler[];
536
- controllerHandler: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, RouterSession, BaseRequest, BaseResponse, NextFunction>;
537
- };
538
- /**
539
- * A class that represents an Express-like router.
540
- */
541
- declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction, RouterSession extends SessionObject<SV>, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject> implements ConstrainedForklaunchRouter<SV, RouterHandler> {
542
- #private;
543
- readonly basePath: BasePath;
544
- readonly schemaValidator: SV;
545
- readonly internal: Internal;
546
- readonly postEnrichMiddleware: RouterHandler[];
547
- readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
548
- readonly routerOptions?: ExpressLikeRouterOptions<SV, RouterSession> | undefined;
549
- requestHandler: RouterHandler;
550
- routers: ForklaunchRouter<SV>[];
551
- routes: ForklaunchRoute<SV>[];
552
- _fetchMap: FetchMap;
553
- sdk: Sdk;
554
- sdkPaths: Record<string, string>;
555
- constructor(basePath: BasePath, schemaValidator: SV, internal: Internal, postEnrichMiddleware: RouterHandler[], openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, routerOptions?: ExpressLikeRouterOptions<SV, RouterSession> | undefined);
556
- /**
557
- * Extracts the controller handler from the provided handlers.
558
- *
559
- * @template P - The type of request parameters.
560
- * @template ResBodyMap - The type of response body.
561
- * @template ReqBody - The type of request body.
562
- * @template ReqQuery - The type of request query.
563
- * @template LocalsObj - The type of local variables.
564
- * @param {MiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The provided handlers.
565
- * @returns {MiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>} - The extracted controller handler.
566
- * @throws {Error} - Throws an error if the last argument is not a handler.
567
- */
568
- /**
569
- * Fetches a route from the route map and executes it with the given parameters.
570
- *
571
- * @template Path - The path type that extends keyof _fetchMap and string.
572
- * @param {Path} path - The route path
573
- * @param {Parameters<_fetchMap[Path]>[1]} [requestInit] - Optional request initialization parameters.
574
- * @returns {Promise<ReturnType<_fetchMap[Path]>>} - The result of executing the route handler.
575
- */
576
- fetch: FetchFunction<this['_fetchMap']>;
577
- registerRoute<Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, ContractMethod>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(method: ContractMethod, path: Path, registrationMethod: PathBasedHandler<RouterHandler>, contractDetailsOrMiddlewareOrTypedHandler: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>, ...middlewareOrMiddlewareAndTypedHandler: MiddlewareOrMiddlewareWithTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth>[]): this & {
578
- _fetchMap: Prettify<FetchMap extends Record<SanitizePathSlashes<`${BasePath}${Path}`>, unknown> ? FetchMap & Record<SanitizePathSlashes<`${BasePath}${Path}`>, FetchMap[SanitizePathSlashes<`${BasePath}${Path}`>] & Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>> : FetchMap & Record<SanitizePathSlashes<`${BasePath}${Path}`>, Record<Uppercase<ContractMethod>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod, VersionedApi, Auth>>>>;
579
- sdk: Prettify<Sdk & Record<PrettyCamelCase<Name extends string ? Name : SanitizePathSlashes<`${BasePath}${Path}`>>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, Auth>>>;
580
- };
581
- registerMiddlewareHandler<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(registrationMethod: PathOrMiddlewareBasedHandler<RouterHandler>, pathOrContractDetailsOrMiddlewareOrTypedHandler: Path | ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | RouterHandler, contractDetailsOrMiddlewareOrTypedHandler?: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | RouterHandler, ...middlewareOrMiddlewareWithTypedHandler: (MiddlewareOrMiddlewareWithTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | RouterHandler)[]): this;
582
- private addRouterToSdk;
583
- registerNestableMiddlewareHandler<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, const SessionSchema extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(registrationMethod: NestableRouterBasedHandler<RouterHandler, Internal>, pathOrContractDetailsOrMiddlewareOrTypedHandler: Path | ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | ConstrainedForklaunchRouter<SV, RouterHandler>, contractDetailsOrMiddlewareOrTypedHandler?: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | ConstrainedForklaunchRouter<SV, RouterHandler>, ...middlewareOrMiddlewareWithTypedHandler: (MiddlewareOrMiddlewareWithTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, RouterSession, Auth> | ConstrainedForklaunchRouter<SV, RouterHandler>)[]): this;
584
- private addRouterOptions;
585
- /**
586
- * Validates that all protected routes have the required surfacing functions
587
- * available (from the route, router, or application level).
588
- * Call this at listen() time when the full option chain is assembled.
589
- */
590
- validateSurfacingFunctions(router?: ForklaunchRouter<SV>, parentAuth?: Record<string, unknown>): void;
591
- use: TypedNestableMiddlewareDefinition<this, RouterHandler, Internal, SV, RouterSession, BaseRequest, BaseResponse, NextFunction>;
592
- all: TypedMiddlewareDefinition<this, SV, RouterSession, BaseRequest, BaseResponse, NextFunction, RouterHandler>;
593
- connect: TypedMiddlewareDefinition<this, SV, RouterSession, BaseRequest, BaseResponse, NextFunction, RouterHandler>;
594
- /**
595
- * Registers a GET route with the specified contract details and handler handlers.
596
- *
597
- * @template P - The type of request parameters.
598
- * @template ResBodyMap - The type of response body.
599
- * @template ReqBody - The type of request body.
600
- * @template ReqQuery - The type of request query.
601
- * @template LocalsObj - The type of local variables.
602
- * @param {string} path - The path for the route.
603
- * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
604
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
605
- * @returns {ExpressRouter} - The Express router.
606
- */
607
- get: LiveTypeRouteDefinition<SV, BasePath, 'get', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
608
- /**
609
- * Registers a POST route with the specified contract details and handler handlers.
610
- *
611
- * @template P - The type of request parameters.
612
- * @template ResBodyMap - The type of response body.
613
- * @template ReqBody - The type of request body.
614
- * @template ReqQuery - The type of request query.
615
- * @template LocalsObj - The type of local variables.
616
- * @param {string} path - The path for the route.
617
- * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
618
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
619
- * @returns {ExpressRouter} - The Expxwress router.
620
- */
621
- post: LiveTypeRouteDefinition<SV, BasePath, 'post', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
622
- /**
623
- * Registers a PUT route with the specified contract details and handler handlers.
624
- *
625
- * @template P - The type of request parameters.
626
- * @template ResBodyMap - The type of response body.
627
- * @template ReqBody - The type of request body.
628
- * @template ReqQuery - The type of request query.
629
- * @template LocalsObj - The type of local variables.
630
- * @param {string} path - The path for the route.
631
- * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
632
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
633
- * @returns {ExpressRouter} - The Express router.
634
- */
635
- put: LiveTypeRouteDefinition<SV, BasePath, 'put', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
636
- /**
637
- * Registers a PATCH route with the specified contract details and handler handlers.
638
- *
639
- * @template P - The type of request parameters.
640
- * @template ResBodyMap - The type of response body.
641
- * @template ReqBody - The type of request body.
642
- * @template ReqQuery - The type of request query.
643
- * @template LocalsObj - The type of local variables.
644
- * @param {string} path - The path for the route.
645
- * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
646
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
647
- * @returns {ExpressRouter} - The Express router.
648
- */
649
- patch: LiveTypeRouteDefinition<SV, BasePath, 'patch', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
650
- /**
651
- * Registers a DELETE route with the specified contract details and handler handlers.
652
- *
653
- * @template P - The type of request parameters.
654
- * @template ResBodyMap - The type of response body.
655
- * @template ReqBody - The type of request body.
656
- * @template ReqQuery - The type of request query.
657
- * @template LocalsObj - The type of local variables.
658
- * @param {string} path - The path for the route.
659
- * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
660
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
661
- * @returns {ExpressRouter} - The Express router.
662
- */
663
- delete: LiveTypeRouteDefinition<SV, BasePath, 'delete', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
664
- /**
665
- * Registers a OPTIONS route with the specified contract details and handler handlers.
666
- *
667
- * @template P - The type of request parameters.
668
- * @template ResBodyMap - The type of response body.
669
- * @template ReqBody - The type of request body.
670
- * @template ReqQuery - The type of request query.
671
- * @template LocalsObj - The type of local variables.
672
- * @param {string} path - The path for the route.
673
- * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
674
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
675
- * @returns {ExpressRouter} - The Express router.
676
- */
677
- options: LiveTypeRouteDefinition<SV, BasePath, 'options', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
678
- /**
679
- * Registers a HEAD route with the specified contract details and handler handlers.
680
- *
681
- * @template P - The type of request parameters.
682
- * @template ResBodyMap - The type of response body.
683
- * @template ReqBody - The type of request body.
684
- * @template ReqQuery - The type of request query.
685
- * @template LocalsObj - The type of local variables.
686
- * @param {string} path - The path for the route.
687
- * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
688
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
689
- * @returns {ExpressRouter} - The Express router.
690
- */
691
- head: LiveTypeRouteDefinition<SV, BasePath, 'head', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
692
- /**
693
- * Registers a TRACE route with the specified contract details and handler handlers.
694
- *
695
- * @template P - The type of request parameters.
696
- * @template ResBodyMap - The type of response body.
697
- * @template ReqBody - The type of request body.
698
- * @template ReqQuery - The type of request query.
699
- * @template LocalsObj - The type of local variables.
700
- * @param {string} path - The path for the route.
701
- * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
702
- * @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
703
- * @returns {ExpressRouter} - The Express router.
704
- */
705
- trace: LiveTypeRouteDefinition<SV, BasePath, 'trace', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
706
- insertIntoRouterSdkPaths({ sdkPath, path, method, name }: {
707
- sdkPath: string;
708
- name: string;
709
- path: string;
710
- method: string;
711
- }): void;
712
- private unpackSdks;
713
- registerSdks(sdks: SdkHandlerObject<SV>): void;
714
- protected cloneInternals(clone: this): void;
715
- clone(): this;
716
- }
717
-
718
- /**
719
- * ForklaunchExpressLikeApplication class that sets up routes and middleware for an Express-like application, for use with controller/routes pattern.
720
- *
721
- * @template SV - A type that extends AnySchemaValidator.
722
- * @template Server - The server type.
723
- */
724
- declare abstract class ForklaunchExpressLikeApplication<SV extends AnySchemaValidator, Server extends ExpressLikeRouter<RouterHandler, Server>, RouterHandler, BaseRequest, BaseResponse, NextFunction, Session extends SessionObject<SV>, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject> extends ForklaunchExpressLikeRouter<SV, '/', RouterHandler, Server, BaseRequest, BaseResponse, NextFunction, Session, FetchMap, Sdk> {
725
- readonly schemaValidator: SV;
726
- readonly internal: Server;
727
- readonly postEnrichMiddleware: RouterHandler[];
728
- readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
729
- readonly appOptions?: ExpressLikeApplicationOptions<SV, Session> | undefined;
730
- /**
731
- * Creates an instance of the Application class.
732
- *
733
- * @param {SV} schemaValidator - The schema validator.
734
- */
735
- constructor(schemaValidator: SV, internal: Server, postEnrichMiddleware: RouterHandler[], openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, appOptions?: ExpressLikeApplicationOptions<SV, Session> | undefined);
736
- /**
737
- * Validates all registered routes across the app and all mounted routers.
738
- * Call this at the start of listen() to fail fast at startup.
739
- */
740
- protected validateAllRoutes(): void;
741
- abstract listen(...args: unknown[]): void;
742
- }
743
-
744
- type RoutingStrategy = 'round-robin' | 'sticky' | 'random';
745
- interface ClusterConfig<ExpressApp> {
746
- port: number;
747
- host: string;
748
- workerCount: number;
749
- routingStrategy?: RoutingStrategy;
750
- expressApp: ExpressApp;
751
- openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
752
- ssl?: {
753
- keyFile: string;
754
- certFile: string;
755
- caFile: string;
756
- };
757
- }
758
-
759
- declare function isPortBound(port: number, host?: string): Promise<boolean>;
760
-
761
- /**
762
- * Creates an HMAC token for a given method, path, body, timestamp, nonce, and secret key.
763
- * @param method - The HTTP method to use.
764
- * @param path - The path to use.
765
- * @param body - The body to use.
766
- * @param timestamp - The timestamp to use.
767
- * @param nonce - The nonce to use.
768
- * @param secretKey - The secret key to use.
769
- * @returns The HMAC token.
770
- */
771
- declare function createHmacToken({ method, path, body, timestamp, nonce, secretKey }: {
772
- method: string;
773
- path: string;
774
- body?: unknown;
775
- timestamp: Date;
776
- nonce: string;
777
- secretKey: string;
778
- }): string;
779
-
780
- /**
781
- * Generate HMAC authorization headers for service-to-service authentication.
782
- *
783
- * @param secretKey - The shared HMAC secret key
784
- * @param method - HTTP method (GET, POST, etc.)
785
- * @param path - The API path
786
- * @param body - Optional request body
787
- * @param keyId - Optional key identifier (defaults to 'default')
788
- * @returns Authorization header object
789
- *
790
- * @example
791
- * ```typescript
792
- * const headers = generateHmacAuthHeaders({
793
- * secretKey: 'my-secret-key',
794
- * method: 'POST',
795
- * path: '/api/users',
796
- * body: { name: 'John' }
797
- * });
798
- * // headers.authorization = 'HMAC keyId=default ts=2024-01-16T12:00:00.000Z nonce=... signature=...'
799
- * ```
800
- */
801
- declare function generateHmacAuthHeaders({ secretKey, method, path, body, keyId }: {
802
- secretKey: string;
803
- method: string;
804
- path: string;
805
- body?: unknown;
806
- keyId?: string;
807
- }): {
808
- authorization: `HMAC keyId=${string} ts=${string} nonce=${string} signature=${string}`;
809
- };
810
-
811
- /**
812
- * Retrieves and caches the JSON Web Key Set (JWKS) from a given public key URL.
813
- *
814
- * This function fetches the JWKS from the specified URL and caches the result in memory
815
- * to avoid unnecessary network requests. The cache is considered valid for a duration
816
- * specified by the `cache-control` header in the JWKS HTTP response (in seconds), or
817
- * falls back to a default TTL if the header is not present. If the cache is still valid,
818
- * the cached keys are returned immediately.
819
- *
820
- * @param {string} jwksPublicKeyUrl - The URL to fetch the JWKS from.
821
- * @returns {Promise<JWK[]>} A promise that resolves to an array of JWK objects.
822
- *
823
- * @example
824
- * const jwks = await getCachedJwks('https://example.com/.well-known/jwks.json');
825
- * // Use jwks for JWT verification, etc.
826
- */
827
- declare function getCachedJwks(jwksPublicKeyUrl: string): Promise<JWK[]>;
828
- /**
829
- * Discriminates between different authentication methods and returns a typed result.
830
- *
831
- * This function analyzes the provided authentication configuration and determines
832
- * whether it uses basic authentication or JWT authentication. It returns a
833
- * discriminated union type that includes the authentication type and the
834
- * corresponding authentication configuration.
835
- *
836
- * @template SV - A type that extends AnySchemaValidator
837
- * @template P - A type that extends ParamsDictionary
838
- * @template ReqBody - A type that extends Record<string, unknown>
839
- * @template ReqQuery - A type that extends ParsedQs
840
- * @template ReqHeaders - A type that extends Record<string, unknown>
841
- * @template BaseRequest - The base request type
842
- *
843
- * @param auth - The authentication methods configuration object
844
- * @returns A discriminated union object with either:
845
- * - `{ type: 'basic', auth: BasicAuthMethods['basic'] }` for basic authentication
846
- * - `{ type: 'jwt', auth?: JwtAuthMethods['jwt'] }` for JWT authentication (auth is optional)
847
- *
848
- * @example
849
- * ```typescript
850
- * const authConfig = {
851
- * basic: {
852
- * login: (username: string, password: string) => boolean
853
- * }
854
- * };
855
- * const result = discriminateAuthMethod(authConfig);
856
- * // result.type === 'basic'
857
- * // result.auth === authConfig.basic
858
- * ```
859
- */
860
- declare function discriminateAuthMethod<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, VersionedReqs extends VersionedRequests, BaseRequest>(auth: AuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedReqs, BaseRequest>, openTelemetryCollector?: OpenTelemetryCollector<MetricsDefinition>): Promise<{
861
- type: 'basic';
862
- auth: {
863
- decodeResource?: DecodeResource;
864
- login: BasicAuthMethods['basic']['login'];
865
- };
866
- } | {
867
- type: 'jwt';
868
- auth: {
869
- decodeResource?: DecodeResource;
870
- } | {
871
- verificationFunction: (token: string) => Promise<JWTPayload | undefined>;
872
- };
873
- } | {
874
- type: 'hmac';
875
- auth: {
876
- secretKeys: Record<string, string>;
877
- verificationFunction: ({ body, path, method, timestamp, nonce, signature, secretKey }: {
878
- method: string;
879
- path: string;
880
- body?: unknown;
881
- timestamp: Date;
882
- nonce: string;
883
- signature: string;
884
- secretKey: string;
885
- }) => Promise<boolean | undefined>;
886
- };
887
- }>;
888
-
889
- /**
890
- * Type guard that checks if an object is a Forklaunch request.
891
- * A Forklaunch request is an object that contains contract details and follows the Forklaunch request structure.
892
- *
893
- * @template SV - A type that extends AnySchemaValidator
894
- * @template P - The type of route parameters that extends ParamsDictionary
895
- * @template ReqBody - The type of request body that extends Record<string, unknown>
896
- * @template ReqQuery - The type of request query parameters that extends ParsedQs
897
- * @template ReqHeaders - The type of request headers that extends Record<string, unknown>
898
- * @param {unknown} request - The object to check
899
- * @returns {boolean} A type predicate indicating whether the object is a ForklaunchRequest
900
- *
901
- * @example
902
- * ```ts
903
- * if (isForklaunchRequest(request)) {
904
- * // request is now typed as ForklaunchRequest
905
- * const { contractDetails } = request;
906
- * }
907
- * ```
908
- */
909
- declare function isForklaunchRequest<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, VersionedReqs extends VersionedRequests, SessionSchema extends Record<string, unknown>>(request: unknown): request is ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, Extract<keyof VersionedReqs, string>, SessionSchema>;
910
-
911
- /**
912
- * Type guard that checks if an object is a Forklaunch router.
913
- * A Forklaunch router is an object that has a base path and an array of routes.
914
- *
915
- * @template SV - A type that extends AnySchemaValidator
916
- * @param {unknown} maybeForklaunchRouter - The object to check
917
- * @returns {boolean} A type predicate indicating whether the object is a ForklaunchRouter
918
- *
919
- * @example
920
- * ```ts
921
- * if (isForklaunchRouter(router)) {
922
- * // router is now typed as ForklaunchRouter
923
- * router.basePath; // '/api'
924
- * router.routes; // Route[]
925
- * }
926
- * ```
927
- */
928
- declare function isForklaunchRouter<SV extends AnySchemaValidator>(maybeForklaunchRouter: unknown): maybeForklaunchRouter is ForklaunchRouter<SV>;
929
-
930
- declare const delete_: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "delete">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "delete", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
931
-
932
- declare const get: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "get">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "get", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
933
-
934
- declare const head: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "head">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "head", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
935
-
936
- declare const middleware: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "middleware">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: MiddlewareContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => {
937
- _typedHandler: true;
938
- _path: Path;
939
- contractDetails: ContractDetails<SV, Name, "middleware", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>;
940
- handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[];
941
- };
942
-
943
- declare const options: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "options">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "options", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
944
-
945
- declare const patch: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "patch">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "patch", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
946
-
947
- declare const post: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "post">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "post", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
948
-
949
- declare const put: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "put">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "put", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
950
-
951
- declare const trace: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, "trace">, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "trace", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
952
-
953
- declare function typedAuthHandler<SV extends AnySchemaValidator, Name extends string, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, VersionedApi extends VersionSchema<SV, Method>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, BaseRequest>(_schemaValidator: SV, _contractDetails: ContractDetails<SV, Name, Method, `/${string}`, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, authHandler: ExpressLikeSchemaAuthMapper<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest>): ExpressLikeSchemaAuthMapper<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest>;
954
-
955
- /**
956
- * Router class that sets up routes and middleware for an Express router, for use with controller/routes pattern.
957
- *
958
- * @template SV - A type that extends AnySchemaValidator.
959
- * @template contractDetails - The contract details.
960
- * @template handlers - The handler middlware and handler.
961
- */
962
- declare function typedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, const VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, _path: Path | undefined, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
963
- declare function typedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, const VersionedApi extends VersionSchema<SV, ContractMethod>, BaseRequest, BaseResponse, NextFunction, const Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>>(_schemaValidator: SV, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, BaseResponse, NextFunction, Auth>;
964
-
965
- /**
966
- * Object-map of the HTTP Status Codes. Maps from the status code, to the
967
- * textual name. The key is the HTTP Status Code number, and the resulting
968
- * value will be the textual name for that Status Code.
969
- *
970
- * The comments for each item are taken from httpstatuses.com and the RFC-7231
971
- * document.
972
- *
973
- * @see https://httpstatuses.com
974
- * @see https://datatracker.ietf.org/doc/html/rfc7231
975
- */
976
- declare const HTTPStatuses: Readonly<{
977
- [key: number]: string;
978
- }>;
979
- /**
980
- * Numerical HTTP status code.
981
- */
982
- type StatusCode = keyof typeof HTTPStatuses;
983
- /**
984
- * Checks if the given numerical status code is in the known HTTP status codes
985
- * list.
986
- *
987
- * @param code HTTP Status code
988
- * @returns True if the code is a valid HTTP status code
989
- */
990
- declare const isValidStatusCode: (code: number) => boolean;
991
- /**
992
- * Checks if the given status code is in the informational range (1XX).
993
- *
994
- * @param code HTTP Status code
995
- * @returns True if the code is in the "informational" range.
996
- */
997
- declare const isInformational: (code: StatusCode) => boolean;
998
- /**
999
- * Checks if the given status code is in the successful range (2XX).
1000
- *
1001
- * @param code HTTP Status code
1002
- * @returns True if the code is in the "success" range.
1003
- */
1004
- declare const isSuccessful: (code: StatusCode) => boolean;
1005
- /**
1006
- * Checks if the given status code is in the redirection range (3XX).
1007
- *
1008
- * @param code HTTP Status code
1009
- * @returns True if the code is in the "redirection" range.
1010
- */
1011
- declare const isRedirection: (code: StatusCode) => boolean;
1012
- /**
1013
- * Checks if the given status code is in the client error range (4XX).
1014
- *
1015
- * @param code HTTP Status code
1016
- * @returns True if the code is in the "client error" range.
1017
- */
1018
- declare const isClientError: (code: StatusCode) => boolean;
1019
- /**
1020
- * Checks if the given status code is in the server error range (5XX).
1021
- *
1022
- * @param code HTTP Status code
1023
- * @returns True if the code is in the "server error" range.
1024
- */
1025
- declare const isServerError: (code: StatusCode) => boolean;
1026
- /**
1027
- * Searches the list of HTTP statuses for a matching textual name to the one
1028
- * provided. If a match is found, then the numerical status code is returned,
1029
- * otherwise `null`.
1030
- *
1031
- * Internally, the parameter and the status names are normalized by lower-casing
1032
- * the strings and trimming space.
1033
- *
1034
- * @param status HTTP Status textual name
1035
- * @returns The numerical status code, or null if not found
1036
- */
1037
- declare const getCodeForStatus: (status: string) => null | StatusCode;
1038
-
1039
- /**
1040
- * Generates a ModelContextProtocol server from given routers.
1041
- *
1042
- * @template SV - A type that extends AnySchemaValidator.
1043
- * @param {SV} schemaValidator - The schema validator.
1044
- * @param {string | number} port - The port on which the server is running.
1045
- * @param {ForklaunchRouter<SV>[]} routers - The routers to include in the server.
1046
- * @returns {McpServer} - The generated ModelContextProtocol server.
1047
- */
1048
- declare function generateMcpServer<T extends Record<string, unknown> | undefined = Record<string, unknown> | undefined>(schemaValidator: ZodSchemaValidator, protocol: 'http' | 'https', host: string, port: number, version: `${number}.${number}.${number}`, application: ForklaunchRouter<ZodSchemaValidator>, appOptions?: ExpressLikeApplicationOptions<ZodSchemaValidator, SessionObject<ZodSchemaValidator>>['mcp'], options?: ConstructorParameters<typeof FastMCP<T>>[0], contentTypeMap?: Record<string, string>, authenticate?: (request: http.IncomingMessage) => Promise<Record<string, unknown> | undefined>): FastMCP<Record<string, unknown> | undefined>;
1049
-
1050
- /**
1051
- * Middleware to create and add a request context.
1052
- *
1053
- * @template SV - A type that extends AnySchemaValidator.
1054
- * @template Request - A type that extends ForklaunchRequest.
1055
- * @template Response - A type that extends ForklaunchResponse.
1056
- * @template NextFunction - A type that extends ForklaunchNextFunction.
1057
- * @param {SV} schemaValidator - The schema validator.
1058
- * @returns {Function} - Middleware function to create request context.
1059
- */
1060
- declare function createContext<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, VersionedApi extends VersionSchema<SV, 'middleware'>, SessionSchema extends SessionObject<SV>>(schemaValidator: SV): ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, SessionSchema, unknown, unknown, ForklaunchNextFunction>;
1061
-
1062
- /**
1063
- * Enhances the Express-like `send` method with additional logic for response handling and validation.
1064
- *
1065
- * This function intercepts the `send` method to provide custom behavior, including response validation
1066
- * through the `parseResponse` middleware. If the response status is 404, it sends a "Not Found" message.
1067
- * If the response validation fails, it sends a parsing error message. Otherwise, it calls the original `send`
1068
- * method with the provided data.
1069
- *
1070
- * @template SV - The type of the schema validator used in the request.
1071
- * @template P - The type of the parameters dictionary used in the request.
1072
- * @template ResBodyMap - A record type mapping status codes to response body types.
1073
- * @template ReqBody - The type of the request body.
1074
- * @template ReqQuery - The type of the parsed query string.
1075
- * @template ReqHeaders - The type of the request headers.
1076
- * @template ResHeaders - The type of the response headers, extended from `ForklaunchResHeaders`.
1077
- * @template LocalsObj - The type of the locals object in the response.
1078
- *
1079
- * @param {unknown} instance - The context (typically `this`) in which the original `send` method is called.
1080
- * @param {ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>} req - The request object, containing the schema validator and other request data.
1081
- * @param {ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>} res - The response object, including headers and body data.
1082
- * @param {Function} originalSend - The original `send` method from the response object, to be called after custom logic.
1083
- * @param {string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined} data - The data to be sent as the response body.
1084
- * @param {boolean} shouldEnrich - A flag indicating whether the response should be sent immediately.
1085
- *
1086
- * @returns {unknown} The return value of the original `send` method, typically the response itself.
1087
- */
1088
- declare function enrichExpressLikeSend<SV extends AnySchemaValidator, P extends ParamsDictionary, ResBodyMap extends Record<number, unknown>, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, ResHeaders extends Record<string, unknown>, LocalsObj extends Record<string, unknown>, VersionedReqs extends VersionedRequests, SessionSchema extends Record<string, unknown>>(instance: unknown, req: ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, Extract<keyof VersionedReqs, string>, SessionSchema>, res: ForklaunchResponse<unknown, ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj, Extract<keyof VersionedReqs, string>>, originalOperation: ForklaunchStatusResponse<ForklaunchSendableData>['json'] | ForklaunchStatusResponse<ForklaunchSendableData>['jsonp'], originalSend: ForklaunchStatusResponse<ForklaunchSendableData>['send'], data: ForklaunchSendableData | File | Blob | AsyncGenerator<Record<string, unknown>> | null | undefined, shouldEnrich: boolean): void;
1089
-
1090
- declare const OPENAPI_DEFAULT_VERSION: unique symbol;
1091
- /**
1092
- * Generates a Swagger document from given routers.
1093
- *
1094
- * @template SV - A type that extends AnySchemaValidator.
1095
- * @param {SV} schemaValidator - The schema validator.
1096
- * @param {string | number} port - The port on which the server is running.
1097
- * @param {ForklaunchRouter<SV>[]} routers - The routers to include in the Swagger document.
1098
- * @returns {OpenAPIObject} - The generated Swagger document.
1099
- */
1100
- declare function generateOpenApiSpecs<SV extends AnySchemaValidator>(schemaValidator: SV, serverUrls: string[], serverDescriptions: string[], application: ForklaunchRouter<SV>, appOptions?: ExpressLikeApplicationOptions<SV, SessionObject<SV>>['openapi']): Record<string | symbol, OpenAPIObject>;
1101
-
1102
- /**
1103
- * Discriminates the body type from the given contract details and returns information
1104
- * necessary for parsing and validation.
1105
- *
1106
- * @template SV - Schema validator type.
1107
- * @template Path - Route path type.
1108
- * @template P - Params schema type.
1109
- * @template ResBodyMap - Response body map type.
1110
- * @template ReqBody - Request body type.
1111
- * @template ReqQuery - Request query object type.
1112
- * @template ReqHeaders - Request headers object type.
1113
- * @template ResHeaders - Response headers object type.
1114
- * @param contractDetails - The HTTP contract details.
1115
- * @returns An object containing the content type, parser type, and schema.
1116
- * @throws If no body-related information is found in the contract details.
1117
- */
1118
- declare function discriminateBody<SV extends AnySchemaValidator>(schemaValidator: SV, body: Body<SV> | undefined): {
1119
- contentType: string;
1120
- parserType: 'json' | 'text' | 'multipart' | 'urlEncoded' | 'file';
1121
- schema: SV['_ValidSchemaObject'];
1122
- } | undefined;
1123
- /**
1124
- * Discriminates all response body types from the given contract details and returns
1125
- * information necessary for parsing and validation for each status code.
1126
- *
1127
- * @template SV - Schema validator type.
1128
- * @template Path - Route path type.
1129
- * @template P - Params schema type.
1130
- * @template ResBodyMap - Response body map type.
1131
- * @template ReqQuery - Request query object type.
1132
- * @template ReqHeaders - Request headers object type.
1133
- * @template ResHeaders - Response headers object type.
1134
- * @param contractDetails - The contract details containing response schemas.
1135
- * @returns A record mapping status codes to content type, parser type, and schema info.
1136
- */
1137
- declare function discriminateResponseBodies<SV extends AnySchemaValidator>(schemaValidator: SV, responses: ResponsesObject<SV>): Record<number, {
1138
- contentType: string;
1139
- parserType: "json" | "text" | "serverSentEvent" | "file" | "multipart";
1140
- schema: SV["_ValidSchemaObject"];
1141
- }>;
1142
-
1143
- type AuditEntry = {
1144
- timestamp: string;
1145
- userId: string | null;
1146
- tenantId: string | null;
1147
- route: string;
1148
- method: string;
1149
- bodyHash: string;
1150
- status: number;
1151
- duration: number;
1152
- redactedFields: string[];
1153
- eventType: 'http' | 'ws' | 'auth_failure' | 'rate_limit' | 'rbac_deny' | 'super_admin_bypass';
1154
- };
1155
- declare class AuditLogger {
1156
- _otel: OpenTelemetryCollector<MetricsDefinition>;
1157
- constructor(otel: OpenTelemetryCollector<MetricsDefinition>);
1158
- append(entry: AuditEntry): void;
1159
- static hashBody(body: string | Buffer | undefined | null): string;
1160
- }
1161
-
1162
- declare const ATTR_API_NAME = "api.name";
1163
- declare const ATTR_CORRELATION_ID = "correlation.id";
1164
- declare const ATTR_APPLICATION_ID = "application_id";
1165
-
1166
- declare function evaluateTelemetryOptions(telemetryOptions: TelemetryOptions): {
1167
- enabled: {
1168
- metrics?: boolean;
1169
- tracing?: boolean;
1170
- logging?: boolean;
1171
- };
1172
- level: LevelWithSilentOrString;
1173
- };
1174
-
1175
- declare function metricsDefinitions<T extends MetricsDefinition>(metrics: T): T;
1176
-
1177
- declare function recordMetric<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ResBodyMap extends Record<string, unknown>, ReqHeaders extends Record<string, string>, ResHeaders extends Record<string, unknown>, LocalsObj extends Record<string, unknown>, VersionedReqs extends VersionedRequests, SessionSchema extends Record<string, unknown>>(req: ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, Extract<keyof VersionedReqs, string>, SessionSchema>, res: ForklaunchResponse<unknown, ResBodyMap, ResHeaders, LocalsObj, Extract<keyof VersionedReqs, string>>): void;
1178
-
1179
- /**
1180
- * Configuration for rate limiting with separate read/write limits.
1181
- */
1182
- type RateLimitConfig = {
1183
- /** Max requests per window for GET/HEAD/OPTIONS */
1184
- read: number;
1185
- /** Max requests per window for POST/PUT/PATCH/DELETE */
1186
- write: number;
1187
- /** Window duration in milliseconds */
1188
- windowMs: number;
1189
- };
1190
- /**
1191
- * Result of a rate limit check.
1192
- */
1193
- type RateLimitResult = {
1194
- /** Whether the request is allowed */
1195
- allowed: boolean;
1196
- /** Number of remaining requests in the current window */
1197
- remaining: number;
1198
- /** Unix timestamp (ms) when the current window resets */
1199
- resetAt: number;
1200
- };
1201
- /**
1202
- * Rate limiter backed by a TtlCache.
1203
- *
1204
- * Uses a sliding-window counter pattern: each unique key maps to a
1205
- * {@link RateLimitCounter} stored in the cache with a TTL equal to the
1206
- * configured window duration.
1207
- */
1208
- declare class RateLimiter {
1209
- private cache;
1210
- constructor(cache: TtlCache);
1211
- /**
1212
- * Check whether the given key is within its rate limit.
1213
- *
1214
- * The counter is read from the cache, incremented, and written back.
1215
- * If the cache is unreachable the limiter **fails open** (allows the
1216
- * request) so that a cache outage does not take down the service.
1217
- *
1218
- * @param key - The rate limit key (see {@link RateLimiter.buildKey}).
1219
- * @param limit - Maximum number of requests allowed in the window.
1220
- * @param windowMs - Window duration in milliseconds.
1221
- */
1222
- check(key: string, limit: number, windowMs: number): Promise<RateLimitResult>;
1223
- /**
1224
- * Build a rate limit key from request context parts.
1225
- *
1226
- * Format: `ratelimit:{tenantId}:{route}:{userId}:{operationType}`
1227
- *
1228
- * When `tenantId` or `userId` is `null`, the placeholder `"anon"` is used.
1229
- */
1230
- static buildKey(parts: {
1231
- tenantId: string | null;
1232
- route: string;
1233
- userId: string | null;
1234
- operationType: 'read' | 'write';
1235
- }): string;
1236
- /**
1237
- * Determine whether an HTTP method is a read or write operation.
1238
- *
1239
- * GET, HEAD, and OPTIONS are reads; everything else is a write.
1240
- */
1241
- static operationType(method: string): 'read' | 'write';
1242
- }
1243
-
1244
- export { ATTR_API_NAME, ATTR_APPLICATION_ID, ATTR_CORRELATION_ID, type AuditEntry, AuditLogger, AuthMethods, AuthMethodsBase, BasicAuthMethods, Body, type ClusterConfig, type ConstrainedForklaunchRouter, ContractDetails, type ContractDetailsExpressLikeSchemaHandler, type ContractDetailsOrMiddlewareOrTypedHandler, DecodeResource, ExpressLikeApplicationOptions, type ExpressLikeRouter, ExpressLikeRouterOptions, ExpressLikeSchemaAuthMapper, ExpressLikeSchemaHandler, type ExpressLikeTypedHandler, type ExtractLiveTypeFn, type FetchFunction, ForklaunchExpressLikeApplication, ForklaunchExpressLikeRouter, ForklaunchNextFunction, ForklaunchRequest, ForklaunchResHeaders, ForklaunchResponse, type ForklaunchRoute, type ForklaunchRouter, ForklaunchSendableData, ForklaunchStatusResponse, HTTPStatuses, HeadersObject, HttpContractDetails, LiveSdkFunction, LiveTypeFunction, type LiveTypeRouteDefinition, type MapHandlerToLiveSdk, type MapToFetch, type MapToSdk, Method, MetricsDefinition, MiddlewareContractDetails, type MiddlewareOrMiddlewareWithTypedHandler, type NestableRouterBasedHandler, OPENAPI_DEFAULT_VERSION, OpenTelemetryCollector, ParamsDictionary, ParamsObject, type PathBasedHandler, PathMatch, type PathOrMiddlewareBasedHandler, PathParamHttpContractDetails, QueryObject, type RateLimitConfig, type RateLimitResult, RateLimiter, ResolvedSessionObject, ResponsesObject, type RouterMap, type RoutingStrategy, SchemaAuthMethods, type SdkHandler, type SdkHandlerObject, type SdkRouter, SessionObject, type StatusCode, TelemetryOptions, type ToFetchMap, type TypedHandler, type TypedMiddlewareDefinition, type TypedNestableMiddlewareDefinition, VersionSchema, VersionedRequests, createContext, createHmacToken, delete_, discriminateAuthMethod, discriminateBody, discriminateResponseBodies, enrichExpressLikeSend, evaluateTelemetryOptions, extractRouteHandlers, generateHmacAuthHeaders, generateMcpServer, generateOpenApiSpecs, get, getCachedJwks, getCodeForStatus, head, isClientError, isForklaunchRequest, isForklaunchRouter, isInformational, isPortBound, isRedirection, isServerError, isSuccessful, isValidStatusCode, metricsDefinitions, middleware, options, patch, post, put, recordMetric, trace, typedAuthHandler, typedHandler };
1
+ export type { ParsedQs } from 'qs';
2
+ export * from './application/expressLikeApplication';
3
+ export * from './cluster/cluster.types';
4
+ export * from './cluster/isPortBound';
5
+ export * from './createHmacToken';
6
+ export * from './generateHmacAuthHeaders';
7
+ export * from './discriminateAuthMethod';
8
+ export * from './guards/isForklaunchRequest';
9
+ export * from './guards/isForklaunchRouter';
10
+ export * from './handlers/delete';
11
+ export * from './handlers/get';
12
+ export * from './handlers/head';
13
+ export * from './handlers/middleware';
14
+ export * from './handlers/options';
15
+ export * from './handlers/patch';
16
+ export * from './handlers/post';
17
+ export * from './handlers/put';
18
+ export * from './handlers/trace';
19
+ export * from './handlers/typedAuthHandler';
20
+ export * from './handlers/typedHandler';
21
+ export * from './httpStatusCodes';
22
+ export * from './interfaces/expressLikeRouter.interface';
23
+ export * from './mcpGenerator/mcpGenerator';
24
+ export * from './middleware/request/createContext.middleware';
25
+ export * from './middleware/response/enrichExpressLikeSend.middleware';
26
+ export * from './openApiV3Generator/openApiV3Generator';
27
+ export * from './router/discriminateBody';
28
+ export * from './router/expressLikeRouter';
29
+ export * from './telemetry/auditLogger';
30
+ export * from './telemetry/constants';
31
+ export * from './telemetry/evaluateTelemetryOptions';
32
+ export * from './telemetry/metricsDefinition';
33
+ export * from './telemetry/openTelemetryCollector';
34
+ export * from './telemetry/pinoLogger';
35
+ export * from './telemetry/recordMetric';
36
+ export * from './types/apiDefinition.types';
37
+ export * from './types/contractDetails.types';
38
+ export * from './types/docsConfiguration.types';
39
+ export * from './types/expressLikeOptions';
40
+ export * from './types/expressLikeRouter.types';
41
+ export * from './types/openTelemetryCollector.types';
42
+ export * from './types/router.types';
43
+ export * from './rateLimit/index';
44
+ export * from './types/sdk.types';
45
+ export { MapToSdk } from './types/sdk.types';
46
+ export * from './types/typedHandler.types';
47
+ //# sourceMappingURL=index.d.ts.map