@kensio/yulin 1.21.0 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/README.md +1 -0
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +4 -0
  3. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  4. package/dist/service/aws/factory/sim-aws-lambda-collaborators.d.ts +2 -0
  5. package/dist/service/aws/factory/sim-aws-lambda-collaborators.js +3 -0
  6. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts +7 -0
  7. package/dist/service/aws/factory/sim-aws-logs-collaborators.js +10 -0
  8. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.d.ts +3 -0
  9. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.js +5 -0
  10. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +3 -0
  11. package/dist/service/aws/factory/sim-aws-service-factory.js +4 -0
  12. package/dist/service/aws/sim-aws-account-region-scope.d.ts +3 -0
  13. package/dist/service/aws/sim-aws-account-region-scope.js +4 -0
  14. package/dist/service/aws/sim-aws-account.d.ts +3 -0
  15. package/dist/service/aws/sim-aws-account.js +4 -0
  16. package/dist/service/aws/sim-aws-region.d.ts +3 -0
  17. package/dist/service/aws/sim-aws-region.js +4 -0
  18. package/dist/service/aws/sim-aws-service-accessors.d.ts +3 -0
  19. package/dist/service/aws/sim-aws-service-accessors.js +4 -0
  20. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.d.ts +6 -0
  21. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.js +12 -0
  22. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.d.ts +12 -0
  23. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.js +31 -0
  24. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.d.ts +15 -0
  25. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.js +38 -0
  26. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.d.ts +6 -0
  27. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.js +17 -0
  28. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.d.ts +6 -0
  29. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.js +29 -0
  30. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.d.ts +11 -0
  31. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.js +37 -0
  32. package/dist/service/backup/cfn/sim-cfn-backup-properties.d.ts +12 -0
  33. package/dist/service/backup/cfn/sim-cfn-backup-properties.js +37 -0
  34. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.d.ts +17 -0
  35. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.js +62 -0
  36. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.d.ts +7 -0
  37. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.js +22 -0
  38. package/dist/service/backup/command/sim-backup-authorizer.d.ts +11 -0
  39. package/dist/service/backup/command/sim-backup-authorizer.js +24 -0
  40. package/dist/service/backup/command/sim-backup-command.types.d.ts +238 -0
  41. package/dist/service/backup/command/sim-backup-command.types.js +1 -0
  42. package/dist/service/backup/command/sim-backup-configuration-commands.d.ts +32 -0
  43. package/dist/service/backup/command/sim-backup-configuration-commands.js +138 -0
  44. package/dist/service/backup/command/sim-backup-job-commands.d.ts +23 -0
  45. package/dist/service/backup/command/sim-backup-job-commands.js +52 -0
  46. package/dist/service/backup/command/sim-backup-recovery-point-commands.d.ts +18 -0
  47. package/dist/service/backup/command/sim-backup-recovery-point-commands.js +38 -0
  48. package/dist/service/backup/command/sim-backup-request-options.d.ts +4 -0
  49. package/dist/service/backup/command/sim-backup-request-options.js +1 -0
  50. package/dist/service/backup/command/sim-backup-required-string.d.ts +2 -0
  51. package/dist/service/backup/command/sim-backup-required-string.js +8 -0
  52. package/dist/service/backup/error/sim-backup.error.d.ts +38 -0
  53. package/dist/service/backup/error/sim-backup.error.js +50 -0
  54. package/dist/service/backup/index.d.ts +9 -0
  55. package/dist/service/backup/index.js +7 -0
  56. package/dist/service/backup/job/sim-backup-job-input.d.ts +11 -0
  57. package/dist/service/backup/job/sim-backup-job-input.js +1 -0
  58. package/dist/service/backup/job/sim-backup-job-page.d.ts +22 -0
  59. package/dist/service/backup/job/sim-backup-job-page.js +54 -0
  60. package/dist/service/backup/job/sim-backup-job.d.ts +25 -0
  61. package/dist/service/backup/job/sim-backup-job.factory.d.ts +10 -0
  62. package/dist/service/backup/job/sim-backup-job.factory.js +24 -0
  63. package/dist/service/backup/job/sim-backup-job.js +54 -0
  64. package/dist/service/backup/job/sim-backup-jobs.d.ts +18 -0
  65. package/dist/service/backup/job/sim-backup-jobs.js +33 -0
  66. package/dist/service/backup/plan/sim-backup-plan-schedules.d.ts +21 -0
  67. package/dist/service/backup/plan/sim-backup-plan-schedules.js +66 -0
  68. package/dist/service/backup/plan/sim-backup-plan.d.ts +22 -0
  69. package/dist/service/backup/plan/sim-backup-plan.js +37 -0
  70. package/dist/service/backup/plan/sim-backup-rule.d.ts +9 -0
  71. package/dist/service/backup/plan/sim-backup-rule.js +71 -0
  72. package/dist/service/backup/recovery-point/sim-backup-recovery-point.d.ts +28 -0
  73. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.d.ts +9 -0
  74. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.js +23 -0
  75. package/dist/service/backup/recovery-point/sim-backup-recovery-point.js +62 -0
  76. package/dist/service/backup/sdk/sim-backup-sdk-command-router.d.ts +9 -0
  77. package/dist/service/backup/sdk/sim-backup-sdk-command-router.js +37 -0
  78. package/dist/service/backup/selection/sim-backup-selection.d.ts +22 -0
  79. package/dist/service/backup/selection/sim-backup-selection.js +43 -0
  80. package/dist/service/backup/sim-backup-arn.d.ts +7 -0
  81. package/dist/service/backup/sim-backup-arn.js +12 -0
  82. package/dist/service/backup/sim-backup-properties.d.ts +8 -0
  83. package/dist/service/backup/sim-backup-properties.js +1 -0
  84. package/dist/service/backup/sim-backup-resource-resolver.d.ts +24 -0
  85. package/dist/service/backup/sim-backup-resource-resolver.js +44 -0
  86. package/dist/service/backup/sim-backup-store.d.ts +29 -0
  87. package/dist/service/backup/sim-backup-store.js +80 -0
  88. package/dist/service/backup/sim-backup.d.ts +48 -0
  89. package/dist/service/backup/sim-backup.js +139 -0
  90. package/dist/service/backup/vault/sim-backup-vault-description.d.ts +12 -0
  91. package/dist/service/backup/vault/sim-backup-vault-description.js +15 -0
  92. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.d.ts +5 -0
  93. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.js +31 -0
  94. package/dist/service/backup/vault/sim-backup-vault-lock.d.ts +15 -0
  95. package/dist/service/backup/vault/sim-backup-vault-lock.js +23 -0
  96. package/dist/service/backup/vault/sim-backup-vault-recovery-points.d.ts +12 -0
  97. package/dist/service/backup/vault/sim-backup-vault-recovery-points.js +30 -0
  98. package/dist/service/backup/vault/sim-backup-vault-retention.d.ts +4 -0
  99. package/dist/service/backup/vault/sim-backup-vault-retention.js +20 -0
  100. package/dist/service/backup/vault/sim-backup-vault.d.ts +33 -0
  101. package/dist/service/backup/vault/sim-backup-vault.js +49 -0
  102. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.d.ts +3 -0
  103. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.js +66 -0
  104. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-cfn-value-adapter.js +6 -0
  105. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.d.ts +23 -0
  106. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.js +22 -0
  107. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.js +2 -0
  108. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.d.ts +49 -0
  109. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.js +61 -0
  110. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.d.ts +51 -0
  111. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.js +1 -0
  112. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.js +4 -0
  113. package/dist/service/cloudwatch/index.d.ts +1 -0
  114. package/dist/service/cloudwatch/index.js +1 -0
  115. package/dist/service/cloudwatch/sim-cloudwatch-commands.d.ts +2 -0
  116. package/dist/service/cloudwatch/sim-cloudwatch-commands.js +6 -0
  117. package/dist/service/cloudwatch/sim-cloudwatch.d.ts +9 -0
  118. package/dist/service/cloudwatch/sim-cloudwatch.js +10 -0
  119. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.d.ts +58 -0
  120. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.js +53 -0
  121. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.d.ts +3 -0
  122. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.js +8 -2
  123. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.d.ts +3 -0
  124. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.js +4 -0
  125. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.d.ts +11 -1
  126. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.js +13 -1
  127. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.d.ts +3 -0
  128. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.js +16 -4
  129. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.d.ts +7 -0
  130. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.js +11 -1
  131. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.d.ts +3 -0
  132. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.js +8 -2
  133. package/dist/service/cognito/command/hosted/hosted-auth.command.d.ts +19 -0
  134. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.d.ts +1 -1
  135. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.js +3 -2
  136. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.d.ts +8 -0
  137. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.js +11 -3
  138. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.d.ts +11 -1
  139. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.js +13 -2
  140. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.d.ts +11 -1
  141. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.js +11 -1
  142. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.d.ts +7 -1
  143. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.js +18 -7
  144. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.d.ts +20 -3
  145. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.js +19 -3
  146. package/dist/service/cognito/command/hosted/sim-cognito-token-endpoint.d.ts +2 -0
  147. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.d.ts +8 -0
  148. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.js +13 -4
  149. package/dist/service/cognito/command/sim-cognito-commands.d.ts +5 -0
  150. package/dist/service/cognito/command/sim-cognito-commands.js +22 -2
  151. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.d.ts +74 -0
  152. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.js +110 -0
  153. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.d.ts +5 -49
  154. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.js +7 -87
  155. package/dist/service/cognito/command/user/sim-cognito-user-commands.d.ts +4 -0
  156. package/dist/service/cognito/command/user/sim-cognito-user-commands.js +38 -29
  157. package/dist/service/cognito/error/sim-cognito-managed-login.error.d.ts +23 -0
  158. package/dist/service/cognito/error/sim-cognito-managed-login.error.js +36 -0
  159. package/dist/service/cognito/error/sim-cognito-throttle.error.d.ts +13 -0
  160. package/dist/service/cognito/error/sim-cognito-throttle.error.js +15 -0
  161. package/dist/service/cognito/index.d.ts +2 -0
  162. package/dist/service/cognito/index.js +2 -0
  163. package/dist/service/cognito/metric/sim-cognito-counted-request.d.ts +50 -0
  164. package/dist/service/cognito/metric/sim-cognito-counted-request.js +51 -0
  165. package/dist/service/cognito/metric/sim-cognito-metrics.d.ts +22 -0
  166. package/dist/service/cognito/metric/sim-cognito-metrics.js +26 -0
  167. package/dist/service/cognito/metric/sim-cognito-pool-metrics.d.ts +40 -0
  168. package/dist/service/cognito/metric/sim-cognito-pool-metrics.js +51 -0
  169. package/dist/service/cognito/metric/sim-cognito-throttled-request.d.ts +11 -0
  170. package/dist/service/cognito/metric/sim-cognito-throttled-request.js +15 -0
  171. package/dist/service/cognito/serve/page/sim-cognito-managed-login.d.ts +1 -0
  172. package/dist/service/cognito/serve/page/sim-cognito-managed-login.js +6 -1
  173. package/dist/service/cognito/serve/page/sim-cognito-page-markup.d.ts +4 -1
  174. package/dist/service/cognito/serve/page/sim-cognito-page-markup.js +6 -2
  175. package/dist/service/cognito/serve/page/sim-cognito-provider-page.d.ts +35 -0
  176. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +50 -0
  177. package/dist/service/cognito/sim-cognito-identity-provider.d.ts +6 -0
  178. package/dist/service/cognito/sim-cognito-identity-provider.js +1 -0
  179. package/dist/service/cognito/sim-cognito-user-directory.js +3 -3
  180. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.d.ts +9 -0
  181. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.js +2 -0
  182. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.d.ts +8 -0
  183. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.js +8 -0
  184. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.d.ts +36 -0
  185. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.js +45 -0
  186. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.d.ts +42 -9
  187. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.js +56 -27
  188. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.d.ts +52 -0
  189. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.js +49 -0
  190. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +48 -0
  191. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +94 -0
  192. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.d.ts +13 -0
  193. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.js +19 -0
  194. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.d.ts +7 -0
  195. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.js +9 -0
  196. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.d.ts +3 -2
  197. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.js +3 -2
  198. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.d.ts +18 -1
  199. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.js +35 -18
  200. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  201. package/dist/service/lambda/command/create-function/create-function.handler.js +4 -1
  202. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  203. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +7 -11
  204. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +7 -8
  205. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.d.ts +11 -0
  206. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.js +31 -0
  207. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.d.ts +10 -0
  208. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.js +12 -0
  209. package/dist/service/lambda/function/sim-lambda-function.d.ts +3 -0
  210. package/dist/service/lambda/function/sim-lambda-function.js +6 -2
  211. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +7 -0
  212. package/dist/service/lambda/metric/sim-lambda-function-metrics.d.ts +47 -0
  213. package/dist/service/lambda/metric/sim-lambda-function-metrics.js +83 -0
  214. package/dist/service/lambda/metric/sim-lambda-iterator-age.d.ts +29 -0
  215. package/dist/service/lambda/metric/sim-lambda-iterator-age.js +41 -0
  216. package/dist/service/lambda/metric/sim-lambda-metrics.d.ts +12 -0
  217. package/dist/service/lambda/metric/sim-lambda-metrics.js +13 -0
  218. package/dist/service/lambda/sim-lambda-commands.d.ts +2 -0
  219. package/dist/service/lambda/sim-lambda-commands.js +2 -1
  220. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.d.ts +9 -0
  221. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.js +25 -0
  222. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.d.ts +30 -0
  223. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.js +52 -0
  224. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.d.ts +40 -0
  225. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.js +66 -0
  226. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.d.ts +19 -0
  227. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.js +40 -0
  228. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.d.ts +5 -0
  229. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.js +23 -0
  230. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.d.ts +25 -0
  231. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.js +58 -0
  232. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.d.ts +6 -0
  233. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.js +19 -0
  234. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.d.ts +2 -0
  235. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +4 -0
  236. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +5 -3
  237. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +12 -3
  238. package/dist/service/logs/command/event/sim-logs-put-log-events.d.ts +3 -0
  239. package/dist/service/logs/command/event/sim-logs-put-log-events.js +3 -0
  240. package/dist/service/logs/command/group/sim-logs-log-group-commands.js +3 -3
  241. package/dist/service/logs/command/metric/metric-filter.command.d.ts +79 -0
  242. package/dist/service/logs/command/metric/metric-filter.command.js +1 -0
  243. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.d.ts +48 -0
  244. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.js +95 -0
  245. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.d.ts +11 -0
  246. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.js +79 -0
  247. package/dist/service/logs/command/sim-logs-command.types.d.ts +1 -0
  248. package/dist/service/logs/group/sim-logs-log-group.d.ts +6 -0
  249. package/dist/service/logs/group/sim-logs-log-group.js +6 -0
  250. package/dist/service/logs/index.d.ts +6 -0
  251. package/dist/service/logs/index.js +4 -0
  252. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.d.ts +40 -0
  253. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.js +78 -0
  254. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.d.ts +25 -0
  255. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.js +81 -0
  256. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.d.ts +57 -0
  257. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.js +85 -0
  258. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.d.ts +24 -0
  259. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.js +41 -0
  260. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.d.ts +20 -0
  261. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.js +39 -0
  262. package/dist/service/logs/metric/sim-logs-metric-datapoint.d.ts +25 -0
  263. package/dist/service/logs/metric/sim-logs-metric-datapoint.js +1 -0
  264. package/dist/service/logs/metric/sim-logs-metric-fan-out.d.ts +62 -0
  265. package/dist/service/logs/metric/sim-logs-metric-fan-out.js +116 -0
  266. package/dist/service/logs/metric/sim-logs-metric-filter-selection.d.ts +17 -0
  267. package/dist/service/logs/metric/sim-logs-metric-filter-selection.js +17 -0
  268. package/dist/service/logs/metric/sim-logs-metric-filter-store.d.ts +35 -0
  269. package/dist/service/logs/metric/sim-logs-metric-filter-store.js +47 -0
  270. package/dist/service/logs/metric/sim-logs-metric-filter.d.ts +49 -0
  271. package/dist/service/logs/metric/sim-logs-metric-filter.js +95 -0
  272. package/dist/service/logs/metric/sim-logs-metric-publication-failure.d.ts +31 -0
  273. package/dist/service/logs/metric/sim-logs-metric-publication-failure.js +12 -0
  274. package/dist/service/logs/metric/sim-logs-metric-publications.d.ts +11 -0
  275. package/dist/service/logs/metric/sim-logs-metric-publications.js +1 -0
  276. package/dist/service/logs/metric/sim-logs-metric-transformation.d.ts +45 -0
  277. package/dist/service/logs/metric/sim-logs-metric-transformation.js +127 -0
  278. package/dist/service/logs/sdk/sim-logs-sdk-command-router.js +12 -0
  279. package/dist/service/logs/sim-logs-commands.d.ts +12 -0
  280. package/dist/service/logs/sim-logs-commands.js +17 -0
  281. package/dist/service/logs/sim-logs-metric-operations.d.ts +31 -0
  282. package/dist/service/logs/sim-logs-metric-operations.js +37 -0
  283. package/dist/service/logs/sim-logs.d.ts +4 -3
  284. package/dist/service/logs/sim-logs.js +4 -3
  285. package/dist/service/logs/write/sim-logs-service-writer.d.ts +3 -0
  286. package/dist/service/logs/write/sim-logs-service-writer.js +5 -1
  287. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +32 -0
  288. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +31 -1
  289. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +13 -2
  290. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +18 -1
  291. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +17 -1
  292. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +27 -3
  293. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +45 -0
  294. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +90 -0
  295. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.d.ts +42 -0
  296. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.js +59 -0
  297. package/dist/service/s3/bucket/lock/sim-s3-default-retention.d.ts +8 -0
  298. package/dist/service/s3/bucket/lock/sim-s3-default-retention.js +15 -0
  299. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.d.ts +49 -0
  300. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.js +102 -0
  301. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.d.ts +14 -0
  302. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.js +1 -0
  303. package/dist/service/s3/bucket/lock/sim-s3-object-lock.d.ts +62 -0
  304. package/dist/service/s3/bucket/lock/sim-s3-object-lock.js +100 -0
  305. package/dist/service/s3/bucket/lock/sim-s3-object-retention.d.ts +55 -0
  306. package/dist/service/s3/bucket/lock/sim-s3-object-retention.js +82 -0
  307. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  308. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +9 -1
  309. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.d.ts +1 -1
  310. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +1 -2
  311. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +114 -0
  312. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +148 -0
  313. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +30 -29
  314. package/dist/service/s3/bucket/sim-s3-bucket.js +42 -45
  315. package/dist/service/s3/bucket/sim-s3-object-deletion.d.ts +30 -0
  316. package/dist/service/s3/bucket/sim-s3-object-deletion.js +29 -0
  317. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.d.ts +61 -0
  318. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.js +65 -0
  319. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.d.ts +97 -0
  320. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.js +176 -0
  321. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.d.ts +10 -0
  322. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.js +16 -0
  323. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +85 -0
  324. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +101 -0
  325. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.d.ts +52 -0
  326. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.js +91 -0
  327. package/dist/service/s3/bucket/versioning/sim-s3-version-page.d.ts +32 -0
  328. package/dist/service/s3/bucket/versioning/sim-s3-version-page.js +45 -0
  329. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts +0 -5
  330. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +3 -14
  331. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +18 -1
  332. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +34 -1
  333. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.d.ts +37 -0
  334. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.js +78 -0
  335. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.d.ts +20 -0
  336. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.js +107 -0
  337. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +14 -7
  338. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +29 -37
  339. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +62 -0
  340. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +89 -0
  341. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +9 -5
  342. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +16 -16
  343. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.d.ts +9 -5
  344. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.js +17 -6
  345. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.d.ts +19 -0
  346. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.js +28 -0
  347. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +24 -0
  348. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +30 -0
  349. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.command.d.ts +2 -0
  350. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.handler.js +3 -1
  351. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +3 -1
  352. package/dist/service/s3/command/copy-object/copy-object.handler.js +3 -1
  353. package/dist/service/s3/command/delete-object/delete-object-version-removal.d.ts +50 -0
  354. package/dist/service/s3/command/delete-object/delete-object-version-removal.js +52 -0
  355. package/dist/service/s3/command/delete-object/delete-object.command.d.ts +19 -2
  356. package/dist/service/s3/command/delete-object/delete-object.handler.d.ts +7 -1
  357. package/dist/service/s3/command/delete-object/delete-object.handler.js +28 -16
  358. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.d.ts +24 -0
  359. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.js +32 -0
  360. package/dist/service/s3/command/delete-objects/delete-object-attempt.d.ts +6 -2
  361. package/dist/service/s3/command/delete-objects/delete-object-attempt.js +6 -2
  362. package/dist/service/s3/command/delete-objects/delete-objects-key-removal.js +10 -9
  363. package/dist/service/s3/command/delete-objects/delete-objects-outcome.js +9 -1
  364. package/dist/service/s3/command/delete-objects/delete-objects.command.d.ts +6 -0
  365. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.d.ts +23 -0
  366. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.js +1 -0
  367. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.d.ts +31 -0
  368. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.js +40 -0
  369. package/dist/service/s3/command/get-object/get-object-loader.d.ts +3 -2
  370. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  371. package/dist/service/s3/command/get-object/get-object.command.d.ts +9 -1
  372. package/dist/service/s3/command/get-object/get-object.handler.js +1 -1
  373. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.d.ts +25 -0
  374. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.js +1 -0
  375. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.d.ts +31 -0
  376. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.js +41 -0
  377. package/dist/service/s3/command/head-object/head-object-loader.d.ts +1 -1
  378. package/dist/service/s3/command/head-object/head-object-loader.js +7 -3
  379. package/dist/service/s3/command/head-object/head-object.command.d.ts +9 -1
  380. package/dist/service/s3/command/head-object/head-object.handler.js +1 -1
  381. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.d.ts +31 -0
  382. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.js +55 -0
  383. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.d.ts +17 -0
  384. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +34 -0
  385. package/dist/service/s3/command/list-object-versions/list-object-versions.command.d.ts +59 -0
  386. package/dist/service/s3/command/list-object-versions/list-object-versions.command.js +1 -0
  387. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.d.ts +34 -0
  388. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.js +62 -0
  389. package/dist/service/s3/command/object/sim-s3-read-object-version.d.ts +34 -0
  390. package/dist/service/s3/command/object/sim-s3-read-object-version.js +52 -0
  391. package/dist/service/s3/command/object-lock/sim-s3-locked-version.d.ts +11 -0
  392. package/dist/service/s3/command/object-lock/sim-s3-locked-version.js +27 -0
  393. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.d.ts +42 -0
  394. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.js +66 -0
  395. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.d.ts +30 -0
  396. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.js +41 -0
  397. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.d.ts +21 -0
  398. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.js +1 -0
  399. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.d.ts +31 -0
  400. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.js +44 -0
  401. package/dist/service/s3/command/put-object/put-object.command.d.ts +3 -0
  402. package/dist/service/s3/command/put-object/put-object.handler.js +10 -10
  403. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.d.ts +24 -0
  404. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.js +1 -0
  405. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.d.ts +32 -0
  406. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.js +41 -0
  407. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.d.ts +21 -0
  408. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.js +1 -0
  409. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.d.ts +32 -0
  410. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.js +47 -0
  411. package/dist/service/s3/command/put-object-retention/put-object-retention.command.d.ts +29 -0
  412. package/dist/service/s3/command/put-object-retention/put-object-retention.command.js +1 -0
  413. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.d.ts +31 -0
  414. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.js +42 -0
  415. package/dist/service/s3/command/sim-s3-command.types.d.ts +7 -0
  416. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.d.ts +35 -0
  417. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.js +57 -0
  418. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.d.ts +26 -0
  419. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.js +34 -0
  420. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.d.ts +13 -0
  421. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.js +28 -0
  422. package/dist/service/s3/error/sim-s3-object-lock.error.d.ts +22 -0
  423. package/dist/service/s3/error/sim-s3-object-lock.error.js +26 -0
  424. package/dist/service/s3/error/sim-s3.error.d.ts +22 -0
  425. package/dist/service/s3/error/sim-s3.error.js +26 -0
  426. package/dist/service/s3/notification/event/sim-s3-event-records.js +3 -0
  427. package/dist/service/s3/notification/event/sim-s3-event.type.d.ts +5 -3
  428. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +15 -0
  429. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +4 -1
  430. package/dist/service/s3/notification/event/sim-s3-object-event.d.ts +6 -0
  431. package/dist/service/s3/notification/event/sim-s3-object-event.js +2 -0
  432. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +1 -1
  433. package/dist/service/s3/notification/sim-s3-object-notifier.js +2 -2
  434. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.d.ts +10 -0
  435. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +84 -0
  436. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +6 -132
  437. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.d.ts +10 -0
  438. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.js +28 -0
  439. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.d.ts +7 -0
  440. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.js +80 -0
  441. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  442. package/dist/service/s3/sim-s3-commands.js +6 -0
  443. package/dist/service/s3/sim-s3-operations.d.ts +5 -5
  444. package/dist/service/s3/sim-s3-operations.js +5 -6
  445. package/dist/service/s3/sim-s3-version-operations.d.ts +32 -0
  446. package/dist/service/s3/sim-s3-version-operations.js +45 -0
  447. package/dist/service/scheduler/command/schedule/schedule.command.d.ts +9 -2
  448. package/dist/service/scheduler/command/schedule/sim-scheduler-described-schedule.js +2 -0
  449. package/dist/service/scheduler/command/schedule/sim-scheduler-unsimulated-target.js +0 -6
  450. package/dist/service/scheduler/command/sim-scheduler-command.types.d.ts +1 -1
  451. package/dist/service/scheduler/command/sim-scheduler-commands.js +1 -0
  452. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.d.ts +17 -0
  453. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.js +29 -0
  454. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.d.ts +6 -1
  455. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.js +9 -0
  456. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.d.ts +18 -0
  457. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.js +62 -0
  458. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.d.ts +29 -0
  459. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.js +81 -0
  460. package/dist/service/scheduler/delivery/sim-scheduler-delivery-function.js +9 -5
  461. package/dist/service/scheduler/delivery/sim-scheduler-delivery.d.ts +11 -0
  462. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.d.ts +5 -1
  463. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.js +8 -0
  464. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.d.ts +4 -1
  465. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.js +20 -15
  466. package/dist/service/scheduler/index.d.ts +1 -1
  467. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.d.ts +15 -0
  468. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.js +24 -0
  469. package/dist/service/scheduler/target/sim-scheduler-retry-policy.d.ts +20 -0
  470. package/dist/service/scheduler/target/sim-scheduler-retry-policy.js +37 -0
  471. package/dist/service/scheduler/target/sim-scheduler-target.d.ts +6 -0
  472. package/dist/service/scheduler/target/sim-scheduler-target.js +12 -0
  473. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.d.ts +15 -0
  474. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.js +33 -0
  475. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.d.ts +16 -0
  476. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.js +33 -1
  477. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.d.ts +12 -6
  478. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.js +18 -13
  479. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.d.ts +1 -0
  480. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.js +9 -1
  481. package/dist/terraform/map/sim-tf-map-sqs-redrive.d.ts +4 -3
  482. package/dist/terraform/map/sim-tf-map-sqs-redrive.js +4 -3
  483. package/docs/README.md +1 -0
  484. package/docs/services/backup/README.md +553 -0
  485. package/docs/services/cloudformation/README.md +16 -6
  486. package/docs/services/cloudwatch/README.md +159 -3
  487. package/docs/services/cognito/README.md +370 -7
  488. package/docs/services/lambda/README.md +28 -0
  489. package/docs/services/logs/README.md +284 -3
  490. package/docs/services/s3/README.md +463 -20
  491. package/docs/services/scheduler/README.md +48 -9
  492. package/docs/services/sqs/README.md +47 -10
  493. package/llms.txt +1 -0
  494. package/package.json +7 -2
@@ -23,6 +23,15 @@ export class SimCognitoTriggerOccasion {
23
23
  * confirmation.
24
24
  */
25
25
  static adminCreateUser = new SimCognitoTriggerOccasion("PreSignUp", "PreSignUp_AdminCreateUser");
26
+ /**
27
+ * An external subject signing in at an identity provider for the first time.
28
+ *
29
+ * Real Cognito builds the pool's own user for a federated subject through
30
+ * the sign-up path, so the trigger that guards a sign-up guards this too.
31
+ * The attributes it carries are the ones the provider's `AttributeMapping`
32
+ * produced, which is what the handler has to decide on.
33
+ */
34
+ static externalProviderSignUp = new SimCognitoTriggerOccasion("PreSignUp", "PreSignUp_ExternalProvider");
26
35
  /**
27
36
  * A signed-up user reaching `CONFIRMED`.
28
37
  *
@@ -51,6 +60,14 @@ export class SimCognitoTriggerOccasion {
51
60
  * The tokens a sign-in hands out.
52
61
  */
53
62
  static tokenGeneration = new SimCognitoTriggerOccasion("PreTokenGeneration", "TokenGeneration_Authentication");
63
+ /**
64
+ * The tokens a sign-in at an identity provider hands out.
65
+ *
66
+ * Real Cognito reports this source for a federated grant alone. A local
67
+ * user signing in at managed login reports `TokenGeneration_Authentication`,
68
+ * the same source its API sign-in reports.
69
+ */
70
+ static hostedTokenGeneration = new SimCognitoTriggerOccasion("PreTokenGeneration", "TokenGeneration_HostedAuth");
54
71
  /**
55
72
  * The tokens handed out where a sign-in finishes by answering the new
56
73
  * password challenge.
@@ -100,27 +117,27 @@ export class SimCognitoTriggerOccasion {
100
117
  /**
101
118
  * The `CustomMessage` occasion a message is being sent on.
102
119
  *
103
- * One trigger covers all three, and the source is the only thing telling a
120
+ * One trigger covers all five, and the source is the only thing telling a
104
121
  * handler which it is firing for, so an application customising one message
105
122
  * and not another branches on it.
106
123
  */
107
124
  static customMessage(occasion) {
108
- switch (occasion) {
109
- case "SignUp": {
110
- return this.customMessageSignUp;
111
- }
112
- case "ResendCode": {
113
- return this.customMessageResendCode;
114
- }
115
- case "AdminCreateUser": {
116
- return this.customMessageAdminCreateUser;
117
- }
118
- case "Authentication": {
119
- return this.customMessageAuthentication;
120
- }
121
- case "ForgotPassword": {
122
- return this.customMessageForgotPassword;
123
- }
124
- }
125
+ // The key is one of a closed union, so the record has an entry for it and
126
+ // the type checker is what says so.
127
+ // oxlint-disable-next-line security/detect-object-injection
128
+ return simCognitoMessageOccasions[occasion];
125
129
  }
126
130
  }
131
+ /**
132
+ * The `CustomMessage` occasion each message occasion fires under.
133
+ *
134
+ * A record rather than a switch, so that adding a message occasion is a line
135
+ * here and the type checker names every gap.
136
+ */
137
+ const simCognitoMessageOccasions = {
138
+ SignUp: SimCognitoTriggerOccasion.customMessageSignUp,
139
+ ResendCode: SimCognitoTriggerOccasion.customMessageResendCode,
140
+ AdminCreateUser: SimCognitoTriggerOccasion.customMessageAdminCreateUser,
141
+ Authentication: SimCognitoTriggerOccasion.customMessageAuthentication,
142
+ ForgotPassword: SimCognitoTriggerOccasion.customMessageForgotPassword,
143
+ };
@@ -7,6 +7,7 @@ import { type SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-int
7
7
  import type { SimLambdaContainerImages } from "../../function/code/image/sim-lambda-container-images.js";
8
8
  import type { SimLambdaCodeStore } from "../../function/code/store/sim-lambda-code-store.js";
9
9
  import type { SimLambdaVmSdkModuleProvider } from "../../function/code/vm/sdk/sim-lambda-vm-sdk-module-provider.js";
10
+ import type { SimCloudWatchServiceWriter } from "../../../cloudwatch/write/sim-cloudwatch-service-writer.js";
10
11
  import type { SimLogsServiceWriter } from "../../../logs/write/sim-logs-service-writer.js";
11
12
  import type { SimLambdaOutboundHttp } from "../../function/outbound/sim-lambda-outbound-http.js";
12
13
  import { SimLambdaEnvironmentConflicts } from "../../function/environment/sim-lambda-environment-conflicts.js";
@@ -23,6 +24,7 @@ interface CreateFunctionCommandHandlerProperties {
23
24
  vmSdkModuleProvider?: SimLambdaVmSdkModuleProvider | undefined;
24
25
  environmentConflicts?: SimLambdaEnvironmentConflicts;
25
26
  logs?: SimLogsServiceWriter | undefined;
27
+ metrics?: SimCloudWatchServiceWriter | undefined;
26
28
  outboundHttp?: SimLambdaOutboundHttp | undefined;
27
29
  }
28
30
  interface CreateFunctionCommandHandlerOptions {
@@ -42,6 +44,7 @@ export declare class CreateFunctionCommandHandler implements CommandHandler<SimC
42
44
  private readonly codeResolver;
43
45
  private readonly environmentConflicts;
44
46
  private readonly logs;
47
+ private readonly metrics;
45
48
  private readonly outboundHttp;
46
49
  constructor(properties: CreateFunctionCommandHandlerProperties);
47
50
  /**
@@ -22,9 +22,10 @@ export class CreateFunctionCommandHandler {
22
22
  codeResolver;
23
23
  environmentConflicts;
24
24
  logs;
25
+ metrics;
25
26
  outboundHttp;
26
27
  constructor(properties) {
27
- const { accountRegionScope, functions, runAsOwner, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), codeStore, containerImages, vmSdkModuleProvider, environmentConflicts = new SimLambdaEnvironmentConflicts(), logs, outboundHttp, } = properties;
28
+ const { accountRegionScope, functions, runAsOwner, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), codeStore, containerImages, vmSdkModuleProvider, environmentConflicts = new SimLambdaEnvironmentConflicts(), logs, metrics, outboundHttp, } = properties;
28
29
  this.accountRegionScope = accountRegionScope;
29
30
  this.functions = functions;
30
31
  this.runAsOwner = runAsOwner;
@@ -41,6 +42,7 @@ export class CreateFunctionCommandHandler {
41
42
  });
42
43
  this.environmentConflicts = environmentConflicts;
43
44
  this.logs = logs;
45
+ this.metrics = metrics;
44
46
  this.outboundHttp = outboundHttp;
45
47
  }
46
48
  /**
@@ -70,6 +72,7 @@ export class CreateFunctionCommandHandler {
70
72
  runAsOwner: this.runAsOwner,
71
73
  clock: this.background,
72
74
  logs: this.logs,
75
+ metrics: this.metrics,
73
76
  outboundHttp: this.outboundHttp,
74
77
  });
75
78
  this.functions.set(simFunction.name, simFunction);
@@ -6,6 +6,7 @@ import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-int
6
6
  import type { SimLambdaContainerImages } from "../../function/code/image/sim-lambda-container-images.js";
7
7
  import type { SimLambdaCodeStore } from "../../function/code/store/sim-lambda-code-store.js";
8
8
  import type { SimLambdaVmSdkModuleProvider } from "../../function/code/vm/sdk/sim-lambda-vm-sdk-module-provider.js";
9
+ import type { SimCloudWatchServiceWriter } from "../../../cloudwatch/write/sim-cloudwatch-service-writer.js";
9
10
  import type { SimLogsServiceWriter } from "../../../logs/write/sim-logs-service-writer.js";
10
11
  import type { SimLambdaOutboundHttp } from "../../function/outbound/sim-lambda-outbound-http.js";
11
12
  import type { SimLambdaDestinationTargets } from "../../destination/sim-lambda-destination-targets.js";
@@ -38,6 +39,7 @@ interface SimLambdaFunctionCommandsProperties {
38
39
  readonly containerImages?: SimLambdaContainerImages | undefined;
39
40
  readonly vmSdkModuleProvider?: SimLambdaVmSdkModuleProvider | undefined;
40
41
  readonly logs?: SimLogsServiceWriter | undefined;
42
+ readonly metrics?: SimCloudWatchServiceWriter | undefined;
41
43
  readonly outboundHttp?: SimLambdaOutboundHttp | undefined;
42
44
  }
43
45
  interface SimLambdaFunctionCommandOptions {
@@ -1,4 +1,6 @@
1
1
  import { SimLambdaStreamCascadeGuard } from "../../stream/sim-lambda-stream-cascade-guard.js";
2
+ import { countSimLambdaKinesisIteratorAge } from "../sim-lambda-stream-iterator-age.js";
3
+ import { simLambdaStreamSequenceNumbers } from "../sim-lambda-stream-sequence-numbers.js";
2
4
  import { SimLambdaStreamBatchResponse } from "../sim-lambda-stream-batch-response.js";
3
5
  import { SimLambdaKinesisStreamEventBuilder } from "./sim-lambda-kinesis-stream-event.js";
4
6
  /**
@@ -56,20 +58,14 @@ export class SimLambdaKinesisStreamDelivery {
56
58
  // the stream sees is the batch being tried again.
57
59
  return this.batchResponse.failed();
58
60
  }
61
+ finally {
62
+ countSimLambdaKinesisIteratorAge(simFunction, records);
63
+ }
59
64
  }
60
65
  }
61
66
  /**
62
- * The sequence numbers a batch's records can be named by, in stream order.
63
- *
64
- * A Kinesis batch item failure names a record by its sequence number, the way a
65
- * DynamoDB one does, rather than by the `eventID` the event carried.
67
+ * The sequence numbers this batch's records can be named by.
66
68
  */
67
69
  function sequenceNumbersOf(records) {
68
- return records.flatMap((record) => {
69
- const sequenceNumber = record.SequenceNumber;
70
- if (sequenceNumber === undefined || sequenceNumber === "") {
71
- return [];
72
- }
73
- return [sequenceNumber];
74
- });
70
+ return simLambdaStreamSequenceNumbers(records.map((one) => one.SequenceNumber));
75
71
  }
@@ -1,5 +1,7 @@
1
1
  import { SimLambdaStreamCascadeGuard } from "../stream/sim-lambda-stream-cascade-guard.js";
2
2
  import { SimLambdaDynamoDbStreamEventBuilder } from "./sim-lambda-dynamodb-stream-event.js";
3
+ import { countSimLambdaDynamoDbIteratorAge } from "./sim-lambda-stream-iterator-age.js";
4
+ import { simLambdaStreamSequenceNumbers } from "./sim-lambda-stream-sequence-numbers.js";
3
5
  import { SimLambdaStreamBatchResponse } from "./sim-lambda-stream-batch-response.js";
4
6
  /**
5
7
  * Hands one batch of stream records to a function and says what became of it.
@@ -55,17 +57,14 @@ export class SimLambdaDynamoDbStreamDelivery {
55
57
  // the table sees is the batch being tried again.
56
58
  return this.batchResponse.failed();
57
59
  }
60
+ finally {
61
+ countSimLambdaDynamoDbIteratorAge(simFunction, records);
62
+ }
58
63
  }
59
64
  }
60
65
  /**
61
- * The sequence numbers a batch's records can be named by, in stream order.
66
+ * The sequence numbers this batch's records can be named by.
62
67
  */
63
68
  function sequenceNumbersOf(records) {
64
- return records.flatMap((record) => {
65
- const sequenceNumber = record.dynamodb?.SequenceNumber;
66
- if (sequenceNumber === undefined || sequenceNumber === "") {
67
- return [];
68
- }
69
- return [sequenceNumber];
70
- });
69
+ return simLambdaStreamSequenceNumbers(records.map((one) => one.dynamodb?.SequenceNumber));
71
70
  }
@@ -0,0 +1,11 @@
1
+ import type { SimLambdaFunction } from "../../function/sim-lambda-function.js";
2
+ import type { SimLambdaKinesisStreamRecord } from "../stream/kinesis/sim-lambda-kinesis-streams.js";
3
+ import type { SimLambdaEventSourceStreamRecord } from "../stream/sim-lambda-event-source-streams.js";
4
+ /**
5
+ * Count what a finished DynamoDB Streams batch left on the clock.
6
+ */
7
+ export declare function countSimLambdaDynamoDbIteratorAge(simFunction: SimLambdaFunction, records: readonly SimLambdaEventSourceStreamRecord[]): void;
8
+ /**
9
+ * Count what a finished Kinesis batch left on the clock.
10
+ */
11
+ export declare function countSimLambdaKinesisIteratorAge(simFunction: SimLambdaFunction, records: readonly SimLambdaKinesisStreamRecord[]): void;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Count what a finished DynamoDB Streams batch left on the clock.
3
+ */
4
+ export function countSimLambdaDynamoDbIteratorAge(simFunction, records) {
5
+ simFunction.metrics.iteratorAge.count(simFunction.name, newestOf(records.map((one) => one.dynamodb?.ApproximateCreationDateTime)));
6
+ }
7
+ /**
8
+ * Count what a finished Kinesis batch left on the clock.
9
+ */
10
+ export function countSimLambdaKinesisIteratorAge(simFunction, records) {
11
+ simFunction.metrics.iteratorAge.count(simFunction.name, newestOf(records.map((one) => one.ApproximateArrivalTimestamp)));
12
+ }
13
+ /**
14
+ * The latest of the times given, if any of them is a time.
15
+ *
16
+ * This is what `IteratorAge` is measured back from. Records reach a poller in
17
+ * stream order, and the whole batch is read anyway because a record carrying
18
+ * no time would otherwise decide the answer by where it sits.
19
+ *
20
+ * A batch whose records all arrive without a time has no answer, and the
21
+ * metric is left uncounted rather than measured from nothing.
22
+ */
23
+ function newestOf(times) {
24
+ let newest;
25
+ for (const time of times) {
26
+ if (time !== undefined && (newest === undefined || time > newest)) {
27
+ newest = time;
28
+ }
29
+ }
30
+ return newest;
31
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The sequence numbers a batch's records can be named by, in stream order.
3
+ *
4
+ * A batch item failure names a record by its sequence number, on Kinesis the
5
+ * same way as on DynamoDB Streams, rather than by the `eventID` a DynamoDB
6
+ * event carries. Both pollers read the same list out of whatever their own
7
+ * records call the field. A record without a sequence number cannot be named,
8
+ * and it is left out rather than reported as an empty name.
9
+ */
10
+ export declare function simLambdaStreamSequenceNumbers(values: readonly (string | undefined)[]): readonly string[];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The sequence numbers a batch's records can be named by, in stream order.
3
+ *
4
+ * A batch item failure names a record by its sequence number, on Kinesis the
5
+ * same way as on DynamoDB Streams, rather than by the `eventID` a DynamoDB
6
+ * event carries. Both pollers read the same list out of whatever their own
7
+ * records call the field. A record without a sequence number cannot be named,
8
+ * and it is left out rather than reported as an empty name.
9
+ */
10
+ export function simLambdaStreamSequenceNumbers(values) {
11
+ return values.flatMap((value) => value === undefined || value === "" ? [] : [value]);
12
+ }
@@ -3,6 +3,7 @@ import { type SimLambdaFunctionArn, type SimLambdaFunctionConfiguration, type Si
3
3
  import { type SimLambdaExecutableCode } from "./code/sim-lambda-executable-code.js";
4
4
  import { SimLambdaEnvironment } from "./environment/sim-lambda-environment.js";
5
5
  import { SimLambdaFunctionPolicy } from "./policy/sim-lambda-function-policy.js";
6
+ import { SimLambdaFunctionMetrics } from "../metric/sim-lambda-function-metrics.js";
6
7
  import { type SimLambdaFunctionConfigurationUpdate } from "./sim-lambda-function-reconfiguration.js";
7
8
  import type { SimLambdaFunctionName, SimLambdaFunctionProperties } from "./sim-lambda-function.type.js";
8
9
  export type { SimLambdaFunctionName, SimLambdaFunctionMap, } from "./sim-lambda-function.type.js";
@@ -44,6 +45,8 @@ export declare class SimLambdaFunction {
44
45
  * sees.
45
46
  */
46
47
  readonly resourcePolicy: SimLambdaFunctionPolicy;
48
+ /** What this function publishes about its own work into `AWS/Lambda`. */
49
+ readonly metrics: SimLambdaFunctionMetrics;
47
50
  private readonly properties;
48
51
  private readonly runAsOwner;
49
52
  private readonly runner;
@@ -7,6 +7,7 @@ import { SimLambdaEnvironment } from "./environment/sim-lambda-environment.js";
7
7
  import { SimLambdaFunctionLogging } from "./logging/sim-lambda-function-logging.js";
8
8
  import { SimLambdaFunctionPolicy } from "./policy/sim-lambda-function-policy.js";
9
9
  import { SimLambdaHandlerRunner } from "./invoke/sim-lambda-handler-runner.js";
10
+ import { SimLambdaFunctionMetrics } from "../metric/sim-lambda-function-metrics.js";
10
11
  import { SimLambdaInvokeContextBuilder } from "./invoke/sim-lambda-invoke-context-builder.js";
11
12
  import { runSimLambdaInHostScope } from "./invoke/sim-lambda-host-scope.js";
12
13
  import { SimRealClock } from "../../../util/clock/sim-clock.js";
@@ -49,6 +50,8 @@ export class SimLambdaFunction {
49
50
  * sees.
50
51
  */
51
52
  resourcePolicy = new SimLambdaFunctionPolicy();
53
+ /** What this function publishes about its own work into `AWS/Lambda`. */
54
+ metrics;
52
55
  #state;
53
56
  #code;
54
57
  properties;
@@ -58,7 +61,7 @@ export class SimLambdaFunction {
58
61
  logging;
59
62
  outboundHttp;
60
63
  constructor(properties) {
61
- const { name, roleArn, accountRegionScope = simAwsAccountRegionScopeFactory.make(), handlerFunction = defaultLambdaHandler, code, state = "Pending", handlerName, runtimeName, description, timeoutSeconds = DEFAULT_SIM_LAMBDA_TIMEOUT_SECONDS, memorySizeMb = DEFAULT_SIM_LAMBDA_MEMORY_SIZE_MB, environment, deadLetterTargetArn, runAsOwner = this, version = SIM_LAMBDA_LATEST_VERSION, clock = new SimRealClock(), logs, outboundHttp, } = properties;
64
+ const { name, roleArn, accountRegionScope = simAwsAccountRegionScopeFactory.make(), handlerFunction = defaultLambdaHandler, code, state = "Pending", handlerName, runtimeName, description, timeoutSeconds = DEFAULT_SIM_LAMBDA_TIMEOUT_SECONDS, memorySizeMb = DEFAULT_SIM_LAMBDA_MEMORY_SIZE_MB, environment, deadLetterTargetArn, runAsOwner = this, version = SIM_LAMBDA_LATEST_VERSION, clock = new SimRealClock(), logs, metrics, outboundHttp, } = properties;
62
65
  this.properties = properties;
63
66
  this.clock = clock;
64
67
  this.version = version;
@@ -82,6 +85,7 @@ export class SimLambdaFunction {
82
85
  this.deadLetterTargetArn = deadLetterTargetArn;
83
86
  this.runAsOwner = runAsOwner;
84
87
  this.outboundHttp = outboundHttp;
88
+ this.metrics = new SimLambdaFunctionMetrics({ metrics, clock });
85
89
  this.logging = new SimLambdaFunctionLogging({
86
90
  functionName: name,
87
91
  logs,
@@ -188,7 +192,7 @@ export class SimLambdaFunction {
188
192
  logStreamName: this.logging.logStreamName(),
189
193
  });
190
194
  this.logging.recordFrom(this.#code);
191
- return await simAwsRunAsContext.run(this.runAsOwner, { kind: "arn", arn: this.roleArn }, async () => await this.environment.runWith(async () => await this.runInHostScope(async () => await this.logging.around(async () => await this.runner.run(this.#code.handlerFunction(), event, contextBuilder)))));
195
+ return await this.metrics.around(String(this.name), async () => simAwsRunAsContext.run(this.runAsOwner, { kind: "arn", arn: this.roleArn }, async () => await this.environment.runWith(async () => await this.runInHostScope(async () => await this.logging.around(async () => await this.runner.run(this.#code.handlerFunction(), event, contextBuilder))))));
192
196
  }
193
197
  /**
194
198
  * Run an invocation with the process globals host-scope code reads bridged
@@ -2,6 +2,7 @@ import type { Brand } from "../../../util/brand.type.js";
2
2
  import type { SimClock } from "../../../util/clock/sim-clock.js";
3
3
  import type { SimAwsRunAsOwner } from "../../aws/caller/sim-aws-run-as-context.js";
4
4
  import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
5
+ import type { SimCloudWatchServiceWriter } from "../../cloudwatch/write/sim-cloudwatch-service-writer.js";
5
6
  import type { SimLogsServiceWriter } from "../../logs/write/sim-logs-service-writer.js";
6
7
  import type { SimLambdaExecutableCode } from "./code/sim-lambda-executable-code.js";
7
8
  import type { SimLambdaEnvironment } from "./environment/sim-lambda-environment.js";
@@ -47,6 +48,12 @@ export interface SimLambdaFunctionProperties {
47
48
  * only to the host streams.
48
49
  */
49
50
  logs?: SimLogsServiceWriter | undefined;
51
+ /**
52
+ * Where this function's invocations are counted. A function built
53
+ * standalone, outside a SimAws instance, has no simulated CloudWatch to
54
+ * publish `AWS/Lambda` metrics into and counts nothing.
55
+ */
56
+ metrics?: SimCloudWatchServiceWriter | undefined;
50
57
  /**
51
58
  * Where the HTTP requests this function's code makes to hostnames the
52
59
  * simulation serves are answered. A function built standalone, outside a
@@ -0,0 +1,47 @@
1
+ import type { SimClock } from "../../../util/clock/sim-clock.js";
2
+ import type { SimCloudWatchServiceWriter } from "../../cloudwatch/write/sim-cloudwatch-service-writer.js";
3
+ import { SimLambdaIteratorAge } from "./sim-lambda-iterator-age.js";
4
+ /**
5
+ * How one invocation went, as the metrics read it.
6
+ */
7
+ export interface SimLambdaInvocationOutcome {
8
+ readonly functionName: string;
9
+ /** How far the simulation's clock moved while the handler ran. */
10
+ readonly durationMilliseconds: number;
11
+ /** Whether the handler threw, which is what real Lambda counts an error. */
12
+ readonly failed: boolean;
13
+ }
14
+ interface SimLambdaFunctionMetricsProperties {
15
+ readonly metrics: SimCloudWatchServiceWriter | undefined;
16
+ readonly clock: SimClock;
17
+ }
18
+ /**
19
+ * What a simulated Lambda function publishes about its own work.
20
+ *
21
+ * Real Lambda publishes these without being asked and without a caller needing
22
+ * any permission, so they go in through simulated CloudWatch's service writer
23
+ * rather than through `PutMetricData`, which refuses the `AWS/Lambda`
24
+ * namespace exactly as an account does.
25
+ *
26
+ * A function built on its own, outside a `SimAws` instance, has no CloudWatch
27
+ * to publish into and counts nothing.
28
+ */
29
+ export declare class SimLambdaFunctionMetrics {
30
+ #private;
31
+ /** How far behind its stream a finished batch left this function. */
32
+ readonly iteratorAge: SimLambdaIteratorAge;
33
+ constructor(properties: SimLambdaFunctionMetricsProperties);
34
+ /**
35
+ * Run one invocation and count how it went.
36
+ *
37
+ * `Invocations` counts every invocation, including one that failed, which is
38
+ * how real Lambda counts them. `Errors` counts the ones that threw, so an
39
+ * alarm reading one against the other gets a failure rate.
40
+ *
41
+ * The duration is measured on the simulation's clock rather than the host's,
42
+ * so it is a number a test can assert on. A handler that moves the clock
43
+ * reports the time it moved, and one that does not reports nothing spent.
44
+ */
45
+ around<T>(functionName: string, run: () => Promise<T>): Promise<T>;
46
+ }
47
+ export {};
@@ -0,0 +1,83 @@
1
+ import { SimLambdaIteratorAge } from "./sim-lambda-iterator-age.js";
2
+ import { simLambdaFunctionDimensions, simLambdaMetricNamespace, } from "./sim-lambda-metrics.js";
3
+ /**
4
+ * What a simulated Lambda function publishes about its own work.
5
+ *
6
+ * Real Lambda publishes these without being asked and without a caller needing
7
+ * any permission, so they go in through simulated CloudWatch's service writer
8
+ * rather than through `PutMetricData`, which refuses the `AWS/Lambda`
9
+ * namespace exactly as an account does.
10
+ *
11
+ * A function built on its own, outside a `SimAws` instance, has no CloudWatch
12
+ * to publish into and counts nothing.
13
+ */
14
+ export class SimLambdaFunctionMetrics {
15
+ /** How far behind its stream a finished batch left this function. */
16
+ iteratorAge;
17
+ #metrics;
18
+ #clock;
19
+ constructor(properties) {
20
+ this.#metrics = properties.metrics;
21
+ this.#clock = properties.clock;
22
+ this.iteratorAge = new SimLambdaIteratorAge(properties);
23
+ }
24
+ /**
25
+ * Run one invocation and count how it went.
26
+ *
27
+ * `Invocations` counts every invocation, including one that failed, which is
28
+ * how real Lambda counts them. `Errors` counts the ones that threw, so an
29
+ * alarm reading one against the other gets a failure rate.
30
+ *
31
+ * The duration is measured on the simulation's clock rather than the host's,
32
+ * so it is a number a test can assert on. A handler that moves the clock
33
+ * reports the time it moved, and one that does not reports nothing spent.
34
+ */
35
+ async around(functionName, run) {
36
+ const startedAt = this.#clock.now().getTime();
37
+ let failed = true;
38
+ try {
39
+ const result = await run();
40
+ failed = false;
41
+ return result;
42
+ }
43
+ finally {
44
+ this.#metrics?.publish(invocationData({
45
+ functionName,
46
+ durationMilliseconds: this.#clock.now().getTime() - startedAt,
47
+ failed,
48
+ }));
49
+ }
50
+ }
51
+ }
52
+ /**
53
+ * The datapoints one finished invocation produced.
54
+ */
55
+ function invocationData(outcome) {
56
+ const dimensions = simLambdaFunctionDimensions(outcome.functionName);
57
+ const data = [
58
+ {
59
+ namespace: simLambdaMetricNamespace,
60
+ metricName: "Invocations",
61
+ dimensions,
62
+ value: 1,
63
+ unit: "Count",
64
+ },
65
+ {
66
+ namespace: simLambdaMetricNamespace,
67
+ metricName: "Duration",
68
+ dimensions,
69
+ value: outcome.durationMilliseconds,
70
+ unit: "Milliseconds",
71
+ },
72
+ ];
73
+ if (outcome.failed) {
74
+ data.push({
75
+ namespace: simLambdaMetricNamespace,
76
+ metricName: "Errors",
77
+ dimensions,
78
+ value: 1,
79
+ unit: "Count",
80
+ });
81
+ }
82
+ return data;
83
+ }
@@ -0,0 +1,29 @@
1
+ import type { SimClock } from "../../../util/clock/sim-clock.js";
2
+ import type { SimCloudWatchServiceWriter } from "../../cloudwatch/write/sim-cloudwatch-service-writer.js";
3
+ interface SimLambdaIteratorAgeProperties {
4
+ readonly metrics: SimCloudWatchServiceWriter | undefined;
5
+ readonly clock: SimClock;
6
+ }
7
+ /**
8
+ * How far behind its stream a finished batch left a function.
9
+ *
10
+ * Real Lambda publishes `IteratorAge` when a function finishes processing a
11
+ * batch of stream records, as the distance between the newest record in the
12
+ * batch and the moment the batch finished. A batch that failed is counted too,
13
+ * because the retry leaves the function further behind rather than caught up.
14
+ *
15
+ * The age is measured on the simulation's clock, so a test that lets records
16
+ * age before anything reads them gets back the interval it let pass.
17
+ */
18
+ export declare class SimLambdaIteratorAge {
19
+ #private;
20
+ constructor(properties: SimLambdaIteratorAgeProperties);
21
+ /**
22
+ * Count one finished batch.
23
+ *
24
+ * A batch whose records carry no creation time is left uncounted, because
25
+ * there is nothing to measure the age from.
26
+ */
27
+ count(functionName: string, newestRecordAt: Date | undefined): void;
28
+ }
29
+ export {};
@@ -0,0 +1,41 @@
1
+ import { simLambdaFunctionDimensions, simLambdaMetricNamespace, } from "./sim-lambda-metrics.js";
2
+ /**
3
+ * How far behind its stream a finished batch left a function.
4
+ *
5
+ * Real Lambda publishes `IteratorAge` when a function finishes processing a
6
+ * batch of stream records, as the distance between the newest record in the
7
+ * batch and the moment the batch finished. A batch that failed is counted too,
8
+ * because the retry leaves the function further behind rather than caught up.
9
+ *
10
+ * The age is measured on the simulation's clock, so a test that lets records
11
+ * age before anything reads them gets back the interval it let pass.
12
+ */
13
+ export class SimLambdaIteratorAge {
14
+ #metrics;
15
+ #clock;
16
+ constructor(properties) {
17
+ this.#metrics = properties.metrics;
18
+ this.#clock = properties.clock;
19
+ }
20
+ /**
21
+ * Count one finished batch.
22
+ *
23
+ * A batch whose records carry no creation time is left uncounted, because
24
+ * there is nothing to measure the age from.
25
+ */
26
+ count(functionName, newestRecordAt) {
27
+ if (newestRecordAt === undefined) {
28
+ return;
29
+ }
30
+ const age = this.#clock.now().getTime() - newestRecordAt.getTime();
31
+ this.#metrics?.publish([
32
+ {
33
+ namespace: simLambdaMetricNamespace,
34
+ metricName: "IteratorAge",
35
+ dimensions: simLambdaFunctionDimensions(functionName),
36
+ value: Math.max(0, age),
37
+ unit: "Milliseconds",
38
+ },
39
+ ]);
40
+ }
41
+ }
@@ -0,0 +1,12 @@
1
+ import type { SimCloudWatchDimensionInput } from "../../cloudwatch/metric/sim-cloudwatch-dimension.js";
2
+ /**
3
+ * The namespace real Lambda publishes what it counts about a function under.
4
+ */
5
+ export declare const simLambdaMetricNamespace = "AWS/Lambda";
6
+ /**
7
+ * The dimensions every metric here carries.
8
+ *
9
+ * Real Lambda dimensions a function's own metrics by `FunctionName`, and an
10
+ * alarm a stack declares on one names the function the same way.
11
+ */
12
+ export declare function simLambdaFunctionDimensions(functionName: string): readonly SimCloudWatchDimensionInput[];
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The namespace real Lambda publishes what it counts about a function under.
3
+ */
4
+ export const simLambdaMetricNamespace = "AWS/Lambda";
5
+ /**
6
+ * The dimensions every metric here carries.
7
+ *
8
+ * Real Lambda dimensions a function's own metrics by `FunctionName`, and an
9
+ * alarm a stack declares on one names the function the same way.
10
+ */
11
+ export function simLambdaFunctionDimensions(functionName) {
12
+ return [{ Name: "FunctionName", Value: functionName }];
13
+ }
@@ -15,6 +15,7 @@ import type { SimLambdaKinesisStreams } from "./event-source/stream/kinesis/sim-
15
15
  import { type SimLambdaContainerImages } from "./function/code/image/sim-lambda-container-images.js";
16
16
  import type { SimLambdaCodeStore } from "./function/code/store/sim-lambda-code-store.js";
17
17
  import type { SimLambdaVmSdkModuleProvider } from "./function/code/vm/sdk/sim-lambda-vm-sdk-module-provider.js";
18
+ import type { SimCloudWatchServiceWriter } from "../cloudwatch/write/sim-cloudwatch-service-writer.js";
18
19
  import type { SimLogsServiceWriter } from "../logs/write/sim-logs-service-writer.js";
19
20
  import type { SimLambdaOutboundHttp } from "./function/outbound/sim-lambda-outbound-http.js";
20
21
  import { SimLambdaEventInvokeConfigStore } from "./function/event-invoke/sim-lambda-event-invoke-config-store.js";
@@ -37,6 +38,7 @@ export interface SimLambdaProperties {
37
38
  readonly containerImages?: SimLambdaContainerImages;
38
39
  readonly vmSdkModuleProvider?: SimLambdaVmSdkModuleProvider;
39
40
  readonly logs?: SimLogsServiceWriter | undefined;
41
+ readonly metrics?: SimCloudWatchServiceWriter | undefined;
40
42
  /**
41
43
  * Where the HTTP requests this simulated Lambda's function code makes to
42
44
  * hostnames the simulation serves are answered. A standalone SimLambda has
@@ -51,7 +51,7 @@ export class SimLambdaCommands {
51
51
  eventSourceMappings;
52
52
  eventInvokeConfigs;
53
53
  constructor(properties) {
54
- const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), background = new BackgroundTasks(), codeStore, vmSdkModuleProvider, logs, outboundHttp,
54
+ const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), background = new BackgroundTasks(), codeStore, vmSdkModuleProvider, logs, metrics, outboundHttp,
55
55
  // A standalone SimLambda is not reachable over HTTP, so its own registry
56
56
  // is enough; a SimAws-created one shares the environment-wide registry
57
57
  // the serving layer routes with.
@@ -142,6 +142,7 @@ export class SimLambdaCommands {
142
142
  containerImages,
143
143
  vmSdkModuleProvider,
144
144
  logs,
145
+ metrics,
145
146
  outboundHttp,
146
147
  });
147
148
  }
@@ -0,0 +1,9 @@
1
+ import type { SimCfnTemplateValue } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
2
+ /**
3
+ * Read a transformation's dimensions into the map shape the API uses.
4
+ *
5
+ * The template carries them as a list of Key and Value pairs, and the SDK
6
+ * carries the same thing as a map, so both routes reach one implementation.
7
+ * An empty list is refused, because CloudFormation takes one to three entries.
8
+ */
9
+ export declare function simCfnMetricDimensions(logicalId: string, value: SimCfnTemplateValue | undefined): Readonly<Record<string, string>> | undefined;