@h4ad/serverless-adapter 3.2.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/lib/adapter.contract-EQE3rlgO.d.ts +278 -0
  2. package/lib/adapter.contract-y5xSjOjo.d.cts +278 -0
  3. package/lib/adapters/apollo-server/index.cjs +4 -0
  4. package/lib/adapters/apollo-server/index.cjs.map +1 -0
  5. package/lib/adapters/apollo-server/{apollo-server-mutation.adapter.d.ts → index.d.cts} +10 -5
  6. package/lib/adapters/apollo-server/index.d.ts +61 -2
  7. package/lib/adapters/apollo-server/index.mjs +2 -0
  8. package/lib/adapters/apollo-server/index.mjs.map +1 -0
  9. package/lib/adapters/aws/index.cjs +4 -0
  10. package/lib/adapters/aws/index.cjs.map +1 -0
  11. package/lib/adapters/aws/index.d.cts +910 -0
  12. package/lib/adapters/aws/index.d.ts +910 -12
  13. package/lib/adapters/aws/index.mjs +2 -0
  14. package/lib/adapters/aws/index.mjs.map +1 -0
  15. package/lib/adapters/azure/index.cjs +4 -0
  16. package/lib/adapters/azure/index.cjs.map +1 -0
  17. package/lib/adapters/azure/{http-trigger-v4.adapter.d.ts → index.d.cts} +11 -6
  18. package/lib/adapters/azure/index.d.ts +86 -2
  19. package/lib/adapters/azure/index.mjs +2 -0
  20. package/lib/adapters/azure/index.mjs.map +1 -0
  21. package/lib/adapters/digital-ocean/index.cjs +4 -0
  22. package/lib/adapters/digital-ocean/index.cjs.map +1 -0
  23. package/lib/adapters/digital-ocean/index.d.cts +126 -0
  24. package/lib/adapters/digital-ocean/index.d.ts +126 -2
  25. package/lib/adapters/digital-ocean/index.mjs +2 -0
  26. package/lib/adapters/digital-ocean/index.mjs.map +1 -0
  27. package/lib/adapters/dummy/index.cjs +4 -0
  28. package/lib/adapters/dummy/index.cjs.map +1 -0
  29. package/lib/adapters/dummy/{dummy.adapter.d.ts → index.d.cts} +10 -4
  30. package/lib/adapters/dummy/index.d.ts +37 -2
  31. package/lib/adapters/dummy/index.mjs +2 -0
  32. package/lib/adapters/dummy/index.mjs.map +1 -0
  33. package/lib/adapters/huawei/index.cjs +4 -0
  34. package/lib/adapters/huawei/index.cjs.map +1 -0
  35. package/lib/adapters/huawei/index.d.cts +365 -0
  36. package/lib/adapters/huawei/index.d.ts +365 -2
  37. package/lib/adapters/huawei/index.mjs +2 -0
  38. package/lib/adapters/huawei/index.mjs.map +1 -0
  39. package/lib/{core/base-handler.d.ts → base-handler-fYEk59Xq.d.ts} +9 -6
  40. package/lib/base-handler-peEBoKtZ.d.cts +35 -0
  41. package/lib/chunk-22SSVZU5.mjs +1 -0
  42. package/lib/chunk-22SSVZU5.mjs.map +1 -0
  43. package/lib/chunk-HU5XBQCP.mjs +10 -0
  44. package/lib/chunk-HU5XBQCP.mjs.map +1 -0
  45. package/lib/chunk-NSO4L3EI.mjs +2 -0
  46. package/lib/chunk-NSO4L3EI.mjs.map +1 -0
  47. package/lib/chunk-OYOJMOFP.mjs +2 -0
  48. package/lib/chunk-OYOJMOFP.mjs.map +1 -0
  49. package/lib/chunk-Y6H576RS.mjs +2 -0
  50. package/lib/chunk-Y6H576RS.mjs.map +1 -0
  51. package/lib/{core/constants.d.ts → constants-0cgQlFSV.d.cts} +6 -5
  52. package/lib/constants-0cgQlFSV.d.ts +32 -0
  53. package/lib/{contracts/framework.contract.d.ts → framework.contract-YnJ-fl1w.d.cts} +4 -3
  54. package/lib/framework.contract-YnJ-fl1w.d.ts +20 -0
  55. package/lib/frameworks/apollo-server/index.cjs +4 -0
  56. package/lib/frameworks/apollo-server/index.cjs.map +1 -0
  57. package/lib/frameworks/apollo-server/{apollo-server.framework.d.ts → index.d.cts} +12 -9
  58. package/lib/frameworks/apollo-server/index.d.ts +72 -2
  59. package/lib/frameworks/apollo-server/index.mjs +2 -0
  60. package/lib/frameworks/apollo-server/index.mjs.map +1 -0
  61. package/lib/frameworks/body-parser/index.cjs +4 -0
  62. package/lib/frameworks/body-parser/index.cjs.map +1 -0
  63. package/lib/frameworks/body-parser/index.d.cts +159 -0
  64. package/lib/frameworks/body-parser/index.d.ts +159 -6
  65. package/lib/frameworks/body-parser/index.mjs +2 -0
  66. package/lib/frameworks/body-parser/index.mjs.map +1 -0
  67. package/lib/frameworks/cors/index.cjs +5 -0
  68. package/lib/frameworks/cors/index.cjs.map +1 -0
  69. package/lib/frameworks/cors/{cors.framework.d.ts → index.d.cts} +6 -5
  70. package/lib/frameworks/cors/index.d.ts +79 -2
  71. package/lib/frameworks/cors/index.mjs +3 -0
  72. package/lib/frameworks/cors/index.mjs.map +1 -0
  73. package/lib/frameworks/deepkit/index.cjs +4 -0
  74. package/lib/frameworks/deepkit/index.cjs.map +1 -0
  75. package/lib/frameworks/deepkit/{http-deepkit.framework.d.ts → index.d.cts} +8 -5
  76. package/lib/frameworks/deepkit/index.d.ts +21 -2
  77. package/lib/frameworks/deepkit/index.mjs +2 -0
  78. package/lib/frameworks/deepkit/index.mjs.map +1 -0
  79. package/lib/frameworks/express/index.cjs +2 -0
  80. package/lib/frameworks/express/index.cjs.map +1 -0
  81. package/lib/frameworks/express/{express.framework.d.ts → index.d.cts} +6 -5
  82. package/lib/frameworks/express/index.d.ts +18 -2
  83. package/lib/frameworks/express/index.mjs +2 -0
  84. package/lib/frameworks/express/index.mjs.map +1 -0
  85. package/lib/frameworks/fastify/index.cjs +2 -0
  86. package/lib/frameworks/fastify/index.cjs.map +1 -0
  87. package/lib/frameworks/fastify/{fastify.framework.d.ts → index.d.cts} +6 -5
  88. package/lib/frameworks/fastify/index.d.ts +18 -2
  89. package/lib/frameworks/fastify/index.mjs +2 -0
  90. package/lib/frameworks/fastify/index.mjs.map +1 -0
  91. package/lib/frameworks/hapi/index.cjs +2 -0
  92. package/lib/frameworks/hapi/index.cjs.map +1 -0
  93. package/lib/frameworks/hapi/{hapi.framework.d.ts → index.d.cts} +6 -5
  94. package/lib/frameworks/hapi/index.d.ts +18 -2
  95. package/lib/frameworks/hapi/index.mjs +2 -0
  96. package/lib/frameworks/hapi/index.mjs.map +1 -0
  97. package/lib/frameworks/koa/index.cjs +2 -0
  98. package/lib/frameworks/koa/index.cjs.map +1 -0
  99. package/lib/frameworks/koa/{koa.framework.d.ts → index.d.cts} +6 -5
  100. package/lib/frameworks/koa/index.d.ts +18 -2
  101. package/lib/frameworks/koa/index.mjs +2 -0
  102. package/lib/frameworks/koa/index.mjs.map +1 -0
  103. package/lib/frameworks/lazy/index.cjs +4 -0
  104. package/lib/frameworks/lazy/index.cjs.map +1 -0
  105. package/lib/frameworks/lazy/{lazy.framework.d.ts → index.d.cts} +7 -6
  106. package/lib/frameworks/lazy/index.d.ts +57 -2
  107. package/lib/frameworks/lazy/index.mjs +2 -0
  108. package/lib/frameworks/lazy/index.mjs.map +1 -0
  109. package/lib/frameworks/trpc/index.cjs +4 -0
  110. package/lib/frameworks/trpc/index.cjs.map +1 -0
  111. package/lib/frameworks/trpc/{trpc.framework.d.ts → index.d.cts} +12 -11
  112. package/lib/frameworks/trpc/index.d.ts +154 -2
  113. package/lib/frameworks/trpc/index.mjs +2 -0
  114. package/lib/frameworks/trpc/index.mjs.map +1 -0
  115. package/lib/handler.contract-8Cb7qLSi.d.ts +66 -0
  116. package/lib/handler.contract-TQk8iM8f.d.cts +66 -0
  117. package/lib/handlers/aws/index.cjs +10 -0
  118. package/lib/handlers/aws/index.cjs.map +1 -0
  119. package/lib/handlers/aws/{aws-stream.handler.d.ts → index.d.cts} +22 -15
  120. package/lib/handlers/aws/index.d.ts +96 -2
  121. package/lib/handlers/aws/index.mjs +2 -0
  122. package/lib/handlers/aws/index.mjs.map +1 -0
  123. package/lib/handlers/azure/index.cjs +4 -0
  124. package/lib/handlers/azure/index.cjs.map +1 -0
  125. package/lib/handlers/azure/{azure.handler.d.ts → index.d.cts} +16 -8
  126. package/lib/handlers/azure/index.d.ts +53 -2
  127. package/lib/handlers/azure/index.mjs +2 -0
  128. package/lib/handlers/azure/index.mjs.map +1 -0
  129. package/lib/handlers/default/index.cjs +4 -0
  130. package/lib/handlers/default/index.cjs.map +1 -0
  131. package/lib/handlers/default/{default.handler.d.ts → index.d.cts} +13 -6
  132. package/lib/handlers/default/index.d.ts +95 -2
  133. package/lib/handlers/default/index.mjs +2 -0
  134. package/lib/handlers/default/index.mjs.map +1 -0
  135. package/lib/handlers/digital-ocean/index.cjs +4 -0
  136. package/lib/handlers/digital-ocean/index.cjs.map +1 -0
  137. package/lib/handlers/digital-ocean/index.d.cts +25 -0
  138. package/lib/handlers/digital-ocean/index.d.ts +25 -2
  139. package/lib/handlers/digital-ocean/index.mjs +2 -0
  140. package/lib/handlers/digital-ocean/index.mjs.map +1 -0
  141. package/lib/handlers/firebase/index.cjs +4 -0
  142. package/lib/handlers/firebase/index.cjs.map +1 -0
  143. package/lib/handlers/firebase/index.d.cts +59 -0
  144. package/lib/handlers/firebase/index.d.ts +59 -3
  145. package/lib/handlers/firebase/index.mjs +2 -0
  146. package/lib/handlers/firebase/index.mjs.map +1 -0
  147. package/lib/handlers/gcp/index.cjs +4 -0
  148. package/lib/handlers/gcp/index.cjs.map +1 -0
  149. package/lib/handlers/gcp/{gcp.handler.d.ts → index.d.cts} +12 -5
  150. package/lib/handlers/gcp/index.d.ts +33 -2
  151. package/lib/handlers/gcp/index.mjs +2 -0
  152. package/lib/handlers/gcp/index.mjs.map +1 -0
  153. package/lib/handlers/huawei/index.cjs +4 -0
  154. package/lib/handlers/huawei/index.cjs.map +1 -0
  155. package/lib/handlers/huawei/{http-huawei.handler.d.ts → index.d.cts} +15 -12
  156. package/lib/handlers/huawei/index.d.ts +62 -2
  157. package/lib/handlers/huawei/index.mjs +2 -0
  158. package/lib/handlers/huawei/index.mjs.map +1 -0
  159. package/lib/{@types/headers.d.ts → headers-K2qbcurv.d.cts} +5 -4
  160. package/lib/headers-K2qbcurv.d.ts +38 -0
  161. package/lib/index.cjs +10 -0
  162. package/lib/index.cjs.map +1 -0
  163. package/lib/index.d.cts +439 -0
  164. package/lib/index.d.ts +439 -6
  165. package/lib/index.mjs +2 -0
  166. package/lib/index.mjs.map +1 -0
  167. package/lib/{core/logger.d.ts → logger-9me5n48P.d.cts} +8 -7
  168. package/lib/logger-9me5n48P.d.ts +65 -0
  169. package/lib/{core/path.d.ts → path-yBwCb8C1.d.cts} +16 -5
  170. package/lib/path-yBwCb8C1.d.ts +64 -0
  171. package/lib/{handlers/base/raw-request.d.ts → raw-request-B2vPjAfE.d.cts} +6 -5
  172. package/lib/raw-request-b6AYnkxd.d.ts +32 -0
  173. package/lib/{network/request.d.ts → request-DNNIV9ub.d.cts} +7 -7
  174. package/lib/request-sVa4pxmx.d.ts +44 -0
  175. package/lib/resolvers/aws-context/index.cjs +2 -0
  176. package/lib/resolvers/aws-context/index.cjs.map +1 -0
  177. package/lib/resolvers/aws-context/{aws-context.resolver.d.ts → index.d.cts} +10 -4
  178. package/lib/resolvers/aws-context/index.d.ts +25 -2
  179. package/lib/resolvers/aws-context/index.mjs +2 -0
  180. package/lib/resolvers/aws-context/index.mjs.map +1 -0
  181. package/lib/resolvers/callback/index.cjs +2 -0
  182. package/lib/resolvers/callback/index.cjs.map +1 -0
  183. package/lib/resolvers/callback/{callback.resolver.d.ts → index.d.cts} +10 -4
  184. package/lib/resolvers/callback/index.d.ts +29 -2
  185. package/lib/resolvers/callback/index.mjs +2 -0
  186. package/lib/resolvers/callback/index.mjs.map +1 -0
  187. package/lib/resolvers/dummy/index.cjs +2 -0
  188. package/lib/resolvers/dummy/index.cjs.map +1 -0
  189. package/lib/resolvers/dummy/index.d.cts +20 -0
  190. package/lib/resolvers/dummy/index.d.ts +20 -2
  191. package/lib/resolvers/dummy/index.mjs +2 -0
  192. package/lib/resolvers/dummy/index.mjs.map +1 -0
  193. package/lib/resolvers/promise/index.cjs +2 -0
  194. package/lib/resolvers/promise/index.cjs.map +1 -0
  195. package/lib/resolvers/promise/index.d.cts +20 -0
  196. package/lib/resolvers/promise/index.d.ts +20 -2
  197. package/lib/resolvers/promise/index.mjs +2 -0
  198. package/lib/resolvers/promise/index.mjs.map +1 -0
  199. package/package.json +565 -7
  200. package/lib/@types/binary-settings.d.ts +0 -41
  201. package/lib/@types/binary-settings.d.ts.map +0 -1
  202. package/lib/@types/binary-settings.js +0 -2
  203. package/lib/@types/binary-settings.js.map +0 -1
  204. package/lib/@types/digital-ocean/digital-ocean-http-event.d.ts +0 -37
  205. package/lib/@types/digital-ocean/digital-ocean-http-event.d.ts.map +0 -1
  206. package/lib/@types/digital-ocean/digital-ocean-http-event.js +0 -2
  207. package/lib/@types/digital-ocean/digital-ocean-http-event.js.map +0 -1
  208. package/lib/@types/digital-ocean/digital-ocean-http-response.d.ts +0 -22
  209. package/lib/@types/digital-ocean/digital-ocean-http-response.d.ts.map +0 -1
  210. package/lib/@types/digital-ocean/digital-ocean-http-response.js +0 -2
  211. package/lib/@types/digital-ocean/digital-ocean-http-response.js.map +0 -1
  212. package/lib/@types/digital-ocean/index.d.ts +0 -2
  213. package/lib/@types/digital-ocean/index.d.ts.map +0 -1
  214. package/lib/@types/digital-ocean/index.js +0 -2
  215. package/lib/@types/digital-ocean/index.js.map +0 -1
  216. package/lib/@types/headers.d.ts.map +0 -1
  217. package/lib/@types/headers.js +0 -2
  218. package/lib/@types/headers.js.map +0 -1
  219. package/lib/@types/helpers.d.ts +0 -10
  220. package/lib/@types/helpers.d.ts.map +0 -1
  221. package/lib/@types/helpers.js +0 -2
  222. package/lib/@types/helpers.js.map +0 -1
  223. package/lib/@types/huawei/huawei-api-gateway-event.d.ts +0 -81
  224. package/lib/@types/huawei/huawei-api-gateway-event.d.ts.map +0 -1
  225. package/lib/@types/huawei/huawei-api-gateway-event.js +0 -2
  226. package/lib/@types/huawei/huawei-api-gateway-event.js.map +0 -1
  227. package/lib/@types/huawei/huawei-api-gateway-response.d.ts +0 -27
  228. package/lib/@types/huawei/huawei-api-gateway-response.d.ts.map +0 -1
  229. package/lib/@types/huawei/huawei-api-gateway-response.js +0 -2
  230. package/lib/@types/huawei/huawei-api-gateway-response.js.map +0 -1
  231. package/lib/@types/huawei/huawei-context.d.ts +0 -188
  232. package/lib/@types/huawei/huawei-context.d.ts.map +0 -1
  233. package/lib/@types/huawei/huawei-context.js +0 -2
  234. package/lib/@types/huawei/huawei-context.js.map +0 -1
  235. package/lib/@types/huawei/index.d.ts +0 -4
  236. package/lib/@types/huawei/index.d.ts.map +0 -1
  237. package/lib/@types/huawei/index.js +0 -2
  238. package/lib/@types/huawei/index.js.map +0 -1
  239. package/lib/@types/index.d.ts +0 -4
  240. package/lib/@types/index.d.ts.map +0 -1
  241. package/lib/@types/index.js +0 -2
  242. package/lib/@types/index.js.map +0 -1
  243. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.d.ts.map +0 -1
  244. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js +0 -2
  245. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js.map +0 -1
  246. package/lib/adapters/apollo-server/index.d.ts.map +0 -1
  247. package/lib/adapters/apollo-server/index.js +0 -2
  248. package/lib/adapters/apollo-server/index.js.map +0 -1
  249. package/lib/adapters/aws/alb.adapter.d.ts +0 -71
  250. package/lib/adapters/aws/alb.adapter.d.ts.map +0 -1
  251. package/lib/adapters/aws/alb.adapter.js +0 -2
  252. package/lib/adapters/aws/alb.adapter.js.map +0 -1
  253. package/lib/adapters/aws/api-gateway-v1.adapter.d.ts +0 -76
  254. package/lib/adapters/aws/api-gateway-v1.adapter.d.ts.map +0 -1
  255. package/lib/adapters/aws/api-gateway-v1.adapter.js +0 -2
  256. package/lib/adapters/aws/api-gateway-v1.adapter.js.map +0 -1
  257. package/lib/adapters/aws/api-gateway-v2.adapter.d.ts +0 -75
  258. package/lib/adapters/aws/api-gateway-v2.adapter.d.ts.map +0 -1
  259. package/lib/adapters/aws/api-gateway-v2.adapter.js +0 -2
  260. package/lib/adapters/aws/api-gateway-v2.adapter.js.map +0 -1
  261. package/lib/adapters/aws/base/aws-simple-adapter.d.ts +0 -83
  262. package/lib/adapters/aws/base/aws-simple-adapter.d.ts.map +0 -1
  263. package/lib/adapters/aws/base/aws-simple-adapter.js +0 -2
  264. package/lib/adapters/aws/base/aws-simple-adapter.js.map +0 -1
  265. package/lib/adapters/aws/base/index.d.ts +0 -2
  266. package/lib/adapters/aws/base/index.d.ts.map +0 -1
  267. package/lib/adapters/aws/base/index.js +0 -2
  268. package/lib/adapters/aws/base/index.js.map +0 -1
  269. package/lib/adapters/aws/dynamodb.adapter.d.ts +0 -56
  270. package/lib/adapters/aws/dynamodb.adapter.d.ts.map +0 -1
  271. package/lib/adapters/aws/dynamodb.adapter.js +0 -2
  272. package/lib/adapters/aws/dynamodb.adapter.js.map +0 -1
  273. package/lib/adapters/aws/event-bridge.adapter.d.ts +0 -63
  274. package/lib/adapters/aws/event-bridge.adapter.d.ts.map +0 -1
  275. package/lib/adapters/aws/event-bridge.adapter.js +0 -2
  276. package/lib/adapters/aws/event-bridge.adapter.js.map +0 -1
  277. package/lib/adapters/aws/index.d.ts.map +0 -1
  278. package/lib/adapters/aws/index.js +0 -2
  279. package/lib/adapters/aws/index.js.map +0 -1
  280. package/lib/adapters/aws/lambda-edge.adapter.d.ts +0 -209
  281. package/lib/adapters/aws/lambda-edge.adapter.d.ts.map +0 -1
  282. package/lib/adapters/aws/lambda-edge.adapter.js +0 -2
  283. package/lib/adapters/aws/lambda-edge.adapter.js.map +0 -1
  284. package/lib/adapters/aws/request-lambda-edge.adapter.d.ts +0 -131
  285. package/lib/adapters/aws/request-lambda-edge.adapter.d.ts.map +0 -1
  286. package/lib/adapters/aws/request-lambda-edge.adapter.js +0 -2
  287. package/lib/adapters/aws/request-lambda-edge.adapter.js.map +0 -1
  288. package/lib/adapters/aws/s3.adapter.d.ts +0 -56
  289. package/lib/adapters/aws/s3.adapter.d.ts.map +0 -1
  290. package/lib/adapters/aws/s3.adapter.js +0 -2
  291. package/lib/adapters/aws/s3.adapter.js.map +0 -1
  292. package/lib/adapters/aws/sns.adapter.d.ts +0 -56
  293. package/lib/adapters/aws/sns.adapter.d.ts.map +0 -1
  294. package/lib/adapters/aws/sns.adapter.js +0 -2
  295. package/lib/adapters/aws/sns.adapter.js.map +0 -1
  296. package/lib/adapters/aws/sqs.adapter.d.ts +0 -56
  297. package/lib/adapters/aws/sqs.adapter.d.ts.map +0 -1
  298. package/lib/adapters/aws/sqs.adapter.js +0 -2
  299. package/lib/adapters/aws/sqs.adapter.js.map +0 -1
  300. package/lib/adapters/azure/http-trigger-v4.adapter.d.ts.map +0 -1
  301. package/lib/adapters/azure/http-trigger-v4.adapter.js +0 -2
  302. package/lib/adapters/azure/http-trigger-v4.adapter.js.map +0 -1
  303. package/lib/adapters/azure/index.d.ts.map +0 -1
  304. package/lib/adapters/azure/index.js +0 -2
  305. package/lib/adapters/azure/index.js.map +0 -1
  306. package/lib/adapters/digital-ocean/http-function.adapter.d.ts +0 -65
  307. package/lib/adapters/digital-ocean/http-function.adapter.d.ts.map +0 -1
  308. package/lib/adapters/digital-ocean/http-function.adapter.js +0 -2
  309. package/lib/adapters/digital-ocean/http-function.adapter.js.map +0 -1
  310. package/lib/adapters/digital-ocean/index.d.ts.map +0 -1
  311. package/lib/adapters/digital-ocean/index.js +0 -2
  312. package/lib/adapters/digital-ocean/index.js.map +0 -1
  313. package/lib/adapters/dummy/dummy.adapter.d.ts.map +0 -1
  314. package/lib/adapters/dummy/dummy.adapter.js +0 -2
  315. package/lib/adapters/dummy/dummy.adapter.js.map +0 -1
  316. package/lib/adapters/dummy/index.d.ts.map +0 -1
  317. package/lib/adapters/dummy/index.js +0 -2
  318. package/lib/adapters/dummy/index.js.map +0 -1
  319. package/lib/adapters/huawei/huawei-api-gateway.adapter.d.ts +0 -66
  320. package/lib/adapters/huawei/huawei-api-gateway.adapter.d.ts.map +0 -1
  321. package/lib/adapters/huawei/huawei-api-gateway.adapter.js +0 -2
  322. package/lib/adapters/huawei/huawei-api-gateway.adapter.js.map +0 -1
  323. package/lib/adapters/huawei/index.d.ts.map +0 -1
  324. package/lib/adapters/huawei/index.js +0 -2
  325. package/lib/adapters/huawei/index.js.map +0 -1
  326. package/lib/contracts/adapter.contract.d.ts +0 -152
  327. package/lib/contracts/adapter.contract.d.ts.map +0 -1
  328. package/lib/contracts/adapter.contract.js +0 -2
  329. package/lib/contracts/adapter.contract.js.map +0 -1
  330. package/lib/contracts/framework.contract.d.ts.map +0 -1
  331. package/lib/contracts/framework.contract.js +0 -2
  332. package/lib/contracts/framework.contract.js.map +0 -1
  333. package/lib/contracts/handler.contract.d.ts +0 -25
  334. package/lib/contracts/handler.contract.d.ts.map +0 -1
  335. package/lib/contracts/handler.contract.js +0 -2
  336. package/lib/contracts/handler.contract.js.map +0 -1
  337. package/lib/contracts/index.d.ts +0 -5
  338. package/lib/contracts/index.d.ts.map +0 -1
  339. package/lib/contracts/index.js +0 -2
  340. package/lib/contracts/index.js.map +0 -1
  341. package/lib/contracts/resolver.contract.d.ts +0 -83
  342. package/lib/contracts/resolver.contract.d.ts.map +0 -1
  343. package/lib/contracts/resolver.contract.js +0 -2
  344. package/lib/contracts/resolver.contract.js.map +0 -1
  345. package/lib/core/base-handler.d.ts.map +0 -1
  346. package/lib/core/base-handler.js +0 -2
  347. package/lib/core/base-handler.js.map +0 -1
  348. package/lib/core/constants.d.ts.map +0 -1
  349. package/lib/core/constants.js +0 -2
  350. package/lib/core/constants.js.map +0 -1
  351. package/lib/core/current-invoke.d.ts +0 -48
  352. package/lib/core/current-invoke.d.ts.map +0 -1
  353. package/lib/core/current-invoke.js +0 -2
  354. package/lib/core/current-invoke.js.map +0 -1
  355. package/lib/core/event-body.d.ts +0 -22
  356. package/lib/core/event-body.d.ts.map +0 -1
  357. package/lib/core/event-body.js +0 -2
  358. package/lib/core/event-body.js.map +0 -1
  359. package/lib/core/headers.d.ts +0 -73
  360. package/lib/core/headers.d.ts.map +0 -1
  361. package/lib/core/headers.js +0 -3
  362. package/lib/core/headers.js.map +0 -1
  363. package/lib/core/index.d.ts +0 -12
  364. package/lib/core/index.d.ts.map +0 -1
  365. package/lib/core/index.js +0 -2
  366. package/lib/core/index.js.map +0 -1
  367. package/lib/core/is-binary.d.ts +0 -73
  368. package/lib/core/is-binary.d.ts.map +0 -1
  369. package/lib/core/is-binary.js +0 -2
  370. package/lib/core/is-binary.js.map +0 -1
  371. package/lib/core/logger.d.ts.map +0 -1
  372. package/lib/core/logger.js +0 -2
  373. package/lib/core/logger.js.map +0 -1
  374. package/lib/core/no-op.d.ts +0 -8
  375. package/lib/core/no-op.d.ts.map +0 -1
  376. package/lib/core/no-op.js +0 -2
  377. package/lib/core/no-op.js.map +0 -1
  378. package/lib/core/optional.d.ts +0 -22
  379. package/lib/core/optional.d.ts.map +0 -1
  380. package/lib/core/optional.js +0 -2
  381. package/lib/core/optional.js.map +0 -1
  382. package/lib/core/path.d.ts.map +0 -1
  383. package/lib/core/path.js +0 -2
  384. package/lib/core/path.js.map +0 -1
  385. package/lib/core/stream.d.ts +0 -21
  386. package/lib/core/stream.d.ts.map +0 -1
  387. package/lib/core/stream.js +0 -2
  388. package/lib/core/stream.js.map +0 -1
  389. package/lib/frameworks/apollo-server/apollo-server.framework.d.ts.map +0 -1
  390. package/lib/frameworks/apollo-server/apollo-server.framework.js +0 -2
  391. package/lib/frameworks/apollo-server/apollo-server.framework.js.map +0 -1
  392. package/lib/frameworks/apollo-server/index.d.ts.map +0 -1
  393. package/lib/frameworks/apollo-server/index.js +0 -2
  394. package/lib/frameworks/apollo-server/index.js.map +0 -1
  395. package/lib/frameworks/body-parser/base-body-parser.framework.d.ts +0 -69
  396. package/lib/frameworks/body-parser/base-body-parser.framework.d.ts.map +0 -1
  397. package/lib/frameworks/body-parser/base-body-parser.framework.js +0 -2
  398. package/lib/frameworks/body-parser/base-body-parser.framework.js.map +0 -1
  399. package/lib/frameworks/body-parser/index.d.ts.map +0 -1
  400. package/lib/frameworks/body-parser/index.js +0 -2
  401. package/lib/frameworks/body-parser/index.js.map +0 -1
  402. package/lib/frameworks/body-parser/json-body-parser.framework.d.ts +0 -26
  403. package/lib/frameworks/body-parser/json-body-parser.framework.d.ts.map +0 -1
  404. package/lib/frameworks/body-parser/json-body-parser.framework.js +0 -2
  405. package/lib/frameworks/body-parser/json-body-parser.framework.js.map +0 -1
  406. package/lib/frameworks/body-parser/raw-body-parser.framework.d.ts +0 -26
  407. package/lib/frameworks/body-parser/raw-body-parser.framework.d.ts.map +0 -1
  408. package/lib/frameworks/body-parser/raw-body-parser.framework.js +0 -2
  409. package/lib/frameworks/body-parser/raw-body-parser.framework.js.map +0 -1
  410. package/lib/frameworks/body-parser/text-body-parser.framework.d.ts +0 -26
  411. package/lib/frameworks/body-parser/text-body-parser.framework.d.ts.map +0 -1
  412. package/lib/frameworks/body-parser/text-body-parser.framework.js +0 -2
  413. package/lib/frameworks/body-parser/text-body-parser.framework.js.map +0 -1
  414. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.d.ts +0 -26
  415. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.d.ts.map +0 -1
  416. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js +0 -2
  417. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js.map +0 -1
  418. package/lib/frameworks/cors/cors.framework.d.ts.map +0 -1
  419. package/lib/frameworks/cors/cors.framework.js +0 -3
  420. package/lib/frameworks/cors/cors.framework.js.map +0 -1
  421. package/lib/frameworks/cors/index.d.ts.map +0 -1
  422. package/lib/frameworks/cors/index.js +0 -2
  423. package/lib/frameworks/cors/index.js.map +0 -1
  424. package/lib/frameworks/deepkit/http-deepkit.framework.d.ts.map +0 -1
  425. package/lib/frameworks/deepkit/http-deepkit.framework.js +0 -2
  426. package/lib/frameworks/deepkit/http-deepkit.framework.js.map +0 -1
  427. package/lib/frameworks/deepkit/index.d.ts.map +0 -1
  428. package/lib/frameworks/deepkit/index.js +0 -2
  429. package/lib/frameworks/deepkit/index.js.map +0 -1
  430. package/lib/frameworks/express/express.framework.d.ts.map +0 -1
  431. package/lib/frameworks/express/express.framework.js +0 -2
  432. package/lib/frameworks/express/express.framework.js.map +0 -1
  433. package/lib/frameworks/express/index.d.ts.map +0 -1
  434. package/lib/frameworks/express/index.js +0 -2
  435. package/lib/frameworks/express/index.js.map +0 -1
  436. package/lib/frameworks/fastify/fastify.framework.d.ts.map +0 -1
  437. package/lib/frameworks/fastify/fastify.framework.js +0 -2
  438. package/lib/frameworks/fastify/fastify.framework.js.map +0 -1
  439. package/lib/frameworks/fastify/helpers/no-op-content-parser.d.ts +0 -14
  440. package/lib/frameworks/fastify/helpers/no-op-content-parser.d.ts.map +0 -1
  441. package/lib/frameworks/fastify/helpers/no-op-content-parser.js +0 -2
  442. package/lib/frameworks/fastify/helpers/no-op-content-parser.js.map +0 -1
  443. package/lib/frameworks/fastify/index.d.ts.map +0 -1
  444. package/lib/frameworks/fastify/index.js +0 -2
  445. package/lib/frameworks/fastify/index.js.map +0 -1
  446. package/lib/frameworks/hapi/hapi.framework.d.ts.map +0 -1
  447. package/lib/frameworks/hapi/hapi.framework.js +0 -2
  448. package/lib/frameworks/hapi/hapi.framework.js.map +0 -1
  449. package/lib/frameworks/hapi/index.d.ts.map +0 -1
  450. package/lib/frameworks/hapi/index.js +0 -2
  451. package/lib/frameworks/hapi/index.js.map +0 -1
  452. package/lib/frameworks/koa/index.d.ts.map +0 -1
  453. package/lib/frameworks/koa/index.js +0 -2
  454. package/lib/frameworks/koa/index.js.map +0 -1
  455. package/lib/frameworks/koa/koa.framework.d.ts.map +0 -1
  456. package/lib/frameworks/koa/koa.framework.js +0 -2
  457. package/lib/frameworks/koa/koa.framework.js.map +0 -1
  458. package/lib/frameworks/lazy/index.d.ts.map +0 -1
  459. package/lib/frameworks/lazy/index.js +0 -2
  460. package/lib/frameworks/lazy/index.js.map +0 -1
  461. package/lib/frameworks/lazy/lazy.framework.d.ts.map +0 -1
  462. package/lib/frameworks/lazy/lazy.framework.js +0 -2
  463. package/lib/frameworks/lazy/lazy.framework.js.map +0 -1
  464. package/lib/frameworks/trpc/index.d.ts.map +0 -1
  465. package/lib/frameworks/trpc/index.js +0 -2
  466. package/lib/frameworks/trpc/index.js.map +0 -1
  467. package/lib/frameworks/trpc/trpc.framework.d.ts.map +0 -1
  468. package/lib/frameworks/trpc/trpc.framework.js +0 -2
  469. package/lib/frameworks/trpc/trpc.framework.js.map +0 -1
  470. package/lib/handlers/aws/aws-stream.handler.d.ts.map +0 -1
  471. package/lib/handlers/aws/aws-stream.handler.js +0 -2
  472. package/lib/handlers/aws/aws-stream.handler.js.map +0 -1
  473. package/lib/handlers/aws/index.d.ts.map +0 -1
  474. package/lib/handlers/aws/index.js +0 -2
  475. package/lib/handlers/aws/index.js.map +0 -1
  476. package/lib/handlers/azure/azure.handler.d.ts.map +0 -1
  477. package/lib/handlers/azure/azure.handler.js +0 -2
  478. package/lib/handlers/azure/azure.handler.js.map +0 -1
  479. package/lib/handlers/azure/index.d.ts.map +0 -1
  480. package/lib/handlers/azure/index.js +0 -2
  481. package/lib/handlers/azure/index.js.map +0 -1
  482. package/lib/handlers/base/index.d.ts +0 -2
  483. package/lib/handlers/base/index.d.ts.map +0 -1
  484. package/lib/handlers/base/index.js +0 -2
  485. package/lib/handlers/base/index.js.map +0 -1
  486. package/lib/handlers/base/raw-request.d.ts.map +0 -1
  487. package/lib/handlers/base/raw-request.js +0 -2
  488. package/lib/handlers/base/raw-request.js.map +0 -1
  489. package/lib/handlers/default/default.handler.d.ts.map +0 -1
  490. package/lib/handlers/default/default.handler.js +0 -2
  491. package/lib/handlers/default/default.handler.js.map +0 -1
  492. package/lib/handlers/default/index.d.ts.map +0 -1
  493. package/lib/handlers/default/index.js +0 -2
  494. package/lib/handlers/default/index.js.map +0 -1
  495. package/lib/handlers/digital-ocean/digital-ocean.handler.d.ts +0 -17
  496. package/lib/handlers/digital-ocean/digital-ocean.handler.d.ts.map +0 -1
  497. package/lib/handlers/digital-ocean/digital-ocean.handler.js +0 -2
  498. package/lib/handlers/digital-ocean/digital-ocean.handler.js.map +0 -1
  499. package/lib/handlers/digital-ocean/index.d.ts.map +0 -1
  500. package/lib/handlers/digital-ocean/index.js +0 -2
  501. package/lib/handlers/digital-ocean/index.js.map +0 -1
  502. package/lib/handlers/firebase/http-firebase-v2.handler.d.ts +0 -27
  503. package/lib/handlers/firebase/http-firebase-v2.handler.d.ts.map +0 -1
  504. package/lib/handlers/firebase/http-firebase-v2.handler.js +0 -2
  505. package/lib/handlers/firebase/http-firebase-v2.handler.js.map +0 -1
  506. package/lib/handlers/firebase/http-firebase.handler.d.ts +0 -19
  507. package/lib/handlers/firebase/http-firebase.handler.d.ts.map +0 -1
  508. package/lib/handlers/firebase/http-firebase.handler.js +0 -2
  509. package/lib/handlers/firebase/http-firebase.handler.js.map +0 -1
  510. package/lib/handlers/firebase/index.d.ts.map +0 -1
  511. package/lib/handlers/firebase/index.js +0 -2
  512. package/lib/handlers/firebase/index.js.map +0 -1
  513. package/lib/handlers/gcp/gcp.handler.d.ts.map +0 -1
  514. package/lib/handlers/gcp/gcp.handler.js +0 -2
  515. package/lib/handlers/gcp/gcp.handler.js.map +0 -1
  516. package/lib/handlers/gcp/index.d.ts.map +0 -1
  517. package/lib/handlers/gcp/index.js +0 -2
  518. package/lib/handlers/gcp/index.js.map +0 -1
  519. package/lib/handlers/huawei/http-huawei.handler.d.ts.map +0 -1
  520. package/lib/handlers/huawei/http-huawei.handler.js +0 -2
  521. package/lib/handlers/huawei/http-huawei.handler.js.map +0 -1
  522. package/lib/handlers/huawei/index.d.ts.map +0 -1
  523. package/lib/handlers/huawei/index.js +0 -2
  524. package/lib/handlers/huawei/index.js.map +0 -1
  525. package/lib/index.d.ts.map +0 -1
  526. package/lib/index.doc.js +0 -2
  527. package/lib/index.doc.js.map +0 -1
  528. package/lib/index.js +0 -2
  529. package/lib/index.js.map +0 -1
  530. package/lib/network/index.d.ts +0 -5
  531. package/lib/network/index.d.ts.map +0 -1
  532. package/lib/network/index.js +0 -2
  533. package/lib/network/index.js.map +0 -1
  534. package/lib/network/request.d.ts.map +0 -1
  535. package/lib/network/request.js +0 -2
  536. package/lib/network/request.js.map +0 -1
  537. package/lib/network/response-stream.d.ts +0 -41
  538. package/lib/network/response-stream.d.ts.map +0 -1
  539. package/lib/network/response-stream.js +0 -7
  540. package/lib/network/response-stream.js.map +0 -1
  541. package/lib/network/response.d.ts +0 -48
  542. package/lib/network/response.d.ts.map +0 -1
  543. package/lib/network/response.js +0 -4
  544. package/lib/network/response.js.map +0 -1
  545. package/lib/network/utils.d.ts +0 -9
  546. package/lib/network/utils.d.ts.map +0 -1
  547. package/lib/network/utils.js +0 -2
  548. package/lib/network/utils.js.map +0 -1
  549. package/lib/resolvers/aws-context/aws-context.resolver.d.ts.map +0 -1
  550. package/lib/resolvers/aws-context/aws-context.resolver.js +0 -2
  551. package/lib/resolvers/aws-context/aws-context.resolver.js.map +0 -1
  552. package/lib/resolvers/aws-context/index.d.ts.map +0 -1
  553. package/lib/resolvers/aws-context/index.js +0 -2
  554. package/lib/resolvers/aws-context/index.js.map +0 -1
  555. package/lib/resolvers/callback/callback.resolver.d.ts.map +0 -1
  556. package/lib/resolvers/callback/callback.resolver.js +0 -2
  557. package/lib/resolvers/callback/callback.resolver.js.map +0 -1
  558. package/lib/resolvers/callback/index.d.ts.map +0 -1
  559. package/lib/resolvers/callback/index.js +0 -2
  560. package/lib/resolvers/callback/index.js.map +0 -1
  561. package/lib/resolvers/dummy/dummy.resolver.d.ts +0 -14
  562. package/lib/resolvers/dummy/dummy.resolver.d.ts.map +0 -1
  563. package/lib/resolvers/dummy/dummy.resolver.js +0 -2
  564. package/lib/resolvers/dummy/dummy.resolver.js.map +0 -1
  565. package/lib/resolvers/dummy/index.d.ts.map +0 -1
  566. package/lib/resolvers/dummy/index.js +0 -2
  567. package/lib/resolvers/dummy/index.js.map +0 -1
  568. package/lib/resolvers/promise/index.d.ts.map +0 -1
  569. package/lib/resolvers/promise/index.js +0 -2
  570. package/lib/resolvers/promise/index.js.map +0 -1
  571. package/lib/resolvers/promise/promise.resolver.d.ts +0 -14
  572. package/lib/resolvers/promise/promise.resolver.d.ts.map +0 -1
  573. package/lib/resolvers/promise/promise.resolver.js +0 -2
  574. package/lib/resolvers/promise/promise.resolver.js.map +0 -1
  575. package/lib/serverless-adapter.d.ts +0 -119
  576. package/lib/serverless-adapter.d.ts.map +0 -1
  577. package/lib/serverless-adapter.js +0 -2
  578. package/lib/serverless-adapter.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/network/request.ts","../src/core/base-handler.ts","../src/core/constants.ts","../src/core/current-invoke.ts","../src/core/event-body.ts","../src/core/headers.ts","../src/core/is-binary.ts","../src/core/no-op.ts","../src/core/logger.ts","../src/core/optional.ts","../src/core/path.ts","../src/core/stream.ts","../src/network/response.ts","../src/network/utils.ts","../src/network/response-stream.ts","../src/serverless-adapter.ts"],"sourcesContent":["export * from './@types';\nexport * from './contracts';\nexport * from './core';\nexport * from './network';\nexport * from './serverless-adapter';\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport type { SingleValueHeaders } from '../@types';\nimport { NO_OP } from '../core';\n\nconst HTTPS_PORT = 443;\n\n/**\n * The properties to create a {@link ServerlessRequest}\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport interface ServerlessRequestProps {\n /**\n * The HTTP Method of the request\n */\n method: string;\n\n /**\n * The URL requested\n */\n url: string;\n\n /**\n * The headers from the event source\n */\n headers: SingleValueHeaders;\n\n /**\n * The body from the event source\n */\n body?: Buffer | Uint8Array;\n\n /**\n * The IP Address from caller\n */\n remoteAddress?: string;\n}\n\n/**\n * The class that represents an {@link http#IncomingMessage} created by the library to represent an actual request to the framework.\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport class ServerlessRequest extends IncomingMessage {\n constructor({\n method,\n url,\n headers,\n body,\n remoteAddress,\n }: ServerlessRequestProps) {\n super({\n encrypted: true,\n readable: false,\n remoteAddress,\n address: () => ({ port: HTTPS_PORT }) as AddressInfo,\n end: NO_OP,\n destroy: NO_OP,\n } as any);\n\n this.statusCode = 200;\n this.statusMessage = 'OK';\n this.complete = true;\n this.httpVersion = '1.1';\n this.httpVersionMajor = 1;\n this.httpVersionMinor = 1;\n this.method = method;\n this.headers = headers;\n this.body = body;\n this.url = url;\n this.ip = remoteAddress;\n\n this._read = () => {\n this.push(body);\n this.push(null);\n };\n }\n\n ip?: string;\n body?: Buffer | Uint8Array;\n}\n","//#region Imports\n\nimport type { BinarySettings } from '../@types';\nimport type {\n AdapterContract,\n AdapterRequest,\n FrameworkContract,\n HandlerContract,\n ResolverContract,\n ServerlessHandler,\n} from '../contracts';\nimport { ServerlessRequest, ServerlessResponse } from '../network';\nimport type { ILogger } from './index';\n\n//#endregion\n\n/**\n * The abstract class that represents the base class for a handler\n *\n * @breadcrumb Core\n * @public\n */\nexport abstract class BaseHandler<\n TApp,\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn,\n> implements\n HandlerContract<TApp, TEvent, TContext, TCallback, TResponse, TReturn>\n{\n //#region Public Methods\n\n /**\n * Get the handler that will handle serverless requests\n */\n public abstract getHandler(\n app: TApp,\n framework: FrameworkContract<TApp>,\n adapters: AdapterContract<TEvent, TContext, TResponse>[],\n resolverFactory: ResolverContract<\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn\n >,\n binarySettings: BinarySettings,\n respondWithErrors: boolean,\n log: ILogger,\n ): ServerlessHandler<TReturn>;\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Get the adapter to handle a specific event and context\n *\n * @param event - The event sent by serverless\n * @param context - The context sent by serverless\n * @param adapters - The list of adapters\n * @param log - The instance of logger\n */\n protected getAdapterByEventAndContext(\n event: TEvent,\n context: TContext,\n adapters: AdapterContract<TEvent, TContext, TResponse>[],\n log: ILogger,\n ): AdapterContract<TEvent, TContext, TResponse> {\n const resolvedAdapters = adapters.filter(adapter =>\n adapter.canHandle(event, context, log),\n );\n\n if (resolvedAdapters.length === 0) {\n throw new Error(\n \"SERVERLESS_ADAPTER: Couldn't find adapter to handle this event.\",\n );\n }\n\n if (resolvedAdapters.length > 1) {\n throw new Error(\n `SERVERLESS_ADAPTER: Two or more adapters was resolved by the event, the adapters are: ${adapters\n .map(adapter => adapter.getAdapterName())\n .join(', ')}.`,\n );\n }\n\n return resolvedAdapters[0];\n }\n\n /**\n * Get serverless request and response frmo the adapter request\n *\n * @param requestValues - The request values from adapter\n */\n protected getServerlessRequestResponseFromAdapterRequest(\n requestValues: AdapterRequest,\n ): [request: ServerlessRequest, response: ServerlessResponse] {\n const request = new ServerlessRequest({\n method: requestValues.method,\n headers: requestValues.headers,\n body: requestValues.body,\n remoteAddress: requestValues.remoteAddress,\n url: requestValues.path,\n });\n\n const response = new ServerlessResponse({\n method: requestValues.method,\n });\n\n return [request, response];\n }\n\n //#endregion\n}\n","/**\n * Default encodings that are treated as binary, they are compared with the `Content-Encoding` header.\n *\n * @breadcrumb Core / Constants\n * @defaultValue ['gzip', 'deflate', 'br']\n * @public\n */\nexport const DEFAULT_BINARY_ENCODINGS: string[] = ['gzip', 'deflate', 'br'];\n\n/**\n * Default content types that are treated as binary, they are compared with the `Content-Type` header.\n *\n * @breadcrumb Core / Constants\n * @defaultValue ['image/png', 'image/jpeg', 'image/jpg', 'image/avif', 'image/bmp', 'image/x-png', 'image/gif', 'image/webp', 'video/mp4', 'application/pdf']\n * @public\n */\nexport const DEFAULT_BINARY_CONTENT_TYPES: string[] = [\n 'image/png',\n 'image/jpeg',\n 'image/jpg',\n 'image/avif',\n 'image/bmp',\n 'image/x-png',\n 'image/gif',\n 'image/webp',\n 'video/mp4',\n 'application/pdf',\n];\n\n/**\n * Type alias for empty response and can be used on some adapters when the adapter does not need to return a response.\n *\n * @breadcrumb Core / Constants\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type IEmptyResponse = {};\n\n/**\n * Constant for empty response and can be used on some adapters when the adapter does not need to return a response.\n *\n * @breadcrumb Core / Constants\n * @public\n */\nexport const EmptyResponse: IEmptyResponse = {};\n","/**\n * The type that represents the object that handles the references to the event created by the serverless trigger or context created by the serverless environment.\n *\n * @breadcrumb Core / Current Invoke\n * @public\n */\nexport type CurrentInvoke<TEvent, TContext> = {\n /**\n * The event created by the serverless trigger\n *\n * @remarks It's only null when you call {@link getCurrentInvoke} outside this library's pipeline.\n */\n event: TEvent | null;\n\n /**\n * The context created by the serverless environment\n *\n * @remarks It's only null when you call {@link getCurrentInvoke} outside this library's pipeline.\n */\n context: TContext | null;\n};\n\nconst currentInvoke: CurrentInvoke<any, any> = {\n context: null,\n event: null,\n};\n\n/**\n * Get the reference to the event created by the serverless trigger or context created by the serverless environment.\n *\n * @example\n * ```typescript\n * import type { ALBEvent, Context } from 'aws-lambda';\n *\n * // inside the method that handles the aws alb request.\n * const { event, context } = getCurrentInvoke<ALBEvent, Context>();\n * ```\n *\n * @breadcrumb Core / Current Invoke\n * @public\n */\nexport function getCurrentInvoke<TEvent = any, TContext = any>(): CurrentInvoke<\n TEvent,\n TContext\n> {\n return currentInvoke;\n}\n\n/**\n * Method that saves to the event created by the serverless trigger or context created by the serverless environment.\n *\n * @remarks This method MUST NOT be called by you, this method MUST only be used internally in this library.\n *\n * @param event - The event created by the serverless trigger\n * @param context - The context created by the serverless environment\n *\n * @breadcrumb Core / Current Invoke\n * @public\n */\nexport function setCurrentInvoke<TEvent = any, TContext = any>({\n event,\n context,\n}: CurrentInvoke<TEvent, TContext>) {\n currentInvoke.event = event;\n currentInvoke.context = context;\n}\n","/**\n * Get the event body as buffer from body string with content length\n *\n * @example\n * ```typescript\n * const body = '{}';\n * const [buffer, contentLength] = getEventBodyAsBuffer(body, false);\n * console.log(buffer);\n * // <Buffer 7b 7d>\n * console.log(contentLength);\n * // 2\n * ```\n *\n * @param body - The body string that can be encoded or not\n * @param isBase64Encoded - Tells if body string is encoded in base64\n *\n * @breadcrumb Core\n * @public\n */\nexport function getEventBodyAsBuffer(\n body: string,\n isBase64Encoded: boolean,\n): [body: Buffer, contentLength: number] {\n const encoding: BufferEncoding = isBase64Encoded ? 'base64' : 'utf8';\n\n const buffer = Buffer.from(body, encoding);\n const contentLength = Buffer.byteLength(buffer, encoding);\n\n return [buffer, contentLength];\n}\n","//#region Imports\n\nimport type { BothValueHeaders } from '../@types';\n\n//#endregion\n\n/**\n * Transform a header map and make sure the value is not an array\n *\n * @example\n * ```typescript\n * const headers = { 'accept-encoding': 'gzip', 'accept-language': ['en-US', 'en;q=0.9'] };\n * const flattenedHeaders = getFlattenedHeadersMap(headers, ',', true);\n * console.log(flattenedHeaders);\n * // { 'accept-encoding': 'gzip', 'accept-language': 'en-US,en;q=0.9' }\n * ```\n *\n * @param headersMap - The initial headers\n * @param separator - The separator used when we join the array of header's value\n * @param lowerCaseKey - Should put all keys in lowercase\n *\n * @breadcrumb Core / Headers\n * @public\n */\nexport function getFlattenedHeadersMap(\n headersMap: BothValueHeaders,\n separator: string = ',',\n lowerCaseKey: boolean = false,\n): Record<string, string> {\n return Object.keys(headersMap).reduce((acc, headerKey) => {\n const newKey = lowerCaseKey ? headerKey.toLowerCase() : headerKey;\n const headerValue = headersMap[headerKey];\n\n if (Array.isArray(headerValue)) acc[newKey] = headerValue.join(separator);\n else acc[newKey] = (headerValue ?? '') + '';\n\n return acc;\n }, {});\n}\n\n/**\n * Transforms a header map into a multi-value map header.\n *\n * @example\n * ```typescript\n * const headers = { 'accept-encoding': 'gzip', 'connection': ['keep-alive'] };\n * const multiValueHeaders = getMultiValueHeadersMap(headers);\n * console.log(multiValueHeaders);\n * // { 'accept-encoding': ['gzip'], 'connection': ['keep-alive'] }\n * ```\n *\n * @param headersMap - The initial headers\n *\n * @breadcrumb Core / Headers\n * @public\n */\nexport function getMultiValueHeadersMap(\n headersMap: BothValueHeaders,\n): Record<string, string[]> {\n return Object.keys(headersMap).reduce((acc, headerKey) => {\n const headerValue = headersMap[headerKey];\n\n acc[headerKey.toLowerCase()] = Array.isArray(headerValue)\n ? headerValue.map(String)\n : [String(headerValue)];\n\n return acc;\n }, {});\n}\n\n/**\n * The wrapper that holds the information about single value headers and cookies\n *\n * @breadcrumb Core / Headers\n * @public\n */\nexport type FlattenedHeadersAndCookies = {\n /**\n * Just the single value headers\n */\n headers: Record<string, string>;\n\n /**\n * The list of cookies\n */\n cookies: string[];\n};\n\n/**\n * Transforms a header map into a single value headers and cookies\n *\n * @param headersMap - The initial headers\n *\n * @breadcrumb Core / Headers\n * @public\n */\nexport function getFlattenedHeadersMapAndCookies(\n headersMap: BothValueHeaders,\n): FlattenedHeadersAndCookies {\n return Object.keys(headersMap).reduce(\n (acc, headerKey) => {\n const headerValue = headersMap[headerKey];\n const lowerHeaderKey = headerKey.toLowerCase();\n\n if (Array.isArray(headerValue)) {\n if (lowerHeaderKey !== 'set-cookie')\n acc.headers[headerKey] = headerValue.join(',');\n else acc.cookies.push(...headerValue);\n } else {\n if (lowerHeaderKey === 'set-cookie' && headerValue !== undefined)\n acc.cookies.push(headerValue ?? '');\n else acc.headers[headerKey] = String(headerValue ?? '');\n }\n\n return acc;\n },\n {\n cookies: [],\n headers: {},\n } as FlattenedHeadersAndCookies,\n );\n}\n\n/**\n * Parse HTTP Raw Headers\n * Attribution to {@link https://github.com/kesla/parse-headers/blob/master/parse-headers.js}\n *\n * @param headers - The raw headers\n *\n * @breadcrumb Core / Headers\n * @public\n */\nexport function parseHeaders(\n headers: string,\n): Record<string, string | string[]> {\n if (!headers) return {};\n\n const result = {};\n const headersArr = headers.trim().split('\\n');\n\n for (let i = 0; i < headersArr.length; i++) {\n const row = headersArr[i];\n const index = row.indexOf(':');\n const key = row.slice(0, index).trim().toLowerCase();\n const value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') result[key] = value;\n else if (Array.isArray(result[key])) result[key].push(value);\n else result[key] = [result[key], value];\n }\n\n return result;\n}\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\n\n//#region Imports\n\nimport type { BinarySettings, BothValueHeaders } from '../@types';\n\n//#endregion\n\n/**\n * The function that determines by the content encoding whether the response should be treated as binary\n *\n * @example\n * ```typescript\n * const headers = { 'content-encoding': 'gzip' };\n * const isBinary = isContentEncodingBinary(headers, ['gzip']);\n * console.log(isBinary);\n * // true\n * ```\n *\n * @param headers - The headers of the response\n * @param binaryEncodingTypes - The list of content encodings that will be treated as binary\n *\n * @breadcrumb Core / isBinary\n * @public\n */\nexport function isContentEncodingBinary(\n headers: BothValueHeaders,\n binaryEncodingTypes: string[],\n): boolean {\n let contentEncodings = headers['content-encoding'];\n\n if (!contentEncodings) return false;\n\n if (!Array.isArray(contentEncodings))\n contentEncodings = contentEncodings.split(',');\n\n return contentEncodings.some(value =>\n binaryEncodingTypes.includes(value.trim()),\n );\n}\n\n/**\n * The function that returns the content type of headers\n *\n * @example\n * ```typescript\n * const headers = { 'content-type': 'application/json' };\n * const contentType = getContentType(headers);\n * console.log(contentType);\n * // application/json\n * ```\n *\n * @param headers - The headers of the response\n *\n * @breadcrumb Core / isBinary\n * @public\n */\nexport function getContentType(headers: BothValueHeaders): string {\n const contentTypeHeaderRaw = headers['content-type'];\n const contentTypeHeader = Array.isArray(contentTypeHeaderRaw)\n ? contentTypeHeaderRaw[0] || ''\n : contentTypeHeaderRaw || '';\n\n if (!contentTypeHeaderRaw) return '';\n\n // only compare mime type; ignore encoding part\n const contentTypeStart = contentTypeHeader.indexOf(';');\n\n if (contentTypeStart === -1) return contentTypeHeader;\n\n return contentTypeHeader.slice(0, contentTypeStart);\n}\n\n/**\n * The function that determines by the content type whether the response should be treated as binary\n *\n * @example\n * ```typescript\n * const headers = { 'content-type': 'image/png' };\n * const isBinary = isContentTypeBinary(headers, new Map([['image/png', true]]));\n * console.log(isBinary);\n * // true\n * ```\n *\n * @param headers - The headers of the response\n * @param binaryContentTypes - The list of content types that will be treated as binary\n *\n * @breadcrumb Core / isBinary\n * @public\n */\nexport function isContentTypeBinary(\n headers: BothValueHeaders,\n binaryContentTypes: string[],\n) {\n const contentType = getContentType(headers);\n\n if (!contentType) return false;\n\n return binaryContentTypes.includes(contentType.trim());\n}\n\n/**\n * The function used to determine from the headers and the binary settings if a response should be encoded or not\n *\n * @example\n * ```typescript\n * const headers = { 'content-type': 'image/png', 'content-encoding': 'gzip' };\n * const isContentBinary = isBinary(headers, { contentEncodings: ['gzip'], contentTypes: ['image/png'] });\n * console.log(isContentBinary);\n * // true\n * ```\n *\n * @param headers - The headers of the response\n * @param binarySettings - The settings for the validation\n *\n * @breadcrumb Core / isBinary\n * @public\n */\nexport function isBinary(\n headers: BothValueHeaders,\n binarySettings: BinarySettings,\n): boolean {\n if ('isBinary' in binarySettings) {\n if (binarySettings.isBinary === false) return false;\n\n return binarySettings.isBinary(headers);\n }\n\n return (\n isContentEncodingBinary(headers, binarySettings.contentEncodings) ||\n isContentTypeBinary(headers, binarySettings.contentTypes)\n );\n}\n","/**\n * No operation function is used when we need to pass a function, but we don't want to specify any behavior.\n *\n * @breadcrumb Core\n * @public\n */\nexport const NO_OP: (...args: any[]) => any = () => void 0;\n","import { NO_OP } from './no-op';\n\n/**\n * The type representing the possible log levels to choose from.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LogLevels =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'none';\n\n/**\n * The options to customize {@link ILogger}\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerOptions = {\n /**\n * Select the log level, {@link LogLevels | see more}.\n *\n * @defaultValue error\n */\n level: LogLevels;\n};\n\n/**\n * The log function used in any level.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerFN = (message: any, ...additional: any[]) => void;\n\n/**\n * The interface representing the logger, you can provide a custom logger by implementing this interface.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type ILogger = Record<Exclude<LogLevels, 'none'>, LoggerFN>;\n\n/**\n * The symbol used to check against an ILogger instace to verify if that ILogger was created by this library\n *\n * @breadcrumb Core / Logger\n * @public\n */\nconst InternalLoggerSymbol = Symbol('InternalLogger');\n\nconst logLevels: Record<\n LogLevels,\n [level: LogLevels, consoleMethod: keyof Console][]\n> = {\n debug: [\n ['debug', 'debug'],\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n verbose: [\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n info: [\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n warn: [\n ['warn', 'warn'],\n ['error', 'error'],\n ],\n error: [['error', 'error']],\n none: [],\n};\n\nconst lazyPrint = (value: () => any | unknown) => {\n if (typeof value === 'function') return value();\n\n return value;\n};\n\nconst print =\n (fn: string) =>\n (message: any, ...additional: (() => any)[]) =>\n console[fn](message, ...additional.map(lazyPrint));\n\n/**\n * The method used to create a simple logger instance to use in this library.\n *\n * @remarks Behind the scenes, this simple logger sends the message to the `console` methods.\n *\n * @example\n * ```typescript\n * const logger = createDefaultLogger();\n *\n * logger.error('An error happens.');\n * // An error happens.\n * ```\n *\n * @param level - Select the level of the log\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function createDefaultLogger(\n { level }: LoggerOptions = { level: 'error' },\n): ILogger {\n const levels = logLevels[level];\n\n if (!levels) throw new Error('Invalid log level');\n\n const logger = {\n [InternalLoggerSymbol]: true,\n error: NO_OP,\n debug: NO_OP,\n info: NO_OP,\n verbose: NO_OP,\n warn: NO_OP,\n } as ILogger;\n\n for (const [level, consoleMethod] of levels)\n logger[level] = print(consoleMethod);\n\n return logger;\n}\n\n/**\n * The method used to chck if logger was created by this library, or it was defined by the user.\n *\n * @param logger - The instance of the logger to check\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function isInternalLogger(logger: ILogger): boolean {\n return !!logger[InternalLoggerSymbol];\n}\n","/**\n * Return the defaultValue whether the value is undefined, otherwise, return the value.\n *\n * @example\n * ```typescript\n * const value1 = getDefaultIfUndefined(undefined, true);\n * const value2 = getDefaultIfUndefined(false, true);\n *\n * console.log(value1);\n * // true\n * console.log(value2);\n * // false\n * ```\n *\n * @param value - The value to be checked\n * @param defaultValue - The default value when value is undefined\n *\n * @breadcrumb Core\n * @public\n */\nexport function getDefaultIfUndefined<T>(\n value: T | undefined,\n defaultValue: T,\n): T {\n if (value === undefined) return defaultValue;\n\n return value;\n}\n","/**\n * Transform the path and a map of query params to a string with formatted query params\n *\n * @example\n * ```typescript\n * const path = '/pets/search';\n * const queryParams = { batata: undefined, petType: [ 'dog', 'fish' ] };\n * const result = getPathWithQueryStringParams(path, queryParams);\n * console.log(result);\n * // /pets/search?batata=&petType=dog&petType=fish\n * ```\n *\n * @param path - The path\n * @param queryParams - The query params\n *\n * @breadcrumb Core / Path\n * @public\n */\nexport function getPathWithQueryStringParams(\n path: string,\n queryParams:\n | string\n | Record<string, string | string[] | undefined>\n | undefined\n | null,\n): string {\n if (String(queryParams || '').length === 0) return path;\n\n if (typeof queryParams === 'string') return `${path}?${queryParams}`;\n\n const queryParamsString = getQueryParamsStringFromRecord(queryParams);\n\n if (!queryParamsString) return path;\n\n return `${path}?${queryParamsString}`;\n}\n\n/**\n * Map query params to a string with formatted query params\n *\n * @example\n * ```typescript\n * const queryParams = { batata: undefined, petType: [ 'dog', 'fish' ] };\n * const result = getQueryParamsStringFromRecord(queryParams);\n * console.log(result);\n * // batata=&petType=dog&petType=fish\n * ```\n *\n * @param queryParamsRecord - The query params record\n *\n * @breadcrumb Core / Path\n * @public\n */\nexport function getQueryParamsStringFromRecord(\n queryParamsRecord:\n | Record<string, string | string[] | undefined>\n | undefined\n | null,\n): string {\n const searchParams = new URLSearchParams();\n\n const multiValueHeadersEntries: [string, string | string[] | undefined][] =\n Object.entries(queryParamsRecord || {});\n\n if (multiValueHeadersEntries.length === 0) return '';\n\n for (const [key, value] of multiValueHeadersEntries) {\n if (!Array.isArray(value)) {\n searchParams.append(key, value || '');\n continue;\n }\n\n for (const arrayValue of value) searchParams.append(key, arrayValue);\n }\n\n return searchParams.toString();\n}\n\n/**\n * Type of the function to strip base path\n *\n * @breadcrumb Core / Path\n * @public\n */\nexport type StripBasePathFn = (path: string) => string;\n\nconst NOOPBasePath: StripBasePathFn = (path: string) => path;\n\n/**\n * Get the strip base path function\n *\n * @param basePath - The base path\n *\n * @breadcrumb Core / Path\n * @public\n */\nexport function buildStripBasePath(\n basePath: string | undefined,\n): StripBasePathFn {\n if (!basePath) return NOOPBasePath;\n\n const length = basePath.length;\n\n return (path: string) => {\n if (path.startsWith(basePath))\n return path.slice(path.indexOf(basePath) + length, path.length) || '/';\n\n return path;\n };\n}\n","//#region Imports\n\nimport { Readable, Writable } from 'node:stream';\n\n//#endregion\n\n/**\n * Check if stream already ended\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function isStreamEnded(stream: Readable | Writable): boolean {\n if ('readableEnded' in stream && stream.readableEnded) return true;\n\n if ('writableEnded' in stream && stream.writableEnded) return true;\n\n return false;\n}\n\n/**\n * Wait asynchronous the stream to complete\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function waitForStreamComplete<TStream extends Readable | Writable>(\n stream: TStream,\n): Promise<TStream> {\n if (isStreamEnded(stream)) return Promise.resolve(stream);\n\n return new Promise<TStream>((resolve, reject) => {\n // Reading the {@link https://github.com/nodejs/node/blob/v12.22.9/lib/events.js#L262 | emit source code},\n // it's almost impossible to complete being called twice because the emit function runs synchronously and removes the other listeners,\n // but I'll leave it at that because I didn't write that code, so I couldn't figure out what the author thought when he wrote this.\n let isComplete = false;\n\n function complete(err: any) {\n /* istanbul ignore next */\n if (isComplete) return;\n\n isComplete = true;\n\n stream.removeListener('error', complete);\n stream.removeListener('end', complete);\n stream.removeListener('finish', complete);\n\n if (err) reject(err);\n else resolve(stream);\n }\n\n stream.once('error', complete);\n stream.once('end', complete);\n stream.once('finish', complete);\n });\n}\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { NO_OP } from '../core';\nimport { getString } from './utils';\n\nconst headerEnd = '\\r\\n\\r\\n';\n\nconst BODY = Symbol('Response body');\nconst HEADERS = Symbol('Response headers');\n\nfunction addData(stream: ServerlessResponse, data: Uint8Array | string) {\n if (\n Buffer.isBuffer(data) ||\n typeof data === 'string' ||\n data instanceof Uint8Array\n )\n stream[BODY].push(Buffer.from(data));\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n\n/**\n * The properties to create a {@link ServerlessResponse}.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport interface ServerlessResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * Once it's happens, we use the properties from this response to built the response to the cloud.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport class ServerlessResponse extends ServerResponse {\n constructor({ method }: ServerlessResponseProps) {\n super({ method } as any);\n\n this[BODY] = [];\n this[HEADERS] = {};\n\n this.useChunkedEncodingByDefault = false;\n this.chunkedEncoding = false;\n this._header = '';\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (this._header === '' || this._wroteHeader) addData(this, data);\n else {\n const string = getString(data);\n const index = string.indexOf(headerEnd);\n\n if (index !== -1) {\n const remainder = string.slice(index + headerEnd.length);\n\n if (remainder) addData(this, remainder);\n\n this._wroteHeader = true;\n }\n }\n\n if (typeof cb === 'function') cb();\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n\n _header: string;\n _headers?: Record<any, any>;\n _wroteHeader?: boolean;\n\n [BODY]: any[];\n [HEADERS]: Record<any, any>;\n\n get headers(): Record<any, any> {\n return this[HEADERS];\n }\n\n static from(res: IncomingMessage) {\n const response = new ServerlessResponse({ method: res.method });\n\n response.statusCode = res.statusCode || 0;\n response[HEADERS] = res.headers;\n response[BODY] = (res as any).body ? [Buffer.from((res as any).body)] : [];\n response.end();\n\n return response;\n }\n\n static body(res: ServerlessResponse): Buffer {\n return Buffer.concat(res[BODY]);\n }\n\n static headers(res: ServerlessResponse) {\n const headers = res.getHeaders();\n\n return Object.assign(headers, res[HEADERS]);\n }\n\n override setHeader(\n key: string,\n value: number | string | readonly string[],\n ): any {\n if (this._wroteHeader) this[HEADERS][key] = value;\n else super.setHeader(key, value);\n }\n\n override writeHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): any {\n const headersObjOrArray =\n typeof statusMessage === 'string' ? obj : statusMessage;\n\n const arrayHeaders = Array.isArray(headersObjOrArray)\n ? headersObjOrArray\n : [headersObjOrArray || {}];\n\n for (const headers of arrayHeaders) {\n for (const name in headers) {\n this.setHeader(name, headers[name]!);\n\n if (!this._wroteHeader) {\n // we only need to initiate super.headers once\n // writeHead will add the other headers itself\n break;\n }\n }\n }\n\n return this.callNativeWriteHead(statusCode, statusMessage, obj);\n }\n\n /**\n * I use ignore here because in nodejs 12.x, statusMessage can be string | OutgoingHttpHeaders\n * But in nodejs \\>=14.x, statusMessage can also be OutgoingHttpHeaders[]\n * I take care of these cases above, but here I can't handle it well, so I give up\n * nodejs 12.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v12/http.d.ts#L229\n * nodejs 14.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v14/http.d.ts#L263\n */\n protected callNativeWriteHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): this {\n return super.writeHead(statusCode, statusMessage, obj);\n }\n}\n","/**\n * Get the data from a buffer, string, or Uint8Array\n *\n * @breadcrumb Network\n * @param data - The data that was written inside the stream\n */\nexport function getString(data: Buffer | string | unknown) {\n if (Buffer.isBuffer(data)) return data.toString('utf8');\n else if (typeof data === 'string') return data;\n else if (data instanceof Uint8Array) return new TextDecoder().decode(data);\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n","import { ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport type { Writable } from 'node:stream';\nimport type { BothValueHeaders } from '../@types';\nimport { type ILogger, NO_OP, parseHeaders } from '../core';\nimport { getString } from './utils';\n\nconst endChunked = '0\\r\\n\\r\\n';\nconst headerEnd = '\\r\\n\\r\\n';\nconst endStatusSeparator = '\\r\\n';\n\n/**\n * The properties to create a {@link ServerlessStreamResponse}.\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport interface ServerlessStreamResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n\n /**\n * The callback to receive the headers when they are written to the stream\n * You need to return a writable stream be able to continue writing the response\n *\n * @param statusCode - The status code of the response\n * @param headers - The headers of the response\n */\n onReceiveHeaders: (statusCode: number, headers: BothValueHeaders) => Writable;\n\n /**\n * Instance of the logger\n */\n log: ILogger;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * This response is specially built to deal with transfer-encoding: chunked\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport class ServerlessStreamResponse extends ServerResponse {\n constructor({\n method,\n onReceiveHeaders,\n log,\n }: ServerlessStreamResponseProps) {\n super({ method } as any);\n\n this.useChunkedEncodingByDefault = true;\n this.chunkedEncoding = true;\n\n let internalWritable: Writable | null = null;\n let isFirstCall = true;\n // this ignore is used because I need to ignore these write calls:\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L934-L935\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L937\n let writesToIgnore = 0;\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n // very unlikely, I don't even know how to reproduce this, but exist on types\n // istanbul ignore if\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:DATA', () => ({\n data: Buffer.isBuffer(data) ? data.toString('utf8') : data,\n encoding,\n }));\n\n if (!isFirstCall && internalWritable) {\n if (data === endChunked) {\n internalWritable.end(cb);\n\n return true;\n }\n\n if (writesToIgnore > 0) {\n writesToIgnore--;\n return true;\n }\n\n internalWritable.write(data, cb);\n writesToIgnore = 3;\n } else if (isFirstCall) {\n isFirstCall = false;\n\n const stringData = getString(data);\n const endStatusIndex = stringData.indexOf(endStatusSeparator);\n const status = +stringData.slice(0, endStatusIndex).split(' ')[1];\n\n const headerData = stringData.slice(\n endStatusIndex + 2,\n stringData.indexOf(headerEnd),\n );\n const headers = parseHeaders(headerData);\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:FRAMEWORK_HEADERS', {\n headers,\n });\n\n writesToIgnore = 1;\n internalWritable = onReceiveHeaders(status, headers);\n }\n\n return true;\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n}\n","//#region Imports\n\nimport type { BinarySettings } from './@types';\nimport type {\n AdapterContract,\n FrameworkContract,\n HandlerContract,\n ResolverContract,\n ServerlessHandler,\n} from './contracts';\nimport {\n DEFAULT_BINARY_CONTENT_TYPES,\n DEFAULT_BINARY_ENCODINGS,\n type ILogger,\n createDefaultLogger,\n} from './core';\n\n//#endregion\n\n/**\n * The class used to build the serverless handler.\n *\n * @example\n * ```typescript\n * const app = express();\n * export const handler = ServerlessAdapter.new(app)\n * .setFramework(new ExpressFramework())\n * .setHandler(new DefaultHandler())\n * .setResolver(new PromiseResolver())\n * .setRespondWithErrors(true)\n * .addAdapter(new AlbAdapter())\n * .addAdapter(new SQSAdapter())\n * .addAdapter(new SNSAdapter())\n * .build();\n * ```\n *\n * @breadcrumb ServerlessAdapter\n * @public\n */\nexport class ServerlessAdapter<\n TApp,\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn,\n> {\n //#region Constructor\n\n /**\n * Default constructor\n */\n private constructor(app: TApp) {\n this.app = app;\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * The instance of the app (express, hapi, koa, etc...)\n */\n protected app: TApp;\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * Settings for whether the response should be treated as binary or not\n *\n * @defaultValue `contentEncodings` and `contentTypes` are set with {@link DEFAULT_BINARY_ENCODINGS} and {@link DEFAULT_BINARY_CONTENT_TYPES}, respectively.\n */\n protected binarySettings: BinarySettings = {\n contentEncodings: DEFAULT_BINARY_ENCODINGS,\n contentTypes: DEFAULT_BINARY_CONTENT_TYPES,\n };\n\n /**\n * Indicates whether the error stack should be included in the response or not\n *\n * @remarks These errors will only be included when an error occurs while forwarding the event to the framework\n * @defaultValue True when NODE_ENV is equal to `development`\n */\n protected respondWithErrors: boolean = process.env.NODE_ENV === 'development';\n\n /**\n * The instance of the logger service\n */\n protected log: ILogger = createDefaultLogger();\n\n /**\n * The list of adapters used to handle an event's request and response\n */\n protected adapters: AdapterContract<TEvent, TContext, TResponse>[] = [];\n\n /**\n * The framework that will process requests\n */\n protected framework?: FrameworkContract<TApp>;\n\n /**\n * The resolver that aims to resolve the response to serverless and stop its execution when the request ends\n */\n protected resolver?: ResolverContract<\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn\n >;\n\n /**\n * The handler that will get the event, context and callback and pass it to the adapter and framework\n */\n protected handler?: HandlerContract<\n TApp,\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn\n >;\n\n //#endregion\n\n //#region Static Methods\n\n /**\n * Creates a new instance of the builder with app (express, hapi, koa, etc...)\n *\n * @param app - The instance of the app\n */\n public static new<\n TApp,\n TEvent,\n TContext = any,\n TCallback = any,\n TResponse = any,\n TReturn = any,\n >(\n app: TApp,\n ): ServerlessAdapter<TApp, TEvent, TContext, TCallback, TResponse, TReturn> {\n return new ServerlessAdapter(app);\n }\n\n //#endregion\n\n //#region Builder Methods\n\n /**\n * Defines the handler that will get the event, context and callback and pass it to the adapter and framework\n *\n * @param handler - The implementation of the handler contract\n */\n public setHandler(\n handler: HandlerContract<\n TApp,\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn\n >,\n ): Omit<this, 'setHandler'> {\n if (this.handler)\n throw new Error('SERVERLESS_ADAPTER: The handler should not set twice.');\n\n this.handler = handler;\n\n return this;\n }\n\n /**\n * Defines the resolver that aims to resolve the response to serverless and stop its execution when the request ends\n *\n * @param resolver - The implementation of the resolver contract\n */\n public setResolver(\n resolver: ResolverContract<TEvent, TContext, TCallback, TResponse, TReturn>,\n ): Omit<this, 'setResolver'> {\n if (this.resolver)\n throw new Error('SERVERLESS_ADAPTER: The resolver should not set twice.');\n\n this.resolver = resolver;\n\n return this;\n }\n\n /**\n * Defines the framework that will process requests\n *\n * @param framework - The implementation of the framework contract\n */\n public setFramework(\n framework: FrameworkContract<TApp>,\n ): Omit<this, 'setFramework'> {\n if (this.framework) {\n throw new Error(\n 'SERVERLESS_ADAPTER: The framework should not set twice.',\n );\n }\n\n this.framework = framework;\n\n return this;\n }\n\n /**\n * Defines the logger service used during the execution of the handler\n *\n * @param logger - The implementation of the logger\n */\n public setLogger(logger: ILogger): Omit<this, 'setLogger'> {\n this.log = logger;\n\n return this;\n }\n\n /**\n * Defines the binary settings for whether the response should be treated as binary or not\n *\n * @param binarySettings - The binary settings\n */\n public setBinarySettings(\n binarySettings: BinarySettings,\n ): Omit<this, 'setBinarySettings'> {\n this.binarySettings = {\n ...this.binarySettings,\n ...binarySettings,\n };\n\n return this;\n }\n\n /**\n * Defines the responseWithErrors, a property that indicates whether the error stack should be included in the response or not\n *\n * @param respondWithErrors - Should include or not the errors in response\n */\n public setRespondWithErrors(\n respondWithErrors: boolean,\n ): Omit<this, 'setRespondWithErrors'> {\n this.respondWithErrors = respondWithErrors;\n\n return this;\n }\n\n /**\n * Add an adapter to the adapters list to handle the event coming from any serverless event source\n *\n * @param adapter - The implementation of the adapter contract\n */\n public addAdapter(\n adapter: AdapterContract<TEvent, TContext, TResponse>,\n ): Pick<this, 'addAdapter' | 'build'> {\n this.adapters.push(adapter);\n\n return this;\n }\n\n /**\n * The builder method that returns the handler function to be exported for serverless consumption\n */\n public build(): ServerlessHandler<TReturn> {\n if (!this.resolver) {\n throw new Error(\n 'SERVERLESS_ADAPTER: Is required to set a resolver before build.',\n );\n }\n\n if (!this.framework) {\n throw new Error(\n 'SERVERLESS_ADAPTER: Is required to set a framework before build.',\n );\n }\n\n if (!this.handler) {\n throw new Error(\n 'SERVERLESS_ADAPTER: Is required to set a handler before build.',\n );\n }\n\n if (this.adapters.length === 0) {\n throw new Error(\n 'SERVERLESS_ADAPTER: Is required to set at least one adapter.',\n );\n }\n\n return this.handler.getHandler(\n this.app,\n this.framework,\n this.adapters,\n this.resolver,\n this.binarySettings,\n this.respondWithErrors,\n this.log,\n );\n }\n\n //#endregion\n}\n"],"mappings":"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","names":["src_exports","__export","BaseHandler","DEFAULT_BINARY_CONTENT_TYPES","DEFAULT_BINARY_ENCODINGS","EmptyResponse","NO_OP","ServerlessAdapter","ServerlessRequest","ServerlessResponse","ServerlessStreamResponse","buildStripBasePath","createDefaultLogger","getContentType","getCurrentInvoke","getDefaultIfUndefined","getEventBodyAsBuffer","getFlattenedHeadersMap","getFlattenedHeadersMapAndCookies","getMultiValueHeadersMap","getPathWithQueryStringParams","getQueryParamsStringFromRecord","getString","isBinary","isContentEncodingBinary","isContentTypeBinary","isInternalLogger","isStreamEnded","parseHeaders","setCurrentInvoke","waitForStreamComplete","__toCommonJS","import_node_http","BaseHandler","__name","event","context","adapters","log","resolvedAdapters","adapter","requestValues","request","ServerlessRequest","response","ServerlessResponse","DEFAULT_BINARY_ENCODINGS","DEFAULT_BINARY_CONTENT_TYPES","EmptyResponse","currentInvoke","getCurrentInvoke","__name","setCurrentInvoke","event","context","getEventBodyAsBuffer","body","isBase64Encoded","encoding","buffer","contentLength","__name","getFlattenedHeadersMap","headersMap","separator","lowerCaseKey","acc","headerKey","newKey","headerValue","__name","getMultiValueHeadersMap","getFlattenedHeadersMapAndCookies","lowerHeaderKey","parseHeaders","headers","result","headersArr","i","row","index","key","value","isContentEncodingBinary","headers","binaryEncodingTypes","contentEncodings","value","__name","getContentType","contentTypeHeaderRaw","contentTypeHeader","contentTypeStart","isContentTypeBinary","binaryContentTypes","contentType","isBinary","binarySettings","NO_OP","__name","InternalLoggerSymbol","logLevels","lazyPrint","__name","value","print","fn","message","additional","createDefaultLogger","level","levels","logger","NO_OP","consoleMethod","isInternalLogger","getDefaultIfUndefined","value","defaultValue","__name","getPathWithQueryStringParams","path","queryParams","queryParamsString","getQueryParamsStringFromRecord","__name","queryParamsRecord","searchParams","multiValueHeadersEntries","key","value","arrayValue","NOOPBasePath","buildStripBasePath","basePath","length","import_node_stream","isStreamEnded","stream","__name","waitForStreamComplete","resolve","reject","isComplete","complete","err","HTTPS_PORT","ServerlessRequest","__name","method","url","headers","body","remoteAddress","NO_OP","import_node_http","getString","data","__name","headerEnd","BODY","HEADERS","addData","stream","data","__name","ServerlessResponse","_ServerlessResponse","method","socket","NO_OP","encoding","cb","string","getString","index","remainder","res","response","headers","key","value","statusCode","statusMessage","obj","headersObjOrArray","arrayHeaders","name","import_node_http","endChunked","headerEnd","endStatusSeparator","ServerlessStreamResponse","__name","method","onReceiveHeaders","log","internalWritable","isFirstCall","writesToIgnore","socket","NO_OP","data","encoding","cb","stringData","getString","endStatusIndex","status","headerData","headers","parseHeaders","ServerlessAdapter","_ServerlessAdapter","__name","app","DEFAULT_BINARY_ENCODINGS","DEFAULT_BINARY_CONTENT_TYPES","createDefaultLogger","handler","resolver","framework","logger","binarySettings","respondWithErrors","adapter"]}
@@ -0,0 +1,439 @@
1
+ import { B as BinarySettings, H as HandlerContract, S as ServerlessHandler } from './handler.contract-TQk8iM8f.cjs';
2
+ export { b as BinarySettingsContentHeaders, a as BinarySettingsFunction } from './handler.contract-TQk8iM8f.cjs';
3
+ import { B as BothValueHeaders } from './headers-K2qbcurv.cjs';
4
+ export { M as MultiValueHeaders, S as SingleValueHeaders } from './headers-K2qbcurv.cjs';
5
+ export { C as Concrete, S as StripBasePathFn, b as buildStripBasePath, g as getPathWithQueryStringParams, a as getQueryParamsStringFromRecord } from './path-yBwCb8C1.cjs';
6
+ import { A as AdapterContract, R as ResolverContract } from './adapter.contract-y5xSjOjo.cjs';
7
+ export { a as AdapterRequest, D as DelegatedResolver, G as GetResponseAdapterProps, O as OnErrorProps, c as Resolver, b as ResolverProps, S as ServerlessResponse, d as ServerlessResponseProps } from './adapter.contract-y5xSjOjo.cjs';
8
+ import { F as FrameworkContract } from './framework.contract-YnJ-fl1w.cjs';
9
+ export { B as BaseHandler } from './base-handler-peEBoKtZ.cjs';
10
+ export { a as DEFAULT_BINARY_CONTENT_TYPES, D as DEFAULT_BINARY_ENCODINGS, E as EmptyResponse, I as IEmptyResponse } from './constants-0cgQlFSV.cjs';
11
+ import { I as ILogger } from './logger-9me5n48P.cjs';
12
+ export { L as LogLevels, b as LoggerFN, a as LoggerOptions, c as createDefaultLogger, i as isInternalLogger } from './logger-9me5n48P.cjs';
13
+ import { Writable, Readable } from 'node:stream';
14
+ export { S as ServerlessRequest, a as ServerlessRequestProps } from './request-DNNIV9ub.cjs';
15
+ import { ServerResponse } from 'node:http';
16
+ import 'http';
17
+
18
+ /**
19
+ * The properties to create a {@link ServerlessStreamResponse}.
20
+ *
21
+ * @breadcrumb Network / ServerlessStreamResponse
22
+ * @public
23
+ */
24
+ interface ServerlessStreamResponseProps {
25
+ /**
26
+ * The HTTP Method from request
27
+ */
28
+ method?: string;
29
+ /**
30
+ * The callback to receive the headers when they are written to the stream
31
+ * You need to return a writable stream be able to continue writing the response
32
+ *
33
+ * @param statusCode - The status code of the response
34
+ * @param headers - The headers of the response
35
+ */
36
+ onReceiveHeaders: (statusCode: number, headers: BothValueHeaders) => Writable;
37
+ /**
38
+ * Instance of the logger
39
+ */
40
+ log: ILogger;
41
+ }
42
+ /**
43
+ * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.
44
+ * This response is specially built to deal with transfer-encoding: chunked
45
+ *
46
+ * @breadcrumb Network / ServerlessStreamResponse
47
+ * @public
48
+ */
49
+ declare class ServerlessStreamResponse extends ServerResponse {
50
+ constructor({ method, onReceiveHeaders, log, }: ServerlessStreamResponseProps);
51
+ }
52
+
53
+ /**
54
+ * Get the data from a buffer, string, or Uint8Array
55
+ *
56
+ * @breadcrumb Network
57
+ * @param data - The data that was written inside the stream
58
+ */
59
+ declare function getString(data: Buffer | string | unknown): string;
60
+
61
+ /**
62
+ * The type that represents the object that handles the references to the event created by the serverless trigger or context created by the serverless environment.
63
+ *
64
+ * @breadcrumb Core / Current Invoke
65
+ * @public
66
+ */
67
+ type CurrentInvoke<TEvent, TContext> = {
68
+ /**
69
+ * The event created by the serverless trigger
70
+ *
71
+ * @remarks It's only null when you call {@link getCurrentInvoke} outside this library's pipeline.
72
+ */
73
+ event: TEvent | null;
74
+ /**
75
+ * The context created by the serverless environment
76
+ *
77
+ * @remarks It's only null when you call {@link getCurrentInvoke} outside this library's pipeline.
78
+ */
79
+ context: TContext | null;
80
+ };
81
+ /**
82
+ * Get the reference to the event created by the serverless trigger or context created by the serverless environment.
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * import type { ALBEvent, Context } from 'aws-lambda';
87
+ *
88
+ * // inside the method that handles the aws alb request.
89
+ * const { event, context } = getCurrentInvoke<ALBEvent, Context>();
90
+ * ```
91
+ *
92
+ * @breadcrumb Core / Current Invoke
93
+ * @public
94
+ */
95
+ declare function getCurrentInvoke<TEvent = any, TContext = any>(): CurrentInvoke<TEvent, TContext>;
96
+ /**
97
+ * Method that saves to the event created by the serverless trigger or context created by the serverless environment.
98
+ *
99
+ * @remarks This method MUST NOT be called by you, this method MUST only be used internally in this library.
100
+ *
101
+ * @param event - The event created by the serverless trigger
102
+ * @param context - The context created by the serverless environment
103
+ *
104
+ * @breadcrumb Core / Current Invoke
105
+ * @public
106
+ */
107
+ declare function setCurrentInvoke<TEvent = any, TContext = any>({ event, context, }: CurrentInvoke<TEvent, TContext>): void;
108
+
109
+ /**
110
+ * Get the event body as buffer from body string with content length
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const body = '{}';
115
+ * const [buffer, contentLength] = getEventBodyAsBuffer(body, false);
116
+ * console.log(buffer);
117
+ * // <Buffer 7b 7d>
118
+ * console.log(contentLength);
119
+ * // 2
120
+ * ```
121
+ *
122
+ * @param body - The body string that can be encoded or not
123
+ * @param isBase64Encoded - Tells if body string is encoded in base64
124
+ *
125
+ * @breadcrumb Core
126
+ * @public
127
+ */
128
+ declare function getEventBodyAsBuffer(body: string, isBase64Encoded: boolean): [body: Buffer, contentLength: number];
129
+
130
+ /**
131
+ * Transform a header map and make sure the value is not an array
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const headers = { 'accept-encoding': 'gzip', 'accept-language': ['en-US', 'en;q=0.9'] };
136
+ * const flattenedHeaders = getFlattenedHeadersMap(headers, ',', true);
137
+ * console.log(flattenedHeaders);
138
+ * // { 'accept-encoding': 'gzip', 'accept-language': 'en-US,en;q=0.9' }
139
+ * ```
140
+ *
141
+ * @param headersMap - The initial headers
142
+ * @param separator - The separator used when we join the array of header's value
143
+ * @param lowerCaseKey - Should put all keys in lowercase
144
+ *
145
+ * @breadcrumb Core / Headers
146
+ * @public
147
+ */
148
+ declare function getFlattenedHeadersMap(headersMap: BothValueHeaders, separator?: string, lowerCaseKey?: boolean): Record<string, string>;
149
+ /**
150
+ * Transforms a header map into a multi-value map header.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const headers = { 'accept-encoding': 'gzip', 'connection': ['keep-alive'] };
155
+ * const multiValueHeaders = getMultiValueHeadersMap(headers);
156
+ * console.log(multiValueHeaders);
157
+ * // { 'accept-encoding': ['gzip'], 'connection': ['keep-alive'] }
158
+ * ```
159
+ *
160
+ * @param headersMap - The initial headers
161
+ *
162
+ * @breadcrumb Core / Headers
163
+ * @public
164
+ */
165
+ declare function getMultiValueHeadersMap(headersMap: BothValueHeaders): Record<string, string[]>;
166
+ /**
167
+ * The wrapper that holds the information about single value headers and cookies
168
+ *
169
+ * @breadcrumb Core / Headers
170
+ * @public
171
+ */
172
+ type FlattenedHeadersAndCookies = {
173
+ /**
174
+ * Just the single value headers
175
+ */
176
+ headers: Record<string, string>;
177
+ /**
178
+ * The list of cookies
179
+ */
180
+ cookies: string[];
181
+ };
182
+ /**
183
+ * Transforms a header map into a single value headers and cookies
184
+ *
185
+ * @param headersMap - The initial headers
186
+ *
187
+ * @breadcrumb Core / Headers
188
+ * @public
189
+ */
190
+ declare function getFlattenedHeadersMapAndCookies(headersMap: BothValueHeaders): FlattenedHeadersAndCookies;
191
+ /**
192
+ * Parse HTTP Raw Headers
193
+ * Attribution to {@link https://github.com/kesla/parse-headers/blob/master/parse-headers.js}
194
+ *
195
+ * @param headers - The raw headers
196
+ *
197
+ * @breadcrumb Core / Headers
198
+ * @public
199
+ */
200
+ declare function parseHeaders(headers: string): Record<string, string | string[]>;
201
+
202
+ /**
203
+ * The function that determines by the content encoding whether the response should be treated as binary
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * const headers = { 'content-encoding': 'gzip' };
208
+ * const isBinary = isContentEncodingBinary(headers, ['gzip']);
209
+ * console.log(isBinary);
210
+ * // true
211
+ * ```
212
+ *
213
+ * @param headers - The headers of the response
214
+ * @param binaryEncodingTypes - The list of content encodings that will be treated as binary
215
+ *
216
+ * @breadcrumb Core / isBinary
217
+ * @public
218
+ */
219
+ declare function isContentEncodingBinary(headers: BothValueHeaders, binaryEncodingTypes: string[]): boolean;
220
+ /**
221
+ * The function that returns the content type of headers
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * const headers = { 'content-type': 'application/json' };
226
+ * const contentType = getContentType(headers);
227
+ * console.log(contentType);
228
+ * // application/json
229
+ * ```
230
+ *
231
+ * @param headers - The headers of the response
232
+ *
233
+ * @breadcrumb Core / isBinary
234
+ * @public
235
+ */
236
+ declare function getContentType(headers: BothValueHeaders): string;
237
+ /**
238
+ * The function that determines by the content type whether the response should be treated as binary
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const headers = { 'content-type': 'image/png' };
243
+ * const isBinary = isContentTypeBinary(headers, new Map([['image/png', true]]));
244
+ * console.log(isBinary);
245
+ * // true
246
+ * ```
247
+ *
248
+ * @param headers - The headers of the response
249
+ * @param binaryContentTypes - The list of content types that will be treated as binary
250
+ *
251
+ * @breadcrumb Core / isBinary
252
+ * @public
253
+ */
254
+ declare function isContentTypeBinary(headers: BothValueHeaders, binaryContentTypes: string[]): boolean;
255
+ /**
256
+ * The function used to determine from the headers and the binary settings if a response should be encoded or not
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * const headers = { 'content-type': 'image/png', 'content-encoding': 'gzip' };
261
+ * const isContentBinary = isBinary(headers, { contentEncodings: ['gzip'], contentTypes: ['image/png'] });
262
+ * console.log(isContentBinary);
263
+ * // true
264
+ * ```
265
+ *
266
+ * @param headers - The headers of the response
267
+ * @param binarySettings - The settings for the validation
268
+ *
269
+ * @breadcrumb Core / isBinary
270
+ * @public
271
+ */
272
+ declare function isBinary(headers: BothValueHeaders, binarySettings: BinarySettings): boolean;
273
+
274
+ /**
275
+ * No operation function is used when we need to pass a function, but we don't want to specify any behavior.
276
+ *
277
+ * @breadcrumb Core
278
+ * @public
279
+ */
280
+ declare const NO_OP: (...args: any[]) => any;
281
+
282
+ /**
283
+ * Return the defaultValue whether the value is undefined, otherwise, return the value.
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * const value1 = getDefaultIfUndefined(undefined, true);
288
+ * const value2 = getDefaultIfUndefined(false, true);
289
+ *
290
+ * console.log(value1);
291
+ * // true
292
+ * console.log(value2);
293
+ * // false
294
+ * ```
295
+ *
296
+ * @param value - The value to be checked
297
+ * @param defaultValue - The default value when value is undefined
298
+ *
299
+ * @breadcrumb Core
300
+ * @public
301
+ */
302
+ declare function getDefaultIfUndefined<T>(value: T | undefined, defaultValue: T): T;
303
+
304
+ /**
305
+ * Check if stream already ended
306
+ *
307
+ * @param stream - The stream
308
+ *
309
+ * @breadcrumb Core / Stream
310
+ * @public
311
+ */
312
+ declare function isStreamEnded(stream: Readable | Writable): boolean;
313
+ /**
314
+ * Wait asynchronous the stream to complete
315
+ *
316
+ * @param stream - The stream
317
+ *
318
+ * @breadcrumb Core / Stream
319
+ * @public
320
+ */
321
+ declare function waitForStreamComplete<TStream extends Readable | Writable>(stream: TStream): Promise<TStream>;
322
+
323
+ /**
324
+ * The class used to build the serverless handler.
325
+ *
326
+ * @example
327
+ * ```typescript
328
+ * const app = express();
329
+ * export const handler = ServerlessAdapter.new(app)
330
+ * .setFramework(new ExpressFramework())
331
+ * .setHandler(new DefaultHandler())
332
+ * .setResolver(new PromiseResolver())
333
+ * .setRespondWithErrors(true)
334
+ * .addAdapter(new AlbAdapter())
335
+ * .addAdapter(new SQSAdapter())
336
+ * .addAdapter(new SNSAdapter())
337
+ * .build();
338
+ * ```
339
+ *
340
+ * @breadcrumb ServerlessAdapter
341
+ * @public
342
+ */
343
+ declare class ServerlessAdapter<TApp, TEvent, TContext, TCallback, TResponse, TReturn> {
344
+ /**
345
+ * Default constructor
346
+ */
347
+ private constructor();
348
+ /**
349
+ * The instance of the app (express, hapi, koa, etc...)
350
+ */
351
+ protected app: TApp;
352
+ /**
353
+ * Settings for whether the response should be treated as binary or not
354
+ *
355
+ * @defaultValue `contentEncodings` and `contentTypes` are set with {@link DEFAULT_BINARY_ENCODINGS} and {@link DEFAULT_BINARY_CONTENT_TYPES}, respectively.
356
+ */
357
+ protected binarySettings: BinarySettings;
358
+ /**
359
+ * Indicates whether the error stack should be included in the response or not
360
+ *
361
+ * @remarks These errors will only be included when an error occurs while forwarding the event to the framework
362
+ * @defaultValue True when NODE_ENV is equal to `development`
363
+ */
364
+ protected respondWithErrors: boolean;
365
+ /**
366
+ * The instance of the logger service
367
+ */
368
+ protected log: ILogger;
369
+ /**
370
+ * The list of adapters used to handle an event's request and response
371
+ */
372
+ protected adapters: AdapterContract<TEvent, TContext, TResponse>[];
373
+ /**
374
+ * The framework that will process requests
375
+ */
376
+ protected framework?: FrameworkContract<TApp>;
377
+ /**
378
+ * The resolver that aims to resolve the response to serverless and stop its execution when the request ends
379
+ */
380
+ protected resolver?: ResolverContract<TEvent, TContext, TCallback, TResponse, TReturn>;
381
+ /**
382
+ * The handler that will get the event, context and callback and pass it to the adapter and framework
383
+ */
384
+ protected handler?: HandlerContract<TApp, TEvent, TContext, TCallback, TResponse, TReturn>;
385
+ /**
386
+ * Creates a new instance of the builder with app (express, hapi, koa, etc...)
387
+ *
388
+ * @param app - The instance of the app
389
+ */
390
+ static new<TApp, TEvent, TContext = any, TCallback = any, TResponse = any, TReturn = any>(app: TApp): ServerlessAdapter<TApp, TEvent, TContext, TCallback, TResponse, TReturn>;
391
+ /**
392
+ * Defines the handler that will get the event, context and callback and pass it to the adapter and framework
393
+ *
394
+ * @param handler - The implementation of the handler contract
395
+ */
396
+ setHandler(handler: HandlerContract<TApp, TEvent, TContext, TCallback, TResponse, TReturn>): Omit<this, 'setHandler'>;
397
+ /**
398
+ * Defines the resolver that aims to resolve the response to serverless and stop its execution when the request ends
399
+ *
400
+ * @param resolver - The implementation of the resolver contract
401
+ */
402
+ setResolver(resolver: ResolverContract<TEvent, TContext, TCallback, TResponse, TReturn>): Omit<this, 'setResolver'>;
403
+ /**
404
+ * Defines the framework that will process requests
405
+ *
406
+ * @param framework - The implementation of the framework contract
407
+ */
408
+ setFramework(framework: FrameworkContract<TApp>): Omit<this, 'setFramework'>;
409
+ /**
410
+ * Defines the logger service used during the execution of the handler
411
+ *
412
+ * @param logger - The implementation of the logger
413
+ */
414
+ setLogger(logger: ILogger): Omit<this, 'setLogger'>;
415
+ /**
416
+ * Defines the binary settings for whether the response should be treated as binary or not
417
+ *
418
+ * @param binarySettings - The binary settings
419
+ */
420
+ setBinarySettings(binarySettings: BinarySettings): Omit<this, 'setBinarySettings'>;
421
+ /**
422
+ * Defines the responseWithErrors, a property that indicates whether the error stack should be included in the response or not
423
+ *
424
+ * @param respondWithErrors - Should include or not the errors in response
425
+ */
426
+ setRespondWithErrors(respondWithErrors: boolean): Omit<this, 'setRespondWithErrors'>;
427
+ /**
428
+ * Add an adapter to the adapters list to handle the event coming from any serverless event source
429
+ *
430
+ * @param adapter - The implementation of the adapter contract
431
+ */
432
+ addAdapter(adapter: AdapterContract<TEvent, TContext, TResponse>): Pick<this, 'addAdapter' | 'build'>;
433
+ /**
434
+ * The builder method that returns the handler function to be exported for serverless consumption
435
+ */
436
+ build(): ServerlessHandler<TReturn>;
437
+ }
438
+
439
+ export { AdapterContract, BinarySettings, BothValueHeaders, type CurrentInvoke, type FlattenedHeadersAndCookies, FrameworkContract, HandlerContract, ILogger, NO_OP, ResolverContract, ServerlessAdapter, ServerlessHandler, ServerlessStreamResponse, type ServerlessStreamResponseProps, getContentType, getCurrentInvoke, getDefaultIfUndefined, getEventBodyAsBuffer, getFlattenedHeadersMap, getFlattenedHeadersMapAndCookies, getMultiValueHeadersMap, getString, isBinary, isContentEncodingBinary, isContentTypeBinary, isStreamEnded, parseHeaders, setCurrentInvoke, waitForStreamComplete };