@kensio/yulin 1.20.1 → 1.20.2

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 (248) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/service/apigateway/api/sim-rest-api-lambda-proxy.factory.d.ts +2 -5
  6. package/dist/service/apigateway/api/sim-rest-api-lambda-proxy.factory.d.ts.map +1 -1
  7. package/dist/service/apigateway/api/sim-rest-api-lambda-proxy.factory.js +3 -7
  8. package/dist/service/apigateway/api/sim-rest-api-lambda-proxy.factory.js.map +1 -1
  9. package/dist/service/apigateway/api/sim-rest-api-proxy-stage.d.ts +22 -0
  10. package/dist/service/apigateway/api/sim-rest-api-proxy-stage.d.ts.map +1 -0
  11. package/dist/service/apigateway/api/sim-rest-api-proxy-stage.js +31 -0
  12. package/dist/service/apigateway/api/sim-rest-api-proxy-stage.js.map +1 -0
  13. package/dist/service/apigateway/api/stage/settings/sim-rest-api-method-settings.type.d.ts +19 -0
  14. package/dist/service/apigateway/api/stage/settings/sim-rest-api-method-settings.type.d.ts.map +1 -0
  15. package/dist/service/apigateway/api/stage/settings/sim-rest-api-method-settings.type.js +2 -0
  16. package/dist/service/apigateway/api/stage/settings/sim-rest-api-method-settings.type.js.map +1 -0
  17. package/dist/service/apigateway/api/stage/settings/sim-rest-api-stage-method-settings.d.ts +43 -0
  18. package/dist/service/apigateway/api/stage/settings/sim-rest-api-stage-method-settings.d.ts.map +1 -0
  19. package/dist/service/apigateway/api/stage/settings/sim-rest-api-stage-method-settings.js +75 -0
  20. package/dist/service/apigateway/api/stage/settings/sim-rest-api-stage-method-settings.js.map +1 -0
  21. package/dist/service/apigateway/api/stage/sim-rest-api-stage.d.ts +19 -0
  22. package/dist/service/apigateway/api/stage/sim-rest-api-stage.d.ts.map +1 -1
  23. package/dist/service/apigateway/api/stage/sim-rest-api-stage.js +22 -0
  24. package/dist/service/apigateway/api/stage/sim-rest-api-stage.js.map +1 -1
  25. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-method-settings-properties.d.ts +33 -0
  26. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-method-settings-properties.d.ts.map +1 -0
  27. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-method-settings-properties.js +69 -0
  28. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-method-settings-properties.js.map +1 -0
  29. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-properties.d.ts +4 -1
  30. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-properties.d.ts.map +1 -1
  31. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-properties.js +13 -4
  32. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-properties.js.map +1 -1
  33. package/dist/service/apigateway/command/sim-api-gateway-unsimulated-input.d.ts +6 -1
  34. package/dist/service/apigateway/command/sim-api-gateway-unsimulated-input.d.ts.map +1 -1
  35. package/dist/service/apigateway/command/sim-api-gateway-unsimulated-input.js +8 -3
  36. package/dist/service/apigateway/command/sim-api-gateway-unsimulated-input.js.map +1 -1
  37. package/dist/service/apigateway/command/stage/sim-rest-api-stage-commands.d.ts.map +1 -1
  38. package/dist/service/apigateway/command/stage/sim-rest-api-stage-commands.js +4 -0
  39. package/dist/service/apigateway/command/stage/sim-rest-api-stage-commands.js.map +1 -1
  40. package/dist/service/apigateway/command/stage/sim-rest-api-stage-method-settings-input.d.ts +18 -0
  41. package/dist/service/apigateway/command/stage/sim-rest-api-stage-method-settings-input.d.ts.map +1 -0
  42. package/dist/service/apigateway/command/stage/sim-rest-api-stage-method-settings-input.js +42 -0
  43. package/dist/service/apigateway/command/stage/sim-rest-api-stage-method-settings-input.js.map +1 -0
  44. package/dist/service/apigateway/command/stage/sim-rest-api-stage-publisher.d.ts +9 -0
  45. package/dist/service/apigateway/command/stage/sim-rest-api-stage-publisher.d.ts.map +1 -1
  46. package/dist/service/apigateway/command/stage/sim-rest-api-stage-publisher.js +17 -0
  47. package/dist/service/apigateway/command/stage/sim-rest-api-stage-publisher.js.map +1 -1
  48. package/dist/service/apigateway/command/stage/stage.command.d.ts +11 -0
  49. package/dist/service/apigateway/command/stage/stage.command.d.ts.map +1 -1
  50. package/dist/service/apigateway/index.d.ts +2 -0
  51. package/dist/service/apigateway/index.d.ts.map +1 -1
  52. package/dist/service/apigateway/index.js +1 -0
  53. package/dist/service/apigateway/index.js.map +1 -1
  54. package/dist/service/apigateway/serve/sim-api-gateway-controller.d.ts +4 -1
  55. package/dist/service/apigateway/serve/sim-api-gateway-controller.d.ts.map +1 -1
  56. package/dist/service/apigateway/serve/sim-api-gateway-controller.js +10 -1
  57. package/dist/service/apigateway/serve/sim-api-gateway-controller.js.map +1 -1
  58. package/dist/service/apigateway/serve/sim-api-gateway-error-response.d.ts +8 -0
  59. package/dist/service/apigateway/serve/sim-api-gateway-error-response.d.ts.map +1 -1
  60. package/dist/service/apigateway/serve/sim-api-gateway-error-response.js +10 -0
  61. package/dist/service/apigateway/serve/sim-api-gateway-error-response.js.map +1 -1
  62. package/dist/service/apigatewayv2/api/sim-http-api-lambda-proxy.factory.d.ts +5 -0
  63. package/dist/service/apigatewayv2/api/sim-http-api-lambda-proxy.factory.d.ts.map +1 -1
  64. package/dist/service/apigatewayv2/api/sim-http-api-lambda-proxy.factory.js +4 -0
  65. package/dist/service/apigatewayv2/api/sim-http-api-lambda-proxy.factory.js.map +1 -1
  66. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-route-settings.type.d.ts +24 -0
  67. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-route-settings.type.d.ts.map +1 -0
  68. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-route-settings.type.js +2 -0
  69. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-route-settings.type.js.map +1 -0
  70. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-stage-route-settings.d.ts +39 -0
  71. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-stage-route-settings.d.ts.map +1 -0
  72. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-stage-route-settings.js +74 -0
  73. package/dist/service/apigatewayv2/api/stage/settings/sim-http-api-stage-route-settings.js.map +1 -0
  74. package/dist/service/apigatewayv2/api/stage/sim-http-api-stage.d.ts +16 -1
  75. package/dist/service/apigatewayv2/api/stage/sim-http-api-stage.d.ts.map +1 -1
  76. package/dist/service/apigatewayv2/api/stage/sim-http-api-stage.js +16 -0
  77. package/dist/service/apigatewayv2/api/stage/sim-http-api-stage.js.map +1 -1
  78. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-route-settings-properties.d.ts +30 -0
  79. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-route-settings-properties.d.ts.map +1 -0
  80. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-route-settings-properties.js +67 -0
  81. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-route-settings-properties.js.map +1 -0
  82. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-properties.d.ts +3 -1
  83. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-properties.d.ts.map +1 -1
  84. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-properties.js +16 -5
  85. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-properties.js.map +1 -1
  86. package/dist/service/apigatewayv2/command/sim-api-gateway-v2-unsimulated-input.d.ts +6 -1
  87. package/dist/service/apigatewayv2/command/sim-api-gateway-v2-unsimulated-input.d.ts.map +1 -1
  88. package/dist/service/apigatewayv2/command/sim-api-gateway-v2-unsimulated-input.js +8 -3
  89. package/dist/service/apigatewayv2/command/sim-api-gateway-v2-unsimulated-input.js.map +1 -1
  90. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-commands.d.ts.map +1 -1
  91. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-commands.js +8 -0
  92. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-commands.js.map +1 -1
  93. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-route-settings-input.d.ts +18 -0
  94. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-route-settings-input.d.ts.map +1 -0
  95. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-route-settings-input.js +32 -0
  96. package/dist/service/apigatewayv2/command/stage/sim-http-api-stage-route-settings-input.js.map +1 -0
  97. package/dist/service/apigatewayv2/command/stage/stage.command.d.ts +3 -0
  98. package/dist/service/apigatewayv2/command/stage/stage.command.d.ts.map +1 -1
  99. package/dist/service/apigatewayv2/index.d.ts +2 -0
  100. package/dist/service/apigatewayv2/index.d.ts.map +1 -1
  101. package/dist/service/apigatewayv2/index.js +1 -0
  102. package/dist/service/apigatewayv2/index.js.map +1 -1
  103. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-controller.d.ts +4 -1
  104. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-controller.d.ts.map +1 -1
  105. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-controller.js +11 -2
  106. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-controller.js.map +1 -1
  107. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-error-response.d.ts +8 -0
  108. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-error-response.d.ts.map +1 -1
  109. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-error-response.js +10 -0
  110. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-error-response.js.map +1 -1
  111. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts.map +1 -1
  112. package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -0
  113. package/dist/service/aws/factory/sim-aws-account-service-cache.js.map +1 -1
  114. package/dist/service/cloudformation/template/node/fn/join/sim-cfn-fn-join.d.ts +7 -0
  115. package/dist/service/cloudformation/template/node/fn/join/sim-cfn-fn-join.d.ts.map +1 -1
  116. package/dist/service/cloudformation/template/node/fn/join/sim-cfn-fn-join.js +9 -1
  117. package/dist/service/cloudformation/template/node/fn/join/sim-cfn-fn-join.js.map +1 -1
  118. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  119. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts.map +1 -1
  120. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.js.map +1 -1
  121. package/dist/service/cloudfront/cff/sim-cff-arn.d.ts +13 -0
  122. package/dist/service/cloudfront/cff/sim-cff-arn.d.ts.map +1 -0
  123. package/dist/service/cloudfront/cff/sim-cff-arn.js +18 -0
  124. package/dist/service/cloudfront/cff/sim-cff-arn.js.map +1 -0
  125. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +16 -0
  126. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts.map +1 -1
  127. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +3 -0
  128. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -1
  129. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js +11 -4
  130. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -1
  131. package/dist/service/cloudfront/command/create-distribution/sim-cf-distro-config-normalizer.d.ts.map +1 -1
  132. package/dist/service/cloudfront/command/create-distribution/sim-cf-distro-config-normalizer.js +1 -0
  133. package/dist/service/cloudfront/command/create-distribution/sim-cf-distro-config-normalizer.js.map +1 -1
  134. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +3 -0
  135. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts.map +1 -1
  136. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.js +9 -2
  137. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.js.map +1 -1
  138. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +3 -0
  139. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts.map +1 -1
  140. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +6 -0
  141. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js.map +1 -1
  142. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-applicator.d.ts +48 -0
  143. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-applicator.d.ts.map +1 -0
  144. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-applicator.js +66 -0
  145. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-applicator.js.map +1 -0
  146. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-distribution.d.ts +11 -0
  147. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-distribution.d.ts.map +1 -0
  148. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-distribution.js +14 -0
  149. package/dist/service/cloudfront/controller/edge/sim-lambda-edge-distribution.js.map +1 -0
  150. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +5 -0
  151. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts.map +1 -1
  152. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +16 -1
  153. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js.map +1 -1
  154. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts.map +1 -1
  155. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +2 -0
  156. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js.map +1 -1
  157. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +5 -2
  158. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts.map +1 -1
  159. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-body.d.ts +24 -0
  160. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-body.d.ts.map +1 -0
  161. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-body.js +51 -0
  162. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-body.js.map +1 -0
  163. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-event-adapter.d.ts +41 -0
  164. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-event-adapter.d.ts.map +1 -0
  165. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-event-adapter.js +78 -0
  166. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-event-adapter.js.map +1 -0
  167. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-headers.d.ts +20 -0
  168. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-headers.d.ts.map +1 -0
  169. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-headers.js +55 -0
  170. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-headers.js.map +1 -0
  171. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.d.ts +30 -0
  172. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.d.ts.map +1 -0
  173. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.js +90 -0
  174. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.js.map +1 -0
  175. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.d.ts +26 -0
  176. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.d.ts.map +1 -0
  177. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.js +47 -0
  178. package/dist/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.js.map +1 -0
  179. package/dist/service/cloudfront/edge/sim-aws-cf-edge-functions.d.ts +44 -0
  180. package/dist/service/cloudfront/edge/sim-aws-cf-edge-functions.d.ts.map +1 -0
  181. package/dist/service/cloudfront/edge/sim-aws-cf-edge-functions.js +89 -0
  182. package/dist/service/cloudfront/edge/sim-aws-cf-edge-functions.js.map +1 -0
  183. package/dist/service/cloudfront/edge/sim-cf-edge-association-auth-z.d.ts +7 -0
  184. package/dist/service/cloudfront/edge/sim-cf-edge-association-auth-z.d.ts.map +1 -0
  185. package/dist/service/cloudfront/edge/sim-cf-edge-association-auth-z.js +27 -0
  186. package/dist/service/cloudfront/edge/sim-cf-edge-association-auth-z.js.map +1 -0
  187. package/dist/service/cloudfront/edge/sim-cf-edge-association-checks.d.ts +47 -0
  188. package/dist/service/cloudfront/edge/sim-cf-edge-association-checks.d.ts.map +1 -0
  189. package/dist/service/cloudfront/edge/sim-cf-edge-association-checks.js +71 -0
  190. package/dist/service/cloudfront/edge/sim-cf-edge-association-checks.js.map +1 -0
  191. package/dist/service/cloudfront/edge/sim-cf-edge-association-validator.d.ts +36 -0
  192. package/dist/service/cloudfront/edge/sim-cf-edge-association-validator.d.ts.map +1 -0
  193. package/dist/service/cloudfront/edge/sim-cf-edge-association-validator.js +79 -0
  194. package/dist/service/cloudfront/edge/sim-cf-edge-association-validator.js.map +1 -0
  195. package/dist/service/cloudfront/edge/sim-cf-edge-association.d.ts +23 -0
  196. package/dist/service/cloudfront/edge/sim-cf-edge-association.d.ts.map +1 -0
  197. package/dist/service/cloudfront/edge/sim-cf-edge-association.js +2 -0
  198. package/dist/service/cloudfront/edge/sim-cf-edge-association.js.map +1 -0
  199. package/dist/service/cloudfront/edge/sim-cf-edge-associations-configure.d.ts +14 -0
  200. package/dist/service/cloudfront/edge/sim-cf-edge-associations-configure.d.ts.map +1 -0
  201. package/dist/service/cloudfront/edge/sim-cf-edge-associations-configure.js +36 -0
  202. package/dist/service/cloudfront/edge/sim-cf-edge-associations-configure.js.map +1 -0
  203. package/dist/service/cloudfront/edge/sim-cf-edge-function-arn.d.ts +18 -0
  204. package/dist/service/cloudfront/edge/sim-cf-edge-function-arn.d.ts.map +1 -0
  205. package/dist/service/cloudfront/edge/sim-cf-edge-function-arn.js +47 -0
  206. package/dist/service/cloudfront/edge/sim-cf-edge-function-arn.js.map +1 -0
  207. package/dist/service/cloudfront/edge/sim-cf-edge-functions.d.ts +25 -0
  208. package/dist/service/cloudfront/edge/sim-cf-edge-functions.d.ts.map +1 -0
  209. package/dist/service/cloudfront/edge/sim-cf-edge-functions.js +2 -0
  210. package/dist/service/cloudfront/edge/sim-cf-edge-functions.js.map +1 -0
  211. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +13 -0
  212. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts.map +1 -1
  213. package/dist/service/cloudfront/error/sim-cloudfront.error.js +15 -0
  214. package/dist/service/cloudfront/error/sim-cloudfront.error.js.map +1 -1
  215. package/dist/service/cloudfront/index.d.ts +1 -0
  216. package/dist/service/cloudfront/index.d.ts.map +1 -1
  217. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +10 -0
  218. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts.map +1 -1
  219. package/dist/service/cloudfront/sim-cloudfront-commands.js +10 -1
  220. package/dist/service/cloudfront/sim-cloudfront-commands.js.map +1 -1
  221. package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -1
  222. package/dist/service/cloudfront/sim-cloudfront.js +3 -8
  223. package/dist/service/cloudfront/sim-cloudfront.js.map +1 -1
  224. package/dist/service/cloudfront/typings/lambda-at-edge.namespace.d.ts +91 -0
  225. package/dist/service/cloudfront/typings/lambda-at-edge.namespace.d.ts.map +1 -0
  226. package/dist/service/cloudfront/typings/lambda-at-edge.namespace.js +2 -0
  227. package/dist/service/cloudfront/typings/lambda-at-edge.namespace.js.map +1 -0
  228. package/dist/service/lambda/function/environment/sim-lambda-environment.d.ts +22 -20
  229. package/dist/service/lambda/function/environment/sim-lambda-environment.d.ts.map +1 -1
  230. package/dist/service/lambda/function/environment/sim-lambda-environment.js +27 -29
  231. package/dist/service/lambda/function/environment/sim-lambda-environment.js.map +1 -1
  232. package/dist/service/lambda/function/environment/sim-lambda-host-backed-variables.d.ts +28 -0
  233. package/dist/service/lambda/function/environment/sim-lambda-host-backed-variables.d.ts.map +1 -0
  234. package/dist/service/lambda/function/environment/sim-lambda-host-backed-variables.js +49 -0
  235. package/dist/service/lambda/function/environment/sim-lambda-host-backed-variables.js.map +1 -0
  236. package/dist/service/lambda/function/environment/sim-lambda-runtime-variables.d.ts +18 -0
  237. package/dist/service/lambda/function/environment/sim-lambda-runtime-variables.d.ts.map +1 -0
  238. package/dist/service/lambda/function/environment/sim-lambda-runtime-variables.js +23 -0
  239. package/dist/service/lambda/function/environment/sim-lambda-runtime-variables.js.map +1 -0
  240. package/dist/util/process/sim-process-environment.d.ts +9 -0
  241. package/dist/util/process/sim-process-environment.d.ts.map +1 -1
  242. package/dist/util/process/sim-process-environment.js +17 -0
  243. package/dist/util/process/sim-process-environment.js.map +1 -1
  244. package/dist/util/throttle/sim-token-bucket.d.ts +32 -0
  245. package/dist/util/throttle/sim-token-bucket.d.ts.map +1 -0
  246. package/dist/util/throttle/sim-token-bucket.js +53 -0
  247. package/dist/util/throttle/sim-token-bucket.js.map +1 -0
  248. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { SimLambdaEdgeRequestAdapter } from "./sim-lambda-edge-request-adapter.js";
3
+ import { SimLambdaEdgeResponseAdapter } from "./sim-lambda-edge-response-adapter.js";
4
+ /**
5
+ * Converts between native Fetch API Request and Response objects and the
6
+ * Lambda@Edge event and result shapes.
7
+ */
8
+ export class SimLambdaEdgeEventAdapter {
9
+ requestAdapter = new SimLambdaEdgeRequestAdapter();
10
+ responseAdapter = new SimLambdaEdgeResponseAdapter();
11
+ /**
12
+ * Build the event a viewer-request function is invoked with.
13
+ */
14
+ async toRequestEvent(request, includeBody, distribution) {
15
+ return {
16
+ Records: [
17
+ {
18
+ cf: {
19
+ config: this.config(distribution, "viewer-request"),
20
+ request: await this.requestAdapter.toEdgeRequest(request, includeBody),
21
+ },
22
+ },
23
+ ],
24
+ };
25
+ }
26
+ /**
27
+ * Build the event a viewer-response function is invoked with.
28
+ *
29
+ * The request travels with the response, and it never carries a body. Real
30
+ * CloudFront has already forwarded the request by this point, and
31
+ * `IncludeBody` applies to viewer-request and origin-request events only.
32
+ */
33
+ async toResponseEvent(request, response, distribution) {
34
+ return {
35
+ Records: [
36
+ {
37
+ cf: {
38
+ config: this.config(distribution, "viewer-response"),
39
+ request: await this.requestAdapter.toEdgeRequest(request, false),
40
+ response: this.responseAdapter.toEdgeResponse(response),
41
+ },
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ /**
47
+ * Read what a viewer-request handler answered with.
48
+ *
49
+ * A result carrying a status is a response the viewer gets. Anything else is
50
+ * the request carrying on to the origin.
51
+ */
52
+ fromRequestResult(result, originalRequest) {
53
+ return isEdgeResponse(result)
54
+ ? this.responseAdapter.fromEdgeResponse(result)
55
+ : this.requestAdapter.fromEdgeRequest(result, originalRequest);
56
+ }
57
+ /**
58
+ * Read what a viewer-response handler answered with.
59
+ */
60
+ fromResponseResult(result, originalResponse) {
61
+ return this.responseAdapter.fromEdgeViewerResponse(result, originalResponse);
62
+ }
63
+ config(distribution, eventType) {
64
+ return {
65
+ distributionId: distribution.distributionId,
66
+ distributionDomainName: distribution.distributionDomainName,
67
+ eventType,
68
+ requestId: randomUUID(),
69
+ };
70
+ }
71
+ }
72
+ /**
73
+ * Whether a viewer-request handler answered with a response.
74
+ */
75
+ function isEdgeResponse(result) {
76
+ return "status" in result;
77
+ }
78
+ //# sourceMappingURL=sim-lambda-edge-event-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-event-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-event-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAUrF;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACnB,cAAc,GAAG,IAAI,2BAA2B,EAAE,CAAC;IACnD,eAAe,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAEtE;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,OAAgB,EAChB,WAAoB,EACpB,YAA6C;QAE7C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE;wBACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;wBACnD,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAC9C,OAAO,EACP,WAAW,CACZ;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CACnB,OAAgB,EAChB,QAAkB,EAClB,YAA6C;QAE7C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE;wBACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC;wBACpD,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;wBAChE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACxD;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CACf,MAAkC,EAClC,eAAwB;QAExB,OAAO,cAAc,CAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,MAA6B,EAC7B,gBAA0B;QAE1B,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAChD,MAAM,EACN,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAEO,MAAM,CACZ,YAA6C,EAC7C,SAAiB;QAEjB,OAAO;YACL,cAAc,EAAE,YAAY,CAAC,cAAc;YAC3C,sBAAsB,EAAE,YAAY,CAAC,sBAAsB;YAC3D,SAAS;YACT,SAAS,EAAE,UAAU,EAAE;SACxB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,MAAkC;IAElC,OAAO,QAAQ,IAAI,MAAM,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { LambdaAtEdge } from "../../typings/lambda-at-edge.namespace.js";
2
+ /**
3
+ * Convert Fetch API headers into the Lambda@Edge header shape.
4
+ *
5
+ * Every header is keyed by its lowercase name and holds a list, because
6
+ * CloudFront presents repeated headers as repeated entries rather than as one
7
+ * joined value. `Headers` already lowercases its keys, and it joins repeated
8
+ * values with a comma, so a `set-cookie` is split back out through
9
+ * `getSetCookie` and everything else arrives as the single entry it was.
10
+ */
11
+ export declare function toEdgeHeaders(headers: Headers): LambdaAtEdge.Headers;
12
+ /**
13
+ * Convert Lambda@Edge headers back into Fetch API headers.
14
+ *
15
+ * A handler that left the header list alone hands back what it was given, and
16
+ * one that added an entry hands back a list with the entry on the end. Both
17
+ * are appended in order, so a repeated header survives the round trip.
18
+ */
19
+ export declare function fromEdgeHeaders(edgeHeaders: LambdaAtEdge.Headers | undefined): Headers;
20
+ //# sourceMappingURL=sim-lambda-edge-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-headers.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAmBpE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,GAC5C,OAAO,CAWT"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Convert Fetch API headers into the Lambda@Edge header shape.
3
+ *
4
+ * Every header is keyed by its lowercase name and holds a list, because
5
+ * CloudFront presents repeated headers as repeated entries rather than as one
6
+ * joined value. `Headers` already lowercases its keys, and it joins repeated
7
+ * values with a comma, so a `set-cookie` is split back out through
8
+ * `getSetCookie` and everything else arrives as the single entry it was.
9
+ */
10
+ export function toEdgeHeaders(headers) {
11
+ const edgeHeaders = new Map();
12
+ for (const [name, value] of headers.entries()) {
13
+ if (name !== "set-cookie") {
14
+ edgeHeaders.set(name, [{ key: headerKey(name), value }]);
15
+ }
16
+ }
17
+ const setCookies = headers.getSetCookie();
18
+ if (setCookies.length > 0) {
19
+ edgeHeaders.set("set-cookie", setCookies.map((value) => ({ key: "Set-Cookie", value })));
20
+ }
21
+ return Object.fromEntries(edgeHeaders);
22
+ }
23
+ /**
24
+ * Convert Lambda@Edge headers back into Fetch API headers.
25
+ *
26
+ * A handler that left the header list alone hands back what it was given, and
27
+ * one that added an entry hands back a list with the entry on the end. Both
28
+ * are appended in order, so a repeated header survives the round trip.
29
+ */
30
+ export function fromEdgeHeaders(edgeHeaders) {
31
+ const headers = new Headers();
32
+ const named = Object.entries(edgeHeaders ?? {});
33
+ for (const [name, values] of named) {
34
+ for (const header of values) {
35
+ headers.append(header.key ?? name, header.value);
36
+ }
37
+ }
38
+ return headers;
39
+ }
40
+ /**
41
+ * The casing CloudFront reports a header name in.
42
+ *
43
+ * Real CloudFront reports the casing the viewer or the origin sent, which
44
+ * `Headers` has already lowercased by the time anything here sees it. The
45
+ * conventional title casing is reconstructed so a handler reading `key` for
46
+ * display gets `User-Agent` rather than `user-agent`. Nothing reads `key` to
47
+ * decide anything, and `fromEdgeHeaders` matches on the lowercase name.
48
+ */
49
+ function headerKey(name) {
50
+ return name
51
+ .split("-")
52
+ .map((part) => part === "" ? part : part[0]?.toUpperCase() + part.slice(1))
53
+ .join("-");
54
+ }
55
+ //# sourceMappingURL=sim-lambda-edge-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-headers.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-headers.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;IAE7D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAE1C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,GAAG,CACb,YAAY,EACZ,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,WAA6C;IAE7C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAEhD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5D;SACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { LambdaAtEdge } from "../../typings/lambda-at-edge.namespace.js";
2
+ /**
3
+ * Converts a Fetch API Request into the Lambda@Edge request shape, and a
4
+ * handler's request back again. `SimLambdaEdgeResponseAdapter` does the same
5
+ * for a response.
6
+ */
7
+ export declare class SimLambdaEdgeRequestAdapter {
8
+ /**
9
+ * Convert a Node fetch Request into the Lambda@Edge request shape.
10
+ *
11
+ * The body is read only when the association asked for it, because
12
+ * CloudFront sends one only where `IncludeBody` is set and reading it here
13
+ * would otherwise consume a stream nothing wants.
14
+ */
15
+ toEdgeRequest(request: Request, includeBody: boolean): Promise<LambdaAtEdge.Request>;
16
+ /**
17
+ * Convert a handler's request back into a Node fetch Request.
18
+ */
19
+ fromEdgeRequest(edgeRequest: LambdaAtEdge.Request, originalRequest: Request): Request;
20
+ /**
21
+ * Request headers as the edge function sees them, with the host CloudFront
22
+ * presents.
23
+ *
24
+ * A request served on localhost arrives with the Yulin-local host, and the
25
+ * function is told the Distribution domain name or alternate domain name the
26
+ * viewer used, as it would be on AWS.
27
+ */
28
+ private viewerEdgeHeaders;
29
+ }
30
+ //# sourceMappingURL=sim-lambda-edge-request-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-request-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAY9E;;;;GAIG;AACH,qBAAa,2BAA2B;IACtC;;;;;;OAMG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAW/B;IAED;;OAEG;IACH,eAAe,CACb,WAAW,EAAE,YAAY,CAAC,OAAO,EACjC,eAAe,EAAE,OAAO,GACvB,OAAO,CAyBT;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -0,0 +1,90 @@
1
+ import { simAwsRequestHostname } from "../../../../serve/http/url/sim-aws-request-hostname.js";
2
+ import { edgeRequestBody, replacementBody } from "./sim-lambda-edge-body.js";
3
+ import { fromEdgeHeaders, toEdgeHeaders } from "./sim-lambda-edge-headers.js";
4
+ /**
5
+ * The client IP a simulated edge function is told the request came from.
6
+ *
7
+ * Everything reaching the simulator arrives in process, so there is no viewer
8
+ * address to report. The CloudFront Functions adapter reports the same one.
9
+ */
10
+ const simEdgeClientIp = "127.0.0.1";
11
+ /**
12
+ * Converts a Fetch API Request into the Lambda@Edge request shape, and a
13
+ * handler's request back again. `SimLambdaEdgeResponseAdapter` does the same
14
+ * for a response.
15
+ */
16
+ export class SimLambdaEdgeRequestAdapter {
17
+ /**
18
+ * Convert a Node fetch Request into the Lambda@Edge request shape.
19
+ *
20
+ * The body is read only when the association asked for it, because
21
+ * CloudFront sends one only where `IncludeBody` is set and reading it here
22
+ * would otherwise consume a stream nothing wants.
23
+ */
24
+ async toEdgeRequest(request, includeBody) {
25
+ const url = new URL(request.url);
26
+ return {
27
+ clientIp: simEdgeClientIp,
28
+ method: request.method,
29
+ uri: url.pathname,
30
+ querystring: url.search.replace(/^\?/u, ""),
31
+ headers: this.viewerEdgeHeaders(request),
32
+ ...(includeBody && { body: await edgeRequestBody(request) }),
33
+ };
34
+ }
35
+ /**
36
+ * Convert a handler's request back into a Node fetch Request.
37
+ */
38
+ fromEdgeRequest(edgeRequest, originalRequest) {
39
+ const url = new URL(originalRequest.url);
40
+ url.pathname = edgeRequest.uri;
41
+ url.search = edgeRequest.querystring;
42
+ const headers = fromEdgeHeaders(edgeRequest.headers);
43
+ restoreViewerHost(headers, originalRequest);
44
+ // A replaced body is a different length from the one the viewer sent, and
45
+ // `Content-Length` is read-only to the handler, so the header it hands
46
+ // back still describes the old body. Real CloudFront works the new length
47
+ // out for itself, and dropping the header leaves the transport to do the
48
+ // same.
49
+ if (edgeRequest.body?.action === "replace") {
50
+ headers.delete("content-length");
51
+ }
52
+ return new Request(url, {
53
+ method: edgeRequest.method,
54
+ headers,
55
+ body: replacementBody(edgeRequest, originalRequest),
56
+ duplex: "half",
57
+ redirect: originalRequest.redirect,
58
+ signal: originalRequest.signal,
59
+ });
60
+ }
61
+ /**
62
+ * Request headers as the edge function sees them, with the host CloudFront
63
+ * presents.
64
+ *
65
+ * A request served on localhost arrives with the Yulin-local host, and the
66
+ * function is told the Distribution domain name or alternate domain name the
67
+ * viewer used, as it would be on AWS.
68
+ */
69
+ viewerEdgeHeaders(request) {
70
+ const headers = toEdgeHeaders(request.headers);
71
+ headers["host"] = [{ key: "Host", value: simAwsRequestHostname(request) }];
72
+ return headers;
73
+ }
74
+ }
75
+ /**
76
+ * Restore the host the request arrived with.
77
+ *
78
+ * `Host` is read-only in a viewer-request event, so a host a handler wrote is
79
+ * discarded. That also keeps the Yulin-local host on the request continuing to
80
+ * the origin, which is the name the rest of the simulation resolves.
81
+ */
82
+ function restoreViewerHost(headers, originalRequest) {
83
+ const viewerHost = originalRequest.headers.get("host");
84
+ if (viewerHost === null) {
85
+ headers.delete("host");
86
+ return;
87
+ }
88
+ headers.set("host", viewerHost);
89
+ }
90
+ //# sourceMappingURL=sim-lambda-edge-request-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-request-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-request-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACtC;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,OAAgB,EAChB,WAAoB;QAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,OAAO;YACL,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,GAAG,CAAC,QAAQ;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACxC,GAAG,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CACb,WAAiC,EACjC,eAAwB;QAExB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACzC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;QAC/B,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC;QAErC,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE5C,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,QAAQ;QACR,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,OAAO;YACP,IAAI,EAAE,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC;YACnD,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,eAAe,CAAC,QAAQ;YAClC,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,OAAgB;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE3E,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,OAAgB,EAAE,eAAwB;IACnE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { LambdaAtEdge } from "../../typings/lambda-at-edge.namespace.js";
2
+ /**
3
+ * Converts between Fetch API Response objects and the Lambda@Edge response
4
+ * shape.
5
+ */
6
+ export declare class SimLambdaEdgeResponseAdapter {
7
+ /**
8
+ * Convert a Node fetch Response into the Lambda@Edge response shape.
9
+ */
10
+ toEdgeResponse(response: Response): LambdaAtEdge.Response;
11
+ /**
12
+ * Convert a handler's generated response into a Node fetch Response.
13
+ */
14
+ fromEdgeResponse(edgeResponse: LambdaAtEdge.Response): Response;
15
+ /**
16
+ * Convert a viewer-response handler's result into a Node fetch Response,
17
+ * keeping the origin's body.
18
+ *
19
+ * A viewer-response event carries no body, and a handler that returns
20
+ * `event.Records[0].cf.response` returns none either. Treating that as an
21
+ * empty body would drop the page while leaving the origin's content-length
22
+ * header describing it. A handler that did write a body replaces it.
23
+ */
24
+ fromEdgeViewerResponse(edgeResponse: LambdaAtEdge.Response, originalResponse: Response): Response;
25
+ }
26
+ //# sourceMappingURL=sim-lambda-edge-response-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-response-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAI9E;;;GAGG;AACH,qBAAa,4BAA4B;IACvC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAMxD;IAED;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAM9D;IAED;;;;;;;;OAQG;IACH,sBAAsB,CACpB,YAAY,EAAE,YAAY,CAAC,QAAQ,EACnC,gBAAgB,EAAE,QAAQ,GACzB,QAAQ,CAWV;CACF"}
@@ -0,0 +1,47 @@
1
+ import { edgeResponseBody } from "./sim-lambda-edge-body.js";
2
+ import { fromEdgeHeaders, toEdgeHeaders } from "./sim-lambda-edge-headers.js";
3
+ /**
4
+ * Converts between Fetch API Response objects and the Lambda@Edge response
5
+ * shape.
6
+ */
7
+ export class SimLambdaEdgeResponseAdapter {
8
+ /**
9
+ * Convert a Node fetch Response into the Lambda@Edge response shape.
10
+ */
11
+ toEdgeResponse(response) {
12
+ return {
13
+ status: String(response.status),
14
+ statusDescription: response.statusText,
15
+ headers: toEdgeHeaders(response.headers),
16
+ };
17
+ }
18
+ /**
19
+ * Convert a handler's generated response into a Node fetch Response.
20
+ */
21
+ fromEdgeResponse(edgeResponse) {
22
+ return new Response(edgeResponseBody(edgeResponse), {
23
+ status: Number(edgeResponse.status),
24
+ statusText: edgeResponse.statusDescription ?? "",
25
+ headers: fromEdgeHeaders(edgeResponse.headers),
26
+ });
27
+ }
28
+ /**
29
+ * Convert a viewer-response handler's result into a Node fetch Response,
30
+ * keeping the origin's body.
31
+ *
32
+ * A viewer-response event carries no body, and a handler that returns
33
+ * `event.Records[0].cf.response` returns none either. Treating that as an
34
+ * empty body would drop the page while leaving the origin's content-length
35
+ * header describing it. A handler that did write a body replaces it.
36
+ */
37
+ fromEdgeViewerResponse(edgeResponse, originalResponse) {
38
+ return new Response(edgeResponse.body === undefined
39
+ ? originalResponse.body
40
+ : edgeResponseBody(edgeResponse), {
41
+ status: Number(edgeResponse.status),
42
+ statusText: edgeResponse.statusDescription ?? "",
43
+ headers: fromEdgeHeaders(edgeResponse.headers),
44
+ });
45
+ }
46
+ }
47
+ //# sourceMappingURL=sim-lambda-edge-response-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-lambda-edge-response-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/edge/adapter/sim-lambda-edge-response-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IACvC;;OAEG;IACH,cAAc,CAAC,QAAkB;QAC/B,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,iBAAiB,EAAE,QAAQ,CAAC,UAAU;YACtC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,YAAmC;QAClD,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;YAClD,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACnC,UAAU,EAAE,YAAY,CAAC,iBAAiB,IAAI,EAAE;YAChD,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,sBAAsB,CACpB,YAAmC,EACnC,gBAA0B;QAE1B,OAAO,IAAI,QAAQ,CACjB,YAAY,CAAC,IAAI,KAAK,SAAS;YAC7B,CAAC,CAAC,gBAAgB,CAAC,IAAI;YACvB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAClC;YACE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACnC,UAAU,EAAE,YAAY,CAAC,iBAAiB,IAAI,EAAE;YAChD,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;SAC/C,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ import type { SimAws } from "../../aws/sim-aws.js";
2
+ import type { SimCfEdgeFunctions } from "./sim-cf-edge-functions.js";
3
+ /**
4
+ * The service principal Lambda@Edge runs a function's execution role as.
5
+ *
6
+ * A role for an ordinary function trusts `lambda.amazonaws.com` alone, and
7
+ * CloudFront refuses to associate that function. Adding this principal to the
8
+ * trust policy is the step people miss.
9
+ */
10
+ export declare const simLambdaEdgeServicePrincipal = "edgelambda.amazonaws.com";
11
+ /**
12
+ * The simulated Lambda functions of one simulated AWS instance, as Lambda@Edge
13
+ * targets.
14
+ */
15
+ export declare class SimAwsCfEdgeFunctions implements SimCfEdgeFunctions {
16
+ private readonly simAws;
17
+ constructor(simAws: SimAws);
18
+ /**
19
+ * Check the function is there and that Lambda@Edge could run it.
20
+ */
21
+ assertAssociable(functionArn: string): Promise<void>;
22
+ /**
23
+ * Run the function for one edge event.
24
+ *
25
+ * The function is invoked directly rather than through an Invoke command,
26
+ * because real CloudFront runs the replica as the service rather than as
27
+ * whoever made the request, and because a handler that throws has to reach
28
+ * the request pipeline as a failure rather than as an invocation result.
29
+ */
30
+ invoke(functionArn: string, event: object): Promise<unknown>;
31
+ /**
32
+ * What this ARN names, refusing an ARN that names nothing here.
33
+ */
34
+ private target;
35
+ /**
36
+ * Refuse a function whose execution role Lambda@Edge could not assume.
37
+ *
38
+ * Whether a role can be assumed is IAM's own rule, so the decision is made
39
+ * by the shared service-role helper and CloudFront only says what it means
40
+ * here.
41
+ */
42
+ private assertExecutionRoleTrust;
43
+ }
44
+ //# sourceMappingURL=sim-aws-cf-edge-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-aws-cf-edge-functions.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/edge/sim-aws-cf-edge-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAOxE;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,MAAM,EAAI;IAE/C;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;IAED;;;;;;;OAOG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjE;IAED;;OAEG;IACH,OAAO,CAAC,MAAM;IAiBd;;;;;;OAMG;YACW,wBAAwB;CAcvC"}
@@ -0,0 +1,89 @@
1
+ import { assumeSimServiceRole, simServiceRoleTarget, } from "../../sts/service-role/sim-service-role.js";
2
+ import { SimCloudFrontInvalidLambdaFunctionAssociation } from "../error/sim-cloudfront.error.js";
3
+ import { edgeFunctionArnParts } from "./sim-cf-edge-function-arn.js";
4
+ /**
5
+ * The service principal Lambda@Edge runs a function's execution role as.
6
+ *
7
+ * A role for an ordinary function trusts `lambda.amazonaws.com` alone, and
8
+ * CloudFront refuses to associate that function. Adding this principal to the
9
+ * trust policy is the step people miss.
10
+ */
11
+ export const simLambdaEdgeServicePrincipal = "edgelambda.amazonaws.com";
12
+ /**
13
+ * The session name AWS gives a role Lambda@Edge assumes.
14
+ */
15
+ const sessionName = "LambdaEdge";
16
+ /**
17
+ * The simulated Lambda functions of one simulated AWS instance, as Lambda@Edge
18
+ * targets.
19
+ */
20
+ export class SimAwsCfEdgeFunctions {
21
+ simAws;
22
+ constructor(simAws) {
23
+ this.simAws = simAws;
24
+ }
25
+ /**
26
+ * Check the function is there and that Lambda@Edge could run it.
27
+ */
28
+ async assertAssociable(functionArn) {
29
+ await this.assertExecutionRoleTrust(this.target(functionArn), functionArn);
30
+ }
31
+ /**
32
+ * Run the function for one edge event.
33
+ *
34
+ * The function is invoked directly rather than through an Invoke command,
35
+ * because real CloudFront runs the replica as the service rather than as
36
+ * whoever made the request, and because a handler that throws has to reach
37
+ * the request pipeline as a failure rather than as an invocation result.
38
+ */
39
+ async invoke(functionArn, event) {
40
+ return await this.target(functionArn).simFunction.invoke(event);
41
+ }
42
+ /**
43
+ * What this ARN names, refusing an ARN that names nothing here.
44
+ */
45
+ target(functionArn) {
46
+ const arn = edgeFunctionArnParts(functionArn);
47
+ const found = this.simAws
48
+ .accountRegionScope(arn.accountId, arn.regionName)
49
+ .lambda()
50
+ .getSimFunctionTarget(arn.functionName, arn.qualifier);
51
+ if (found === undefined) {
52
+ throw new SimCloudFrontInvalidLambdaFunctionAssociation(`Sim CloudFront LambdaFunctionARN ${functionArn} names no simulated ` +
53
+ `Lambda function version`);
54
+ }
55
+ return found;
56
+ }
57
+ /**
58
+ * Refuse a function whose execution role Lambda@Edge could not assume.
59
+ *
60
+ * Whether a role can be assumed is IAM's own rule, so the decision is made
61
+ * by the shared service-role helper and CloudFront only says what it means
62
+ * here.
63
+ */
64
+ async assertExecutionRoleTrust(target, functionArn) {
65
+ const { accountId, regionName } = target.simFunction.accountRegionScope;
66
+ await assumeSimServiceRole({
67
+ target: simServiceRoleTarget(target.simFunction.roleArn),
68
+ servicePrincipal: simLambdaEdgeServicePrincipal,
69
+ sessionName,
70
+ iam: this.simAws.accountRegionScope(accountId, regionName).iam(),
71
+ refusals: executionRoleRefusals(functionArn),
72
+ });
73
+ }
74
+ }
75
+ /**
76
+ * What CloudFront says when a Lambda@Edge execution role is unusable.
77
+ */
78
+ function executionRoleRefusals(functionArn) {
79
+ return {
80
+ missingRole: (target) => new SimCloudFrontInvalidLambdaFunctionAssociation(`Sim CloudFront Lambda@Edge function ${functionArn} has execution ` +
81
+ `role ${target.roleArn}, which is not a simulated IAM role`),
82
+ untrustedRole: (target, servicePrincipal) => new SimCloudFrontInvalidLambdaFunctionAssociation(`The trust policy of ${target.roleArn} does not allow ` +
83
+ `${servicePrincipal} to assume it, so Lambda@Edge could not run ` +
84
+ `${functionArn}. A Lambda@Edge execution role trusts both ` +
85
+ `lambda.amazonaws.com and ${servicePrincipal}. Add it to the ` +
86
+ `role's AssumeRolePolicyDocument.`),
87
+ };
88
+ }
89
+ //# sourceMappingURL=sim-aws-cf-edge-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-aws-cf-edge-functions.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/edge/sim-aws-cf-edge-functions.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAEpB,oBAAoB,GACrB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,6CAA6C,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACH,MAAM;IAAnC,YAA6B,MAAc;sBAAd,MAAM;IAAW,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAa;QAC7C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAmB;QAChC,MAAM,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;aACtB,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC;aACjD,MAAM,EAAE;aACR,oBAAoB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,6CAA6C,CACrD,oCAAoC,WAAW,sBAAsB;gBACnE,yBAAyB,CAC5B,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CACpC,MAA+B,EAC/B,WAAmB;QAEnB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAExE,MAAM,oBAAoB,CAAC;YACzB,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;YACxD,gBAAgB,EAAE,6BAA6B;YAC/C,WAAW;YACX,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE;YAChE,QAAQ,EAAE,qBAAqB,CAAC,WAAW,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,WAAmB;IAChD,OAAO;QACL,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CACtB,IAAI,6CAA6C,CAC/C,uCAAuC,WAAW,iBAAiB;YACjE,QAAQ,MAAM,CAAC,OAAO,qCAAqC,CAC9D;QACH,aAAa,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAC1C,IAAI,6CAA6C,CAC/C,uBAAuB,MAAM,CAAC,OAAO,kBAAkB;YACrD,GAAG,gBAAgB,8CAA8C;YACjE,GAAG,WAAW,6CAA6C;YAC3D,4BAA4B,gBAAgB,kBAAkB;YAC9D,kCAAkC,CACrC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
2
+ import type { SimIamInterServiceAuthZ } from "../../iam/authorize/sim-iam-inter-service-auth-z.js";
3
+ /**
4
+ * Check the caller may put this function version in front of a Distribution.
5
+ */
6
+ export declare function authorizeEdgeAssociation(iam: SimIamInterServiceAuthZ, functionArn: string, caller?: SimAwsCaller): void;
7
+ //# sourceMappingURL=sim-cf-edge-association-auth-z.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-edge-association-auth-z.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/edge/sim-cf-edge-association-auth-z.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAcnG;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,uBAAuB,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,YAAY,GACpB,IAAI,CAYN"}
@@ -0,0 +1,27 @@
1
+ import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
2
+ /**
3
+ * What a caller needs on the function version to put it in front of a
4
+ * Distribution.
5
+ *
6
+ * `GetFunction` is how CloudFront reads the code and configuration, and
7
+ * `EnableReplication` is what lets the replication service copy it out to the
8
+ * edge. A policy written the way the AWS docs write it grants
9
+ * `lambda:EnableReplication*`, which matches this.
10
+ */
11
+ const associationActions = ["lambda:GetFunction", "lambda:EnableReplication"];
12
+ /**
13
+ * Check the caller may put this function version in front of a Distribution.
14
+ */
15
+ export function authorizeEdgeAssociation(iam, functionArn, caller) {
16
+ for (const action of associationActions) {
17
+ const decision = iam.authorize({ action, resource: functionArn, caller });
18
+ if (decision.isDenied) {
19
+ throw new SimIamAccessDenied({
20
+ principal: decision.caller.principal,
21
+ action,
22
+ resource: functionArn,
23
+ });
24
+ }
25
+ }
26
+ }
27
+ //# sourceMappingURL=sim-cf-edge-association-auth-z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-edge-association-auth-z.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/edge/sim-cf-edge-association-auth-z.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAA4B,EAC5B,WAAmB,EACnB,MAAqB;IAErB,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1E,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,MAAM;gBACN,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { SimCloudFrontCacheBehaviorConfig, SimCloudFrontDefaultCacheBehaviorConfig } from "../command/create-distribution/create-distribution.command.js";
2
+ /**
3
+ * The checks a Lambda@Edge association needs that read the Behavior config
4
+ * alone, held apart from the validator that also reaches simulated Lambda and
5
+ * simulated IAM.
6
+ */
7
+ /**
8
+ * The event types this simulation runs a Lambda@Edge function at.
9
+ */
10
+ export type SimulatedEdgeEventType = "viewer-request" | "viewer-response";
11
+ type BehaviorConfig = SimCloudFrontDefaultCacheBehaviorConfig | SimCloudFrontCacheBehaviorConfig;
12
+ /**
13
+ * Refuse an event type this simulation has no hook for.
14
+ *
15
+ * CloudFront runs a Lambda@Edge function at all four events, and this runs one
16
+ * at the two viewer events. An origin association is told so here rather than
17
+ * being configured into a Behavior that would never run it.
18
+ */
19
+ export declare function assertSimulatedEventType(eventType: string | undefined): asserts eventType is SimulatedEdgeEventType;
20
+ /**
21
+ * Refuse a Behavior that runs both kinds of edge function at the viewer.
22
+ *
23
+ * CloudFront takes one function per event type, and it takes CloudFront
24
+ * Functions and Lambda@Edge together only where the Lambda@Edge function is on
25
+ * an origin event. A viewer-request CloudFront Function alongside a
26
+ * viewer-response Lambda@Edge function is refused too, which is the part of
27
+ * the rule that surprises people.
28
+ */
29
+ export declare function assertNoViewerFunctionMix(behavior: BehaviorConfig): void;
30
+ /**
31
+ * Refuse a Behavior associating two functions with one event type.
32
+ *
33
+ * CloudFront takes one edge function per event type. Two entries naming the
34
+ * same one would otherwise be configured last-wins, leaving a Distribution
35
+ * running a function the template did not put first.
36
+ */
37
+ export declare function assertOneFunctionPerEvent(seen: Set<string>, eventType: string): void;
38
+ /**
39
+ * Refuse an association with no function to run.
40
+ *
41
+ * `LambdaFunctionARN` is required on a real association. Left out, it has to
42
+ * be refused here, because the Behavior configurator reads it well after a
43
+ * Distribution ID has been allocated and the Distribution built.
44
+ */
45
+ export declare function assertAssociatedFunctionArn(functionArn: string | undefined, eventType: string): asserts functionArn is string;
46
+ export {};
47
+ //# sourceMappingURL=sim-cf-edge-association-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-edge-association-checks.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/edge/sim-cf-edge-association-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,+DAA+D,CAAC;AAGvE;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAE1E,KAAK,cAAc,GACf,uCAAuC,GACvC,gCAAgC,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,SAAS,IAAI,sBAAsB,CAU7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAmBxE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAWN;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,IAAI,MAAM,CAS/B"}