@kensio/yulin 1.20.13 → 1.20.14

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 (535) hide show
  1. package/dist/service/acm/cfn/certificate/sim-cfn-acm-cert-creator.js +6 -4
  2. package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.d.ts +2 -2
  3. package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.js +3 -4
  4. package/dist/service/acm/cfn/validation/sim-cfn-acm-cert-validation.d.ts +2 -1
  5. package/dist/service/acm/cfn/validation/sim-cfn-acm-cert-validation.js +2 -2
  6. package/dist/service/acm/cfn/validation/sim-cfn-acm-validation-records.d.ts +2 -1
  7. package/dist/service/acm/cfn/validation/sim-cfn-acm-validation-records.js +4 -4
  8. package/dist/service/acm/sim-acm.d.ts +1 -1
  9. package/dist/service/acm/sim-acm.js +3 -2
  10. package/dist/service/apigateway/cfn/api/sim-cfn-rest-api-creator.d.ts +2 -1
  11. package/dist/service/apigateway/cfn/api/sim-cfn-rest-api-creator.js +11 -13
  12. package/dist/service/apigateway/cfn/authorizer/sim-cfn-rest-api-authorizer-creator.d.ts +2 -1
  13. package/dist/service/apigateway/cfn/authorizer/sim-cfn-rest-api-authorizer-creator.js +2 -4
  14. package/dist/service/apigateway/cfn/deployment/sim-cfn-rest-api-deployment-creator.d.ts +2 -1
  15. package/dist/service/apigateway/cfn/deployment/sim-cfn-rest-api-deployment-creator.js +2 -4
  16. package/dist/service/apigateway/cfn/method/sim-cfn-rest-api-method-creator.d.ts +2 -1
  17. package/dist/service/apigateway/cfn/method/sim-cfn-rest-api-method-creator.js +3 -5
  18. package/dist/service/apigateway/cfn/method/sim-cfn-rest-api-method-integration.d.ts +2 -1
  19. package/dist/service/apigateway/cfn/method/sim-cfn-rest-api-method-integration.js +3 -3
  20. package/dist/service/apigateway/cfn/resource/sim-cfn-rest-api-resource-creator.d.ts +2 -1
  21. package/dist/service/apigateway/cfn/resource/sim-cfn-rest-api-resource-creator.js +2 -4
  22. package/dist/service/apigateway/cfn/sim-cfn-api-gateway-resource-deleter.d.ts +2 -1
  23. package/dist/service/apigateway/cfn/sim-cfn-api-gateway-resource-deleter.js +3 -5
  24. package/dist/service/apigateway/cfn/sim-cfn-api-gateway-resource-factory.js +9 -7
  25. package/dist/service/apigateway/cfn/sim-cfn-rest-api-part-deleter.d.ts +2 -7
  26. package/dist/service/apigateway/cfn/sim-cfn-rest-api-part-deleter.js +12 -42
  27. package/dist/service/apigateway/cfn/sim-cfn-rest-api-part-values.d.ts +10 -0
  28. package/dist/service/apigateway/cfn/sim-cfn-rest-api-part-values.js +21 -0
  29. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-creator.d.ts +2 -1
  30. package/dist/service/apigateway/cfn/stage/sim-cfn-rest-api-stage-creator.js +2 -4
  31. package/dist/service/apigateway/serve/sim-api-gateway-router.js +5 -2
  32. package/dist/service/apigateway/sim-api-gateway-commands.d.ts +1 -1
  33. package/dist/service/apigateway/sim-api-gateway-commands.js +3 -2
  34. package/dist/service/apigatewayv2/cfn/api/sim-cfn-http-api-creator.d.ts +2 -1
  35. package/dist/service/apigatewayv2/cfn/api/sim-cfn-http-api-creator.js +5 -9
  36. package/dist/service/apigatewayv2/cfn/authorizer/sim-cfn-http-api-authorizer-creator.d.ts +2 -1
  37. package/dist/service/apigatewayv2/cfn/authorizer/sim-cfn-http-api-authorizer-creator.js +2 -4
  38. package/dist/service/apigatewayv2/cfn/domain/sim-cfn-api-mapping-creator.d.ts +2 -1
  39. package/dist/service/apigatewayv2/cfn/domain/sim-cfn-api-mapping-creator.js +2 -4
  40. package/dist/service/apigatewayv2/cfn/domain/sim-cfn-http-api-domain-creator.d.ts +2 -1
  41. package/dist/service/apigatewayv2/cfn/domain/sim-cfn-http-api-domain-creator.js +2 -4
  42. package/dist/service/apigatewayv2/cfn/integration/sim-cfn-http-api-integration-creator.d.ts +2 -1
  43. package/dist/service/apigatewayv2/cfn/integration/sim-cfn-http-api-integration-creator.js +2 -4
  44. package/dist/service/apigatewayv2/cfn/route/sim-cfn-http-api-route-creator.d.ts +2 -1
  45. package/dist/service/apigatewayv2/cfn/route/sim-cfn-http-api-route-creator.js +2 -4
  46. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-resource-deleter.d.ts +2 -9
  47. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-resource-deleter.js +19 -25
  48. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-resource-factory.d.ts +0 -5
  49. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-resource-factory.js +13 -29
  50. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-unsupported.d.ts +5 -0
  51. package/dist/service/apigatewayv2/cfn/sim-cfn-api-gateway-v2-unsupported.js +19 -0
  52. package/dist/service/apigatewayv2/cfn/sim-cfn-http-api-part-deleter.d.ts +2 -1
  53. package/dist/service/apigatewayv2/cfn/sim-cfn-http-api-part-deleter.js +5 -13
  54. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-creator.d.ts +2 -1
  55. package/dist/service/apigatewayv2/cfn/stage/sim-cfn-http-api-stage-creator.js +2 -4
  56. package/dist/service/apigatewayv2/serve/sim-api-gateway-v2-router.js +5 -2
  57. package/dist/service/apigatewayv2/sim-api-gateway-v2-commands.d.ts +1 -1
  58. package/dist/service/apigatewayv2/sim-api-gateway-v2-commands.js +3 -2
  59. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.d.ts +3 -2
  60. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.js +4 -6
  61. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.d.ts +2 -2
  62. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.js +7 -6
  63. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.d.ts +3 -2
  64. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.js +7 -11
  65. package/dist/service/athena/engine/sim-athena-aggregate-shims.d.ts +10 -5
  66. package/dist/service/athena/engine/sim-athena-aggregate-shims.js +19 -16
  67. package/dist/service/athena/engine/sim-athena-binary-shims.d.ts +16 -0
  68. package/dist/service/athena/engine/sim-athena-binary-shims.js +49 -0
  69. package/dist/service/athena/engine/sim-athena-binary-text.d.ts +21 -0
  70. package/dist/service/athena/engine/sim-athena-binary-text.js +87 -0
  71. package/dist/service/athena/engine/sim-athena-count-distinct.d.ts +15 -0
  72. package/dist/service/athena/engine/sim-athena-count-distinct.js +103 -0
  73. package/dist/service/athena/engine/sim-athena-distinct-values.d.ts +19 -0
  74. package/dist/service/athena/engine/sim-athena-distinct-values.js +37 -0
  75. package/dist/service/athena/engine/sim-athena-hash-words.d.ts +14 -0
  76. package/dist/service/athena/engine/sim-athena-hash-words.js +22 -0
  77. package/dist/service/athena/engine/sim-athena-murmur3-mixing.d.ts +15 -0
  78. package/dist/service/athena/engine/sim-athena-murmur3-mixing.js +37 -0
  79. package/dist/service/athena/engine/sim-athena-murmur3.d.ts +11 -0
  80. package/dist/service/athena/engine/sim-athena-murmur3.js +51 -0
  81. package/dist/service/athena/engine/sim-athena-shim-registry.d.ts +9 -0
  82. package/dist/service/athena/engine/sim-athena-shim-registry.js +30 -1
  83. package/dist/service/athena/engine/sim-athena-shims.js +2 -0
  84. package/dist/service/athena/engine/sim-athena-sql-rewrites.d.ts +4 -2
  85. package/dist/service/athena/engine/sim-athena-sql-rewrites.js +6 -3
  86. package/dist/service/athena/engine/sim-athena-xxhash64.d.ts +8 -0
  87. package/dist/service/athena/engine/sim-athena-xxhash64.js +82 -0
  88. package/dist/service/athena/sim-athena-executions.d.ts +1 -1
  89. package/dist/service/athena/sim-athena-executions.js +3 -2
  90. package/dist/service/bedrock/sim-bedrock.d.ts +1 -1
  91. package/dist/service/bedrock/sim-bedrock.js +3 -2
  92. package/dist/service/cloudformation/cdk/assets/sim-cdk-assets-publisher.d.ts +8 -0
  93. package/dist/service/cloudformation/cdk/assets/sim-cdk-assets-publisher.js +6 -4
  94. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  95. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  96. package/dist/service/cloudformation/command/update-stack/update-stack.handler.d.ts +7 -0
  97. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +3 -1
  98. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  99. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +9 -2
  100. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  101. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +10 -3
  102. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.js +4 -7
  103. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +10 -0
  104. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +4 -2
  105. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +11 -0
  106. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  107. package/dist/service/cloudformation/deploy/sim-cfn-template-file-updater.js +1 -0
  108. package/dist/service/cloudformation/resource/caller/sim-cfn-resource-caller-options.d.ts +16 -0
  109. package/dist/service/cloudformation/resource/caller/sim-cfn-resource-caller-options.js +6 -0
  110. package/dist/service/cloudformation/resource/cfn/scheduler/sim-scheduler-cfn-value-adapter.js +50 -0
  111. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +12 -0
  112. package/dist/service/cloudformation/sim-cloudformation.d.ts +1 -1
  113. package/dist/service/cloudformation/sim-cloudformation.js +3 -2
  114. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +3 -0
  115. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +4 -1
  116. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  117. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  118. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +17 -2
  119. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +15 -4
  120. package/dist/service/cloudformation/stack/sim-cfn-stack.js +5 -5
  121. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +12 -0
  122. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  123. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  124. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +2 -0
  125. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  126. package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.d.ts +5 -0
  127. package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.js +10 -3
  128. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +2 -1
  129. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-deleter.d.ts +2 -1
  130. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-deleter.js +5 -7
  131. package/dist/service/cloudfront/cfn/key-value-store/sim-cfn-cf-kvs-creator.d.ts +3 -2
  132. package/dist/service/cloudfront/cfn/key-value-store/sim-cfn-cf-kvs-creator.js +6 -6
  133. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -4
  134. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +7 -15
  135. package/dist/service/cloudfront/edge/sim-aws-cf-edge-functions.js +3 -2
  136. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +1 -1
  137. package/dist/service/cloudfront/sim-cloudfront-commands.js +5 -2
  138. package/dist/service/cloudwatch/cfn/alarm/sim-cfn-alarm-creator.d.ts +3 -2
  139. package/dist/service/cloudwatch/cfn/alarm/sim-cfn-alarm-creator.js +4 -6
  140. package/dist/service/cloudwatch/cfn/sim-cloudwatch-cfn-resource-factory.d.ts +2 -2
  141. package/dist/service/cloudwatch/cfn/sim-cloudwatch-cfn-resource-factory.js +4 -3
  142. package/dist/service/cloudwatch/sim-cloudwatch-commands.d.ts +1 -1
  143. package/dist/service/cloudwatch/sim-cloudwatch-commands.js +3 -2
  144. package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-creator.d.ts +2 -1
  145. package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-creator.js +2 -4
  146. package/dist/service/cognito/cfn/domain/sim-cfn-cognito-domain-creator.d.ts +2 -1
  147. package/dist/service/cognito/cfn/domain/sim-cfn-cognito-domain-creator.js +2 -4
  148. package/dist/service/cognito/cfn/group/sim-cfn-cognito-group-creator.d.ts +2 -1
  149. package/dist/service/cognito/cfn/group/sim-cfn-cognito-group-creator.js +2 -4
  150. package/dist/service/cognito/cfn/idp/sim-cfn-cognito-idp-creator.d.ts +2 -1
  151. package/dist/service/cognito/cfn/idp/sim-cfn-cognito-idp-creator.js +2 -4
  152. package/dist/service/cognito/cfn/sim-cfn-cognito-resource-deleter.d.ts +2 -1
  153. package/dist/service/cognito/cfn/sim-cfn-cognito-resource-deleter.js +18 -24
  154. package/dist/service/cognito/cfn/sim-cfn-cognito-resource-factory.d.ts +2 -2
  155. package/dist/service/cognito/cfn/sim-cfn-cognito-resource-factory.js +9 -7
  156. package/dist/service/cognito/cfn/user-pool/sim-cfn-cognito-user-pool-creator.d.ts +2 -1
  157. package/dist/service/cognito/cfn/user-pool/sim-cfn-cognito-user-pool-creator.js +5 -7
  158. package/dist/service/cognito/sim-cognito-identity-provider.d.ts +1 -1
  159. package/dist/service/cognito/sim-cognito-identity-provider.js +3 -2
  160. package/dist/service/cognito/user-pool/trigger/sim-aws-cognito-trigger-functions.js +2 -1
  161. package/dist/service/dynamodb/cfn/global-table/sim-cfn-dynamodb-global-table-creator.d.ts +2 -1
  162. package/dist/service/dynamodb/cfn/global-table/sim-cfn-dynamodb-global-table-creator.js +2 -2
  163. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-deleter.d.ts +2 -1
  164. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-deleter.js +2 -4
  165. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +2 -2
  166. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +6 -4
  167. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.d.ts +2 -1
  168. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js +5 -7
  169. package/dist/service/dynamodb/sim-dynamodb.js +3 -2
  170. package/dist/service/ecs/cfn/cluster/sim-cfn-ecs-cluster-creator.d.ts +3 -2
  171. package/dist/service/ecs/cfn/cluster/sim-cfn-ecs-cluster-creator.js +4 -6
  172. package/dist/service/ecs/cfn/service/sim-cfn-ecs-service-creator.d.ts +3 -2
  173. package/dist/service/ecs/cfn/service/sim-cfn-ecs-service-creator.js +4 -4
  174. package/dist/service/ecs/cfn/sim-cfn-ecs-created-resource.d.ts +5 -0
  175. package/dist/service/ecs/cfn/sim-cfn-ecs-created-resource.js +9 -0
  176. package/dist/service/ecs/cfn/sim-ecs-cfn-resource-factory.d.ts +2 -2
  177. package/dist/service/ecs/cfn/sim-ecs-cfn-resource-factory.js +11 -16
  178. package/dist/service/ecs/cfn/task-definition/sim-cfn-ecs-task-definition-creator.d.ts +3 -2
  179. package/dist/service/ecs/cfn/task-definition/sim-cfn-ecs-task-definition-creator.js +4 -6
  180. package/dist/service/ecs/sim-ecs-commands.js +3 -2
  181. package/dist/service/ecs/task/run/sim-ecs-container-environment.d.ts +12 -10
  182. package/dist/service/ecs/task/run/sim-ecs-container-environment.js +16 -18
  183. package/dist/service/elbv2/cfn/listener/sim-cfn-elbv2-listener-creator.d.ts +3 -2
  184. package/dist/service/elbv2/cfn/listener/sim-cfn-elbv2-listener-creator.js +4 -6
  185. package/dist/service/elbv2/cfn/load-balancer/sim-cfn-elbv2-load-balancer-creator.d.ts +3 -2
  186. package/dist/service/elbv2/cfn/load-balancer/sim-cfn-elbv2-load-balancer-creator.js +4 -6
  187. package/dist/service/elbv2/cfn/rule/sim-cfn-elbv2-listener-rule-creator.d.ts +3 -2
  188. package/dist/service/elbv2/cfn/rule/sim-cfn-elbv2-listener-rule-creator.js +4 -4
  189. package/dist/service/elbv2/cfn/sim-elbv2-cfn-resource-deleter.d.ts +2 -1
  190. package/dist/service/elbv2/cfn/sim-elbv2-cfn-resource-deleter.js +5 -5
  191. package/dist/service/elbv2/cfn/sim-elbv2-cfn-resource-factory.d.ts +2 -2
  192. package/dist/service/elbv2/cfn/sim-elbv2-cfn-resource-factory.js +8 -6
  193. package/dist/service/elbv2/cfn/target-group/sim-cfn-elbv2-target-group-creator.d.ts +3 -2
  194. package/dist/service/elbv2/cfn/target-group/sim-cfn-elbv2-target-group-creator.js +7 -11
  195. package/dist/service/elbv2/serve/sim-elbv2-router.js +2 -1
  196. package/dist/service/elbv2/sim-elbv2.js +3 -3
  197. package/dist/service/eventbridge/cfn/bus/sim-cfn-event-bus-creator.d.ts +2 -1
  198. package/dist/service/eventbridge/cfn/bus/sim-cfn-event-bus-creator.js +2 -4
  199. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-creator.d.ts +2 -1
  200. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-creator.js +5 -5
  201. package/dist/service/eventbridge/cfn/sim-cfn-event-bridge-resource-deleter.d.ts +2 -1
  202. package/dist/service/eventbridge/cfn/sim-cfn-event-bridge-resource-deleter.js +7 -7
  203. package/dist/service/eventbridge/cfn/sim-event-bridge-cfn-resource-factory.js +5 -3
  204. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-function.js +2 -1
  205. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-queue.js +2 -1
  206. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-task.js +4 -1
  207. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-topic.js +2 -1
  208. package/dist/service/eventbridge/delivery/sim-event-bridge-target-role.d.ts +8 -3
  209. package/dist/service/eventbridge/delivery/sim-event-bridge-target-role.js +9 -3
  210. package/dist/service/eventbridge/sim-event-bridge.d.ts +1 -1
  211. package/dist/service/eventbridge/sim-event-bridge.js +3 -2
  212. package/dist/service/firehose/cfn/delivery-stream/sim-cfn-firehose-delivery-stream-creator.d.ts +2 -1
  213. package/dist/service/firehose/cfn/delivery-stream/sim-cfn-firehose-delivery-stream-creator.js +2 -2
  214. package/dist/service/firehose/cfn/sim-cfn-firehose-resource-deleter.d.ts +2 -1
  215. package/dist/service/firehose/cfn/sim-cfn-firehose-resource-deleter.js +2 -4
  216. package/dist/service/firehose/cfn/sim-firehose-cfn-resource-factory.d.ts +1 -1
  217. package/dist/service/firehose/cfn/sim-firehose-cfn-resource-factory.js +4 -3
  218. package/dist/service/firehose/sim-firehose.d.ts +1 -1
  219. package/dist/service/firehose/sim-firehose.js +3 -2
  220. package/dist/service/glue/sim-glue.d.ts +1 -1
  221. package/dist/service/glue/sim-glue.js +3 -2
  222. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +15 -11
  223. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +5 -18
  224. package/dist/service/iam/authorize/context/sim-iam-derived-conditions.d.ts +42 -0
  225. package/dist/service/iam/authorize/context/sim-iam-derived-conditions.js +44 -0
  226. package/dist/service/iam/authorize/match/condition/arn/equals/sim-iam-arn-equals.js +2 -2
  227. package/dist/service/iam/authorize/match/condition/arn/like/sim-iam-arn-like.js +2 -2
  228. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-for-all-values-string-operator.d.ts +20 -0
  229. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-for-all-values-string-operator.js +27 -0
  230. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-for-any-value-string-operator.d.ts +21 -0
  231. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-for-any-value-string-operator.js +28 -0
  232. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-operator-factories.d.ts +5 -0
  233. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-operator-factories.js +36 -0
  234. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-scalar-string-operator.d.ts +20 -0
  235. package/dist/service/iam/authorize/match/condition/negated/sim-iam-negated-scalar-string-operator.js +29 -0
  236. package/dist/service/iam/authorize/match/condition/numeric/less-than-equals/sim-iam-number-lte.d.ts +1 -0
  237. package/dist/service/iam/authorize/match/condition/numeric/less-than-equals/sim-iam-number-lte.js +1 -0
  238. package/dist/service/iam/authorize/match/condition/sim-iam-condition-match.d.ts +26 -0
  239. package/dist/service/iam/authorize/match/condition/sim-iam-condition-match.js +1 -0
  240. package/dist/service/iam/authorize/match/condition/sim-iam-condition-operator-parser.js +2 -0
  241. package/dist/service/iam/authorize/match/condition/sim-iam-condition-operator.d.ts +15 -0
  242. package/dist/service/iam/authorize/match/condition/sim-iam-policy-condition-matcher.d.ts +11 -3
  243. package/dist/service/iam/authorize/match/condition/sim-iam-policy-condition-matcher.js +29 -11
  244. package/dist/service/iam/authorize/match/condition/sim-iam-string-comparison.d.ts +24 -0
  245. package/dist/service/iam/authorize/match/condition/sim-iam-string-comparison.js +17 -0
  246. package/dist/service/iam/authorize/match/condition/string/all-values/sim-iam-for-all-values-string-condition-operator.d.ts +1 -0
  247. package/dist/service/iam/authorize/match/condition/string/all-values/sim-iam-for-all-values-string-condition-operator.js +1 -0
  248. package/dist/service/iam/authorize/match/condition/string/all-values/sim-iam-for-all-values-string-equals.js +2 -1
  249. package/dist/service/iam/authorize/match/condition/string/all-values/sim-iam-for-all-values-string-like.js +2 -4
  250. package/dist/service/iam/authorize/match/condition/string/any-value/sim-iam-for-any-value-string-condition-operator.d.ts +1 -0
  251. package/dist/service/iam/authorize/match/condition/string/any-value/sim-iam-for-any-value-string-condition-operator.js +1 -0
  252. package/dist/service/iam/authorize/match/condition/string/any-value/sim-iam-for-any-value-string-equals.js +2 -1
  253. package/dist/service/iam/authorize/match/condition/string/any-value/sim-iam-for-any-value-string-like.js +2 -4
  254. package/dist/service/iam/authorize/match/condition/string/equals/sim-iam-string-equals.js +2 -1
  255. package/dist/service/iam/authorize/match/condition/string/like/sim-iam-string-like.js +2 -4
  256. package/dist/service/iam/authorize/match/condition/string/sim-iam-scalar-string-condition-operator.d.ts +1 -0
  257. package/dist/service/iam/authorize/match/condition/string/sim-iam-scalar-string-condition-operator.js +1 -0
  258. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.d.ts +18 -1
  259. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.js +32 -4
  260. package/dist/service/iam/authorize/sim-iam-decision.d.ts +12 -0
  261. package/dist/service/iam/authorize/sim-iam-decision.js +14 -0
  262. package/dist/service/iam/authorize/sim-iam-region-auth-z.d.ts +31 -0
  263. package/dist/service/iam/authorize/sim-iam-region-auth-z.js +65 -0
  264. package/dist/service/iam/authorize/unevaluated/sim-iam-unevaluated-statement.type.d.ts +31 -0
  265. package/dist/service/iam/authorize/unevaluated/sim-iam-unevaluated-statement.type.js +1 -0
  266. package/dist/service/iam/authorize/unevaluated/sim-iam-unevaluated-statements.d.ts +31 -0
  267. package/dist/service/iam/authorize/unevaluated/sim-iam-unevaluated-statements.js +43 -0
  268. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-attacher.d.ts +2 -1
  269. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-attacher.js +2 -4
  270. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.d.ts +2 -1
  271. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +3 -3
  272. package/dist/service/iam/cfn/policy/sim-cfn-iam-policy-creator.d.ts +2 -1
  273. package/dist/service/iam/cfn/policy/sim-cfn-iam-policy-creator.js +7 -7
  274. package/dist/service/iam/cfn/role/sim-cfn-iam-role-creator.d.ts +2 -1
  275. package/dist/service/iam/cfn/role/sim-cfn-iam-role-creator.js +8 -8
  276. package/dist/service/iam/cfn/role/sim-cfn-iam-role-deleter.d.ts +2 -1
  277. package/dist/service/iam/cfn/role/sim-cfn-iam-role-deleter.js +10 -12
  278. package/dist/service/iam/cfn/sim-cfn-iam-resource-deleter.d.ts +2 -1
  279. package/dist/service/iam/cfn/sim-cfn-iam-resource-deleter.js +12 -16
  280. package/dist/service/iam/cfn/sim-cfn-iam-resource-factory.js +8 -5
  281. package/dist/service/iam/cfn/user/sim-cfn-iam-user-creator.d.ts +2 -1
  282. package/dist/service/iam/cfn/user/sim-cfn-iam-user-creator.js +11 -11
  283. package/dist/service/iam/cfn/user/sim-cfn-iam-user-deleter.d.ts +4 -2
  284. package/dist/service/iam/cfn/user/sim-cfn-iam-user-deleter.js +17 -3
  285. package/dist/service/iam/command/sim-iam-command-handlers.js +6 -1
  286. package/dist/service/kinesis/cfn/sim-cfn-kinesis-resource-deleter.d.ts +2 -1
  287. package/dist/service/kinesis/cfn/sim-cfn-kinesis-resource-deleter.js +2 -2
  288. package/dist/service/kinesis/cfn/sim-kinesis-cfn-resource-factory.d.ts +1 -1
  289. package/dist/service/kinesis/cfn/sim-kinesis-cfn-resource-factory.js +4 -3
  290. package/dist/service/kinesis/cfn/stream/sim-cfn-kinesis-stream-creator.d.ts +2 -1
  291. package/dist/service/kinesis/cfn/stream/sim-cfn-kinesis-stream-creator.js +5 -7
  292. package/dist/service/kinesis/sim-kinesis.d.ts +1 -1
  293. package/dist/service/kinesis/sim-kinesis.js +3 -2
  294. package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.d.ts +2 -1
  295. package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.js +2 -2
  296. package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.d.ts +6 -6
  297. package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.js +11 -11
  298. package/dist/service/kms/cfn/sim-cfn-kms-resource-deleter.d.ts +2 -1
  299. package/dist/service/kms/cfn/sim-cfn-kms-resource-deleter.js +3 -5
  300. package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.d.ts +2 -1
  301. package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.js +6 -4
  302. package/dist/service/kms/sim-kms-commands.d.ts +1 -1
  303. package/dist/service/kms/sim-kms-commands.js +3 -2
  304. package/dist/service/lambda/cfn/alias/sim-cfn-lambda-alias-creator.d.ts +2 -1
  305. package/dist/service/lambda/cfn/alias/sim-cfn-lambda-alias-creator.js +2 -2
  306. package/dist/service/lambda/cfn/event-invoke-config/sim-cfn-lambda-event-invoke-config-creator.d.ts +2 -1
  307. package/dist/service/lambda/cfn/event-invoke-config/sim-cfn-lambda-event-invoke-config-creator.js +2 -2
  308. package/dist/service/lambda/cfn/event-invoke-config/sim-cfn-lambda-event-invoke-config-remover.d.ts +2 -1
  309. package/dist/service/lambda/cfn/event-invoke-config/sim-cfn-lambda-event-invoke-config-remover.js +2 -4
  310. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.d.ts +2 -1
  311. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.js +2 -2
  312. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-creator.d.ts +2 -1
  313. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-creator.js +3 -4
  314. package/dist/service/lambda/cfn/permission/sim-cfn-lambda-permission-creator.d.ts +2 -1
  315. package/dist/service/lambda/cfn/permission/sim-cfn-lambda-permission-creator.js +2 -2
  316. package/dist/service/lambda/cfn/permission/sim-cfn-lambda-permission-revoker.d.ts +2 -1
  317. package/dist/service/lambda/cfn/permission/sim-cfn-lambda-permission-revoker.js +2 -2
  318. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-deleter.d.ts +2 -8
  319. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-deleter.js +18 -38
  320. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.d.ts +2 -2
  321. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.js +12 -9
  322. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.d.ts +2 -1
  323. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +2 -2
  324. package/dist/service/lambda/cfn/version/sim-cfn-lambda-version-creator.d.ts +2 -1
  325. package/dist/service/lambda/cfn/version/sim-cfn-lambda-version-creator.js +2 -2
  326. package/dist/service/lambda/serve/sim-lambda-url-router.js +2 -1
  327. package/dist/service/lambda/sim-lambda-commands.d.ts +1 -1
  328. package/dist/service/lambda/sim-lambda-commands.js +3 -2
  329. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +3 -2
  330. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +4 -6
  331. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +3 -2
  332. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +4 -6
  333. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +3 -2
  334. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +4 -4
  335. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.d.ts +2 -1
  336. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +4 -4
  337. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +2 -2
  338. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +7 -5
  339. package/dist/service/logs/sim-logs-commands.d.ts +1 -1
  340. package/dist/service/logs/sim-logs-commands.js +3 -2
  341. package/dist/service/logs/subscription/lambda/sim-logs-destination-permission.js +2 -1
  342. package/dist/service/personalize/cfn/sim-cfn-personalize-dataset-creator.d.ts +3 -2
  343. package/dist/service/personalize/cfn/sim-cfn-personalize-dataset-creator.js +4 -6
  344. package/dist/service/personalize/cfn/sim-cfn-personalize-dataset-group-creator.d.ts +3 -2
  345. package/dist/service/personalize/cfn/sim-cfn-personalize-dataset-group-creator.js +4 -6
  346. package/dist/service/personalize/cfn/sim-cfn-personalize-event-tracker-creator.d.ts +3 -2
  347. package/dist/service/personalize/cfn/sim-cfn-personalize-event-tracker-creator.js +4 -6
  348. package/dist/service/personalize/cfn/sim-cfn-personalize-schema-creator.d.ts +3 -2
  349. package/dist/service/personalize/cfn/sim-cfn-personalize-schema-creator.js +4 -4
  350. package/dist/service/personalize/cfn/sim-cfn-personalize-solution-creator.d.ts +3 -2
  351. package/dist/service/personalize/cfn/sim-cfn-personalize-solution-creator.js +4 -6
  352. package/dist/service/personalize/cfn/sim-personalize-cfn-resource-factory.d.ts +2 -2
  353. package/dist/service/personalize/cfn/sim-personalize-cfn-resource-factory.js +7 -6
  354. package/dist/service/personalize/sim-personalize-data-operations.d.ts +1 -1
  355. package/dist/service/personalize/sim-personalize-data-operations.js +3 -2
  356. package/dist/service/rekognition/sim-rekognition.d.ts +1 -1
  357. package/dist/service/rekognition/sim-rekognition.js +3 -2
  358. package/dist/service/route53/cfn/dnssec/sim-cfn-r53-ksk-creator.d.ts +3 -2
  359. package/dist/service/route53/cfn/dnssec/sim-cfn-r53-ksk-creator.js +5 -5
  360. package/dist/service/route53/cfn/dnssec/sim-cfn-r53-zone-signing-creator.d.ts +3 -2
  361. package/dist/service/route53/cfn/dnssec/sim-cfn-r53-zone-signing-creator.js +4 -8
  362. package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.d.ts +2 -1
  363. package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.js +2 -2
  364. package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.d.ts +9 -1
  365. package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.js +23 -2
  366. package/dist/service/route53/cfn/sim-cfn-route53-resource-deleter.d.ts +5 -3
  367. package/dist/service/route53/cfn/sim-cfn-route53-resource-deleter.js +9 -28
  368. package/dist/service/route53/cfn/sim-cfn-route53-resource-factory.js +9 -5
  369. package/dist/service/route53/sim-route53.d.ts +1 -1
  370. package/dist/service/route53/sim-route53.js +5 -2
  371. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +3 -0
  372. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +6 -13
  373. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -1
  374. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +3 -2
  375. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.d.ts +2 -1
  376. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.js +2 -2
  377. package/dist/service/s3/cfn/sim-cfn-s3-resource-deleter.d.ts +2 -1
  378. package/dist/service/s3/cfn/sim-cfn-s3-resource-deleter.js +3 -7
  379. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts +2 -2
  380. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js +6 -4
  381. package/dist/service/s3/notification/destination/lambda/sim-aws-s3-notification-functions.js +2 -1
  382. package/dist/service/s3/notification/destination/sns/sim-s3-notification-topic.js +2 -1
  383. package/dist/service/s3/notification/destination/sqs/sim-s3-notification-queue.js +2 -1
  384. package/dist/service/s3/sim-s3-commands.d.ts +1 -1
  385. package/dist/service/s3/sim-s3-commands.js +3 -2
  386. package/dist/service/scheduler/cfn/sim-cfn-schedule-creator.d.ts +26 -0
  387. package/dist/service/scheduler/cfn/sim-cfn-schedule-creator.js +49 -0
  388. package/dist/service/scheduler/cfn/sim-cfn-schedule-group-creator.d.ts +31 -0
  389. package/dist/service/scheduler/cfn/sim-cfn-schedule-group-creator.js +48 -0
  390. package/dist/service/scheduler/cfn/sim-cfn-schedule-group-properties.d.ts +26 -0
  391. package/dist/service/scheduler/cfn/sim-cfn-schedule-group-properties.js +68 -0
  392. package/dist/service/scheduler/cfn/sim-cfn-schedule-properties.js +4 -10
  393. package/dist/service/scheduler/cfn/sim-cfn-scheduler-resource-error.d.ts +14 -3
  394. package/dist/service/scheduler/cfn/sim-cfn-scheduler-resource-error.js +28 -6
  395. package/dist/service/scheduler/cfn/sim-cfn-scheduler-resource-lookup.d.ts +10 -4
  396. package/dist/service/scheduler/cfn/sim-cfn-scheduler-resource-lookup.js +9 -6
  397. package/dist/service/scheduler/cfn/sim-scheduler-cfn-resource-factory.d.ts +6 -8
  398. package/dist/service/scheduler/cfn/sim-scheduler-cfn-resource-factory.js +20 -33
  399. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +9 -8
  400. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +14 -15
  401. package/dist/service/scheduler/command/group/group.command.d.ts +90 -0
  402. package/dist/service/scheduler/command/group/group.command.js +1 -0
  403. package/dist/service/scheduler/command/group/sim-scheduler-described-group.d.ts +15 -0
  404. package/dist/service/scheduler/command/group/sim-scheduler-described-group.js +29 -0
  405. package/dist/service/scheduler/command/group/sim-scheduler-group-access.d.ts +57 -0
  406. package/dist/service/scheduler/command/group/sim-scheduler-group-access.js +70 -0
  407. package/dist/service/scheduler/command/group/sim-scheduler-group-commands.d.ts +46 -0
  408. package/dist/service/scheduler/command/group/sim-scheduler-group-commands.js +72 -0
  409. package/dist/service/scheduler/command/group/sim-scheduler-listed-groups.d.ts +6 -0
  410. package/dist/service/scheduler/command/group/sim-scheduler-listed-groups.js +10 -0
  411. package/dist/service/scheduler/command/group/sim-scheduler-unsimulated-group-input.d.ts +14 -0
  412. package/dist/service/scheduler/command/group/sim-scheduler-unsimulated-group-input.js +19 -0
  413. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  414. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +16 -0
  415. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +23 -3
  416. package/dist/service/scheduler/command/sim-scheduler-command.types.d.ts +1 -0
  417. package/dist/service/scheduler/command/sim-scheduler-commands.d.ts +4 -0
  418. package/dist/service/scheduler/command/sim-scheduler-commands.js +14 -1
  419. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.js +1 -1
  420. package/dist/service/scheduler/delivery/sim-scheduler-delivery-function.js +2 -1
  421. package/dist/service/scheduler/delivery/sim-scheduler-delivery-queue.js +2 -1
  422. package/dist/service/scheduler/delivery/sim-scheduler-delivery-topic.js +2 -1
  423. package/dist/service/scheduler/delivery/sim-scheduler-execution-role.d.ts +9 -3
  424. package/dist/service/scheduler/delivery/sim-scheduler-execution-role.js +10 -3
  425. package/dist/service/scheduler/group/sim-scheduler-schedule-group-arn.d.ts +11 -0
  426. package/dist/service/scheduler/group/sim-scheduler-schedule-group-arn.js +13 -0
  427. package/dist/service/scheduler/group/sim-scheduler-schedule-group-store.d.ts +46 -0
  428. package/dist/service/scheduler/group/sim-scheduler-schedule-group-store.js +65 -0
  429. package/dist/service/scheduler/group/sim-scheduler-schedule-group.d.ts +25 -0
  430. package/dist/service/scheduler/group/sim-scheduler-schedule-group.js +32 -0
  431. package/dist/service/scheduler/index.d.ts +2 -0
  432. package/dist/service/scheduler/index.js +2 -0
  433. package/dist/service/scheduler/schedule/sim-scheduler-schedule-name.d.ts +11 -9
  434. package/dist/service/scheduler/schedule/sim-scheduler-schedule-name.js +15 -18
  435. package/dist/service/scheduler/schedule/sim-scheduler-schedule-store.d.ts +7 -0
  436. package/dist/service/scheduler/schedule/sim-scheduler-schedule-store.js +13 -0
  437. package/dist/service/scheduler/schedule/sim-scheduler-schedule.d.ts +13 -0
  438. package/dist/service/scheduler/schedule/sim-scheduler-schedule.js +16 -0
  439. package/dist/service/scheduler/sdk/sim-scheduler-sdk-command-router.js +16 -0
  440. package/dist/service/scheduler/sim-scheduler-inspection.d.ts +14 -0
  441. package/dist/service/scheduler/sim-scheduler-inspection.js +15 -0
  442. package/dist/service/scheduler/sim-scheduler.d.ts +19 -1
  443. package/dist/service/scheduler/sim-scheduler.js +38 -2
  444. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.d.ts +2 -1
  445. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.js +2 -2
  446. package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.d.ts +2 -2
  447. package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.js +4 -5
  448. package/dist/service/secretsmanager/sim-secrets-manager.d.ts +1 -1
  449. package/dist/service/secretsmanager/sim-secrets-manager.js +3 -2
  450. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.d.ts +3 -2
  451. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.js +4 -4
  452. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.d.ts +3 -2
  453. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.js +4 -8
  454. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.d.ts +2 -2
  455. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.js +7 -6
  456. package/dist/service/ses/cfn/template/sim-cfn-ses-template-creator.d.ts +3 -2
  457. package/dist/service/ses/cfn/template/sim-cfn-ses-template-creator.js +4 -8
  458. package/dist/service/ses/sim-ses-commands.d.ts +1 -1
  459. package/dist/service/ses/sim-ses-commands.js +3 -2
  460. package/dist/service/sns/cfn/sim-cfn-sns-resource-deleter.d.ts +5 -8
  461. package/dist/service/sns/cfn/sim-cfn-sns-resource-deleter.js +10 -28
  462. package/dist/service/sns/cfn/sim-sns-cfn-resource-factory.js +10 -5
  463. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-creator.d.ts +2 -1
  464. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-creator.js +2 -2
  465. package/dist/service/sns/cfn/topic/sim-cfn-sns-topic-creator.d.ts +2 -1
  466. package/dist/service/sns/cfn/topic/sim-cfn-sns-topic-creator.js +5 -7
  467. package/dist/service/sns/cfn/topic-policy/sim-cfn-sns-topic-policy-creator.d.ts +9 -1
  468. package/dist/service/sns/cfn/topic-policy/sim-cfn-sns-topic-policy-creator.js +20 -4
  469. package/dist/service/sns/delivery/lambda/sim-sns-delivery-function.js +2 -1
  470. package/dist/service/sns/delivery/sqs/sim-sns-delivery-queue.js +2 -1
  471. package/dist/service/sns/sim-sns.d.ts +1 -1
  472. package/dist/service/sns/sim-sns.js +3 -2
  473. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.d.ts +2 -1
  474. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.js +2 -4
  475. package/dist/service/sqs/cfn/queue-policy/sim-cfn-sqs-queue-policy-creator.d.ts +2 -1
  476. package/dist/service/sqs/cfn/queue-policy/sim-cfn-sqs-queue-policy-creator.js +4 -4
  477. package/dist/service/sqs/cfn/sim-cfn-sqs-resource-deleter.d.ts +2 -1
  478. package/dist/service/sqs/cfn/sim-cfn-sqs-resource-deleter.js +7 -7
  479. package/dist/service/sqs/cfn/sim-sqs-cfn-resource-factory.js +5 -3
  480. package/dist/service/sqs/sim-sqs.d.ts +1 -1
  481. package/dist/service/sqs/sim-sqs.js +3 -2
  482. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-creator.d.ts +2 -1
  483. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-creator.js +2 -2
  484. package/dist/service/ssm/cfn/sim-cfn-ssm-resource-factory.d.ts +2 -2
  485. package/dist/service/ssm/cfn/sim-cfn-ssm-resource-factory.js +4 -3
  486. package/dist/service/ssm/sim-ssm.d.ts +1 -1
  487. package/dist/service/ssm/sim-ssm.js +3 -2
  488. package/dist/service/stepfunctions/cfn/sim-cfn-step-functions-resource-deleter.d.ts +2 -1
  489. package/dist/service/stepfunctions/cfn/sim-cfn-step-functions-resource-deleter.js +2 -4
  490. package/dist/service/stepfunctions/cfn/sim-step-functions-cfn-resource-factory.d.ts +1 -1
  491. package/dist/service/stepfunctions/cfn/sim-step-functions-cfn-resource-factory.js +4 -3
  492. package/dist/service/stepfunctions/cfn/state-machine/sim-cfn-state-machine-creator.d.ts +2 -1
  493. package/dist/service/stepfunctions/cfn/state-machine/sim-cfn-state-machine-creator.js +2 -2
  494. package/dist/service/stepfunctions/task/sim-aws-states-task-targets.js +2 -4
  495. package/dist/service/stepfunctions/task/sim-states-execution-role.d.ts +3 -3
  496. package/dist/service/stepfunctions/task/sim-states-execution-role.js +4 -3
  497. package/dist/service/stepfunctions/task/sim-states-task-function.js +2 -1
  498. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.d.ts +3 -0
  499. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.js +2 -7
  500. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.d.ts +6 -0
  501. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.js +3 -0
  502. package/dist/service/sts/auth-z/assume-role-target-auth-z.d.ts +6 -0
  503. package/dist/service/sts/auth-z/assume-role-target-auth-z.js +3 -0
  504. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.d.ts +6 -0
  505. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.js +1 -0
  506. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
  507. package/dist/service/sts/command/assume-role/assume-role.handler.js +2 -1
  508. package/dist/service/sts/service-role/sim-service-role-source.d.ts +33 -0
  509. package/dist/service/sts/service-role/sim-service-role-source.js +26 -0
  510. package/dist/service/sts/service-role/sim-service-role-target.d.ts +26 -0
  511. package/dist/service/sts/service-role/sim-service-role-target.js +27 -0
  512. package/dist/service/sts/service-role/sim-service-role.d.ts +16 -20
  513. package/dist/service/sts/service-role/sim-service-role.js +7 -21
  514. package/dist/service/sts/sim-sts.js +1 -0
  515. package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.d.ts +3 -2
  516. package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.js +4 -6
  517. package/dist/service/wafv2/cfn/ip-set/sim-cfn-waf-ip-set-creator.d.ts +3 -2
  518. package/dist/service/wafv2/cfn/ip-set/sim-cfn-waf-ip-set-creator.js +4 -4
  519. package/dist/service/wafv2/cfn/regex-pattern-set/sim-cfn-waf-regex-set-creator.d.ts +3 -2
  520. package/dist/service/wafv2/cfn/regex-pattern-set/sim-cfn-waf-regex-set-creator.js +4 -4
  521. package/dist/service/wafv2/cfn/sim-cfn-waf-resource-deleter.d.ts +2 -1
  522. package/dist/service/wafv2/cfn/sim-cfn-waf-resource-deleter.js +5 -5
  523. package/dist/service/wafv2/cfn/sim-waf-cfn-resource-factory.d.ts +2 -2
  524. package/dist/service/wafv2/cfn/sim-waf-cfn-resource-factory.js +8 -6
  525. package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.d.ts +3 -2
  526. package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.js +4 -6
  527. package/dist/service/wafv2/sim-wafv2-commands.d.ts +1 -1
  528. package/dist/service/wafv2/sim-wafv2-commands.js +3 -2
  529. package/dist/util/clock/sim-clock-control.d.ts +3 -1
  530. package/dist/util/clock/sim-clock-control.js +2 -0
  531. package/dist/util/clock/sim-controllable-clock.d.ts +3 -1
  532. package/dist/util/clock/sim-controllable-clock.js +2 -0
  533. package/dist/util/clock/sim-duration.d.ts +6 -2
  534. package/dist/util/clock/sim-duration.js +8 -1
  535. package/package.json +1 -1
@@ -16,15 +16,13 @@ export class SimCfnHttpApiStageCreator {
16
16
  /**
17
17
  * Create a stage from an AWS::ApiGatewayV2::Stage Resource.
18
18
  */
19
- async create(resource, properties) {
19
+ async create(resource, properties, options) {
20
20
  const stageProperties = new SimCfnHttpApiStageProperties({
21
21
  resource,
22
22
  properties,
23
23
  });
24
24
  const apiId = stageProperties.apiId();
25
- const created = await this.apiGatewayV2.createStage({
26
- input: stageProperties.createStageInput(),
27
- });
25
+ const created = await this.apiGatewayV2.createStage({ input: stageProperties.createStageInput() }, options);
28
26
  const stage = this.apiGatewayV2
29
27
  .findApi(apiId)
30
28
  ?.stages.find(created.StageName);
@@ -1,4 +1,5 @@
1
1
  import { SimAws } from "../../aws/sim-aws.js";
2
+ import { simScopeIamAuthZ } from "../../iam/authorize/sim-iam-region-auth-z.js";
2
3
  /**
3
4
  * Routes a served HTTP API request to the API behind it, and an integration to
4
5
  * the function behind that.
@@ -45,7 +46,7 @@ export class SimApiGatewayV2Router {
45
46
  */
46
47
  iamFor(api) {
47
48
  const { accountId, regionName } = api.accountRegionScope;
48
- return this.simAws.accountRegionScope(accountId, regionName).iam();
49
+ return simScopeIamAuthZ(this.simAws.accountRegionScope(accountId, regionName));
49
50
  }
50
51
  /**
51
52
  * Find the function an integration invokes, and the IAM deciding whether it
@@ -77,6 +78,8 @@ export class SimApiGatewayV2Router {
77
78
  const target = scope
78
79
  .lambda()
79
80
  .getSimFunctionTarget(lambdaUri.functionName, lambdaUri.qualifier);
80
- return target === undefined ? undefined : { ...target, iam: scope.iam() };
81
+ return target === undefined
82
+ ? undefined
83
+ : { ...target, iam: simScopeIamAuthZ(scope) };
81
84
  }
82
85
  }
@@ -1,6 +1,6 @@
1
1
  import { type BackgroundScheduler } from "../../util/background/background.js";
2
2
  import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
3
- import { type SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
3
+ import type { SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
4
4
  import { type SimHttpApiJwtIssuerKeys } from "./api/authorizer/sim-http-api-jwt-issuer-keys.js";
5
5
  import { SimHttpApiStore } from "./api/sim-http-api-store.js";
6
6
  import { SimHttpApiDomainStore } from "./domain/sim-http-api-domain-store.js";
@@ -1,6 +1,6 @@
1
1
  import { BackgroundTasks, } from "../../util/background/background.js";
2
2
  import { simAwsAccountRegionScopeFactory } from "../aws/sim-aws-account-region-scope.factory.js";
3
- import { SimIamAllowAllAuth, } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
3
+ import { simIamInRegion } from "../iam/authorize/sim-iam-region-auth-z.js";
4
4
  import { SimHttpApiNoJwtIssuerKeys, } from "./api/authorizer/sim-http-api-jwt-issuer-keys.js";
5
5
  import { SimHttpApiStore } from "./api/sim-http-api-store.js";
6
6
  import { SimHttpApiDomainStore } from "./domain/sim-http-api-domain-store.js";
@@ -38,7 +38,8 @@ export class SimApiGatewayV2Commands {
38
38
  apiMappings;
39
39
  background;
40
40
  constructor(properties = {}) {
41
- const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), registry = new SimHttpApiRegistry(), domainRegistry = new SimHttpApiDomainRegistry(), jwtIssuerKeys = new SimHttpApiNoJwtIssuerKeys(), } = properties;
41
+ const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), background = new BackgroundTasks(), registry = new SimHttpApiRegistry(), domainRegistry = new SimHttpApiDomainRegistry(), jwtIssuerKeys = new SimHttpApiNoJwtIssuerKeys(), } = properties;
42
+ const iam = simIamInRegion(properties.iam, accountRegionScope.regionName);
42
43
  const authorizer = new SimApiGatewayV2Authorizer({
43
44
  iam,
44
45
  accountRegionScope,
@@ -2,6 +2,7 @@ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-re
2
2
  import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
3
3
  import type { SimAthenaNamedQuery } from "../../named-query/sim-athena-named-query.js";
4
4
  import type { SimAthena } from "../../sim-athena.js";
5
+ import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
5
6
  interface SimCfnAthenaNamedQueryCreatorProperties {
6
7
  readonly athena: SimAthena;
7
8
  }
@@ -20,10 +21,10 @@ export declare class SimCfnAthenaNamedQueryCreator {
20
21
  /**
21
22
  * Create the named query a Resource declares.
22
23
  */
23
- create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord): Promise<SimAthenaNamedQuery>;
24
+ create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord, options?: SimCfnResourceCallerOptions): Promise<SimAthenaNamedQuery>;
24
25
  /**
25
26
  * Delete the named query a Resource created.
26
27
  */
27
- delete(namedQuery: SimAthenaNamedQuery): Promise<void>;
28
+ delete(namedQuery: SimAthenaNamedQuery, options?: SimCfnResourceCallerOptions): Promise<void>;
28
29
  }
29
30
  export {};
@@ -19,7 +19,7 @@ export class SimCfnAthenaNamedQueryCreator {
19
19
  /**
20
20
  * Create the named query a Resource declares.
21
21
  */
22
- async create(resource, properties) {
22
+ async create(resource, properties, options) {
23
23
  const read = new SimCfnAthenaNamedQueryProperties({
24
24
  resource,
25
25
  properties,
@@ -27,7 +27,7 @@ export class SimCfnAthenaNamedQueryCreator {
27
27
  read.recordIgnoredProperties();
28
28
  const input = read.createInput();
29
29
  return await simCfnAthenaResourceCreation(athenaNamedQueryResourceType, resource.logicalId, async () => {
30
- const created = await this.athena.createNamedQuery({ input });
30
+ const created = await this.athena.createNamedQuery({ input }, options);
31
31
  const namedQuery = this.athena
32
32
  .namedQueries()
33
33
  .find((candidate) => candidate.namedQueryId === created.NamedQueryId);
@@ -39,9 +39,7 @@ export class SimCfnAthenaNamedQueryCreator {
39
39
  /**
40
40
  * Delete the named query a Resource created.
41
41
  */
42
- async delete(namedQuery) {
43
- await this.athena.deleteNamedQuery({
44
- input: { NamedQueryId: namedQuery.namedQueryId },
45
- });
42
+ async delete(namedQuery, options) {
43
+ await this.athena.deleteNamedQuery({ input: { NamedQueryId: namedQuery.namedQueryId } }, options);
46
44
  }
47
45
  }
@@ -1,5 +1,5 @@
1
1
  import type { SimCfnServiceResourceFactory } from "../../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
2
- import type { SimCfnResource, SimCloudFormationResourceCreateContext } from "../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimCfnResource, SimCloudFormationResourceCreateContext, SimCloudFormationResourceDeleteContext } from "../../cloudformation/resource/sim-cfn-resource.js";
3
3
  import type { SimAthena } from "../sim-athena.js";
4
4
  interface SimAthenaCfnResourceFactoryProperties {
5
5
  readonly athena: SimAthena;
@@ -22,7 +22,7 @@ export declare class SimAthenaCfnResourceFactory implements SimCfnServiceResourc
22
22
  /**
23
23
  * Delete a simulated Athena resource created from a CloudFormation Resource.
24
24
  */
25
- delete(resourceTypeName: string, resource: SimCfnResource): Promise<void>;
25
+ delete(resourceTypeName: string, resource: SimCfnResource, context: SimCloudFormationResourceDeleteContext): Promise<void>;
26
26
  private handler;
27
27
  }
28
28
  export {};
@@ -1,4 +1,5 @@
1
1
  import { assertDefined } from "../../../util/type-guard/defined.js";
2
+ import { simCfnResourceCallerOptions, } from "../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
2
3
  import { SimCfnAthenaNamedQueryCreator } from "./named-query/sim-cfn-athena-named-query-creator.js";
3
4
  import { athenaNamedQueryResourceTypeName, athenaWorkGroupResourceTypeName, } from "./sim-cfn-athena-resource-types.js";
4
5
  import { SimCfnAthenaWorkGroupCreator } from "./work-group/sim-cfn-athena-work-group-creator.js";
@@ -29,13 +30,13 @@ export class SimAthenaCfnResourceFactory {
29
30
  * Create a simulated Athena resource from a CloudFormation Resource.
30
31
  */
31
32
  async create(resourceTypeName, resource, context) {
32
- return await this.handler(resourceTypeName, "").create(resource, context.resolvedProperties ?? resource.properties);
33
+ return await this.handler(resourceTypeName, "").create(resource, context.resolvedProperties ?? resource.properties, simCfnResourceCallerOptions(context.caller));
33
34
  }
34
35
  /**
35
36
  * Delete a simulated Athena resource created from a CloudFormation Resource.
36
37
  */
37
- async delete(resourceTypeName, resource) {
38
- await this.handler(resourceTypeName, " deletion").delete(resource);
38
+ async delete(resourceTypeName, resource, context) {
39
+ await this.handler(resourceTypeName, " deletion").delete(resource, simCfnResourceCallerOptions(context.caller));
39
40
  }
40
41
  handler(resourceTypeName, operationSuffix) {
41
42
  const handler = this.#handlers.get(resourceTypeName);
@@ -53,9 +54,9 @@ export class SimAthenaCfnResourceFactory {
53
54
  */
54
55
  function handler(creator, described) {
55
56
  return {
56
- create: async (resource, properties) => await creator.create(resource, properties),
57
- delete: async (resource) => {
58
- await creator.delete(created(resource, described));
57
+ create: async (resource, properties, options) => await creator.create(resource, properties, options),
58
+ delete: async (resource, options) => {
59
+ await creator.delete(created(resource, described), options);
59
60
  },
60
61
  };
61
62
  }
@@ -2,6 +2,7 @@ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-re
2
2
  import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
3
3
  import type { SimAthena } from "../../sim-athena.js";
4
4
  import type { SimAthenaWorkGroup } from "../../workgroup/sim-athena-work-group.js";
5
+ import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
5
6
  interface SimCfnAthenaWorkGroupCreatorProperties {
6
7
  readonly athena: SimAthena;
7
8
  }
@@ -19,14 +20,14 @@ export declare class SimCfnAthenaWorkGroupCreator {
19
20
  /**
20
21
  * Create the workgroup a Resource declares.
21
22
  */
22
- create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord): Promise<SimAthenaWorkGroup>;
23
+ create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord, options?: SimCfnResourceCallerOptions): Promise<SimAthenaWorkGroup>;
23
24
  /**
24
25
  * Delete the workgroup a Resource created.
25
26
  *
26
27
  * Deleted recursively, so a workgroup the stack also gave named queries goes
27
28
  * with them rather than failing the stack deletion.
28
29
  */
29
- delete(workGroup: SimAthenaWorkGroup): Promise<void>;
30
+ delete(workGroup: SimAthenaWorkGroup, options?: SimCfnResourceCallerOptions): Promise<void>;
30
31
  private applyState;
31
32
  private read;
32
33
  }
@@ -19,7 +19,7 @@ export class SimCfnAthenaWorkGroupCreator {
19
19
  /**
20
20
  * Create the workgroup a Resource declares.
21
21
  */
22
- async create(resource, properties) {
22
+ async create(resource, properties, options) {
23
23
  const read = this.read(resource, properties);
24
24
  read.recordIgnoredProperties();
25
25
  const input = read.createInput();
@@ -31,8 +31,8 @@ export class SimCfnAthenaWorkGroupCreator {
31
31
  * to be refused while there is still nothing to leave behind.
32
32
  */
33
33
  const state = workGroupStateFrom(read.state());
34
- await this.athena.createWorkGroup({ input });
35
- await this.applyState(String(input.Name), state);
34
+ await this.athena.createWorkGroup({ input }, options);
35
+ await this.applyState(String(input.Name), state, options);
36
36
  const workGroup = this.athena.findWorkGroup(String(input.Name));
37
37
  assertDefined(workGroup, `sim Athena workgroup ${String(input.Name)} after CloudFormation ` +
38
38
  `creation`);
@@ -45,18 +45,14 @@ export class SimCfnAthenaWorkGroupCreator {
45
45
  * Deleted recursively, so a workgroup the stack also gave named queries goes
46
46
  * with them rather than failing the stack deletion.
47
47
  */
48
- async delete(workGroup) {
49
- await this.athena.deleteWorkGroup({
50
- input: { WorkGroup: workGroup.name, RecursiveDeleteOption: true },
51
- });
48
+ async delete(workGroup, options) {
49
+ await this.athena.deleteWorkGroup({ input: { WorkGroup: workGroup.name, RecursiveDeleteOption: true } }, options);
52
50
  }
53
- async applyState(name, state) {
51
+ async applyState(name, state, options) {
54
52
  if (state === undefined) {
55
53
  return;
56
54
  }
57
- await this.athena.updateWorkGroup({
58
- input: { WorkGroup: name, State: state },
59
- });
55
+ await this.athena.updateWorkGroup({ input: { WorkGroup: name, State: state } }, options);
60
56
  }
61
57
  read(resource, properties) {
62
58
  return new SimCfnAthenaWorkGroupProperties({ resource, properties });
@@ -1,11 +1,16 @@
1
1
  import type { DatabaseSync } from "node:sqlite";
2
2
  /**
3
- * Trino's two approximate aggregates, computed exactly.
3
+ * Trino's two approximate aggregates, computed exactly, and the exact count
4
+ * behind `count(DISTINCT <expression>)`.
4
5
  *
5
- * Real Athena answers both from a sketch and this answers from the values
6
- * themselves, so the simulation is the more accurate of the two. At the scale
7
- * a test seeds that difference cannot show, and the alternative is a query
8
- * that refuses to run at all.
6
+ * Real Athena answers the approximate pair from a sketch and this answers from
7
+ * the values themselves, so the simulation is the more accurate of the two. At
8
+ * the scale a test seeds that difference cannot show, and the alternative is a
9
+ * query that refuses to run at all.
10
+ *
11
+ * `count_distinct` is nobody's function to write. It is what the SQL rewrite
12
+ * turns `count(DISTINCT <expression>)` into, because the parser's Athena
13
+ * grammar takes a column after `DISTINCT` and nothing else.
9
14
  *
10
15
  * The state travels as JSON because SQLite carries an aggregate's accumulator
11
16
  * as one of its own values rather than as an object.
@@ -1,26 +1,29 @@
1
+ import { countDistinctShim } from "./sim-athena-count-distinct.js";
2
+ import { countedDistinctValues, noDistinctValues, withDistinctValue, } from "./sim-athena-distinct-values.js";
1
3
  /**
2
- * Trino's two approximate aggregates, computed exactly.
4
+ * Trino's two approximate aggregates, computed exactly, and the exact count
5
+ * behind `count(DISTINCT <expression>)`.
3
6
  *
4
- * Real Athena answers both from a sketch and this answers from the values
5
- * themselves, so the simulation is the more accurate of the two. At the scale
6
- * a test seeds that difference cannot show, and the alternative is a query
7
- * that refuses to run at all.
7
+ * Real Athena answers the approximate pair from a sketch and this answers from
8
+ * the values themselves, so the simulation is the more accurate of the two. At
9
+ * the scale a test seeds that difference cannot show, and the alternative is a
10
+ * query that refuses to run at all.
11
+ *
12
+ * `count_distinct` is nobody's function to write. It is what the SQL rewrite
13
+ * turns `count(DISTINCT <expression>)` into, because the parser's Athena
14
+ * grammar takes a column after `DISTINCT` and nothing else.
8
15
  *
9
16
  * The state travels as JSON because SQLite carries an aggregate's accumulator
10
17
  * as one of its own values rather than as an object.
11
18
  */
12
19
  export function simAthenaInstallAggregateShims(database) {
13
- database.aggregate("approx_distinct", {
14
- start: "[]",
15
- step: (accumulator, value) => {
16
- const seen = new Set(JSON.parse(accumulator));
17
- if (value !== null) {
18
- seen.add(typeof value === "bigint" ? String(value) : value);
19
- }
20
- return JSON.stringify([...seen]);
21
- },
22
- result: (accumulator) => JSON.parse(accumulator).length,
23
- });
20
+ for (const name of ["approx_distinct", countDistinctShim]) {
21
+ database.aggregate(name, {
22
+ start: noDistinctValues,
23
+ step: withDistinctValue,
24
+ result: countedDistinctValues,
25
+ });
26
+ }
24
27
  database.aggregate("approx_percentile", {
25
28
  start: () => JSON.stringify({ values: [], percentile: 0.5 }),
26
29
  step: (accumulator, value, at) => {
@@ -0,0 +1,16 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ /**
3
+ * Trino's hashing functions and the encodings that carry bytes in and out of
4
+ * them.
5
+ *
6
+ * A `varbinary` is held as a SQLite blob, so a digest travels as bytes the way
7
+ * it does in Athena and a `to_hex` around it reads the same. Trino refuses text
8
+ * where a `varbinary` is wanted and SQLite has no analysis to refuse it with,
9
+ * so a column reaching one of these without a `to_utf8` around it is hashed as
10
+ * its UTF-8 bytes.
11
+ *
12
+ * `spooky_hash_v2_32` and `spooky_hash_v2_64` are absent. Nothing an access log
13
+ * query reaches for spells either, and a name registered for one would have to
14
+ * carry a third hash written out by hand.
15
+ */
16
+ export declare function simAthenaInstallBinaryShims(database: DatabaseSync): void;
@@ -0,0 +1,49 @@
1
+ import { createHash } from "node:crypto";
2
+ import { crc32 } from "node:zlib";
3
+ import { simAthenaMurmur3 } from "./sim-athena-murmur3.js";
4
+ import { simAthenaDecodedText, simAthenaFromUtf8, } from "./sim-athena-binary-text.js";
5
+ import { shimBytes, shimText, simAthenaScalarShim, } from "./sim-athena-shim-registry.js";
6
+ import { simAthenaXxHash64 } from "./sim-athena-xxhash64.js";
7
+ /** The `node:crypto` digest each Trino hashing function is spelled with. */
8
+ const digests = new Map([
9
+ ["md5", "md5"],
10
+ ["sha1", "sha1"],
11
+ ["sha256", "sha256"],
12
+ ["sha512", "sha512"],
13
+ ]);
14
+ /**
15
+ * Trino's hashing functions and the encodings that carry bytes in and out of
16
+ * them.
17
+ *
18
+ * A `varbinary` is held as a SQLite blob, so a digest travels as bytes the way
19
+ * it does in Athena and a `to_hex` around it reads the same. Trino refuses text
20
+ * where a `varbinary` is wanted and SQLite has no analysis to refuse it with,
21
+ * so a column reaching one of these without a `to_utf8` around it is hashed as
22
+ * its UTF-8 bytes.
23
+ *
24
+ * `spooky_hash_v2_32` and `spooky_hash_v2_64` are absent. Nothing an access log
25
+ * query reaches for spells either, and a name registered for one would have to
26
+ * carry a third hash written out by hand.
27
+ */
28
+ export function simAthenaInstallBinaryShims(database) {
29
+ for (const [name, algorithm] of digests) {
30
+ simAthenaScalarShim(database, name, (value) => overBytes(value, (bytes) => new Uint8Array(createHash(algorithm).update(bytes).digest())));
31
+ }
32
+ simAthenaScalarShim(database, "xxhash64", (value) => overBytes(value, simAthenaXxHash64));
33
+ simAthenaScalarShim(database, "murmur3", (value) => overBytes(value, simAthenaMurmur3));
34
+ simAthenaScalarShim(database, "crc32", (value) => overBytes(value, (bytes) => crc32(bytes)));
35
+ simAthenaScalarShim(database, "to_hex", (value) => overBytes(value, (bytes) => Buffer.from(bytes).toString("hex").toUpperCase()));
36
+ simAthenaScalarShim(database, "to_base64", (value) => overBytes(value, (bytes) => Buffer.from(bytes).toString("base64")));
37
+ simAthenaScalarShim(database, "from_hex", (value) => simAthenaDecodedText(shimText(value), "hex"));
38
+ simAthenaScalarShim(database, "from_base64", (value) => simAthenaDecodedText(shimText(value), "base64"));
39
+ simAthenaScalarShim(database, "to_utf8", (value) => {
40
+ const text = shimText(value);
41
+ return text === undefined ? null : new TextEncoder().encode(text);
42
+ });
43
+ simAthenaScalarShim(database, "from_utf8", (...values) => simAthenaFromUtf8(shimBytes(values.at(0)), values));
44
+ }
45
+ /** One binary function over its argument, answering null where it is null. */
46
+ function overBytes(value, read) {
47
+ const bytes = shimBytes(value);
48
+ return bytes === undefined ? null : read(bytes);
49
+ }
@@ -0,0 +1,21 @@
1
+ import type { SQLOutputValue } from "node:sqlite";
2
+ /**
3
+ * One encoded string read back to bytes, or null where it is null.
4
+ *
5
+ * Trino fails the query over text the encoding cannot carry, and `Buffer` reads
6
+ * as much of it as it can and drops the rest. Raising here turns the query down
7
+ * instead, which is nearer to Trino's answer than bytes nobody wrote.
8
+ */
9
+ export declare function simAthenaDecodedText(text: string | undefined, encoding: "base64" | "hex"): Uint8Array | null;
10
+ /**
11
+ * Bytes read back as text, with whatever was no UTF-8 replaced.
12
+ *
13
+ * Trino writes `U+FFFD` where a call named no replacement, which is what a
14
+ * decoder writes anyway. A call naming one has that written instead, and the
15
+ * replacement has to be a single character or empty, as Trino's does.
16
+ *
17
+ * Bytes carrying `U+FFFD` of their own leave nothing to tell the two apart
18
+ * once the decoder has run, so a call naming a replacement over those raises
19
+ * rather than replacing text that was never broken.
20
+ */
21
+ export declare function simAthenaFromUtf8(bytes: Uint8Array | undefined, values: readonly SQLOutputValue[]): string | null;
@@ -0,0 +1,87 @@
1
+ import { SimAthenaSetUpError } from "../error/sim-athena.error.js";
2
+ import { isExplicitNull } from "./sim-athena-shim-registry.js";
3
+ /** What each encoding will read back, in either case and padded or not. */
4
+ const shapes = new Map([
5
+ ["hex", /^[\dA-Fa-f]*$/u],
6
+ ["base64", /^[\d+/A-Za-z]*={0,2}$/u],
7
+ ]);
8
+ /** Whether the length of this text is one the encoding could have written. */
9
+ const lengths = new Map([
10
+ ["hex", (text) => text.length % 2 === 0],
11
+ ["base64", isBase64Length],
12
+ ]);
13
+ /** One character or none, counted in code points the way Trino counts them. */
14
+ const oneCharacter = /^.?$/u;
15
+ /** The character a UTF-8 decoder writes where the bytes were no UTF-8. */
16
+ const replacementCharacter = "\u{FFFD}";
17
+ /** The bytes that encode that character, which are valid UTF-8 themselves. */
18
+ const encodedReplacement = Buffer.from([0xef, 0xbf, 0xbd]);
19
+ /**
20
+ * One encoded string read back to bytes, or null where it is null.
21
+ *
22
+ * Trino fails the query over text the encoding cannot carry, and `Buffer` reads
23
+ * as much of it as it can and drops the rest. Raising here turns the query down
24
+ * instead, which is nearer to Trino's answer than bytes nobody wrote.
25
+ */
26
+ export function simAthenaDecodedText(text, encoding) {
27
+ if (text === undefined) {
28
+ return null;
29
+ }
30
+ const read = shapes.get(encoding)?.test(text) === true &&
31
+ lengths.get(encoding)?.(text) === true;
32
+ if (!read) {
33
+ throw new SimAthenaSetUpError(`from_${encoding} takes ${encoding} text`);
34
+ }
35
+ return new Uint8Array(Buffer.from(text, encoding));
36
+ }
37
+ /**
38
+ * Whether base64 of this length decodes, padding and all.
39
+ *
40
+ * Base64 carries three bytes in every four characters, and a length one over a
41
+ * multiple of four is a length no encoder could have written. Padding fills the
42
+ * last four out, so text carrying any has to be a multiple of four long.
43
+ * `Buffer` takes `A=` and `AAAA=` and answers with bytes nobody wrote.
44
+ */
45
+ function isBase64Length(text) {
46
+ let padding = 0;
47
+ while (text.charAt(text.length - padding - 1) === "=") {
48
+ padding += 1;
49
+ }
50
+ const body = text.length - padding;
51
+ return body % 4 !== 1 && (padding === 0 || text.length % 4 === 0);
52
+ }
53
+ /**
54
+ * Bytes read back as text, with whatever was no UTF-8 replaced.
55
+ *
56
+ * Trino writes `U+FFFD` where a call named no replacement, which is what a
57
+ * decoder writes anyway. A call naming one has that written instead, and the
58
+ * replacement has to be a single character or empty, as Trino's does.
59
+ *
60
+ * Bytes carrying `U+FFFD` of their own leave nothing to tell the two apart
61
+ * once the decoder has run, so a call naming a replacement over those raises
62
+ * rather than replacing text that was never broken.
63
+ */
64
+ export function simAthenaFromUtf8(bytes, values) {
65
+ if (bytes === undefined) {
66
+ return null;
67
+ }
68
+ const decoded = new TextDecoder().decode(bytes);
69
+ if (values.length < 2) {
70
+ return decoded;
71
+ }
72
+ if (isExplicitNull(values, 1)) {
73
+ return null;
74
+ }
75
+ const replacement = replacementFor(bytes, values);
76
+ return decoded.replaceAll(replacementCharacter, () => replacement);
77
+ }
78
+ function replacementFor(bytes, values) {
79
+ const replacement = String(values.at(1));
80
+ if (!oneCharacter.test(replacement)) {
81
+ throw new SimAthenaSetUpError("from_utf8 takes a replacement of one character or none");
82
+ }
83
+ if (Buffer.from(bytes).includes(encodedReplacement)) {
84
+ throw new SimAthenaSetUpError("from_utf8 cannot tell a replacement character it decoded from one the bytes carried");
85
+ }
86
+ return replacement;
87
+ }
@@ -0,0 +1,15 @@
1
+ /** The name the rewrite calls, which the aggregate shims register. */
2
+ export declare const countDistinctShim = "count_distinct";
3
+ /**
4
+ * `count(DISTINCT <expression>)`, written as a call the parser will take.
5
+ *
6
+ * The parser's Athena grammar takes a column after `DISTINCT` and nothing else,
7
+ * so `count(DISTINCT concat(a, b))` is refused outright and the whole query
8
+ * falls back. SQLite takes the same expression happily, and so does Athena, so
9
+ * the gap is the grammar rather than the engine.
10
+ *
11
+ * A plain column is left alone, since that already parses and SQLite counts it
12
+ * natively. Everything else becomes a call to one aggregate of the simulator's
13
+ * own, which counts the distinct values the same way.
14
+ */
15
+ export declare function simAthenaCountDistinct(sql: string): string;
@@ -0,0 +1,103 @@
1
+ /** The name the rewrite calls, which the aggregate shims register. */
2
+ export const countDistinctShim = "count_distinct";
3
+ /** Where one `count(DISTINCT` opens, however the statement spaced it. */
4
+ const opening = /\bcount\s*\(\s*DISTINCT\b/giu;
5
+ /** One name in a column reference, quoted or bare. */
6
+ const namePart = /^(?:"[^"]*"|[A-Za-z_]\w*)$/u;
7
+ /**
8
+ * `count(DISTINCT <expression>)`, written as a call the parser will take.
9
+ *
10
+ * The parser's Athena grammar takes a column after `DISTINCT` and nothing else,
11
+ * so `count(DISTINCT concat(a, b))` is refused outright and the whole query
12
+ * falls back. SQLite takes the same expression happily, and so does Athena, so
13
+ * the gap is the grammar rather than the engine.
14
+ *
15
+ * A plain column is left alone, since that already parses and SQLite counts it
16
+ * natively. Everything else becomes a call to one aggregate of the simulator's
17
+ * own, which counts the distinct values the same way.
18
+ */
19
+ export function simAthenaCountDistinct(sql) {
20
+ const quoted = quotedPositions(sql);
21
+ let rewritten = "";
22
+ let read = 0;
23
+ opening.lastIndex = 0;
24
+ for (let match = opening.exec(sql); match !== null; match = opening.exec(sql)) {
25
+ const closes = closingParenthesis(sql, opening.lastIndex, quoted);
26
+ if (closes === undefined || quoted.at(match.index) === true) {
27
+ continue;
28
+ }
29
+ const argument = sql.slice(opening.lastIndex, closes).trim();
30
+ if (isColumnReference(argument)) {
31
+ continue;
32
+ }
33
+ rewritten += `${sql.slice(read, match.index)}${countDistinctShim}(${argument})`;
34
+ read = closes + 1;
35
+ opening.lastIndex = read;
36
+ }
37
+ return rewritten + sql.slice(read);
38
+ }
39
+ /**
40
+ * Whether this argument is a column the grammar would have taken as it stands.
41
+ *
42
+ * A quoted name carrying a dot of its own reads here as two names and fails
43
+ * this. The call is then rewritten, and the rewrite answers the same way.
44
+ */
45
+ function isColumnReference(argument) {
46
+ return argument.split(".").every((part) => namePart.test(part.trim()));
47
+ }
48
+ /**
49
+ * Whether the character at each position sits inside quotes.
50
+ *
51
+ * Both of SQL's quotes are tracked. A single quote opens a string literal and a
52
+ * double quote opens a delimited identifier, and either is free to carry the
53
+ * text of a call. Rewriting inside a literal would change the value a
54
+ * comparison is made against, and rewriting inside an identifier would name a
55
+ * different column.
56
+ *
57
+ * SQL escapes a quote inside either by doubling it, which reads here as one
58
+ * quoted run ending and another starting. The positions in between land the
59
+ * same way whichever reading is taken.
60
+ */
61
+ function quotedPositions(sql) {
62
+ const inside = [];
63
+ let quote;
64
+ for (const character of quotableCharacters(sql)) {
65
+ if (quote === undefined && (character === "'" || character === '"')) {
66
+ quote = character;
67
+ }
68
+ else if (quote === character) {
69
+ quote = undefined;
70
+ }
71
+ inside.push(quote !== undefined);
72
+ }
73
+ return inside;
74
+ }
75
+ /** Each character of the statement, by position rather than by code point. */
76
+ function* quotableCharacters(sql) {
77
+ for (let at = 0; at < sql.length; at += 1) {
78
+ yield sql.charAt(at);
79
+ }
80
+ }
81
+ /**
82
+ * Where the parenthesis that opened this call closes, or nothing where the
83
+ * statement never closes it.
84
+ *
85
+ * Depth is counted so that a call carrying calls of its own is read whole, and
86
+ * a parenthesis inside quotes is passed over so that it is not counted.
87
+ */
88
+ function closingParenthesis(sql, from, quoted) {
89
+ let depth = 0;
90
+ for (let at = from; at < sql.length; at += 1) {
91
+ const character = quoted.at(at) === true ? "" : sql.charAt(at);
92
+ if (character === "(") {
93
+ depth += 1;
94
+ }
95
+ else if (character === ")") {
96
+ if (depth === 0) {
97
+ return at;
98
+ }
99
+ depth -= 1;
100
+ }
101
+ }
102
+ return undefined;
103
+ }
@@ -0,0 +1,19 @@
1
+ import type { SQLOutputValue } from "node:sqlite";
2
+ /**
3
+ * The values one aggregate has seen, as SQLite will carry them between rows.
4
+ *
5
+ * SQLite holds an accumulator as one of its own values rather than as an
6
+ * object, so the set travels as the JSON text of its keys.
7
+ */
8
+ export type SimAthenaDistinctValues = string;
9
+ /** An empty accumulator, which is what an aggregate over no rows answers from. */
10
+ export declare const noDistinctValues: SimAthenaDistinctValues;
11
+ /**
12
+ * This value with one more added, where it is not null.
13
+ *
14
+ * Trino and SQLite both leave a null out of a distinct count, so a null row
15
+ * adds nothing.
16
+ */
17
+ export declare function withDistinctValue(accumulator: SimAthenaDistinctValues, value: SQLOutputValue): SimAthenaDistinctValues;
18
+ /** How many distinct values this accumulator saw. */
19
+ export declare function countedDistinctValues(accumulator: SimAthenaDistinctValues): number;