@kensio/yulin 0.43.0 → 0.44.0

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 (408) hide show
  1. package/README.md +1 -0
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
  3. package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
  4. package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
  5. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +11 -0
  6. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts.map +1 -1
  7. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +19 -0
  8. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js.map +1 -1
  9. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +3 -0
  10. package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
  11. package/dist/service/aws/factory/sim-aws-service-factory.js +4 -0
  12. package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
  13. package/dist/service/aws/sim-aws-account-region-scope.d.ts +5 -0
  14. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  15. package/dist/service/aws/sim-aws-account-region-scope.js +6 -0
  16. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  17. package/dist/service/aws/sim-aws.d.ts +3 -0
  18. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  19. package/dist/service/aws/sim-aws.js +4 -0
  20. package/dist/service/aws/sim-aws.js.map +1 -1
  21. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.d.ts.map +1 -1
  22. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.js +8 -0
  23. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.js.map +1 -1
  24. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-event-source-mapping-cfn.d.ts +28 -0
  25. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-event-source-mapping-cfn.d.ts.map +1 -0
  26. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-event-source-mapping-cfn.js +33 -0
  27. package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-event-source-mapping-cfn.js.map +1 -0
  28. package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.d.ts.map +1 -1
  29. package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.js +2 -0
  30. package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.js.map +1 -1
  31. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-cfn-value-adapter.d.ts +6 -0
  32. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-cfn-value-adapter.d.ts.map +1 -0
  33. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-cfn-value-adapter.js +13 -0
  34. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-cfn-value-adapter.js.map +1 -0
  35. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-queue-cfn.d.ts +28 -0
  36. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-queue-cfn.d.ts.map +1 -0
  37. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-queue-cfn.js +40 -0
  38. package/dist/service/cloudformation/resource/cfn/sqs/sim-sqs-queue-cfn.js.map +1 -0
  39. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.d.ts.map +1 -1
  40. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.js +3 -0
  41. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.js.map +1 -1
  42. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +3 -0
  43. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts.map +1 -1
  44. package/dist/service/cloudformation/resource/sim-cfn-resource.js +4 -1
  45. package/dist/service/cloudformation/resource/sim-cfn-resource.js.map +1 -1
  46. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.d.ts.map +1 -1
  47. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  48. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js.map +1 -1
  49. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.d.ts +26 -0
  50. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.d.ts.map +1 -0
  51. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.js +33 -0
  52. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-creator.js.map +1 -0
  53. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts +28 -0
  54. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts.map +1 -0
  55. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +38 -0
  56. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js.map +1 -0
  57. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.d.ts +17 -0
  58. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.d.ts.map +1 -0
  59. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +71 -0
  60. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js.map +1 -0
  61. package/dist/service/lambda/cfn/function/sim-cfn-lambda-property-parser.d.ts +4 -0
  62. package/dist/service/lambda/cfn/function/sim-cfn-lambda-property-parser.d.ts.map +1 -1
  63. package/dist/service/lambda/cfn/function/sim-cfn-lambda-property-parser.js +12 -0
  64. package/dist/service/lambda/cfn/function/sim-cfn-lambda-property-parser.js.map +1 -1
  65. package/dist/service/lambda/cfn/function/sim-cfn-lambda-target-function.d.ts +5 -6
  66. package/dist/service/lambda/cfn/function/sim-cfn-lambda-target-function.d.ts.map +1 -1
  67. package/dist/service/lambda/cfn/function/sim-cfn-lambda-target-function.js +7 -13
  68. package/dist/service/lambda/cfn/function/sim-cfn-lambda-target-function.js.map +1 -1
  69. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.d.ts +1 -0
  70. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.d.ts.map +1 -1
  71. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.js +8 -0
  72. package/dist/service/lambda/cfn/sim-cfn-lambda-resource-factory.js.map +1 -1
  73. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +25 -0
  74. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts.map +1 -0
  75. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +55 -0
  76. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js.map +1 -0
  77. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.d.ts +6 -0
  78. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.d.ts.map +1 -0
  79. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +64 -0
  80. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js.map +1 -0
  81. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts +17 -0
  82. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts.map +1 -0
  83. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js +47 -0
  84. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js.map +1 -0
  85. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts +53 -0
  86. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts.map +1 -0
  87. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +77 -0
  88. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js.map +1 -0
  89. package/dist/service/lambda/command/event-source-mapping/event-source-mapping-access.d.ts +41 -0
  90. package/dist/service/lambda/command/event-source-mapping/event-source-mapping-access.d.ts.map +1 -0
  91. package/dist/service/lambda/command/event-source-mapping/event-source-mapping-access.js +51 -0
  92. package/dist/service/lambda/command/event-source-mapping/event-source-mapping-access.js.map +1 -0
  93. package/dist/service/lambda/command/event-source-mapping/event-source-mapping.command.d.ts +91 -0
  94. package/dist/service/lambda/command/event-source-mapping/event-source-mapping.command.d.ts.map +1 -0
  95. package/dist/service/lambda/command/event-source-mapping/event-source-mapping.command.js +8 -0
  96. package/dist/service/lambda/command/event-source-mapping/event-source-mapping.command.js.map +1 -0
  97. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts +60 -0
  98. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts.map +1 -0
  99. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js +89 -0
  100. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js.map +1 -0
  101. package/dist/service/lambda/command/sim-lambda-command.types.d.ts +1 -0
  102. package/dist/service/lambda/command/sim-lambda-command.types.d.ts.map +1 -1
  103. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-delivery.d.ts +27 -0
  104. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-delivery.d.ts.map +1 -0
  105. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-delivery.js +32 -0
  106. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-delivery.js.map +1 -0
  107. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-schedule.d.ts +40 -0
  108. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-schedule.d.ts.map +1 -0
  109. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-schedule.js +55 -0
  110. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-schedule.js.map +1 -0
  111. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller.d.ts +85 -0
  112. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller.d.ts.map +1 -0
  113. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller.js +136 -0
  114. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller.js.map +1 -0
  115. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-batch-response.d.ts +49 -0
  116. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-batch-response.d.ts.map +1 -0
  117. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-batch-response.js +97 -0
  118. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-batch-response.js.map +1 -0
  119. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-event.d.ts +56 -0
  120. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-event.d.ts.map +1 -0
  121. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-event.js +55 -0
  122. package/dist/service/lambda/event-source/poll/sim-lambda-sqs-event.js.map +1 -0
  123. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queue-service.d.ts +49 -0
  124. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queue-service.d.ts.map +1 -0
  125. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queue-service.js +2 -0
  126. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queue-service.js.map +1 -0
  127. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queues.d.ts +118 -0
  128. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queues.d.ts.map +1 -0
  129. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queues.js +49 -0
  130. package/dist/service/lambda/event-source/queue/sim-lambda-event-source-queues.js.map +1 -0
  131. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +32 -0
  132. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts.map +1 -0
  133. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +52 -0
  134. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js.map +1 -0
  135. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queue-attributes.d.ts +29 -0
  136. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queue-attributes.d.ts.map +1 -0
  137. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queue-attributes.js +49 -0
  138. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queue-attributes.js.map +1 -0
  139. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queues.d.ts +57 -0
  140. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queues.d.ts.map +1 -0
  141. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queues.js +89 -0
  142. package/dist/service/lambda/event-source/queue/sim-sqs-event-source-queues.js.map +1 -0
  143. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping-store.d.ts +46 -0
  144. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping-store.d.ts.map +1 -0
  145. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping-store.js +57 -0
  146. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping-store.js.map +1 -0
  147. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +101 -0
  148. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts.map +1 -0
  149. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +93 -0
  150. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js.map +1 -0
  151. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts +37 -0
  152. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts.map +1 -0
  153. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.js +44 -0
  154. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.js.map +1 -0
  155. package/dist/service/lambda/event-source/sim-lambda-event-source-role-permissions.d.ts +23 -0
  156. package/dist/service/lambda/event-source/sim-lambda-event-source-role-permissions.d.ts.map +1 -0
  157. package/dist/service/lambda/event-source/sim-lambda-event-source-role-permissions.js +46 -0
  158. package/dist/service/lambda/event-source/sim-lambda-event-source-role-permissions.js.map +1 -0
  159. package/dist/service/lambda/function/sim-lambda-function-name.d.ts +10 -0
  160. package/dist/service/lambda/function/sim-lambda-function-name.d.ts.map +1 -0
  161. package/dist/service/lambda/function/sim-lambda-function-name.js +18 -0
  162. package/dist/service/lambda/function/sim-lambda-function-name.js.map +1 -0
  163. package/dist/service/lambda/function/url/sim-lambda-function-lookup.d.ts +4 -0
  164. package/dist/service/lambda/function/url/sim-lambda-function-lookup.d.ts.map +1 -1
  165. package/dist/service/lambda/function/url/sim-lambda-function-lookup.js +6 -0
  166. package/dist/service/lambda/function/url/sim-lambda-function-lookup.js.map +1 -1
  167. package/dist/service/lambda/index.d.ts +1 -0
  168. package/dist/service/lambda/index.d.ts.map +1 -1
  169. package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.d.ts.map +1 -1
  170. package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.js +16 -0
  171. package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.js.map +1 -1
  172. package/dist/service/lambda/sim-lambda-commands.d.ts +51 -0
  173. package/dist/service/lambda/sim-lambda-commands.d.ts.map +1 -0
  174. package/dist/service/lambda/sim-lambda-commands.js +84 -0
  175. package/dist/service/lambda/sim-lambda-commands.js.map +1 -0
  176. package/dist/service/lambda/sim-lambda.d.ts +35 -39
  177. package/dist/service/lambda/sim-lambda.d.ts.map +1 -1
  178. package/dist/service/lambda/sim-lambda.js +47 -65
  179. package/dist/service/lambda/sim-lambda.js.map +1 -1
  180. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.d.ts +25 -0
  181. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.d.ts.map +1 -0
  182. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.js +33 -0
  183. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-creator.js.map +1 -0
  184. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-name.d.ts +45 -0
  185. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-name.d.ts.map +1 -0
  186. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-name.js +67 -0
  187. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-name.js.map +1 -0
  188. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.d.ts +44 -0
  189. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.d.ts.map +1 -0
  190. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.js +72 -0
  191. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.js.map +1 -0
  192. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.d.ts +47 -0
  193. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.d.ts.map +1 -0
  194. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.js +122 -0
  195. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.js.map +1 -0
  196. package/dist/service/sqs/cfn/sim-sqs-cfn-resource-factory.d.ts +24 -0
  197. package/dist/service/sqs/cfn/sim-sqs-cfn-resource-factory.d.ts.map +1 -0
  198. package/dist/service/sqs/cfn/sim-sqs-cfn-resource-factory.js +29 -0
  199. package/dist/service/sqs/cfn/sim-sqs-cfn-resource-factory.js.map +1 -0
  200. package/dist/service/sqs/command/authorize/sim-sqs-authorizer.d.ts +41 -0
  201. package/dist/service/sqs/command/authorize/sim-sqs-authorizer.d.ts.map +1 -0
  202. package/dist/service/sqs/command/authorize/sim-sqs-authorizer.js +51 -0
  203. package/dist/service/sqs/command/authorize/sim-sqs-authorizer.js.map +1 -0
  204. package/dist/service/sqs/command/message/consume.command.d.ts +61 -0
  205. package/dist/service/sqs/command/message/consume.command.d.ts.map +1 -0
  206. package/dist/service/sqs/command/message/consume.command.js +2 -0
  207. package/dist/service/sqs/command/message/consume.command.js.map +1 -0
  208. package/dist/service/sqs/command/message/receive.command.d.ts +40 -0
  209. package/dist/service/sqs/command/message/receive.command.d.ts.map +1 -0
  210. package/dist/service/sqs/command/message/receive.command.js +2 -0
  211. package/dist/service/sqs/command/message/receive.command.js.map +1 -0
  212. package/dist/service/sqs/command/message/send.command.d.ts +80 -0
  213. package/dist/service/sqs/command/message/send.command.d.ts.map +1 -0
  214. package/dist/service/sqs/command/message/send.command.js +2 -0
  215. package/dist/service/sqs/command/message/send.command.js.map +1 -0
  216. package/dist/service/sqs/command/message/sim-sqs-batch-entries.d.ts +39 -0
  217. package/dist/service/sqs/command/message/sim-sqs-batch-entries.d.ts.map +1 -0
  218. package/dist/service/sqs/command/message/sim-sqs-batch-entries.js +67 -0
  219. package/dist/service/sqs/command/message/sim-sqs-batch-entries.js.map +1 -0
  220. package/dist/service/sqs/command/message/sim-sqs-change-message-visibility.d.ts +31 -0
  221. package/dist/service/sqs/command/message/sim-sqs-change-message-visibility.d.ts.map +1 -0
  222. package/dist/service/sqs/command/message/sim-sqs-change-message-visibility.js +51 -0
  223. package/dist/service/sqs/command/message/sim-sqs-change-message-visibility.js.map +1 -0
  224. package/dist/service/sqs/command/message/sim-sqs-delete-message-commands.d.ts +38 -0
  225. package/dist/service/sqs/command/message/sim-sqs-delete-message-commands.d.ts.map +1 -0
  226. package/dist/service/sqs/command/message/sim-sqs-delete-message-commands.js +58 -0
  227. package/dist/service/sqs/command/message/sim-sqs-delete-message-commands.js.map +1 -0
  228. package/dist/service/sqs/command/message/sim-sqs-message-handles.d.ts +28 -0
  229. package/dist/service/sqs/command/message/sim-sqs-message-handles.d.ts.map +1 -0
  230. package/dist/service/sqs/command/message/sim-sqs-message-handles.js +36 -0
  231. package/dist/service/sqs/command/message/sim-sqs-message-handles.js.map +1 -0
  232. package/dist/service/sqs/command/message/sim-sqs-receive-limits.d.ts +27 -0
  233. package/dist/service/sqs/command/message/sim-sqs-receive-limits.d.ts.map +1 -0
  234. package/dist/service/sqs/command/message/sim-sqs-receive-limits.js +70 -0
  235. package/dist/service/sqs/command/message/sim-sqs-receive-limits.js.map +1 -0
  236. package/dist/service/sqs/command/message/sim-sqs-receive-message.d.ts +32 -0
  237. package/dist/service/sqs/command/message/sim-sqs-receive-message.d.ts.map +1 -0
  238. package/dist/service/sqs/command/message/sim-sqs-receive-message.js +33 -0
  239. package/dist/service/sqs/command/message/sim-sqs-receive-message.js.map +1 -0
  240. package/dist/service/sqs/command/message/sim-sqs-receive-request.d.ts +33 -0
  241. package/dist/service/sqs/command/message/sim-sqs-receive-request.d.ts.map +1 -0
  242. package/dist/service/sqs/command/message/sim-sqs-receive-request.js +55 -0
  243. package/dist/service/sqs/command/message/sim-sqs-receive-request.js.map +1 -0
  244. package/dist/service/sqs/command/message/sim-sqs-received-message-view.d.ts +25 -0
  245. package/dist/service/sqs/command/message/sim-sqs-received-message-view.d.ts.map +1 -0
  246. package/dist/service/sqs/command/message/sim-sqs-received-message-view.js +38 -0
  247. package/dist/service/sqs/command/message/sim-sqs-received-message-view.js.map +1 -0
  248. package/dist/service/sqs/command/message/sim-sqs-send-message-commands.d.ts +32 -0
  249. package/dist/service/sqs/command/message/sim-sqs-send-message-commands.d.ts.map +1 -0
  250. package/dist/service/sqs/command/message/sim-sqs-send-message-commands.js +56 -0
  251. package/dist/service/sqs/command/message/sim-sqs-send-message-commands.js.map +1 -0
  252. package/dist/service/sqs/command/message/sim-sqs-sent-message.d.ts +18 -0
  253. package/dist/service/sqs/command/message/sim-sqs-sent-message.d.ts.map +1 -0
  254. package/dist/service/sqs/command/message/sim-sqs-sent-message.js +37 -0
  255. package/dist/service/sqs/command/message/sim-sqs-sent-message.js.map +1 -0
  256. package/dist/service/sqs/command/queue/queue.command.d.ts +114 -0
  257. package/dist/service/sqs/command/queue/queue.command.d.ts.map +1 -0
  258. package/dist/service/sqs/command/queue/queue.command.js +2 -0
  259. package/dist/service/sqs/command/queue/queue.command.js.map +1 -0
  260. package/dist/service/sqs/command/queue/sim-sqs-create-queue.d.ts +51 -0
  261. package/dist/service/sqs/command/queue/sim-sqs-create-queue.d.ts.map +1 -0
  262. package/dist/service/sqs/command/queue/sim-sqs-create-queue.js +70 -0
  263. package/dist/service/sqs/command/queue/sim-sqs-create-queue.js.map +1 -0
  264. package/dist/service/sqs/command/queue/sim-sqs-queue-access.d.ts +63 -0
  265. package/dist/service/sqs/command/queue/sim-sqs-queue-access.d.ts.map +1 -0
  266. package/dist/service/sqs/command/queue/sim-sqs-queue-access.js +98 -0
  267. package/dist/service/sqs/command/queue/sim-sqs-queue-access.js.map +1 -0
  268. package/dist/service/sqs/command/queue/sim-sqs-queue-attribute-commands.d.ts +45 -0
  269. package/dist/service/sqs/command/queue/sim-sqs-queue-attribute-commands.d.ts.map +1 -0
  270. package/dist/service/sqs/command/queue/sim-sqs-queue-attribute-commands.js +74 -0
  271. package/dist/service/sqs/command/queue/sim-sqs-queue-attribute-commands.js.map +1 -0
  272. package/dist/service/sqs/command/queue/sim-sqs-queue-commands.d.ts +47 -0
  273. package/dist/service/sqs/command/queue/sim-sqs-queue-commands.d.ts.map +1 -0
  274. package/dist/service/sqs/command/queue/sim-sqs-queue-commands.js +55 -0
  275. package/dist/service/sqs/command/queue/sim-sqs-queue-commands.js.map +1 -0
  276. package/dist/service/sqs/command/queue/sim-sqs-queue-page.d.ts +27 -0
  277. package/dist/service/sqs/command/queue/sim-sqs-queue-page.d.ts.map +1 -0
  278. package/dist/service/sqs/command/queue/sim-sqs-queue-page.js +54 -0
  279. package/dist/service/sqs/command/queue/sim-sqs-queue-page.js.map +1 -0
  280. package/dist/service/sqs/command/queue/sim-sqs-unsimulated-queue-input.d.ts +18 -0
  281. package/dist/service/sqs/command/queue/sim-sqs-unsimulated-queue-input.d.ts.map +1 -0
  282. package/dist/service/sqs/command/queue/sim-sqs-unsimulated-queue-input.js +27 -0
  283. package/dist/service/sqs/command/queue/sim-sqs-unsimulated-queue-input.js.map +1 -0
  284. package/dist/service/sqs/command/sim-sqs-command.types.d.ts +8 -0
  285. package/dist/service/sqs/command/sim-sqs-command.types.d.ts.map +1 -0
  286. package/dist/service/sqs/command/sim-sqs-command.types.js +2 -0
  287. package/dist/service/sqs/command/sim-sqs-command.types.js.map +1 -0
  288. package/dist/service/sqs/error/sim-sqs.error.d.ts +162 -0
  289. package/dist/service/sqs/error/sim-sqs.error.d.ts.map +1 -0
  290. package/dist/service/sqs/error/sim-sqs.error.js +191 -0
  291. package/dist/service/sqs/error/sim-sqs.error.js.map +1 -0
  292. package/dist/service/sqs/index.d.ts +14 -0
  293. package/dist/service/sqs/index.d.ts.map +1 -0
  294. package/dist/service/sqs/index.js +13 -0
  295. package/dist/service/sqs/index.js.map +1 -0
  296. package/dist/service/sqs/message/sim-sqs-message-attribute-payload.d.ts +56 -0
  297. package/dist/service/sqs/message/sim-sqs-message-attribute-payload.d.ts.map +1 -0
  298. package/dist/service/sqs/message/sim-sqs-message-attribute-payload.js +42 -0
  299. package/dist/service/sqs/message/sim-sqs-message-attribute-payload.js.map +1 -0
  300. package/dist/service/sqs/message/sim-sqs-message-attribute-rules.d.ts +23 -0
  301. package/dist/service/sqs/message/sim-sqs-message-attribute-rules.d.ts.map +1 -0
  302. package/dist/service/sqs/message/sim-sqs-message-attribute-rules.js +68 -0
  303. package/dist/service/sqs/message/sim-sqs-message-attribute-rules.js.map +1 -0
  304. package/dist/service/sqs/message/sim-sqs-message-attribute-value.d.ts +17 -0
  305. package/dist/service/sqs/message/sim-sqs-message-attribute-value.d.ts.map +1 -0
  306. package/dist/service/sqs/message/sim-sqs-message-attribute-value.js +2 -0
  307. package/dist/service/sqs/message/sim-sqs-message-attribute-value.js.map +1 -0
  308. package/dist/service/sqs/message/sim-sqs-message-attribute.d.ts +29 -0
  309. package/dist/service/sqs/message/sim-sqs-message-attribute.d.ts.map +1 -0
  310. package/dist/service/sqs/message/sim-sqs-message-attribute.js +56 -0
  311. package/dist/service/sqs/message/sim-sqs-message-attribute.js.map +1 -0
  312. package/dist/service/sqs/message/sim-sqs-message-attributes.d.ts +44 -0
  313. package/dist/service/sqs/message/sim-sqs-message-attributes.d.ts.map +1 -0
  314. package/dist/service/sqs/message/sim-sqs-message-attributes.js +93 -0
  315. package/dist/service/sqs/message/sim-sqs-message-attributes.js.map +1 -0
  316. package/dist/service/sqs/message/sim-sqs-message-body.d.ts +18 -0
  317. package/dist/service/sqs/message/sim-sqs-message-body.d.ts.map +1 -0
  318. package/dist/service/sqs/message/sim-sqs-message-body.js +66 -0
  319. package/dist/service/sqs/message/sim-sqs-message-body.js.map +1 -0
  320. package/dist/service/sqs/message/sim-sqs-message-store.d.ts +74 -0
  321. package/dist/service/sqs/message/sim-sqs-message-store.d.ts.map +1 -0
  322. package/dist/service/sqs/message/sim-sqs-message-store.js +99 -0
  323. package/dist/service/sqs/message/sim-sqs-message-store.js.map +1 -0
  324. package/dist/service/sqs/message/sim-sqs-message-system-attributes.d.ts +28 -0
  325. package/dist/service/sqs/message/sim-sqs-message-system-attributes.d.ts.map +1 -0
  326. package/dist/service/sqs/message/sim-sqs-message-system-attributes.js +75 -0
  327. package/dist/service/sqs/message/sim-sqs-message-system-attributes.js.map +1 -0
  328. package/dist/service/sqs/message/sim-sqs-message-visibility.d.ts +56 -0
  329. package/dist/service/sqs/message/sim-sqs-message-visibility.d.ts.map +1 -0
  330. package/dist/service/sqs/message/sim-sqs-message-visibility.js +79 -0
  331. package/dist/service/sqs/message/sim-sqs-message-visibility.js.map +1 -0
  332. package/dist/service/sqs/message/sim-sqs-message-writer.d.ts +41 -0
  333. package/dist/service/sqs/message/sim-sqs-message-writer.d.ts.map +1 -0
  334. package/dist/service/sqs/message/sim-sqs-message-writer.js +56 -0
  335. package/dist/service/sqs/message/sim-sqs-message-writer.js.map +1 -0
  336. package/dist/service/sqs/message/sim-sqs-message.d.ts +96 -0
  337. package/dist/service/sqs/message/sim-sqs-message.d.ts.map +1 -0
  338. package/dist/service/sqs/message/sim-sqs-message.js +136 -0
  339. package/dist/service/sqs/message/sim-sqs-message.js.map +1 -0
  340. package/dist/service/sqs/message/sim-sqs-receipt-handle.d.ts +10 -0
  341. package/dist/service/sqs/message/sim-sqs-receipt-handle.d.ts.map +1 -0
  342. package/dist/service/sqs/message/sim-sqs-receipt-handle.js +14 -0
  343. package/dist/service/sqs/message/sim-sqs-receipt-handle.js.map +1 -0
  344. package/dist/service/sqs/queue/sim-sqs-dead-letter-targets.d.ts +51 -0
  345. package/dist/service/sqs/queue/sim-sqs-dead-letter-targets.d.ts.map +1 -0
  346. package/dist/service/sqs/queue/sim-sqs-dead-letter-targets.js +62 -0
  347. package/dist/service/sqs/queue/sim-sqs-dead-letter-targets.js.map +1 -0
  348. package/dist/service/sqs/queue/sim-sqs-deleted-queue-names.d.ts +20 -0
  349. package/dist/service/sqs/queue/sim-sqs-deleted-queue-names.d.ts.map +1 -0
  350. package/dist/service/sqs/queue/sim-sqs-deleted-queue-names.js +42 -0
  351. package/dist/service/sqs/queue/sim-sqs-deleted-queue-names.js.map +1 -0
  352. package/dist/service/sqs/queue/sim-sqs-queue-activity.d.ts +65 -0
  353. package/dist/service/sqs/queue/sim-sqs-queue-activity.d.ts.map +1 -0
  354. package/dist/service/sqs/queue/sim-sqs-queue-activity.js +57 -0
  355. package/dist/service/sqs/queue/sim-sqs-queue-activity.js.map +1 -0
  356. package/dist/service/sqs/queue/sim-sqs-queue-arn.d.ts +41 -0
  357. package/dist/service/sqs/queue/sim-sqs-queue-arn.d.ts.map +1 -0
  358. package/dist/service/sqs/queue/sim-sqs-queue-arn.js +47 -0
  359. package/dist/service/sqs/queue/sim-sqs-queue-arn.js.map +1 -0
  360. package/dist/service/sqs/queue/sim-sqs-queue-attribute-names.d.ts +27 -0
  361. package/dist/service/sqs/queue/sim-sqs-queue-attribute-names.d.ts.map +1 -0
  362. package/dist/service/sqs/queue/sim-sqs-queue-attribute-names.js +83 -0
  363. package/dist/service/sqs/queue/sim-sqs-queue-attribute-names.js.map +1 -0
  364. package/dist/service/sqs/queue/sim-sqs-queue-attribute-numbers.d.ts +34 -0
  365. package/dist/service/sqs/queue/sim-sqs-queue-attribute-numbers.d.ts.map +1 -0
  366. package/dist/service/sqs/queue/sim-sqs-queue-attribute-numbers.js +93 -0
  367. package/dist/service/sqs/queue/sim-sqs-queue-attribute-numbers.js.map +1 -0
  368. package/dist/service/sqs/queue/sim-sqs-queue-attribute-specs.d.ts +20 -0
  369. package/dist/service/sqs/queue/sim-sqs-queue-attribute-specs.d.ts.map +1 -0
  370. package/dist/service/sqs/queue/sim-sqs-queue-attribute-specs.js +37 -0
  371. package/dist/service/sqs/queue/sim-sqs-queue-attribute-specs.js.map +1 -0
  372. package/dist/service/sqs/queue/sim-sqs-queue-attributes.d.ts +60 -0
  373. package/dist/service/sqs/queue/sim-sqs-queue-attributes.d.ts.map +1 -0
  374. package/dist/service/sqs/queue/sim-sqs-queue-attributes.js +96 -0
  375. package/dist/service/sqs/queue/sim-sqs-queue-attributes.js.map +1 -0
  376. package/dist/service/sqs/queue/sim-sqs-queue-name.d.ts +21 -0
  377. package/dist/service/sqs/queue/sim-sqs-queue-name.d.ts.map +1 -0
  378. package/dist/service/sqs/queue/sim-sqs-queue-name.js +47 -0
  379. package/dist/service/sqs/queue/sim-sqs-queue-name.js.map +1 -0
  380. package/dist/service/sqs/queue/sim-sqs-queue-report.d.ts +22 -0
  381. package/dist/service/sqs/queue/sim-sqs-queue-report.d.ts.map +1 -0
  382. package/dist/service/sqs/queue/sim-sqs-queue-report.js +29 -0
  383. package/dist/service/sqs/queue/sim-sqs-queue-report.js.map +1 -0
  384. package/dist/service/sqs/queue/sim-sqs-queue-store.d.ts +60 -0
  385. package/dist/service/sqs/queue/sim-sqs-queue-store.d.ts.map +1 -0
  386. package/dist/service/sqs/queue/sim-sqs-queue-store.js +87 -0
  387. package/dist/service/sqs/queue/sim-sqs-queue-store.js.map +1 -0
  388. package/dist/service/sqs/queue/sim-sqs-queue-url.d.ts +24 -0
  389. package/dist/service/sqs/queue/sim-sqs-queue-url.d.ts.map +1 -0
  390. package/dist/service/sqs/queue/sim-sqs-queue-url.js +36 -0
  391. package/dist/service/sqs/queue/sim-sqs-queue-url.js.map +1 -0
  392. package/dist/service/sqs/queue/sim-sqs-queue.d.ts +130 -0
  393. package/dist/service/sqs/queue/sim-sqs-queue.d.ts.map +1 -0
  394. package/dist/service/sqs/queue/sim-sqs-queue.js +188 -0
  395. package/dist/service/sqs/queue/sim-sqs-queue.js.map +1 -0
  396. package/dist/service/sqs/queue/sim-sqs-redrive-policy.d.ts +30 -0
  397. package/dist/service/sqs/queue/sim-sqs-redrive-policy.d.ts.map +1 -0
  398. package/dist/service/sqs/queue/sim-sqs-redrive-policy.js +118 -0
  399. package/dist/service/sqs/queue/sim-sqs-redrive-policy.js.map +1 -0
  400. package/dist/service/sqs/sdk/sim-sqs-sdk-command-router.d.ts +18 -0
  401. package/dist/service/sqs/sdk/sim-sqs-sdk-command-router.d.ts.map +1 -0
  402. package/dist/service/sqs/sdk/sim-sqs-sdk-command-router.js +76 -0
  403. package/dist/service/sqs/sdk/sim-sqs-sdk-command-router.js.map +1 -0
  404. package/dist/service/sqs/sim-sqs.d.ts +119 -0
  405. package/dist/service/sqs/sim-sqs.d.ts.map +1 -0
  406. package/dist/service/sqs/sim-sqs.js +213 -0
  407. package/dist/service/sqs/sim-sqs.js.map +1 -0
  408. package/package.json +6 -1
@@ -0,0 +1,93 @@
1
+ import { createHash } from "node:crypto";
2
+ import { SimSqsMessageAttribute } from "./sim-sqs-message-attribute.js";
3
+ const everyAttributeSelectors = new Set(["All", ".*"]);
4
+ const prefixSelectorSuffix = ".*";
5
+ /**
6
+ * The message attributes of one message.
7
+ *
8
+ * Attributes are digested and reported as a set rather than one at a time,
9
+ * because both are properties of the set: the digest covers the attributes in
10
+ * name order, and a receive request selects a subset of them.
11
+ */
12
+ export class SimSqsMessageAttributes {
13
+ attributes;
14
+ constructor(attributes) {
15
+ this.attributes = attributes;
16
+ }
17
+ /**
18
+ * Read the message attributes of a request, refusing any real SQS would
19
+ * refuse.
20
+ */
21
+ static of(input) {
22
+ const attributes = Object.entries(input ?? {})
23
+ .filter((entry) => entry[1] !== undefined)
24
+ .map(([name, value]) => SimSqsMessageAttribute.of(name, value));
25
+ return new this(attributes);
26
+ }
27
+ /**
28
+ * Whether there are no attributes here, in which case SQS reports neither the
29
+ * attributes nor their digest.
30
+ */
31
+ get isEmpty() {
32
+ return this.attributes.length === 0;
33
+ }
34
+ /**
35
+ * The MD5 digest of these attributes, as SQS reports it.
36
+ *
37
+ * The names are ordered by their code units rather than by a locale, because
38
+ * the order decides the digest. A locale-aware comparison sorts mixed-case
39
+ * names differently from AWS, and differently on different machines.
40
+ */
41
+ digest() {
42
+ const digested = Buffer.concat(this.attributes
43
+ .toSorted(byName)
44
+ .map((attribute) => attribute.digestBytes()));
45
+ return createHash("md5").update(digested).digest("hex");
46
+ }
47
+ /**
48
+ * These attributes as SQS reports them in a response.
49
+ */
50
+ reported() {
51
+ return Object.fromEntries(this.attributes.map((attribute) => [
52
+ attribute.name,
53
+ attribute.reported(),
54
+ ]));
55
+ }
56
+ /**
57
+ * The attributes a receive request asked for.
58
+ *
59
+ * Real SQS returns no message attributes unless they are named, so a consumer
60
+ * that forgot to ask for them gets none here too. `All` and `.*` select every
61
+ * attribute, a bare name selects that one, and a name ending in `.*` selects
62
+ * every attribute with that prefix.
63
+ */
64
+ selected(names) {
65
+ if (names === undefined || names.length === 0) {
66
+ return new SimSqsMessageAttributes([]);
67
+ }
68
+ if (names.some((name) => everyAttributeSelectors.has(name))) {
69
+ return this;
70
+ }
71
+ return new SimSqsMessageAttributes(this.attributes.filter((attribute) => names.some((name) => selects(name, attribute.name))));
72
+ }
73
+ }
74
+ /**
75
+ * Order two attributes by name, comparing code units rather than by locale.
76
+ */
77
+ function byName(one, other) {
78
+ // Attribute names within one message are unique, so there is no equal case.
79
+ if (one.name < other.name) {
80
+ return -1;
81
+ }
82
+ return 1;
83
+ }
84
+ /**
85
+ * Whether one requested attribute name selects an attribute.
86
+ */
87
+ function selects(requested, attributeName) {
88
+ if (requested.endsWith(prefixSelectorSuffix)) {
89
+ return attributeName.startsWith(requested.slice(0, -prefixSelectorSuffix.length));
90
+ }
91
+ return requested === attributeName;
92
+ }
93
+ //# sourceMappingURL=sim-sqs-message-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-attributes.js","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAMxE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACjB,UAAU,CAAoC;IAE/D,YAAoB,UAA6C;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,EAAE,CACP,KAA8C;QAE9C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;aAC3C,MAAM,CACL,CAAC,KAAK,EAAkD,EAAE,CACxD,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CACzB;aACA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAElE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACJ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,IAAI,CAAC,UAAU;aACZ,QAAQ,CAAC,MAAM,CAAC;aAChB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAC/C,CAAC;QAEF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,QAAQ,EAAE;SACrB,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAoC;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,uBAAuB,CAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACnC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CACpD,CACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,SAAS,MAAM,CACb,GAA2B,EAC3B,KAA6B;IAE7B,4EAA4E;IAC5E,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,SAAiB,EAAE,aAAqB;IACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC,UAAU,CAC7B,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACjD,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,KAAK,aAAa,CAAC;AACrC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * One message body, with the digest a sender checks it by.
3
+ *
4
+ * The digest is a real MD5 of the body, as real SQS reports, because that is the
5
+ * whole point of it: a sender comparing `MD5OfMessageBody` against its own
6
+ * digest either finds the body it sent or finds a bug, and a made-up value would
7
+ * tell it nothing.
8
+ */
9
+ export declare class SimSqsMessageBody {
10
+ readonly value: string;
11
+ readonly digest: string;
12
+ private constructor();
13
+ /**
14
+ * Read a message body, refusing one real SQS would refuse.
15
+ */
16
+ static of(value: string, maximumBytes: number): SimSqsMessageBody;
17
+ }
18
+ //# sourceMappingURL=sim-sqs-message-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-body.d.ts","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-body.ts"],"names":[],"mappings":"AAkCA;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,eAGN;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAgChE;CACF"}
@@ -0,0 +1,66 @@
1
+ import { createHash } from "node:crypto";
2
+ import { assertDefined } from "../../../util/type-guard/defined.js";
3
+ import { SimSqsInvalidMessageContents, SimSqsInvalidParameterValue, } from "../error/sim-sqs.error.js";
4
+ const allowedControlCharacters = new Set([0x9, 0xa, 0xd]);
5
+ const space = 0x20;
6
+ const beforeSurrogates = 0xd7_ff;
7
+ const afterSurrogates = 0xe0_00;
8
+ const lastAllowedBmp = 0xff_fd;
9
+ const firstSupplementary = 0x1_00_00;
10
+ const lastSupplementary = 0x10_ff_ff;
11
+ /**
12
+ * Whether a code point is one real SQS allows in a message body.
13
+ *
14
+ * The allowed set is tab, newline, carriage return, and the Unicode ranges
15
+ * either side of the surrogate block. Anything else, a control character or a
16
+ * lone surrogate, is refused rather than sent.
17
+ */
18
+ function isAllowedInBody(codePoint) {
19
+ if (allowedControlCharacters.has(codePoint)) {
20
+ return true;
21
+ }
22
+ return ((codePoint >= space && codePoint <= beforeSurrogates) ||
23
+ (codePoint >= afterSurrogates && codePoint <= lastAllowedBmp) ||
24
+ (codePoint >= firstSupplementary && codePoint <= lastSupplementary));
25
+ }
26
+ /**
27
+ * One message body, with the digest a sender checks it by.
28
+ *
29
+ * The digest is a real MD5 of the body, as real SQS reports, because that is the
30
+ * whole point of it: a sender comparing `MD5OfMessageBody` against its own
31
+ * digest either finds the body it sent or finds a bug, and a made-up value would
32
+ * tell it nothing.
33
+ */
34
+ export class SimSqsMessageBody {
35
+ value;
36
+ digest;
37
+ constructor(value) {
38
+ this.value = value;
39
+ this.digest = createHash("md5").update(value, "utf8").digest("hex");
40
+ }
41
+ /**
42
+ * Read a message body, refusing one real SQS would refuse.
43
+ */
44
+ static of(value, maximumBytes) {
45
+ if (value === "") {
46
+ throw new SimSqsInvalidParameterValue("The request must contain the parameter MessageBody");
47
+ }
48
+ const byteLength = Buffer.byteLength(value, "utf8");
49
+ if (byteLength > maximumBytes) {
50
+ throw new SimSqsInvalidParameterValue(`One or more parameters are invalid. Reason: Message must be shorter ` +
51
+ `than ${String(maximumBytes)} bytes, and this one is ` +
52
+ `${String(byteLength)} bytes.`);
53
+ }
54
+ // Iterating a string yields whole code points, so a surrogate pair is one
55
+ // character here rather than two unpaired halves.
56
+ for (const character of value) {
57
+ const codePoint = character.codePointAt(0);
58
+ assertDefined(codePoint, "Every character has a first code point");
59
+ if (!isAllowedInBody(codePoint)) {
60
+ throw new SimSqsInvalidMessageContents("The message contains characters outside the allowed set");
61
+ }
62
+ }
63
+ return new this(value);
64
+ }
65
+ }
66
+ //# sourceMappingURL=sim-sqs-message-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-body.js","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACjC,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,kBAAkB,GAAG,SAAS,CAAC;AACrC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAErC;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,CAAC,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,gBAAgB,CAAC;QACrD,CAAC,SAAS,IAAI,eAAe,IAAI,SAAS,IAAI,cAAc,CAAC;QAC7D,CAAC,SAAS,IAAI,kBAAkB,IAAI,SAAS,IAAI,iBAAiB,CAAC,CACpE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IACZ,KAAK,CAAS;IACd,MAAM,CAAS;IAE/B,YAAoB,KAAa;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,KAAa,EAAE,YAAoB;QAC3C,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,2BAA2B,CACnC,oDAAoD,CACrD,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpD,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,2BAA2B,CACnC,sEAAsE;gBACpE,QAAQ,MAAM,CAAC,YAAY,CAAC,0BAA0B;gBACtD,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CACjC,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,kDAAkD;QAClD,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAE3C,aAAa,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;YAEnE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,4BAA4B,CACpC,yDAAyD,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,74 @@
1
+ import type { SimSqsMessage } from "./sim-sqs-message.js";
2
+ /**
3
+ * How many messages a queue holds in each of the states SQS counts separately.
4
+ */
5
+ export interface SimSqsMessageCounts {
6
+ readonly visible: number;
7
+ readonly inFlight: number;
8
+ readonly delayed: number;
9
+ }
10
+ /**
11
+ * The messages of one simulated queue, and the receipt handles it has issued.
12
+ *
13
+ * Handles are kept here rather than on the messages because a handle outlives
14
+ * the message it names: a consumer deleting an already deleted message is
15
+ * accepted by real SQS, and a handle the queue never issued is not. Only a store
16
+ * of what has been issued can tell those two apart.
17
+ */
18
+ export declare class SimSqsMessageStore {
19
+ private messages;
20
+ private readonly handles;
21
+ /**
22
+ * Take a newly sent message.
23
+ */
24
+ add(message: SimSqsMessage): void;
25
+ /**
26
+ * Forget the messages whose retention period has run out.
27
+ *
28
+ * Real SQS drops a message once it has been on the queue longer than the
29
+ * retention period, so advancing simulated time past it loses the message here
30
+ * too rather than keeping it forever.
31
+ */
32
+ dropExpired(instant: Date, retentionSeconds: number): void;
33
+ /**
34
+ * The messages that can be received at an instant, oldest first.
35
+ */
36
+ receivable(instant: Date, limit: number): readonly SimSqsMessage[];
37
+ /**
38
+ * When the earliest message that cannot be received yet becomes receivable,
39
+ * or nothing when every message here is receivable already.
40
+ */
41
+ nextAvailability(instant: Date): Date | undefined;
42
+ /**
43
+ * The messages that have used up their receives and are receivable again.
44
+ *
45
+ * These are the ones a redrive policy moves to the dead-letter queue. Being
46
+ * visible again is the trigger: a message is only out of attempts once the
47
+ * visibility timeout of its last receive has lapsed, and until then the
48
+ * consumer holding it may still delete it.
49
+ */
50
+ exhausted(instant: Date, maxReceiveCount: number): readonly SimSqsMessage[];
51
+ /**
52
+ * Record that a message was handed out under a receipt handle.
53
+ */
54
+ recordHandle(receiptHandle: string, message: SimSqsMessage): void;
55
+ /**
56
+ * The message a receipt handle names, or undefined for a handle this queue
57
+ * never issued.
58
+ */
59
+ forHandle(receiptHandle: string): SimSqsMessage | undefined;
60
+ /**
61
+ * Forget a deleted message.
62
+ */
63
+ remove(message: SimSqsMessage): void;
64
+ /**
65
+ * Forget every message, as PurgeQueue does.
66
+ */
67
+ purge(): void;
68
+ /**
69
+ * How many messages are in each state at an instant.
70
+ */
71
+ countsAt(instant: Date): SimSqsMessageCounts;
72
+ private countWhere;
73
+ }
74
+ //# sourceMappingURL=sim-sqs-message-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-store.d.ts","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEhC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAIzD;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAIjE;IAED;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAUhD;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAK1E;IAED;;OAEG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAEhE;IAED;;;OAGG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE1D;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEnC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,mBAAmB,CAM3C;IAED,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The messages of one simulated queue, and the receipt handles it has issued.
3
+ *
4
+ * Handles are kept here rather than on the messages because a handle outlives
5
+ * the message it names: a consumer deleting an already deleted message is
6
+ * accepted by real SQS, and a handle the queue never issued is not. Only a store
7
+ * of what has been issued can tell those two apart.
8
+ */
9
+ export class SimSqsMessageStore {
10
+ messages = [];
11
+ handles = new Map();
12
+ /**
13
+ * Take a newly sent message.
14
+ */
15
+ add(message) {
16
+ this.messages = [...this.messages, message];
17
+ }
18
+ /**
19
+ * Forget the messages whose retention period has run out.
20
+ *
21
+ * Real SQS drops a message once it has been on the queue longer than the
22
+ * retention period, so advancing simulated time past it loses the message here
23
+ * too rather than keeping it forever.
24
+ */
25
+ dropExpired(instant, retentionSeconds) {
26
+ this.messages = this.messages.filter((message) => !message.hasExpiredBy(instant, retentionSeconds));
27
+ }
28
+ /**
29
+ * The messages that can be received at an instant, oldest first.
30
+ */
31
+ receivable(instant, limit) {
32
+ return this.messages
33
+ .filter((message) => message.isVisibleAt(instant))
34
+ .slice(0, limit);
35
+ }
36
+ /**
37
+ * When the earliest message that cannot be received yet becomes receivable,
38
+ * or nothing when every message here is receivable already.
39
+ */
40
+ nextAvailability(instant) {
41
+ const pending = this.messages
42
+ .filter((message) => !message.isVisibleAt(instant))
43
+ .map((message) => message.availableFrom.getTime());
44
+ if (pending.length === 0) {
45
+ return undefined;
46
+ }
47
+ return new Date(Math.min(...pending));
48
+ }
49
+ /**
50
+ * The messages that have used up their receives and are receivable again.
51
+ *
52
+ * These are the ones a redrive policy moves to the dead-letter queue. Being
53
+ * visible again is the trigger: a message is only out of attempts once the
54
+ * visibility timeout of its last receive has lapsed, and until then the
55
+ * consumer holding it may still delete it.
56
+ */
57
+ exhausted(instant, maxReceiveCount) {
58
+ return this.messages.filter((message) => message.isVisibleAt(instant) && message.receiveCount >= maxReceiveCount);
59
+ }
60
+ /**
61
+ * Record that a message was handed out under a receipt handle.
62
+ */
63
+ recordHandle(receiptHandle, message) {
64
+ this.handles.set(receiptHandle, message);
65
+ }
66
+ /**
67
+ * The message a receipt handle names, or undefined for a handle this queue
68
+ * never issued.
69
+ */
70
+ forHandle(receiptHandle) {
71
+ return this.handles.get(receiptHandle);
72
+ }
73
+ /**
74
+ * Forget a deleted message.
75
+ */
76
+ remove(message) {
77
+ this.messages = this.messages.filter((held) => held !== message);
78
+ }
79
+ /**
80
+ * Forget every message, as PurgeQueue does.
81
+ */
82
+ purge() {
83
+ this.messages = [];
84
+ }
85
+ /**
86
+ * How many messages are in each state at an instant.
87
+ */
88
+ countsAt(instant) {
89
+ return {
90
+ visible: this.countWhere((message) => message.isVisibleAt(instant)),
91
+ inFlight: this.countWhere((message) => message.isInFlightAt(instant)),
92
+ delayed: this.countWhere((message) => message.isDelayedAt(instant)),
93
+ };
94
+ }
95
+ countWhere(matches) {
96
+ return this.messages.filter((message) => matches(message)).length;
97
+ }
98
+ }
99
+ //# sourceMappingURL=sim-sqs-message-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-store.js","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The message system attributes one receive request asked for.
3
+ *
4
+ * Real SQS returns none of them unless they are named, so a consumer relying on
5
+ * `ApproximateReceiveCount` has to ask for it. Reporting them unasked would let
6
+ * a test read a value that would be missing on AWS.
7
+ */
8
+ export declare class SimSqsRequestedSystemAttributes {
9
+ private readonly names;
10
+ private constructor();
11
+ /**
12
+ * Read the attribute names a receive request asked for, refusing a name real
13
+ * SQS has no such attribute for.
14
+ *
15
+ * `MessageSystemAttributeNames` and the deprecated `AttributeNames` mean the
16
+ * same thing, so both are gathered here.
17
+ */
18
+ static of(...requested: readonly (readonly string[] | undefined)[]): SimSqsRequestedSystemAttributes;
19
+ /**
20
+ * Pick the requested attributes out of the ones a message has.
21
+ *
22
+ * Undefined means the response carries no `Attributes` at all, which is what
23
+ * real SQS sends when nothing was asked for.
24
+ */
25
+ from(available: ReadonlyMap<string, string>): Record<string, string> | undefined;
26
+ private selects;
27
+ }
28
+ //# sourceMappingURL=sim-sqs-message-system-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-system-attributes.d.ts","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-system-attributes.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,qBAAa,+BAA+B;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,OAAO,eAEN;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CACP,GAAG,SAAS,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,GACvD,+BAA+B,CAajC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAepC;IAED,OAAO,CAAC,OAAO;CAGhB"}
@@ -0,0 +1,75 @@
1
+ import { SimSqsInvalidAttributeName } from "../error/sim-sqs.error.js";
2
+ const everySelector = "All";
3
+ /**
4
+ * The message system attribute names real SQS accepts on a receive request.
5
+ *
6
+ * The FIFO ones and the tracing one are here because asking for them is valid:
7
+ * real SQS leaves an attribute out when the message has no value for it, so a
8
+ * request naming `MessageGroupId` on a standard queue gets silence rather than a
9
+ * failure. A name that is not an SQS attribute at all is refused.
10
+ */
11
+ const knownNames = new Set([
12
+ "ApproximateFirstReceiveTimestamp",
13
+ "ApproximateReceiveCount",
14
+ "AWSTraceHeader",
15
+ "DeadLetterQueueSourceArn",
16
+ "MessageDeduplicationId",
17
+ "MessageGroupId",
18
+ "SenderId",
19
+ "SentTimestamp",
20
+ "SequenceNumber",
21
+ "SqsManagedSseEnabled",
22
+ ]);
23
+ /**
24
+ * The message system attributes one receive request asked for.
25
+ *
26
+ * Real SQS returns none of them unless they are named, so a consumer relying on
27
+ * `ApproximateReceiveCount` has to ask for it. Reporting them unasked would let
28
+ * a test read a value that would be missing on AWS.
29
+ */
30
+ export class SimSqsRequestedSystemAttributes {
31
+ names;
32
+ constructor(names) {
33
+ this.names = names;
34
+ }
35
+ /**
36
+ * Read the attribute names a receive request asked for, refusing a name real
37
+ * SQS has no such attribute for.
38
+ *
39
+ * `MessageSystemAttributeNames` and the deprecated `AttributeNames` mean the
40
+ * same thing, so both are gathered here.
41
+ */
42
+ static of(...requested) {
43
+ const names = requested.flatMap((group) => group ?? []);
44
+ for (const name of names) {
45
+ if (name !== everySelector && !knownNames.has(name)) {
46
+ throw new SimSqsInvalidAttributeName(`Unknown Attribute ${name}: it is not an SQS message system ` +
47
+ `attribute name`);
48
+ }
49
+ }
50
+ return new this(names);
51
+ }
52
+ /**
53
+ * Pick the requested attributes out of the ones a message has.
54
+ *
55
+ * Undefined means the response carries no `Attributes` at all, which is what
56
+ * real SQS sends when nothing was asked for.
57
+ */
58
+ from(available) {
59
+ if (this.names.length === 0) {
60
+ return undefined;
61
+ }
62
+ const selected = available
63
+ .entries()
64
+ .filter(([name]) => this.selects(name))
65
+ .toArray();
66
+ if (selected.length === 0) {
67
+ return undefined;
68
+ }
69
+ return Object.fromEntries(selected);
70
+ }
71
+ selects(name) {
72
+ return this.names.includes(everySelector) || this.names.includes(name);
73
+ }
74
+ }
75
+ //# sourceMappingURL=sim-sqs-message-system-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-system-attributes.js","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-system-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS;IACjC,kCAAkC;IAClC,yBAAyB;IACzB,gBAAgB;IAChB,0BAA0B;IAC1B,wBAAwB;IACxB,gBAAgB;IAChB,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,sBAAsB;CACvB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,+BAA+B;IACzB,KAAK,CAAoB;IAE1C,YAAoB,KAAwB;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CACP,GAAG,SAAqD;QAExD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAExD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,0BAA0B,CAClC,qBAAqB,IAAI,oCAAoC;oBAC3D,gBAAgB,CACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAsC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS;aACvB,OAAO,EAAE;aACT,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACtC,OAAO,EAAE,CAAC;QAEb,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;CACF"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Whether one message can be received, and when it next can be.
3
+ *
4
+ * This is held as the instant the message becomes receivable rather than as a
5
+ * timer. That is what makes a visibility timeout something a test can advance the
6
+ * simulation clock past: nothing has to fire for a message to come back, it
7
+ * simply becomes visible again once simulated time reaches the instant it was
8
+ * hidden until.
9
+ *
10
+ * A delay works the same way. A message sent with a delay is invisible from the
11
+ * moment it arrives, and the only difference from an in-flight message is that it
12
+ * has never been received.
13
+ */
14
+ export declare class SimSqsMessageVisibility {
15
+ private visibleFrom;
16
+ private receives;
17
+ private firstReceivedAt;
18
+ constructor(visibleFrom: Date);
19
+ /**
20
+ * How many times the message has been handed out and not deleted.
21
+ */
22
+ get receiveCount(): number;
23
+ /**
24
+ * The instant from which the message can be received.
25
+ */
26
+ get availableFrom(): Date;
27
+ /**
28
+ * When the message was first handed out.
29
+ *
30
+ * Only a message being handed out reports its attributes, and handing one out
31
+ * is what sets the first receive, so there is always one to report by then.
32
+ */
33
+ get firstReceived(): Date;
34
+ /**
35
+ * Whether the message can be received at an instant.
36
+ */
37
+ isVisibleAt(instant: Date): boolean;
38
+ /**
39
+ * Whether the message is still waiting out the delay it was sent with.
40
+ */
41
+ isDelayedAt(instant: Date): boolean;
42
+ /**
43
+ * Whether the message is hidden by a visibility timeout, which SQS counts as
44
+ * in flight.
45
+ */
46
+ isInFlightAt(instant: Date): boolean;
47
+ /**
48
+ * Record a receive, and hide the message for its visibility timeout.
49
+ */
50
+ receiveAt(instant: Date, visibilityTimeoutSeconds: number): void;
51
+ /**
52
+ * Hide the message for a visibility timeout starting at an instant.
53
+ */
54
+ hideFor(instant: Date, visibilityTimeoutSeconds: number): void;
55
+ }
56
+ //# sourceMappingURL=sim-sqs-message-visibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-visibility.d.ts","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-visibility.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,eAAe,CAAmB;IAE1C,YAAY,WAAW,EAAE,IAAI,EAE5B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,IAAI,CAExB;IAED;;;;;OAKG;IACH,IAAI,aAAa,IAAI,IAAI,CAOxB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAElC;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAElC;IAED;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAEnC;IAED;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAI/D;IAED;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAI7D;CACF"}
@@ -0,0 +1,79 @@
1
+ import { assertDefined } from "../../../util/type-guard/defined.js";
2
+ const millisecondsPerSecond = 1000;
3
+ /**
4
+ * Whether one message can be received, and when it next can be.
5
+ *
6
+ * This is held as the instant the message becomes receivable rather than as a
7
+ * timer. That is what makes a visibility timeout something a test can advance the
8
+ * simulation clock past: nothing has to fire for a message to come back, it
9
+ * simply becomes visible again once simulated time reaches the instant it was
10
+ * hidden until.
11
+ *
12
+ * A delay works the same way. A message sent with a delay is invisible from the
13
+ * moment it arrives, and the only difference from an in-flight message is that it
14
+ * has never been received.
15
+ */
16
+ export class SimSqsMessageVisibility {
17
+ visibleFrom;
18
+ receives = 0;
19
+ firstReceivedAt;
20
+ constructor(visibleFrom) {
21
+ this.visibleFrom = visibleFrom;
22
+ }
23
+ /**
24
+ * How many times the message has been handed out and not deleted.
25
+ */
26
+ get receiveCount() {
27
+ return this.receives;
28
+ }
29
+ /**
30
+ * The instant from which the message can be received.
31
+ */
32
+ get availableFrom() {
33
+ return this.visibleFrom;
34
+ }
35
+ /**
36
+ * When the message was first handed out.
37
+ *
38
+ * Only a message being handed out reports its attributes, and handing one out
39
+ * is what sets the first receive, so there is always one to report by then.
40
+ */
41
+ get firstReceived() {
42
+ assertDefined(this.firstReceivedAt, "A message reports its first receive once it has been received");
43
+ return this.firstReceivedAt;
44
+ }
45
+ /**
46
+ * Whether the message can be received at an instant.
47
+ */
48
+ isVisibleAt(instant) {
49
+ return this.visibleFrom.getTime() <= instant.getTime();
50
+ }
51
+ /**
52
+ * Whether the message is still waiting out the delay it was sent with.
53
+ */
54
+ isDelayedAt(instant) {
55
+ return this.receives === 0 && !this.isVisibleAt(instant);
56
+ }
57
+ /**
58
+ * Whether the message is hidden by a visibility timeout, which SQS counts as
59
+ * in flight.
60
+ */
61
+ isInFlightAt(instant) {
62
+ return this.receives > 0 && !this.isVisibleAt(instant);
63
+ }
64
+ /**
65
+ * Record a receive, and hide the message for its visibility timeout.
66
+ */
67
+ receiveAt(instant, visibilityTimeoutSeconds) {
68
+ this.receives += 1;
69
+ this.firstReceivedAt ??= instant;
70
+ this.hideFor(instant, visibilityTimeoutSeconds);
71
+ }
72
+ /**
73
+ * Hide the message for a visibility timeout starting at an instant.
74
+ */
75
+ hideFor(instant, visibilityTimeoutSeconds) {
76
+ this.visibleFrom = new Date(instant.getTime() + visibilityTimeoutSeconds * millisecondsPerSecond);
77
+ }
78
+ }
79
+ //# sourceMappingURL=sim-sqs-message-visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sqs-message-visibility.js","sourceRoot":"","sources":["../../../../src/service/sqs/message/sim-sqs-message-visibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,uBAAuB;IAC1B,WAAW,CAAO;IAClB,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,CAAmB;IAE1C,YAAY,WAAiB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,IAAI,aAAa;QACf,aAAa,CACX,IAAI,CAAC,eAAe,EACpB,+DAA+D,CAChE,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAa;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,OAAa;QACxB,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAa,EAAE,wBAAgC;QACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,eAAe,KAAK,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAa,EAAE,wBAAgC;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CACzB,OAAO,CAAC,OAAO,EAAE,GAAG,wBAAwB,GAAG,qBAAqB,CACrE,CAAC;IACJ,CAAC;CACF"}