@kensio/yulin 1.2.0 → 1.3.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 (328) hide show
  1. package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
  3. package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
  4. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +3 -2
  5. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts.map +1 -1
  6. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +7 -2
  7. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js.map +1 -1
  8. package/dist/service/aws/sim-aws-account-region-scope.d.ts +9 -1
  9. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  10. package/dist/service/aws/sim-aws-account-region-scope.js +10 -0
  11. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  12. package/dist/service/aws/sim-aws-account.d.ts +5 -1
  13. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  14. package/dist/service/aws/sim-aws-account.js +6 -0
  15. package/dist/service/aws/sim-aws-account.js.map +1 -1
  16. package/dist/service/aws/sim-aws-region.d.ts +5 -1
  17. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  18. package/dist/service/aws/sim-aws-region.js +6 -0
  19. package/dist/service/aws/sim-aws-region.js.map +1 -1
  20. package/dist/service/aws/sim-aws-service-accessors.d.ts +3 -1
  21. package/dist/service/aws/sim-aws-service-accessors.d.ts.map +1 -1
  22. package/dist/service/aws/sim-aws-service-accessors.js +4 -0
  23. package/dist/service/aws/sim-aws-service-accessors.js.map +1 -1
  24. package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.d.ts +11 -3
  25. package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.d.ts.map +1 -1
  26. package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.js +20 -6
  27. package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.js.map +1 -1
  28. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.d.ts.map +1 -1
  29. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js +1 -0
  30. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js.map +1 -1
  31. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts +5 -0
  32. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts.map +1 -1
  33. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js +7 -0
  34. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js.map +1 -1
  35. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts +5 -4
  36. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts.map +1 -1
  37. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js +16 -11
  38. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js.map +1 -1
  39. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.d.ts +23 -0
  40. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.d.ts.map +1 -0
  41. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.js +62 -0
  42. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.js.map +1 -0
  43. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.d.ts +17 -0
  44. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.d.ts.map +1 -0
  45. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.js +24 -0
  46. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.js.map +1 -0
  47. package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.d.ts +11 -0
  48. package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.d.ts.map +1 -1
  49. package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.js +13 -0
  50. package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.js.map +1 -1
  51. package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.d.ts +43 -0
  52. package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.d.ts.map +1 -0
  53. package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.js +5 -0
  54. package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.js.map +1 -0
  55. package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.d.ts +26 -0
  56. package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.d.ts.map +1 -0
  57. package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.js +77 -0
  58. package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.js.map +1 -0
  59. package/dist/service/dynamodb/command/stream/get-records/get-records.command.d.ts +32 -0
  60. package/dist/service/dynamodb/command/stream/get-records/get-records.command.d.ts.map +1 -0
  61. package/dist/service/dynamodb/command/stream/get-records/get-records.command.js +5 -0
  62. package/dist/service/dynamodb/command/stream/get-records/get-records.command.js.map +1 -0
  63. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.d.ts +29 -0
  64. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.d.ts.map +1 -0
  65. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.js +60 -0
  66. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.js.map +1 -0
  67. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.d.ts +12 -0
  68. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.d.ts.map +1 -0
  69. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.js +52 -0
  70. package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.js.map +1 -0
  71. package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.d.ts +31 -0
  72. package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.d.ts.map +1 -0
  73. package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.js +5 -0
  74. package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.js.map +1 -0
  75. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.d.ts +27 -0
  76. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.d.ts.map +1 -0
  77. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.js +42 -0
  78. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.js.map +1 -0
  79. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.d.ts +11 -0
  80. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.d.ts.map +1 -0
  81. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.js +53 -0
  82. package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.js.map +1 -0
  83. package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.d.ts +33 -0
  84. package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.d.ts.map +1 -0
  85. package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.js +5 -0
  86. package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.js.map +1 -0
  87. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.d.ts +26 -0
  88. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.d.ts.map +1 -0
  89. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.js +31 -0
  90. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.js.map +1 -0
  91. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.d.ts +28 -0
  92. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.d.ts.map +1 -0
  93. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.js +59 -0
  94. package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.js.map +1 -0
  95. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.d.ts +44 -0
  96. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.d.ts.map +1 -0
  97. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.js +53 -0
  98. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.js.map +1 -0
  99. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.d.ts +8 -0
  100. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.d.ts.map +1 -0
  101. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.js +2 -0
  102. package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.js.map +1 -0
  103. package/dist/service/dynamodb/command/stream/stream.types.d.ts +84 -0
  104. package/dist/service/dynamodb/command/stream/stream.types.d.ts.map +1 -0
  105. package/dist/service/dynamodb/command/stream/stream.types.js +2 -0
  106. package/dist/service/dynamodb/command/stream/stream.types.js.map +1 -0
  107. package/dist/service/dynamodb/error/dynamodb.error.d.ts +17 -0
  108. package/dist/service/dynamodb/error/dynamodb.error.d.ts.map +1 -1
  109. package/dist/service/dynamodb/error/dynamodb.error.js +19 -0
  110. package/dist/service/dynamodb/error/dynamodb.error.js.map +1 -1
  111. package/dist/service/dynamodb/index.d.ts +1 -0
  112. package/dist/service/dynamodb/index.d.ts.map +1 -1
  113. package/dist/service/dynamodb/index.js +1 -0
  114. package/dist/service/dynamodb/index.js.map +1 -1
  115. package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.d.ts +24 -0
  116. package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.d.ts.map +1 -0
  117. package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.js +46 -0
  118. package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.js.map +1 -0
  119. package/dist/service/dynamodb/sim-dynamodb-streams.d.ts +59 -0
  120. package/dist/service/dynamodb/sim-dynamodb-streams.d.ts.map +1 -0
  121. package/dist/service/dynamodb/sim-dynamodb-streams.js +79 -0
  122. package/dist/service/dynamodb/sim-dynamodb-streams.js.map +1 -0
  123. package/dist/service/dynamodb/sim-dynamodb.d.ts +6 -3
  124. package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
  125. package/dist/service/dynamodb/sim-dynamodb.js +16 -5
  126. package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
  127. package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.d.ts +31 -0
  128. package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.d.ts.map +1 -0
  129. package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.js +13 -0
  130. package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.js.map +1 -0
  131. package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.d.ts +33 -0
  132. package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.d.ts.map +1 -0
  133. package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.js +66 -0
  134. package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.js.map +1 -0
  135. package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.d.ts +17 -0
  136. package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.d.ts.map +1 -0
  137. package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.js +24 -0
  138. package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.js.map +1 -0
  139. package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.d.ts +16 -0
  140. package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.d.ts.map +1 -1
  141. package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.js +32 -0
  142. package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.js.map +1 -1
  143. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.d.ts +25 -0
  144. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.d.ts.map +1 -0
  145. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.js +74 -0
  146. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.js.map +1 -0
  147. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.d.ts +33 -0
  148. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.d.ts.map +1 -1
  149. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.js +49 -0
  150. package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.js.map +1 -1
  151. package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.d.ts +16 -0
  152. package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.d.ts.map +1 -1
  153. package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.js +25 -0
  154. package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.js.map +1 -1
  155. package/dist/service/dynamodb/stream/sim-dynamodb-stream.d.ts +14 -0
  156. package/dist/service/dynamodb/stream/sim-dynamodb-stream.d.ts.map +1 -1
  157. package/dist/service/dynamodb/stream/sim-dynamodb-stream.js +18 -0
  158. package/dist/service/dynamodb/stream/sim-dynamodb-stream.js.map +1 -1
  159. package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.d.ts +31 -0
  160. package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.d.ts.map +1 -0
  161. package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.js +33 -0
  162. package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.js.map +1 -0
  163. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts +14 -0
  164. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts.map +1 -1
  165. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +29 -1
  166. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js.map +1 -1
  167. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.d.ts.map +1 -1
  168. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +8 -2
  169. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js.map +1 -1
  170. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +2 -0
  171. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts.map +1 -1
  172. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +7 -1
  173. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js.map +1 -1
  174. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.d.ts.map +1 -1
  175. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +25 -7
  176. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js.map +1 -1
  177. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts +4 -0
  178. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts.map +1 -1
  179. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js +4 -0
  180. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js.map +1 -1
  181. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts +5 -2
  182. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts.map +1 -1
  183. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +12 -8
  184. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js.map +1 -1
  185. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts +3 -1
  186. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts.map +1 -1
  187. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js +1 -1
  188. package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js.map +1 -1
  189. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.d.ts +23 -0
  190. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.d.ts.map +1 -0
  191. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.js +55 -0
  192. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.js.map +1 -0
  193. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.d.ts +27 -0
  194. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.d.ts.map +1 -0
  195. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.js +41 -0
  196. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.js.map +1 -0
  197. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.d.ts +42 -0
  198. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.d.ts.map +1 -0
  199. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +52 -0
  200. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js.map +1 -0
  201. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.d.ts +77 -0
  202. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.d.ts.map +1 -0
  203. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.js +114 -0
  204. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.js.map +1 -0
  205. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.d.ts +21 -0
  206. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.d.ts.map +1 -0
  207. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.js +56 -0
  208. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.js.map +1 -0
  209. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.d.ts +78 -0
  210. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.d.ts.map +1 -0
  211. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.js +8 -0
  212. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.js.map +1 -0
  213. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.d.ts +40 -0
  214. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.d.ts.map +1 -0
  215. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.js +45 -0
  216. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.js.map +1 -0
  217. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.d.ts +5 -4
  218. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.d.ts.map +1 -1
  219. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.js +18 -5
  220. package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.js.map +1 -1
  221. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +37 -0
  222. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts.map +1 -0
  223. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +51 -0
  224. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js.map +1 -0
  225. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +29 -0
  226. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts.map +1 -0
  227. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +71 -0
  228. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js.map +1 -0
  229. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +36 -0
  230. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts.map +1 -0
  231. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +41 -0
  232. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js.map +1 -0
  233. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +65 -0
  234. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts.map +1 -0
  235. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +92 -0
  236. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js.map +1 -0
  237. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +36 -0
  238. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts.map +1 -0
  239. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +47 -0
  240. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js.map +1 -0
  241. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +7 -1
  242. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts.map +1 -1
  243. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +10 -27
  244. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js.map +1 -1
  245. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +24 -0
  246. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts.map +1 -0
  247. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +33 -0
  248. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js.map +1 -0
  249. package/dist/service/lambda/event-source/sim-lambda-event-source-arn.d.ts +6 -4
  250. package/dist/service/lambda/event-source/sim-lambda-event-source-arn.d.ts.map +1 -1
  251. package/dist/service/lambda/event-source/sim-lambda-event-source-arn.js +8 -5
  252. package/dist/service/lambda/event-source/sim-lambda-event-source-arn.js.map +1 -1
  253. package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.d.ts +5 -1
  254. package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.d.ts.map +1 -1
  255. package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.js +8 -3
  256. package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.js.map +1 -1
  257. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +9 -0
  258. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts.map +1 -1
  259. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +8 -0
  260. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js.map +1 -1
  261. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts +2 -0
  262. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts.map +1 -1
  263. package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.js.map +1 -1
  264. package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.d.ts +27 -0
  265. package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.d.ts.map +1 -0
  266. package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.js +40 -0
  267. package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.js.map +1 -0
  268. package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.d.ts +60 -0
  269. package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.d.ts.map +1 -0
  270. package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.js +51 -0
  271. package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.js.map +1 -0
  272. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.d.ts +31 -0
  273. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.d.ts.map +1 -0
  274. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.js +29 -0
  275. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.js.map +1 -0
  276. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.d.ts +32 -0
  277. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.d.ts.map +1 -0
  278. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.js +48 -0
  279. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.js.map +1 -0
  280. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.d.ts +28 -0
  281. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.d.ts.map +1 -0
  282. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.js +71 -0
  283. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.js.map +1 -0
  284. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.d.ts +42 -0
  285. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.d.ts.map +1 -0
  286. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.js +55 -0
  287. package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.js.map +1 -0
  288. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.d.ts +150 -0
  289. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.d.ts.map +1 -0
  290. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.js +2 -0
  291. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.js.map +1 -0
  292. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +52 -0
  293. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts.map +1 -0
  294. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +88 -0
  295. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js.map +1 -0
  296. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +25 -0
  297. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts.map +1 -0
  298. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +34 -0
  299. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js.map +1 -0
  300. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.d.ts +31 -0
  301. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.d.ts.map +1 -0
  302. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.js +33 -0
  303. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.js.map +1 -0
  304. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.d.ts +73 -0
  305. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.d.ts.map +1 -0
  306. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.js +2 -0
  307. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.js.map +1 -0
  308. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.d.ts +148 -0
  309. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.d.ts.map +1 -0
  310. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.js +37 -0
  311. package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.js.map +1 -0
  312. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.d.ts +36 -0
  313. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.d.ts.map +1 -0
  314. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.js +50 -0
  315. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.js.map +1 -0
  316. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.d.ts +24 -0
  317. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.d.ts.map +1 -0
  318. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.js +24 -0
  319. package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.js.map +1 -0
  320. package/dist/service/lambda/index.d.ts +3 -0
  321. package/dist/service/lambda/index.d.ts.map +1 -1
  322. package/dist/service/lambda/index.js +1 -0
  323. package/dist/service/lambda/index.js.map +1 -1
  324. package/dist/service/lambda/sim-lambda-commands.d.ts +2 -0
  325. package/dist/service/lambda/sim-lambda-commands.d.ts.map +1 -1
  326. package/dist/service/lambda/sim-lambda-commands.js +7 -3
  327. package/dist/service/lambda/sim-lambda-commands.js.map +1 -1
  328. package/package.json +3 -2
@@ -0,0 +1,33 @@
1
+ import type { SimDynamoDbStreamRecord } from "./sim-dynamodb-stream-record.js";
2
+ import { type SimDynamoDbStreamPosition } from "./sim-dynamodb-stream-position.js";
3
+ import type { SimDynamoDbStreamShard } from "./sim-dynamodb-stream-shard.js";
4
+ /**
5
+ * What one read of a shard came back with.
6
+ *
7
+ * `drained` is only true of a closed shard a reader has reached the end of. An
8
+ * open shard is never drained, however empty it is: more may yet be written to
9
+ * it, and that is the difference between a reader that should look again and
10
+ * one that is finished.
11
+ */
12
+ export interface SimDynamoDbStreamRead {
13
+ readonly records: readonly SimDynamoDbStreamRecord[];
14
+ readonly next: SimDynamoDbStreamPosition;
15
+ readonly drained: boolean;
16
+ }
17
+ /**
18
+ * Ensure a shard still holds the position a reader is asking for.
19
+ *
20
+ * Checked when an iterator is handed out as well as when one is used, because a
21
+ * caller can name a sequence number the retention window has already outlived
22
+ * and should find that out at the request rather than one call later.
23
+ */
24
+ export declare function assertSimDynamoDbStreamPositionReadable(shard: SimDynamoDbStreamShard, position: SimDynamoDbStreamPosition): void;
25
+ /**
26
+ * Read up to a limit of records from a shard, starting at a position.
27
+ *
28
+ * An empty result is an ordinary answer rather than a problem: a reader that
29
+ * has caught up with an open shard gets nothing back and the position it
30
+ * already had, which is what makes polling each successive iterator work.
31
+ */
32
+ export declare function simDynamoDbStreamRead(shard: SimDynamoDbStreamShard, position: SimDynamoDbStreamPosition, limit: number): SimDynamoDbStreamRead;
33
+ //# sourceMappingURL=sim-dynamodb-stream-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-read.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-read.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AA4BD;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,yBAAyB,GAClC,IAAI,CAYN;AAyBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,MAAM,GACZ,qBAAqB,CAgBvB"}
@@ -0,0 +1,66 @@
1
+ import { SimDynamoDbTrimmedDataAccessException } from "../error/dynamodb.error.js";
2
+ import { simDynamoDbStreamAfter, } from "./sim-dynamodb-stream-position.js";
3
+ import { compareSimDynamoDbSequenceNumbers } from "./sim-dynamodb-stream-sequence-numbers.js";
4
+ /**
5
+ * Whether a shard has dropped the record a position names.
6
+ *
7
+ * `at` a trimmed sequence number is gone: that record is what was asked for.
8
+ * `after` one is not, as long as the record following it survived, which is why
9
+ * the two comparisons differ by the equal case.
10
+ */
11
+ function isTrimmed(shard, sequenceNumber, inclusive) {
12
+ const trimmedThrough = shard.trimmedThrough;
13
+ if (trimmedThrough === undefined) {
14
+ return false;
15
+ }
16
+ const order = compareSimDynamoDbSequenceNumbers(sequenceNumber, trimmedThrough);
17
+ return inclusive ? order <= 0 : order < 0;
18
+ }
19
+ /**
20
+ * Ensure a shard still holds the position a reader is asking for.
21
+ *
22
+ * Checked when an iterator is handed out as well as when one is used, because a
23
+ * caller can name a sequence number the retention window has already outlived
24
+ * and should find that out at the request rather than one call later.
25
+ */
26
+ export function assertSimDynamoDbStreamPositionReadable(shard, position) {
27
+ if (position.kind === "start" ||
28
+ !isTrimmed(shard, position.sequenceNumber, position.kind === "at")) {
29
+ return;
30
+ }
31
+ throw new SimDynamoDbTrimmedDataAccessException(`Stream record with sequence number ${position.sequenceNumber} on shard ` +
32
+ `${shard.shardId} is past the 24 hour trim point`);
33
+ }
34
+ /**
35
+ * Where in the records a position starts reading from.
36
+ */
37
+ function startIndexOf(records, position) {
38
+ if (position.kind === "start") {
39
+ return 0;
40
+ }
41
+ const wanted = position.kind === "at" ? 0 : 1;
42
+ const found = records.findIndex((record) => compareSimDynamoDbSequenceNumbers(record.sequenceNumber, position.sequenceNumber) >= wanted);
43
+ return found === -1 ? records.length : found;
44
+ }
45
+ /**
46
+ * Read up to a limit of records from a shard, starting at a position.
47
+ *
48
+ * An empty result is an ordinary answer rather than a problem: a reader that
49
+ * has caught up with an open shard gets nothing back and the position it
50
+ * already had, which is what makes polling each successive iterator work.
51
+ */
52
+ export function simDynamoDbStreamRead(shard, position, limit) {
53
+ assertSimDynamoDbStreamPositionReadable(shard, position);
54
+ const available = shard.records;
55
+ const start = startIndexOf(available, position);
56
+ const records = available.slice(start, start + limit);
57
+ const last = records.at(-1);
58
+ return {
59
+ records,
60
+ next: last === undefined
61
+ ? position
62
+ : simDynamoDbStreamAfter(last.sequenceNumber),
63
+ drained: !shard.isOpen && start + records.length >= available.length,
64
+ };
65
+ }
66
+ //# sourceMappingURL=sim-dynamodb-stream-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-read.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,EACL,sBAAsB,GAEvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAiB9F;;;;;;GAMG;AACH,SAAS,SAAS,CAChB,KAA6B,EAC7B,cAAsB,EACtB,SAAkB;IAElB,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAE5C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,iCAAiC,CAC7C,cAAc,EACd,cAAc,CACf,CAAC;IAEF,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAA6B,EAC7B,QAAmC;IAEnC,IACE,QAAQ,CAAC,IAAI,KAAK,OAAO;QACzB,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAClE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,qCAAqC,CAC7C,sCAAsC,QAAQ,CAAC,cAAc,YAAY;QACvE,GAAG,KAAK,CAAC,OAAO,iCAAiC,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,OAA2C,EAC3C,QAAmC;IAEnC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAC7B,CAAC,MAAM,EAAE,EAAE,CACT,iCAAiC,CAC/B,MAAM,CAAC,cAAc,EACrB,QAAQ,CAAC,cAAc,CACxB,IAAI,MAAM,CACd,CAAC;IAEF,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA6B,EAC7B,QAAmC,EACnC,KAAa;IAEb,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,OAAO;QACP,IAAI,EACF,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM;KACrE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The instant a stream's records have to be newer than to still be readable.
3
+ *
4
+ * Trimming is applied when a stream is read rather than scheduled, because it
5
+ * is a pure function of the current time: whatever a read finds is what the
6
+ * retention window holds at the instant of that read, and nothing has to have
7
+ * run in between for that to be true. Compare `SimSqsQueue.applyLifecycle`,
8
+ * which is the same shape for the same reason.
9
+ *
10
+ * A stream itself is not dropped once everything on it has been trimmed. Real
11
+ * DynamoDB eventually stops listing a disabled stream whose records have all
12
+ * aged out, which is a divergence in a test's favour: the ARN a test is holding
13
+ * goes on resolving, and reading it gives an empty result rather than a
14
+ * resource that has silently disappeared.
15
+ */
16
+ export declare function simDynamoDbStreamTrimPoint(now: Date): Date;
17
+ //# sourceMappingURL=sim-dynamodb-stream-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-retention.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-retention.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAE1D"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * How long DynamoDB Streams keeps a record before trimming it.
3
+ */
4
+ const retentionHours = 24;
5
+ const millisecondsPerHour = 60 * 60 * 1000;
6
+ /**
7
+ * The instant a stream's records have to be newer than to still be readable.
8
+ *
9
+ * Trimming is applied when a stream is read rather than scheduled, because it
10
+ * is a pure function of the current time: whatever a read finds is what the
11
+ * retention window holds at the instant of that read, and nothing has to have
12
+ * run in between for that to be true. Compare `SimSqsQueue.applyLifecycle`,
13
+ * which is the same shape for the same reason.
14
+ *
15
+ * A stream itself is not dropped once everything on it has been trimmed. Real
16
+ * DynamoDB eventually stops listing a disabled stream whose records have all
17
+ * aged out, which is a divergence in a test's favour: the ARN a test is holding
18
+ * goes on resolving, and reading it gives an empty result rather than a
19
+ * resource that has silently disappeared.
20
+ */
21
+ export function simDynamoDbStreamTrimPoint(now) {
22
+ return new Date(now.getTime() - retentionHours * millisecondsPerHour);
23
+ }
24
+ //# sourceMappingURL=sim-dynamodb-stream-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-retention.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-retention.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAS;IAClD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,mBAAmB,CAAC,CAAC;AACxE,CAAC"}
@@ -15,4 +15,20 @@ export declare class SimDynamoDbStreamSequenceNumbers {
15
15
  */
16
16
  take(): string;
17
17
  }
18
+ /**
19
+ * Read a sequence number a request carries.
20
+ *
21
+ * Real DynamoDB refuses anything that is not a run of digits, so a caller that
22
+ * passes a shard identifier or a truncated value here finds out at the request
23
+ * rather than reading from a position nothing could ever be at.
24
+ */
25
+ export declare function readSimDynamoDbSequenceNumber(value: string | undefined, operationName: string): string;
26
+ /**
27
+ * Order two sequence numbers, as a comparator does.
28
+ *
29
+ * These are compared as numbers rather than as text. The ones a simulated
30
+ * stream hands out are a fixed width, where the two orders agree, but one a
31
+ * request carries came from outside and need not be.
32
+ */
33
+ export declare function compareSimDynamoDbSequenceNumbers(left: string, right: string): number;
18
34
  //# sourceMappingURL=sim-dynamodb-stream-sequence-numbers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-sequence-numbers.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.ts"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,IAAI,CAAuB;IAEnC;;OAEG;IACH,IAAI,IAAI,MAAM,CAMb;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-sequence-numbers.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,IAAI,CAAuB;IAEnC;;OAEG;IACH,IAAI,IAAI,MAAM,CAMb;CACF;AAOD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,aAAa,EAAE,MAAM,GACpB,MAAM,CAQR;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR"}
@@ -1,3 +1,4 @@
1
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
1
2
  /**
2
3
  * The number the first record on a stream is given.
3
4
  *
@@ -28,4 +29,35 @@ export class SimDynamoDbStreamSequenceNumbers {
28
29
  return taken.toString();
29
30
  }
30
31
  }
32
+ /**
33
+ * A sequence number is digits and nothing else.
34
+ */
35
+ const digitsOnly = /^\d+$/u;
36
+ /**
37
+ * Read a sequence number a request carries.
38
+ *
39
+ * Real DynamoDB refuses anything that is not a run of digits, so a caller that
40
+ * passes a shard identifier or a truncated value here finds out at the request
41
+ * rather than reading from a position nothing could ever be at.
42
+ */
43
+ export function readSimDynamoDbSequenceNumber(value, operationName) {
44
+ if (value === undefined || !digitsOnly.test(value)) {
45
+ throw new SimDynamoDbValidationException(`${operationName} needs a numeric SequenceNumber`);
46
+ }
47
+ return value;
48
+ }
49
+ /**
50
+ * Order two sequence numbers, as a comparator does.
51
+ *
52
+ * These are compared as numbers rather than as text. The ones a simulated
53
+ * stream hands out are a fixed width, where the two orders agree, but one a
54
+ * request carries came from outside and need not be.
55
+ */
56
+ export function compareSimDynamoDbSequenceNumbers(left, right) {
57
+ const difference = BigInt(left) - BigInt(right);
58
+ if (difference === 0n) {
59
+ return 0;
60
+ }
61
+ return difference > 0n ? 1 : -1;
62
+ }
31
63
  //# sourceMappingURL=sim-dynamodb-stream-sequence-numbers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-sequence-numbers.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,sBAA4B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,OAAO,gCAAgC;IACnC,IAAI,GAAG,mBAAmB,CAAC;IAEnC;;OAEG;IACH,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-sequence-numbers.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,sBAA4B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,OAAO,gCAAgC;IACnC,IAAI,GAAG,mBAAmB,CAAC;IAEnC;;OAEG;IACH,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAyB,EACzB,aAAqB;IAErB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,8BAA8B,CACtC,GAAG,aAAa,iCAAiC,CAClD,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAAY,EACZ,KAAa;IAEb,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { SimDynamoDbStreamPosition } from "./sim-dynamodb-stream-position.js";
2
+ /**
3
+ * What a shard iterator stands for: one place on one shard of one stream.
4
+ */
5
+ export interface SimDynamoDbShardIterator {
6
+ readonly streamArn: string;
7
+ readonly shardId: string;
8
+ readonly position: SimDynamoDbStreamPosition;
9
+ }
10
+ /**
11
+ * The opaque token a caller is handed to read on from a place.
12
+ *
13
+ * Real shard iterators are opaque strings a caller passes back unread, and this
14
+ * one is the same shape: the place it stands for travels inside it rather than
15
+ * in a table of handed-out iterators. That is what lets an iterator be used
16
+ * against the stream it names without the stream having to remember it, which
17
+ * is also why the 15 minute expiry is deliberately absent here rather than
18
+ * approximated.
19
+ */
20
+ export declare function simDynamoDbShardIteratorToken(iterator: SimDynamoDbShardIterator): string;
21
+ /**
22
+ * Read the place a shard iterator a request carries stands for.
23
+ */
24
+ export declare function readSimDynamoDbShardIteratorToken(token: string | undefined): SimDynamoDbShardIterator;
25
+ //# sourceMappingURL=sim-dynamodb-stream-shard-iterator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-shard-iterator.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAC9C;AA4CD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,wBAAwB,GACjC,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,wBAAwB,CA2B1B"}
@@ -0,0 +1,74 @@
1
+ import { isRecord } from "../../../util/type-guard/record.js";
2
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
3
+ /**
4
+ * The three position kinds, as a value read back out of a token has to be one
5
+ * of them before it is trusted.
6
+ */
7
+ const positionKinds = new Set(["start", "at", "after"]);
8
+ /**
9
+ * Refuse a shard iterator a request carries that this simulation never made.
10
+ */
11
+ function refuse() {
12
+ throw new SimDynamoDbValidationException("The provided ShardIterator is not valid");
13
+ }
14
+ /**
15
+ * Read a position back out of a decoded token.
16
+ */
17
+ function readPosition(value) {
18
+ if (!isRecord(value) || typeof value["kind"] !== "string") {
19
+ refuse();
20
+ }
21
+ const kind = value["kind"];
22
+ if (!positionKinds.has(kind)) {
23
+ refuse();
24
+ }
25
+ if (kind === "start") {
26
+ return { kind: "start" };
27
+ }
28
+ const sequenceNumber = value["sequenceNumber"];
29
+ if (typeof sequenceNumber !== "string") {
30
+ refuse();
31
+ }
32
+ return kind === "at"
33
+ ? { kind: "at", sequenceNumber }
34
+ : { kind: "after", sequenceNumber };
35
+ }
36
+ /**
37
+ * The opaque token a caller is handed to read on from a place.
38
+ *
39
+ * Real shard iterators are opaque strings a caller passes back unread, and this
40
+ * one is the same shape: the place it stands for travels inside it rather than
41
+ * in a table of handed-out iterators. That is what lets an iterator be used
42
+ * against the stream it names without the stream having to remember it, which
43
+ * is also why the 15 minute expiry is deliberately absent here rather than
44
+ * approximated.
45
+ */
46
+ export function simDynamoDbShardIteratorToken(iterator) {
47
+ return Buffer.from(JSON.stringify(iterator), "utf8").toString("base64url");
48
+ }
49
+ /**
50
+ * Read the place a shard iterator a request carries stands for.
51
+ */
52
+ export function readSimDynamoDbShardIteratorToken(token) {
53
+ if (token === undefined || token === "") {
54
+ throw new SimDynamoDbValidationException("GetRecords requires a ShardIterator");
55
+ }
56
+ let decoded;
57
+ try {
58
+ decoded = JSON.parse(Buffer.from(token, "base64url").toString("utf8"));
59
+ }
60
+ catch {
61
+ refuse();
62
+ }
63
+ if (!isRecord(decoded) ||
64
+ typeof decoded["streamArn"] !== "string" ||
65
+ typeof decoded["shardId"] !== "string") {
66
+ refuse();
67
+ }
68
+ return {
69
+ streamArn: decoded["streamArn"],
70
+ shardId: decoded["shardId"],
71
+ position: readPosition(decoded["position"]),
72
+ };
73
+ }
74
+ //# sourceMappingURL=sim-dynamodb-stream-shard-iterator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-stream-shard-iterator.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAY5E;;;GAGG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAExD;;GAEG;AACH,SAAS,MAAM;IACb,MAAM,IAAI,8BAA8B,CACtC,yCAAyC,CAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC;IACX,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO,IAAI,KAAK,IAAI;QAClB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE;QAChC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAkC;IAElC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,8BAA8B,CACtC,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC;IACX,CAAC;IAED,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClB,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ;QACxC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EACtC,CAAC;QACD,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;QAC3B,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAC5C,CAAC;AACJ,CAAC"}
@@ -15,6 +15,9 @@ export declare class SimDynamoDbStreamShard {
15
15
  readonly shardId: string;
16
16
  private readonly written;
17
17
  private open;
18
+ private trimmed;
19
+ private first;
20
+ private last;
18
21
  constructor(at: Date);
19
22
  /**
20
23
  * Whether this shard is still taking records.
@@ -24,10 +27,40 @@ export declare class SimDynamoDbStreamShard {
24
27
  * The records written to this shard, oldest first.
25
28
  */
26
29
  get records(): readonly SimDynamoDbStreamRecord[];
30
+ /**
31
+ * The sequence number of the last record trimmed off this shard, when the
32
+ * retention window has outlived one.
33
+ */
34
+ get trimmedThrough(): string | undefined;
35
+ /**
36
+ * The sequence number this shard starts at.
37
+ *
38
+ * This is the first record ever written to it rather than the oldest one it
39
+ * still holds. A shard's range is fixed as the records go on: trimming takes
40
+ * records away without moving where the shard began, and TRIM_HORIZON is what
41
+ * a reader uses to find the oldest record it can still reach.
42
+ */
43
+ get startingSequenceNumber(): string | undefined;
44
+ /**
45
+ * The sequence number this shard ends at, which only a closed one has.
46
+ *
47
+ * An open shard has no ending sequence number, since the next record written
48
+ * would move it. That absence is how a reader tells a shard that is still
49
+ * taking changes from one it can finish with.
50
+ */
51
+ get endingSequenceNumber(): string | undefined;
27
52
  /**
28
53
  * Write a record to this shard.
29
54
  */
30
55
  append(record: SimDynamoDbStreamRecord): void;
56
+ /**
57
+ * Drop the records written before an instant, remembering how far that got.
58
+ *
59
+ * The trim point is kept once the records themselves are gone, because it is
60
+ * the difference between a reader that asked for a position this shard never
61
+ * reached and one that asked for a position it has already dropped.
62
+ */
63
+ trim(before: Date): void;
31
64
  /**
32
65
  * Close this shard to further records.
33
66
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-shard.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAoB/E;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IACjC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,IAAI,CAAQ;IAEpB,YAAY,EAAE,EAAE,IAAI,EAEnB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,uBAAuB,EAAE,CAEhD;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAE5C;IAED;;;;;OAKG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-shard.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAoB/E;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IACjC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,IAAI,CAAqB;IAEjC,YAAY,EAAE,EAAE,IAAI,EAEnB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,uBAAuB,EAAE,CAEhD;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED;;;;;;;OAOG;IACH,IAAI,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE/C;IAED;;;;;;OAMG;IACH,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAI5C;IAED;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAavB;IAED;;;;;OAKG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}
@@ -30,6 +30,9 @@ export class SimDynamoDbStreamShard {
30
30
  shardId;
31
31
  written = [];
32
32
  open = true;
33
+ trimmed;
34
+ first;
35
+ last;
33
36
  constructor(at) {
34
37
  this.shardId = shardId(at);
35
38
  }
@@ -45,11 +48,57 @@ export class SimDynamoDbStreamShard {
45
48
  get records() {
46
49
  return this.written;
47
50
  }
51
+ /**
52
+ * The sequence number of the last record trimmed off this shard, when the
53
+ * retention window has outlived one.
54
+ */
55
+ get trimmedThrough() {
56
+ return this.trimmed;
57
+ }
58
+ /**
59
+ * The sequence number this shard starts at.
60
+ *
61
+ * This is the first record ever written to it rather than the oldest one it
62
+ * still holds. A shard's range is fixed as the records go on: trimming takes
63
+ * records away without moving where the shard began, and TRIM_HORIZON is what
64
+ * a reader uses to find the oldest record it can still reach.
65
+ */
66
+ get startingSequenceNumber() {
67
+ return this.first;
68
+ }
69
+ /**
70
+ * The sequence number this shard ends at, which only a closed one has.
71
+ *
72
+ * An open shard has no ending sequence number, since the next record written
73
+ * would move it. That absence is how a reader tells a shard that is still
74
+ * taking changes from one it can finish with.
75
+ */
76
+ get endingSequenceNumber() {
77
+ return this.open ? undefined : this.last;
78
+ }
48
79
  /**
49
80
  * Write a record to this shard.
50
81
  */
51
82
  append(record) {
52
83
  this.written.push(record);
84
+ this.first ??= record.sequenceNumber;
85
+ this.last = record.sequenceNumber;
86
+ }
87
+ /**
88
+ * Drop the records written before an instant, remembering how far that got.
89
+ *
90
+ * The trim point is kept once the records themselves are gone, because it is
91
+ * the difference between a reader that asked for a position this shard never
92
+ * reached and one that asked for a position it has already dropped.
93
+ */
94
+ trim(before) {
95
+ const surviving = this.written.findIndex((record) => record.approximateCreationDateTime.getTime() >= before.getTime());
96
+ const outlived = surviving === -1 ? this.written.length : surviving;
97
+ if (outlived === 0) {
98
+ return;
99
+ }
100
+ this.trimmed = this.written[outlived - 1]?.sequenceNumber ?? this.trimmed;
101
+ this.written.splice(0, outlived);
53
102
  }
54
103
  /**
55
104
  * Close this shard to further records.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-shard.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;GAEG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,EAAQ;IACvB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAEzE,OAAO,WAAW,MAAM,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,sBAAsB;IACjB,OAAO,CAAS;IAEf,OAAO,GAA8B,EAAE,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC;IAEpB,YAAY,EAAQ;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAA+B;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-shard.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-shard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;GAEG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,EAAQ;IACvB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAEzE,OAAO,WAAW,MAAM,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,sBAAsB;IACjB,OAAO,CAAS;IAEf,OAAO,GAA8B,EAAE,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC;IACZ,OAAO,CAAqB;IAC5B,KAAK,CAAqB;IAC1B,IAAI,CAAqB;IAEjC,YAAY,EAAQ;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAA+B;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,MAAY;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACtC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CACnE,CAAC;QACF,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -22,5 +22,21 @@ export declare class SimDynamoDbStreamStore {
22
22
  * reports in its own terms.
23
23
  */
24
24
  findByArn(streamArn: string): SimDynamoDbStream | undefined;
25
+ /**
26
+ * Every stream here, in ARN order.
27
+ *
28
+ * ListStreams pages by ARN, so the order a page is cut out of has to be the
29
+ * order the paging parameter walks. A stream's ARN is its table's ARN and
30
+ * then the instant it was enabled, so this also groups a table's streams
31
+ * together, oldest first.
32
+ */
33
+ inArnOrder(): readonly SimDynamoDbStream[];
34
+ /**
35
+ * Bring every stream here up to date at an instant.
36
+ *
37
+ * All of them rather than the one being read, so that what a test sees of one
38
+ * stream does not depend on which other streams it happened to read first.
39
+ */
40
+ applyRetention(instant: Date): void;
25
41
  }
26
42
  //# sourceMappingURL=sim-dynamodb-stream-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-store.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEnC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE1D;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-store.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEnC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE1D;IAED;;;;;;;OAOG;IACH,UAAU,IAAI,SAAS,iBAAiB,EAAE,CAKzC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAIlC;CACF"}
@@ -25,5 +25,30 @@ export class SimDynamoDbStreamStore {
25
25
  findByArn(streamArn) {
26
26
  return this.streams.get(streamArn);
27
27
  }
28
+ /**
29
+ * Every stream here, in ARN order.
30
+ *
31
+ * ListStreams pages by ARN, so the order a page is cut out of has to be the
32
+ * order the paging parameter walks. A stream's ARN is its table's ARN and
33
+ * then the instant it was enabled, so this also groups a table's streams
34
+ * together, oldest first.
35
+ */
36
+ inArnOrder() {
37
+ return this.streams
38
+ .values()
39
+ .toArray()
40
+ .toSorted((left, right) => left.arn.localeCompare(right.arn));
41
+ }
42
+ /**
43
+ * Bring every stream here up to date at an instant.
44
+ *
45
+ * All of them rather than the one being read, so that what a test sees of one
46
+ * stream does not depend on which other streams it happened to read first.
47
+ */
48
+ applyRetention(instant) {
49
+ for (const stream of this.streams.values()) {
50
+ stream.applyRetention(instant);
51
+ }
52
+ }
28
53
  }
29
54
  //# sourceMappingURL=sim-dynamodb-stream-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream-store.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-store.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IAChB,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEhE;;OAEG;IACH,GAAG,CAAC,MAAyB;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream-store.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream-store.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IAChB,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEhE;;OAEG;IACH,GAAG,CAAC,MAAyB;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,EAAE;aACR,OAAO,EAAE;aACT,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAAa;QAC1B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import type { SimArn } from "../../aws/arn.js";
2
2
  import type { SimDynamoDbStreamViewType } from "./sim-dynamodb-stream.types.js";
3
3
  import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
4
+ import type { SimDynamoDbKeySchemaElement } from "../command/table/table.types.js";
4
5
  import type { SimDynamoDbItemChange } from "./sim-dynamodb-item-change.js";
5
6
  import { SimDynamoDbStreamRecord } from "./sim-dynamodb-stream-record.js";
6
7
  import { SimDynamoDbStreamShard } from "./sim-dynamodb-stream-shard.js";
@@ -49,6 +50,19 @@ export declare class SimDynamoDbStream {
49
50
  * The records this stream has taken, oldest first.
50
51
  */
51
52
  get records(): readonly SimDynamoDbStreamRecord[];
53
+ /**
54
+ * The key schema of the table this stream belongs to, as DescribeStream
55
+ * reports it.
56
+ */
57
+ get keySchemaElements(): readonly SimDynamoDbKeySchemaElement[];
58
+ /**
59
+ * Drop whatever the 24 hour retention window has outlived.
60
+ *
61
+ * This is applied when the stream is read rather than scheduled, which is
62
+ * what `simDynamoDbStreamTrimPoint` explains. Running it twice at one instant
63
+ * does nothing the second time.
64
+ */
65
+ applyRetention(instant: Date): void;
52
66
  /**
53
67
  * Take one change to the table's items.
54
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D,UAAU,2BAA2B;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,yBAAyB,CAAC;IACpD,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,KAAK,EAAE,sBAAsB,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,OAAO,CAAQ;IAEvB,YAAY,UAAU,EAAE,2BAA2B,EASlD;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,uBAAuB,CAEpC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,uBAAuB,EAAE,CAEhD;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,EAAE,EAAE,IAAI,GAAG,uBAAuB,CAYxE;IAED;;;;;;OAMG;IACH,OAAO,IAAI,IAAI,CAGd;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D,UAAU,2BAA2B;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,yBAAyB,CAAC;IACpD,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,KAAK,EAAE,sBAAsB,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,OAAO,CAAQ;IAEvB,YAAY,UAAU,EAAE,2BAA2B,EASlD;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,uBAAuB,CAEpC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,uBAAuB,EAAE,CAEhD;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,SAAS,2BAA2B,EAAE,CAE9D;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAElC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,EAAE,EAAE,IAAI,GAAG,uBAAuB,CAYxE;IAED;;;;;;OAMG;IACH,OAAO,IAAI,IAAI,CAGd;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { simDynamoDbStreamArn, simDynamoDbStreamLabel, } from "./sim-dynamodb-stream-arn.js";
2
2
  import { SimDynamoDbStreamRecord } from "./sim-dynamodb-stream-record.js";
3
+ import { simDynamoDbStreamTrimPoint } from "./sim-dynamodb-stream-retention.js";
3
4
  import { SimDynamoDbStreamSequenceNumbers } from "./sim-dynamodb-stream-sequence-numbers.js";
4
5
  import { SimDynamoDbStreamShard } from "./sim-dynamodb-stream-shard.js";
5
6
  /**
@@ -45,6 +46,23 @@ export class SimDynamoDbStream {
45
46
  get records() {
46
47
  return this.shard.records;
47
48
  }
49
+ /**
50
+ * The key schema of the table this stream belongs to, as DescribeStream
51
+ * reports it.
52
+ */
53
+ get keySchemaElements() {
54
+ return this.keySchema.elements;
55
+ }
56
+ /**
57
+ * Drop whatever the 24 hour retention window has outlived.
58
+ *
59
+ * This is applied when the stream is read rather than scheduled, which is
60
+ * what `simDynamoDbStreamTrimPoint` explains. Running it twice at one instant
61
+ * does nothing the second time.
62
+ */
63
+ applyRetention(instant) {
64
+ this.shard.trim(simDynamoDbStreamTrimPoint(instant));
65
+ }
48
66
  /**
49
67
  * Take one change to the table's items.
50
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-stream.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAmBxE;;;;;;;;;GASG;AACH,MAAM,OAAO,iBAAiB;IACZ,GAAG,CAAS;IACZ,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,QAAQ,CAA4B;IACpC,SAAS,CAAO;IAChB,KAAK,CAAyB;IAE7B,SAAS,CAAuB;IAChC,eAAe,GAAG,IAAI,gCAAgC,EAAE,CAAC;IAClE,OAAO,GAAG,IAAI,CAAC;IAEvB,YAAY,UAAuC;QACjD,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAA6B,EAAE,EAAQ;QAC7C,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAC3C,EAAE;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-stream.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/stream/sim-dynamodb-stream.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAmBxE;;;;;;;;;GASG;AACH,MAAM,OAAO,iBAAiB;IACZ,GAAG,CAAS;IACZ,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,QAAQ,CAA4B;IACpC,SAAS,CAAO;IAChB,KAAK,CAAyB;IAE7B,SAAS,CAAuB;IAChC,eAAe,GAAG,IAAI,gCAAgC,EAAE,CAAC;IAClE,OAAO,GAAG,IAAI,CAAC;IAEvB,YAAY,UAAuC;QACjD,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAa;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAA6B,EAAE,EAAQ;QAC7C,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAC3C,EAAE;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}