@kensio/yulin 1.21.2 → 1.21.4

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 (634) 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/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
  40. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
  41. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
  43. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
  45. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
  46. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
  47. package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
  48. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
  49. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
  50. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
  51. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
  52. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
  53. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
  54. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
  55. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
  56. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
  57. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
  58. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
  59. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
  60. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
  61. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
  62. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
  63. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
  64. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
  65. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
  66. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
  67. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
  68. package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
  69. package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
  70. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
  71. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
  72. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
  73. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
  74. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
  75. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
  76. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
  77. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
  78. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +12 -12
  79. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
  80. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
  81. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
  82. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
  83. package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
  84. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
  85. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
  86. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
  87. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
  88. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
  89. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
  90. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
  91. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
  92. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
  93. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
  94. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
  95. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
  96. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
  97. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
  98. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
  99. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
  100. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
  101. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
  102. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
  103. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
  104. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
  105. package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
  106. package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
  107. package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
  108. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +8 -15
  109. package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
  110. package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
  111. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
  112. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
  113. package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
  114. package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
  115. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
  116. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
  117. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
  118. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
  119. package/dist/service/cloudformation/resource/factory/sim-cfn-resource-factory.type.d.ts +9 -0
  120. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
  121. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  122. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  123. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  124. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +19 -0
  125. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  126. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  127. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  128. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  129. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.d.ts +26 -0
  130. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.js +55 -0
  131. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  132. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  133. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  134. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  135. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  136. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  137. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  138. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  139. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  140. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  141. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  142. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  143. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  144. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  145. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  162. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  163. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  164. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  165. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  166. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  167. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  168. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  169. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  170. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  171. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  172. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  173. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  174. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  175. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  176. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  177. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  178. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  179. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  180. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  181. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  182. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  183. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  184. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  185. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  186. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  187. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  188. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  189. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  190. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  191. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  192. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  193. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  194. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  195. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  196. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  197. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  198. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  199. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  200. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  201. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  202. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  203. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  204. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  205. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  206. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +51 -3
  207. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +84 -6
  208. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  209. package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
  210. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
  211. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  212. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  213. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  214. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  215. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  216. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  217. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  218. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  219. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  220. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  221. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  222. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  223. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +16 -1
  224. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +27 -0
  225. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +7 -1
  226. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  227. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  228. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  229. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  230. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  231. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  232. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  233. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  234. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  235. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  236. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  237. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  238. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  239. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  240. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  241. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  242. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  243. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  244. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  245. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  246. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  247. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +5 -0
  248. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +15 -0
  249. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.d.ts +24 -0
  250. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.js +38 -0
  251. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  252. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  253. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  254. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  255. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  256. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  257. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  258. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  259. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  260. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  261. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  262. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  263. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  264. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  265. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  266. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  267. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  268. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  269. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  270. package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +1 -2
  271. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  272. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  273. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  274. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  275. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  276. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  277. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  278. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  279. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  280. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  281. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  282. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  283. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  284. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  285. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  286. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  287. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  288. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  289. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  290. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  291. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  292. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  293. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  294. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  295. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  296. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  297. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  298. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  299. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  300. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  301. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  302. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  303. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  304. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  305. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  306. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  307. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  308. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  309. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  310. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  311. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  312. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  313. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  314. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  315. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  316. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  317. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  318. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  319. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  320. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  321. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  322. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  323. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  324. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  325. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  326. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  327. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  328. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  329. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  330. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  331. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  332. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  333. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  334. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  335. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  336. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  337. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  338. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  339. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  340. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  341. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  342. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  343. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  344. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  345. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  346. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  347. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  348. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  349. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  350. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  351. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  352. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  353. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  354. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  355. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  356. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  357. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  358. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  359. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  360. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  361. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  362. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  363. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  364. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  365. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  366. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  367. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  368. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  369. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  370. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  371. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  372. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  373. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  374. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  375. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  376. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  377. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  378. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  379. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  380. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  381. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  382. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  383. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  384. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  385. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  386. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  387. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  388. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  389. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  390. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  391. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  392. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  393. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  394. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  395. package/dist/service/lambda/index.d.ts +1 -0
  396. package/dist/service/lambda/index.js +1 -0
  397. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  398. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  399. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  400. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  401. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  402. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  403. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  404. package/dist/service/lambda/sim-lambda.js +13 -0
  405. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  406. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  407. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  408. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  409. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  410. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  411. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  412. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  413. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  414. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  415. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  416. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  417. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  418. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  419. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  420. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  421. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  422. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  423. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  424. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  425. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  426. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  427. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  428. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  429. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  430. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  431. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  432. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  433. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  434. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  435. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  436. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  437. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  438. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  439. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  440. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  441. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  442. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  443. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  444. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  445. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  446. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  447. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  448. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  449. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  450. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  451. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  452. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  453. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  454. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  455. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  456. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  457. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  458. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  459. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  460. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  461. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  462. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  463. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  464. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  465. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  466. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  467. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  468. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  469. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  470. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  471. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  472. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  473. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  474. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  475. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  476. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  477. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  478. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  479. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  480. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  481. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  482. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  483. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  484. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  485. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  486. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  487. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  488. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  489. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  490. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  491. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  492. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  493. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  494. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  495. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  496. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  497. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  498. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  499. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  500. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  501. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  502. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  503. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  504. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  505. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  506. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  507. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  508. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  509. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  510. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  511. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  512. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  513. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  514. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  515. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  516. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  517. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  518. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  519. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  520. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  521. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  522. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  523. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  524. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  525. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  526. package/dist/service/s3/error/sim-s3.error.js +26 -40
  527. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  528. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  529. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  530. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  531. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  532. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  533. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  534. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  535. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  536. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  537. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  538. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  539. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  540. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  541. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  542. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  543. package/dist/service/s3/object/s3-object-summary.js +1 -10
  544. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  545. package/dist/service/s3/object/s3-object-tags.js +77 -0
  546. package/dist/service/s3/object/s3-object.d.ts +49 -0
  547. package/dist/service/s3/object/s3-object.js +52 -1
  548. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  549. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  550. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  551. package/dist/service/s3/object/s3-storage-class.js +67 -0
  552. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  553. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  554. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  555. package/dist/service/s3/object/s3-write-storage.js +21 -0
  556. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  557. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  558. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  559. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  560. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  561. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  562. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  563. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  564. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  565. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  566. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  567. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  568. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  569. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  570. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  571. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  572. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  573. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  574. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  575. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  576. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  577. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  578. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  579. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  580. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  581. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  582. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  583. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  584. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  585. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  586. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  587. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  588. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  589. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  590. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  591. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  592. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  593. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  594. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  595. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  596. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  597. package/dist/service/s3/sim-s3-commands.js +6 -0
  598. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  599. package/dist/service/s3/sim-s3-operations.js +17 -4
  600. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  601. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  602. package/dist/service/s3/sim-s3.d.ts +12 -0
  603. package/dist/service/s3/sim-s3.js +13 -0
  604. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  605. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  606. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  607. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  608. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  609. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  610. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  611. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  612. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  613. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  614. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  615. package/dist/util/background/background-clock-waits.d.ts +52 -0
  616. package/dist/util/background/background-clock-waits.js +76 -0
  617. package/dist/util/background/background-jitter.js +1 -0
  618. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  619. package/dist/util/background/background-pending-tasks.js +117 -0
  620. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  621. package/dist/util/background/background-settled-tasks.js +4 -1
  622. package/dist/util/background/background.d.ts +43 -0
  623. package/dist/util/background/background.js +27 -19
  624. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  625. package/dist/util/background/non-deterministic-background.js +24 -20
  626. package/dist/util/clock/sim-clock-control.js +23 -2
  627. package/docs/services/apigateway/README.md +3 -1
  628. package/docs/services/athena/README.md +126 -3
  629. package/docs/services/cloudformation/README.md +775 -65
  630. package/docs/services/cognito/README.md +5 -0
  631. package/docs/services/dynamodb/README.md +86 -11
  632. package/docs/services/lambda/README.md +603 -39
  633. package/docs/services/s3/README.md +688 -57
  634. package/package.json +8 -2
@@ -1,7 +1,19 @@
1
- import { simAthenaDelimitedRows, } from "./sim-athena-delimited-records.js";
1
+ import { simAthenaDelimitedFormat } from "./sim-athena-delimited-format.js";
2
+ import { simAthenaDelimitedRows } from "./sim-athena-delimited-records.js";
2
3
  import { simAthenaJsonRows, } from "./sim-athena-json-records.js";
4
+ import { simAthenaParquetRows } from "./sim-athena-parquet-records.js";
3
5
  /** The SerDe class name that takes `mapping.<column>` parameters. */
4
6
  const openXSerDe = "org.openx.data.jsonserde.jsonserde";
7
+ /**
8
+ * The SerDe class names that mean Parquet.
9
+ *
10
+ * Glue and the Athena `CREATE TABLE` documentation both name the first. The
11
+ * second is what an older Hive table carries, and Athena still reads one.
12
+ */
13
+ const parquetSerDes = new Set([
14
+ "org.apache.hadoop.hive.ql.io.parquet.serde.parquethiveserde",
15
+ "parquet.hive.serde.parquethiveserde",
16
+ ]);
5
17
  /** The SerDe class names that mean JSON lines. */
6
18
  const jsonSerDes = new Set([
7
19
  openXSerDe,
@@ -10,50 +22,38 @@ const jsonSerDes = new Set([
10
22
  ]);
11
23
  /** What a `mapping.<column>` parameter is named with. */
12
24
  const mappingPrefix = "mapping.";
13
- /**
14
- * The SerDe class names that mean delimited text, and what each one reads
15
- * before the table's own parameters are applied.
16
- *
17
- * `OpenCSVSerde` is comma separated and quoted. `LazySimpleSerDe` is what
18
- * `ROW FORMAT DELIMITED` gives: it quotes nothing, and its own default
19
- * delimiter is the control character Hive has always used rather than a comma.
20
- */
21
- const delimitedSerDes = new Map([
22
- [
23
- "org.apache.hadoop.hive.serde2.opencsvserde",
24
- { delimiter: ",", quoted: true },
25
- ],
26
- [
27
- "org.apache.hadoop.hive.serde2.lazy.lazysimpleserde",
28
- { delimiter: "\u{1}", quoted: false },
29
- ],
30
- ]);
31
25
  /**
32
26
  * How one table's objects are decoded, or nothing where this simulation has no
33
27
  * reader for what the table declares.
34
28
  *
35
29
  * The SerDe is what says so, the way it says so on real Athena. A table
36
- * holding Parquet or ORC lands here, and the query falls back to whatever a
37
- * test declared. A table declaring no SerDe at all lands here too: nothing
38
- * else in the catalog says what the bytes are, and guessing would answer a
39
- * Parquet query with nonsense rather than turning it down.
30
+ * holding ORC lands here, and the query falls back to whatever a test declared.
31
+ * A table declaring no SerDe at all lands here too. Nothing else in the catalog
32
+ * says what the bytes are, and guessing would answer with nonsense where
33
+ * turning the query down is the honest reply.
40
34
  */
41
35
  export function simAthenaRecordReader(table) {
42
36
  const library = table.storageDescriptor?.SerdeInfo?.SerializationLibrary?.toLowerCase();
43
37
  if (library === undefined) {
44
38
  return undefined;
45
39
  }
40
+ if (parquetSerDes.has(library)) {
41
+ return simAthenaParquetRows;
42
+ }
46
43
  if (jsonSerDes.has(library)) {
47
44
  const format = jsonFormat(table, library);
48
- return (text) => simAthenaJsonRows(text, format);
45
+ return (bytes) => simAthenaJsonRows(decodedText(bytes), format);
49
46
  }
50
- const defaults = delimitedSerDes.get(library);
51
- if (defaults === undefined) {
47
+ const format = simAthenaDelimitedFormat(table, library);
48
+ if (format === undefined) {
52
49
  return undefined;
53
50
  }
54
- const format = delimitedFormat(table, defaults);
55
51
  const columns = table.columns.map((column) => column.Name);
56
- return (text) => simAthenaDelimitedRows(text, format, columns);
52
+ return (bytes) => simAthenaDelimitedRows(decodedText(bytes), format, columns);
53
+ }
54
+ /** One object's bytes as the text a JSON or delimited reader wants. */
55
+ function decodedText(bytes) {
56
+ return new TextDecoder().decode(bytes);
57
57
  }
58
58
  /**
59
59
  * How one table's JSON records reach its columns.
@@ -77,28 +77,3 @@ function jsonFormat(table, library) {
77
77
  caseInsensitive: parameters["case.insensitive"]?.toLowerCase() !== "false",
78
78
  };
79
79
  }
80
- function delimitedFormat(table, defaults) {
81
- const parameters = table.storageDescriptor?.SerdeInfo?.Parameters ?? {};
82
- const quoted = defaults.quoted || parameters["quoteChar"] !== undefined;
83
- return {
84
- delimiter: parameters["separatorChar"] ??
85
- parameters["field.delim"] ??
86
- defaults.delimiter,
87
- quote: quoted ? (parameters["quoteChar"] ?? '"') : undefined,
88
- escape: quoted ? (parameters["escapeChar"] ?? "\\") : undefined,
89
- skipHeaderLines: skippedHeaderLines(table),
90
- };
91
- }
92
- /**
93
- * How many lines of every object are a header rather than a row.
94
- *
95
- * `skip.header.line.count` is a table property on real Athena, and the storage
96
- * descriptor's own parameters are read as well because a template can put it
97
- * in either place.
98
- */
99
- function skippedHeaderLines(table) {
100
- const declared = table.parameters["skip.header.line.count"] ??
101
- table.storageDescriptor?.Parameters?.["skip.header.line.count"];
102
- const count = Math.trunc(Number(declared ?? ""));
103
- return Number.isFinite(count) && count > 0 ? count : 0;
104
- }
@@ -1,5 +1,13 @@
1
1
  import type { SimAthenaCatalogTable } from "../table/sim-athena-catalog-table.js";
2
2
  import type { SimAthenaSqlParser } from "./sim-athena-parser-module.js";
3
+ /** One statement translated for SQLite, or why it could not be. */
4
+ export type SimAthenaTranslatedSql = {
5
+ readonly sql: string;
6
+ readonly turnedDown: undefined;
7
+ } | {
8
+ readonly sql: undefined;
9
+ readonly turnedDown: string;
10
+ };
3
11
  interface SimAthenaSqlTranslationRequest {
4
12
  readonly parser: SimAthenaSqlParser;
5
13
  readonly athenaSql: string;
@@ -7,15 +15,13 @@ interface SimAthenaSqlTranslationRequest {
7
15
  readonly tables: readonly SimAthenaCatalogTable[];
8
16
  }
9
17
  /**
10
- * One Athena statement written back out for SQLite, or nothing where it cannot
11
- * be.
18
+ * One Athena statement written back out for SQLite, or why it cannot be.
12
19
  *
13
- * A statement the Athena grammar refuses, one carrying an `UNNEST` that cannot
14
- * become a `json_each`, and one the parser cannot write back out all land the
15
- * same way. The engine has one answer to any of them, which is to turn the
16
- * query down and let the declared result take it. Nothing is reported from
17
- * here, since a query the engine cannot run is an ordinary thing for a test to
18
- * write.
20
+ * Three things stop it, and each is told apart because a strict engine fails
21
+ * the query with the reason. The Athena grammar can refuse the statement, an
22
+ * `UNNEST` in it can have no `json_each` to become, and the parser can decline
23
+ * to write the statement back out. A lenient engine answers all three the same
24
+ * way, by turning the query down and letting the declared result take it.
19
25
  */
20
- export declare function simAthenaSqliteSql(request: SimAthenaSqlTranslationRequest): string | undefined;
26
+ export declare function simAthenaSqliteSql(request: SimAthenaSqlTranslationRequest): SimAthenaTranslatedSql;
21
27
  export {};
@@ -1,31 +1,43 @@
1
1
  import { simAthenaSqlForParser, simAthenaSqlForSqlite, } from "./sim-athena-sql-rewrites.js";
2
+ import { simAthenaUnparsedStatement, simAthenaUnrewrittenUnnest, simAthenaUnwrittenStatement, } from "./sim-athena-turn-down.js";
2
3
  import { simAthenaRewriteUnnest } from "./sim-athena-unnest-rewrite.js";
3
4
  /**
4
- * One Athena statement written back out for SQLite, or nothing where it cannot
5
- * be.
5
+ * One Athena statement written back out for SQLite, or why it cannot be.
6
6
  *
7
- * A statement the Athena grammar refuses, one carrying an `UNNEST` that cannot
8
- * become a `json_each`, and one the parser cannot write back out all land the
9
- * same way. The engine has one answer to any of them, which is to turn the
10
- * query down and let the declared result take it. Nothing is reported from
11
- * here, since a query the engine cannot run is an ordinary thing for a test to
12
- * write.
7
+ * Three things stop it, and each is told apart because a strict engine fails
8
+ * the query with the reason. The Athena grammar can refuse the statement, an
9
+ * `UNNEST` in it can have no `json_each` to become, and the parser can decline
10
+ * to write the statement back out. A lenient engine answers all three the same
11
+ * way, by turning the query down and letting the declared result take it.
13
12
  */
14
13
  export function simAthenaSqliteSql(request) {
15
14
  const { parser } = request;
15
+ let read;
16
+ let ast;
17
+ try {
18
+ read = simAthenaSqlForParser(request.athenaSql);
19
+ ast = parser.astify(read.sql, { database: "athena" });
20
+ }
21
+ catch {
22
+ return turnedDown(simAthenaUnparsedStatement);
23
+ }
16
24
  try {
17
- const read = simAthenaSqlForParser(request.athenaSql);
18
- const ast = parser.astify(read.sql, { database: "athena" });
19
25
  if (!simAthenaRewriteUnnest({
20
26
  ast,
21
27
  ordinality: read.ordinality,
22
28
  tables: request.tables,
23
29
  })) {
24
- return undefined;
30
+ return turnedDown(simAthenaUnrewrittenUnnest);
25
31
  }
26
- return simAthenaSqlForSqlite(parser.sqlify(ast, { database: "sqlite" }));
32
+ return {
33
+ sql: simAthenaSqlForSqlite(parser.sqlify(ast, { database: "sqlite" })),
34
+ turnedDown: undefined,
35
+ };
27
36
  }
28
37
  catch {
29
- return undefined;
38
+ return turnedDown(simAthenaUnwrittenStatement);
30
39
  }
31
40
  }
41
+ function turnedDown(reason) {
42
+ return { sql: undefined, turnedDown: reason };
43
+ }
@@ -12,5 +12,10 @@ export type SimAthenaSqliteValue = string | number | bigint | null;
12
12
  * delimited text carries it as the word `true`, and a column holding the word
13
13
  * would otherwise compare against nothing and read back as `true` whichever
14
14
  * value it held.
15
+ *
16
+ * A `Date` is what a Parquet `TIMESTAMP`, `DATE` or `INT96` column arrives as.
17
+ * Text formats carry a timestamp as the text the object held, and this writes
18
+ * one the same way. Left as an object it would reach SQLite as quoted JSON, and
19
+ * every comparison against it would answer false while the query succeeded.
15
20
  */
16
21
  export declare function simAthenaSqliteValue(value: unknown, glueType: string | undefined): SimAthenaSqliteValue;
@@ -1,4 +1,19 @@
1
- import { simAthenaIsBooleanType } from "./sim-athena-column-types.js";
1
+ import { simAthenaIsBooleanType, simAthenaIsDateType, } from "./sim-athena-column-types.js";
2
+ /**
3
+ * One instant, as the text a column of its Glue type reads.
4
+ *
5
+ * Athena renders a `date` column as a day and a `timestamp` column as a day and
6
+ * a time, and the Glue column type is the only thing that says which this is.
7
+ */
8
+ function simAthenaTimestampText(value, glueType) {
9
+ const iso = value.toISOString();
10
+ return simAthenaIsDateType(glueType)
11
+ ? iso.slice(0, 10)
12
+ : iso
13
+ .slice(0, 23)
14
+ .replace("T", " ")
15
+ .replace(/\.000$/u, "");
16
+ }
2
17
  /** How delimited text writes a boolean, which JSON writes as a keyword. */
3
18
  const booleanText = new Map([
4
19
  ["true", 1],
@@ -18,6 +33,11 @@ const booleanText = new Map([
18
33
  * delimited text carries it as the word `true`, and a column holding the word
19
34
  * would otherwise compare against nothing and read back as `true` whichever
20
35
  * value it held.
36
+ *
37
+ * A `Date` is what a Parquet `TIMESTAMP`, `DATE` or `INT96` column arrives as.
38
+ * Text formats carry a timestamp as the text the object held, and this writes
39
+ * one the same way. Left as an object it would reach SQLite as quoted JSON, and
40
+ * every comparison against it would answer false while the query succeeded.
21
41
  */
22
42
  export function simAthenaSqliteValue(value, glueType) {
23
43
  if (value === undefined || value === null) {
@@ -34,5 +54,8 @@ export function simAthenaSqliteValue(value, glueType) {
34
54
  if (typeof value === "number") {
35
55
  return Number.isFinite(value) ? value : null;
36
56
  }
57
+ if (value instanceof Date) {
58
+ return simAthenaTimestampText(value, glueType);
59
+ }
37
60
  return typeof value === "bigint" ? value : JSON.stringify(value);
38
61
  }
@@ -26,5 +26,10 @@ export interface SimAthenaTableObjects extends SimAthenaScannedObjects {
26
26
  * there because nothing holds the data it would answer from.
27
27
  */
28
28
  export declare function simAthenaTableObjects(s3: Partial<SimAthenaTableObjects> | undefined): SimAthenaTableObjects | undefined;
29
- /** One object's bytes, decompressed by its key and read as UTF-8 text. */
30
- export declare function simAthenaObjectText(objects: SimAthenaTableObjects, bucket: string, key: string, caller: SimAwsCaller | undefined): Promise<string>;
29
+ /**
30
+ * One object's bytes, decompressed by the codec its key names.
31
+ *
32
+ * Decoding is left to the reader the table's SerDe picks, because a Parquet
33
+ * object holds no text to decode.
34
+ */
35
+ export declare function simAthenaObjectBytes(objects: SimAthenaTableObjects, bucket: string, key: string, caller: SimAwsCaller | undefined): Promise<Uint8Array>;
@@ -10,10 +10,14 @@ export function simAthenaTableObjects(s3) {
10
10
  ? undefined
11
11
  : s3;
12
12
  }
13
- /** One object's bytes, decompressed by its key and read as UTF-8 text. */
14
- export async function simAthenaObjectText(objects, bucket, key, caller) {
13
+ /**
14
+ * One object's bytes, decompressed by the codec its key names.
15
+ *
16
+ * Decoding is left to the reader the table's SerDe picks, because a Parquet
17
+ * object holds no text to decode.
18
+ */
19
+ export async function simAthenaObjectBytes(objects, bucket, key, caller) {
15
20
  const got = await objects.getObject({ input: { Bucket: bucket, Key: key } }, caller === undefined ? undefined : { caller });
16
21
  const chunks = await Array.fromAsync(got.Body ?? []);
17
- const bytes = simAthenaDecompressedBytes(key, Buffer.concat(chunks));
18
- return new TextDecoder().decode(bytes);
22
+ return simAthenaDecompressedBytes(key, Buffer.concat(chunks));
19
23
  }
@@ -1,7 +1,7 @@
1
1
  import { simAthenaHivePartitionValues } from "./sim-athena-hive-partitions.js";
2
2
  import { simAthenaPartitionedObjects, } from "./sim-athena-partitioned-objects.js";
3
3
  import { simAthenaRecordReader, } from "./sim-athena-record-reader.js";
4
- import { simAthenaObjectText, } from "./sim-athena-table-objects.js";
4
+ import { simAthenaObjectBytes, } from "./sim-athena-table-objects.js";
5
5
  /**
6
6
  * Every row one table holds for this query, or nothing where the engine has no
7
7
  * reader for what the table declares.
@@ -29,10 +29,11 @@ export async function simAthenaTableRows(request) {
29
29
  * A field the record itself carries wins over both.
30
30
  */
31
31
  async function objectRows(request, reader, one) {
32
- const text = await simAthenaObjectText(request.objects, one.object.bucket, one.object.key, request.caller);
32
+ const bytes = await simAthenaObjectBytes(request.objects, one.object.bucket, one.object.key, request.caller);
33
33
  const partition = {
34
34
  ...simAthenaHivePartitionValues(one.object.key),
35
35
  ...Object.fromEntries(one.values),
36
36
  };
37
- return reader(text).map((row) => ({ ...partition, ...row }));
37
+ const rows = await reader(bytes);
38
+ return rows.map((row) => ({ ...partition, ...row }));
38
39
  }
@@ -0,0 +1,26 @@
1
+ import type { SimAthenaCatalogTable } from "../table/sim-athena-catalog-table.js";
2
+ /** Nothing in scope holds the objects a query would read. */
3
+ export declare const simAthenaNoObjects = "The simulated Athena query engine has no simulated S3 to read this query's objects from.";
4
+ /**
5
+ * The Athena grammar would not parse the statement.
6
+ *
7
+ * Nothing has reached SQLite at this point. A statement SQLite refuses to run
8
+ * is its own case, and it carries SQLite's own message out.
9
+ */
10
+ export declare const simAthenaUnparsedStatement = "The simulated Athena query engine cannot read this statement. The Athena grammar refused it.";
11
+ /** The statement's `UNNEST` has no `json_each` to become. */
12
+ export declare const simAthenaUnrewrittenUnnest = "The simulated Athena query engine cannot rewrite this statement's UNNEST onto SQLite's json_each.";
13
+ /** The parsed statement would not come back out as SQLite's dialect. */
14
+ export declare const simAthenaUnwrittenStatement = "The simulated Athena query engine cannot write this statement back out for SQLite.";
15
+ /** Whatever went wrong while the tables were loaded or the statement ran. */
16
+ export declare function simAthenaRunFailure(error: unknown): string;
17
+ /**
18
+ * One table the engine has no reader for.
19
+ *
20
+ * The SerDe is what decides, so the SerDe is what the reason names. A table
21
+ * carrying none is its own case, because there is nothing to name and nothing
22
+ * else in the catalog says what its objects hold.
23
+ */
24
+ export declare function simAthenaUnreadableFormat(table: SimAthenaCatalogTable): string;
25
+ /** One turn-down, as the reason a strict engine fails the query with. */
26
+ export declare function simAthenaStrictRefusal(turnedDown: string): string;
@@ -0,0 +1,43 @@
1
+ /** How every reason opens, so a test can match one without matching all of it. */
2
+ const engine = "The simulated Athena query engine";
3
+ /** What a strict engine tells a test to do about the query it failed. */
4
+ const alternatives = `Declare what this query answers with through results(), or leave strict ` +
5
+ `mode off to fall back to a declaration.`;
6
+ /** Nothing in scope holds the objects a query would read. */
7
+ export const simAthenaNoObjects = `${engine} has no simulated S3 to read this query's objects from.`;
8
+ /**
9
+ * The Athena grammar would not parse the statement.
10
+ *
11
+ * Nothing has reached SQLite at this point. A statement SQLite refuses to run
12
+ * is its own case, and it carries SQLite's own message out.
13
+ */
14
+ export const simAthenaUnparsedStatement = `${engine} cannot read this statement. The Athena grammar refused it.`;
15
+ /** The statement's `UNNEST` has no `json_each` to become. */
16
+ export const simAthenaUnrewrittenUnnest = `${engine} cannot rewrite this statement's UNNEST onto SQLite's json_each.`;
17
+ /** The parsed statement would not come back out as SQLite's dialect. */
18
+ export const simAthenaUnwrittenStatement = `${engine} cannot write this statement back out for SQLite.`;
19
+ /** Whatever went wrong while the tables were loaded or the statement ran. */
20
+ export function simAthenaRunFailure(error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ return `${engine} could not answer this statement. ${message}`;
23
+ }
24
+ /**
25
+ * One table the engine has no reader for.
26
+ *
27
+ * The SerDe is what decides, so the SerDe is what the reason names. A table
28
+ * carrying none is its own case, because there is nothing to name and nothing
29
+ * else in the catalog says what its objects hold.
30
+ */
31
+ export function simAthenaUnreadableFormat(table) {
32
+ const name = `${table.databaseName}.${table.name}`;
33
+ const serDe = table.storageDescriptor?.SerdeInfo?.SerializationLibrary;
34
+ if (serDe === undefined) {
35
+ return (`Table ${name} declares no SerDe, and ${engine.toLowerCase()} has ` +
36
+ `nothing to say what its objects hold.`);
37
+ }
38
+ return `${engine} has no reader for ${serDe}, which table ${name} declares.`;
39
+ }
40
+ /** One turn-down, as the reason a strict engine fails the query with. */
41
+ export function simAthenaStrictRefusal(turnedDown) {
42
+ return `${turnedDown} ${alternatives}`;
43
+ }
@@ -14,7 +14,9 @@ interface SimAthenaQueryCompletionRequest {
14
14
  * only a query that got past all three goes on to be answered and written.
15
15
  *
16
16
  * A write that fails leaves the execution `FAILED` rather than raising at a
17
- * caller who was answered long ago and has gone away to poll.
17
+ * caller who was answered long ago and has gone away to poll. A strict engine
18
+ * turning the query down fails it the same way, and the reason names what the
19
+ * engine could not do.
18
20
  */
19
21
  export declare function simAthenaCompleteQuery(request: SimAthenaQueryCompletionRequest): Promise<void>;
20
22
  export {};
@@ -9,7 +9,9 @@ import { simAthenaWriteFailureReason } from "./sim-athena-write-failure.js";
9
9
  * only a query that got past all three goes on to be answered and written.
10
10
  *
11
11
  * A write that fails leaves the execution `FAILED` rather than raising at a
12
- * caller who was answered long ago and has gone away to poll.
12
+ * caller who was answered long ago and has gone away to poll. A strict engine
13
+ * turning the query down fails it the same way, and the reason names what the
14
+ * engine could not do.
13
15
  */
14
16
  export async function simAthenaCompleteQuery(request) {
15
17
  const { execution, caller, runner } = request;
@@ -42,6 +44,10 @@ export async function simAthenaCompleteQuery(request) {
42
44
  caller,
43
45
  startedAt: execution.submittedAt,
44
46
  });
47
+ if (answer.refusal !== undefined) {
48
+ execution.fail(answer.refusal, runner.background.now());
49
+ return;
50
+ }
45
51
  try {
46
52
  await runner.writer.write(execution, answer.result, caller);
47
53
  }
@@ -9,7 +9,7 @@ export { SimAthenaResultConfiguration, type SimAthenaResultAcl, type SimAthenaRe
9
9
  export { SimAthenaWorkGroupStore } from "./workgroup/sim-athena-work-group-store.js";
10
10
  export { SimAthenaNamedQuery } from "./named-query/sim-athena-named-query.js";
11
11
  export { SimAthenaQueryExecution } from "./execution/sim-athena-query-execution.js";
12
- export { SimAthenaQueryEngine } from "./engine/sim-athena-query-engine.js";
12
+ export { SimAthenaQueryEngine, type SimAthenaEngineOptions, } from "./engine/sim-athena-query-engine.js";
13
13
  export type { SimAthenaAnswerSource, SimAthenaQueryAnswer, } from "./result/sim-athena-query-answer.js";
14
14
  export type { SimAthenaCatalogColumn, SimAthenaCatalogSerDe, SimAthenaCatalogStorage, SimAthenaCatalogTable, } from "./table/sim-athena-catalog-table.js";
15
15
  export { SimAthenaQueryExecutionStore } from "./execution/sim-athena-query-execution-store.js";
@@ -7,7 +7,7 @@ export { SimAthenaResultConfiguration, } from "./workgroup/sim-athena-result-con
7
7
  export { SimAthenaWorkGroupStore } from "./workgroup/sim-athena-work-group-store.js";
8
8
  export { SimAthenaNamedQuery } from "./named-query/sim-athena-named-query.js";
9
9
  export { SimAthenaQueryExecution } from "./execution/sim-athena-query-execution.js";
10
- export { SimAthenaQueryEngine } from "./engine/sim-athena-query-engine.js";
10
+ export { SimAthenaQueryEngine, } from "./engine/sim-athena-query-engine.js";
11
11
  export { SimAthenaQueryExecutionStore } from "./execution/sim-athena-query-execution-store.js";
12
12
  export { isSettledQueryState, } from "./execution/sim-athena-query-state.js";
13
13
  export { SimAthenaOutputLocation } from "./execution/sim-athena-output-location.js";
@@ -10,6 +10,14 @@ export type SimAthenaAnswerSource = "engine" | "declaration";
10
10
  export interface SimAthenaQueryAnswer {
11
11
  readonly result: SimAthenaResolvedResult;
12
12
  readonly source: SimAthenaAnswerSource;
13
+ /**
14
+ * Why the query fails rather than answering, where a strict engine turned it
15
+ * down.
16
+ *
17
+ * The declared result is still carried alongside, because it is what the
18
+ * query would have answered with had the engine not been strict.
19
+ */
20
+ readonly refusal: string | undefined;
13
21
  }
14
22
  interface SimAthenaQueryAnswerRequest {
15
23
  readonly queryString: string;
@@ -36,6 +44,10 @@ interface SimAthenaQueryAnswerRequest {
36
44
  * declarations again, where a workgroup rule or the default answers it. Every
37
45
  * test written before the engine existed therefore keeps working, whether or
38
46
  * not the engine is on.
47
+ *
48
+ * A strict engine is the exception, and it fails the query it turned down.
49
+ * The declaration keeps its place ahead of that, since a test writing one
50
+ * against this exact statement has already said what the engine gets wrong.
39
51
  */
40
52
  export declare function simAthenaQueryAnswer(request: SimAthenaQueryAnswerRequest): Promise<SimAthenaQueryAnswer>;
41
53
  export {};
@@ -1,3 +1,4 @@
1
+ import { simAthenaStrictRefusal } from "../engine/sim-athena-turn-down.js";
1
2
  /**
2
3
  * What one query answers with, from the engine or from a declaration.
3
4
  *
@@ -10,11 +11,15 @@
10
11
  * declarations again, where a workgroup rule or the default answers it. Every
11
12
  * test written before the engine existed therefore keeps working, whether or
12
13
  * not the engine is on.
14
+ *
15
+ * A strict engine is the exception, and it fails the query it turned down.
16
+ * The declaration keeps its place ahead of that, since a test writing one
17
+ * against this exact statement has already said what the engine gets wrong.
13
18
  */
14
19
  export async function simAthenaQueryAnswer(request) {
15
20
  const forQuery = request.results.declaredForQuery(request.queryString);
16
21
  if (forQuery !== undefined) {
17
- return { result: forQuery, source: "declaration" };
22
+ return { result: forQuery, source: "declaration", refusal: undefined };
18
23
  }
19
24
  const computed = await request.engine.run({
20
25
  queryString: request.queryString,
@@ -24,7 +29,24 @@ export async function simAthenaQueryAnswer(request) {
24
29
  caller: request.caller,
25
30
  startedAt: request.startedAt,
26
31
  });
27
- return computed === undefined
28
- ? { result: request.declared, source: "declaration" }
29
- : { result: computed, source: "engine" };
32
+ if (computed.result !== undefined) {
33
+ return { result: computed.result, source: "engine", refusal: undefined };
34
+ }
35
+ return {
36
+ result: request.declared,
37
+ source: "declaration",
38
+ refusal: strictRefusal(request.engine, computed.turnedDown),
39
+ };
40
+ }
41
+ /**
42
+ * Why a query fails, where a strict engine is what turned it down.
43
+ *
44
+ * An engine nobody turned on turns nothing down, and a lenient one turns a
45
+ * query down without failing it. Both answer from the declaration.
46
+ */
47
+ function strictRefusal(engine, turnedDown) {
48
+ if (turnedDown === undefined || !engine.isStrict) {
49
+ return undefined;
50
+ }
51
+ return simAthenaStrictRefusal(turnedDown);
30
52
  }
@@ -4,6 +4,8 @@ import type { SimAthenaEngineSimulation } from "./sim-athena-engine.fixture.js";
4
4
  export interface SimAthenaEngineQuery {
5
5
  readonly state: string | undefined;
6
6
  readonly answeredBy: SimAthenaAnswerSource | undefined;
7
+ /** Why a failed query failed, which a refusal is what a test reads. */
8
+ readonly reason: string | undefined;
7
9
  readonly columns: readonly (string | undefined)[];
8
10
  readonly rows: readonly (readonly (string | undefined)[])[];
9
11
  }
@@ -18,6 +18,7 @@ export async function anAnsweredQuery(simulation, queryString, database) {
18
18
  const answered = {
19
19
  state: execution?.state,
20
20
  answeredBy: execution?.answeredBy,
21
+ reason: execution?.stateChangeReason,
21
22
  };
22
23
  if (execution?.state !== "SUCCEEDED") {
23
24
  return { ...answered, columns: [], rows: [] };
@@ -1,3 +1,5 @@
1
+ import { type BasicType } from "hyparquet-writer";
2
+ import type { CompressionCodec } from "hyparquet";
1
3
  import type { SimClock } from "../../util/clock/sim-clock.js";
2
4
  import type { SimGlueColumn } from "../glue/table/sim-glue-table-schema.js";
3
5
  import { SimAws } from "../aws/sim-aws.js";
@@ -5,6 +7,10 @@ import { SimAws } from "../aws/sim-aws.js";
5
7
  export declare const jsonSerDe = "org.openx.data.jsonserde.JsonSerDe";
6
8
  /** The SerDe class name a quoted CSV table declares. */
7
9
  export declare const csvSerDe = "org.apache.hadoop.hive.serde2.OpenCSVSerde";
10
+ /** The SerDe class name a Parquet table declares. */
11
+ export declare const parquetSerDe = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
12
+ /** The SerDe class name an ORC table declares, which nothing here reads. */
13
+ export declare const orcSerDe = "org.apache.hadoop.hive.ql.io.orc.OrcSerde";
8
14
  /** Where every table in these fixtures keeps its data. */
9
15
  export declare const logsBucket = "rainlytics-logs";
10
16
  /** A simulation holding both Buckets, a workgroup and a catalog database. */
@@ -38,3 +44,17 @@ export declare function aSeededObject(simAws: SimAws, key: string, body: string)
38
44
  export declare function aSeededBytes(simAws: SimAws, key: string, body: Uint8Array): Promise<void>;
39
45
  /** Put one object of JSON lines under the logs Bucket. */
40
46
  export declare function aSeededJson(simAws: SimAws, key: string, records: readonly Record<string, unknown>[]): Promise<void>;
47
+ /** One column of a Parquet fixture, with the values it holds. */
48
+ export interface SimAthenaParquetColumn {
49
+ readonly name: string;
50
+ readonly data: readonly unknown[];
51
+ readonly type?: BasicType;
52
+ }
53
+ /**
54
+ * Put one Parquet object under the logs Bucket.
55
+ *
56
+ * `hyparquet-writer` is a development dependency of this repository alone. A
57
+ * project testing against a Parquet table brings its own file, or writes one
58
+ * however its production pipeline does.
59
+ */
60
+ export declare function aSeededParquet(simAws: SimAws, key: string, columns: readonly SimAthenaParquetColumn[], codec?: CompressionCodec): Promise<void>;
@@ -1,9 +1,15 @@
1
1
  import { faker } from "@faker-js/faker";
2
+ import { brotliCompressSync, deflateSync, gzipSync, zstdCompressSync, } from "node:zlib";
3
+ import { parquetWriteBuffer, } from "hyparquet-writer";
2
4
  import { SimAws } from "../aws/sim-aws.js";
3
5
  /** The SerDe class name a JSON lines table declares. */
4
6
  export const jsonSerDe = "org.openx.data.jsonserde.JsonSerDe";
5
7
  /** The SerDe class name a quoted CSV table declares. */
6
8
  export const csvSerDe = "org.apache.hadoop.hive.serde2.OpenCSVSerde";
9
+ /** The SerDe class name a Parquet table declares. */
10
+ export const parquetSerDe = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
11
+ /** The SerDe class name an ORC table declares, which nothing here reads. */
12
+ export const orcSerDe = "org.apache.hadoop.hive.ql.io.orc.OrcSerde";
7
13
  /** Where every table in these fixtures keeps its data. */
8
14
  export const logsBucket = "rainlytics-logs";
9
15
  /**
@@ -69,3 +75,31 @@ export async function aSeededJson(simAws, key, records) {
69
75
  const lines = records.map((record) => JSON.stringify(record));
70
76
  await aSeededObject(simAws, key, `${lines.join("\n")}\n`);
71
77
  }
78
+ /**
79
+ * What the writer compresses a page with, for the codecs it has not got.
80
+ *
81
+ * `hyparquet-writer` compresses snappy alone. These are what let a fixture
82
+ * produce a file in the codecs the reader takes from `node:zlib`, so those
83
+ * paths are exercised by a real file rather than by a label.
84
+ */
85
+ const writeCompressors = {
86
+ GZIP: (bytes) => new Uint8Array(gzipSync(bytes)),
87
+ ZSTD: (bytes) => new Uint8Array(zstdCompressSync(bytes)),
88
+ BROTLI: (bytes) => new Uint8Array(brotliCompressSync(bytes)),
89
+ DEFLATE: (bytes) => new Uint8Array(deflateSync(bytes)),
90
+ };
91
+ /**
92
+ * Put one Parquet object under the logs Bucket.
93
+ *
94
+ * `hyparquet-writer` is a development dependency of this repository alone. A
95
+ * project testing against a Parquet table brings its own file, or writes one
96
+ * however its production pipeline does.
97
+ */
98
+ export async function aSeededParquet(simAws, key, columns, codec = "SNAPPY") {
99
+ const buffer = parquetWriteBuffer({
100
+ codec,
101
+ compressors: writeCompressors,
102
+ columnData: columns,
103
+ });
104
+ await aSeededBytes(simAws, key, new Uint8Array(buffer));
105
+ }