@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.
- package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
- package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
- package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +3 -2
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts.map +1 -1
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +7 -2
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.js.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts +9 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.js +10 -0
- package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
- package/dist/service/aws/sim-aws-account.d.ts +5 -1
- package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account.js +6 -0
- package/dist/service/aws/sim-aws-account.js.map +1 -1
- package/dist/service/aws/sim-aws-region.d.ts +5 -1
- package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-region.js +6 -0
- package/dist/service/aws/sim-aws-region.js.map +1 -1
- package/dist/service/aws/sim-aws-service-accessors.d.ts +3 -1
- package/dist/service/aws/sim-aws-service-accessors.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-service-accessors.js +4 -0
- package/dist/service/aws/sim-aws-service-accessors.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.d.ts +11 -3
- package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.js +20 -6
- package/dist/service/cloudformation/resource/cfn/dynamodb/sim-dynamodb-table-cfn.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts +5 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js +7 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts +5 -4
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js +16 -11
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.d.ts +23 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.js +62 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream-rules.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.d.ts +17 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.js +24 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-stream.js.map +1 -0
- package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.d.ts +11 -0
- package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.d.ts.map +1 -1
- package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.js +13 -0
- package/dist/service/dynamodb/command/authorize/sim-dynamodb-authorizer.js.map +1 -1
- package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.d.ts +43 -0
- package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.js +5 -0
- package/dist/service/dynamodb/command/stream/describe-stream/describe-stream.command.js.map +1 -0
- package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.d.ts +26 -0
- package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.js +77 -0
- package/dist/service/dynamodb/command/stream/describe-stream/sim-dynamodb-describe-stream.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/get-records.command.d.ts +32 -0
- package/dist/service/dynamodb/command/stream/get-records/get-records.command.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/get-records.command.js +5 -0
- package/dist/service/dynamodb/command/stream/get-records/get-records.command.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.d.ts +29 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.js +60 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-get-records.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.d.ts +12 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.js +52 -0
- package/dist/service/dynamodb/command/stream/get-records/sim-dynamodb-streams-api-record.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.d.ts +31 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.js +5 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/get-shard-iterator.command.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.d.ts +27 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.js +42 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-get-shard-iterator.js.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.d.ts +11 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.js +53 -0
- package/dist/service/dynamodb/command/stream/get-shard-iterator/sim-dynamodb-shard-iterator-position.js.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.d.ts +33 -0
- package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.js +5 -0
- package/dist/service/dynamodb/command/stream/list-streams/list-streams.command.js.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.d.ts +26 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.js +31 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-list-streams.js.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.d.ts +28 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.js +59 -0
- package/dist/service/dynamodb/command/stream/list-streams/sim-dynamodb-stream-page.js.map +1 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.d.ts +44 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.js +53 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-access.js.map +1 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.d.ts +8 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.js +2 -0
- package/dist/service/dynamodb/command/stream/sim-dynamodb-stream-command.types.js.map +1 -0
- package/dist/service/dynamodb/command/stream/stream.types.d.ts +84 -0
- package/dist/service/dynamodb/command/stream/stream.types.d.ts.map +1 -0
- package/dist/service/dynamodb/command/stream/stream.types.js +2 -0
- package/dist/service/dynamodb/command/stream/stream.types.js.map +1 -0
- package/dist/service/dynamodb/error/dynamodb.error.d.ts +17 -0
- package/dist/service/dynamodb/error/dynamodb.error.d.ts.map +1 -1
- package/dist/service/dynamodb/error/dynamodb.error.js +19 -0
- package/dist/service/dynamodb/error/dynamodb.error.js.map +1 -1
- package/dist/service/dynamodb/index.d.ts +1 -0
- package/dist/service/dynamodb/index.d.ts.map +1 -1
- package/dist/service/dynamodb/index.js +1 -0
- package/dist/service/dynamodb/index.js.map +1 -1
- package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.d.ts +24 -0
- package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.d.ts.map +1 -0
- package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.js +46 -0
- package/dist/service/dynamodb/sdk/sim-dynamodb-streams-sdk-command-router.js.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb-streams.d.ts +59 -0
- package/dist/service/dynamodb/sim-dynamodb-streams.d.ts.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb-streams.js +79 -0
- package/dist/service/dynamodb/sim-dynamodb-streams.js.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb.d.ts +6 -3
- package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.js +16 -5
- package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.d.ts +31 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.d.ts.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.js +13 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-position.js.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.d.ts +33 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.d.ts.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.js +66 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-read.js.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.d.ts +17 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.d.ts.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.js +24 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-retention.js.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.d.ts +16 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.d.ts.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.js +32 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-sequence-numbers.js.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.d.ts +25 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.d.ts.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.js +74 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard-iterator.js.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.d.ts +33 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.d.ts.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.js +49 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-shard.js.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.d.ts +16 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.d.ts.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.js +25 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream-store.js.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream.d.ts +14 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream.d.ts.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-stream.js +18 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-stream.js.map +1 -1
- package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.d.ts +31 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.d.ts.map +1 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.js +33 -0
- package/dist/service/dynamodb/stream/sim-dynamodb-streamed-orders.factory.js.map +1 -0
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts +14 -0
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.d.ts.map +1 -1
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +29 -1
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js.map +1 -1
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.d.ts.map +1 -1
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +8 -2
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +2 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +7 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.d.ts.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +25 -7
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts +4 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.d.ts.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js +4 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-values.js.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts +5 -2
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.d.ts.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +12 -8
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts +3 -1
- package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.d.ts.map +1 -1
- package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js +1 -1
- package/dist/service/lambda/command/event-source-mapping/sim-lambda-event-source-mapping-commands.js.map +1 -1
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.d.ts +23 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.js +55 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-event-image.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.d.ts +27 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.js +41 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-polled-stream.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.d.ts +42 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +52 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.d.ts +77 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.js +114 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event-source-poller.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.d.ts +21 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.js +56 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.d.ts +78 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.js +8 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-event.types.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.d.ts +40 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.js +45 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poll-turn.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.d.ts +5 -4
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.d.ts.map +1 -1
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.js +18 -5
- package/dist/service/lambda/event-source/poll/sim-lambda-event-source-poller-factory.js.map +1 -1
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +37 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +51 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +29 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +71 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +36 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +41 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +65 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +92 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +36 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts.map +1 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +47 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js.map +1 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +7 -1
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts.map +1 -1
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +10 -27
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js.map +1 -1
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +24 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts.map +1 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +33 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js.map +1 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-arn.d.ts +6 -4
- package/dist/service/lambda/event-source/sim-lambda-event-source-arn.d.ts.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-arn.js +8 -5
- package/dist/service/lambda/event-source/sim-lambda-event-source-arn.js.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.d.ts +5 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.d.ts.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.js +8 -3
- package/dist/service/lambda/event-source/sim-lambda-event-source-batch-rules.js.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +9 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +8 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts +2 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.d.ts.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-pollers.js.map +1 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.d.ts +27 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.d.ts.map +1 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.js +40 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-reachable.js.map +1 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.d.ts +60 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.d.ts.map +1 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.js +51 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-starting-position.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.d.ts +31 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.js +29 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-positions.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.d.ts +32 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.js +48 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-reader.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.d.ts +28 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.js +71 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-stream-shard.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.d.ts +42 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.js +55 -0
- package/dist/service/lambda/event-source/stream/sim-dynamodb-event-source-streams.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.d.ts +150 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.js +2 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-attribute-value.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +52 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +88 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +25 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +34 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.d.ts +31 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.js +33 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-delivery-context.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.d.ts +73 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.js +2 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-stream-service.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.d.ts +148 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.js +37 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-event-source-streams.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.d.ts +36 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.js +50 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade-guard.js.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.d.ts +24 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.d.ts.map +1 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.js +24 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-stream-cascade.error.js.map +1 -0
- package/dist/service/lambda/index.d.ts +3 -0
- package/dist/service/lambda/index.d.ts.map +1 -1
- package/dist/service/lambda/index.js +1 -0
- package/dist/service/lambda/index.js.map +1 -1
- package/dist/service/lambda/sim-lambda-commands.d.ts +2 -0
- package/dist/service/lambda/sim-lambda-commands.d.ts.map +1 -1
- package/dist/service/lambda/sim-lambda-commands.js +7 -3
- package/dist/service/lambda/sim-lambda-commands.js.map +1 -1
- 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":"
|
|
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;
|
|
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;
|
|
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;
|
|
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":"
|
|
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"}
|