@h4ad/serverless-adapter 2.17.0 → 3.0.0

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 (325) hide show
  1. package/README.md +7 -0
  2. package/lib/@types/binary-settings.js +2 -11
  3. package/lib/@types/binary-settings.js.map +1 -1
  4. package/lib/@types/digital-ocean/digital-ocean-http-event.js +2 -7
  5. package/lib/@types/digital-ocean/digital-ocean-http-event.js.map +1 -1
  6. package/lib/@types/digital-ocean/digital-ocean-http-response.js +2 -7
  7. package/lib/@types/digital-ocean/digital-ocean-http-response.js.map +1 -1
  8. package/lib/@types/digital-ocean/index.js +2 -18
  9. package/lib/@types/digital-ocean/index.js.map +1 -1
  10. package/lib/@types/headers.js +2 -11
  11. package/lib/@types/headers.js.map +1 -1
  12. package/lib/@types/helpers.js +2 -6
  13. package/lib/@types/helpers.js.map +1 -1
  14. package/lib/@types/huawei/huawei-api-gateway-event.js +2 -14
  15. package/lib/@types/huawei/huawei-api-gateway-event.js.map +1 -1
  16. package/lib/@types/huawei/huawei-api-gateway-response.js +2 -7
  17. package/lib/@types/huawei/huawei-api-gateway-response.js.map +1 -1
  18. package/lib/@types/huawei/huawei-context.js +2 -36
  19. package/lib/@types/huawei/huawei-context.js.map +1 -1
  20. package/lib/@types/huawei/index.js +2 -20
  21. package/lib/@types/huawei/index.js.map +1 -1
  22. package/lib/@types/index.js +2 -20
  23. package/lib/@types/index.js.map +1 -1
  24. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js +2 -86
  25. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js.map +1 -1
  26. package/lib/adapters/apollo-server/index.js +2 -18
  27. package/lib/adapters/apollo-server/index.js.map +1 -1
  28. package/lib/adapters/aws/alb.adapter.js +2 -129
  29. package/lib/adapters/aws/alb.adapter.js.map +1 -1
  30. package/lib/adapters/aws/api-gateway-v1.adapter.js +2 -140
  31. package/lib/adapters/aws/api-gateway-v1.adapter.js.map +1 -1
  32. package/lib/adapters/aws/api-gateway-v2.adapter.js +2 -134
  33. package/lib/adapters/aws/api-gateway-v2.adapter.js.map +1 -1
  34. package/lib/adapters/aws/base/aws-simple-adapter.js +2 -99
  35. package/lib/adapters/aws/base/aws-simple-adapter.js.map +1 -1
  36. package/lib/adapters/aws/base/index.js +2 -18
  37. package/lib/adapters/aws/base/index.js.map +1 -1
  38. package/lib/adapters/aws/dynamodb.adapter.js +2 -64
  39. package/lib/adapters/aws/dynamodb.adapter.js.map +1 -1
  40. package/lib/adapters/aws/event-bridge.adapter.js +2 -75
  41. package/lib/adapters/aws/event-bridge.adapter.js.map +1 -1
  42. package/lib/adapters/aws/index.js +2 -27
  43. package/lib/adapters/aws/index.js.map +1 -1
  44. package/lib/adapters/aws/lambda-edge.adapter.js +2 -284
  45. package/lib/adapters/aws/lambda-edge.adapter.js.map +1 -1
  46. package/lib/adapters/aws/s3.adapter.js +2 -63
  47. package/lib/adapters/aws/s3.adapter.js.map +1 -1
  48. package/lib/adapters/aws/sns.adapter.js +2 -63
  49. package/lib/adapters/aws/sns.adapter.js.map +1 -1
  50. package/lib/adapters/aws/sqs.adapter.js +2 -64
  51. package/lib/adapters/aws/sqs.adapter.js.map +1 -1
  52. package/lib/adapters/azure/http-trigger-v4.adapter.js +2 -202
  53. package/lib/adapters/azure/http-trigger-v4.adapter.js.map +1 -1
  54. package/lib/adapters/azure/index.js +2 -18
  55. package/lib/adapters/azure/index.js.map +1 -1
  56. package/lib/adapters/digital-ocean/http-function.adapter.js +2 -118
  57. package/lib/adapters/digital-ocean/http-function.adapter.js.map +1 -1
  58. package/lib/adapters/digital-ocean/index.js +2 -18
  59. package/lib/adapters/digital-ocean/index.js.map +1 -1
  60. package/lib/adapters/dummy/dummy.adapter.js +2 -54
  61. package/lib/adapters/dummy/dummy.adapter.js.map +1 -1
  62. package/lib/adapters/dummy/index.js +2 -18
  63. package/lib/adapters/dummy/index.js.map +1 -1
  64. package/lib/adapters/huawei/huawei-api-gateway.adapter.js +2 -126
  65. package/lib/adapters/huawei/huawei-api-gateway.adapter.js.map +1 -1
  66. package/lib/adapters/huawei/index.js +2 -18
  67. package/lib/adapters/huawei/index.js.map +1 -1
  68. package/lib/contracts/adapter.contract.js +2 -18
  69. package/lib/contracts/adapter.contract.js.map +1 -1
  70. package/lib/contracts/framework.contract.js +2 -7
  71. package/lib/contracts/framework.contract.js.map +1 -1
  72. package/lib/contracts/handler.contract.js +2 -13
  73. package/lib/contracts/handler.contract.js.map +1 -1
  74. package/lib/contracts/index.js +2 -21
  75. package/lib/contracts/index.js.map +1 -1
  76. package/lib/contracts/resolver.contract.js +2 -15
  77. package/lib/contracts/resolver.contract.js.map +1 -1
  78. package/lib/core/base-handler.js +2 -67
  79. package/lib/core/base-handler.js.map +1 -1
  80. package/lib/core/constants.js +2 -33
  81. package/lib/core/constants.js.map +1 -1
  82. package/lib/core/current-invoke.js +2 -46
  83. package/lib/core/current-invoke.js.map +1 -1
  84. package/lib/core/event-body.js +2 -31
  85. package/lib/core/event-body.js.map +1 -1
  86. package/lib/core/headers.js +3 -97
  87. package/lib/core/headers.js.map +1 -1
  88. package/lib/core/index.js +2 -28
  89. package/lib/core/index.js.map +1 -1
  90. package/lib/core/is-binary.js +2 -118
  91. package/lib/core/is-binary.js.map +1 -1
  92. package/lib/core/logger.js +2 -115
  93. package/lib/core/logger.js.map +1 -1
  94. package/lib/core/no-op.js +2 -12
  95. package/lib/core/no-op.js.map +1 -1
  96. package/lib/core/optional.js +2 -31
  97. package/lib/core/optional.js.map +1 -1
  98. package/lib/core/path.js +2 -68
  99. package/lib/core/path.js.map +1 -1
  100. package/lib/core/stream.js +2 -63
  101. package/lib/core/stream.js.map +1 -1
  102. package/lib/frameworks/apollo-server/apollo-server.framework.js +2 -87
  103. package/lib/frameworks/apollo-server/apollo-server.framework.js.map +1 -1
  104. package/lib/frameworks/apollo-server/index.js +2 -18
  105. package/lib/frameworks/apollo-server/index.js.map +1 -1
  106. package/lib/frameworks/body-parser/base-body-parser.framework.js +2 -66
  107. package/lib/frameworks/body-parser/base-body-parser.framework.js.map +1 -1
  108. package/lib/frameworks/body-parser/index.js +2 -22
  109. package/lib/frameworks/body-parser/index.js.map +1 -1
  110. package/lib/frameworks/body-parser/json-body-parser.framework.js +2 -29
  111. package/lib/frameworks/body-parser/json-body-parser.framework.js.map +1 -1
  112. package/lib/frameworks/body-parser/raw-body-parser.framework.js +2 -29
  113. package/lib/frameworks/body-parser/raw-body-parser.framework.js.map +1 -1
  114. package/lib/frameworks/body-parser/text-body-parser.framework.js +2 -29
  115. package/lib/frameworks/body-parser/text-body-parser.framework.js.map +1 -1
  116. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js +2 -29
  117. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js.map +1 -1
  118. package/lib/frameworks/cors/cors.framework.js +3 -145
  119. package/lib/frameworks/cors/cors.framework.js.map +1 -1
  120. package/lib/frameworks/cors/index.js +2 -18
  121. package/lib/frameworks/cors/index.js.map +1 -1
  122. package/lib/frameworks/deepkit/http-deepkit.framework.js +2 -33
  123. package/lib/frameworks/deepkit/http-deepkit.framework.js.map +1 -1
  124. package/lib/frameworks/deepkit/index.js +2 -18
  125. package/lib/frameworks/deepkit/index.js.map +1 -1
  126. package/lib/frameworks/express/express.framework.js +2 -22
  127. package/lib/frameworks/express/express.framework.js.map +1 -1
  128. package/lib/frameworks/express/index.js +2 -18
  129. package/lib/frameworks/express/index.js.map +1 -1
  130. package/lib/frameworks/fastify/fastify.framework.js +2 -23
  131. package/lib/frameworks/fastify/fastify.framework.js.map +1 -1
  132. package/lib/frameworks/fastify/helpers/no-op-content-parser.js +2 -27
  133. package/lib/frameworks/fastify/helpers/no-op-content-parser.js.map +1 -1
  134. package/lib/frameworks/fastify/index.js +2 -18
  135. package/lib/frameworks/fastify/index.js.map +1 -1
  136. package/lib/frameworks/hapi/hapi.framework.js +2 -23
  137. package/lib/frameworks/hapi/hapi.framework.js.map +1 -1
  138. package/lib/frameworks/hapi/index.js +2 -18
  139. package/lib/frameworks/hapi/index.js.map +1 -1
  140. package/lib/frameworks/koa/index.js +2 -18
  141. package/lib/frameworks/koa/index.js.map +1 -1
  142. package/lib/frameworks/koa/koa.framework.js +2 -22
  143. package/lib/frameworks/koa/koa.framework.js.map +1 -1
  144. package/lib/frameworks/lazy/index.js +2 -18
  145. package/lib/frameworks/lazy/index.js.map +1 -1
  146. package/lib/frameworks/lazy/lazy.framework.js +2 -82
  147. package/lib/frameworks/lazy/lazy.framework.js.map +1 -1
  148. package/lib/frameworks/trpc/index.js +2 -18
  149. package/lib/frameworks/trpc/index.js.map +1 -1
  150. package/lib/frameworks/trpc/trpc.framework.js +2 -153
  151. package/lib/frameworks/trpc/trpc.framework.js.map +1 -1
  152. package/lib/handlers/aws/aws-stream.handler.js +2 -169
  153. package/lib/handlers/aws/aws-stream.handler.js.map +1 -1
  154. package/lib/handlers/aws/index.js +2 -18
  155. package/lib/handlers/aws/index.js.map +1 -1
  156. package/lib/handlers/azure/azure.handler.js +2 -74
  157. package/lib/handlers/azure/azure.handler.js.map +1 -1
  158. package/lib/handlers/azure/index.js +2 -18
  159. package/lib/handlers/azure/index.js.map +1 -1
  160. package/lib/handlers/base/index.js +2 -18
  161. package/lib/handlers/base/index.js.map +1 -1
  162. package/lib/handlers/base/raw-request.js +2 -65
  163. package/lib/handlers/base/raw-request.js.map +1 -1
  164. package/lib/handlers/default/default.handler.js +2 -191
  165. package/lib/handlers/default/default.handler.js.map +1 -1
  166. package/lib/handlers/default/index.js +2 -18
  167. package/lib/handlers/default/index.js.map +1 -1
  168. package/lib/handlers/digital-ocean/digital-ocean.handler.js +2 -34
  169. package/lib/handlers/digital-ocean/digital-ocean.handler.js.map +1 -1
  170. package/lib/handlers/digital-ocean/index.js +2 -18
  171. package/lib/handlers/digital-ocean/index.js.map +1 -1
  172. package/lib/handlers/firebase/http-firebase-v2.handler.js +2 -50
  173. package/lib/handlers/firebase/http-firebase-v2.handler.js.map +1 -1
  174. package/lib/handlers/firebase/http-firebase.handler.js +2 -27
  175. package/lib/handlers/firebase/http-firebase.handler.js.map +1 -1
  176. package/lib/handlers/firebase/index.js +2 -19
  177. package/lib/handlers/firebase/index.js.map +1 -1
  178. package/lib/handlers/gcp/gcp.handler.js +2 -40
  179. package/lib/handlers/gcp/gcp.handler.js.map +1 -1
  180. package/lib/handlers/gcp/index.js +2 -18
  181. package/lib/handlers/gcp/index.js.map +1 -1
  182. package/lib/handlers/huawei/http-huawei.handler.js +2 -106
  183. package/lib/handlers/huawei/http-huawei.handler.js.map +1 -1
  184. package/lib/handlers/huawei/index.js +2 -18
  185. package/lib/handlers/huawei/index.js.map +1 -1
  186. package/lib/index.doc.js +2 -0
  187. package/lib/index.doc.js.map +1 -0
  188. package/lib/index.js +2 -22
  189. package/lib/index.js.map +1 -1
  190. package/lib/network/index.js +2 -21
  191. package/lib/network/index.js.map +1 -1
  192. package/lib/network/request.js +2 -46
  193. package/lib/network/request.js.map +1 -1
  194. package/lib/network/response-stream.js +7 -88
  195. package/lib/network/response-stream.js.map +1 -1
  196. package/lib/network/response.js +4 -127
  197. package/lib/network/response.js.map +1 -1
  198. package/lib/network/utils.js +2 -21
  199. package/lib/network/utils.js.map +1 -1
  200. package/lib/resolvers/aws-context/aws-context.resolver.js +2 -59
  201. package/lib/resolvers/aws-context/aws-context.resolver.js.map +1 -1
  202. package/lib/resolvers/aws-context/index.js +2 -18
  203. package/lib/resolvers/aws-context/index.js.map +1 -1
  204. package/lib/resolvers/callback/callback.resolver.js +2 -53
  205. package/lib/resolvers/callback/callback.resolver.js.map +1 -1
  206. package/lib/resolvers/callback/index.js +2 -18
  207. package/lib/resolvers/callback/index.js.map +1 -1
  208. package/lib/resolvers/dummy/dummy.resolver.js +2 -24
  209. package/lib/resolvers/dummy/dummy.resolver.js.map +1 -1
  210. package/lib/resolvers/dummy/index.js +2 -18
  211. package/lib/resolvers/dummy/index.js.map +1 -1
  212. package/lib/resolvers/promise/index.js +2 -18
  213. package/lib/resolvers/promise/index.js.map +1 -1
  214. package/lib/resolvers/promise/promise.resolver.js +2 -48
  215. package/lib/resolvers/promise/promise.resolver.js.map +1 -1
  216. package/lib/serverless-adapter.js +2 -176
  217. package/lib/serverless-adapter.js.map +1 -1
  218. package/package.json +61 -79
  219. package/lib/@types/binary-settings.d.ts +0 -43
  220. package/lib/@types/digital-ocean/digital-ocean-http-event.d.ts +0 -37
  221. package/lib/@types/digital-ocean/digital-ocean-http-response.d.ts +0 -22
  222. package/lib/@types/digital-ocean/index.d.ts +0 -1
  223. package/lib/@types/headers.d.ts +0 -39
  224. package/lib/@types/helpers.d.ts +0 -10
  225. package/lib/@types/huawei/huawei-api-gateway-event.d.ts +0 -84
  226. package/lib/@types/huawei/huawei-api-gateway-response.d.ts +0 -27
  227. package/lib/@types/huawei/huawei-context.d.ts +0 -203
  228. package/lib/@types/huawei/index.d.ts +0 -3
  229. package/lib/@types/index.d.ts +0 -3
  230. package/lib/adapters/apollo-server/apollo-server-mutation.adapter.d.ts +0 -56
  231. package/lib/adapters/apollo-server/index.d.ts +0 -1
  232. package/lib/adapters/aws/alb.adapter.d.ts +0 -66
  233. package/lib/adapters/aws/api-gateway-v1.adapter.d.ts +0 -71
  234. package/lib/adapters/aws/api-gateway-v2.adapter.d.ts +0 -70
  235. package/lib/adapters/aws/base/aws-simple-adapter.d.ts +0 -85
  236. package/lib/adapters/aws/base/index.d.ts +0 -1
  237. package/lib/adapters/aws/dynamodb.adapter.d.ts +0 -56
  238. package/lib/adapters/aws/event-bridge.adapter.d.ts +0 -64
  239. package/lib/adapters/aws/index.d.ts +0 -10
  240. package/lib/adapters/aws/lambda-edge.adapter.d.ts +0 -213
  241. package/lib/adapters/aws/s3.adapter.d.ts +0 -56
  242. package/lib/adapters/aws/sns.adapter.d.ts +0 -56
  243. package/lib/adapters/aws/sqs.adapter.d.ts +0 -56
  244. package/lib/adapters/azure/http-trigger-v4.adapter.d.ts +0 -81
  245. package/lib/adapters/azure/index.d.ts +0 -1
  246. package/lib/adapters/digital-ocean/http-function.adapter.d.ts +0 -65
  247. package/lib/adapters/digital-ocean/index.d.ts +0 -1
  248. package/lib/adapters/dummy/dummy.adapter.d.ts +0 -30
  249. package/lib/adapters/dummy/index.d.ts +0 -1
  250. package/lib/adapters/huawei/huawei-api-gateway.adapter.d.ts +0 -66
  251. package/lib/adapters/huawei/index.d.ts +0 -1
  252. package/lib/contracts/adapter.contract.d.ts +0 -155
  253. package/lib/contracts/framework.contract.d.ts +0 -19
  254. package/lib/contracts/handler.contract.d.ts +0 -26
  255. package/lib/contracts/index.d.ts +0 -4
  256. package/lib/contracts/resolver.contract.d.ts +0 -86
  257. package/lib/core/base-handler.d.ts +0 -31
  258. package/lib/core/constants.d.ts +0 -31
  259. package/lib/core/current-invoke.d.ts +0 -48
  260. package/lib/core/event-body.d.ts +0 -21
  261. package/lib/core/headers.d.ts +0 -47
  262. package/lib/core/index.d.ts +0 -11
  263. package/lib/core/is-binary.d.ts +0 -72
  264. package/lib/core/logger.d.ts +0 -67
  265. package/lib/core/no-op.d.ts +0 -7
  266. package/lib/core/optional.d.ts +0 -21
  267. package/lib/core/path.d.ts +0 -36
  268. package/lib/core/stream.d.ts +0 -20
  269. package/lib/frameworks/apollo-server/apollo-server.framework.d.ts +0 -71
  270. package/lib/frameworks/apollo-server/index.d.ts +0 -1
  271. package/lib/frameworks/body-parser/base-body-parser.framework.d.ts +0 -69
  272. package/lib/frameworks/body-parser/index.d.ts +0 -5
  273. package/lib/frameworks/body-parser/json-body-parser.framework.d.ts +0 -26
  274. package/lib/frameworks/body-parser/raw-body-parser.framework.d.ts +0 -26
  275. package/lib/frameworks/body-parser/text-body-parser.framework.d.ts +0 -26
  276. package/lib/frameworks/body-parser/urlencoded-body-parser.framework.d.ts +0 -26
  277. package/lib/frameworks/cors/cors.framework.d.ts +0 -78
  278. package/lib/frameworks/cors/index.d.ts +0 -1
  279. package/lib/frameworks/deepkit/http-deepkit.framework.d.ts +0 -17
  280. package/lib/frameworks/deepkit/index.d.ts +0 -1
  281. package/lib/frameworks/express/express.framework.d.ts +0 -16
  282. package/lib/frameworks/express/index.d.ts +0 -1
  283. package/lib/frameworks/fastify/fastify.framework.d.ts +0 -16
  284. package/lib/frameworks/fastify/helpers/no-op-content-parser.d.ts +0 -13
  285. package/lib/frameworks/fastify/index.d.ts +0 -1
  286. package/lib/frameworks/hapi/hapi.framework.d.ts +0 -16
  287. package/lib/frameworks/hapi/index.d.ts +0 -1
  288. package/lib/frameworks/koa/index.d.ts +0 -1
  289. package/lib/frameworks/koa/koa.framework.d.ts +0 -16
  290. package/lib/frameworks/lazy/index.d.ts +0 -1
  291. package/lib/frameworks/lazy/lazy.framework.d.ts +0 -55
  292. package/lib/frameworks/trpc/index.d.ts +0 -1
  293. package/lib/frameworks/trpc/trpc.framework.d.ts +0 -155
  294. package/lib/handlers/aws/aws-stream.handler.d.ts +0 -83
  295. package/lib/handlers/aws/index.d.ts +0 -1
  296. package/lib/handlers/azure/azure.handler.d.ts +0 -45
  297. package/lib/handlers/azure/index.d.ts +0 -1
  298. package/lib/handlers/base/index.d.ts +0 -1
  299. package/lib/handlers/base/raw-request.d.ts +0 -30
  300. package/lib/handlers/default/default.handler.d.ts +0 -87
  301. package/lib/handlers/default/index.d.ts +0 -1
  302. package/lib/handlers/digital-ocean/digital-ocean.handler.d.ts +0 -16
  303. package/lib/handlers/digital-ocean/index.d.ts +0 -1
  304. package/lib/handlers/firebase/http-firebase-v2.handler.d.ts +0 -26
  305. package/lib/handlers/firebase/http-firebase.handler.d.ts +0 -18
  306. package/lib/handlers/firebase/index.d.ts +0 -2
  307. package/lib/handlers/gcp/gcp.handler.d.ts +0 -25
  308. package/lib/handlers/gcp/index.d.ts +0 -1
  309. package/lib/handlers/huawei/http-huawei.handler.d.ts +0 -59
  310. package/lib/handlers/huawei/index.d.ts +0 -1
  311. package/lib/index.d.ts +0 -5
  312. package/lib/network/index.d.ts +0 -4
  313. package/lib/network/request.d.ts +0 -44
  314. package/lib/network/response-stream.d.ts +0 -41
  315. package/lib/network/response.d.ts +0 -48
  316. package/lib/network/utils.d.ts +0 -7
  317. package/lib/resolvers/aws-context/aws-context.resolver.d.ts +0 -18
  318. package/lib/resolvers/aws-context/index.d.ts +0 -1
  319. package/lib/resolvers/callback/callback.resolver.d.ts +0 -23
  320. package/lib/resolvers/callback/index.d.ts +0 -1
  321. package/lib/resolvers/dummy/dummy.resolver.d.ts +0 -13
  322. package/lib/resolvers/dummy/index.d.ts +0 -1
  323. package/lib/resolvers/promise/index.d.ts +0 -1
  324. package/lib/resolvers/promise/promise.resolver.d.ts +0 -13
  325. package/lib/serverless-adapter.d.ts +0 -118
@@ -1 +1 @@
1
- {"version":3,"file":"alb.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/alb.adapter.ts"],"names":[],"mappings":";;;sCAQO,iBAAiB;+CAAjB,iBAAiB;oCAAjB,iBAAiB;AACxB,qCAMoB;;;AAmBpB;;;;;;;;;;;;;GAaG;AACH,MAAa,UAAU;IAGrB,qBAAqB;IAErB;;;;OAIG;IACH,YAA+B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE9D,YAAY;IAEZ,wBAAwB;IAExB;;OAEG;IACI,cAAc;QACnB,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAc;QAC7B,MAAM,QAAQ,GAAG,KAA0B,CAAC;QAE5C,OAAO,CAAC,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,KAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAe;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB;YACrC,CAAC,CAAC,IAAA,6BAAsB,EAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC;YAC5D,CAAC,CAAC,KAAK,CAAC,OAAQ,CAAC;QAEnB,IAAI,IAAwB,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAI,EAAE;YACd,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,2BAAoB,EACtD,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,eAAe,CACtB,CAAC;YAEF,IAAI,GAAG,UAAU,CAAC;YAClB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;SACnD;QAED,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,oHAAoH;QACpH,IAAI,OAAO,CAAC,iBAAiB,CAAC;YAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAE3E,OAAO;YACL,MAAM;YACN,OAAO;YACP,IAAI;YACJ,aAAa;YACb,IAAI;SACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,EACjB,KAAK,EACL,OAAO,EAAE,eAAe,EACxB,IAAI,EACJ,eAAe,EACf,UAAU,GACwB;QAClC,MAAM,iBAAiB,GAAG,CAAC,KAAK,CAAC,OAAO;YACtC,CAAC,CAAC,IAAA,8BAAuB,EAAC,eAAe,CAAC;YAC1C,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;YAC3B,CAAC,CAAC,IAAA,6BAAsB,EAAC,eAAe,CAAC;YACzC,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO;YACL,UAAU;YACV,IAAI;YACJ,OAAO;YACP,iBAAiB;YACjB,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,EAC5B,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,GAAG,GAC+B;QAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,KAAK;YACL,UAAU,EAAE,GAAG;YACf,IAAI;YACJ,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,KAAK;YACtB,GAAG;SACJ,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY;IAEZ,2BAA2B;IAE3B;;;;OAIG;IACO,gBAAgB,CAAC,KAAe;;QACxC,MAAM,aAAa,GAAG,IAAA,4BAAqB,EACzC,MAAA,IAAI,CAAC,OAAO,0CAAE,aAAa,EAC3B,EAAE,CACH,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;YAC/B,CAAC,CAAC,KAAK,CAAC,qBAAqB;YAC7B,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC;QAE1C,OAAO,IAAA,mCAA4B,EAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;;AA7IH,gCAgJC"}
1
+ {"version":3,"file":"alb.adapter.js","sources":["../../../src/adapters/aws/alb.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { ALBEvent, ALBResult, Context } from 'aws-lambda';\nimport {\n AdapterContract,\n AdapterRequest,\n GetResponseAdapterProps,\n OnErrorProps,\n} from '../../contracts';\nimport {\n StripBasePathFn,\n buildStripBasePath,\n getEventBodyAsBuffer,\n getFlattenedHeadersMap,\n getMultiValueHeadersMap,\n getPathWithQueryStringParams,\n} from '../../core';\n\n//#endregion\n\n/**\n * The options to customize the {@link AlbAdapter}\n *\n * @breadcrumb Adapters / AWS / AlbAdapter\n * @public\n */\nexport interface AlbAdapterOptions {\n /**\n * Strip base path for custom domains\n *\n * @defaultValue ''\n */\n stripBasePath?: string;\n}\n\n/**\n * The adapter to handle requests from AWS ALB\n *\n * @example\n * ```typescript\n * const stripBasePath = '/any/custom/base/path'; // default ''\n * const adapter = new AlbAdapter({ stripBasePath });\n * ```\n *\n * {@link https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html | Event Reference}\n *\n * @breadcrumb Adapters / AWS / AlbAdapter\n * @public\n */\nexport class AlbAdapter\n implements AdapterContract<ALBEvent, Context, ALBResult>\n{\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link AlbAdapter}\n */\n constructor(protected readonly options?: AlbAdapterOptions) {\n this.stripPathFn = buildStripBasePath(this.options?.stripBasePath);\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * Strip base path function\n */\n protected stripPathFn: StripBasePathFn;\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return AlbAdapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is ALBEvent {\n const albEvent = event as Partial<ALBEvent>;\n\n return !!(albEvent?.requestContext && albEvent.requestContext.elb);\n }\n\n /**\n * {@inheritDoc}\n */\n public getRequest(event: ALBEvent): AdapterRequest {\n const method = event.httpMethod;\n const path = this.getPathFromEvent(event);\n\n const headers = event.multiValueHeaders\n ? getFlattenedHeadersMap(event.multiValueHeaders, ',', true)\n : event.headers!;\n\n let body: Buffer | undefined;\n\n if (event.body) {\n const [bufferBody, contentLength] = getEventBodyAsBuffer(\n event.body,\n event.isBase64Encoded,\n );\n\n body = bufferBody;\n headers['content-length'] = String(contentLength);\n }\n\n let remoteAddress = '';\n\n // ref: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/x-forwarded-headers.html#x-forwarded-for\n if (headers['x-forwarded-for']) remoteAddress = headers['x-forwarded-for'];\n\n return {\n method,\n headers,\n body,\n remoteAddress,\n path,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public getResponse({\n event,\n headers: responseHeaders,\n body,\n isBase64Encoded,\n statusCode,\n }: GetResponseAdapterProps<ALBEvent>): ALBResult {\n const multiValueHeaders = !event.headers\n ? getMultiValueHeadersMap(responseHeaders)\n : undefined;\n\n const headers = event.headers\n ? getFlattenedHeadersMap(responseHeaders)\n : undefined;\n\n return {\n statusCode,\n body,\n headers,\n multiValueHeaders,\n isBase64Encoded,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public onErrorWhileForwarding({\n error,\n delegatedResolver,\n respondWithErrors,\n event,\n log,\n }: OnErrorProps<ALBEvent, ALBResult>): void {\n const body = respondWithErrors ? error.stack || '' : '';\n const errorResponse = this.getResponse({\n event,\n statusCode: 500,\n body,\n headers: {},\n isBase64Encoded: false,\n log,\n });\n\n delegatedResolver.succeed(errorResponse);\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Get path from event with query strings\n *\n * @param event - The event sent by serverless\n */\n protected getPathFromEvent(event: ALBEvent): string {\n const path = this.stripPathFn(event.path);\n\n const queryParams = event.headers\n ? event.queryStringParameters\n : event.multiValueQueryStringParameters;\n\n return getPathWithQueryStringParams(path, queryParams || {});\n }\n\n //#endregion\n}\n"],"names":["alb_adapter_exports","__export","AlbAdapter","__toCommonJS","import_core","options","_a","event","albEvent","method","path","headers","body","bufferBody","contentLength","remoteAddress","responseHeaders","isBase64Encoded","statusCode","multiValueHeaders","error","delegatedResolver","respondWithErrors","log","errorResponse","queryParams"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,WAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EASA,IAOOI,EAAA,QAAA,YAAA,EAiCA,MAAMF,CAEb,CAQE,YAA+BG,EAA6B,OAA7B,KAAA,QAAAA,EAC7B,KAAK,eAAcD,EAAA,qBAAmBE,EAAA,KAAK,UAAL,YAAAA,EAAc,aAAa,CACnE,CAkBO,gBAAyB,CAC9B,OAAOJ,EAAW,IACpB,CAKO,UAAUK,EAAmC,CAClD,MAAMC,EAAWD,EAEjB,MAAO,CAAC,EAAEC,GAAA,MAAAA,EAAU,gBAAkBA,EAAS,eAAe,IAChE,CAKO,WAAWD,EAAiC,CACjD,MAAME,EAASF,EAAM,WACfG,EAAO,KAAK,iBAAiBH,CAAK,EAElCI,EAAUJ,EAAM,qBAClBH,EAAA,wBAAuBG,EAAM,kBAAmB,IAAK,EAAI,EACzDA,EAAM,QAEN,IAAAK,EAEJ,GAAIL,EAAM,KAAM,CACR,KAAA,CAACM,EAAYC,CAAa,KAAIV,EAAA,sBAClCG,EAAM,KACNA,EAAM,eAAA,EAGDK,EAAAC,EACCF,EAAA,gBAAgB,EAAI,OAAOG,CAAa,EAGlD,IAAIC,EAAgB,GAGpB,OAAIJ,EAAQ,iBAAiB,IAAGI,EAAgBJ,EAAQ,iBAAiB,GAElE,CACL,OAAAF,EACA,QAAAE,EACA,KAAAC,EACA,cAAAG,EACA,KAAAL,CAAA,CAEJ,CAKO,YAAY,CACjB,MAAAH,EACA,QAASS,EACT,KAAAJ,EACA,gBAAAK,EACA,WAAAC,CAAA,EAC+C,CAC/C,MAAMC,EAAqBZ,EAAM,QAE7B,UADAH,EAAA,yBAAwBY,CAAe,EAGrCL,EAAUJ,EAAM,WAClBH,EAAA,wBAAuBY,CAAe,EACtC,OAEG,MAAA,CACL,WAAAE,EACA,KAAAN,EACA,QAAAD,EACA,kBAAAQ,EACA,gBAAAF,CAAA,CAEJ,CAKO,uBAAuB,CAC5B,MAAAG,EACA,kBAAAC,EACA,kBAAAC,EACA,MAAAf,EACA,IAAAgB,CAAA,EAC0C,CAC1C,MAAMX,EAAOU,GAAoBF,EAAM,OAAS,GAC1CI,EAAgB,KAAK,YAAY,CACrC,MAAAjB,EACA,WAAY,IACZ,KAAAK,EACA,QAAS,CAAC,EACV,gBAAiB,GACjB,IAAAW,CAAA,CACD,EAEDF,EAAkB,QAAQG,CAAa,CACzC,CAWU,iBAAiBjB,EAAyB,CAClD,MAAMG,EAAO,KAAK,YAAYH,EAAM,IAAI,EAElCkB,EAAclB,EAAM,QACtBA,EAAM,sBACNA,EAAM,gCAEV,SAAOH,EAA6B,8BAAAM,EAAMe,GAAe,CAAE,CAAA,CAC7D,CAGF"}
@@ -1,140 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiGatewayV1Adapter = exports.__ΩApiGatewayV1Options = void 0;
4
- const { __ΩAdapterRequest } = require('../../contracts');
5
- const { __ΩGetResponseAdapterProps } = require('../../contracts');
6
- const { __ΩOnErrorProps } = require('../../contracts');
7
- function __assignType(fn, args) {
8
- fn.__type = args;
9
- return fn;
10
- }
11
- const core_1 = require("../../core");
12
- const __ΩApiGatewayV1Options = ['stripBasePath', 'P&4!8M'];
13
- exports.__ΩApiGatewayV1Options = __ΩApiGatewayV1Options;
14
- /**
15
- * The adapter to handle requests from AWS Api Gateway V1
16
- *
17
- * As per {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html | know issues}, we throw an exception when you send the `transfer-encoding=chunked`, currently, API Gateway doesn't support chunked transfer.
18
- *
19
- * @remarks This adapter is not fully compatible with \@vendia/serverless-express, on \@vendia they filter `transfer-encoding=chunked` but we throw an exception.
20
- *
21
- * @example
22
- * ```typescript
23
- * const stripBasePath = '/any/custom/base/path'; // default ''
24
- * const adapter = new ApiGatewayV1Adapter({ stripBasePath });
25
- * ```
26
- *
27
- * {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html | Event Reference}
28
- *
29
- * @breadcrumb Adapters / AWS / ApiGatewayV1Adapter
30
- * @public
31
- */
32
- class ApiGatewayV1Adapter {
33
- //#region Constructor
34
- /**
35
- * Default constructor
36
- *
37
- * @param options - The options to customize the {@link ApiGatewayV1Adapter}
38
- */
39
- constructor(options) {
40
- this.options = options;
41
- }
42
- //#endregion
43
- //#region Public Methods
44
- /**
45
- * {@inheritDoc}
46
- */
47
- getAdapterName() {
48
- return ApiGatewayV1Adapter.name;
49
- }
50
- /**
51
- * {@inheritDoc}
52
- */
53
- canHandle(event) {
54
- const partialEventV1 = event;
55
- return !!((partialEventV1 === null || partialEventV1 === void 0 ? void 0 : partialEventV1.requestContext) &&
56
- partialEventV1.version !== '2.0' &&
57
- partialEventV1.headers &&
58
- partialEventV1.multiValueHeaders &&
59
- ((partialEventV1.queryStringParameters === null &&
60
- partialEventV1.multiValueQueryStringParameters === null) ||
61
- (partialEventV1.queryStringParameters &&
62
- partialEventV1.multiValueQueryStringParameters)));
63
- }
64
- /**
65
- * {@inheritDoc}
66
- */
67
- getRequest(event) {
68
- const method = event.httpMethod;
69
- const headers = (0, core_1.getFlattenedHeadersMap)(event.headers, ',', true);
70
- const path = this.getPathFromEvent(event);
71
- let body;
72
- if (event.body) {
73
- const [bufferBody, contentLength] = (0, core_1.getEventBodyAsBuffer)(event.body, event.isBase64Encoded);
74
- body = bufferBody;
75
- headers['content-length'] = String(contentLength);
76
- }
77
- const remoteAddress = event.requestContext.identity.sourceIp;
78
- return {
79
- method,
80
- headers,
81
- body,
82
- remoteAddress,
83
- path,
84
- };
85
- }
86
- /**
87
- * {@inheritDoc}
88
- */
89
- getResponse({ headers: responseHeaders, body, isBase64Encoded, statusCode, response, }) {
90
- const multiValueHeaders = (0, core_1.getMultiValueHeadersMap)(responseHeaders);
91
- const transferEncodingHeader = multiValueHeaders['transfer-encoding'];
92
- const hasTransferEncodingChunked = transferEncodingHeader &&
93
- transferEncodingHeader.some(__assignType(value => value.includes('chunked'), ['value', '', 'P"2!"/"']));
94
- if (hasTransferEncodingChunked) {
95
- throw new Error('chunked encoding in headers is not supported by API Gateway V1');
96
- }
97
- if (response === null || response === void 0 ? void 0 : response.chunkedEncoding) {
98
- throw new Error('chunked encoding in response is not supported by API Gateway V1');
99
- }
100
- return {
101
- statusCode,
102
- body,
103
- multiValueHeaders,
104
- isBase64Encoded,
105
- };
106
- }
107
- /**
108
- * {@inheritDoc}
109
- */
110
- onErrorWhileForwarding({ error, delegatedResolver, respondWithErrors, event, log, }) {
111
- const body = respondWithErrors ? error.stack : '';
112
- const errorResponse = this.getResponse({
113
- event,
114
- statusCode: 500,
115
- body: body || '',
116
- headers: {},
117
- isBase64Encoded: false,
118
- log,
119
- });
120
- delegatedResolver.succeed(errorResponse);
121
- }
122
- //#endregion
123
- //#region Protected Methods
124
- /**
125
- * Get path from event with query strings
126
- *
127
- * @param event - The event sent by serverless
128
- */
129
- getPathFromEvent(event) {
130
- var _a;
131
- const stripBasePath = (0, core_1.getDefaultIfUndefined)((_a = this.options) === null || _a === void 0 ? void 0 : _a.stripBasePath, '');
132
- const replaceRegex = new RegExp(`^${stripBasePath}`);
133
- const path = event.path.replace(replaceRegex, '');
134
- const queryParams = event.queryStringParameters || {};
135
- return (0, core_1.getPathWithQueryStringParams)(path, queryParams);
136
- }
137
- }
138
- exports.ApiGatewayV1Adapter = ApiGatewayV1Adapter;
139
- ApiGatewayV1Adapter.__type = [() => __ΩApiGatewayV1Options, 'options', 'constructor', 'getAdapterName', 'event', 'canHandle', () => __ΩAdapterRequest, 'getRequest', () => __ΩGetResponseAdapterProps, 'param0', 'getResponse', () => __ΩOnErrorProps, 'onErrorWhileForwarding', 'getPathFromEvent', 'Pn!2"8<9"0#P&0$P#2%!0&P"2%n\'0(P"o)"2*"0+P""o,#2*$0-P"2%&0.<5"""6$'];
140
- //# sourceMappingURL=api-gateway-v1.adapter.js.map
1
+ "use strict";var d=Object.defineProperty,l=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,m=(i,e)=>{for(var t in e)d(i,t,{get:e[t],enumerable:!0})},f=(i,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of g(e))!P.call(i,r)&&r!==t&&d(i,r,{get:()=>e[r],enumerable:!(a=l(e,r))||a.enumerable});return i},_=i=>f(d({},"__esModule",{value:!0}),i),y={};m(y,{ApiGatewayV1Adapter:()=>h});module.exports=_(y);var c=require("../../core");class h{constructor(e){var t;this.options=e,this.stripPathFn=(0,c.buildStripBasePath)((t=this.options)==null?void 0:t.stripBasePath)}getAdapterName(){return h.name}canHandle(e){const t=e;return!!(t!=null&&t.requestContext&&t.version!=="2.0"&&t.headers&&t.multiValueHeaders&&(t.queryStringParameters===null&&t.multiValueQueryStringParameters===null||t.queryStringParameters&&t.multiValueQueryStringParameters))}getRequest(e){const t=e.httpMethod,a={...e.headers};for(const n of Object.keys(e.multiValueHeaders||{})){const o=e.multiValueHeaders[n];!o||(o==null?void 0:o.length)<=1||(a[n]=o.join(","))}const r=this.getPathFromEvent(e);let s;if(e.body){const[n,o]=(0,c.getEventBodyAsBuffer)(e.body,e.isBase64Encoded);s=n,a["content-length"]=o+""}const u=e.requestContext.identity.sourceIp;return{method:t,headers:a,body:s,remoteAddress:u,path:r}}getResponse({headers:e,body:t,isBase64Encoded:a,statusCode:r,response:s}){const u=(0,c.getMultiValueHeadersMap)(e),n=u["transfer-encoding"];if(n==null?void 0:n.some(p=>p.includes("chunked")))throw new Error("chunked encoding in headers is not supported by API Gateway V1");if(s!=null&&s.chunkedEncoding)throw new Error("chunked encoding in response is not supported by API Gateway V1");return{statusCode:r,body:t,multiValueHeaders:u,isBase64Encoded:a}}onErrorWhileForwarding({error:e,delegatedResolver:t,respondWithErrors:a,event:r,log:s}){const u=a?e.stack:"",n=this.getResponse({event:r,statusCode:500,body:u||"",headers:{},isBase64Encoded:!1,log:s});t.succeed(n)}getPathFromEvent(e){const t=this.stripPathFn(e.path),a=e.multiValueQueryStringParameters||{};if(e.queryStringParameters)for(const r of Object.keys(e.queryStringParameters)){const s=e.queryStringParameters[r];s!==void 0&&(Array.isArray(a[r])||(a[r]=[]),!a[r].includes(s)&&a[r].push(s))}return(0,c.getPathWithQueryStringParams)(t,a)}}
2
+ //# sourceMappingURL=api-gateway-v1.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-gateway-v1.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/api-gateway-v1.adapter.ts"],"names":[],"mappings":";;;sCASO,iBAAiB;+CAAjB,iBAAiB;oCAAjB,iBAAiB;;;;;AACxB,qCAMoB;;;AAmBpB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,mBAAmB;IAI9B,qBAAqB;IAErB;;;;OAIG;IACH,YAA+B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAEhE,YAAY;IAEZ,wBAAwB;IAExB;;OAEG;IACI,cAAc;QACnB,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAc;QAC7B,MAAM,cAAc,GAAG,KAEtB,CAAC;QAEF,OAAO,CAAC,CAAC,CACP,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,cAAc;YAC9B,cAAc,CAAC,OAAO,KAAK,KAAK;YAChC,cAAc,CAAC,OAAO;YACtB,cAAc,CAAC,iBAAiB;YAChC,CAAC,CAAC,cAAc,CAAC,qBAAqB,KAAK,IAAI;gBAC7C,cAAc,CAAC,+BAA+B,KAAK,IAAI,CAAC;gBACxD,CAAC,cAAc,CAAC,qBAAqB;oBACnC,cAAc,CAAC,+BAA+B,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAA2B;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,MAAM,OAAO,GAAG,IAAA,6BAAsB,EAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,IAAwB,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAI,EAAE;YACd,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,2BAAoB,EACtD,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,eAAe,CACtB,CAAC;YAEF,IAAI,GAAG,UAAU,CAAC;YAClB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;SACnD;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAE7D,OAAO;YACL,MAAM;YACN,OAAO;YACP,IAAI;YACJ,aAAa;YACb,IAAI;SACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,EACjB,OAAO,EAAE,eAAe,EACxB,IAAI,EACJ,eAAe,EACf,UAAU,EACV,QAAQ,GACsC;QAC9C,MAAM,iBAAiB,GAAG,IAAA,8BAAuB,EAAC,eAAe,CAAC,CAAC;QAEnE,MAAM,sBAAsB,GAC1B,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAEzC,MAAM,0BAA0B,GAC9B,sBAAsB;YACtB,sBAAsB,CAAC,IAAI,cAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAAC,CAAC;QAElE,IAAI,0BAA0B,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;SACH;QAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;SACH;QAED,OAAO;YACL,UAAU;YACV,IAAI;YACJ,iBAAiB;YACjB,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,EAC5B,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,GAAG,GACuD;QAC1D,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,KAAK;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,KAAK;YACtB,GAAG;SACJ,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY;IAEZ,2BAA2B;IAE3B;;;;OAIG;IACO,gBAAgB,CAAC,KAA2B;;QACpD,MAAM,aAAa,GAAG,IAAA,4BAAqB,EACzC,MAAA,IAAI,CAAC,OAAO,0CAAE,aAAa,EAC3B,EAAE,CACH,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC;QAEtD,OAAO,IAAA,mCAA4B,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;;AA7JH,kDAgKC"}
1
+ {"version":3,"file":"api-gateway-v1.adapter.js","sources":["../../../src/adapters/aws/api-gateway-v1.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { APIGatewayProxyResult, Context } from 'aws-lambda';\nimport type { APIGatewayProxyEvent } from 'aws-lambda/trigger/api-gateway-proxy';\nimport {\n AdapterContract,\n AdapterRequest,\n GetResponseAdapterProps,\n OnErrorProps,\n} from '../../contracts';\nimport {\n StripBasePathFn,\n buildStripBasePath,\n getEventBodyAsBuffer,\n getMultiValueHeadersMap,\n getPathWithQueryStringParams,\n} from '../../core';\n\n//#endregion\n\n/**\n * The options to customize the {@link ApiGatewayV1Adapter}\n *\n * @breadcrumb Adapters / AWS / ApiGatewayV1Adapter\n * @public\n */\nexport interface ApiGatewayV1Options {\n /**\n * Strip base path for custom domains\n *\n * @defaultValue ''\n */\n stripBasePath?: string;\n}\n\n/**\n * The adapter to handle requests from AWS Api Gateway V1\n *\n * As per {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html | know issues}, we throw an exception when you send the `transfer-encoding=chunked`, currently, API Gateway doesn't support chunked transfer.\n *\n * @remarks This adapter is not fully compatible with \\@vendia/serverless-express, on \\@vendia they filter `transfer-encoding=chunked` but we throw an exception.\n *\n * @example\n * ```typescript\n * const stripBasePath = '/any/custom/base/path'; // default ''\n * const adapter = new ApiGatewayV1Adapter({ stripBasePath });\n * ```\n *\n * {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html | Event Reference}\n *\n * @breadcrumb Adapters / AWS / ApiGatewayV1Adapter\n * @public\n */\nexport class ApiGatewayV1Adapter\n implements\n AdapterContract<APIGatewayProxyEvent, Context, APIGatewayProxyResult>\n{\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link ApiGatewayV1Adapter}\n */\n constructor(protected readonly options?: ApiGatewayV1Options) {\n this.stripPathFn = buildStripBasePath(this.options?.stripBasePath);\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * Strip base path function\n */\n protected stripPathFn: StripBasePathFn;\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return ApiGatewayV1Adapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is APIGatewayProxyEvent {\n const partialEventV1 = event as Partial<APIGatewayProxyEvent> & {\n version?: '2.0';\n };\n\n return !!(\n partialEventV1?.requestContext &&\n partialEventV1.version !== '2.0' &&\n partialEventV1.headers &&\n partialEventV1.multiValueHeaders &&\n ((partialEventV1.queryStringParameters === null &&\n partialEventV1.multiValueQueryStringParameters === null) ||\n (partialEventV1.queryStringParameters &&\n partialEventV1.multiValueQueryStringParameters))\n );\n }\n\n /**\n * {@inheritDoc}\n */\n public getRequest(event: APIGatewayProxyEvent): AdapterRequest {\n const method = event.httpMethod;\n const headers = { ...event.headers };\n\n for (const multiValueHeaderKey of Object.keys(\n event.multiValueHeaders || {},\n )) {\n const headerValue = event.multiValueHeaders[multiValueHeaderKey];\n\n // event.headers by default only stick with first value if they see multiple headers\n // the other values will only appear on multiValueHeaderKey, in this case\n // we look for headers with more than 1 length which is the wrong values on event.headers\n // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html\n if (!headerValue || headerValue?.length <= 1) continue;\n\n headers[multiValueHeaderKey] = headerValue.join(',');\n }\n\n const path = this.getPathFromEvent(event);\n\n let body: Buffer | undefined;\n\n if (event.body) {\n const [bufferBody, contentLength] = getEventBodyAsBuffer(\n event.body,\n event.isBase64Encoded,\n );\n\n body = bufferBody;\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n headers['content-length'] = contentLength + '';\n }\n\n const remoteAddress = event.requestContext.identity.sourceIp;\n\n return {\n method,\n headers,\n body,\n remoteAddress,\n path,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public getResponse({\n headers: responseHeaders,\n body,\n isBase64Encoded,\n statusCode,\n response,\n }: GetResponseAdapterProps<APIGatewayProxyEvent>): APIGatewayProxyResult {\n const multiValueHeaders = getMultiValueHeadersMap(responseHeaders);\n\n const transferEncodingHeader = multiValueHeaders['transfer-encoding'];\n const hasTransferEncodingChunked = transferEncodingHeader?.some(value =>\n value.includes('chunked'),\n );\n\n if (hasTransferEncodingChunked) {\n throw new Error(\n 'chunked encoding in headers is not supported by API Gateway V1',\n );\n }\n\n if (response?.chunkedEncoding) {\n throw new Error(\n 'chunked encoding in response is not supported by API Gateway V1',\n );\n }\n\n return {\n statusCode,\n body,\n multiValueHeaders,\n isBase64Encoded,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public onErrorWhileForwarding({\n error,\n delegatedResolver,\n respondWithErrors,\n event,\n log,\n }: OnErrorProps<APIGatewayProxyEvent, APIGatewayProxyResult>): void {\n const body = respondWithErrors ? error.stack : '';\n const errorResponse = this.getResponse({\n event,\n statusCode: 500,\n body: body || '',\n headers: {},\n isBase64Encoded: false,\n log,\n });\n\n delegatedResolver.succeed(errorResponse);\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Get path from event with query strings\n *\n * @param event - The event sent by serverless\n */\n protected getPathFromEvent(event: APIGatewayProxyEvent): string {\n const path = this.stripPathFn(event.path);\n const queryParams = event.multiValueQueryStringParameters || {};\n\n if (event.queryStringParameters) {\n for (const queryStringKey of Object.keys(event.queryStringParameters)) {\n const queryStringValue = event.queryStringParameters[queryStringKey];\n\n if (queryStringValue === undefined) continue;\n\n if (!Array.isArray(queryParams[queryStringKey]))\n queryParams[queryStringKey] = [];\n\n if (queryParams[queryStringKey]!.includes(queryStringValue)) continue;\n\n queryParams[queryStringKey]!.push(queryStringValue);\n }\n }\n\n return getPathWithQueryStringParams(path, queryParams);\n }\n\n //#endregion\n}\n"],"names":["api_gateway_v1_adapter_exports","__export","ApiGatewayV1Adapter","__toCommonJS","import_core","options","_a","event","partialEventV1","method","headers","multiValueHeaderKey","headerValue","path","body","bufferBody","contentLength","remoteAddress","responseHeaders","isBase64Encoded","statusCode","response","multiValueHeaders","transferEncodingHeader","value","error","delegatedResolver","respondWithErrors","log","errorResponse","queryParams","queryStringKey","queryStringValue"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,oBAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EAUA,IAMOI,EAAA,QAAA,YAAA,EAqCA,MAAMF,CAGb,CAQE,YAA+BG,EAA+B,OAA/B,KAAA,QAAAA,EAC7B,KAAK,eAAcD,EAAA,qBAAmBE,EAAA,KAAK,UAAL,YAAAA,EAAc,aAAa,CACnE,CAkBO,gBAAyB,CAC9B,OAAOJ,EAAoB,IAC7B,CAKO,UAAUK,EAA+C,CAC9D,MAAMC,EAAiBD,EAIvB,MAAO,CAAC,EACNC,GAAA,MAAAA,EAAgB,gBAChBA,EAAe,UAAY,OAC3BA,EAAe,SACfA,EAAe,oBACbA,EAAe,wBAA0B,MACzCA,EAAe,kCAAoC,MAClDA,EAAe,uBACdA,EAAe,iCAEvB,CAKO,WAAWD,EAA6C,CAC7D,MAAME,EAASF,EAAM,WACfG,EAAU,CAAE,GAAGH,EAAM,OAAQ,EAEnC,UAAWI,KAAuB,OAAO,KACvCJ,EAAM,mBAAqB,CAAC,CAAA,EAC3B,CACK,MAAAK,EAAcL,EAAM,kBAAkBI,CAAmB,EAM3D,CAACC,IAAeA,GAAA,YAAAA,EAAa,SAAU,IAE3CF,EAAQC,CAAmB,EAAIC,EAAY,KAAK,GAAG,GAG/C,MAAAC,EAAO,KAAK,iBAAiBN,CAAK,EAEpC,IAAAO,EAEJ,GAAIP,EAAM,KAAM,CACR,KAAA,CAACQ,EAAYC,CAAa,KAAIZ,EAAA,sBAClCG,EAAM,KACNA,EAAM,eAAA,EAGDO,EAAAC,EAECL,EAAA,gBAAgB,EAAIM,EAAgB,GAGxC,MAAAC,EAAgBV,EAAM,eAAe,SAAS,SAE7C,MAAA,CACL,OAAAE,EACA,QAAAC,EACA,KAAAI,EACA,cAAAG,EACA,KAAAJ,CAAA,CAEJ,CAKO,YAAY,CACjB,QAASK,EACT,KAAAJ,EACA,gBAAAK,EACA,WAAAC,EACA,SAAAC,CAAA,EACuE,CACjE,MAAAC,KAAoBlB,2BAAwBc,CAAe,EAE3DK,EAAyBD,EAAkB,mBAAmB,EAKpE,GAJmCC,GAAA,YAAAA,EAAwB,KAAKC,GAC9DA,EAAM,SAAS,SAAS,GAIxB,MAAM,IAAI,MACR,gEAAA,EAIJ,GAAIH,GAAA,MAAAA,EAAU,gBACZ,MAAM,IAAI,MACR,iEAAA,EAIG,MAAA,CACL,WAAAD,EACA,KAAAN,EACA,kBAAAQ,EACA,gBAAAH,CAAA,CAEJ,CAKO,uBAAuB,CAC5B,MAAAM,EACA,kBAAAC,EACA,kBAAAC,EACA,MAAApB,EACA,IAAAqB,CAAA,EACkE,CAC5D,MAAAd,EAAOa,EAAoBF,EAAM,MAAQ,GACzCI,EAAgB,KAAK,YAAY,CACrC,MAAAtB,EACA,WAAY,IACZ,KAAMO,GAAQ,GACd,QAAS,CAAC,EACV,gBAAiB,GACjB,IAAAc,CAAA,CACD,EAEDF,EAAkB,QAAQG,CAAa,CACzC,CAWU,iBAAiBtB,EAAqC,CAC9D,MAAMM,EAAO,KAAK,YAAYN,EAAM,IAAI,EAClCuB,EAAcvB,EAAM,iCAAmC,GAE7D,GAAIA,EAAM,sBACR,UAAWwB,KAAkB,OAAO,KAAKxB,EAAM,qBAAqB,EAAG,CAC/D,MAAAyB,EAAmBzB,EAAM,sBAAsBwB,CAAc,EAE/DC,IAAqB,SAEpB,MAAM,QAAQF,EAAYC,CAAc,CAAC,IAChCD,EAAAC,CAAc,EAAI,IAE5B,CAAAD,EAAYC,CAAc,EAAG,SAASC,CAAgB,GAE9CF,EAAAC,CAAc,EAAG,KAAKC,CAAgB,GAI/C,SAAA5B,EAAA,8BAA6BS,EAAMiB,CAAW,CACvD,CAGF"}
@@ -1,134 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiGatewayV2Adapter = exports.__ΩApiGatewayV2Options = void 0;
4
- const { __ΩAdapterRequest } = require('../../contracts');
5
- const { __ΩGetResponseAdapterProps } = require('../../contracts');
6
- const { __ΩOnErrorProps } = require('../../contracts');
7
- const core_1 = require("../../core");
8
- const __ΩApiGatewayV2Options = ['stripBasePath', 'P&4!8M'];
9
- exports.__ΩApiGatewayV2Options = __ΩApiGatewayV2Options;
10
- /**
11
- * The adapter to handle requests from AWS Api Gateway V2
12
- *
13
- * As per {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html | know issues}, we throw an exception when you send the `transfer-encoding=chunked`.
14
- * But, if you use this adapter to accept requests from Function URL, you can accept the `transfer-encoding=chunked` changing the method of invocation from `BUFFERED` to `RESPONSE_STREAM`.
15
- *
16
- * @example
17
- * ```typescript
18
- * const stripBasePath = '/any/custom/base/path'; // default ''
19
- * const adapter = new ApiGatewayV2Adapter({ stripBasePath });
20
- * ```
21
- *
22
- * {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html | Event Reference}
23
- *
24
- * @breadcrumb Adapters / AWS / ApiGatewayV2Adapter
25
- * @public
26
- */
27
- class ApiGatewayV2Adapter {
28
- //#region Constructor
29
- /**
30
- * Default constructor
31
- *
32
- * @param options - The options to customize the {@link ApiGatewayV2Adapter}
33
- */
34
- constructor(options) {
35
- this.options = options;
36
- }
37
- //#endregion
38
- //#region Public Methods
39
- /**
40
- * {@inheritDoc}
41
- */
42
- getAdapterName() {
43
- return ApiGatewayV2Adapter.name;
44
- }
45
- /**
46
- * {@inheritDoc}
47
- */
48
- canHandle(event) {
49
- const apiGatewayEvent = event;
50
- return !!((apiGatewayEvent === null || apiGatewayEvent === void 0 ? void 0 : apiGatewayEvent.requestContext) && apiGatewayEvent.version === '2.0');
51
- }
52
- /**
53
- * {@inheritDoc}
54
- */
55
- getRequest(event) {
56
- const method = event.requestContext.http.method;
57
- const path = this.getPathFromEvent(event);
58
- const headers = (0, core_1.getFlattenedHeadersMap)(event.headers, ',', true);
59
- if (event.cookies)
60
- headers.cookie = event.cookies.join('; ');
61
- let body;
62
- if (event.body) {
63
- const [bufferBody, contentLength] = (0, core_1.getEventBodyAsBuffer)(event.body, event.isBase64Encoded);
64
- body = bufferBody;
65
- headers['content-length'] = String(contentLength);
66
- }
67
- const remoteAddress = event.requestContext.http.sourceIp;
68
- return {
69
- method,
70
- headers,
71
- body,
72
- remoteAddress,
73
- path,
74
- };
75
- }
76
- /**
77
- * {@inheritDoc}
78
- */
79
- getResponse({ headers: responseHeaders, body, isBase64Encoded, statusCode, response, }) {
80
- const headers = (0, core_1.getFlattenedHeadersMap)(responseHeaders);
81
- const multiValueHeaders = (0, core_1.getMultiValueHeadersMap)(responseHeaders);
82
- const transferEncodingHeader = headers['transfer-encoding'];
83
- const hasTransferEncodingChunked = transferEncodingHeader && transferEncodingHeader.includes('chunked');
84
- if (hasTransferEncodingChunked) {
85
- throw new Error('chunked encoding in headers is not supported by API Gateway V2');
86
- }
87
- if (response === null || response === void 0 ? void 0 : response.chunkedEncoding) {
88
- throw new Error('chunked encoding in response is not supported by API Gateway V2');
89
- }
90
- const cookies = multiValueHeaders['set-cookie'];
91
- if (headers)
92
- delete headers['set-cookie'];
93
- return {
94
- statusCode,
95
- body,
96
- headers,
97
- isBase64Encoded,
98
- cookies,
99
- };
100
- }
101
- /**
102
- * {@inheritDoc}
103
- */
104
- onErrorWhileForwarding({ error, delegatedResolver, respondWithErrors, event, log, }) {
105
- const body = respondWithErrors ? error.stack : '';
106
- const errorResponse = this.getResponse({
107
- event,
108
- statusCode: 500,
109
- body: body || '',
110
- headers: {},
111
- isBase64Encoded: false,
112
- log,
113
- });
114
- delegatedResolver.succeed(errorResponse);
115
- }
116
- //#endregion
117
- //#region Protected Methods
118
- /**
119
- * Get path from event with query strings
120
- *
121
- * @param event - The event sent by serverless
122
- */
123
- getPathFromEvent(event) {
124
- var _a;
125
- const stripBasePath = (0, core_1.getDefaultIfUndefined)((_a = this.options) === null || _a === void 0 ? void 0 : _a.stripBasePath, '');
126
- const replaceRegex = new RegExp(`^${stripBasePath}`);
127
- const path = event.rawPath.replace(replaceRegex, '');
128
- const queryParams = event.rawQueryString;
129
- return (0, core_1.getPathWithQueryStringParams)(path, queryParams || {});
130
- }
131
- }
132
- exports.ApiGatewayV2Adapter = ApiGatewayV2Adapter;
133
- ApiGatewayV2Adapter.__type = [() => __ΩApiGatewayV2Options, 'options', 'constructor', 'getAdapterName', 'event', 'canHandle', () => __ΩAdapterRequest, 'getRequest', () => __ΩGetResponseAdapterProps, 'param0', 'getResponse', () => __ΩOnErrorProps, 'onErrorWhileForwarding', 'getPathFromEvent', 'Pn!2"8<9"0#P&0$P#2%!0&P"2%n\'0(P"o)"2*"0+P""o,#2*$0-P"2%&0.<5"""6$'];
134
- //# sourceMappingURL=api-gateway-v2.adapter.js.map
1
+ "use strict";var h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,y=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,_=(s,e)=>{for(var t in e)h(s,t,{get:e[t],enumerable:!0})},f=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of y(e))!P.call(s,r)&&r!==t&&h(s,r,{get:()=>e[r],enumerable:!(o=g(e,r))||o.enumerable});return s},b=s=>f(h({},"__esModule",{value:!0}),s),u={};_(u,{ApiGatewayV2Adapter:()=>p});module.exports=b(u);var d=require("../../core");class p{constructor(e){var t;this.options=e,this.stripPathFn=(0,d.buildStripBasePath)((t=this.options)==null?void 0:t.stripBasePath)}getAdapterName(){return p.name}canHandle(e){const t=e;return!!(t!=null&&t.requestContext&&t.version==="2.0")}getRequest(e){const t=e.requestContext.http.method,o=this.getPathFromEvent(e),r={...e.headers};e.cookies&&(r.cookie=e.cookies.join("; "));let n;if(e.body){const[a,c]=(0,d.getEventBodyAsBuffer)(e.body,e.isBase64Encoded);n=a,r["content-length"]=c+""}const i=e.requestContext.http.sourceIp;return{method:t,headers:r,body:n,remoteAddress:i,path:o}}getResponse({headers:e,body:t,isBase64Encoded:o,statusCode:r,response:n}){const{cookies:i,headers:a}=(0,d.getFlattenedHeadersMapAndCookies)(e),c=a["transfer-encoding"];if(c&&c.includes("chunked"))throw new Error("chunked encoding in headers is not supported by API Gateway V2");if(n!=null&&n.chunkedEncoding)throw new Error("chunked encoding in response is not supported by API Gateway V2");return{statusCode:r,body:t,headers:a,isBase64Encoded:o,cookies:i}}onErrorWhileForwarding({error:e,delegatedResolver:t,respondWithErrors:o,event:r,log:n}){const i=o?e.stack:"",a=this.getResponse({event:r,statusCode:500,body:i||"",headers:{},isBase64Encoded:!1,log:n});t.succeed(a)}getPathFromEvent(e){const t=this.stripPathFn(e.rawPath),o=e.rawQueryString;return(0,d.getPathWithQueryStringParams)(t,o||{})}}
2
+ //# sourceMappingURL=api-gateway-v2.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-gateway-v2.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/api-gateway-v2.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-gateway-v2.adapter.js","sources":["../../../src/adapters/aws/api-gateway-v2.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { APIGatewayProxyEventV2, Context } from 'aws-lambda';\nimport type { APIGatewayProxyStructuredResultV2 } from 'aws-lambda/trigger/api-gateway-proxy';\nimport {\n AdapterContract,\n AdapterRequest,\n GetResponseAdapterProps,\n OnErrorProps,\n} from '../../contracts';\nimport {\n StripBasePathFn,\n buildStripBasePath,\n getEventBodyAsBuffer,\n getFlattenedHeadersMapAndCookies,\n getPathWithQueryStringParams,\n} from '../../core';\n\n//#endregion\n\n/**\n * The options to customize the {@link ApiGatewayV2Adapter}\n *\n * @breadcrumb Adapters / AWS / ApiGatewayV2Adapter\n * @public\n */\nexport interface ApiGatewayV2Options {\n /**\n * Strip base path for custom domains\n *\n * @defaultValue ''\n */\n stripBasePath?: string;\n}\n\n/**\n * The adapter to handle requests from AWS Api Gateway V2\n *\n * As per {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html | know issues}, we throw an exception when you send the `transfer-encoding=chunked`.\n * But, if you use this adapter to accept requests from Function URL, you can accept the `transfer-encoding=chunked` changing the method of invocation from `BUFFERED` to `RESPONSE_STREAM`.\n *\n * @example\n * ```typescript\n * const stripBasePath = '/any/custom/base/path'; // default ''\n * const adapter = new ApiGatewayV2Adapter({ stripBasePath });\n * ```\n *\n * {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html | Event Reference}\n *\n * @breadcrumb Adapters / AWS / ApiGatewayV2Adapter\n * @public\n */\nexport class ApiGatewayV2Adapter\n implements\n AdapterContract<\n APIGatewayProxyEventV2,\n Context,\n APIGatewayProxyStructuredResultV2\n >\n{\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link ApiGatewayV2Adapter}\n */\n constructor(protected readonly options?: ApiGatewayV2Options) {\n this.stripPathFn = buildStripBasePath(this.options?.stripBasePath);\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * Strip base path function\n */\n protected stripPathFn: StripBasePathFn;\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return ApiGatewayV2Adapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is APIGatewayProxyEventV2 {\n const apiGatewayEvent = event as Partial<APIGatewayProxyEventV2> & {\n version?: string;\n };\n\n return !!(\n apiGatewayEvent?.requestContext && apiGatewayEvent.version === '2.0'\n );\n }\n\n /**\n * {@inheritDoc}\n */\n public getRequest(event: APIGatewayProxyEventV2): AdapterRequest {\n const method = event.requestContext.http.method;\n const path = this.getPathFromEvent(event);\n // accords https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html\n // all headers are lowercased and cannot be array\n // so no need to format, just a shallow copy will work here\n const headers = { ...event.headers };\n\n if (event.cookies) headers.cookie = event.cookies.join('; ');\n\n let body: Buffer | undefined;\n\n if (event.body) {\n const [bufferBody, contentLength] = getEventBodyAsBuffer(\n event.body,\n event.isBase64Encoded,\n );\n\n body = bufferBody;\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n headers['content-length'] = contentLength + '';\n }\n\n const remoteAddress = event.requestContext.http.sourceIp;\n\n return {\n method,\n headers,\n body,\n remoteAddress,\n path,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public getResponse({\n headers: responseHeaders,\n body,\n isBase64Encoded,\n statusCode,\n response,\n }: GetResponseAdapterProps<APIGatewayProxyEventV2>): APIGatewayProxyStructuredResultV2 {\n const { cookies, headers } =\n getFlattenedHeadersMapAndCookies(responseHeaders);\n\n const transferEncodingHeader: string | undefined =\n headers['transfer-encoding'];\n\n const hasTransferEncodingChunked =\n transferEncodingHeader && transferEncodingHeader.includes('chunked');\n\n if (hasTransferEncodingChunked) {\n throw new Error(\n 'chunked encoding in headers is not supported by API Gateway V2',\n );\n }\n\n if (response?.chunkedEncoding) {\n throw new Error(\n 'chunked encoding in response is not supported by API Gateway V2',\n );\n }\n\n return {\n statusCode,\n body,\n headers,\n isBase64Encoded,\n cookies,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public onErrorWhileForwarding({\n error,\n delegatedResolver,\n respondWithErrors,\n event,\n log,\n }: OnErrorProps<\n APIGatewayProxyEventV2,\n APIGatewayProxyStructuredResultV2\n >): void {\n const body = respondWithErrors ? error.stack : '';\n const errorResponse = this.getResponse({\n event,\n statusCode: 500,\n body: body || '',\n headers: {},\n isBase64Encoded: false,\n log,\n });\n\n delegatedResolver.succeed(errorResponse);\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Get path from event with query strings\n *\n * @param event - The event sent by serverless\n */\n protected getPathFromEvent(event: APIGatewayProxyEventV2): string {\n const path = this.stripPathFn(event.rawPath);\n const queryParams = event.rawQueryString;\n\n return getPathWithQueryStringParams(path, queryParams || {});\n }\n\n //#endregion\n}\n"],"names":["api_gateway_v2_adapter_exports","__export","ApiGatewayV2Adapter","__toCommonJS","import_core","options","_a","event","apiGatewayEvent","method","path","headers","body","bufferBody","contentLength","remoteAddress","responseHeaders","isBase64Encoded","statusCode","response","cookies","transferEncodingHeader","error","delegatedResolver","respondWithErrors","log","errorResponse","queryParams"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,oBAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EAUA,IAMOI,EAAA,QAAA,YAAA,EAoCA,MAAMF,CAOb,CAQE,YAA+BG,EAA+B,OAA/B,KAAA,QAAAA,EAC7B,KAAK,eAAcD,EAAA,qBAAmBE,EAAA,KAAK,UAAL,YAAAA,EAAc,aAAa,CACnE,CAkBO,gBAAyB,CAC9B,OAAOJ,EAAoB,IAC7B,CAKO,UAAUK,EAAiD,CAChE,MAAMC,EAAkBD,EAIxB,MAAO,CAAC,EACNC,GAAA,MAAAA,EAAiB,gBAAkBA,EAAgB,UAAY,MAEnE,CAKO,WAAWD,EAA+C,CACzD,MAAAE,EAASF,EAAM,eAAe,KAAK,OACnCG,EAAO,KAAK,iBAAiBH,CAAK,EAIlCI,EAAU,CAAE,GAAGJ,EAAM,OAAQ,EAE/BA,EAAM,UAASI,EAAQ,OAASJ,EAAM,QAAQ,KAAK,IAAI,GAEvD,IAAAK,EAEJ,GAAIL,EAAM,KAAM,CACR,KAAA,CAACM,EAAYC,CAAa,KAAIV,EAAA,sBAClCG,EAAM,KACNA,EAAM,eAAA,EAGDK,EAAAC,EAECF,EAAA,gBAAgB,EAAIG,EAAgB,GAGxC,MAAAC,EAAgBR,EAAM,eAAe,KAAK,SAEzC,MAAA,CACL,OAAAE,EACA,QAAAE,EACA,KAAAC,EACA,cAAAG,EACA,KAAAL,CAAA,CAEJ,CAKO,YAAY,CACjB,QAASM,EACT,KAAAJ,EACA,gBAAAK,EACA,WAAAC,EACA,SAAAC,CAAA,EACqF,CACrF,KAAM,CAAE,QAAAC,EAAS,QAAAT,CAAQ,KACvBP,oCAAiCY,CAAe,EAE5CK,EACJV,EAAQ,mBAAmB,EAK7B,GAFEU,GAA0BA,EAAuB,SAAS,SAAS,EAGnE,MAAM,IAAI,MACR,gEAAA,EAIJ,GAAIF,GAAA,MAAAA,EAAU,gBACZ,MAAM,IAAI,MACR,iEAAA,EAIG,MAAA,CACL,WAAAD,EACA,KAAAN,EACA,QAAAD,EACA,gBAAAM,EACA,QAAAG,CAAA,CAEJ,CAKO,uBAAuB,CAC5B,MAAAE,EACA,kBAAAC,EACA,kBAAAC,EACA,MAAAjB,EACA,IAAAkB,CAAA,EAIO,CACD,MAAAb,EAAOY,EAAoBF,EAAM,MAAQ,GACzCI,EAAgB,KAAK,YAAY,CACrC,MAAAnB,EACA,WAAY,IACZ,KAAMK,GAAQ,GACd,QAAS,CAAC,EACV,gBAAiB,GACjB,IAAAa,CAAA,CACD,EAEDF,EAAkB,QAAQG,CAAa,CACzC,CAWU,iBAAiBnB,EAAuC,CAChE,MAAMG,EAAO,KAAK,YAAYH,EAAM,OAAO,EACrCoB,EAAcpB,EAAM,eAE1B,SAAOH,EAA6B,8BAAAM,EAAMiB,GAAe,CAAE,CAAA,CAC7D,CAGF"}
@@ -1,99 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AwsSimpleAdapter = exports.__ΩAWSSimpleAdapterResponseType = exports.__ΩBatchItemFailureResponse = exports.__ΩAWSSimpleAdapterOptions = void 0;
4
- const { __ΩAdapterRequest } = require('../../../contracts/index');
5
- const { __ΩGetResponseAdapterProps } = require('../../../contracts/index');
6
- const { __ΩOnErrorProps } = require('../../../contracts/index');
7
- const { __ΩIEmptyResponse } = require('../../../core/index');
8
- const index_1 = require("../../../core/index");
9
- const __ΩAWSSimpleAdapterOptions = ['forwardPath', 'forwardMethod', 'host', true, false, 'batch', 'P&4!&4"&4#P.$.%J4&8M'];
10
- exports.__ΩAWSSimpleAdapterOptions = __ΩAWSSimpleAdapterOptions;
11
- const __ΩBatchItemFailureResponse = ['"'];
12
- exports.__ΩBatchItemFailureResponse = __ΩBatchItemFailureResponse;
13
- const __ΩAWSSimpleAdapterResponseType = [() => __ΩBatchItemFailureResponse, () => __ΩIEmptyResponse, 'Pn!n"J'];
14
- exports.__ΩAWSSimpleAdapterResponseType = __ΩAWSSimpleAdapterResponseType;
15
- /**
16
- * The abstract adapter to use to implement other simple AWS adapters
17
- *
18
- * @breadcrumb Adapters / AWS / AWS Simple Adapter
19
- * @public
20
- */
21
- class AwsSimpleAdapter {
22
- //#region Constructor
23
- /**
24
- * Default constructor
25
- *
26
- * @param options - The options to customize the {@link AwsSimpleAdapter}
27
- */
28
- constructor(options) {
29
- this.options = options;
30
- }
31
- //#endregion
32
- //#region Public Methods
33
- /**
34
- * {@inheritDoc}
35
- */
36
- getAdapterName() {
37
- throw new Error('not implemented.');
38
- }
39
- /**
40
- * {@inheritDoc}
41
- */
42
- canHandle(event) {
43
- throw new Error('not implemented.');
44
- }
45
- /**
46
- * {@inheritDoc}
47
- */
48
- getRequest(event) {
49
- const path = this.options.forwardPath;
50
- const method = this.options.forwardMethod;
51
- const [body, contentLength] = (0, index_1.getEventBodyAsBuffer)(JSON.stringify(event), false);
52
- const headers = {
53
- host: this.options.host,
54
- 'content-type': 'application/json',
55
- 'content-length': String(contentLength),
56
- };
57
- return {
58
- method,
59
- headers,
60
- body,
61
- path,
62
- };
63
- }
64
- /**
65
- * {@inheritDoc}
66
- */
67
- getResponse({ body, headers, isBase64Encoded, event, statusCode, }) {
68
- if (this.hasInvalidStatusCode(statusCode)) {
69
- throw new Error(JSON.stringify({ body, headers, isBase64Encoded, event, statusCode }));
70
- }
71
- if (!this.options.batch)
72
- return index_1.EmptyResponse;
73
- if (isBase64Encoded) {
74
- throw new Error('SERVERLESS_ADAPTER: The response could not be base64 encoded when you set batch: true, the response should be a JSON.');
75
- }
76
- if (!body)
77
- return index_1.EmptyResponse;
78
- return JSON.parse(body);
79
- }
80
- /**
81
- * {@inheritDoc}
82
- */
83
- onErrorWhileForwarding({ error, delegatedResolver, }) {
84
- delegatedResolver.fail(error);
85
- }
86
- //#endregion
87
- //#region Protected Methods
88
- /**
89
- * Check if the status code is invalid
90
- *
91
- * @param statusCode - The status code
92
- */
93
- hasInvalidStatusCode(statusCode) {
94
- return statusCode < 200 || statusCode >= 400;
95
- }
96
- }
97
- exports.AwsSimpleAdapter = AwsSimpleAdapter;
98
- AwsSimpleAdapter.__type = ['TEvent', () => __ΩAWSSimpleAdapterOptions, 'options', 'constructor', 'getAdapterName', 'event', 'canHandle', () => __ΩAdapterRequest, 'getRequest', () => __ΩGetResponseAdapterProps, 'param0', () => __ΩAWSSimpleAdapterResponseType, 'getResponse', () => __ΩOnErrorProps, () => __ΩAWSSimpleAdapterResponseType, 'onErrorWhileForwarding', 'statusCode', 'hasInvalidStatusCode', () => __ΩAWSSimpleAdapterResponseType, 'b!Pn"2#<9"0$P&0%P#2&!0\'Pe"!2&n(0)Pe"!o*"2+n,0-Pe"!n/o.#2+$00P\'21)02<5e!!"n36$'];
99
- //# sourceMappingURL=aws-simple-adapter.js.map
1
+ "use strict";var p=Object.defineProperty,c=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,w=(o,e)=>{for(var t in e)p(o,t,{get:e[t],enumerable:!0})},_=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!l.call(o,r)&&r!==t&&p(o,r,{get:()=>e[r],enumerable:!(n=c(e,r))||n.enumerable});return o},d=o=>_(p({},"__esModule",{value:!0}),o),i={};w(i,{AwsSimpleAdapter:()=>f});module.exports=d(i);var a=require("../../../core/index");class f{constructor(e){this.options=e}getAdapterName(){throw new Error("not implemented.")}canHandle(e){throw new Error("not implemented.")}getRequest(e){const t=this.options.forwardPath,n=this.options.forwardMethod,[r,s]=(0,a.getEventBodyAsBuffer)(JSON.stringify(e),!1),h={host:this.options.host,"content-type":"application/json","content-length":String(s)};return{method:n,headers:h,body:r,path:t}}getResponse({body:e,headers:t,isBase64Encoded:n,event:r,statusCode:s}){if(this.hasInvalidStatusCode(s))throw new Error(JSON.stringify({body:e,headers:t,isBase64Encoded:n,event:r,statusCode:s}));if(!this.options.batch)return a.EmptyResponse;if(n)throw new Error("SERVERLESS_ADAPTER: The response could not be base64 encoded when you set batch: true, the response should be a JSON.");return e?JSON.parse(e):a.EmptyResponse}onErrorWhileForwarding({error:e,delegatedResolver:t}){t.fail(e)}hasInvalidStatusCode(e){return e<200||e>=400}}
2
+ //# sourceMappingURL=aws-simple-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aws-simple-adapter.js","sourceRoot":"","sources":["../../../../src/adapters/aws/base/aws-simple-adapter.ts"],"names":[],"mappings":";;;sCAQO,0BAA0B;+CAA1B,0BAA0B;oCAA1B,0BAA0B;sCAK1B,qBAAqB;AAJ5B,+CAI6B;;;;;;;AAkD7B;;;;;GAKG;AACH,MAAsB,gBAAgB;IAGpC,qBAAqB;IAErB;;;;OAIG;IACH,YAA+B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAAG,CAAC;IAEnE,YAAY;IAEZ,wBAAwB;IAExB;;OAEG;IACI,cAAc;QACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAc;QAC7B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAE1C,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAA,4BAAoB,EAChD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EACrB,KAAK,CACN,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,cAAc,EAAE,kBAAkB;YAClC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC;SACxC,CAAC;QAEF,OAAO;YACL,MAAM;YACN,OAAO;YACP,IAAI;YACJ,IAAI;SACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,EACjB,IAAI,EACJ,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACsB;QAChC,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CACtE,CAAC;SACH;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,qBAAa,CAAC;QAE9C,IAAI,eAAe,EAAE;YACnB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;SACH;QAED,IAAI,CAAC,IAAI;YAAE,OAAO,qBAAa,CAAC;QAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,EAC5B,KAAK,EACL,iBAAiB,GACkC;QACnD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY;IAEZ,2BAA2B;IAE3B;;;;OAIG;IACO,oBAAoB,CAAC,UAAkB;QAC/C,OAAO,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC;IAC/C,CAAC;;AA1GH,4CA6GC"}
1
+ {"version":3,"file":"aws-simple-adapter.js","sources":["../../../../src/adapters/aws/base/aws-simple-adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { Context, SQSBatchItemFailure } from 'aws-lambda';\nimport {\n AdapterContract,\n AdapterRequest,\n GetResponseAdapterProps,\n OnErrorProps,\n} from '../../../contracts/index';\nimport {\n EmptyResponse,\n IEmptyResponse,\n getEventBodyAsBuffer,\n} from '../../../core/index';\n\n//#endregion\n\n/**\n * The options to customize the {@link AwsSimpleAdapter}\n *\n * @breadcrumb Adapters / AWS / AWS Simple Adapter\n * @public\n */\nexport interface AWSSimpleAdapterOptions {\n /**\n * The path that will be used to create a request to be forwarded to the framework.\n */\n forwardPath: string;\n\n /**\n * The http method that will be used to create a request to be forwarded to the framework.\n */\n forwardMethod: string;\n\n /**\n * The AWS Service host that will be injected inside headers to developer being able to validate if request originate from the library.\n */\n host: string;\n\n /**\n * Tells if this adapter should support batch item failures.\n */\n batch?: true | false;\n}\n\n/**\n * The batch item failure response expected from the API server\n *\n * @breadcrumb Adapters / AWS / AWS Simple Adapter\n * @public\n */\nexport type BatchItemFailureResponse = SQSBatchItemFailure;\n\n/**\n * The possible options of response for {@link AwsSimpleAdapter}\n *\n * @breadcrumb Adapters / AWS / AWS Simple Adapter\n * @public\n */\nexport type AWSSimpleAdapterResponseType =\n | BatchItemFailureResponse\n | IEmptyResponse;\n\n/**\n * The abstract adapter to use to implement other simple AWS adapters\n *\n * @breadcrumb Adapters / AWS / AWS Simple Adapter\n * @public\n */\nexport abstract class AwsSimpleAdapter<TEvent>\n implements AdapterContract<TEvent, Context, AWSSimpleAdapterResponseType>\n{\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link AwsSimpleAdapter}\n */\n constructor(protected readonly options: AWSSimpleAdapterOptions) {}\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n throw new Error('not implemented.');\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is TEvent {\n throw new Error('not implemented.');\n }\n\n /**\n * {@inheritDoc}\n */\n public getRequest(event: TEvent): AdapterRequest {\n const path = this.options.forwardPath;\n const method = this.options.forwardMethod;\n\n const [body, contentLength] = getEventBodyAsBuffer(\n JSON.stringify(event),\n false,\n );\n\n const headers = {\n host: this.options.host,\n 'content-type': 'application/json',\n 'content-length': String(contentLength),\n };\n\n return {\n method,\n headers,\n body,\n path,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public getResponse({\n body,\n headers,\n isBase64Encoded,\n event,\n statusCode,\n }: GetResponseAdapterProps<TEvent>): AWSSimpleAdapterResponseType {\n if (this.hasInvalidStatusCode(statusCode)) {\n throw new Error(\n JSON.stringify({ body, headers, isBase64Encoded, event, statusCode }),\n );\n }\n\n if (!this.options.batch) return EmptyResponse;\n\n if (isBase64Encoded) {\n throw new Error(\n 'SERVERLESS_ADAPTER: The response could not be base64 encoded when you set batch: true, the response should be a JSON.',\n );\n }\n\n if (!body) return EmptyResponse;\n\n return JSON.parse(body);\n }\n\n /**\n * {@inheritDoc}\n */\n public onErrorWhileForwarding({\n error,\n delegatedResolver,\n }: OnErrorProps<TEvent, AWSSimpleAdapterResponseType>): void {\n delegatedResolver.fail(error);\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Check if the status code is invalid\n *\n * @param statusCode - The status code\n */\n protected hasInvalidStatusCode(statusCode: number): boolean {\n return statusCode < 200 || statusCode >= 400;\n }\n\n //#endregion\n}\n"],"names":["aws_simple_adapter_exports","__export","AwsSimpleAdapter","__toCommonJS","import_core","options","event","path","method","body","contentLength","headers","isBase64Encoded","statusCode","error","delegatedResolver"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,iBAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EASA,IAIOI,EAAA,QAAA,qBAAA,EAwDA,MAAeF,CAEtB,CAQE,YAA+BG,EAAkC,CAAlC,KAAA,QAAAA,CAAmC,CAS3D,gBAAyB,CACxB,MAAA,IAAI,MAAM,kBAAkB,CACpC,CAKO,UAAUC,EAAiC,CAC1C,MAAA,IAAI,MAAM,kBAAkB,CACpC,CAKO,WAAWA,EAA+B,CACzC,MAAAC,EAAO,KAAK,QAAQ,YACpBC,EAAS,KAAK,QAAQ,cAEtB,CAACC,EAAMC,CAAa,KAAIN,EAAA,sBAC5B,KAAK,UAAUE,CAAK,EACpB,EAAA,EAGIK,EAAU,CACd,KAAM,KAAK,QAAQ,KACnB,eAAgB,mBAChB,iBAAkB,OAAOD,CAAa,CAAA,EAGjC,MAAA,CACL,OAAAF,EACA,QAAAG,EACA,KAAAF,EACA,KAAAF,CAAA,CAEJ,CAKO,YAAY,CACjB,KAAAE,EACA,QAAAE,EACA,gBAAAC,EACA,MAAAN,EACA,WAAAO,CAAA,EACgE,CAC5D,GAAA,KAAK,qBAAqBA,CAAU,EACtC,MAAM,IAAI,MACR,KAAK,UAAU,CAAE,KAAAJ,EAAM,QAAAE,EAAS,gBAAAC,EAAiB,MAAAN,EAAO,WAAAO,EAAY,CAAA,EAIpE,GAAA,CAAC,KAAK,QAAQ,MAAc,OAAAT,EAAA,cAEhC,GAAIQ,EACF,MAAM,IAAI,MACR,uHAAA,EAIJ,OAAKH,EAEE,KAAK,MAAMA,CAAI,EAFJL,EAAA,aAGpB,CAKO,uBAAuB,CAC5B,MAAAU,EACA,kBAAAC,CAAA,EAC2D,CAC3DA,EAAkB,KAAKD,CAAK,CAC9B,CAWU,qBAAqBD,EAA6B,CACnD,OAAAA,EAAa,KAAOA,GAAc,GAC3C,CAGF"}
@@ -1,18 +1,2 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./aws-simple-adapter"), exports);
18
- //# sourceMappingURL=index.js.map
1
+ "use strict";var _=Object.defineProperty,s=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,O=Object.prototype.hasOwnProperty,a=(r,e,p,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of u(e))!O.call(r,t)&&t!==p&&_(r,t,{get:()=>e[t],enumerable:!(o=s(e,t))||o.enumerable});return r},c=(r,e,p)=>(a(r,e,"default"),p&&a(p,e,"default")),l=r=>a(_({},"__esModule",{value:!0}),r),n={};module.exports=l(n);c(n,require("./aws-simple-adapter"),module.exports);
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/aws/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/adapters/aws/base/index.ts"],"sourcesContent":["export * from './aws-simple-adapter';\n"],"names":["base_exports","__toCommonJS","__reExport"],"mappings":"6YAAAA,EAAA,CAAA,EAAA,OAAA,QAAAC,EAAAD,CAAA,EAAAE,EAAAF,EAAc,QAAd,sBAAA,EAAA,OAAA,OAAA"}