@kensio/yulin 1.21.3 → 1.21.5

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 (650) hide show
  1. package/dist/service/athena/engine/sim-athena-column-types.d.ts +2 -0
  2. package/dist/service/athena/engine/sim-athena-column-types.js +4 -0
  3. package/dist/service/athena/engine/sim-athena-delimited-format.d.ts +7 -0
  4. package/dist/service/athena/engine/sim-athena-delimited-format.js +51 -0
  5. package/dist/service/athena/engine/sim-athena-engine-result.js +5 -0
  6. package/dist/service/athena/engine/sim-athena-engine-run.d.ts +22 -2
  7. package/dist/service/athena/engine/sim-athena-engine-run.js +21 -31
  8. package/dist/service/athena/engine/sim-athena-loaded-tables.d.ts +10 -0
  9. package/dist/service/athena/engine/sim-athena-loaded-tables.js +35 -0
  10. package/dist/service/athena/engine/sim-athena-parquet-module.d.ts +25 -0
  11. package/dist/service/athena/engine/sim-athena-parquet-module.js +39 -0
  12. package/dist/service/athena/engine/sim-athena-parquet-records.d.ts +13 -0
  13. package/dist/service/athena/engine/sim-athena-parquet-records.js +57 -0
  14. package/dist/service/athena/engine/sim-athena-query-engine.d.ts +23 -5
  15. package/dist/service/athena/engine/sim-athena-query-engine.js +31 -10
  16. package/dist/service/athena/engine/sim-athena-record-reader.d.ts +12 -6
  17. package/dist/service/athena/engine/sim-athena-record-reader.js +28 -53
  18. package/dist/service/athena/engine/sim-athena-sql-translation.d.ts +15 -9
  19. package/dist/service/athena/engine/sim-athena-sql-translation.js +25 -13
  20. package/dist/service/athena/engine/sim-athena-sqlite-values.d.ts +5 -0
  21. package/dist/service/athena/engine/sim-athena-sqlite-values.js +24 -1
  22. package/dist/service/athena/engine/sim-athena-table-objects.d.ts +7 -2
  23. package/dist/service/athena/engine/sim-athena-table-objects.js +8 -4
  24. package/dist/service/athena/engine/sim-athena-table-rows.js +4 -3
  25. package/dist/service/athena/engine/sim-athena-turn-down.d.ts +26 -0
  26. package/dist/service/athena/engine/sim-athena-turn-down.js +43 -0
  27. package/dist/service/athena/execution/sim-athena-query-completion.d.ts +3 -1
  28. package/dist/service/athena/execution/sim-athena-query-completion.js +7 -1
  29. package/dist/service/athena/index.d.ts +1 -1
  30. package/dist/service/athena/index.js +1 -1
  31. package/dist/service/athena/result/sim-athena-query-answer.d.ts +12 -0
  32. package/dist/service/athena/result/sim-athena-query-answer.js +26 -4
  33. package/dist/service/athena/sim-athena-answered-query.fixture.d.ts +2 -0
  34. package/dist/service/athena/sim-athena-answered-query.fixture.js +1 -0
  35. package/dist/service/athena/sim-athena-engine.fixture.d.ts +20 -0
  36. package/dist/service/athena/sim-athena-engine.fixture.js +34 -0
  37. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.d.ts +23 -0
  38. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.js +37 -0
  39. package/dist/service/cloudformation/cdk/assets/sim-cdk-assets-publisher.d.ts +18 -13
  40. package/dist/service/cloudformation/cdk/assets/sim-cdk-assets-publisher.js +16 -24
  41. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
  43. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
  45. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
  46. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
  47. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
  48. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
  49. package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
  50. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
  51. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
  52. package/dist/service/cloudformation/cdk/sim-cdk-cloud-assembly.factory.d.ts +12 -0
  53. package/dist/service/cloudformation/cdk/sim-cdk-cloud-assembly.factory.js +16 -7
  54. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
  55. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
  56. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
  57. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
  58. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
  59. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
  60. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
  61. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
  62. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
  63. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
  64. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
  65. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
  66. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
  67. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
  68. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
  69. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
  70. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
  71. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
  72. package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
  73. package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
  74. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
  75. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
  76. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
  77. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
  78. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
  79. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
  80. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
  81. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
  82. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +3 -0
  83. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +16 -13
  84. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
  85. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
  86. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
  87. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
  88. package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
  89. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
  90. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
  91. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
  92. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
  93. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
  94. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
  95. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
  96. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
  97. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
  98. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
  99. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
  100. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
  101. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
  102. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
  103. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
  104. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
  105. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
  106. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
  107. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
  108. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
  109. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
  110. package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
  111. package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
  112. package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
  113. package/dist/service/cloudformation/command/update-stack/update-stack.handler.d.ts +6 -0
  114. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +15 -16
  115. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  116. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-options-deployed.d.ts +10 -0
  117. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-options-deployed.js +14 -0
  118. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -1
  119. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +3 -2
  120. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +5 -8
  121. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.js +0 -14
  122. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +9 -0
  123. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +2 -0
  124. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +10 -0
  125. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  126. package/dist/service/cloudformation/deploy/sim-cfn-template-file-updater.js +1 -0
  127. package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
  128. package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
  129. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
  130. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
  131. package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
  132. package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
  133. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
  134. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
  135. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
  136. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
  137. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
  138. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  139. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  140. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  141. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +8 -0
  142. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  143. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  144. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  145. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  162. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  163. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  164. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  165. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  166. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  167. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  168. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  169. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  170. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  171. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  172. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  173. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  174. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  175. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  176. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  177. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  178. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  179. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  180. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  181. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  182. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  183. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  184. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  185. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  186. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  187. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  188. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  189. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  190. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  191. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  192. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  193. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  194. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  195. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  196. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  197. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  198. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  199. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  200. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  201. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  202. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  203. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  204. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  205. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  206. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  207. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  208. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  209. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  210. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  211. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  212. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  213. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  214. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  215. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  216. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  217. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  218. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  219. package/dist/service/cloudformation/stack/sim-cfn-stack-deploy-context.d.ts +47 -0
  220. package/dist/service/cloudformation/stack/sim-cfn-stack-deploy-context.js +46 -0
  221. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  222. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  223. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +53 -20
  224. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +79 -32
  225. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  226. package/dist/service/cloudformation/stack/sim-cfn-stack.js +60 -32
  227. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +21 -1
  228. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  229. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  230. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  231. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  232. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  233. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  234. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  235. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  236. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  237. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  238. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  239. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  240. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +9 -0
  241. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +14 -0
  242. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +6 -1
  243. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  244. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  245. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  246. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  247. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  248. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  249. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  250. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  251. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  252. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  253. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  254. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  255. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  256. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  257. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  258. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  259. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  260. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  261. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  262. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  263. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  264. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  265. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  266. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  267. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  268. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  269. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  270. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  271. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  272. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  273. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  274. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  275. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  276. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  277. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  278. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  279. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  280. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  281. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  282. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  283. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  284. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  285. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  286. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  287. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  288. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  289. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  290. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  291. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  292. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  293. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  294. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  295. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  296. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  297. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  298. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  299. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  300. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  301. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  302. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  303. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  304. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  305. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  306. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  307. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  308. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  309. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  310. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  311. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  312. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  313. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  314. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  315. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  316. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  317. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  318. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  319. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  320. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  321. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  322. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  323. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  324. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  325. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  326. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  327. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  328. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  329. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  330. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  331. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  332. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  333. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  334. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  335. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  336. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  337. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  338. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  339. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  340. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  341. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  342. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  343. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  344. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  345. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  346. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  347. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  348. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  349. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  350. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  351. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  352. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  353. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  354. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  355. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  356. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  357. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  358. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  359. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  360. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  361. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  362. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  363. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  364. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  365. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  366. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  367. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  368. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  369. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  370. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  371. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  372. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  373. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  374. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  375. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  376. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  377. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  378. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  379. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  380. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  381. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  382. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  383. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  384. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  385. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  386. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  387. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  388. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  389. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  390. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  391. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  392. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  393. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  394. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  395. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  396. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  397. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  398. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  399. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  400. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  401. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  402. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  403. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  404. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  405. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  406. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  407. package/dist/service/lambda/index.d.ts +1 -0
  408. package/dist/service/lambda/index.js +1 -0
  409. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  410. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  411. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  412. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  413. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  414. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  415. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  416. package/dist/service/lambda/sim-lambda.js +13 -0
  417. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  418. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  419. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  420. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  421. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  422. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  423. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  424. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  425. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  426. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  427. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  428. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  429. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  430. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  431. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  432. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  433. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  434. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  435. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  436. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  437. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  438. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  439. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  440. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  441. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  442. package/dist/service/s3/bucket/sim-s3-bucket-maker.d.ts +31 -0
  443. package/dist/service/s3/bucket/sim-s3-bucket-maker.js +41 -0
  444. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  445. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  446. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  447. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  448. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  449. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  450. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  451. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  452. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  453. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  454. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  455. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  456. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  457. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  458. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  459. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  460. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  461. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  462. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  463. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  464. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  465. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  466. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  467. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  468. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  469. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  470. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  471. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  472. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  473. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  474. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +2 -2
  475. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +4 -12
  476. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  477. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  478. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  479. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  480. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  481. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  482. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  483. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  484. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  485. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  486. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  487. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  488. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  489. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  490. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  491. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  492. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  493. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  494. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  495. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  496. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  497. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  498. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  499. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  500. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  501. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  502. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  503. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  504. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  505. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  506. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  507. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  508. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  509. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  510. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  511. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  512. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  513. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  514. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  515. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  516. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  517. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  518. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  519. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  520. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  521. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  522. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  523. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  524. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  525. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  526. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  527. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  528. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  529. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  530. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  531. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  532. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  533. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  534. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  535. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  536. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  537. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  538. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  539. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  540. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  541. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  542. package/dist/service/s3/error/sim-s3.error.js +26 -40
  543. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  544. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  545. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  546. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  547. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  548. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  549. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  550. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  551. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  552. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  553. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  554. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  555. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  556. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  557. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  558. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  559. package/dist/service/s3/object/s3-object-summary.js +1 -10
  560. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  561. package/dist/service/s3/object/s3-object-tags.js +77 -0
  562. package/dist/service/s3/object/s3-object.d.ts +49 -0
  563. package/dist/service/s3/object/s3-object.js +52 -1
  564. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  565. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  566. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  567. package/dist/service/s3/object/s3-storage-class.js +67 -0
  568. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  569. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  570. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  571. package/dist/service/s3/object/s3-write-storage.js +21 -0
  572. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  573. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  574. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  575. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  576. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  577. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  578. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  579. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  580. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  581. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  582. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  583. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  584. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  585. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  586. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  587. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  588. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  589. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  590. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  591. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  592. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  593. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  594. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  595. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  596. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  597. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  598. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  599. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  600. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  601. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  602. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  603. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  604. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  605. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  606. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  607. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  608. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  609. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  610. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  611. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  612. package/dist/service/s3/sim-s3-commands.d.ts +10 -0
  613. package/dist/service/s3/sim-s3-commands.js +13 -0
  614. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  615. package/dist/service/s3/sim-s3-operations.js +17 -4
  616. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  617. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  618. package/dist/service/s3/sim-s3.d.ts +28 -0
  619. package/dist/service/s3/sim-s3.js +38 -0
  620. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  621. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  622. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  623. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  624. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  625. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  626. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  627. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  628. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  629. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  630. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  631. package/dist/util/background/background-clock-waits.d.ts +52 -0
  632. package/dist/util/background/background-clock-waits.js +76 -0
  633. package/dist/util/background/background-jitter.js +1 -0
  634. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  635. package/dist/util/background/background-pending-tasks.js +117 -0
  636. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  637. package/dist/util/background/background-settled-tasks.js +4 -1
  638. package/dist/util/background/background.d.ts +43 -0
  639. package/dist/util/background/background.js +27 -19
  640. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  641. package/dist/util/background/non-deterministic-background.js +24 -20
  642. package/dist/util/clock/sim-clock-control.js +23 -2
  643. package/docs/services/apigateway/README.md +3 -1
  644. package/docs/services/athena/README.md +126 -3
  645. package/docs/services/cloudformation/README.md +831 -67
  646. package/docs/services/cognito/README.md +5 -0
  647. package/docs/services/dynamodb/README.md +86 -11
  648. package/docs/services/lambda/README.md +603 -39
  649. package/docs/services/s3/README.md +688 -57
  650. package/package.json +8 -2
@@ -4,6 +4,7 @@ import { parseLambdaHandlerName } from "./sim-lambda-handler-name.js";
4
4
  import { makeSimLambdaVmContext, } from "./vm/sim-lambda-vm-context.js";
5
5
  import { simLambdaNoOutputSink, } from "../logging/sim-lambda-output-sink.js";
6
6
  import { SimLambdaVmModules } from "./vm/sim-lambda-vm-modules.js";
7
+ import { importSimLambdaHandlerModule, simLambdaExportedHandler, } from "./vm/sim-lambda-vm-handler-lookup.js";
7
8
  /**
8
9
  * Executable sim Lambda code compiled from a zip archive in a vm context.
9
10
  *
@@ -20,7 +21,10 @@ export class SimLambdaVmZipCode {
20
21
  */
21
22
  runsInHostScope = false;
22
23
  #handler;
23
- #sink = simLambdaNoOutputSink;
24
+ /** Where this execution environment's output goes, and what happens to it. */
25
+ #recording = {
26
+ sink: simLambdaNoOutputSink,
27
+ };
24
28
  constructor(properties) {
25
29
  this.properties = properties;
26
30
  }
@@ -31,8 +35,8 @@ export class SimLambdaVmZipCode {
31
35
  * asks for the handler, so the streams function code is handed already carry
32
36
  * the sink by the time any of it runs.
33
37
  */
34
- recordOutputTo(sink) {
35
- this.#sink = sink;
38
+ recordOutputTo(sink, output) {
39
+ this.#recording = { sink, output };
36
40
  }
37
41
  /**
38
42
  * This archive under changed function settings, ready to cold start again.
@@ -62,47 +66,17 @@ export class SimLambdaVmZipCode {
62
66
  const parsedName = parseLambdaHandlerName(handlerName);
63
67
  const modules = new SimLambdaVmModules({
64
68
  archive,
65
- context: makeSimLambdaVmContext({ ...this.properties, sink: this.#sink }),
69
+ context: makeSimLambdaVmContext({
70
+ ...this.properties,
71
+ ...this.#recording,
72
+ }),
66
73
  sdkModuleProvider: sdkModuleProvider ?? new SimLambdaNoVmSdkModuleProvider(),
67
74
  });
68
- const moduleExports = this.importHandlerModule(modules, parsedName.modulePath);
69
- const handler = this.exportedHandler(moduleExports, parsedName.exportName);
75
+ const moduleExports = importSimLambdaHandlerModule(modules, parsedName.modulePath);
76
+ const handler = simLambdaExportedHandler(moduleExports, parsedName.exportName);
70
77
  if (typeof handler !== "function") {
71
78
  throw new SimLambdaRuntimeError("Runtime.HandlerNotFound", `${handlerName} is undefined or not exported by ${parsedName.modulePath}`);
72
79
  }
73
80
  return handler;
74
81
  }
75
- /**
76
- * Look up the handler export, tolerating a module that exported a nullish
77
- * value so the lookup still reports Runtime.HandlerNotFound.
78
- *
79
- * Only own exports count. Walking the prototype chain would let a handler
80
- * name like `index.constructor` resolve to an `Object.prototype` member and
81
- * be invoked as the handler, where real Lambda reports HandlerNotFound.
82
- */
83
- exportedHandler(moduleExports, exportName) {
84
- if (moduleExports === null || moduleExports === undefined) {
85
- return undefined;
86
- }
87
- const exportedValues = moduleExports;
88
- if (!Object.hasOwn(exportedValues, exportName)) {
89
- return undefined;
90
- }
91
- return Reflect.get(exportedValues, exportName);
92
- }
93
- importHandlerModule(modules, modulePath) {
94
- try {
95
- return modules.requireModule(`./${modulePath}`);
96
- }
97
- catch (error) {
98
- if (error instanceof SimLambdaRuntimeError) {
99
- throw error;
100
- }
101
- let message = String(error);
102
- if (error instanceof Error) {
103
- message = error.message;
104
- }
105
- throw new SimLambdaRuntimeError("Runtime.ImportModuleError", message);
106
- }
107
- }
108
82
  }
@@ -1,6 +1,7 @@
1
1
  import vm from "node:vm";
2
2
  import { type SimClock } from "../../../../../util/clock/sim-clock.js";
3
3
  import type { SimLambdaEnvironment } from "../../environment/sim-lambda-environment.js";
4
+ import type { SimLambdaOutput } from "../../logging/sim-lambda-output.js";
4
5
  import { type SimLambdaOutputSink } from "../../logging/sim-lambda-output-sink.js";
5
6
  import type { SimLambdaOutboundHttp } from "../../outbound/sim-lambda-outbound-http.js";
6
7
  /**
@@ -12,6 +13,12 @@ export interface SimLambdaVmContextProperties {
12
13
  readonly clock?: SimClock | undefined;
13
14
  /** Where the sandbox's output is recorded, nowhere by default. */
14
15
  readonly sink?: SimLambdaOutputSink | undefined;
16
+ /**
17
+ * Whether what the sandbox prints also reaches the host standard streams.
18
+ * A sandbox given none forwards everything, which is what a function with
19
+ * nowhere to record its output needs.
20
+ */
21
+ readonly output?: SimLambdaOutput | undefined;
15
22
  /**
16
23
  * Where the sandbox's `fetch` requests to hostnames the simulation serves
17
24
  * are answered. Without one every request reaches the network, as the host
@@ -4,6 +4,8 @@ import { makeSimClockDate } from "../../../../../util/clock/sim-clock-date.js";
4
4
  import { SimRealClock, } from "../../../../../util/clock/sim-clock.js";
5
5
  import { simLambdaNoOutputSink, } from "../../logging/sim-lambda-output-sink.js";
6
6
  import { makeSimLambdaOutboundFetch } from "../../outbound/sim-lambda-outbound-fetch.js";
7
+ import { simLambdaClearInterval, simLambdaClearTimeout, } from "../../invoke/timer/sim-lambda-clear-timer.js";
8
+ import { simLambdaSetInterval, simLambdaSetTimeout, } from "../../invoke/timer/sim-lambda-process-timers.js";
7
9
  import { SimLambdaVmOutputStream } from "./sim-lambda-vm-output-stream.js";
8
10
  /**
9
11
  * Create the sandbox vm context that sim Lambda function code runs in.
@@ -22,12 +24,12 @@ import { SimLambdaVmOutputStream } from "./sim-lambda-vm-output-stream.js";
22
24
  * from the simulation for the hostnames the simulation serves.
23
25
  */
24
26
  export function makeSimLambdaVmContext(properties) {
25
- const { environment, clock = new SimRealClock(), sink = simLambdaNoOutputSink, outboundHttp, } = properties;
27
+ const { environment, clock = new SimRealClock(), sink = simLambdaNoOutputSink, output, outboundHttp, } = properties;
26
28
  // Writable standard streams, as the real runtime provides. Code that builds
27
29
  // its own console over them, as AWS Lambda Powertools' logger does, throws
28
30
  // at module load without them.
29
- const stdout = new SimLambdaVmOutputStream(() => process.stdout);
30
- const stderr = new SimLambdaVmOutputStream(() => process.stderr);
31
+ const stdout = new SimLambdaVmOutputStream(() => process.stdout, output);
32
+ const stderr = new SimLambdaVmOutputStream(() => process.stderr, output);
31
33
  // What function code writes reaches the function's log group through here.
32
34
  stdout.recordTo(sink);
33
35
  stderr.recordTo(sink);
@@ -45,10 +47,14 @@ export function makeSimLambdaVmContext(properties) {
45
47
  // Function code asking JavaScript for the time gets the simulation's
46
48
  // time, so a frozen or advanced clock reaches the code under test.
47
49
  Date: makeSimClockDate(clock),
48
- setTimeout,
49
- clearTimeout,
50
- setInterval,
51
- clearInterval,
50
+ // Timers wait on the simulation's clock too, so a sandboxed handler that
51
+ // sleeps is released by a test advancing time rather than by the host.
52
+ // They belong to whichever invocation is running in the sandbox, which is
53
+ // why they are resolved per call rather than built into it.
54
+ setTimeout: simLambdaSetTimeout,
55
+ clearTimeout: simLambdaClearTimeout,
56
+ setInterval: simLambdaSetInterval,
57
+ clearInterval: simLambdaClearInterval,
52
58
  setImmediate,
53
59
  queueMicrotask,
54
60
  TextEncoder,
@@ -0,0 +1,23 @@
1
+ import type { SimLambdaVmModules } from "./sim-lambda-vm-modules.js";
2
+ /**
3
+ * Importing a function's handler module and finding the export it names.
4
+ *
5
+ * Both steps report the AWS-like `Runtime.*` error a real cold start reports,
6
+ * which is why they sit together.
7
+ */
8
+ /**
9
+ * Import the module a handler name points at.
10
+ *
11
+ * Anything the import threw that is not already a runtime error becomes a
12
+ * `Runtime.ImportModuleError`, as it does on real Lambda.
13
+ */
14
+ export declare function importSimLambdaHandlerModule(modules: SimLambdaVmModules, modulePath: string): unknown;
15
+ /**
16
+ * Look up the handler export, tolerating a module that exported a nullish
17
+ * value so the lookup still reports Runtime.HandlerNotFound.
18
+ *
19
+ * Only own exports count. Walking the prototype chain would let a handler
20
+ * name like `index.constructor` resolve to an `Object.prototype` member and
21
+ * be invoked as the handler, where real Lambda reports HandlerNotFound.
22
+ */
23
+ export declare function simLambdaExportedHandler(moduleExports: unknown, exportName: string): unknown;
@@ -0,0 +1,42 @@
1
+ import { SimLambdaRuntimeError } from "../../../error/sim-lambda-runtime.error.js";
2
+ /**
3
+ * Importing a function's handler module and finding the export it names.
4
+ *
5
+ * Both steps report the AWS-like `Runtime.*` error a real cold start reports,
6
+ * which is why they sit together.
7
+ */
8
+ /**
9
+ * Import the module a handler name points at.
10
+ *
11
+ * Anything the import threw that is not already a runtime error becomes a
12
+ * `Runtime.ImportModuleError`, as it does on real Lambda.
13
+ */
14
+ export function importSimLambdaHandlerModule(modules, modulePath) {
15
+ try {
16
+ return modules.requireModule(`./${modulePath}`);
17
+ }
18
+ catch (error) {
19
+ if (error instanceof SimLambdaRuntimeError) {
20
+ throw error;
21
+ }
22
+ throw new SimLambdaRuntimeError("Runtime.ImportModuleError", error instanceof Error ? error.message : String(error));
23
+ }
24
+ }
25
+ /**
26
+ * Look up the handler export, tolerating a module that exported a nullish
27
+ * value so the lookup still reports Runtime.HandlerNotFound.
28
+ *
29
+ * Only own exports count. Walking the prototype chain would let a handler
30
+ * name like `index.constructor` resolve to an `Object.prototype` member and
31
+ * be invoked as the handler, where real Lambda reports HandlerNotFound.
32
+ */
33
+ export function simLambdaExportedHandler(moduleExports, exportName) {
34
+ if (moduleExports === null || moduleExports === undefined) {
35
+ return undefined;
36
+ }
37
+ const exportedValues = moduleExports;
38
+ if (!Object.hasOwn(exportedValues, exportName)) {
39
+ return undefined;
40
+ }
41
+ return Reflect.get(exportedValues, exportName);
42
+ }
@@ -1,4 +1,5 @@
1
1
  import { Writable } from "node:stream";
2
+ import type { SimLambdaOutput } from "../../logging/sim-lambda-output.js";
2
3
  import { type SimLambdaOutputSink } from "../../logging/sim-lambda-output-sink.js";
3
4
  /**
4
5
  * One of the standard output streams the sim Lambda vm sandbox gives function
@@ -20,19 +21,26 @@ import { type SimLambdaOutputSink } from "../../logging/sim-lambda-output-sink.j
20
21
  * standard output to standard output and standard error to standard error, and
21
22
  * recorded to the sink the code was given, which is what puts a handler's
22
23
  * output in its log group. Forwarding to the host is a tee rather than a
23
- * redirect: real Lambda sends output to CloudWatch Logs and nowhere else, but
24
- * a test tool that swallowed it would make a failing test harder to debug than
25
- * it is with none of this.
24
+ * redirect. Real Lambda sends output to CloudWatch Logs and nowhere else, and a
25
+ * test tool that swallowed it would make a failing test harder to debug than it
26
+ * is with none of this.
26
27
  * The sandbox's own console is built over these streams too, so a handler's
27
28
  * output arrives there whether it printed through the console or wrote to the
28
29
  * stream itself, instead of one of the two disappearing. The host stream is
29
30
  * read per write, so a test that starts capturing host output after the
30
31
  * function has cold-started still sees what the handler writes.
32
+ *
33
+ * A simulated Lambda told to capture only (see `SimLambdaOutput`) drops the
34
+ * forwarding and carries on recording. Those settings are read per write as
35
+ * well, so a sandbox that has already cold started follows a change. A stream
36
+ * built without them forwards everything, which is what a function with
37
+ * nowhere to record its output needs.
31
38
  */
32
39
  export declare class SimLambdaVmOutputStream extends Writable {
33
40
  #private;
34
41
  private readonly hostStream;
35
- constructor(hostStream: () => NodeJS.WritableStream);
42
+ private readonly output?;
43
+ constructor(hostStream: () => NodeJS.WritableStream, output?: SimLambdaOutput | undefined);
36
44
  /**
37
45
  * Record everything written here to a sink from now on.
38
46
  */
@@ -21,17 +21,24 @@ import { simLambdaNoOutputSink, } from "../../logging/sim-lambda-output-sink.js"
21
21
  * standard output to standard output and standard error to standard error, and
22
22
  * recorded to the sink the code was given, which is what puts a handler's
23
23
  * output in its log group. Forwarding to the host is a tee rather than a
24
- * redirect: real Lambda sends output to CloudWatch Logs and nowhere else, but
25
- * a test tool that swallowed it would make a failing test harder to debug than
26
- * it is with none of this.
24
+ * redirect. Real Lambda sends output to CloudWatch Logs and nowhere else, and a
25
+ * test tool that swallowed it would make a failing test harder to debug than it
26
+ * is with none of this.
27
27
  * The sandbox's own console is built over these streams too, so a handler's
28
28
  * output arrives there whether it printed through the console or wrote to the
29
29
  * stream itself, instead of one of the two disappearing. The host stream is
30
30
  * read per write, so a test that starts capturing host output after the
31
31
  * function has cold-started still sees what the handler writes.
32
+ *
33
+ * A simulated Lambda told to capture only (see `SimLambdaOutput`) drops the
34
+ * forwarding and carries on recording. Those settings are read per write as
35
+ * well, so a sandbox that has already cold started follows a change. A stream
36
+ * built without them forwards everything, which is what a function with
37
+ * nowhere to record its output needs.
32
38
  */
33
39
  export class SimLambdaVmOutputStream extends Writable {
34
40
  hostStream;
41
+ output;
35
42
  #sink = simLambdaNoOutputSink;
36
43
  /**
37
44
  * Decodes what is recorded, rather than each chunk being decoded on its own.
@@ -44,9 +51,10 @@ export class SimLambdaVmOutputStream extends Writable {
44
51
  * bytes left over at the end of an invocation belong to the next one.
45
52
  */
46
53
  #decoder = new StringDecoder("utf8");
47
- constructor(hostStream) {
54
+ constructor(hostStream, output) {
48
55
  super();
49
56
  this.hostStream = hostStream;
57
+ this.output = output;
50
58
  }
51
59
  /**
52
60
  * Record everything written here to a sink from now on.
@@ -65,7 +73,9 @@ export class SimLambdaVmOutputStream extends Writable {
65
73
  */
66
74
  _write(chunk, _encoding, done) {
67
75
  this.#sink.write(this.#decoder.write(chunk));
68
- this.hostStream().write(chunk);
76
+ if (this.output?.reachesHost() ?? true) {
77
+ this.hostStream().write(chunk);
78
+ }
69
79
  done();
70
80
  }
71
81
  }
@@ -1,4 +1,5 @@
1
1
  import type { SimClock } from "../../../../util/clock/sim-clock.js";
2
+ import type { SimLambdaOutput } from "../logging/sim-lambda-output.js";
2
3
  import type { SimLambdaOutputSink } from "../logging/sim-lambda-output-sink.js";
3
4
  import type { SimLambdaOutboundHttp } from "../outbound/sim-lambda-outbound-http.js";
4
5
  /**
@@ -19,6 +20,12 @@ interface SimLambdaHostScope {
19
20
  * and its output reaches the host console alone.
20
21
  */
21
22
  readonly output: SimLambdaOutputSink | undefined;
23
+ /**
24
+ * Whether what the invocation prints also reaches the host console once it
25
+ * has been recorded. Read only where there is a sink, because a function
26
+ * with nowhere to record has the host console alone.
27
+ */
28
+ readonly outputSettings: SimLambdaOutput;
22
29
  }
23
30
  /**
24
31
  * Run an invocation of code in the host scope with the process globals it
@@ -1,6 +1,7 @@
1
1
  import { simLambdaProcessClock } from "./sim-lambda-process-clock.js";
2
2
  import { simLambdaProcessOutbound } from "./sim-lambda-process-outbound.js";
3
3
  import { simLambdaProcessOutput } from "./sim-lambda-process-output.js";
4
+ import { simLambdaProcessTimers } from "./timer/sim-lambda-process-timers.js";
4
5
  /**
5
6
  * Run an invocation of code in the host scope with the process globals it
6
7
  * reads bridged to its simulation.
@@ -11,10 +12,13 @@ import { simLambdaProcessOutput } from "./sim-lambda-process-output.js";
11
12
  * here.
12
13
  */
13
14
  export async function runSimLambdaInHostScope(scope, run) {
14
- const { clock, outboundHttp, output } = scope;
15
+ const { clock, outboundHttp, output, outputSettings } = scope;
16
+ // Host-scope code reaches for the global timer functions, so the invocation
17
+ // its handler runs in has to be findable from them.
18
+ simLambdaProcessTimers.install();
15
19
  const recording = output === undefined
16
20
  ? run
17
- : async () => await simLambdaProcessOutput.run(output, run);
21
+ : async () => await simLambdaProcessOutput.run(output, outputSettings, run);
18
22
  const reachingTheSimulation = outboundHttp === undefined
19
23
  ? recording
20
24
  : async () => await simLambdaProcessOutbound.run(outboundHttp, recording);
@@ -0,0 +1,26 @@
1
+ import type { BackgroundScheduler } from "../../../../util/background/background.js";
2
+ interface SimLambdaInvocationDeadlineProperties {
3
+ readonly background: BackgroundScheduler;
4
+ readonly timeoutSeconds: number;
5
+ readonly awsRequestId: string;
6
+ }
7
+ /**
8
+ * The time one invocation has to finish in, and the timers it gets while it
9
+ * runs.
10
+ *
11
+ * Both wait on the simulation's clock. Whichever arrives first decides: a
12
+ * handler that answers in time is answered with, and a deadline that arrives
13
+ * first ends the invocation in the timeout error real Lambda reports. Nothing
14
+ * waits for a handler that has been timed out, and what it goes on to do
15
+ * reaches nobody, which is the closest an in-process simulation gets to an
16
+ * execution environment being taken away.
17
+ */
18
+ export declare class SimLambdaInvocationDeadline {
19
+ #private;
20
+ constructor(properties: SimLambdaInvocationDeadlineProperties);
21
+ /**
22
+ * Run the handler with timers of its own, up to this deadline.
23
+ */
24
+ around<T>(handler: () => Promise<T>): Promise<T>;
25
+ }
26
+ export {};
@@ -0,0 +1,84 @@
1
+ import { SimLambdaClockTimer } from "./timer/sim-lambda-clock-timer.js";
2
+ import { SimLambdaInvocationTimers } from "./timer/sim-lambda-invocation-timers.js";
3
+ import { simLambdaProcessTimers } from "./timer/sim-lambda-process-timers.js";
4
+ import { simLambdaTimedOutError } from "./sim-lambda-timed-out.error.js";
5
+ const millisecondsPerSecond = 1000;
6
+ /**
7
+ * The time one invocation has to finish in, and the timers it gets while it
8
+ * runs.
9
+ *
10
+ * Both wait on the simulation's clock. Whichever arrives first decides: a
11
+ * handler that answers in time is answered with, and a deadline that arrives
12
+ * first ends the invocation in the timeout error real Lambda reports. Nothing
13
+ * waits for a handler that has been timed out, and what it goes on to do
14
+ * reaches nobody, which is the closest an in-process simulation gets to an
15
+ * execution environment being taken away.
16
+ */
17
+ export class SimLambdaInvocationDeadline {
18
+ #properties;
19
+ constructor(properties) {
20
+ this.#properties = properties;
21
+ }
22
+ /**
23
+ * Run the handler with timers of its own, up to this deadline.
24
+ */
25
+ async around(handler) {
26
+ const { background, awsRequestId, timeoutSeconds } = this.#properties;
27
+ const stopped = Promise.withResolvers();
28
+ // Read whether or not the race gets that far, so an invocation the handler
29
+ // wins never leaves this rejection unhandled.
30
+ // oxlint-disable-next-line unicorn-js/prefer-await -- nothing awaits it.
31
+ stopped.promise.catch(() => {
32
+ //
33
+ });
34
+ // Everything this invocation has on the clock stops the instant it is
35
+ // over, and the instant is what matters. Whatever ended it is inside a
36
+ // clock advance already walking towards the next thing due, and a timer
37
+ // given up a few turns of the microtask queue later has had time to run
38
+ // first. So an invocation ends its timers as it ends, rather than as the
39
+ // answer works its way out through everything wrapped around it.
40
+ const ending = () => {
41
+ timers.cancelAll();
42
+ deadline.cancel();
43
+ };
44
+ const failing = (error) => {
45
+ ending();
46
+ stopped.reject(error);
47
+ };
48
+ const timers = new SimLambdaInvocationTimers({
49
+ background,
50
+ failed: failing,
51
+ });
52
+ const deadline = new SimLambdaClockTimer({
53
+ background,
54
+ run: () => {
55
+ failing(simLambdaTimedOutError({
56
+ at: background.now(),
57
+ awsRequestId,
58
+ timeoutSeconds,
59
+ }));
60
+ },
61
+ });
62
+ deadline.startAt(new Date(background.now().getTime() + timeoutSeconds * millisecondsPerSecond));
63
+ try {
64
+ return await background.outstanding(async () => await racing(timers, stopped, handler, ending));
65
+ }
66
+ finally {
67
+ ending();
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Answer with whichever comes first, the handler or the end of its time.
73
+ */
74
+ async function racing(timers, stopped, handler, ending) {
75
+ return await simLambdaProcessTimers.run(timers, async () => {
76
+ const answer = handler();
77
+ // Ended as the handler settles rather than as the invocation finishes
78
+ // unwinding, and read either way, so a handler that fails after being
79
+ // timed out has nobody left to be unhandled at.
80
+ // oxlint-disable-next-line unicorn-js/prefer-await -- not waited for.
81
+ answer.then(ending, ending);
82
+ return await Promise.race([answer, stopped.promise]);
83
+ });
84
+ }
@@ -0,0 +1,44 @@
1
+ import type { BackgroundScheduler } from "../../../../util/background/background.js";
2
+ import type { SimClock } from "../../../../util/clock/sim-clock.js";
3
+ import type { SimLambdaHandler } from "../sim-lambda-handler.type.js";
4
+ interface SimLambdaInvocationProperties {
5
+ readonly functionName: string;
6
+ /** The version the invocation is running, which is `$LATEST` or a number. */
7
+ readonly functionVersion: string;
8
+ readonly invokedFunctionArn: string;
9
+ readonly timeoutSeconds: number;
10
+ readonly memorySizeMb: number;
11
+ readonly logGroupName: string;
12
+ /** The stream this invocation's execution environment writes to. */
13
+ readonly logStreamName: string;
14
+ /** The clock the remaining time is measured against. */
15
+ readonly clock: SimClock;
16
+ /**
17
+ * The scheduler this invocation's timers and deadline wait on. A function
18
+ * built standalone, outside a SimAws instance, has none, and its handler
19
+ * keeps the host timers every other line in the process uses.
20
+ */
21
+ readonly background: BackgroundScheduler | undefined;
22
+ }
23
+ /**
24
+ * One run of a sim Lambda function's handler.
25
+ *
26
+ * It holds what the handler's own context reports, including the request id
27
+ * the invocation is known by, and it runs the handler inside the time it has
28
+ * to finish in. A function built standalone, outside a SimAws instance, has no
29
+ * scheduler for that deadline to wait on, and its handler runs for as long as
30
+ * it likes on the host timers every other line in the process uses.
31
+ */
32
+ export declare class SimLambdaInvocation {
33
+ #private;
34
+ constructor(properties: SimLambdaInvocationProperties);
35
+ /**
36
+ * Run a handler function for one invocation event, up to this invocation's
37
+ * deadline.
38
+ *
39
+ * Resolves with the handler result, or rejects with the handler error or
40
+ * the timeout.
41
+ */
42
+ run(handlerFunction: SimLambdaHandler, event: unknown): Promise<unknown>;
43
+ }
44
+ export {};
@@ -0,0 +1,44 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { SimLambdaHandlerRunner } from "./sim-lambda-handler-runner.js";
3
+ import { SimLambdaInvokeContextBuilder } from "./sim-lambda-invoke-context-builder.js";
4
+ import { SimLambdaInvocationDeadline } from "./sim-lambda-invocation-deadline.js";
5
+ /**
6
+ * One run of a sim Lambda function's handler.
7
+ *
8
+ * It holds what the handler's own context reports, including the request id
9
+ * the invocation is known by, and it runs the handler inside the time it has
10
+ * to finish in. A function built standalone, outside a SimAws instance, has no
11
+ * scheduler for that deadline to wait on, and its handler runs for as long as
12
+ * it likes on the host timers every other line in the process uses.
13
+ */
14
+ export class SimLambdaInvocation {
15
+ #properties;
16
+ #runner = new SimLambdaHandlerRunner();
17
+ #awsRequestId = randomUUID();
18
+ constructor(properties) {
19
+ this.#properties = properties;
20
+ }
21
+ /**
22
+ * Run a handler function for one invocation event, up to this invocation's
23
+ * deadline.
24
+ *
25
+ * Resolves with the handler result, or rejects with the handler error or
26
+ * the timeout.
27
+ */
28
+ async run(handlerFunction, event) {
29
+ const contextBuilder = new SimLambdaInvokeContextBuilder({
30
+ ...this.#properties,
31
+ awsRequestId: this.#awsRequestId,
32
+ });
33
+ const handler = async () => await this.#runner.run(handlerFunction, event, contextBuilder);
34
+ const { background, timeoutSeconds } = this.#properties;
35
+ if (background === undefined) {
36
+ return await handler();
37
+ }
38
+ return await new SimLambdaInvocationDeadline({
39
+ background,
40
+ timeoutSeconds,
41
+ awsRequestId: this.#awsRequestId,
42
+ }).around(handler);
43
+ }
44
+ }
@@ -16,6 +16,12 @@ interface SimLambdaInvokeContextBuilderProperties {
16
16
  * handler with a constant budget, rather than one that drains in real time.
17
17
  */
18
18
  readonly clock?: SimClock | undefined;
19
+ /**
20
+ * The request id this invocation is known by. It comes from outside because
21
+ * the invocation names itself in the error it reports when it runs out of
22
+ * time, and a handler reading `awsRequestId` has to see the same one.
23
+ */
24
+ readonly awsRequestId?: string | undefined;
19
25
  }
20
26
  /**
21
27
  * Builds the AWS-like invocation context passed to a sim Lambda handler.
@@ -15,9 +15,8 @@ export class SimLambdaInvokeContextBuilder {
15
15
  * Build the context for one invocation.
16
16
  */
17
17
  build(callback) {
18
- const { functionName, functionVersion, invokedFunctionArn, timeoutSeconds, memorySizeMb, logGroupName, logStreamName, clock = new SimRealClock(), } = this.properties;
18
+ const { functionName, functionVersion, invokedFunctionArn, timeoutSeconds, memorySizeMb, logGroupName, logStreamName, clock = new SimRealClock(), awsRequestId = randomUUID(), } = this.properties;
19
19
  const startedAtMs = clock.now().getTime();
20
- const awsRequestId = randomUUID();
21
20
  return {
22
21
  callbackWaitsForEmptyEventLoop: true,
23
22
  functionName,
@@ -1,3 +1,4 @@
1
+ import type { SimLambdaOutput } from "../logging/sim-lambda-output.js";
1
2
  import type { SimLambdaOutputSink } from "../logging/sim-lambda-output-sink.js";
2
3
  /**
3
4
  * The console methods an invocation's output is taken from.
@@ -63,7 +64,7 @@ export declare class SimLambdaProcessOutput {
63
64
  /**
64
65
  * Run an invocation with the given sink recording what it prints.
65
66
  */
66
- run<T>(sink: SimLambdaOutputSink, run: () => Promise<T>): Promise<T>;
67
+ run<T>(sink: SimLambdaOutputSink, output: SimLambdaOutput, run: () => Promise<T>): Promise<T>;
67
68
  /**
68
69
  * Tee the process console and standard streams into the invocation store.
69
70
  *
@@ -84,6 +85,10 @@ export declare class SimLambdaProcessOutput {
84
85
  * console afterwards wraps the patch, so its own interception still sees
85
86
  * every write, and one that replaces the console object outright takes the
86
87
  * patch with it and gets the output the handler wrote.
88
+ *
89
+ * An invocation whose simulated Lambda is capturing only stops at the
90
+ * recording. A line printed outside any invocation goes to the host as it
91
+ * always did.
87
92
  */
88
93
  private patchConsole;
89
94
  /**
@@ -57,9 +57,9 @@ export class SimLambdaProcessOutput {
57
57
  /**
58
58
  * Run an invocation with the given sink recording what it prints.
59
59
  */
60
- async run(sink, run) {
60
+ async run(sink, output, run) {
61
61
  this.install();
62
- return await this.storage.run(sink, run);
62
+ return await this.storage.run({ sink, output }, run);
63
63
  }
64
64
  /**
65
65
  * Tee the process console and standard streams into the invocation store.
@@ -90,6 +90,10 @@ export class SimLambdaProcessOutput {
90
90
  * console afterwards wraps the patch, so its own interception still sees
91
91
  * every write, and one that replaces the console object outright takes the
92
92
  * patch with it and gets the output the handler wrote.
93
+ *
94
+ * An invocation whose simulated Lambda is capturing only stops at the
95
+ * recording. A line printed outside any invocation goes to the host as it
96
+ * always did.
93
97
  */
94
98
  patchConsole(hostConsole) {
95
99
  for (const method of CONSOLE_METHODS) {
@@ -97,7 +101,11 @@ export class SimLambdaProcessOutput {
97
101
  const hostMethod = hostConsole[method].bind(hostConsole);
98
102
  // oxlint-disable-next-line security/detect-object-injection -- one of this module's own fixed method names.
99
103
  hostConsole[method] = (...arguments_) => {
100
- this.storage.getStore()?.write(`${format(...arguments_)}\n`);
104
+ const recorded = this.storage.getStore();
105
+ recorded?.sink.write(`${format(...arguments_)}\n`);
106
+ if (recorded !== undefined && !recorded.output.reachesHost()) {
107
+ return;
108
+ }
101
109
  // Delegated outside the store, because the host console writing to
102
110
  // process.stdout would otherwise record the same line a second time.
103
111
  this.storage.exit(() => {
@@ -118,9 +126,14 @@ export class SimLambdaProcessOutput {
118
126
  const hostWrite = hostStream.write.bind(hostStream);
119
127
  const decoder = new StringDecoder("utf8");
120
128
  hostStream.write = (chunk, ...rest) => {
121
- const sink = this.storage.getStore();
122
- if (sink !== undefined) {
123
- sink.write(typeof chunk === "string" ? chunk : decoder.write(Buffer.from(chunk)));
129
+ const recorded = this.storage.getStore();
130
+ if (recorded !== undefined) {
131
+ recorded.sink.write(typeof chunk === "string" ? chunk : decoder.write(Buffer.from(chunk)));
132
+ // Written and done with. The stream reports the write as accepted,
133
+ // which is what it would have answered had the host taken it.
134
+ if (!recorded.output.reachesHost()) {
135
+ return true;
136
+ }
124
137
  }
125
138
  return hostWrite(chunk, ...rest);
126
139
  };