@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
@@ -5,6 +5,7 @@ import { SimCfnTemplateBodyValidator } from "./sim-cfn-template-body-validator.j
5
5
  import { parseSimCfnTemplateBody } from "./sim-cfn-template-body-parse.js";
6
6
  import { SimCfnPseudoParameters } from "../parameters/pseudo/sim-cfn-pseudo-parameters.js";
7
7
  import { SimCfnConditionEvaluator } from "./condition/sim-cfn-condition-evaluator.js";
8
+ import { SimCfnOutputConditions } from "./condition/sim-cfn-output-conditions.js";
8
9
  import { SimCfnResourceConditions } from "./condition/sim-cfn-resource-conditions.js";
9
10
  import { samExpandedTemplate } from "../sam/sim-cfn-sam-expansion.js";
10
11
  /**
@@ -15,15 +16,18 @@ import { samExpandedTemplate } from "../sam/sim-cfn-sam-expansion.js";
15
16
  export class SimCfnTemplate {
16
17
  template;
17
18
  stackName;
19
+ /** The unique ID of the Stack this template is being deployed as. */
20
+ stackId;
18
21
  parameters;
19
22
  /** The export names a Stack deployed from this template can import. */
20
23
  exports;
21
24
  accountRegionScope;
22
25
  evaluatedConditions;
23
26
  constructor(properties) {
24
- const { template, parameters, stackName, accountRegionScope, exports } = properties;
27
+ const { template, parameters, stackName, stackId, accountRegionScope, exports, } = properties;
25
28
  this.template = template;
26
29
  this.stackName = stackName;
30
+ this.stackId = stackId;
27
31
  this.accountRegionScope = accountRegionScope;
28
32
  this.exports = exports;
29
33
  const validator = new SimCfnTemplateBodyValidator({ template, stackName });
@@ -49,6 +53,7 @@ export class SimCfnTemplate {
49
53
  template: samExpandedTemplate(template),
50
54
  parameters: properties.parameters,
51
55
  stackName: properties.stackName,
56
+ stackId: properties.stackId,
52
57
  accountRegionScope: properties.accountRegionScope,
53
58
  exports: properties.exports,
54
59
  });
@@ -86,13 +91,21 @@ export class SimCfnTemplate {
86
91
  *
87
92
  * Resource-backed intrinsic functions are left unresolved here because
88
93
  * Outputs are resolved after Resource creation.
94
+ *
95
+ * An Output whose `Condition` attribute is false is left out entirely, so it
96
+ * never reaches the Stack's Outputs and publishes no export.
89
97
  */
90
98
  outputTemplates() {
91
99
  const valueResolver = this.valueResolver();
100
+ const outputConditions = new SimCfnOutputConditions({
101
+ conditions: this.conditions(),
102
+ stackName: this.stackName,
103
+ });
92
104
  return Object.entries(this.template.Outputs ?? {})
93
105
  .filter((entry) => {
94
106
  return isRecord(entry[1]);
95
107
  })
108
+ .filter(([outputKey, outputTemplate]) => !outputConditions.excludes(outputKey, outputTemplate))
96
109
  .map(([outputKey, outputTemplate]) => ({
97
110
  outputKey,
98
111
  template: valueResolver.resolveRecordFor(`Sim CloudFormation Output ${outputKey}`, outputTemplate),
@@ -107,6 +120,7 @@ export class SimCfnTemplate {
107
120
  return new SimCfnPseudoParameters({
108
121
  accountRegionScope: this.accountRegionScope,
109
122
  stackName: this.stackName,
123
+ stackId: this.stackId,
110
124
  });
111
125
  }
112
126
  /**
@@ -1,8 +1,10 @@
1
+ import type { SimCloudFrontBehavior } from "../../behaviour/sim-cloud-front-behavior.js";
1
2
  import type { SimCfForwardedToOrigin } from "../../origin-request-policy/sim-cf-forwarded-to-origin.js";
2
3
  interface SimCfCustomOriginRequestProperties {
3
4
  readonly domainName: string;
4
5
  readonly originPath: string;
5
6
  readonly request: Request;
7
+ readonly viewerProtocolPolicy?: SimCloudFrontBehavior["viewerProtocolPolicy"] | undefined;
6
8
  /**
7
9
  * What the Behavior's cache policy and origin request policy carry to the
8
10
  * Origin between them.
@@ -1,4 +1,5 @@
1
1
  import { SimAwsLocalUrl } from "../../../../serve/http/url/sim-aws-local-url.js";
2
+ import { isSimAwsLocalRequest, simAwsRequestHostname, } from "../../../../serve/http/url/sim-aws-request-hostname.js";
2
3
  import { stripSimAwsControlHeaders } from "../../../iam/request/sim-aws-control-headers.js";
3
4
  import { simCfForwardedOriginHeaders, simCfForwardedOriginSearch, } from "./sim-cf-custom-origin-forwarding.js";
4
5
  /**
@@ -23,6 +24,7 @@ export function simCfCustomOriginRequest(properties) {
23
24
  originUrl.pathname = originRequestPath(properties.originPath, viewerUrl.pathname);
24
25
  originUrl.search = simCfForwardedOriginSearch(viewerUrl.search, forwarded);
25
26
  const headers = simCfForwardedOriginHeaders(request.headers, forwarded);
27
+ applyAwsFacingViewerOrigin(headers, request, properties.viewerProtocolPolicy);
26
28
  headers.set("host", originUrl.host);
27
29
  // Who the Origin request is from is the Origin's business, not the viewer's,
28
30
  // so a viewer's own control headers are dropped before the Origin's are
@@ -51,6 +53,53 @@ export function simCfCustomOriginRequest(properties) {
51
53
  signal: request.signal,
52
54
  });
53
55
  }
56
+ /**
57
+ * Replace the local same-origin value a browser sends with the origin the
58
+ * viewer would use against CloudFront.
59
+ *
60
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html
61
+ */
62
+ function applyAwsFacingViewerOrigin(headers, viewerRequest, viewerProtocolPolicy) {
63
+ const value = headers.get("origin");
64
+ if (value === null || !isSimAwsLocalRequest(viewerRequest)) {
65
+ return;
66
+ }
67
+ const origin = originUrl(value);
68
+ if (origin === undefined || origin.origin !== viewerOrigin(viewerRequest)) {
69
+ return;
70
+ }
71
+ origin.hostname = simAwsRequestHostname(viewerRequest);
72
+ origin.port = "";
73
+ if (viewerProtocolPolicy === "redirect-to-https" ||
74
+ viewerProtocolPolicy === "https-only") {
75
+ origin.protocol = "https:";
76
+ }
77
+ headers.set("origin", origin.origin);
78
+ }
79
+ /**
80
+ * The local origin the viewer used, including the Host header when it differs
81
+ * from the Request URL.
82
+ */
83
+ function viewerOrigin(request) {
84
+ const url = new URL(request.url);
85
+ const host = request.headers.get("host");
86
+ if (host !== null) {
87
+ url.host = host;
88
+ }
89
+ return url.origin;
90
+ }
91
+ /**
92
+ * Read a serialized Origin without rejecting the request when it is `null` or
93
+ * malformed. CloudFront forwards those values unchanged.
94
+ */
95
+ function originUrl(value) {
96
+ try {
97
+ return new URL(value);
98
+ }
99
+ catch {
100
+ return undefined;
101
+ }
102
+ }
54
103
  /**
55
104
  * Prefix the Origin path to the request path, as CloudFront does.
56
105
  */
@@ -60,6 +60,7 @@ export class SimCloudFrontCustomOrigin {
60
60
  domainName: this.domainName,
61
61
  originPath: this.originPath,
62
62
  request: request.req,
63
+ viewerProtocolPolicy: request.behavior.viewerProtocolPolicy,
63
64
  forwarded: simCfBehaviorForwardedToOrigin(request.behavior, this.policies),
64
65
  customHeaders: this.customHeaders,
65
66
  signingHeaders: this.signer.forRequest(request),
@@ -21,6 +21,7 @@ export class SimCfS3OriginResponses {
21
21
  foundObject(object, request) {
22
22
  const headers = simS3ObjectResponseHeaders({
23
23
  metadata: object.metadata.values,
24
+ userMetadata: object.metadata.userDefined,
24
25
  bodyLength: object.body.length,
25
26
  etag: simS3QuotedETag(object.etag),
26
27
  lastModified: object.lastModified,
@@ -44,7 +44,7 @@ export class SimCognitoProviderPage {
44
44
  */
45
45
  claimFields(provider) {
46
46
  return simCognitoMappedClaimNames(provider)
47
- .map((claimName) => this.markup.field(`${simCognitoClaimFieldPrefix}${claimName}`, `${claimName} claim`, "text", simCognitoDefaultClaim(claimName)))
47
+ .map((claimName) => this.markup.field(`${simCognitoClaimFieldPrefix}${claimName}`, `${claimName} claim`, "text", simCognitoDefaultClaim(provider, claimName)))
48
48
  .join("");
49
49
  }
50
50
  }
@@ -1,3 +1,4 @@
1
+ import type { SimCognitoAttributeDataTypeValue } from "../schema/sim-cognito-attribute-data-type.js";
1
2
  import type { SimCognitoUserPoolSchema } from "../schema/sim-cognito-user-pool-schema.js";
2
3
  import type { SimCognitoAttributeType } from "../user/sim-cognito-user-attributes.js";
3
4
  import type { SimCognitoExternalUser } from "./sim-cognito-external-user.js";
@@ -25,6 +26,10 @@ export declare class SimCognitoAttributeMapping {
25
26
  * This mapping as a described provider reports it.
26
27
  */
27
28
  toOutput(): SimCognitoAttributeMappingType;
29
+ /**
30
+ * The pool attribute types one provider claim is mapped onto.
31
+ */
32
+ dataTypesForClaim(claimName: string): readonly SimCognitoAttributeDataTypeValue[];
28
33
  /**
29
34
  * The attributes an external user's claims map onto.
30
35
  */
@@ -20,6 +20,23 @@ export class SimCognitoAttributeMapping {
20
20
  toOutput() {
21
21
  return { ...this.mapping };
22
22
  }
23
+ /**
24
+ * The pool attribute types one provider claim is mapped onto.
25
+ */
26
+ dataTypesForClaim(claimName) {
27
+ return Object.entries(this.mapping).flatMap(([attributeName, mappedClaimName]) => {
28
+ if (mappedClaimName !== claimName) {
29
+ return [];
30
+ }
31
+ const attribute = this.schema.find(attributeName);
32
+ return attribute === undefined
33
+ ? []
34
+ : [
35
+ attribute.toOutput()
36
+ .AttributeDataType,
37
+ ];
38
+ });
39
+ }
23
40
  /**
24
41
  * The attributes an external user's claims map onto.
25
42
  */
@@ -16,13 +16,13 @@ export declare const simCognitoClaimFieldPrefix = "claim_";
16
16
  */
17
17
  export declare function simCognitoMappedClaimNames(provider: SimCognitoUserPoolIdentityProvider): readonly string[];
18
18
  /**
19
- * What one claim field is pre-filled with, so that the page signs a user in
20
- * when nobody edits it.
19
+ * What one claim field is pre-filled with, so the page signs a user in when
20
+ * nobody edits it.
21
21
  *
22
- * An address has to look like one, because a pool that verifies or aliases by
23
- * email holds it to that. Everything else is a name as far as this knows.
22
+ * The pool attribute type decides the shape. A string claim whose name refers
23
+ * to an email address uses the reserved address.
24
24
  */
25
- export declare function simCognitoDefaultClaim(claimName: string): string;
25
+ export declare function simCognitoDefaultClaim(provider: SimCognitoUserPoolIdentityProvider, claimName: string): string;
26
26
  /**
27
27
  * The subject the page pre-fills, which says on its face where it came from.
28
28
  */
@@ -28,16 +28,32 @@ export function simCognitoMappedClaimNames(provider) {
28
28
  return [...new Set(Object.values(provider.attributeMapping.toOutput()))];
29
29
  }
30
30
  /**
31
- * What one claim field is pre-filled with, so that the page signs a user in
32
- * when nobody edits it.
31
+ * What one claim field is pre-filled with, so the page signs a user in when
32
+ * nobody edits it.
33
33
  *
34
- * An address has to look like one, because a pool that verifies or aliases by
35
- * email holds it to that. Everything else is a name as far as this knows.
34
+ * The pool attribute type decides the shape. A string claim whose name refers
35
+ * to an email address uses the reserved address.
36
36
  */
37
- export function simCognitoDefaultClaim(claimName) {
38
- return claimName.toLowerCase().includes("email")
39
- ? defaultAddress
40
- : defaultClaimValue;
37
+ export function simCognitoDefaultClaim(provider, claimName) {
38
+ const dataType = provider.attributeMapping
39
+ .dataTypesForClaim(claimName)
40
+ .find((mappedType) => mappedType !== "String") ?? "String";
41
+ switch (dataType) {
42
+ case "Boolean": {
43
+ return "true";
44
+ }
45
+ case "DateTime": {
46
+ return "1970-01-01T00:00:00.000Z";
47
+ }
48
+ case "Number": {
49
+ return "0";
50
+ }
51
+ case "String": {
52
+ return claimName.toLowerCase().includes("email")
53
+ ? defaultAddress
54
+ : defaultClaimValue;
55
+ }
56
+ }
41
57
  }
42
58
  /**
43
59
  * The subject the page pre-fills, which says on its face where it came from.
@@ -1,23 +1,26 @@
1
1
  import type { SimDynamoDbFilter } from "../../expression/filter/sim-dynamodb-filter.js";
2
2
  import type { SimDynamoDbKeyConditionTerms } from "../../expression/key-condition/sim-dynamodb-key-condition-terms.js";
3
+ import type { SimDynamoDbProjection } from "../../expression/projection/sim-dynamodb-projection.js";
3
4
  import type { SimQueryCommandInput } from "./query.command.js";
4
5
  /**
5
- * What a query's expressions say, once both have been read.
6
+ * What a query's expressions say, once all three have been read.
6
7
  */
7
8
  export interface SimDynamoDbQueryExpressions {
8
9
  readonly terms: SimDynamoDbKeyConditionTerms;
9
10
  readonly filter: SimDynamoDbFilter | undefined;
11
+ readonly projection: SimDynamoDbProjection | undefined;
10
12
  }
11
13
  /**
12
- * Read both expressions of a query against one set of placeholders.
14
+ * Read every expression of a query against one set of placeholders.
13
15
  *
14
16
  * `ExpressionAttributeNames` and `ExpressionAttributeValues` are shared between
15
- * them, so they are checked once both have been read. A placeholder used by
16
- * either counts as used, and one used by neither is refused.
17
+ * the key condition, the filter and the projection, so they are checked once
18
+ * all three have been read. A placeholder used by any one of them counts as
19
+ * used, and one used by none is refused.
17
20
  *
18
- * Both are read before the table is reached, so an expression DynamoDB would
19
- * refuse is refused whether or not the table is there. What is left is the part
20
- * that needs the key schema, which each of them is held to once the table has
21
- * been found.
21
+ * All three are read before the table is reached, so an expression DynamoDB
22
+ * would refuse is refused whether or not the table is there. What is left is
23
+ * the part that needs the key schema, which each of them is held to once the
24
+ * table has been found.
22
25
  */
23
26
  export declare function readSimDynamoDbQueryExpressions(input: SimQueryCommandInput): SimDynamoDbQueryExpressions;
@@ -1,24 +1,27 @@
1
1
  import { parseSimDynamoDbFilter } from "../../expression/filter/sim-dynamodb-filter-expression.js";
2
2
  import { readSimDynamoDbKeyCondition } from "../../expression/key-condition/sim-dynamodb-key-condition-expression.js";
3
+ import { parseSimDynamoDbProjection } from "../../expression/projection/sim-dynamodb-projection-expression.js";
3
4
  import { SimDynamoDbExpressionParameters } from "../../expression/sim-dynamodb-expression-parameters.js";
4
5
  /**
5
- * Read both expressions of a query against one set of placeholders.
6
+ * Read every expression of a query against one set of placeholders.
6
7
  *
7
8
  * `ExpressionAttributeNames` and `ExpressionAttributeValues` are shared between
8
- * them, so they are checked once both have been read. A placeholder used by
9
- * either counts as used, and one used by neither is refused.
9
+ * the key condition, the filter and the projection, so they are checked once
10
+ * all three have been read. A placeholder used by any one of them counts as
11
+ * used, and one used by none is refused.
10
12
  *
11
- * Both are read before the table is reached, so an expression DynamoDB would
12
- * refuse is refused whether or not the table is there. What is left is the part
13
- * that needs the key schema, which each of them is held to once the table has
14
- * been found.
13
+ * All three are read before the table is reached, so an expression DynamoDB
14
+ * would refuse is refused whether or not the table is there. What is left is
15
+ * the part that needs the key schema, which each of them is held to once the
16
+ * table has been found.
15
17
  */
16
18
  export function readSimDynamoDbQueryExpressions(input) {
17
19
  const parameters = new SimDynamoDbExpressionParameters(input);
18
20
  const terms = readSimDynamoDbKeyCondition(input, parameters);
19
21
  const filter = filterIn(input.FilterExpression, parameters);
22
+ const projection = projectionIn(input.ProjectionExpression, parameters);
20
23
  parameters.assertAllUsed();
21
- return { terms, filter };
24
+ return { terms, filter, projection };
22
25
  }
23
26
  /**
24
27
  * Read the filter a query drops read items by, if it names one.
@@ -29,3 +32,12 @@ function filterIn(expression, parameters) {
29
32
  }
30
33
  return parseSimDynamoDbFilter(expression, parameters);
31
34
  }
35
+ /**
36
+ * Read the parts of an item a query answers with, if it names them.
37
+ */
38
+ function projectionIn(expression, parameters) {
39
+ if (expression === undefined) {
40
+ return undefined;
41
+ }
42
+ return parseSimDynamoDbProjection(expression, parameters);
43
+ }
@@ -46,6 +46,7 @@ export class SimDynamoDbQuery {
46
46
  // waits for the view the same way the key condition does.
47
47
  expressions.filter?.assertNamesNoKeyAttribute(view.keySchema);
48
48
  expressions.filter?.assertNamesOnlyCarried(view);
49
+ expressions.projection?.assertNamesOnlyCarried(view);
49
50
  // The token names an item of the collection being read, so it can only be
50
51
  // checked once that collection is known.
51
52
  const after = readSimDynamoDbQueryStartKey({
@@ -65,6 +66,7 @@ export class SimDynamoDbQuery {
65
66
  ...new SimDynamoDbReadAnswer({
66
67
  page,
67
68
  filter: expressions.filter,
69
+ projection: expressions.projection,
68
70
  select,
69
71
  view,
70
72
  }).fields(),
@@ -9,7 +9,6 @@ import { SimDynamoDbUnsimulatedInput } from "../item/sim-dynamodb-unsimulated-in
9
9
  */
10
10
  export function refuseUnsimulatedQueryInput(input) {
11
11
  const unsimulated = new SimDynamoDbUnsimulatedInput("Query");
12
- unsimulated.refuse(input.ProjectionExpression !== undefined, "ProjectionExpression", "answering with whole items where part of them was asked for");
13
12
  unsimulated.refuse((input.AttributesToGet ?? []).length > 0, "AttributesToGet", "answering with whole items where part of them was asked for");
14
13
  unsimulated.refuseNamed(input.KeyConditions, "KeyConditions", "reading a key condition written the way KeyConditionExpression replaced");
15
14
  unsimulated.refuseNamed(input.QueryFilter, "QueryFilter", "answering with the items a legacy filter would have dropped");
@@ -1,4 +1,5 @@
1
1
  import type { SimDynamoDbFilter } from "../../expression/filter/sim-dynamodb-filter.js";
2
+ import type { SimDynamoDbProjection } from "../../expression/projection/sim-dynamodb-projection.js";
2
3
  import type { SimDynamoDbReadView } from "../../table/sim-dynamodb-read-view.js";
3
4
  import type { SimDynamoDbAttributeValue } from "../item/item.types.js";
4
5
  import type { SimDynamoDbItemPage } from "../item/sim-dynamodb-item-page.js";
@@ -15,6 +16,7 @@ export interface SimDynamoDbReadFields {
15
16
  interface SimDynamoDbReadAnswerProperties {
16
17
  readonly page: SimDynamoDbItemPage;
17
18
  readonly filter: SimDynamoDbFilter | undefined;
19
+ readonly projection: SimDynamoDbProjection | undefined;
18
20
  readonly select: SimDynamoDbSelect;
19
21
  readonly view: SimDynamoDbReadView;
20
22
  }
@@ -35,6 +37,7 @@ export declare class SimDynamoDbReadAnswer {
35
37
  private readonly kept;
36
38
  private readonly scannedCount;
37
39
  private readonly lastEvaluatedKey;
40
+ private readonly projection;
38
41
  private readonly select;
39
42
  private readonly view;
40
43
  constructor(properties: SimDynamoDbReadAnswerProperties);
@@ -49,10 +52,17 @@ export declare class SimDynamoDbReadAnswer {
49
52
  /**
50
53
  * One item as the read answers with it.
51
54
  *
52
- * A read asking for whole items answers with the whole item. Anything else is
53
- * cut to what the view carries, so a read of an index answers with the
54
- * attributes that index projects rather than with everything. A read of the
55
- * table cuts nothing either way.
55
+ * A `ProjectionExpression` names the attributes it wants, so it is applied to
56
+ * the whole item and the view is not asked to cut one first. On a global
57
+ * secondary index that changes nothing, since every path the projection names
58
+ * has already been checked against what the index projects. On a local
59
+ * secondary index it is what fetches an unprojected attribute from the base
60
+ * table, which is what real DynamoDB does for the same read.
61
+ *
62
+ * Without a projection, a read asking for whole items answers with the whole
63
+ * item, and anything else is cut to what the view carries. That is how a read
64
+ * of an index answers with the attributes that index projects rather than
65
+ * with everything. A read of the table cuts nothing either way.
56
66
  */
57
67
  private answered;
58
68
  }
@@ -15,6 +15,7 @@ export class SimDynamoDbReadAnswer {
15
15
  kept;
16
16
  scannedCount;
17
17
  lastEvaluatedKey;
18
+ projection;
18
19
  select;
19
20
  view;
20
21
  constructor(properties) {
@@ -22,6 +23,7 @@ export class SimDynamoDbReadAnswer {
22
23
  this.scannedCount = evaluated.length;
23
24
  this.kept = properties.filter?.applyTo(evaluated) ?? evaluated;
24
25
  this.lastEvaluatedKey = properties.page.lastEvaluatedKey;
26
+ this.projection = properties.projection;
25
27
  this.select = properties.select;
26
28
  this.view = properties.view;
27
29
  }
@@ -50,12 +52,22 @@ export class SimDynamoDbReadAnswer {
50
52
  /**
51
53
  * One item as the read answers with it.
52
54
  *
53
- * A read asking for whole items answers with the whole item. Anything else is
54
- * cut to what the view carries, so a read of an index answers with the
55
- * attributes that index projects rather than with everything. A read of the
56
- * table cuts nothing either way.
55
+ * A `ProjectionExpression` names the attributes it wants, so it is applied to
56
+ * the whole item and the view is not asked to cut one first. On a global
57
+ * secondary index that changes nothing, since every path the projection names
58
+ * has already been checked against what the index projects. On a local
59
+ * secondary index it is what fetches an unprojected attribute from the base
60
+ * table, which is what real DynamoDB does for the same read.
61
+ *
62
+ * Without a projection, a read asking for whole items answers with the whole
63
+ * item, and anything else is cut to what the view carries. That is how a read
64
+ * of an index answers with the attributes that index projects rather than
65
+ * with everything. A read of the table cuts nothing either way.
57
66
  */
58
67
  answered(item) {
68
+ if (this.projection !== undefined) {
69
+ return this.projection.apply(item);
70
+ }
59
71
  if (this.select.wholeItems) {
60
72
  return item;
61
73
  }
@@ -0,0 +1,17 @@
1
+ import type { SimDynamoDb } from "../../sim-dynamodb.js";
2
+ import type { SimQueryCommandInput, SimQueryCommandOutput } from "../query/query.command.js";
3
+ import type { SimScanCommandInput } from "../scan/scan.command.js";
4
+ /**
5
+ * One way of reading a table, against `simDynamoDbStockedTableFactory`.
6
+ *
7
+ * A query carries a key condition of its own, so what a test writes is added to
8
+ * that rather than replacing it.
9
+ */
10
+ export interface SimDynamoDbTableRead {
11
+ readonly operation: string;
12
+ readonly read: (simDynamoDb: SimDynamoDb, input: SimQueryCommandInput & SimScanCommandInput) => Promise<SimQueryCommandOutput>;
13
+ }
14
+ /**
15
+ * Every way of reading a table, for a test that iterates them.
16
+ */
17
+ export declare const simDynamoDbTableReads: readonly SimDynamoDbTableRead[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Test support for checking one rule on both of the operations it governs.
3
+ *
4
+ * `Select`, `ProjectionExpression` and the rest of the read parameters mean the
5
+ * same thing to a Query and to a Scan, and a rule proved on one of them says
6
+ * nothing about the other. Tests of those iterate this rather than being
7
+ * written twice.
8
+ *
9
+ * These helpers drive the simulator through structural command shapes rather
10
+ * than real SDK command objects, because this is source rather than a test
11
+ * file. The colocated tests cover SDK-shaped input.
12
+ */
13
+ /**
14
+ * The values a query's own key condition needs, whatever the test adds.
15
+ */
16
+ const keyConditionValues = { ":customer": { S: "c-1" } };
17
+ /**
18
+ * Every way of reading a table, for a test that iterates them.
19
+ */
20
+ export const simDynamoDbTableReads = [
21
+ {
22
+ operation: "Query",
23
+ read: async (simDynamoDb, input) => simDynamoDb.query({
24
+ input: {
25
+ TableName: "OrdersTable",
26
+ KeyConditionExpression: "customerId = :customer",
27
+ ...input,
28
+ ExpressionAttributeValues: {
29
+ ...keyConditionValues,
30
+ ...input.ExpressionAttributeValues,
31
+ },
32
+ },
33
+ }),
34
+ },
35
+ {
36
+ operation: "Scan",
37
+ read: async (simDynamoDb, input) => simDynamoDb.scan({ input: { TableName: "OrdersTable", ...input } }),
38
+ },
39
+ ];
@@ -0,0 +1,28 @@
1
+ import type { SimDynamoDbFilter } from "../../expression/filter/sim-dynamodb-filter.js";
2
+ import type { SimDynamoDbProjection } from "../../expression/projection/sim-dynamodb-projection.js";
3
+ import type { SimScanCommandInput } from "./scan.command.js";
4
+ /**
5
+ * What a scan's expressions say, once both have been read.
6
+ */
7
+ export interface SimDynamoDbScanExpressions {
8
+ readonly filter: SimDynamoDbFilter | undefined;
9
+ readonly projection: SimDynamoDbProjection | undefined;
10
+ }
11
+ /**
12
+ * Read both expressions of a scan against one set of placeholders.
13
+ *
14
+ * `ExpressionAttributeNames` and `ExpressionAttributeValues` are shared between
15
+ * the filter and the projection, so they are checked once both have been read.
16
+ * A placeholder used by either counts as used, and one used by neither is
17
+ * refused.
18
+ *
19
+ * A scan that names neither expression is a different refusal. There is nothing
20
+ * for a placeholder to be unused in, which is the wording real DynamoDB uses
21
+ * for a request carrying parameters and no expression at all.
22
+ *
23
+ * Both are read before the table is reached, so an expression DynamoDB would
24
+ * refuse is refused whether or not the table is there. What is left is which
25
+ * attributes the view being read carries, which each of them is held to once
26
+ * the table has been found.
27
+ */
28
+ export declare function readSimDynamoDbScanExpressions(input: SimScanCommandInput): SimDynamoDbScanExpressions;
@@ -0,0 +1,50 @@
1
+ import { parseSimDynamoDbFilter } from "../../expression/filter/sim-dynamodb-filter-expression.js";
2
+ import { parseSimDynamoDbProjection } from "../../expression/projection/sim-dynamodb-projection-expression.js";
3
+ import { SimDynamoDbExpressionParameters } from "../../expression/sim-dynamodb-expression-parameters.js";
4
+ /**
5
+ * Read both expressions of a scan against one set of placeholders.
6
+ *
7
+ * `ExpressionAttributeNames` and `ExpressionAttributeValues` are shared between
8
+ * the filter and the projection, so they are checked once both have been read.
9
+ * A placeholder used by either counts as used, and one used by neither is
10
+ * refused.
11
+ *
12
+ * A scan that names neither expression is a different refusal. There is nothing
13
+ * for a placeholder to be unused in, which is the wording real DynamoDB uses
14
+ * for a request carrying parameters and no expression at all.
15
+ *
16
+ * Both are read before the table is reached, so an expression DynamoDB would
17
+ * refuse is refused whether or not the table is there. What is left is which
18
+ * attributes the view being read carries, which each of them is held to once
19
+ * the table has been found.
20
+ */
21
+ export function readSimDynamoDbScanExpressions(input) {
22
+ if (input.FilterExpression === undefined &&
23
+ input.ProjectionExpression === undefined) {
24
+ SimDynamoDbExpressionParameters.assertNoneWithout(input);
25
+ return { filter: undefined, projection: undefined };
26
+ }
27
+ const parameters = new SimDynamoDbExpressionParameters(input);
28
+ const filter = filterIn(input.FilterExpression, parameters);
29
+ const projection = projectionIn(input.ProjectionExpression, parameters);
30
+ parameters.assertAllUsed();
31
+ return { filter, projection };
32
+ }
33
+ /**
34
+ * Read the filter a scan drops read items by, if it names one.
35
+ */
36
+ function filterIn(expression, parameters) {
37
+ if (expression === undefined) {
38
+ return undefined;
39
+ }
40
+ return parseSimDynamoDbFilter(expression, parameters);
41
+ }
42
+ /**
43
+ * Read the parts of an item a scan answers with, if it names them.
44
+ */
45
+ function projectionIn(expression, parameters) {
46
+ if (expression === undefined) {
47
+ return undefined;
48
+ }
49
+ return parseSimDynamoDbProjection(expression, parameters);
50
+ }