@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,64 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DynamoDBAdapter = exports.__ΩDynamoDBAdapterOptions = void 0;
4
- const { __ΩAWSSimpleAdapterOptions } = require('./base/index');
5
- const __ΩPick = ['T', 'K', 'l+e#!e"!fRb!b"Pde""N#!'];
6
- const core_1 = require("../../core");
7
- const index_1 = require("./base/index");
8
- const __ΩDynamoDBAdapterOptions = [() => __ΩPick, () => __ΩAWSSimpleAdapterOptions, "batch", 'dynamoDBForwardPath', 'dynamoDBForwardMethod', 'Pn".#o!#&4$8&4%8M'];
9
- exports.__ΩDynamoDBAdapterOptions = __ΩDynamoDBAdapterOptions;
10
- /**
11
- * The adapter to handle requests from AWS DynamoDB.
12
- *
13
- * The option of `responseWithErrors` is ignored by this adapter and we always call `resolver.fail` with the error.
14
- *
15
- * {@link https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html | Event Reference}
16
- *
17
- * @example
18
- * ```typescript
19
- * const dynamoDBForwardPath = '/your/route/dynamo'; // default /dynamo
20
- * const dynamoDBForwardMethod = 'POST'; // default POST
21
- * const adapter = new DynamoDBAdapter({ dynamoDBForwardPath, dynamoDBForwardMethod });
22
- * ```
23
- *
24
- * @breadcrumb Adapters / AWS / DynamoDBAdapter
25
- * @public
26
- */
27
- class DynamoDBAdapter extends index_1.AwsSimpleAdapter {
28
- //#region Constructor
29
- /**
30
- * Default constructor
31
- *
32
- * @param options - The options to customize the {@link DynamoDBAdapter}
33
- */
34
- constructor(options) {
35
- super({
36
- forwardPath: (0, core_1.getDefaultIfUndefined)(options === null || options === void 0 ? void 0 : options.dynamoDBForwardPath, '/dynamo'),
37
- forwardMethod: (0, core_1.getDefaultIfUndefined)(options === null || options === void 0 ? void 0 : options.dynamoDBForwardMethod, 'POST'),
38
- batch: options === null || options === void 0 ? void 0 : options.batch,
39
- host: 'dynamodb.amazonaws.com',
40
- });
41
- }
42
- //#endregion
43
- //#region Public Methods
44
- /**
45
- * {@inheritDoc}
46
- */
47
- getAdapterName() {
48
- return DynamoDBAdapter.name;
49
- }
50
- /**
51
- * {@inheritDoc}
52
- */
53
- canHandle(event) {
54
- var _a;
55
- const dynamoDBevent = event;
56
- if (!Array.isArray(dynamoDBevent === null || dynamoDBevent === void 0 ? void 0 : dynamoDBevent.Records))
57
- return false;
58
- const eventSource = (_a = dynamoDBevent.Records[0]) === null || _a === void 0 ? void 0 : _a.eventSource;
59
- return eventSource === 'aws:dynamodb';
60
- }
61
- }
62
- exports.DynamoDBAdapter = DynamoDBAdapter;
63
- DynamoDBAdapter.__type = [() => index_1.AwsSimpleAdapter, () => __ΩDynamoDBAdapterOptions, 'options', 'constructor', 'getAdapterName', 'event', 'canHandle', 'P"7!Pn"2#8"0$P&0%P#2&!0\'5"6"'];
64
- //# sourceMappingURL=dynamodb.adapter.js.map
1
+ "use strict";var c=Object.defineProperty,_=Object.getOwnPropertyDescriptor,y=Object.getOwnPropertyNames,f=Object.prototype.hasOwnProperty,b=(t,e)=>{for(var r in e)c(t,r,{get:e[r],enumerable:!0})},m=(t,e,r,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of y(e))!f.call(t,a)&&a!==r&&c(t,a,{get:()=>e[a],enumerable:!(d=_(e,a))||d.enumerable});return t},v=t=>m(c({},"__esModule",{value:!0}),t),o={};b(o,{DynamoDBAdapter:()=>n});module.exports=v(o);var u=require("../../core"),s=require("./base/index");class n extends s.AwsSimpleAdapter{constructor(e){super({forwardPath:(0,u.getDefaultIfUndefined)(e==null?void 0:e.dynamoDBForwardPath,"/dynamo"),forwardMethod:(0,u.getDefaultIfUndefined)(e==null?void 0:e.dynamoDBForwardMethod,"POST"),batch:e==null?void 0:e.batch,host:"dynamodb.amazonaws.com"})}getAdapterName(){return n.name}canHandle(e){var a;const r=e;return Array.isArray(r==null?void 0:r.Records)?((a=r.Records[0])==null?void 0:a.eventSource)==="aws:dynamodb":!1}}
2
+ //# sourceMappingURL=dynamodb.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamodb.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/dynamodb.adapter.ts"],"names":[],"mappings":";;;+CAI0D,cAAc;;AADxE,qCAAmD;AACnD,wCAAyE;;;AA2BzE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,eAAgB,SAAQ,wBAAqC;IACxE,qBAAqB;IAErB;;;;OAIG;IACH,YAAY,OAAgC;QAC1C,KAAK,CAAC;YACJ,WAAW,EAAE,IAAA,4BAAqB,EAChC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,EAC5B,SAAS,CACV;YACD,aAAa,EAAE,IAAA,4BAAqB,EAClC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB,EAC9B,MAAM,CACP;YACD,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;YACrB,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IAEZ,wBAAwB;IAExB;;OAEG;IACI,cAAc;QACnB,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAc;;QAC7B,MAAM,aAAa,GAAG,KAAqC,CAAC;QAE5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzD,MAAM,WAAW,GAAG,MAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,CAAC;QAE1D,OAAO,WAAW,KAAK,cAAc,CAAC;IACxC,CAAC;;AA7CH,0CAgDC"}
1
+ {"version":3,"file":"dynamodb.adapter.js","sources":["../../../src/adapters/aws/dynamodb.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { DynamoDBStreamEvent } from 'aws-lambda';\nimport { getDefaultIfUndefined } from '../../core';\nimport { AWSSimpleAdapterOptions, AwsSimpleAdapter } from './base/index';\n\n//#endregion\n\n/**\n * The options to customize the {@link DynamoDBAdapter}\n *\n * @breadcrumb Adapters / AWS / DynamoDBAdapter\n * @public\n */\nexport interface DynamoDBAdapterOptions\n extends Pick<AWSSimpleAdapterOptions, 'batch'> {\n /**\n * The path that will be used to create a request to be forwarded to the framework.\n *\n * @defaultValue /dynamo\n */\n dynamoDBForwardPath?: string;\n\n /**\n * The http method that will be used to create a request to be forwarded to the framework.\n *\n * @defaultValue POST\n */\n dynamoDBForwardMethod?: string;\n}\n\n/**\n * The adapter to handle requests from AWS DynamoDB.\n *\n * The option of `responseWithErrors` is ignored by this adapter and we always call `resolver.fail` with the error.\n *\n * {@link https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html | Event Reference}\n *\n * @example\n * ```typescript\n * const dynamoDBForwardPath = '/your/route/dynamo'; // default /dynamo\n * const dynamoDBForwardMethod = 'POST'; // default POST\n * const adapter = new DynamoDBAdapter({ dynamoDBForwardPath, dynamoDBForwardMethod });\n * ```\n *\n * @breadcrumb Adapters / AWS / DynamoDBAdapter\n * @public\n */\nexport class DynamoDBAdapter extends AwsSimpleAdapter<DynamoDBStreamEvent> {\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link DynamoDBAdapter}\n */\n constructor(options?: DynamoDBAdapterOptions) {\n super({\n forwardPath: getDefaultIfUndefined(\n options?.dynamoDBForwardPath,\n '/dynamo',\n ),\n forwardMethod: getDefaultIfUndefined(\n options?.dynamoDBForwardMethod,\n 'POST',\n ),\n batch: options?.batch,\n host: 'dynamodb.amazonaws.com',\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return DynamoDBAdapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is DynamoDBStreamEvent {\n const dynamoDBevent = event as Partial<DynamoDBStreamEvent>;\n\n if (!Array.isArray(dynamoDBevent?.Records)) return false;\n\n const eventSource = dynamoDBevent.Records[0]?.eventSource;\n\n return eventSource === 'aws:dynamodb';\n }\n\n //#endregion\n}\n"],"names":["dynamodb_adapter_exports","__export","DynamoDBAdapter","__toCommonJS","import_core","import_base","options","event","dynamoDBevent","_a"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,gBAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EAGA,IAAsCI,EAAA,QAAA,YAAA,EACoBC,EAAA,QAAA,cAAA,EA4CnD,MAAMH,UAAwBG,EAAsC,gBAAA,CAQzE,YAAYC,EAAkC,CACtC,MAAA,CACJ,eAAaF,EAAA,uBACXE,GAAA,YAAAA,EAAS,oBACT,SACF,EACA,iBAAeF,EAAA,uBACbE,GAAA,YAAAA,EAAS,sBACT,MACF,EACA,MAAOA,GAAA,YAAAA,EAAS,MAChB,KAAM,wBAAA,CACP,CACH,CASO,gBAAyB,CAC9B,OAAOJ,EAAgB,IACzB,CAKO,UAAUK,EAA8C,OAC7D,MAAMC,EAAgBD,EAEtB,OAAK,MAAM,QAAQC,GAAA,YAAAA,EAAe,OAAO,IAErBC,EAAAD,EAAc,QAAQ,CAAC,IAAvB,YAAAC,EAA0B,eAEvB,eAJ4B,EAKrD,CAGF"}
@@ -1,75 +1,2 @@
1
- "use strict";
2
- //#region Imports
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.EventBridgeAdapter = exports.__ΩEventBridgeEventAll = exports.__ΩEventBridgeOptions = void 0;
5
- const core_1 = require("../../core");
6
- const index_1 = require("./base/index");
7
- const __ΩEventBridgeOptions = ['eventBridgeForwardPath', 'eventBridgeForwardMethod', 'P&4!8&4"8M'];
8
- exports.__ΩEventBridgeOptions = __ΩEventBridgeOptions;
9
- const __ΩEventBridgeEventAll = ['"'];
10
- exports.__ΩEventBridgeEventAll = __ΩEventBridgeEventAll;
11
- /**
12
- * The adapter to handle requests from AWS EventBridge (Cloudwatch Events).
13
- *
14
- * The option of `responseWithErrors` is ignored by this adapter and we always call `resolver.fail` with the error.
15
- *
16
- * {@link https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html | Event Reference}
17
- *
18
- * @example
19
- * ```typescript
20
- * const eventBridgeForwardPath = '/your/route/eventbridge'; // default /eventbridge
21
- * const eventBridgeForwardMethod = 'POST'; // default POST
22
- * const adapter = new EventBridgeAdapter({ eventBridgeForwardPath, eventBridgeForwardMethod });
23
- * ```
24
- *
25
- * @breadcrumb Adapters / AWS / EventBridgeAdapter
26
- * @public
27
- */
28
- class EventBridgeAdapter extends index_1.AwsSimpleAdapter {
29
- //#region Constructor
30
- /**
31
- * Default constructor
32
- *
33
- * @param options - The options to customize the {@link EventBridgeAdapter}
34
- */
35
- constructor(options) {
36
- super({
37
- forwardPath: (0, core_1.getDefaultIfUndefined)(options === null || options === void 0 ? void 0 : options.eventBridgeForwardPath, '/eventbridge'),
38
- forwardMethod: (0, core_1.getDefaultIfUndefined)(options === null || options === void 0 ? void 0 : options.eventBridgeForwardMethod, 'POST'),
39
- batch: false,
40
- host: 'events.amazonaws.com',
41
- });
42
- }
43
- //#endregion
44
- //#region Public Methods
45
- /**
46
- * {@inheritDoc}
47
- */
48
- getAdapterName() {
49
- return EventBridgeAdapter.name;
50
- }
51
- /**
52
- * {@inheritDoc}
53
- */
54
- canHandle(event) {
55
- const eventBridgeEvent = event;
56
- // thanks to @cnuss in https://github.com/vendia/serverless-express/blob/b5da6070b8dd2fb674c1f7035dd7edfef1dc83a2/src/event-sources/utils.js#L87
57
- return !!(eventBridgeEvent &&
58
- eventBridgeEvent.version &&
59
- eventBridgeEvent.version === '0' &&
60
- eventBridgeEvent.id &&
61
- eventBridgeEvent['detail-type'] &&
62
- eventBridgeEvent.source &&
63
- eventBridgeEvent.account &&
64
- eventBridgeEvent.time &&
65
- eventBridgeEvent.region &&
66
- eventBridgeEvent.resources &&
67
- Array.isArray(eventBridgeEvent.resources) &&
68
- eventBridgeEvent.detail &&
69
- typeof eventBridgeEvent.detail === 'object' &&
70
- !Array.isArray(eventBridgeEvent.detail));
71
- }
72
- }
73
- exports.EventBridgeAdapter = EventBridgeAdapter;
74
- EventBridgeAdapter.__type = [() => __ΩEventBridgeEventAll, () => index_1.AwsSimpleAdapter, () => __ΩEventBridgeOptions, 'options', 'constructor', 'getAdapterName', 'event', 'canHandle', () => __ΩEventBridgeEventAll, 'Pn!7"Pn#2$8"0%P&0&P#2\'!0(5n)6"'];
75
- //# sourceMappingURL=event-bridge.adapter.js.map
1
+ "use strict";var n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,v=Object.prototype.hasOwnProperty,_=(t,r)=>{for(var e in r)n(t,e,{get:r[e],enumerable:!0})},p=(t,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of u(r))!v.call(t,a)&&a!==e&&n(t,a,{get:()=>r[a],enumerable:!(o=i(r,a))||o.enumerable});return t},g=t=>p(n({},"__esModule",{value:!0}),t),s={};_(s,{EventBridgeAdapter:()=>d});module.exports=g(s);var c=require("../../core"),l=require("./base/index");class d extends l.AwsSimpleAdapter{constructor(r){super({forwardPath:(0,c.getDefaultIfUndefined)(r==null?void 0:r.eventBridgeForwardPath,"/eventbridge"),forwardMethod:(0,c.getDefaultIfUndefined)(r==null?void 0:r.eventBridgeForwardMethod,"POST"),batch:!1,host:"events.amazonaws.com"})}getAdapterName(){return d.name}canHandle(r){const e=r;return!!(e&&e.version&&e.version==="0"&&e.id&&e["detail-type"]&&e.source&&e.account&&e.time&&e.region&&e.resources&&Array.isArray(e.resources)&&e.detail&&typeof e.detail=="object"&&!Array.isArray(e.detail))}}
2
+ //# sourceMappingURL=event-bridge.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-bridge.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/event-bridge.adapter.ts"],"names":[],"mappings":";AAAA,iBAAiB;;;AAGjB,qCAAmD;AACnD,wCAAgD;;;;;AAkChD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,kBAAmB,SAAQ,wBAAqC;IAC3E,qBAAqB;IAErB;;;;OAIG;IACH,YAAY,OAA4B;QACtC,KAAK,CAAC;YACJ,WAAW,EAAE,IAAA,4BAAqB,EAChC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAC/B,cAAc,CACf;YACD,aAAa,EAAE,IAAA,4BAAqB,EAClC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EACjC,MAAM,CACP;YACD,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IAEZ,wBAAwB;IAExB;;OAEG;IACI,cAAc;QACnB,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAc;QAC7B,MAAM,gBAAgB,GAAG,KAAqC,CAAC;QAE/D,gJAAgJ;QAChJ,OAAO,CAAC,CAAC,CACP,gBAAgB;YAChB,gBAAgB,CAAC,OAAO;YACxB,gBAAgB,CAAC,OAAO,KAAK,GAAG;YAChC,gBAAgB,CAAC,EAAE;YACnB,gBAAgB,CAAC,aAAa,CAAC;YAC/B,gBAAgB,CAAC,MAAM;YACvB,gBAAgB,CAAC,OAAO;YACxB,gBAAgB,CAAC,IAAI;YACrB,gBAAgB,CAAC,MAAM;YACvB,gBAAgB,CAAC,SAAS;YAC1B,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC;YACzC,gBAAgB,CAAC,MAAM;YACvB,OAAO,gBAAgB,CAAC,MAAM,KAAK,QAAQ;YAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACxC,CAAC;IACJ,CAAC;;AAzDH,gDA4DC"}
1
+ {"version":3,"file":"event-bridge.adapter.js","sources":["../../../src/adapters/aws/event-bridge.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { EventBridgeEvent } from 'aws-lambda';\nimport { getDefaultIfUndefined } from '../../core';\nimport { AwsSimpleAdapter } from './base/index';\n\n//#endregion\n\n/**\n * The options to customize the {@link EventBridgeAdapter}\n *\n * @breadcrumb Adapters / AWS / EventBridgeAdapter\n * @public\n */\nexport interface EventBridgeOptions {\n /**\n * The path that will be used to create a request to be forwarded to the framework.\n *\n * @defaultValue /eventbridge\n */\n eventBridgeForwardPath?: string;\n\n /**\n * The http method that will be used to create a request to be forwarded to the framework.\n *\n * @defaultValue POST\n */\n eventBridgeForwardMethod?: string;\n}\n\n/**\n * Just a type alias to ignore generic types in the event\n *\n * @breadcrumb Adapters / AWS / EventBridgeAdapter\n * @public\n */\nexport type EventBridgeEventAll = EventBridgeEvent<any, any>;\n\n/**\n * The adapter to handle requests from AWS EventBridge (Cloudwatch Events).\n *\n * The option of `responseWithErrors` is ignored by this adapter and we always call `resolver.fail` with the error.\n *\n * {@link https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html | Event Reference}\n *\n * @example\n * ```typescript\n * const eventBridgeForwardPath = '/your/route/eventbridge'; // default /eventbridge\n * const eventBridgeForwardMethod = 'POST'; // default POST\n * const adapter = new EventBridgeAdapter({ eventBridgeForwardPath, eventBridgeForwardMethod });\n * ```\n *\n * @breadcrumb Adapters / AWS / EventBridgeAdapter\n * @public\n */\nexport class EventBridgeAdapter extends AwsSimpleAdapter<EventBridgeEventAll> {\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link EventBridgeAdapter}\n */\n constructor(options?: EventBridgeOptions) {\n super({\n forwardPath: getDefaultIfUndefined(\n options?.eventBridgeForwardPath,\n '/eventbridge',\n ),\n forwardMethod: getDefaultIfUndefined(\n options?.eventBridgeForwardMethod,\n 'POST',\n ),\n batch: false,\n host: 'events.amazonaws.com',\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return EventBridgeAdapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is EventBridgeEventAll {\n const eventBridgeEvent = event as Partial<EventBridgeEventAll>;\n\n // thanks to @cnuss in https://github.com/vendia/serverless-express/blob/b5da6070b8dd2fb674c1f7035dd7edfef1dc83a2/src/event-sources/utils.js#L87\n return !!(\n eventBridgeEvent &&\n eventBridgeEvent.version &&\n eventBridgeEvent.version === '0' &&\n eventBridgeEvent.id &&\n eventBridgeEvent['detail-type'] &&\n eventBridgeEvent.source &&\n eventBridgeEvent.account &&\n eventBridgeEvent.time &&\n eventBridgeEvent.region &&\n eventBridgeEvent.resources &&\n Array.isArray(eventBridgeEvent.resources) &&\n eventBridgeEvent.detail &&\n typeof eventBridgeEvent.detail === 'object' &&\n !Array.isArray(eventBridgeEvent.detail)\n );\n }\n\n //#endregion\n}\n"],"names":["event_bridge_adapter_exports","__export","EventBridgeAdapter","__toCommonJS","import_core","import_base","options","event","eventBridgeEvent"],"mappings":"qZAAAA,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,mBAAA,IAAAE,CAAA,CAAA,EAAA,OAAA,QAAAC,EAAAH,CAAA,EAGA,IAAsCI,EAAA,QAAA,YAAA,EACLC,EAAA,QAAA,cAAA,EAmD1B,MAAMH,UAA2BG,EAAsC,gBAAA,CAQ5E,YAAYC,EAA8B,CAClC,MAAA,CACJ,eAAaF,EAAA,uBACXE,GAAA,YAAAA,EAAS,uBACT,cACF,EACA,iBAAeF,EAAA,uBACbE,GAAA,YAAAA,EAAS,yBACT,MACF,EACA,MAAO,GACP,KAAM,sBAAA,CACP,CACH,CASO,gBAAyB,CAC9B,OAAOJ,EAAmB,IAC5B,CAKO,UAAUK,EAA8C,CAC7D,MAAMC,EAAmBD,EAGzB,MAAO,CAAC,EACNC,GACAA,EAAiB,SACjBA,EAAiB,UAAY,KAC7BA,EAAiB,IACjBA,EAAiB,aAAa,GAC9BA,EAAiB,QACjBA,EAAiB,SACjBA,EAAiB,MACjBA,EAAiB,QACjBA,EAAiB,WACjB,MAAM,QAAQA,EAAiB,SAAS,GACxCA,EAAiB,QACjB,OAAOA,EAAiB,QAAW,UACnC,CAAC,MAAM,QAAQA,EAAiB,MAAM,EAE1C,CAGF"}
@@ -1,27 +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("./alb.adapter"), exports);
18
- __exportStar(require("./api-gateway-v1.adapter"), exports);
19
- __exportStar(require("./api-gateway-v2.adapter"), exports);
20
- __exportStar(require("./dynamodb.adapter"), exports);
21
- __exportStar(require("./event-bridge.adapter"), exports);
22
- __exportStar(require("./lambda-edge.adapter"), exports);
23
- __exportStar(require("./s3.adapter"), exports);
24
- __exportStar(require("./sns.adapter"), exports);
25
- __exportStar(require("./sqs.adapter"), exports);
26
- __exportStar(require("./base"), exports);
27
- //# sourceMappingURL=index.js.map
1
+ "use strict";var _=Object.defineProperty,i=Object.getOwnPropertyDescriptor,x=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,u=(p,t,s,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of x(t))!n.call(p,o)&&o!==s&&_(p,o,{get:()=>t[o],enumerable:!(a=i(t,o))||a.enumerable});return p},r=(p,t,s)=>(u(p,t,"default"),s&&u(s,t,"default")),q=p=>u(_({},"__esModule",{value:!0}),p),e={};module.exports=q(e);r(e,require("./alb.adapter"),module.exports);r(e,require("./api-gateway-v1.adapter"),module.exports);r(e,require("./api-gateway-v2.adapter"),module.exports);r(e,require("./dynamodb.adapter"),module.exports);r(e,require("./event-bridge.adapter"),module.exports);r(e,require("./lambda-edge.adapter"),module.exports);r(e,require("./s3.adapter"),module.exports);r(e,require("./sns.adapter"),module.exports);r(e,require("./sqs.adapter"),module.exports);r(e,require("./base"),module.exports);
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2DAAyC;AACzC,2DAAyC;AACzC,qDAAmC;AACnC,yDAAuC;AACvC,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B;AAC9B,gDAA8B;AAC9B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/adapters/aws/index.ts"],"sourcesContent":["export * from './alb.adapter';\nexport * from './api-gateway-v1.adapter';\nexport * from './api-gateway-v2.adapter';\nexport * from './dynamodb.adapter';\nexport * from './event-bridge.adapter';\nexport * from './lambda-edge.adapter';\nexport * from './s3.adapter';\nexport * from './sns.adapter';\nexport * from './sqs.adapter';\nexport * from './base';\n"],"names":["aws_exports","__toCommonJS","__reExport"],"mappings":"6YAAAA,EAAA,CAAA,EAAA,OAAA,QAAAC,EAAAD,CAAA,EAAAE,EAAAF,EAAc,QAAd,eAAA,EAAA,OAAA,OAAA,EACAE,EAAAF,EAAc,QADd,0BAAA,EAAA,OAAA,OAAA,EAEAE,EAAAF,EAAc,QAFd,0BAAA,EAAA,OAAA,OAAA,EAGAE,EAAAF,EAAc,QAHd,oBAAA,EAAA,OAAA,OAAA,EAIAE,EAAAF,EAAc,QAJd,wBAAA,EAAA,OAAA,OAAA,EAKAE,EAAAF,EAAc,QALd,uBAAA,EAAA,OAAA,OAAA,EAMAE,EAAAF,EAAc,QANd,cAAA,EAAA,OAAA,OAAA,EAOAE,EAAAF,EAAc,QAPd,eAAA,EAAA,OAAA,OAAA,EAQAE,EAAAF,EAAc,QARd,eAAA,EAAA,OAAA,OAAA,EASAE,EAAAF,EAAc,QATd,QAAA,EAAA,OAAA,OAAA"}
@@ -1,284 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LambdaEdgeAdapter = exports.__ΩLambdaEdgeAdapterOptions = exports.DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES = exports.DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES = exports.DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS = exports.__ΩOldLambdaEdgeBody = exports.__ΩNewLambdaEdgeBody = exports.__ΩDefaultForwardPath = exports.__ΩDefaultQueryString = void 0;
4
- const { __ΩAdapterRequest } = require('../../contracts');
5
- const { __ΩGetResponseAdapterProps } = require('../../contracts');
6
- const { __ΩOnErrorProps } = require('../../contracts');
7
- const { __ΩSingleValueHeaders } = require('../../@types');
8
- const { __ΩBothValueHeaders } = require('../../@types');
9
- const { __ΩConcrete } = require('../../@types');
10
- function __assignType(fn, args) {
11
- fn.__type = args;
12
- return fn;
13
- }
14
- const core_1 = require("../../core");
15
- const __ΩDefaultQueryString = ["Records", "cf", "request", "querystring", '".!f\'f."f.#f.$f'];
16
- exports.__ΩDefaultQueryString = __ΩDefaultQueryString;
17
- const __ΩDefaultForwardPath = ["Records", "cf", "request", "uri", '".!f\'f."f.#f.$f'];
18
- exports.__ΩDefaultForwardPath = __ΩDefaultForwardPath;
19
- const __ΩNewLambdaEdgeBody = ["Records", "cf", "request", "body", '".!f\'f."f.#f.$f'];
20
- exports.__ΩNewLambdaEdgeBody = __ΩNewLambdaEdgeBody;
21
- const __ΩOldLambdaEdgeBody = [() => __ΩConcrete, "Records", "cf", "request", "body", "data", '"."f\'f.#f.$fo!".%f.&f'];
22
- exports.__ΩOldLambdaEdgeBody = __ΩOldLambdaEdgeBody;
23
- /**
24
- * The list was created based on {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/edge-functions-restrictions.html | these docs} in the "Disallowed Headers" section.
25
- *
26
- * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants
27
- * @public
28
- */
29
- exports.DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS = [
30
- 'Connection',
31
- 'Expect',
32
- 'Keep-Alive',
33
- 'Proxy-Authenticate',
34
- 'Proxy-Authorization',
35
- 'Proxy-Connection',
36
- 'Trailer',
37
- 'Upgrade',
38
- 'X-Accel-Buffering',
39
- 'X-Accel-Charset',
40
- 'X-Accel-Limit-Rate',
41
- 'X-Accel-Redirect',
42
- /(X-Amz-Cf-)(.*)/gim,
43
- 'X-Cache',
44
- /(X-Edge-)(.*)/gim,
45
- 'X-Forwarded-Proto',
46
- 'X-Real-IP',
47
- ];
48
- /**
49
- * The default max response size in bytes of viewer request and viewer response.
50
- *
51
- * @defaultValue 1024 * 40 = 40960 = 40KB
52
- *
53
- * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}
54
- *
55
- * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants
56
- * @public
57
- */
58
- exports.DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES = 1024 * 40;
59
- /**
60
- * The default max response size in bytes of origin request and origin response.
61
- *
62
- * @defaultValue 1024 * 1024 = 1048576 = 1MB
63
- *
64
- * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}
65
- *
66
- * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants
67
- * @public
68
- */
69
- exports.DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES = 1024 * 1024;
70
- const __ΩLambdaEdgeAdapterOptions = ['viewerMaxResponseSizeInBytes', 'originMaxResponseSizeInBytes', 'response', '', 'onResponseSizeExceedLimit', "Records", 'event', 'getPathFromEvent', 'disallowedHeaders', 'header', 'shouldStripHeader', 'shouldUseHeadersFromFramework', 'P\'4!8\'4"8P"2#"/$4%8P".&f\'f2\'&/$4(8P&AJF4)8P&2*)/$4+8)4,8M'];
71
- exports.__ΩLambdaEdgeAdapterOptions = __ΩLambdaEdgeAdapterOptions;
72
- /**
73
- * The adapter to handle requests from AWS Lambda\@Edge.
74
- *
75
- * This adapter is not fully compatible with Lambda\@edge supported by \@vendia/serverless-express, the request body was modified to return {@link NewLambdaEdgeBody} instead {@link OldLambdaEdgeBody}.
76
- * Also, the response has been modified to return entire body sent by the framework, in this form you MUST return the body from the framework in the format of {@link aws-lambda#CloudFrontRequestResult}.
77
- * And when we get an error during the forwarding to the framework, we call `resolver.fail` instead of trying to return status 500 like the old implementation was.
78
- *
79
- * {@link https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html | Lambda edge docs}
80
- * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html | Event Reference}
81
- *
82
- * @example
83
- * ```typescript
84
- * const getPathFromEvent = () => '/lambda/edge'; // will forward all requests to the same endpoint
85
- * const adapter = new LambdaEdgeAdapter({ getPathFromEvent });
86
- * ```
87
- *
88
- * @breadcrumb Adapters / AWS / LambdaEdgeAdapter
89
- * @public
90
- */
91
- class LambdaEdgeAdapter {
92
- //#region Constructor
93
- /**
94
- * Default constructor
95
- *
96
- * @param options - The options to customize the {@link LambdaEdgeAdapter}
97
- */
98
- constructor(options) {
99
- var _a;
100
- this.options = options;
101
- const disallowedHeaders = (0, core_1.getDefaultIfUndefined)((_a = this.options) === null || _a === void 0 ? void 0 : _a.disallowedHeaders, exports.DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS);
102
- this.cachedDisallowedHeaders = disallowedHeaders.map(__assignType(disallowedHeader => {
103
- if (disallowedHeader instanceof RegExp)
104
- return disallowedHeader;
105
- return new RegExp(`(${disallowedHeader})`, 'gim');
106
- }, ['disallowedHeader', '', 'P"2!"/"']));
107
- }
108
- //#endregion
109
- //#region Public Methods
110
- /**
111
- * {@inheritDoc}
112
- */
113
- getAdapterName() {
114
- return LambdaEdgeAdapter.name;
115
- }
116
- /**
117
- * {@inheritDoc}
118
- */
119
- canHandle(event) {
120
- var _a, _b, _c;
121
- const lambdaEdgeEvent = event;
122
- if (!Array.isArray(lambdaEdgeEvent === null || lambdaEdgeEvent === void 0 ? void 0 : lambdaEdgeEvent.Records))
123
- return false;
124
- const eventType = (_c = (_b = (_a = lambdaEdgeEvent.Records[0]) === null || _a === void 0 ? void 0 : _a.cf) === null || _b === void 0 ? void 0 : _b.config) === null || _c === void 0 ? void 0 : _c.eventType;
125
- const validEventTypes = [
126
- 'origin-response',
127
- 'origin-request',
128
- 'viewer-response',
129
- 'viewer-request',
130
- ];
131
- return validEventTypes.includes(eventType);
132
- }
133
- /**
134
- * {@inheritDoc}
135
- */
136
- getRequest(event) {
137
- var _a;
138
- const request = event.Records[0];
139
- const cloudFrontRequest = request.cf.request;
140
- const method = cloudFrontRequest.method;
141
- const pathFromOptions = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.getPathFromEvent)
142
- ? this.options.getPathFromEvent(request)
143
- : undefined;
144
- const defaultPath = (0, core_1.getPathWithQueryStringParams)(cloudFrontRequest.uri, cloudFrontRequest.querystring);
145
- const path = (0, core_1.getDefaultIfUndefined)(pathFromOptions, defaultPath);
146
- const remoteAddress = cloudFrontRequest.clientIp;
147
- const headers = this.getFlattenedHeadersFromCloudfrontRequest(cloudFrontRequest);
148
- let body;
149
- if (cloudFrontRequest.body) {
150
- const [buffer, contentLength] = (0, core_1.getEventBodyAsBuffer)(JSON.stringify(cloudFrontRequest.body), false);
151
- body = buffer;
152
- headers['content-length'] = contentLength.toString();
153
- }
154
- const { host } = headers;
155
- return {
156
- method,
157
- path,
158
- headers,
159
- body,
160
- remoteAddress,
161
- host,
162
- hostname: host,
163
- };
164
- }
165
- /**
166
- * {@inheritDoc}
167
- */
168
- getResponse(props) {
169
- var _a, _b, _c;
170
- const response = this.getResponseToLambdaEdge(props);
171
- const responseToServiceBytes = new TextEncoder().encode(JSON.stringify(response)).length;
172
- const isOriginRequestOrResponse = this.isEventTypeOrigin(props.event.Records[0].cf.config);
173
- const maxSizeInBytes = isOriginRequestOrResponse
174
- ? (0, core_1.getDefaultIfUndefined)((_a = this.options) === null || _a === void 0 ? void 0 : _a.originMaxResponseSizeInBytes, exports.DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES)
175
- : (0, core_1.getDefaultIfUndefined)((_b = this.options) === null || _b === void 0 ? void 0 : _b.viewerMaxResponseSizeInBytes, exports.DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES);
176
- if (responseToServiceBytes <= maxSizeInBytes)
177
- return response;
178
- if ((_c = this.options) === null || _c === void 0 ? void 0 : _c.onResponseSizeExceedLimit)
179
- this.options.onResponseSizeExceedLimit(response);
180
- else {
181
- props.log.error(`SERVERLESS_ADAPTER:LAMBDA_EDGE_ADAPTER: Max response size exceeded: ${responseToServiceBytes} of the max of ${maxSizeInBytes}.`);
182
- }
183
- return response;
184
- }
185
- /**
186
- * {@inheritDoc}
187
- */
188
- onErrorWhileForwarding({ error, delegatedResolver, }) {
189
- delegatedResolver.fail(error);
190
- }
191
- //#endregion
192
- //#region Protected Methods
193
- /**
194
- * Returns the headers with the flattened (non-list) values of the cloudfront request headers
195
- *
196
- * @param cloudFrontRequest - The cloudfront request
197
- */
198
- getFlattenedHeadersFromCloudfrontRequest(cloudFrontRequest) {
199
- const headers = {};
200
- const headerValuePairs = Object.entries(cloudFrontRequest.headers);
201
- for (const [headerKey, headerValue] of headerValuePairs)
202
- headers[headerKey] = headerValue.map(__assignType(header => header.value, ['header', '', 'P"2!"/"'])).join(',');
203
- return headers;
204
- }
205
- /**
206
- * Returns the framework response in the format required by the Lambda\@edge.
207
- *
208
- * @param body - The body of the response
209
- * @param frameworkHeaders - The headers from the framework
210
- */
211
- getResponseToLambdaEdge({ body, headers: frameworkHeaders, }) {
212
- var _a;
213
- const shouldUseHeadersFromFramework = (0, core_1.getDefaultIfUndefined)((_a = this.options) === null || _a === void 0 ? void 0 : _a.shouldUseHeadersFromFramework, false);
214
- const parsedBody = JSON.parse(body);
215
- if (parsedBody.headers) {
216
- parsedBody.headers = Object.keys(parsedBody.headers).reduce(__assignType((acc, header) => {
217
- if (this.shouldStripHeader(header))
218
- return acc;
219
- acc[header] = parsedBody.headers[header];
220
- return acc;
221
- }, ['acc', 'header', '', 'P"2!"2""/#']), {});
222
- }
223
- if (!shouldUseHeadersFromFramework)
224
- return parsedBody;
225
- parsedBody.headers = this.getHeadersForCloudfrontResponse(frameworkHeaders);
226
- return parsedBody;
227
- }
228
- /**
229
- * Returns headers in Cloudfront Response format.
230
- *
231
- * @param originalHeaders - The original version of the request sent by the framework
232
- */
233
- getHeadersForCloudfrontResponse(originalHeaders) {
234
- const originalHeadersEntries = Object.entries(originalHeaders);
235
- const headers = {};
236
- for (const [headerKey, headerValue] of originalHeadersEntries) {
237
- if (this.shouldStripHeader(headerKey))
238
- continue;
239
- if (!headers[headerKey])
240
- headers[headerKey] = [];
241
- if (!Array.isArray(headerValue)) {
242
- headers[headerKey].push({
243
- key: headerKey,
244
- value: headerValue || '',
245
- });
246
- continue;
247
- }
248
- const headersArray = headerValue.map(__assignType(value => ({
249
- key: headerKey,
250
- value: value,
251
- }), ['value', '', 'P"2!"/"']));
252
- headers[headerKey].push(...headersArray);
253
- }
254
- return headers;
255
- }
256
- /**
257
- * Returns the information if we should remove the response header
258
- *
259
- * @param headerKey - The header that will be tested
260
- */
261
- shouldStripHeader(headerKey) {
262
- var _a;
263
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.shouldStripHeader)
264
- return this.options.shouldStripHeader(headerKey);
265
- const headerKeyLowerCase = headerKey.toLowerCase();
266
- for (const stripHeaderIf of this.cachedDisallowedHeaders) {
267
- if (!stripHeaderIf.test(headerKeyLowerCase))
268
- continue;
269
- return true;
270
- }
271
- return false;
272
- }
273
- /**
274
- * Determines whether the event is from origin or is from viewer.
275
- *
276
- * @param content - The event sent by AWS or the response sent by the framework
277
- */
278
- isEventTypeOrigin(content) {
279
- return content.eventType.includes('origin');
280
- }
281
- }
282
- exports.LambdaEdgeAdapter = LambdaEdgeAdapter;
283
- LambdaEdgeAdapter.__type = [() => __ΩLambdaEdgeAdapterOptions, 'options', 'constructor', 'cachedDisallowedHeaders', 'getAdapterName', 'event', 'canHandle', () => __ΩAdapterRequest, 'getRequest', () => __ΩGetResponseAdapterProps, 'props', 'getResponse', () => __ΩOnErrorProps, 'param0', 'onErrorWhileForwarding', 'cloudFrontRequest', () => __ΩSingleValueHeaders, 'getFlattenedHeadersFromCloudfrontRequest', () => __ΩGetResponseAdapterProps, 'getResponseToLambdaEdge', () => __ΩBothValueHeaders, 'originalHeaders', 'getHeadersForCloudfrontResponse', 'headerKey', 'shouldStripHeader', "config", 'content', 'isEventTypeOrigin', 'Pn!2"8<9"0#AF3$9<P&0%P#2&!0\'P"2&n(0)P"o*"2+"0,P""o-#2.$0/P"20n102<P"o3"2."04<Pn526"07<P&28)09<P".:f2;)0<<5"""6$'];
284
- //# sourceMappingURL=lambda-edge.adapter.js.map
1
+ "use strict";var c=Object.defineProperty,m=Object.getOwnPropertyDescriptor,v=Object.getOwnPropertyNames,O=Object.prototype.hasOwnProperty,D=(a,r)=>{for(var e in r)c(a,e,{get:r[e],enumerable:!0})},I=(a,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of v(r))!O.call(a,s)&&s!==e&&c(a,s,{get:()=>r[s],enumerable:!(t=m(r,s))||t.enumerable});return a},P=a=>I(c({},"__esModule",{value:!0}),a),h={};D(h,{DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS:()=>_,DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES:()=>S,DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES:()=>A,LambdaEdgeAdapter:()=>f});module.exports=P(h);var d=require("../../core");const _=["Connection","Expect","Keep-Alive","Proxy-Authenticate","Proxy-Authorization","Proxy-Connection","Trailer","Upgrade","X-Accel-Buffering","X-Accel-Charset","X-Accel-Limit-Rate","X-Accel-Redirect",/(X-Amz-Cf-)(.*)/gim,"X-Cache",/(X-Edge-)(.*)/gim,"X-Forwarded-Proto","X-Real-IP"],A=1024*40,S=1024*1024;class f{constructor(r){var t;this.options=r;const e=(0,d.getDefaultIfUndefined)((t=this.options)==null?void 0:t.disallowedHeaders,_);this.cachedDisallowedHeaders=e.map(s=>s instanceof RegExp?s:new RegExp(`(${s})`,"gim"))}getAdapterName(){return f.name}canHandle(r){var o,n,i;const e=r;if(!Array.isArray(e==null?void 0:e.Records))return!1;const t=(i=(n=(o=e.Records[0])==null?void 0:o.cf)==null?void 0:n.config)==null?void 0:i.eventType;return["origin-response","origin-request","viewer-response","viewer-request"].includes(t)}getRequest(r){var g;const e=r.Records[0],t=e.cf.request,s=t.method,o=(g=this.options)!=null&&g.getPathFromEvent?this.options.getPathFromEvent(e):void 0,n=(0,d.getPathWithQueryStringParams)(t.uri,t.querystring),i=(0,d.getDefaultIfUndefined)(o,n),u=t.clientIp,p=this.getFlattenedHeadersFromCloudfrontRequest(t);let E;if(t.body){const[R,y]=(0,d.getEventBodyAsBuffer)(JSON.stringify(t.body),!1);E=R,p["content-length"]=y.toString()}const{host:l}=p;return{method:s,path:i,headers:p,body:E,remoteAddress:u,host:l,hostname:l}}getResponse(r){var n,i,u;const e=this.getResponseToLambdaEdge(r),t=new TextEncoder().encode(JSON.stringify(e)).length,o=this.isEventTypeOrigin(r.event.Records[0].cf.config)?(0,d.getDefaultIfUndefined)((n=this.options)==null?void 0:n.originMaxResponseSizeInBytes,S):(0,d.getDefaultIfUndefined)((i=this.options)==null?void 0:i.viewerMaxResponseSizeInBytes,A);return t<=o||((u=this.options)!=null&&u.onResponseSizeExceedLimit?this.options.onResponseSizeExceedLimit(e):r.log.error(`SERVERLESS_ADAPTER:LAMBDA_EDGE_ADAPTER: Max response size exceeded: ${t} of the max of ${o}.`)),e}onErrorWhileForwarding({error:r,delegatedResolver:e}){e.fail(r)}getFlattenedHeadersFromCloudfrontRequest(r){return Object.keys(r.headers).reduce((e,t)=>{const s=r.headers[t];return e[t]=s.map(o=>o.value).join(","),e},{})}getResponseToLambdaEdge({body:r,headers:e}){var o;const t=(0,d.getDefaultIfUndefined)((o=this.options)==null?void 0:o.shouldUseHeadersFromFramework,!1),s=JSON.parse(r);return s.headers&&(s.headers=Object.keys(s.headers).reduce((n,i)=>(this.shouldStripHeader(i)||(n[i]=s.headers[i]),n),{})),t&&(s.headers=this.getHeadersForCloudfrontResponse(e)),s}getHeadersForCloudfrontResponse(r){return Object.keys(r).reduce((e,t)=>{if(this.shouldStripHeader(t))return e;e[t]||(e[t]=[]);const s=r[t];if(!Array.isArray(s))return e[t].push({key:t,value:s||""}),e;const o=s.map(n=>({key:t,value:n}));return e[t].push(...o),e},{})}shouldStripHeader(r){var t;if((t=this.options)!=null&&t.shouldStripHeader)return this.options.shouldStripHeader(r);const e=r.toLowerCase();for(const s of this.cachedDisallowedHeaders)if(s.test(e))return!0;return!1}isEventTypeOrigin(r){return r.eventType.includes("origin")}}
2
+ //# sourceMappingURL=lambda-edge.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lambda-edge.adapter.js","sourceRoot":"","sources":["../../../src/adapters/aws/lambda-edge.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lambda-edge.adapter.js","sources":["../../../src/adapters/aws/lambda-edge.adapter.ts"],"sourcesContent":["//#region Imports\n\nimport type { CloudFrontRequest, Context } from 'aws-lambda';\nimport type {\n CloudFrontEvent,\n CloudFrontHeaders,\n CloudFrontResultResponse,\n} from 'aws-lambda/common/cloudfront';\nimport type {\n CloudFrontRequestEvent,\n CloudFrontRequestResult,\n} from 'aws-lambda/trigger/cloudfront-request';\nimport { BothValueHeaders, Concrete, SingleValueHeaders } from '../../@types';\nimport {\n AdapterContract,\n AdapterRequest,\n GetResponseAdapterProps,\n OnErrorProps,\n} from '../../contracts';\nimport {\n getDefaultIfUndefined,\n getEventBodyAsBuffer,\n getPathWithQueryStringParams,\n} from '../../core';\n\n//#endregion\n\n/**\n * The type alias to indicate where we get the default value of query string to create the request.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport type DefaultQueryString =\n CloudFrontRequestEvent['Records'][number]['cf']['request']['querystring'];\n\n/**\n * The type alias to indicate where we get the default value of path to create the request.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport type DefaultForwardPath =\n CloudFrontRequestEvent['Records'][number]['cf']['request']['uri'];\n\n/**\n * Represents the body of the new version of Lambda\\@edge, which uses the `body` property inside `request` as the body (library) of the request.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport type NewLambdaEdgeBody =\n CloudFrontRequestEvent['Records'][number]['cf']['request']['body'];\n\n/**\n * Represents the body of the old version of Lambda\\@edge supported by \\@vendia/serverless-express which returns the `data` property within `body` for the body (library) of the request.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport type OldLambdaEdgeBody = Concrete<\n CloudFrontRequestEvent['Records'][number]['cf']['request']\n>['body']['data'];\n\n/**\n * The list was created based on {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/edge-functions-restrictions.html | these docs} in the \"Disallowed Headers\" section.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants\n * @public\n */\nexport const DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS: (string | RegExp)[] = [\n 'Connection',\n 'Expect',\n 'Keep-Alive',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'Proxy-Connection',\n 'Trailer',\n 'Upgrade',\n 'X-Accel-Buffering',\n 'X-Accel-Charset',\n 'X-Accel-Limit-Rate',\n 'X-Accel-Redirect',\n /(X-Amz-Cf-)(.*)/gim,\n 'X-Cache',\n /(X-Edge-)(.*)/gim,\n 'X-Forwarded-Proto',\n 'X-Real-IP',\n];\n\n/**\n * The default max response size in bytes of viewer request and viewer response.\n *\n * @defaultValue 1024 * 40 = 40960 = 40KB\n *\n * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants\n * @public\n */\nexport const DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES = 1024 * 40;\n\n/**\n * The default max response size in bytes of origin request and origin response.\n *\n * @defaultValue 1024 * 1024 = 1048576 = 1MB\n *\n * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter / Constants\n * @public\n */\nexport const DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES = 1024 * 1024;\n\n/**\n * The options to customize the {@link LambdaEdgeAdapter}.\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport interface LambdaEdgeAdapterOptions {\n /**\n * The max response size in bytes of viewer request and viewer response.\n *\n * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}\n *\n * @defaultValue {@link DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES}\n */\n viewerMaxResponseSizeInBytes?: number;\n\n /**\n * The max response size in bytes of origin request and origin response.\n *\n * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html | Reference}\n *\n * @defaultValue {@link DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES}\n */\n originMaxResponseSizeInBytes?: number;\n\n /**\n * The function called when the response size exceed the max limits of the Lambda\\@edge\n *\n * @param response - The response from framework that exceed the limit of Lambda\\@edge\n * @defaultValue undefined\n */\n onResponseSizeExceedLimit?: (\n response: CloudFrontRequestResult,\n ) => CloudFrontRequestResult;\n\n /**\n * Return the path to be used to create a request to the framework\n *\n * @remarks You MUST append the query params from {@link DefaultQueryString}, you can use the helper {@link getPathWithQueryStringParams}.\n *\n * @param event - The event sent by the serverless\n * @defaultValue The value from {@link DefaultForwardPath}\n */\n getPathFromEvent?: (\n event: CloudFrontRequestEvent['Records'][number],\n ) => string;\n\n /**\n * The headers that will be stripped from the headers object because Lambda\\@edge will fail if these headers are passed in the response.\n *\n * @remarks All headers will be compared with other headers using toLowerCase, but for the RegExp, if you modify this list, you must put the flag `/gmi` at the end of the RegExp (ex: `/(X-Amz-Cf-)(.*)/gim`)\n *\n * @defaultValue To get the full list, see {@link DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS}.\n */\n disallowedHeaders?: (string | RegExp)[];\n\n /**\n * If you want to change how we check against the header if it should be stripped, you can pass a function to this property.\n *\n * @param header - The header of the response\n * @defaultValue The default method is implemented to test the header against the list {@link LambdaEdgeAdapterOptions.disallowedHeaders}.\n */\n shouldStripHeader?: (header: string) => boolean;\n\n /**\n * By default, the {@link aws-lambda#CloudFrontRequestResult} has the `headers` property, but we also have the headers sent by the framework too.\n * So this setting tells us how to handle this case, if you pass `true` to this property, we will use the framework headers.\n * Otherwise, we will forward the body back to cloudfront without modifying or trying to set the `headers` property inside {@link aws-lambda#CloudFrontRequestResult}.\n *\n * @defaultValue false\n */\n shouldUseHeadersFromFramework?: boolean;\n}\n\n/**\n * The adapter to handle requests from AWS Lambda\\@Edge.\n *\n * This adapter is not fully compatible with Lambda\\@edge supported by \\@vendia/serverless-express, the request body was modified to return {@link NewLambdaEdgeBody} instead {@link OldLambdaEdgeBody}.\n * Also, the response has been modified to return entire body sent by the framework, in this form you MUST return the body from the framework in the format of {@link aws-lambda#CloudFrontRequestResult}.\n * And when we get an error during the forwarding to the framework, we call `resolver.fail` instead of trying to return status 500 like the old implementation was.\n *\n * {@link https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html | Lambda edge docs}\n * {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html | Event Reference}\n *\n * @example\n * ```typescript\n * const getPathFromEvent = () => '/lambda/edge'; // will forward all requests to the same endpoint\n * const adapter = new LambdaEdgeAdapter({ getPathFromEvent });\n * ```\n *\n * @breadcrumb Adapters / AWS / LambdaEdgeAdapter\n * @public\n */\nexport class LambdaEdgeAdapter\n implements\n AdapterContract<CloudFrontRequestEvent, Context, CloudFrontRequestResult>\n{\n //#region Constructor\n\n /**\n * Default constructor\n *\n * @param options - The options to customize the {@link LambdaEdgeAdapter}\n */\n constructor(protected readonly options?: LambdaEdgeAdapterOptions) {\n const disallowedHeaders = getDefaultIfUndefined(\n this.options?.disallowedHeaders,\n DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS,\n );\n\n this.cachedDisallowedHeaders = disallowedHeaders.map(disallowedHeader => {\n if (disallowedHeader instanceof RegExp) return disallowedHeader;\n\n return new RegExp(`(${disallowedHeader})`, 'gim');\n });\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * This property is used to cache the disallowed headers in `RegExp` version, even if you provide a string in `disallowedHeader`, we will cache it in an instance of `RegExp`.\n */\n protected readonly cachedDisallowedHeaders: RegExp[];\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getAdapterName(): string {\n return LambdaEdgeAdapter.name;\n }\n\n /**\n * {@inheritDoc}\n */\n public canHandle(event: unknown): event is CloudFrontRequestEvent {\n const lambdaEdgeEvent = event as Partial<CloudFrontRequestEvent>;\n\n if (!Array.isArray(lambdaEdgeEvent?.Records)) return false;\n\n const eventType = lambdaEdgeEvent.Records[0]?.cf?.config?.eventType;\n const validEventTypes: CloudFrontEvent['config']['eventType'][] = [\n 'origin-response',\n 'origin-request',\n 'viewer-response',\n 'viewer-request',\n ];\n\n return validEventTypes.includes(eventType);\n }\n\n /**\n * {@inheritDoc}\n */\n public getRequest(event: CloudFrontRequestEvent): AdapterRequest {\n const request = event.Records[0];\n const cloudFrontRequest = request.cf.request;\n\n const method = cloudFrontRequest.method;\n\n const pathFromOptions = this.options?.getPathFromEvent\n ? this.options.getPathFromEvent(request)\n : undefined;\n const defaultPath = getPathWithQueryStringParams(\n cloudFrontRequest.uri,\n cloudFrontRequest.querystring,\n );\n const path = getDefaultIfUndefined(pathFromOptions, defaultPath);\n\n const remoteAddress = cloudFrontRequest.clientIp;\n\n const headers =\n this.getFlattenedHeadersFromCloudfrontRequest(cloudFrontRequest);\n\n let body: Buffer | undefined;\n\n if (cloudFrontRequest.body) {\n const [buffer, contentLength] = getEventBodyAsBuffer(\n JSON.stringify(cloudFrontRequest.body),\n false,\n );\n\n body = buffer;\n headers['content-length'] = contentLength.toString();\n }\n\n const { host } = headers;\n\n return {\n method,\n path,\n headers,\n body,\n remoteAddress,\n host,\n hostname: host,\n };\n }\n\n /**\n * {@inheritDoc}\n */\n public getResponse(\n props: GetResponseAdapterProps<CloudFrontRequestEvent>,\n ): CloudFrontRequestResult {\n const response = this.getResponseToLambdaEdge(props);\n const responseToServiceBytes = new TextEncoder().encode(\n JSON.stringify(response),\n ).length;\n\n const isOriginRequestOrResponse = this.isEventTypeOrigin(\n props.event.Records[0].cf.config,\n );\n const maxSizeInBytes = isOriginRequestOrResponse\n ? getDefaultIfUndefined(\n this.options?.originMaxResponseSizeInBytes,\n DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES,\n )\n : getDefaultIfUndefined(\n this.options?.viewerMaxResponseSizeInBytes,\n DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES,\n );\n\n if (responseToServiceBytes <= maxSizeInBytes) return response;\n\n if (this.options?.onResponseSizeExceedLimit)\n this.options.onResponseSizeExceedLimit(response);\n else {\n props.log.error(\n `SERVERLESS_ADAPTER:LAMBDA_EDGE_ADAPTER: Max response size exceeded: ${responseToServiceBytes} of the max of ${maxSizeInBytes}.`,\n );\n }\n\n return response;\n }\n\n /**\n * {@inheritDoc}\n */\n public onErrorWhileForwarding({\n error,\n delegatedResolver,\n }: OnErrorProps<CloudFrontRequestEvent, CloudFrontRequestResult>): void {\n delegatedResolver.fail(error);\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Returns the headers with the flattened (non-list) values of the cloudfront request headers\n *\n * @param cloudFrontRequest - The cloudfront request\n */\n protected getFlattenedHeadersFromCloudfrontRequest(\n cloudFrontRequest: CloudFrontRequest,\n ): SingleValueHeaders {\n return Object.keys(cloudFrontRequest.headers).reduce((acc, headerKey) => {\n const headerValue = cloudFrontRequest.headers[headerKey];\n\n acc[headerKey] = headerValue.map(header => header.value).join(',');\n\n return acc;\n }, {} as SingleValueHeaders);\n }\n\n /**\n * Returns the framework response in the format required by the Lambda\\@edge.\n *\n * @param body - The body of the response\n * @param frameworkHeaders - The headers from the framework\n */\n protected getResponseToLambdaEdge({\n body,\n headers: frameworkHeaders,\n }: GetResponseAdapterProps<CloudFrontRequestEvent>): CloudFrontRequestResult {\n const shouldUseHeadersFromFramework = getDefaultIfUndefined(\n this.options?.shouldUseHeadersFromFramework,\n false,\n );\n\n const parsedBody: CloudFrontResultResponse | CloudFrontRequest =\n JSON.parse(body);\n\n if (parsedBody.headers) {\n parsedBody.headers = Object.keys(parsedBody.headers).reduce(\n (acc, header) => {\n if (this.shouldStripHeader(header)) return acc;\n\n acc[header] = parsedBody.headers![header];\n\n return acc;\n },\n {} as CloudFrontHeaders,\n );\n }\n\n if (!shouldUseHeadersFromFramework) return parsedBody;\n\n parsedBody.headers = this.getHeadersForCloudfrontResponse(frameworkHeaders);\n\n return parsedBody;\n }\n\n /**\n * Returns headers in Cloudfront Response format.\n *\n * @param originalHeaders - The original version of the request sent by the framework\n */\n protected getHeadersForCloudfrontResponse(\n originalHeaders: BothValueHeaders,\n ): CloudFrontHeaders {\n return Object.keys(originalHeaders).reduce((acc, headerKey) => {\n if (this.shouldStripHeader(headerKey)) return acc;\n\n if (!acc[headerKey]) acc[headerKey] = [];\n\n const headerValue = originalHeaders[headerKey];\n\n if (!Array.isArray(headerValue)) {\n acc[headerKey].push({\n key: headerKey,\n value: headerValue || '',\n });\n\n return acc;\n }\n\n const headersArray = headerValue.map(value => ({\n key: headerKey,\n value: value,\n }));\n\n acc[headerKey].push(...headersArray);\n\n return acc;\n }, {} as CloudFrontHeaders);\n }\n\n /**\n * Returns the information if we should remove the response header\n *\n * @param headerKey - The header that will be tested\n */\n protected shouldStripHeader(headerKey: string): boolean {\n if (this.options?.shouldStripHeader)\n return this.options.shouldStripHeader(headerKey);\n\n const headerKeyLowerCase = headerKey.toLowerCase();\n\n for (const stripHeaderIf of this.cachedDisallowedHeaders) {\n if (!stripHeaderIf.test(headerKeyLowerCase)) continue;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Determines whether the event is from origin or is from viewer.\n *\n * @param content - The event sent by AWS or the response sent by the framework\n */\n protected isEventTypeOrigin(content: CloudFrontEvent['config']): boolean {\n return content.eventType.includes('origin');\n }\n\n //#endregion\n}\n"],"names":["lambda_edge_adapter_exports","__export","DEFAULT_LAMBDA_EDGE_DISALLOWED_HEADERS","DEFAULT_ORIGIN_MAX_RESPONSE_SIZE_IN_BYTES","DEFAULT_VIEWER_MAX_RESPONSE_SIZE_IN_BYTES","LambdaEdgeAdapter","__toCommonJS","import_core","options","disallowedHeaders","_a","disallowedHeader","event","lambdaEdgeEvent","eventType","_c","_b","request","cloudFrontRequest","method","pathFromOptions","defaultPath","path","remoteAddress","headers","body","buffer","contentLength","host","props","response","responseToServiceBytes","maxSizeInBytes","error","delegatedResolver","acc","headerKey","headerValue","header","frameworkHeaders","shouldUseHeadersFromFramework","parsedBody","originalHeaders","headersArray","value","headerKeyLowerCase","stripHeaderIf","content"],"mappings":"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"}