@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
@@ -0,0 +1,39 @@
1
+ import { BackgroundTasks, } from "../../../../util/background/background.js";
2
+ import { assertDefined } from "../../../../util/type-guard/defined.js";
3
+ import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import { SimS3EncryptionAuthorizer } from "../encryption/sim-s3-encryption-authorizer.js";
5
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
6
+ /**
7
+ * Simulated S3 GetBucketEncryptionCommand handler.
8
+ *
9
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketEncryptionCommand/
10
+ */
11
+ export class GetBucketEncryptionCommandHandler {
12
+ buckets;
13
+ authorizer;
14
+ background;
15
+ constructor(properties) {
16
+ const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
17
+ this.buckets = buckets;
18
+ this.authorizer = new SimS3EncryptionAuthorizer({ iam });
19
+ this.background = background;
20
+ }
21
+ /**
22
+ * Authorize and report a Bucket's default encryption.
23
+ *
24
+ * A Bucket nobody has configured answers with the SSE-S3 rule rather than an
25
+ * error, which is what real S3 has answered since it began encrypting every
26
+ * Bucket by default.
27
+ */
28
+ async handle(command, options) {
29
+ assertDefined(command.input.Bucket, "GetBucketEncryptionCommand.input.Bucket");
30
+ const bucketName = command.input.Bucket;
31
+ const bucket = requireSimS3Bucket(this.buckets, bucketName);
32
+ await this.background.sequence();
33
+ this.authorizer.authorizeRead(bucket, options);
34
+ return {
35
+ ServerSideEncryptionConfiguration: bucket.getEncryption().configuration,
36
+ $metadata: {},
37
+ };
38
+ }
39
+ }
@@ -7,21 +7,24 @@ interface GetObjectAuthorizerProperties {
7
7
  /**
8
8
  * Applies IAM authorization to an S3 GetObject request.
9
9
  *
10
- * GetObject is authorized against the target Object ARN rather than the Bucket
11
- * ARN. An omitted caller is passed through to sim IAM so Account root fallback
12
- * behavior remains owned by IAM.
13
- *
14
- * The request's source ARN and source Account go in as condition keys, which is
15
- * what a Bucket policy written for a CloudFront origin access control is
16
- * conditioned on.
10
+ * A read is authorized against the target Object ARN. A read that finds
11
+ * nothing is authorized a second time, against the Bucket ARN, because real S3
12
+ * decides between AccessDenied and NoSuchKey on `s3:ListBucket`.
17
13
  */
18
14
  export declare class GetObjectAuthorizer {
19
- private static readonly action;
20
15
  private readonly iam;
21
16
  constructor(properties: GetObjectAuthorizerProperties);
22
17
  /**
23
18
  * Ensure the caller may read the requested S3 Object.
24
19
  */
25
20
  authorize(bucket: SimS3Bucket, key: string, options?: SimS3RequestOptions): void;
21
+ /**
22
+ * Ensure the caller may be told that the Bucket holds no such key.
23
+ *
24
+ * Which keys a Bucket holds is what a listing tells you. Real S3 admits the
25
+ * absence only to a caller holding `s3:ListBucket` on the Bucket. Everyone
26
+ * else gets the same AccessDenied whether the key is there or not.
27
+ */
28
+ authorizeMissingKey(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
26
29
  }
27
30
  export {};
@@ -1,18 +1,12 @@
1
- import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
2
- import { simS3ConditionContext } from "../authorize/sim-s3-condition-context.js";
1
+ import { simS3AuthorizeAction } from "../authorize/sim-s3-authorize-action.js";
3
2
  /**
4
3
  * Applies IAM authorization to an S3 GetObject request.
5
4
  *
6
- * GetObject is authorized against the target Object ARN rather than the Bucket
7
- * ARN. An omitted caller is passed through to sim IAM so Account root fallback
8
- * behavior remains owned by IAM.
9
- *
10
- * The request's source ARN and source Account go in as condition keys, which is
11
- * what a Bucket policy written for a CloudFront origin access control is
12
- * conditioned on.
5
+ * A read is authorized against the target Object ARN. A read that finds
6
+ * nothing is authorized a second time, against the Bucket ARN, because real S3
7
+ * decides between AccessDenied and NoSuchKey on `s3:ListBucket`.
13
8
  */
14
9
  export class GetObjectAuthorizer {
15
- static action = "s3:GetObject";
16
10
  iam;
17
11
  constructor(properties) {
18
12
  this.iam = properties.iam;
@@ -21,30 +15,28 @@ export class GetObjectAuthorizer {
21
15
  * Ensure the caller may read the requested S3 Object.
22
16
  */
23
17
  authorize(bucket, key, options) {
24
- const resource = `arn:aws:s3:::${bucket.bucketName}/${key}`;
25
- const policy = bucket.getPolicy();
26
- const decision = this.iam.authorize({
27
- action: GetObjectAuthorizer.action,
28
- resource,
29
- caller: options?.caller,
30
- conditionContext: simS3ConditionContext(options),
31
- resourcePolicies: policy === undefined
32
- ? []
33
- : [
34
- {
35
- document: policy,
36
- policyName: "BucketPolicy",
37
- resourceArn: `arn:aws:s3:::${bucket.bucketName}`,
38
- },
39
- ],
18
+ simS3AuthorizeAction({
19
+ iam: this.iam,
20
+ action: "s3:GetObject",
21
+ resource: `arn:aws:s3:::${bucket.bucketName}/${key}`,
22
+ bucket,
23
+ options,
24
+ });
25
+ }
26
+ /**
27
+ * Ensure the caller may be told that the Bucket holds no such key.
28
+ *
29
+ * Which keys a Bucket holds is what a listing tells you. Real S3 admits the
30
+ * absence only to a caller holding `s3:ListBucket` on the Bucket. Everyone
31
+ * else gets the same AccessDenied whether the key is there or not.
32
+ */
33
+ authorizeMissingKey(bucket, options) {
34
+ simS3AuthorizeAction({
35
+ iam: this.iam,
36
+ action: "s3:ListBucket",
37
+ resource: `arn:aws:s3:::${bucket.bucketName}`,
38
+ bucket,
39
+ options,
40
40
  });
41
- if (decision.isDenied) {
42
- throw new SimIamAccessDenied({
43
- principal: decision.caller.principal,
44
- reason: decision.denialReason,
45
- action: GetObjectAuthorizer.action,
46
- resource,
47
- });
48
- }
49
41
  }
50
42
  }
@@ -10,8 +10,8 @@ import type { SimGetObjectCommandOutput } from "./get-object.command.js";
10
10
  * This class owns both storage lookup and response conversion because the SDK
11
11
  * response is a representation of the stored Object:
12
12
  *
13
- * - a missing storage entry becomes the S3 NoSuchKey error, and a `VersionId`
14
- * naming a version the Bucket never issued becomes NoSuchVersion;
13
+ * - a `VersionId` naming a version the Bucket never issued becomes
14
+ * NoSuchVersion;
15
15
  * - the stored Buffer, or the part of it the read asked for, becomes the
16
16
  * readable response body;
17
17
  * - what S3 was told about the Object becomes the response's own fields, and
@@ -25,6 +25,10 @@ export declare class GetObjectLoader {
25
25
  /**
26
26
  * Read an Object, or the range of it that was asked for, from the resolved
27
27
  * Bucket, and build its SDK command output.
28
+ *
29
+ * Answering `undefined` means the key holds nothing. The command handler
30
+ * turns that into the error the caller's permissions allow, which for a
31
+ * missing key is a decision of its own.
28
32
  */
29
- load(bucket: SimS3Bucket, key: string, rangeHeader?: string, versionId?: string): Promise<SimGetObjectCommandOutput>;
33
+ load(bucket: SimS3Bucket, key: string, rangeHeader?: string, versionId?: string): Promise<SimGetObjectCommandOutput | undefined>;
30
34
  }
@@ -1,6 +1,6 @@
1
1
  import { Readable } from "node:stream";
2
- import { SimS3NoSuchKey } from "../../error/sim-s3.error.js";
3
2
  import { simS3QuotedETag } from "../../object/s3-object-etag.js";
3
+ import { simS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
4
4
  import { simS3ContentRange, simS3ReadObjectRange, } from "../../object/s3-object-range.js";
5
5
  import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js";
6
6
  /**
@@ -13,8 +13,8 @@ import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js"
13
13
  * This class owns both storage lookup and response conversion because the SDK
14
14
  * response is a representation of the stored Object:
15
15
  *
16
- * - a missing storage entry becomes the S3 NoSuchKey error, and a `VersionId`
17
- * naming a version the Bucket never issued becomes NoSuchVersion;
16
+ * - a `VersionId` naming a version the Bucket never issued becomes
17
+ * NoSuchVersion;
18
18
  * - the stored Buffer, or the part of it the read asked for, becomes the
19
19
  * readable response body;
20
20
  * - what S3 was told about the Object becomes the response's own fields, and
@@ -28,11 +28,15 @@ export class GetObjectLoader {
28
28
  /**
29
29
  * Read an Object, or the range of it that was asked for, from the resolved
30
30
  * Bucket, and build its SDK command output.
31
+ *
32
+ * Answering `undefined` means the key holds nothing. The command handler
33
+ * turns that into the error the caller's permissions allow, which for a
34
+ * missing key is a decision of its own.
31
35
  */
32
36
  async load(bucket, key, rangeHeader, versionId) {
33
37
  const read = await simS3ReadObjectVersion(bucket, key, versionId);
34
38
  if (read === undefined) {
35
- throw new SimS3NoSuchKey(`No S3 Object named ${key}`);
39
+ return undefined;
36
40
  }
37
41
  const object = read.object;
38
42
  const size = object.body.length;
@@ -51,6 +55,7 @@ export class GetObjectLoader {
51
55
  LastModified: object.lastModified,
52
56
  ContentLength: body.length,
53
57
  ...(read.versionId !== undefined && { VersionId: read.versionId }),
58
+ ...simS3ObjectStorageReport(object),
54
59
  ...read.lock?.reported,
55
60
  ...(range !== undefined && {
56
61
  ContentRange: simS3ContentRange(range, size),
@@ -1,6 +1,7 @@
1
1
  import type { Readable } from "node:stream";
2
2
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
3
3
  import type { SimS3ObjectLockOutput } from "../../bucket/lock/sim-s3-object-lock-output.js";
4
+ import type { SimS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
4
5
  import type { SimS3SystemMetadataOutput } from "../../object/s3-system-metadata-read.js";
5
6
  /**
6
7
  * Minimal structural sim S3 GetObject command.
@@ -41,7 +42,7 @@ export interface SimGetObjectCommandInput {
41
42
  * when it was written. `Metadata` is what the caller attached to it, and holds
42
43
  * nothing else.
43
44
  */
44
- export interface SimGetObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput {
45
+ export interface SimGetObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput, SimS3ObjectStorageReport {
45
46
  readonly Body?: Readable;
46
47
  readonly Metadata?: Record<string, string>;
47
48
  readonly ETag?: string;
@@ -33,6 +33,10 @@ export declare class GetObjectCommandHandler implements CommandHandler<SimGetObj
33
33
  *
34
34
  * A stated `Range` reaches the loader with the key, since which bytes of an
35
35
  * Object a caller may read is not something IAM decides.
36
+ *
37
+ * A key holding nothing goes back to authorization before the absence is
38
+ * reported. Real S3 tells a caller that a key is missing only where it may
39
+ * list the Bucket, and answers AccessDenied otherwise.
36
40
  */
37
41
  handle(command: SimGetObjectCommand, options?: SimS3RequestOptions): Promise<SimGetObjectCommandOutput>;
38
42
  }
@@ -1,7 +1,8 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
- import { SimS3NoSuchBucket } from "../../error/sim-s3.error.js";
2
+ import { SimS3NoSuchKey } from "../../error/sim-s3.error.js";
3
3
  import { BackgroundTasks, } from "../../../../util/background/background.js";
4
4
  import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
5
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
5
6
  import { GetObjectAuthorizer } from "./get-object-authorizer.js";
6
7
  import { GetObjectLoader } from "./get-object-loader.js";
7
8
  /**
@@ -33,18 +34,23 @@ export class GetObjectCommandHandler {
33
34
  *
34
35
  * A stated `Range` reaches the loader with the key, since which bytes of an
35
36
  * Object a caller may read is not something IAM decides.
37
+ *
38
+ * A key holding nothing goes back to authorization before the absence is
39
+ * reported. Real S3 tells a caller that a key is missing only where it may
40
+ * list the Bucket, and answers AccessDenied otherwise.
36
41
  */
37
42
  async handle(command, options) {
38
43
  assertDefined(command.input.Bucket, "GetObjectCommand.input.Bucket");
39
44
  assertDefined(command.input.Key, "GetObjectCommand.input.Key");
40
- const bucketName = command.input.Bucket;
41
- const bucket = this.buckets.get(bucketName);
42
- if (bucket === undefined) {
43
- throw new SimS3NoSuchBucket(`No S3 Bucket named ${bucketName}`);
44
- }
45
+ const bucket = requireSimS3Bucket(this.buckets, command.input.Bucket);
45
46
  // Complete request sequencing before authorization and storage access.
46
47
  await this.background.sequence();
47
48
  this.authorizer.authorize(bucket, command.input.Key, options);
48
- return await this.loader.load(bucket, command.input.Key, command.input.Range, command.input.VersionId);
49
+ const output = await this.loader.load(bucket, command.input.Key, command.input.Range, command.input.VersionId);
50
+ if (output !== undefined) {
51
+ return output;
52
+ }
53
+ this.authorizer.authorizeMissingKey(bucket, options);
54
+ throw new SimS3NoSuchKey(`No S3 Object named ${command.input.Key}`);
49
55
  }
50
56
  }
@@ -0,0 +1,29 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ import type { SimS3ObjectTag } from "../../object/s3-object-tags.js";
3
+ /**
4
+ * Minimal structural sim S3 GetObjectTagging command.
5
+ */
6
+ export interface SimGetObjectTaggingCommand {
7
+ readonly input: SimGetObjectTaggingCommandInput;
8
+ }
9
+ /**
10
+ * Minimal structural sim S3 GetObjectTagging input.
11
+ */
12
+ export interface SimGetObjectTaggingCommandInput {
13
+ readonly Bucket?: string | undefined;
14
+ readonly Key?: string | undefined;
15
+ /** The version to read. A request naming none reads the current one. */
16
+ readonly VersionId?: string | undefined;
17
+ }
18
+ /**
19
+ * Minimal structural sim S3 GetObjectTagging output.
20
+ *
21
+ * `TagSet` is always present, and is empty for an Object nobody has tagged.
22
+ * Real S3 answers an untagged Object with an empty set rather than refusing,
23
+ * because having no tags is not the same as not existing.
24
+ */
25
+ export interface SimGetObjectTaggingCommandOutput {
26
+ readonly TagSet: readonly SimS3ObjectTag[];
27
+ readonly VersionId?: string | undefined;
28
+ readonly $metadata: SimResponseMetadata;
29
+ }
@@ -0,0 +1,21 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type SimS3ObjectTaggingAccessProperties } from "../tagging/sim-s3-object-tagging-access.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ import type { SimGetObjectTaggingCommand, SimGetObjectTaggingCommandOutput } from "./get-object-tagging.command.js";
5
+ /**
6
+ * Simulated S3 GetObjectTaggingCommand handler.
7
+ *
8
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTaggingCommand/
9
+ */
10
+ export declare class GetObjectTaggingCommandHandler implements CommandHandler<SimGetObjectTaggingCommand, SimGetObjectTaggingCommandOutput> {
11
+ private readonly access;
12
+ constructor(properties: SimS3ObjectTaggingAccessProperties);
13
+ /**
14
+ * Read the tags on an Object, or on the version the request named.
15
+ *
16
+ * An Object nobody has tagged answers with an empty set rather than a
17
+ * refusal, as real S3 does. Nothing is announced: real S3 raises a tagging
18
+ * event for a change to the tags, and a read changes nothing.
19
+ */
20
+ handle(command: SimGetObjectTaggingCommand, options?: SimS3RequestOptions): Promise<SimGetObjectTaggingCommandOutput>;
21
+ }
@@ -0,0 +1,33 @@
1
+ import { SimS3ObjectTaggingAccess, } from "../tagging/sim-s3-object-tagging-access.js";
2
+ /**
3
+ * Simulated S3 GetObjectTaggingCommand handler.
4
+ *
5
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTaggingCommand/
6
+ */
7
+ export class GetObjectTaggingCommandHandler {
8
+ access;
9
+ constructor(properties) {
10
+ this.access = new SimS3ObjectTaggingAccess(properties);
11
+ }
12
+ /**
13
+ * Read the tags on an Object, or on the version the request named.
14
+ *
15
+ * An Object nobody has tagged answers with an empty set rather than a
16
+ * refusal, as real S3 does. Nothing is announced: real S3 raises a tagging
17
+ * event for a change to the tags, and a read changes nothing.
18
+ */
19
+ async handle(command, options) {
20
+ const { taggable } = await this.access.reach({
21
+ commandName: "GetObjectTaggingCommand",
22
+ action: "s3:GetObjectTagging",
23
+ input: command.input,
24
+ }, options);
25
+ return {
26
+ TagSet: taggable.tagSet.tags,
27
+ ...(taggable.versionId !== undefined && {
28
+ VersionId: taggable.versionId,
29
+ }),
30
+ $metadata: {},
31
+ };
32
+ }
33
+ }
@@ -1,5 +1,6 @@
1
1
  import { SimS3NotFound } from "../../error/sim-s3.error.js";
2
2
  import { simS3QuotedETag } from "../../object/s3-object-etag.js";
3
+ import { simS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
3
4
  import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js";
4
5
  /**
5
6
  * Describes an authorized S3 Object without reading it out.
@@ -26,6 +27,7 @@ export class HeadObjectLoader {
26
27
  ETag: simS3QuotedETag(object.etag),
27
28
  LastModified: object.lastModified,
28
29
  ...(read.versionId !== undefined && { VersionId: read.versionId }),
30
+ ...simS3ObjectStorageReport(object),
29
31
  ...read.lock?.reported,
30
32
  $metadata: {},
31
33
  };
@@ -1,5 +1,6 @@
1
1
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
2
  import type { SimS3ObjectLockOutput } from "../../bucket/lock/sim-s3-object-lock-output.js";
3
+ import type { SimS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
3
4
  import type { SimS3SystemMetadataOutput } from "../../object/s3-system-metadata-read.js";
4
5
  /**
5
6
  * Minimal structural sim S3 HeadObject command.
@@ -26,7 +27,7 @@ export interface SimHeadObjectCommandInput {
26
27
  * the Object itself, so this is a GetObject output without its body and with
27
28
  * the length that body would have had.
28
29
  */
29
- export interface SimHeadObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput {
30
+ export interface SimHeadObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput, SimS3ObjectStorageReport {
30
31
  readonly ContentLength?: number;
31
32
  readonly Metadata?: Record<string, string>;
32
33
  readonly ETag?: string;
@@ -1,4 +1,5 @@
1
1
  import { SimS3MalformedXml } from "../../error/sim-s3.error.js";
2
+ import { simS3StorageClassFrom } from "../../object/s3-storage-class.js";
2
3
  const ruleStatuses = new Set(["Enabled", "Disabled"]);
3
4
  /**
4
5
  * The fields that make a rule do something, for the refusal to name.
@@ -49,4 +50,21 @@ function validateRule(rule, bucketName) {
49
50
  throw new SimS3MalformedXml(`Lifecycle rule ${named} for S3 Bucket ${bucketName} must state at ` +
50
51
  `least one of ${ruleActionNames}`);
51
52
  }
53
+ validateTransitionClasses(rule, named, bucketName);
54
+ }
55
+ /**
56
+ * Refuse a transition to a storage class S3 has no such class for.
57
+ *
58
+ * The class is read here, where the configuration is stored, so a rule that
59
+ * names one nothing can transition to is refused before it is applied to
60
+ * anything.
61
+ */
62
+ function validateTransitionClasses(rule, named, bucketName) {
63
+ const transitions = [
64
+ ...(rule.Transitions ?? []),
65
+ ...(rule.NoncurrentVersionTransitions ?? []),
66
+ ];
67
+ for (const transition of transitions) {
68
+ simS3StorageClassFrom(transition.StorageClass, `lifecycle rule ${named} of S3 Bucket ${bucketName}`);
69
+ }
52
70
  }
@@ -1,5 +1,4 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
- import { simS3DefaultStorageClass } from "../../object/s3-object-summary.js";
3
2
  import { SimS3MultipartAccess, } from "../multipart/sim-s3-multipart-access.js";
4
3
  /**
5
4
  * Simulated S3 ListMultipartUploadsCommand handler.
@@ -33,7 +32,7 @@ export class ListMultipartUploadsCommandHandler {
33
32
  Key: upload.key,
34
33
  UploadId: upload.uploadId,
35
34
  Initiated: upload.initiated,
36
- StorageClass: simS3DefaultStorageClass,
35
+ StorageClass: upload.storageClass,
37
36
  })),
38
37
  IsTruncated: false,
39
38
  $metadata: {},
@@ -1,5 +1,4 @@
1
1
  import { simS3QuotedETag } from "../../object/s3-object-etag.js";
2
- import { simS3DefaultStorageClass } from "../../object/s3-object-summary.js";
3
2
  /**
4
3
  * Describe the Objects among a page of versions.
5
4
  */
@@ -13,7 +12,7 @@ export function simS3ObjectVersionSummaries(page, isLatest) {
13
12
  LastModified: version.lastModified,
14
13
  ETag: simS3QuotedETag(version.object.etag),
15
14
  Size: version.object.body.length,
16
- StorageClass: simS3DefaultStorageClass,
15
+ StorageClass: version.object.storageClass,
17
16
  }));
18
17
  }
19
18
  /**
@@ -1,4 +1,5 @@
1
1
  import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
2
+ import type { SimS3ListingEncoding } from "../../object/s3-listing-encoding.js";
2
3
  import type { SimListObjectsCommandOutput } from "./list-objects.command.js";
3
4
  interface ListObjectsPageInput {
4
5
  readonly bucket: SimS3Bucket;
@@ -6,6 +7,7 @@ interface ListObjectsPageInput {
6
7
  readonly delimiter?: string | undefined;
7
8
  readonly marker?: string | undefined;
8
9
  readonly maxKeys: number;
10
+ readonly encoding: SimS3ListingEncoding;
9
11
  }
10
12
  /**
11
13
  * Reads, orders, and paginates Objects for a ListObjects response.
@@ -18,6 +20,9 @@ interface ListObjectsPageInput {
18
20
  * operations differ in how a caller names where to resume rather than in which
19
21
  * keys a page holds. The marker is exclusive, so a page begins after it.
20
22
  *
23
+ * The keys, the prefix, the delimiter and both markers are written the way the
24
+ * listing asked for them, which is encoded or as they are stored.
25
+ *
21
26
  * NextMarker is returned only when another page exists, and identifies the
22
27
  * final entry in the current page. That entry is a common prefix where the
23
28
  * page ended on one, and the marker steps over the whole rolled-up prefix.
@@ -12,6 +12,9 @@ import { simS3ObjectSummaries } from "../../object/s3-object-summary.js";
12
12
  * operations differ in how a caller names where to resume rather than in which
13
13
  * keys a page holds. The marker is exclusive, so a page begins after it.
14
14
  *
15
+ * The keys, the prefix, the delimiter and both markers are written the way the
16
+ * listing asked for them, which is encoded or as they are stored.
17
+ *
15
18
  * NextMarker is returned only when another page exists, and identifies the
16
19
  * final entry in the current page. That entry is a common prefix where the
17
20
  * page ended on one, and the marker steps over the whole rolled-up prefix.
@@ -28,16 +31,18 @@ export class ListObjectsPageBuilder {
28
31
  startAfter: input.marker,
29
32
  maxKeys: input.maxKeys,
30
33
  });
34
+ const { encoding } = input;
31
35
  return {
32
- Contents: simS3ObjectSummaries(page.objects),
33
- CommonPrefixes: simS3CommonPrefixes(page.commonPrefixes),
36
+ Contents: encoding.summaries(simS3ObjectSummaries(page.objects)),
37
+ CommonPrefixes: encoding.commonPrefixes(simS3CommonPrefixes(page.commonPrefixes)),
34
38
  Name: input.bucket.bucketName,
35
- Prefix: input.prefix,
36
- Delimiter: input.delimiter,
37
- Marker: input.marker,
39
+ Prefix: encoding.value(input.prefix),
40
+ Delimiter: encoding.value(input.delimiter),
41
+ Marker: encoding.value(input.marker),
38
42
  MaxKeys: input.maxKeys,
39
43
  IsTruncated: page.isTruncated,
40
- NextMarker: page.resumeAfter,
44
+ NextMarker: encoding.value(page.resumeAfter),
45
+ EncodingType: encoding.encodingType,
41
46
  $metadata: {},
42
47
  };
43
48
  }
@@ -12,7 +12,9 @@ export interface SimListObjectsCommand {
12
12
  * Minimal structural sim S3 ListObjects input.
13
13
  *
14
14
  * `Delimiter` rolls every key holding it after the `Prefix` up into a common
15
- * prefix, which is how a Bucket is walked one folder at a time.
15
+ * prefix, which is how a Bucket is walked one folder at a time. `EncodingType`
16
+ * asks for the keys the listing answers with to be encoded, so that a key
17
+ * holding a character XML cannot carry survives the response.
16
18
  */
17
19
  export interface SimListObjectsCommandInput {
18
20
  readonly Bucket?: string | undefined;
@@ -20,6 +22,7 @@ export interface SimListObjectsCommandInput {
20
22
  readonly Delimiter?: string | undefined;
21
23
  readonly Marker?: string | undefined;
22
24
  readonly MaxKeys?: number | undefined;
25
+ readonly EncodingType?: string | undefined;
23
26
  }
24
27
  /**
25
28
  * Minimal structural sim S3 ListObjects output.
@@ -34,5 +37,6 @@ export interface SimListObjectsCommandOutput {
34
37
  readonly MaxKeys?: number;
35
38
  readonly IsTruncated?: boolean;
36
39
  readonly NextMarker?: string | undefined;
40
+ readonly EncodingType?: string | undefined;
37
41
  readonly $metadata: SimResponseMetadata;
38
42
  }
@@ -2,6 +2,7 @@ import { assertDefined } from "../../../../util/type-guard/defined.js";
2
2
  import { SimS3NoSuchBucket } from "../../error/sim-s3.error.js";
3
3
  import { BackgroundTasks, } from "../../../../util/background/background.js";
4
4
  import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
5
+ import { SimS3ListingEncoding } from "../../object/s3-listing-encoding.js";
5
6
  import { simS3EffectiveMaxKeys } from "../../object/s3-object-listing.js";
6
7
  import { SimS3ObjectListingLimits } from "../../object/s3-object-listing-limits.js";
7
8
  import { ListObjectsAuthorizer } from "./list-objects-authorizer.js";
@@ -40,6 +41,9 @@ export class ListObjectsCommandHandler {
40
41
  }
41
42
  // Complete request sequencing before authorization and storage access.
42
43
  await this.background.sequence();
44
+ // Refused before anything is listed, the way real S3 refuses an argument
45
+ // it cannot read, rather than after a page has been built.
46
+ const encoding = new SimS3ListingEncoding(command.input.EncodingType);
43
47
  const maxKeys = simS3EffectiveMaxKeys(command.input.MaxKeys, this.listing.maxKeysPerPage);
44
48
  this.authorizer.authorize({
45
49
  bucket,
@@ -54,6 +58,7 @@ export class ListObjectsCommandHandler {
54
58
  delimiter: command.input.Delimiter,
55
59
  marker: command.input.Marker,
56
60
  maxKeys,
61
+ encoding,
57
62
  });
58
63
  }
59
64
  }
@@ -1,4 +1,5 @@
1
1
  import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
2
+ import type { SimS3ListingEncoding } from "../../object/s3-listing-encoding.js";
2
3
  import type { SimListObjectsV2CommandOutput } from "./list-objects-v2.command.js";
3
4
  interface ListObjectsV2PageInput {
4
5
  readonly bucket: SimS3Bucket;
@@ -7,6 +8,7 @@ interface ListObjectsV2PageInput {
7
8
  readonly continuationToken?: string | undefined;
8
9
  readonly startAfter?: string | undefined;
9
10
  readonly maxKeys: number;
11
+ readonly encoding: SimS3ListingEncoding;
10
12
  }
11
13
  /**
12
14
  * Reads, orders, and paginates Objects for a ListObjectsV2 response.
@@ -15,6 +17,10 @@ interface ListObjectsV2PageInput {
15
17
  * called, as it is for the first version of the operation, so a denied request
16
18
  * cannot examine Object keys or sizes.
17
19
  *
20
+ * The keys, the prefix, the delimiter and the key a first page started after
21
+ * are written the way the listing asked for them, which is encoded or as they
22
+ * are stored. A continuation token is not, because it is opaque either way.
23
+ *
18
24
  * The keys on a page are chosen exactly as ListObjects chooses them. What
19
25
  * differs is how a caller says where to carry on from: a continuation token
20
26
  * from the previous page, which wins, or a StartAfter key that positions the
@@ -9,6 +9,10 @@ import { simS3ContinuationToken, simS3ContinuationTokenKey, } from "./list-objec
9
9
  * called, as it is for the first version of the operation, so a denied request
10
10
  * cannot examine Object keys or sizes.
11
11
  *
12
+ * The keys, the prefix, the delimiter and the key a first page started after
13
+ * are written the way the listing asked for them, which is encoded or as they
14
+ * are stored. A continuation token is not, because it is opaque either way.
15
+ *
12
16
  * The keys on a page are chosen exactly as ListObjects chooses them. What
13
17
  * differs is how a caller says where to carry on from: a continuation token
14
18
  * from the previous page, which wins, or a StartAfter key that positions the
@@ -27,12 +31,13 @@ export class ListObjectsV2PageBuilder {
27
31
  startAfter: this.resumeAfter(input),
28
32
  maxKeys: input.maxKeys,
29
33
  });
34
+ const { encoding } = input;
30
35
  return {
31
- Contents: simS3ObjectSummaries(page.objects),
32
- CommonPrefixes: simS3CommonPrefixes(page.commonPrefixes),
36
+ Contents: encoding.summaries(simS3ObjectSummaries(page.objects)),
37
+ CommonPrefixes: encoding.commonPrefixes(simS3CommonPrefixes(page.commonPrefixes)),
33
38
  Name: input.bucket.bucketName,
34
- Prefix: input.prefix,
35
- Delimiter: input.delimiter,
39
+ Prefix: encoding.value(input.prefix),
40
+ Delimiter: encoding.value(input.delimiter),
36
41
  MaxKeys: input.maxKeys,
37
42
  KeyCount: page.objects.length + page.commonPrefixes.length,
38
43
  IsTruncated: page.isTruncated,
@@ -40,7 +45,8 @@ export class ListObjectsV2PageBuilder {
40
45
  NextContinuationToken: page.resumeAfter === undefined
41
46
  ? undefined
42
47
  : simS3ContinuationToken(page.resumeAfter),
43
- StartAfter: input.startAfter,
48
+ StartAfter: encoding.value(input.startAfter),
49
+ EncodingType: encoding.encodingType,
44
50
  $metadata: {},
45
51
  };
46
52
  }