@kensio/yulin 1.21.2 → 1.21.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/service/athena/engine/sim-athena-column-types.d.ts +2 -0
- package/dist/service/athena/engine/sim-athena-column-types.js +4 -0
- package/dist/service/athena/engine/sim-athena-delimited-format.d.ts +7 -0
- package/dist/service/athena/engine/sim-athena-delimited-format.js +51 -0
- package/dist/service/athena/engine/sim-athena-engine-result.js +5 -0
- package/dist/service/athena/engine/sim-athena-engine-run.d.ts +22 -2
- package/dist/service/athena/engine/sim-athena-engine-run.js +21 -31
- package/dist/service/athena/engine/sim-athena-loaded-tables.d.ts +10 -0
- package/dist/service/athena/engine/sim-athena-loaded-tables.js +35 -0
- package/dist/service/athena/engine/sim-athena-parquet-module.d.ts +25 -0
- package/dist/service/athena/engine/sim-athena-parquet-module.js +39 -0
- package/dist/service/athena/engine/sim-athena-parquet-records.d.ts +13 -0
- package/dist/service/athena/engine/sim-athena-parquet-records.js +57 -0
- package/dist/service/athena/engine/sim-athena-query-engine.d.ts +23 -5
- package/dist/service/athena/engine/sim-athena-query-engine.js +31 -10
- package/dist/service/athena/engine/sim-athena-record-reader.d.ts +12 -6
- package/dist/service/athena/engine/sim-athena-record-reader.js +28 -53
- package/dist/service/athena/engine/sim-athena-sql-translation.d.ts +15 -9
- package/dist/service/athena/engine/sim-athena-sql-translation.js +25 -13
- package/dist/service/athena/engine/sim-athena-sqlite-values.d.ts +5 -0
- package/dist/service/athena/engine/sim-athena-sqlite-values.js +24 -1
- package/dist/service/athena/engine/sim-athena-table-objects.d.ts +7 -2
- package/dist/service/athena/engine/sim-athena-table-objects.js +8 -4
- package/dist/service/athena/engine/sim-athena-table-rows.js +4 -3
- package/dist/service/athena/engine/sim-athena-turn-down.d.ts +26 -0
- package/dist/service/athena/engine/sim-athena-turn-down.js +43 -0
- package/dist/service/athena/execution/sim-athena-query-completion.d.ts +3 -1
- package/dist/service/athena/execution/sim-athena-query-completion.js +7 -1
- package/dist/service/athena/index.d.ts +1 -1
- package/dist/service/athena/index.js +1 -1
- package/dist/service/athena/result/sim-athena-query-answer.d.ts +12 -0
- package/dist/service/athena/result/sim-athena-query-answer.js +26 -4
- package/dist/service/athena/sim-athena-answered-query.fixture.d.ts +2 -0
- package/dist/service/athena/sim-athena-answered-query.fixture.js +1 -0
- package/dist/service/athena/sim-athena-engine.fixture.d.ts +20 -0
- package/dist/service/athena/sim-athena-engine.fixture.js +34 -0
- package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.d.ts +23 -0
- package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.js +37 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +12 -12
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
- package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
- package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +8 -15
- package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
- package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
- package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
- package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
- package/dist/service/cloudformation/resource/factory/sim-cfn-resource-factory.type.d.ts +9 -0
- package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
- package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
- package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
- package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
- package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +19 -0
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
- package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
- package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
- package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.d.ts +26 -0
- package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.js +55 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
- package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
- package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
- package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
- package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
- package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
- package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
- package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
- package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
- package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
- package/dist/service/cloudformation/sim-cloudformation.js +56 -9
- package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
- package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
- package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
- package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +51 -3
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +84 -6
- package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
- package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
- package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +16 -1
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +27 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +7 -1
- package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
- package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
- package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
- package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
- package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
- package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
- package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
- package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
- package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
- package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
- package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
- package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
- package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
- package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
- package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
- package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
- package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +5 -0
- package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +15 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.d.ts +24 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.js +38 -0
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
- package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
- package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
- package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +1 -2
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
- package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
- package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
- package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
- package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
- package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
- package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
- package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
- package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
- package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
- package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
- package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
- package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
- package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
- package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
- package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
- package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
- package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
- package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
- package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
- package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
- package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
- package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
- package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
- package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
- package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
- package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
- package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
- package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
- package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
- package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
- package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
- package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
- package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
- package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
- package/dist/service/lambda/function/sim-lambda-function.js +11 -9
- package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
- package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
- package/dist/service/lambda/index.d.ts +1 -0
- package/dist/service/lambda/index.js +1 -0
- package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
- package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
- package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
- package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
- package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
- package/dist/service/lambda/sim-lambda-commands.js +11 -0
- package/dist/service/lambda/sim-lambda.d.ts +12 -0
- package/dist/service/lambda/sim-lambda.js +13 -0
- package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
- package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
- package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
- package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
- package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
- package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
- package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
- package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
- package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
- package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
- package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
- package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
- package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
- package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
- package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
- package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
- package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
- package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
- package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
- package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
- package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
- package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
- package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
- package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
- package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
- package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
- package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
- package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
- package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
- package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
- package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
- package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
- package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
- package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
- package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
- package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
- package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
- package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
- package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
- package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
- package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
- package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
- package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
- package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
- package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
- package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
- package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
- package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
- package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
- package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
- package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
- package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
- package/dist/service/s3/error/sim-s3.error.js +26 -40
- package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
- package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
- package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
- package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
- package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
- package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
- package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
- package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
- package/dist/service/s3/object/s3-key-encoding.js +14 -0
- package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
- package/dist/service/s3/object/s3-listing-encoding.js +75 -0
- package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
- package/dist/service/s3/object/s3-object-response-headers.js +49 -2
- package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
- package/dist/service/s3/object/s3-object-storage-report.js +18 -0
- package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
- package/dist/service/s3/object/s3-object-summary.js +1 -10
- package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
- package/dist/service/s3/object/s3-object-tags.js +77 -0
- package/dist/service/s3/object/s3-object.d.ts +49 -0
- package/dist/service/s3/object/s3-object.js +52 -1
- package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
- package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
- package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
- package/dist/service/s3/object/s3-storage-class.js +67 -0
- package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
- package/dist/service/s3/object/s3-write-metadata.js +43 -0
- package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
- package/dist/service/s3/object/s3-write-storage.js +21 -0
- package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
- package/dist/service/s3/object/s3-write-tagging.js +19 -0
- package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
- package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
- package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
- package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
- package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
- package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
- package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
- package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
- package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
- package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
- package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
- package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
- package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
- package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
- package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
- package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
- package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
- package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
- package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
- package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
- package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
- package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
- package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
- package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
- package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
- package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
- package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
- package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
- package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
- package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
- package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
- package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
- package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
- package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
- package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
- package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
- package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
- package/dist/service/s3/sim-s3-commands.d.ts +4 -0
- package/dist/service/s3/sim-s3-commands.js +6 -0
- package/dist/service/s3/sim-s3-operations.d.ts +11 -4
- package/dist/service/s3/sim-s3-operations.js +17 -4
- package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
- package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
- package/dist/service/s3/sim-s3.d.ts +12 -0
- package/dist/service/s3/sim-s3.js +13 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
- package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
- package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
- package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
- package/dist/util/background/background-clock-waits.d.ts +52 -0
- package/dist/util/background/background-clock-waits.js +76 -0
- package/dist/util/background/background-jitter.js +1 -0
- package/dist/util/background/background-pending-tasks.d.ts +55 -0
- package/dist/util/background/background-pending-tasks.js +117 -0
- package/dist/util/background/background-settled-tasks.d.ts +4 -1
- package/dist/util/background/background-settled-tasks.js +4 -1
- package/dist/util/background/background.d.ts +43 -0
- package/dist/util/background/background.js +27 -19
- package/dist/util/background/non-deterministic-background.d.ts +12 -0
- package/dist/util/background/non-deterministic-background.js +24 -20
- package/dist/util/clock/sim-clock-control.js +23 -2
- package/docs/services/apigateway/README.md +3 -1
- package/docs/services/athena/README.md +126 -3
- package/docs/services/cloudformation/README.md +775 -65
- package/docs/services/cognito/README.md +5 -0
- package/docs/services/dynamodb/README.md +86 -11
- package/docs/services/lambda/README.md +603 -39
- package/docs/services/s3/README.md +688 -57
- package/package.json +8 -2
|
@@ -4,6 +4,14 @@ interface SimCfnStackUpdateLifecycleProperties {
|
|
|
4
4
|
readonly background: BackgroundScheduler;
|
|
5
5
|
readonly stackName: SimCloudFormationStackName;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* The two halves of one Stack update: applying the new template, and putting
|
|
9
|
+
* the Stack back the way it was if that fails.
|
|
10
|
+
*/
|
|
11
|
+
export interface SimCfnStackUpdateWork {
|
|
12
|
+
readonly apply: () => Promise<void>;
|
|
13
|
+
readonly rollBack: () => Promise<void>;
|
|
14
|
+
}
|
|
7
15
|
/**
|
|
8
16
|
* Owns the simulated CloudFormation Stack update lifecycle state.
|
|
9
17
|
*
|
|
@@ -21,7 +29,9 @@ export declare class SimCfnStackUpdateLifecycle {
|
|
|
21
29
|
private readonly background;
|
|
22
30
|
private readonly stackName;
|
|
23
31
|
private completePromise;
|
|
32
|
+
private rollbackPromise;
|
|
24
33
|
private updateError;
|
|
34
|
+
private rollbackError;
|
|
25
35
|
constructor(properties: SimCfnStackUpdateLifecycleProperties);
|
|
26
36
|
/**
|
|
27
37
|
* The current Stack update status, or undefined if the Stack has never been
|
|
@@ -30,14 +40,13 @@ export declare class SimCfnStackUpdateLifecycle {
|
|
|
30
40
|
get status(): SimCloudFormationStackStatus | undefined;
|
|
31
41
|
/**
|
|
32
42
|
* The error captured during a background update, if any.
|
|
33
|
-
*/
|
|
34
|
-
get error(): Error | undefined;
|
|
35
|
-
/**
|
|
36
|
-
* Refuse an update while one is already running.
|
|
37
43
|
*
|
|
38
|
-
*
|
|
39
|
-
* the
|
|
44
|
+
* A rollback that failed answers with its own failure, because that is what
|
|
45
|
+
* the Stack is left in UPDATE_ROLLBACK_FAILED by and what has to be dealt
|
|
46
|
+
* with before the Stack works again.
|
|
40
47
|
*/
|
|
48
|
+
get error(): Error | undefined;
|
|
49
|
+
/** Refuse an update while one is already running, or being rolled back. */
|
|
41
50
|
assertNotUpdating(): void;
|
|
42
51
|
/**
|
|
43
52
|
* Start the Stack update lifecycle.
|
|
@@ -46,17 +55,19 @@ export declare class SimCfnStackUpdateLifecycle {
|
|
|
46
55
|
* and deletion do. The Resource work continues in the background, so callers
|
|
47
56
|
* that need the final state should use waitForComplete().
|
|
48
57
|
*
|
|
49
|
-
* An update that fails
|
|
50
|
-
*
|
|
51
|
-
*
|
|
58
|
+
* An update that fails is rolled back. The Stack moves to
|
|
59
|
+
* UPDATE_ROLLBACK_IN_PROGRESS with the reason on it, the rollback is
|
|
60
|
+
* scheduled as an operation of its own, and the Stack settles in
|
|
61
|
+
* UPDATE_ROLLBACK_COMPLETE, or in UPDATE_ROLLBACK_FAILED if the rollback
|
|
62
|
+
* could not finish either.
|
|
52
63
|
*/
|
|
53
|
-
update(
|
|
64
|
+
update(work: SimCfnStackUpdateWork): Promise<void>;
|
|
54
65
|
/**
|
|
55
|
-
* Wait for the scheduled update to finish.
|
|
66
|
+
* Wait for the scheduled update to finish, rollback included.
|
|
56
67
|
*
|
|
57
|
-
* If the update failed, this rethrows the captured error
|
|
58
|
-
* what stopped the new template being applied.
|
|
59
|
-
* has nothing to wait for.
|
|
68
|
+
* If the update failed, this rethrows the captured error once the Stack has
|
|
69
|
+
* settled, so a caller can see what stopped the new template being applied.
|
|
70
|
+
* A Stack that was never updated has nothing to wait for.
|
|
60
71
|
*/
|
|
61
72
|
waitForComplete(): Promise<void>;
|
|
62
73
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SimCloudFormationValidationError } from "../../error/sim-cloudformation.error.js";
|
|
2
1
|
import { SimCfnStackOperationScheduler } from "../sim-cfn-stack-operation-scheduler.js";
|
|
2
|
+
import { assertSimCfnStackNotUpdating } from "./sim-cfn-stack-update-guard.js";
|
|
3
3
|
/**
|
|
4
4
|
* Owns the simulated CloudFormation Stack update lifecycle state.
|
|
5
5
|
*
|
|
@@ -17,7 +17,9 @@ export class SimCfnStackUpdateLifecycle {
|
|
|
17
17
|
stackName;
|
|
18
18
|
#status;
|
|
19
19
|
completePromise;
|
|
20
|
+
rollbackPromise;
|
|
20
21
|
updateError;
|
|
22
|
+
rollbackError;
|
|
21
23
|
constructor(properties) {
|
|
22
24
|
this.background = properties.background;
|
|
23
25
|
this.stackName = properties.stackName;
|
|
@@ -31,20 +33,17 @@ export class SimCfnStackUpdateLifecycle {
|
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* The error captured during a background update, if any.
|
|
36
|
+
*
|
|
37
|
+
* A rollback that failed answers with its own failure, because that is what
|
|
38
|
+
* the Stack is left in UPDATE_ROLLBACK_FAILED by and what has to be dealt
|
|
39
|
+
* with before the Stack works again.
|
|
34
40
|
*/
|
|
35
41
|
get error() {
|
|
36
|
-
return this.updateError;
|
|
42
|
+
return this.rollbackError ?? this.updateError;
|
|
37
43
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Refuse an update while one is already running.
|
|
40
|
-
*
|
|
41
|
-
* CloudFormation takes one update at a time, and a second here would read
|
|
42
|
-
* the difference to apply from a Stack half way through the first.
|
|
43
|
-
*/
|
|
44
|
+
/** Refuse an update while one is already running, or being rolled back. */
|
|
44
45
|
assertNotUpdating() {
|
|
45
|
-
|
|
46
|
-
throw new SimCloudFormationValidationError(`Stack ${this.stackName} is in UPDATE_IN_PROGRESS state and can not be updated`);
|
|
47
|
-
}
|
|
46
|
+
assertSimCfnStackNotUpdating(this.stackName, this.#status);
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
50
49
|
* Start the Stack update lifecycle.
|
|
@@ -53,40 +52,58 @@ export class SimCfnStackUpdateLifecycle {
|
|
|
53
52
|
* and deletion do. The Resource work continues in the background, so callers
|
|
54
53
|
* that need the final state should use waitForComplete().
|
|
55
54
|
*
|
|
56
|
-
* An update that fails
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* An update that fails is rolled back. The Stack moves to
|
|
56
|
+
* UPDATE_ROLLBACK_IN_PROGRESS with the reason on it, the rollback is
|
|
57
|
+
* scheduled as an operation of its own, and the Stack settles in
|
|
58
|
+
* UPDATE_ROLLBACK_COMPLETE, or in UPDATE_ROLLBACK_FAILED if the rollback
|
|
59
|
+
* could not finish either.
|
|
59
60
|
*/
|
|
60
|
-
async update(
|
|
61
|
+
async update(work) {
|
|
61
62
|
this.#status = "UPDATE_IN_PROGRESS";
|
|
62
63
|
this.updateError = undefined;
|
|
64
|
+
this.rollbackError = undefined;
|
|
65
|
+
this.rollbackPromise = undefined;
|
|
63
66
|
const scheduler = new SimCfnStackOperationScheduler({
|
|
64
67
|
background: this.background,
|
|
65
68
|
failureMessage: "Sim CloudFormation Stack update failed",
|
|
66
69
|
});
|
|
67
70
|
await scheduler.sequence();
|
|
68
71
|
this.completePromise = scheduler.schedule({
|
|
69
|
-
operation:
|
|
72
|
+
operation: work.apply,
|
|
70
73
|
onSuccess: () => {
|
|
71
74
|
this.#status = "UPDATE_COMPLETE";
|
|
72
75
|
},
|
|
73
76
|
onFailure: (error) => {
|
|
74
|
-
this.#status = "
|
|
77
|
+
this.#status = "UPDATE_ROLLBACK_IN_PROGRESS";
|
|
75
78
|
this.updateError = error;
|
|
79
|
+
// Scheduled rather than run where the failure was caught, so the Stack
|
|
80
|
+
// is visibly rolling back while it happens, the way it is visibly
|
|
81
|
+
// updating while the update happens.
|
|
82
|
+
this.rollbackPromise = scheduler.schedule({
|
|
83
|
+
operation: work.rollBack,
|
|
84
|
+
onSuccess: () => {
|
|
85
|
+
this.#status = "UPDATE_ROLLBACK_COMPLETE";
|
|
86
|
+
},
|
|
87
|
+
onFailure: (failure) => {
|
|
88
|
+
this.#status = "UPDATE_ROLLBACK_FAILED";
|
|
89
|
+
this.rollbackError = failure;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
76
92
|
},
|
|
77
93
|
});
|
|
78
94
|
}
|
|
79
95
|
/**
|
|
80
|
-
* Wait for the scheduled update to finish.
|
|
96
|
+
* Wait for the scheduled update to finish, rollback included.
|
|
81
97
|
*
|
|
82
|
-
* If the update failed, this rethrows the captured error
|
|
83
|
-
* what stopped the new template being applied.
|
|
84
|
-
* has nothing to wait for.
|
|
98
|
+
* If the update failed, this rethrows the captured error once the Stack has
|
|
99
|
+
* settled, so a caller can see what stopped the new template being applied.
|
|
100
|
+
* A Stack that was never updated has nothing to wait for.
|
|
85
101
|
*/
|
|
86
102
|
async waitForComplete() {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
// Awaiting nothing is how a Stack that was never updated, and one that was
|
|
104
|
+
// never rolled back, wait for the operation they never had.
|
|
105
|
+
await this.completePromise;
|
|
106
|
+
await this.rollbackPromise;
|
|
90
107
|
if (this.updateError !== undefined) {
|
|
91
108
|
throw this.updateError;
|
|
92
109
|
}
|
|
@@ -3,6 +3,10 @@ interface SimCfnStackUpdatePlanProperties {
|
|
|
3
3
|
readonly current: ReadonlyMap<string, SimCfnResource>;
|
|
4
4
|
readonly updated: ReadonlyMap<string, SimCfnResource>;
|
|
5
5
|
}
|
|
6
|
+
export interface SimCfnStackResourceReplacement {
|
|
7
|
+
readonly current: SimCfnResource;
|
|
8
|
+
readonly updated: SimCfnResource;
|
|
9
|
+
}
|
|
6
10
|
/**
|
|
7
11
|
* What an update has to do to a Stack's Resources, worked out before any of it
|
|
8
12
|
* happens.
|
|
@@ -17,6 +21,8 @@ interface SimCfnStackUpdatePlanProperties {
|
|
|
17
21
|
* simCfnStackReplacedLogicalIds decides what changed.
|
|
18
22
|
*/
|
|
19
23
|
export declare class SimCfnStackUpdatePlan {
|
|
24
|
+
/** The current and updated halves of each Resource replacement. */
|
|
25
|
+
readonly replacements: readonly SimCfnStackResourceReplacement[];
|
|
20
26
|
/**
|
|
21
27
|
* The deployed Resources to delete: the ones the new template drops, and the
|
|
22
28
|
* deployed halves of the ones it replaces.
|
|
@@ -27,8 +33,17 @@ export declare class SimCfnStackUpdatePlan {
|
|
|
27
33
|
* halves of the ones it replaces.
|
|
28
34
|
*/
|
|
29
35
|
readonly creations: readonly SimCfnResource[];
|
|
30
|
-
|
|
36
|
+
readonly updated: ReadonlyMap<string, SimCfnResource>;
|
|
31
37
|
constructor(properties: SimCfnStackUpdatePlanProperties);
|
|
38
|
+
/**
|
|
39
|
+
* For each logical ID the update is replacing, whether the definition taking
|
|
40
|
+
* its place says to keep the deployed Resource.
|
|
41
|
+
*
|
|
42
|
+
* The new half answers it because CloudFormation reads UpdateReplacePolicy
|
|
43
|
+
* off the template it is applying. An update that adds the attribute keeps
|
|
44
|
+
* the Resource it replaces, and one that drops it deletes that Resource.
|
|
45
|
+
*/
|
|
46
|
+
replacementRetentions(): ReadonlyMap<string, boolean>;
|
|
32
47
|
/**
|
|
33
48
|
* Whether the update changes any Resource at all.
|
|
34
49
|
*
|
|
@@ -13,6 +13,8 @@ import { simCfnStackReplacedLogicalIds } from "./sim-cfn-stack-replaced-resource
|
|
|
13
13
|
* simCfnStackReplacedLogicalIds decides what changed.
|
|
14
14
|
*/
|
|
15
15
|
export class SimCfnStackUpdatePlan {
|
|
16
|
+
/** The current and updated halves of each Resource replacement. */
|
|
17
|
+
replacements;
|
|
16
18
|
/**
|
|
17
19
|
* The deployed Resources to delete: the ones the new template drops, and the
|
|
18
20
|
* deployed halves of the ones it replaces.
|
|
@@ -28,6 +30,17 @@ export class SimCfnStackUpdatePlan {
|
|
|
28
30
|
const { current, updated } = properties;
|
|
29
31
|
const replaced = simCfnStackReplacedLogicalIds({ current, updated });
|
|
30
32
|
this.updated = updated;
|
|
33
|
+
this.replacements = replaced
|
|
34
|
+
.values()
|
|
35
|
+
.map((logicalId) => {
|
|
36
|
+
const currentResource = current.get(logicalId);
|
|
37
|
+
const updatedResource = updated.get(logicalId);
|
|
38
|
+
if (currentResource === undefined || updatedResource === undefined) {
|
|
39
|
+
throw new Error(`CloudFormation replacement ${logicalId} is missing one of its Resource definitions`);
|
|
40
|
+
}
|
|
41
|
+
return { current: currentResource, updated: updatedResource };
|
|
42
|
+
})
|
|
43
|
+
.toArray();
|
|
31
44
|
// Both lists are worked out now rather than on demand, because the Stack's
|
|
32
45
|
// Resource map is the current one and applying the plan changes it.
|
|
33
46
|
this.deletions = current
|
|
@@ -43,6 +56,20 @@ export class SimCfnStackUpdatePlan {
|
|
|
43
56
|
})
|
|
44
57
|
.toArray();
|
|
45
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* For each logical ID the update is replacing, whether the definition taking
|
|
61
|
+
* its place says to keep the deployed Resource.
|
|
62
|
+
*
|
|
63
|
+
* The new half answers it because CloudFormation reads UpdateReplacePolicy
|
|
64
|
+
* off the template it is applying. An update that adds the attribute keeps
|
|
65
|
+
* the Resource it replaces, and one that drops it deletes that Resource.
|
|
66
|
+
*/
|
|
67
|
+
replacementRetentions() {
|
|
68
|
+
return new Map(this.replacements.map(({ current, updated }) => [
|
|
69
|
+
current.logicalId,
|
|
70
|
+
updated.retainedOnReplace,
|
|
71
|
+
]));
|
|
72
|
+
}
|
|
46
73
|
/**
|
|
47
74
|
* Whether the update changes any Resource at all.
|
|
48
75
|
*
|
|
@@ -2,6 +2,7 @@ import { SimCloudFormationValidationError } from "../../error/sim-cloudformation
|
|
|
2
2
|
import { makeSimCfnStackResourceMap } from "../resource-map/sim-cfn-stack-resource-map.js";
|
|
3
3
|
import { SimCfnStackUpdatePlan } from "./sim-cfn-stack-update-plan.js";
|
|
4
4
|
import { simCfnStackTemplateChanged } from "./sim-cfn-stack-template-changes.js";
|
|
5
|
+
import { SimCfnResourceRetention } from "../../resource/delete/sim-cfn-resource-retention.js";
|
|
5
6
|
/**
|
|
6
7
|
* What CloudFormation answers an update that would change nothing.
|
|
7
8
|
*
|
|
@@ -57,8 +58,13 @@ export class SimCfnStackUpdater {
|
|
|
57
58
|
async apply() {
|
|
58
59
|
const { resources, operations } = this.properties;
|
|
59
60
|
const { plan } = this;
|
|
60
|
-
await operations.
|
|
61
|
+
await operations.assertUpdatesAllowed(resources, plan.updated, plan.replacements);
|
|
62
|
+
await operations.delete(resources, plan.deletions, new SimCfnResourceRetention({ replaced: plan.replacementRetentions() }));
|
|
61
63
|
plan.applyTo(resources);
|
|
64
|
+
// Once the Stack has stopped holding them, and before the replacements are
|
|
65
|
+
// created. An update that keeps a Resource and then fails to create the one
|
|
66
|
+
// taking its place still reports what it kept.
|
|
67
|
+
operations.recordRetained(plan.deletions.filter((resource) => resource.retained));
|
|
62
68
|
await operations.create(resources, plan.creations);
|
|
63
69
|
}
|
|
64
70
|
}
|
|
@@ -16,9 +16,9 @@ interface SimCfnConditionExpressionProperties {
|
|
|
16
16
|
*
|
|
17
17
|
* The tree is `Fn::Equals` at the leaves and `Fn::And`, `Fn::Or` and `Fn::Not`
|
|
18
18
|
* above them, with `{ "Condition": "OtherCondition" }` handing off to the
|
|
19
|
-
* Condition of that name.
|
|
20
|
-
*
|
|
21
|
-
* here.
|
|
19
|
+
* Condition of that name. `Fn::If` picks one of two conditions by the answer to
|
|
20
|
+
* a third. Where a named Condition comes from is the evaluator's business, so it
|
|
21
|
+
* arrives as a reader rather than being looked up here.
|
|
22
22
|
*
|
|
23
23
|
* A function name this simulation has no behaviour for is refused rather than
|
|
24
24
|
* read as false, which would deploy a Stack the template did not describe. The
|
|
@@ -39,6 +39,15 @@ export declare class SimCfnConditionExpression {
|
|
|
39
39
|
evaluate(expression: SimCfnTemplateValue): boolean;
|
|
40
40
|
private apply;
|
|
41
41
|
private operands;
|
|
42
|
+
/**
|
|
43
|
+
* Evaluate whichever of an `Fn::If`'s two conditions its Condition selects.
|
|
44
|
+
*
|
|
45
|
+
* Only the selected one is evaluated, as CloudFormation resolves only the
|
|
46
|
+
* branch it takes. The name goes through the same reader a
|
|
47
|
+
* `{ "Condition": ... }` reference uses, so an `Fn::If` that closes a cycle
|
|
48
|
+
* is caught by the chain the evaluator carries rather than recursing.
|
|
49
|
+
*/
|
|
50
|
+
private selected;
|
|
42
51
|
private negated;
|
|
43
52
|
}
|
|
44
53
|
export {};
|
|
@@ -5,9 +5,9 @@ import { SimCfnValueShape, } from "../value/sim-cfn-value-shape.js";
|
|
|
5
5
|
*
|
|
6
6
|
* The tree is `Fn::Equals` at the leaves and `Fn::And`, `Fn::Or` and `Fn::Not`
|
|
7
7
|
* above them, with `{ "Condition": "OtherCondition" }` handing off to the
|
|
8
|
-
* Condition of that name.
|
|
9
|
-
*
|
|
10
|
-
* here.
|
|
8
|
+
* Condition of that name. `Fn::If` picks one of two conditions by the answer to
|
|
9
|
+
* a third. Where a named Condition comes from is the evaluator's business, so it
|
|
10
|
+
* arrives as a reader rather than being looked up here.
|
|
11
11
|
*
|
|
12
12
|
* A function name this simulation has no behaviour for is refused rather than
|
|
13
13
|
* read as false, which would deploy a Stack the template did not describe. The
|
|
@@ -54,6 +54,9 @@ export class SimCfnConditionExpression {
|
|
|
54
54
|
if (functionName === "Fn::Not") {
|
|
55
55
|
return this.negated(value);
|
|
56
56
|
}
|
|
57
|
+
if (functionName === "Fn::If") {
|
|
58
|
+
return this.selected(value);
|
|
59
|
+
}
|
|
57
60
|
if (functionName === "Condition") {
|
|
58
61
|
return this.named(this.shape.string(value, `${this.label} Condition reference`));
|
|
59
62
|
}
|
|
@@ -67,6 +70,29 @@ export class SimCfnConditionExpression {
|
|
|
67
70
|
}
|
|
68
71
|
return listed.map((operand) => this.evaluate(operand));
|
|
69
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Evaluate whichever of an `Fn::If`'s two conditions its Condition selects.
|
|
75
|
+
*
|
|
76
|
+
* Only the selected one is evaluated, as CloudFormation resolves only the
|
|
77
|
+
* branch it takes. The name goes through the same reader a
|
|
78
|
+
* `{ "Condition": ... }` reference uses, so an `Fn::If` that closes a cycle
|
|
79
|
+
* is caught by the chain the evaluator carries rather than recursing.
|
|
80
|
+
*/
|
|
81
|
+
selected(value) {
|
|
82
|
+
const listed = this.shape.list(value, `${this.label} Fn::If`);
|
|
83
|
+
if (listed.length !== 3) {
|
|
84
|
+
throw this.error(`${this.label} Fn::If must be a list of a Condition name and two ` +
|
|
85
|
+
"conditions");
|
|
86
|
+
}
|
|
87
|
+
const conditionName = listed[0];
|
|
88
|
+
const whenTrue = listed[1];
|
|
89
|
+
const whenFalse = listed[2];
|
|
90
|
+
assertDefined(conditionName, `${this.label} Fn::If Condition name`);
|
|
91
|
+
assertDefined(whenTrue, `${this.label} Fn::If condition if true`);
|
|
92
|
+
assertDefined(whenFalse, `${this.label} Fn::If condition if false`);
|
|
93
|
+
const selected = this.named(this.shape.string(conditionName, `${this.label} Fn::If Condition name`));
|
|
94
|
+
return this.evaluate(selected ? whenTrue : whenFalse);
|
|
95
|
+
}
|
|
70
96
|
negated(value) {
|
|
71
97
|
const listed = this.shape.list(value, `${this.label} Fn::Not`);
|
|
72
98
|
if (listed.length !== 1) {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SimCfnTemplateValueRecord } from "../value/sim-cfn-template-value.js";
|
|
2
|
+
import type { SimCfnConditions } from "./sim-cfn-conditions.js";
|
|
3
|
+
interface SimCfnOutputConditionsProperties {
|
|
4
|
+
readonly conditions: SimCfnConditions;
|
|
5
|
+
readonly stackName?: string | undefined;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Applies the Output-level `Condition` attribute to a template's Outputs.
|
|
9
|
+
*
|
|
10
|
+
* An Output whose Condition is false is left out of the Stack altogether. It is
|
|
11
|
+
* never resolved, so it is absent from `stack.outputs` and from `DescribeStacks`,
|
|
12
|
+
* and the export name it carries is never published for another Stack to import.
|
|
13
|
+
*
|
|
14
|
+
* Naming a Condition the template does not define fails the deployment, the way
|
|
15
|
+
* it does on a Resource. An Output that quietly disappeared because its
|
|
16
|
+
* Condition was misspelled is worse than a Stack that refuses to deploy.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SimCfnOutputConditions {
|
|
19
|
+
private readonly conditions;
|
|
20
|
+
private readonly stackName;
|
|
21
|
+
constructor(properties: SimCfnOutputConditionsProperties);
|
|
22
|
+
/**
|
|
23
|
+
* Whether the template asked for this Output but its Condition is false.
|
|
24
|
+
*/
|
|
25
|
+
excludes(outputKey: string, outputTemplate: SimCfnTemplateValueRecord): boolean;
|
|
26
|
+
private error;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies the Output-level `Condition` attribute to a template's Outputs.
|
|
3
|
+
*
|
|
4
|
+
* An Output whose Condition is false is left out of the Stack altogether. It is
|
|
5
|
+
* never resolved, so it is absent from `stack.outputs` and from `DescribeStacks`,
|
|
6
|
+
* and the export name it carries is never published for another Stack to import.
|
|
7
|
+
*
|
|
8
|
+
* Naming a Condition the template does not define fails the deployment, the way
|
|
9
|
+
* it does on a Resource. An Output that quietly disappeared because its
|
|
10
|
+
* Condition was misspelled is worse than a Stack that refuses to deploy.
|
|
11
|
+
*/
|
|
12
|
+
export class SimCfnOutputConditions {
|
|
13
|
+
conditions;
|
|
14
|
+
stackName;
|
|
15
|
+
constructor(properties) {
|
|
16
|
+
this.conditions = properties.conditions;
|
|
17
|
+
this.stackName = properties.stackName;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Whether the template asked for this Output but its Condition is false.
|
|
21
|
+
*/
|
|
22
|
+
excludes(outputKey, outputTemplate) {
|
|
23
|
+
const conditionName = outputTemplate["Condition"];
|
|
24
|
+
if (conditionName === undefined) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (typeof conditionName !== "string") {
|
|
28
|
+
throw this.error(`Output ${outputKey} Condition must be a string`);
|
|
29
|
+
}
|
|
30
|
+
if (!this.conditions.has(conditionName)) {
|
|
31
|
+
throw this.error(`Output ${outputKey} names Condition ${conditionName}, which the ` +
|
|
32
|
+
"template does not define");
|
|
33
|
+
}
|
|
34
|
+
return !this.conditions.value(conditionName);
|
|
35
|
+
}
|
|
36
|
+
error(detail) {
|
|
37
|
+
return new Error(`Sim CloudFormation Stack ${this.stackName ?? "unknown"} ${detail}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import { SimCfnNode } from "../../sim-cfn-node.js";
|
|
2
2
|
import type { SimCfnResolveContext } from "../../../resolve/sim-cfn-resolve-context.js";
|
|
3
3
|
import type { SimCfnTemplateValue } from "../../../value/sim-cfn-template-value.js";
|
|
4
|
+
interface SimCfnFnFindInMapProperties {
|
|
5
|
+
readonly mapName: SimCfnNode;
|
|
6
|
+
readonly topLevelKey: SimCfnNode;
|
|
7
|
+
readonly secondLevelKey: SimCfnNode;
|
|
8
|
+
readonly defaultValue?: SimCfnNode | undefined;
|
|
9
|
+
}
|
|
4
10
|
/**
|
|
5
11
|
* Simulated CloudFormation `Fn::FindInMap` intrinsic function.
|
|
12
|
+
*
|
|
13
|
+
* The fourth argument a template can carry, `{ "DefaultValue": ... }`, answers
|
|
14
|
+
* a lookup the Mappings section has no value for. Without it a missing map or
|
|
15
|
+
* key fails the Resource, because a template that reads a key it never wrote is
|
|
16
|
+
* a mistake worth being told about.
|
|
6
17
|
*/
|
|
7
18
|
export declare class SimCfnFnFindInMap extends SimCfnNode {
|
|
8
19
|
private readonly mapName;
|
|
9
20
|
private readonly topLevelKey;
|
|
10
21
|
private readonly secondLevelKey;
|
|
11
|
-
|
|
22
|
+
private readonly defaultValue;
|
|
23
|
+
constructor(properties: SimCfnFnFindInMapProperties);
|
|
12
24
|
/**
|
|
13
25
|
* Resolve a value from the template Mappings section.
|
|
14
26
|
*/
|
|
@@ -17,6 +29,18 @@ export declare class SimCfnFnFindInMap extends SimCfnNode {
|
|
|
17
29
|
* Collect referenced names from every key expression.
|
|
18
30
|
*/
|
|
19
31
|
referencedNames(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* The `DefaultValue` a lookup falls back to, or a failure naming the path.
|
|
34
|
+
*/
|
|
35
|
+
private missing;
|
|
36
|
+
/**
|
|
37
|
+
* The expression left for a later pass, once a key can be a string.
|
|
38
|
+
*
|
|
39
|
+
* The `DefaultValue` goes back with it, so the lookup that eventually reads
|
|
40
|
+
* the Mappings still has the answer for a key that is not there.
|
|
41
|
+
*/
|
|
42
|
+
private unresolved;
|
|
20
43
|
private resolveKey;
|
|
21
44
|
private isResolvedKey;
|
|
22
45
|
}
|
|
46
|
+
export {};
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { SimCfnNode } from "../../sim-cfn-node.js";
|
|
2
2
|
import { isRecord } from "../../../../../../util/type-guard/record.js";
|
|
3
|
-
import { assertDefined } from "../../../../../../util/type-guard/defined.js";
|
|
4
3
|
import { isSimCfnUnresolvedExpression } from "../../../value/sim-cfn-unresolved-expression.js";
|
|
5
4
|
/**
|
|
6
5
|
* Simulated CloudFormation `Fn::FindInMap` intrinsic function.
|
|
6
|
+
*
|
|
7
|
+
* The fourth argument a template can carry, `{ "DefaultValue": ... }`, answers
|
|
8
|
+
* a lookup the Mappings section has no value for. Without it a missing map or
|
|
9
|
+
* key fails the Resource, because a template that reads a key it never wrote is
|
|
10
|
+
* a mistake worth being told about.
|
|
7
11
|
*/
|
|
8
12
|
export class SimCfnFnFindInMap extends SimCfnNode {
|
|
9
13
|
mapName;
|
|
10
14
|
topLevelKey;
|
|
11
15
|
secondLevelKey;
|
|
12
|
-
|
|
16
|
+
defaultValue;
|
|
17
|
+
constructor(properties) {
|
|
13
18
|
super();
|
|
14
|
-
this.mapName = mapName;
|
|
15
|
-
this.topLevelKey = topLevelKey;
|
|
16
|
-
this.secondLevelKey = secondLevelKey;
|
|
19
|
+
this.mapName = properties.mapName;
|
|
20
|
+
this.topLevelKey = properties.topLevelKey;
|
|
21
|
+
this.secondLevelKey = properties.secondLevelKey;
|
|
22
|
+
this.defaultValue = properties.defaultValue;
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Resolve a value from the template Mappings section.
|
|
@@ -25,19 +31,18 @@ export class SimCfnFnFindInMap extends SimCfnNode {
|
|
|
25
31
|
if (!this.isResolvedKey(mapName) ||
|
|
26
32
|
!this.isResolvedKey(topLevelKey) ||
|
|
27
33
|
!this.isResolvedKey(secondLevelKey)) {
|
|
28
|
-
return
|
|
29
|
-
"Fn::FindInMap": [mapName, topLevelKey, secondLevelKey],
|
|
30
|
-
};
|
|
34
|
+
return this.unresolved([mapName, topLevelKey, secondLevelKey], context);
|
|
31
35
|
}
|
|
32
36
|
// oxlint-disable-next-line security/detect-object-injection
|
|
33
37
|
const topLevel = context.mappings?.[mapName]?.[topLevelKey];
|
|
34
|
-
/* v8 ignore if -- defensive */
|
|
35
38
|
if (!isRecord(topLevel)) {
|
|
36
|
-
|
|
39
|
+
return this.missing(`${mapName}.${topLevelKey}`, context);
|
|
37
40
|
}
|
|
38
41
|
// oxlint-disable-next-line security/detect-object-injection
|
|
39
42
|
const value = topLevel[secondLevelKey];
|
|
40
|
-
|
|
43
|
+
if (value === undefined) {
|
|
44
|
+
return this.missing(`${mapName}.${topLevelKey}.${secondLevelKey}`, context);
|
|
45
|
+
}
|
|
41
46
|
return value;
|
|
42
47
|
}
|
|
43
48
|
/**
|
|
@@ -49,8 +54,35 @@ export class SimCfnFnFindInMap extends SimCfnNode {
|
|
|
49
54
|
...this.mapName.referencedNames(),
|
|
50
55
|
...this.topLevelKey.referencedNames(),
|
|
51
56
|
...this.secondLevelKey.referencedNames(),
|
|
57
|
+
...(this.defaultValue?.referencedNames() ?? []),
|
|
52
58
|
];
|
|
53
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The `DefaultValue` a lookup falls back to, or a failure naming the path.
|
|
62
|
+
*/
|
|
63
|
+
missing(path, context) {
|
|
64
|
+
if (this.defaultValue !== undefined) {
|
|
65
|
+
return this.defaultValue.resolve(context);
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`Sim CloudFormation Fn::FindInMap could not find map ${path}`);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The expression left for a later pass, once a key can be a string.
|
|
71
|
+
*
|
|
72
|
+
* The `DefaultValue` goes back with it, so the lookup that eventually reads
|
|
73
|
+
* the Mappings still has the answer for a key that is not there.
|
|
74
|
+
*/
|
|
75
|
+
unresolved(keys, context) {
|
|
76
|
+
if (this.defaultValue === undefined) {
|
|
77
|
+
return { "Fn::FindInMap": [...keys] };
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
"Fn::FindInMap": [
|
|
81
|
+
...keys,
|
|
82
|
+
{ DefaultValue: this.defaultValue.resolve(context) },
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
54
86
|
resolveKey(node, context) {
|
|
55
87
|
const value = node.resolve(context);
|
|
56
88
|
if (typeof value === "string") {
|
package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts
CHANGED
|
@@ -9,6 +9,13 @@ export declare class SimCfnFnFindInMapParser {
|
|
|
9
9
|
constructor(valueParser: SimCfnValueParser);
|
|
10
10
|
/**
|
|
11
11
|
* Parse and validate the value inside a Fn::FindInMap expression.
|
|
12
|
+
*
|
|
13
|
+
* The optional fourth argument is the `{ "DefaultValue": ... }` object
|
|
14
|
+
* CloudFormation answers a missing map or key with.
|
|
12
15
|
*/
|
|
13
16
|
parse(value: SimCfnTemplateValue): SimCfnFunctionFindInMap;
|
|
17
|
+
/**
|
|
18
|
+
* Parse the fourth argument, which the template need not carry.
|
|
19
|
+
*/
|
|
20
|
+
private defaultValue;
|
|
14
21
|
}
|
package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SimCfnFnFindInMap as SimCfnFunctionFindInMap } from "../../../node/fn/find-in-map/sim-cfn-fn-find-in-map.js";
|
|
2
2
|
import { assertDefined } from "../../../../../../util/type-guard/defined.js";
|
|
3
|
+
import { isRecord } from "../../../../../../util/type-guard/record.js";
|
|
3
4
|
/**
|
|
4
5
|
* Parses CloudFormation Fn::FindInMap values.
|
|
5
6
|
*/
|
|
@@ -10,10 +11,14 @@ export class SimCfnFnFindInMapParser {
|
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* Parse and validate the value inside a Fn::FindInMap expression.
|
|
14
|
+
*
|
|
15
|
+
* The optional fourth argument is the `{ "DefaultValue": ... }` object
|
|
16
|
+
* CloudFormation answers a missing map or key with.
|
|
13
17
|
*/
|
|
14
18
|
parse(value) {
|
|
15
|
-
if (!Array.isArray(value) || value.length
|
|
16
|
-
throw new Error("Sim CloudFormation Fn::FindInMap value must be [mapName,
|
|
19
|
+
if (!Array.isArray(value) || value.length < 3 || value.length > 4) {
|
|
20
|
+
throw new Error("Sim CloudFormation Fn::FindInMap value must be [mapName, " +
|
|
21
|
+
'topLevelKey, secondLevelKey] with an optional { "DefaultValue": ... }');
|
|
17
22
|
}
|
|
18
23
|
const mapName = value[0];
|
|
19
24
|
const topLevelKey = value[1];
|
|
@@ -21,6 +26,27 @@ export class SimCfnFnFindInMapParser {
|
|
|
21
26
|
assertDefined(mapName, "Fn::FindInMap map name");
|
|
22
27
|
assertDefined(topLevelKey, "Fn::FindInMap top level key");
|
|
23
28
|
assertDefined(secondLevelKey, "Fn::FindInMap second level key");
|
|
24
|
-
return new SimCfnFunctionFindInMap(
|
|
29
|
+
return new SimCfnFunctionFindInMap({
|
|
30
|
+
mapName: this.valueParser.parse(mapName),
|
|
31
|
+
topLevelKey: this.valueParser.parse(topLevelKey),
|
|
32
|
+
secondLevelKey: this.valueParser.parse(secondLevelKey),
|
|
33
|
+
defaultValue: this.defaultValue(value[3]),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse the fourth argument, which the template need not carry.
|
|
38
|
+
*/
|
|
39
|
+
defaultValue(value) {
|
|
40
|
+
if (value === undefined) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
if (!isRecord(value) ||
|
|
44
|
+
Object.keys(value).length !== 1 ||
|
|
45
|
+
!("DefaultValue" in value)) {
|
|
46
|
+
throw new Error('Sim CloudFormation Fn::FindInMap fourth value must be { "DefaultValue": ... }');
|
|
47
|
+
}
|
|
48
|
+
const defaultValue = value["DefaultValue"];
|
|
49
|
+
assertDefined(defaultValue, "Fn::FindInMap DefaultValue");
|
|
50
|
+
return this.valueParser.parse(defaultValue);
|
|
25
51
|
}
|
|
26
52
|
}
|