@kensio/yulin 1.20.16 → 1.21.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/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
- package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
- package/dist/service/athena/engine/sim-athena-shims.js +2 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
- package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
- package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
- package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
- package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +16 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +16 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +35 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +49 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +33 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +132 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
- package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +71 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +9 -7
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +12 -37
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +35 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +22 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +2 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
- package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +44 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +9 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +4 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +8 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
- package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +7 -3
- package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +4 -0
- package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
- package/dist/service/cloudfront/index.d.ts +2 -0
- package/dist/service/cloudfront/index.js +1 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
- package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +24 -0
- package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
- package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
- package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
- package/dist/service/cloudfront/sim-cf-etag.js +10 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
- package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +20 -12
- package/dist/service/cloudfront/sim-cloudfront-commands.js +20 -17
- package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
- package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +60 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.js +75 -0
- package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -44
- package/dist/service/cloudfront/sim-cloudfront.js +37 -58
- package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
- package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
- package/dist/service/ecr/sim-ecr.d.ts +7 -0
- package/dist/service/ecr/sim-ecr.js +16 -4
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
- package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
- package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
- package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
- package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
- package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
- package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
- package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
- package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
- package/dist/service/firehose/source/sim-firehose-source.js +5 -0
- package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
- package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +89 -0
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
- package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
- package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
- package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
- package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
- package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
- package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
- package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
- package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
- package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
- package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
- package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
- package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
- package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
- package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
- package/dist/service/iam/error/sim-iam.error.js +13 -0
- package/dist/service/iam/index.d.ts +1 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
- package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
- package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
- package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
- package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
- package/dist/service/iam/sim-iam-account-parts.js +1 -0
- package/dist/service/iam/sim-iam.d.ts +12 -2
- package/dist/service/iam/sim-iam.js +12 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
- package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
- package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
- package/dist/service/kms/command/sim-kms-request-options.d.ts +15 -0
- package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
- package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
- package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
- package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
- package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
- package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
- package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
- package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
- package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
- package/dist/service/logs/sim-logs-commands.d.ts +3 -0
- package/dist/service/logs/sim-logs-commands.js +4 -0
- package/dist/service/logs/sim-logs.js +6 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
- package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
- package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
- package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
- package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +11 -12
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
- package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
- package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
- package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
- package/dist/service/stepfunctions/sim-step-functions.js +26 -9
- package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
- package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
- package/dist/service/sts/sim-sts.d.ts +9 -0
- package/dist/service/sts/sim-sts.js +4 -0
- package/dist/util/memo/bounded-memo.d.ts +36 -0
- package/dist/util/memo/bounded-memo.js +58 -0
- package/docs/sdk/README.md +3 -1
- package/docs/services/athena/README.md +7 -1
- package/docs/services/cloudformation/README.md +197 -11
- package/docs/services/cloudfront/README.md +1116 -14
- package/docs/services/cloudwatch/README.md +6 -4
- package/docs/services/cognito/README.md +8 -7
- package/docs/services/dynamodb/README.md +6 -5
- package/docs/services/ecs/README.md +23 -9
- package/docs/services/elbv2/README.md +6 -2
- package/docs/services/eventbridge/README.md +9 -1
- package/docs/services/firehose/README.md +9 -3
- package/docs/services/glue/README.md +6 -0
- package/docs/services/iam/README.md +322 -27
- package/docs/services/kinesis/README.md +3 -2
- package/docs/services/kms/README.md +11 -2
- package/docs/services/lambda/README.md +76 -2
- package/docs/services/logs/README.md +22 -2
- package/docs/services/s3/README.md +7 -2
- package/docs/services/scheduler/README.md +12 -4
- package/docs/services/secretsmanager/README.md +6 -3
- package/docs/services/ses/README.md +3 -1
- package/docs/services/sns/README.md +5 -5
- package/docs/services/sqs/README.md +5 -5
- package/docs/services/ssm/README.md +35 -18
- package/docs/services/stepfunctions/README.md +11 -2
- package/docs/services/wafv2/README.md +5 -3
- package/package.json +1 -1
- package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The compression the policy keys on, as CloudFront's normalized
|
|
3
|
+
* `Accept-Encoding`.
|
|
4
|
+
*
|
|
5
|
+
* This is what caches one object twice, once compressed and once not, without
|
|
6
|
+
* the header being in the policy's whitelist. An encoding the viewer accepts
|
|
7
|
+
* but the policy does not enable is left out, since CloudFront would not have
|
|
8
|
+
* asked the Origin for it.
|
|
9
|
+
*/
|
|
10
|
+
export function simCfNormalizedAcceptEncoding(headers, cacheKey) {
|
|
11
|
+
const enabled = [
|
|
12
|
+
...(cacheKey.enableAcceptEncodingBrotli ? ["br"] : []),
|
|
13
|
+
...(cacheKey.enableAcceptEncodingGzip ? ["gzip"] : []),
|
|
14
|
+
];
|
|
15
|
+
const accepted = acceptedEncodings(headers.get("accept-encoding"));
|
|
16
|
+
return enabled.filter((encoding) => accepted.has(encoding));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The encodings a viewer said it accepts, by name alone. A quality value is
|
|
20
|
+
* ignored, so a viewer that sent `gzip;q=0` is taken to accept gzip.
|
|
21
|
+
*/
|
|
22
|
+
function acceptedEncodings(headerValue) {
|
|
23
|
+
return new Set((headerValue ?? "").split(",").map((encoding) => {
|
|
24
|
+
const [name = ""] = encoding.split(";", 1);
|
|
25
|
+
return name.trim().toLowerCase();
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an Origin's `Cache-Control` header says about holding the object at an
|
|
3
|
+
* edge.
|
|
4
|
+
*
|
|
5
|
+
* Only the directives that move CloudFront's own cache duration are read.
|
|
6
|
+
* `stale-while-revalidate` and `stale-if-error` are left out, because serving
|
|
7
|
+
* a stale object is a behaviour of its own that this simulation does not have.
|
|
8
|
+
*
|
|
9
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
|
|
10
|
+
*/
|
|
11
|
+
export interface SimCfCacheControl {
|
|
12
|
+
/**
|
|
13
|
+
* Whether the Origin asked for the object to stay out of a shared cache,
|
|
14
|
+
* through `no-store`, `no-cache` or `private`.
|
|
15
|
+
*/
|
|
16
|
+
readonly uncacheable: boolean;
|
|
17
|
+
/** The seconds `s-maxage` names, where it names a usable number of them. */
|
|
18
|
+
readonly sharedMaxAgeSec: number | undefined;
|
|
19
|
+
/** The seconds `max-age` names, where it names a usable number of them. */
|
|
20
|
+
readonly maxAgeSec: number | undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read the `Cache-Control` directives a response carries.
|
|
24
|
+
*
|
|
25
|
+
* A directive naming something other than a whole number of seconds is read as
|
|
26
|
+
* absent. `max-age=soon` falls through to whatever the response says next.
|
|
27
|
+
*/
|
|
28
|
+
export declare function simCfCacheControl(header: string | null): SimCfCacheControl;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three directives CloudFront and a browser both respect as a refusal.
|
|
3
|
+
*/
|
|
4
|
+
const uncacheableDirectives = ["no-store", "no-cache", "private"];
|
|
5
|
+
/**
|
|
6
|
+
* Read the `Cache-Control` directives a response carries.
|
|
7
|
+
*
|
|
8
|
+
* A directive naming something other than a whole number of seconds is read as
|
|
9
|
+
* absent. `max-age=soon` falls through to whatever the response says next.
|
|
10
|
+
*/
|
|
11
|
+
export function simCfCacheControl(header) {
|
|
12
|
+
const directives = cacheControlDirectives(header);
|
|
13
|
+
return {
|
|
14
|
+
uncacheable: uncacheableDirectives.some((directive) => directives.has(directive)),
|
|
15
|
+
sharedMaxAgeSec: directiveSeconds(directives.get("s-maxage")),
|
|
16
|
+
maxAgeSec: directiveSeconds(directives.get("max-age")),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Split a header into its directives, by lower-cased name.
|
|
21
|
+
*
|
|
22
|
+
* A directive carrying no value is held under an empty string, which is what
|
|
23
|
+
* makes `no-store` findable the same way as `max-age=60`.
|
|
24
|
+
*/
|
|
25
|
+
function cacheControlDirectives(header) {
|
|
26
|
+
const directives = new Map();
|
|
27
|
+
const parts = (header ?? "").split(",");
|
|
28
|
+
for (const part of parts) {
|
|
29
|
+
const trimmed = part.trim();
|
|
30
|
+
if (trimmed.length === 0) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const separator = trimmed.indexOf("=");
|
|
34
|
+
const name = separator === -1 ? trimmed : trimmed.slice(0, Math.max(0, separator));
|
|
35
|
+
directives.set(name.trim().toLowerCase(), separator === -1 ? "" : trimmed.slice(separator + 1).trim());
|
|
36
|
+
}
|
|
37
|
+
return directives;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The seconds a directive's value names, or none where it names no whole
|
|
41
|
+
* number of them.
|
|
42
|
+
*/
|
|
43
|
+
function directiveSeconds(value) {
|
|
44
|
+
if (value === undefined) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const seconds = value.replace(/^"(.*)"$/, "$1");
|
|
48
|
+
return /^\d+$/.test(seconds) ? Number(seconds) : undefined;
|
|
49
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The request path one cache entry was keyed under.
|
|
3
|
+
*
|
|
4
|
+
* `simCfCacheEntryKey` builds the key as a JSON array with the path third in
|
|
5
|
+
* it, and this reads that element back out. An invalidation matches entries by
|
|
6
|
+
* path this way, and the cache keeps its one map keyed on the whole key.
|
|
7
|
+
*
|
|
8
|
+
* A key of another shape answers with nothing. An invalidation then leaves the
|
|
9
|
+
* entry where it is.
|
|
10
|
+
*/
|
|
11
|
+
export declare function simCfCacheEntryKeyPath(key: string): string | undefined;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the request path sits in a cache entry key.
|
|
3
|
+
*/
|
|
4
|
+
const cacheEntryKeyPathIndex = 2;
|
|
5
|
+
/**
|
|
6
|
+
* The request path one cache entry was keyed under.
|
|
7
|
+
*
|
|
8
|
+
* `simCfCacheEntryKey` builds the key as a JSON array with the path third in
|
|
9
|
+
* it, and this reads that element back out. An invalidation matches entries by
|
|
10
|
+
* path this way, and the cache keeps its one map keyed on the whole key.
|
|
11
|
+
*
|
|
12
|
+
* A key of another shape answers with nothing. An invalidation then leaves the
|
|
13
|
+
* entry where it is.
|
|
14
|
+
*/
|
|
15
|
+
export function simCfCacheEntryKeyPath(key) {
|
|
16
|
+
const parts = JSON.parse(key);
|
|
17
|
+
if (!Array.isArray(parts)) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const path = parts.at(cacheEntryKeyPathIndex);
|
|
21
|
+
return typeof path === "string" ? path : undefined;
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SimCloudFrontCacheKey } from "../cache-policy/sim-cf-cache-key.js";
|
|
2
|
+
interface SimCfCacheEntryKeyProperties {
|
|
3
|
+
readonly request: Request;
|
|
4
|
+
/**
|
|
5
|
+
* What the Behavior's cache policy keys on.
|
|
6
|
+
*/
|
|
7
|
+
readonly cacheKey: SimCloudFrontCacheKey;
|
|
8
|
+
/**
|
|
9
|
+
* The edge the request arrived at, which caches apart from every other edge.
|
|
10
|
+
*/
|
|
11
|
+
readonly edgeId: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The key one request is cached under.
|
|
15
|
+
*
|
|
16
|
+
* CloudFront keys on the request path plus whatever the cache policy names:
|
|
17
|
+
* the query strings, the headers and the cookies it lists, and the normalized
|
|
18
|
+
* `Accept-Encoding` where it enables gzip or brotli. Two requests differing
|
|
19
|
+
* only in something the policy leaves out share one entry, which is the whole
|
|
20
|
+
* point of a cache key.
|
|
21
|
+
*
|
|
22
|
+
* The path sits third in the key, which `simCfCacheEntryKeyPath` reads it back
|
|
23
|
+
* out of when an invalidation matches an entry.
|
|
24
|
+
*
|
|
25
|
+
* The method is part of the key here because a HEAD response carries no body
|
|
26
|
+
* and a GET response does, so serving one from the other would answer with the
|
|
27
|
+
* wrong thing.
|
|
28
|
+
*
|
|
29
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-the-cache-key.html
|
|
30
|
+
*/
|
|
31
|
+
export declare function simCfCacheEntryKey(properties: SimCfCacheEntryKeyProperties): string;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { jsonStringify } from "../../../util/type-guard/json.js";
|
|
2
|
+
import { simCfNormalizedAcceptEncoding } from "./sim-cf-accept-encoding.js";
|
|
3
|
+
/**
|
|
4
|
+
* The key one request is cached under.
|
|
5
|
+
*
|
|
6
|
+
* CloudFront keys on the request path plus whatever the cache policy names:
|
|
7
|
+
* the query strings, the headers and the cookies it lists, and the normalized
|
|
8
|
+
* `Accept-Encoding` where it enables gzip or brotli. Two requests differing
|
|
9
|
+
* only in something the policy leaves out share one entry, which is the whole
|
|
10
|
+
* point of a cache key.
|
|
11
|
+
*
|
|
12
|
+
* The path sits third in the key, which `simCfCacheEntryKeyPath` reads it back
|
|
13
|
+
* out of when an invalidation matches an entry.
|
|
14
|
+
*
|
|
15
|
+
* The method is part of the key here because a HEAD response carries no body
|
|
16
|
+
* and a GET response does, so serving one from the other would answer with the
|
|
17
|
+
* wrong thing.
|
|
18
|
+
*
|
|
19
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-the-cache-key.html
|
|
20
|
+
*/
|
|
21
|
+
export function simCfCacheEntryKey(properties) {
|
|
22
|
+
const { request, cacheKey, edgeId } = properties;
|
|
23
|
+
const url = new URL(request.url);
|
|
24
|
+
return jsonStringify([
|
|
25
|
+
edgeId,
|
|
26
|
+
request.method.toUpperCase(),
|
|
27
|
+
url.pathname,
|
|
28
|
+
keyedQueryStrings(url.searchParams, cacheKey),
|
|
29
|
+
keyedHeaders(request.headers, cacheKey),
|
|
30
|
+
keyedCookies(request.headers, cacheKey),
|
|
31
|
+
simCfNormalizedAcceptEncoding(request.headers, cacheKey),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The query strings the policy keys on, in an order two requests sending them
|
|
36
|
+
* differently still agree on.
|
|
37
|
+
*/
|
|
38
|
+
function keyedQueryStrings(searchParameters, cacheKey) {
|
|
39
|
+
return [...searchParameters]
|
|
40
|
+
.filter(([name]) => isKeyedOn(cacheKey.queryStringBehavior, cacheKey.queryStrings, name))
|
|
41
|
+
.map(([name, value]) => `${name}=${value}`)
|
|
42
|
+
.toSorted(byCodePoint);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The headers the policy keys on, by lower-case name since a header name is
|
|
46
|
+
* case insensitive.
|
|
47
|
+
*
|
|
48
|
+
* A header the policy names and the viewer did not send keys as an empty
|
|
49
|
+
* value, so a request sending it and one leaving it out are kept apart.
|
|
50
|
+
*/
|
|
51
|
+
function keyedHeaders(headers, cacheKey) {
|
|
52
|
+
if (cacheKey.headerBehavior === "none") {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
return cacheKey.headers
|
|
56
|
+
.map((name) => `${name.toLowerCase()}=${headers.get(name) ?? ""}`)
|
|
57
|
+
.toSorted(byCodePoint);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The cookies the policy keys on, read out of the one `Cookie` header a
|
|
61
|
+
* request sends them all in.
|
|
62
|
+
*/
|
|
63
|
+
function keyedCookies(headers, cacheKey) {
|
|
64
|
+
return (headers.get("cookie") ?? "")
|
|
65
|
+
.split(";")
|
|
66
|
+
.map((cookie) => cookie.trim())
|
|
67
|
+
.filter((cookie) => cookie.length > 0)
|
|
68
|
+
.filter((cookie) => isKeyedOn(cacheKey.cookieBehavior, cacheKey.cookies, cookieName(cookie)))
|
|
69
|
+
.toSorted(byCodePoint);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Order two parts of a key the same way whatever the host's locale is, which a
|
|
73
|
+
* key two requests have to agree on cannot be left to `localeCompare`.
|
|
74
|
+
*/
|
|
75
|
+
function byCodePoint(one, other) {
|
|
76
|
+
if (one === other) {
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
return one < other ? -1 : 1;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The name half of one `name=value` cookie.
|
|
83
|
+
*/
|
|
84
|
+
function cookieName(cookie) {
|
|
85
|
+
const [name = ""] = cookie.split("=", 1);
|
|
86
|
+
return name;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether one name is in the cache key, under the behaviour its section names.
|
|
90
|
+
*
|
|
91
|
+
* A `whitelist` keys on the names listed and an `allExcept` keys on everything
|
|
92
|
+
* but them, which is the same list read two ways.
|
|
93
|
+
*
|
|
94
|
+
* The cookie behaviours and the query string behaviours are the same four
|
|
95
|
+
* values, so one function reads both.
|
|
96
|
+
*/
|
|
97
|
+
function isKeyedOn(behavior, names, name) {
|
|
98
|
+
switch (behavior) {
|
|
99
|
+
case "all": {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
case "whitelist": {
|
|
103
|
+
return names.includes(name);
|
|
104
|
+
}
|
|
105
|
+
case "allExcept": {
|
|
106
|
+
return !names.includes(name);
|
|
107
|
+
}
|
|
108
|
+
case "none": {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The header a hit carries its age in, in seconds.
|
|
3
|
+
*/
|
|
4
|
+
export declare const simCfAgeHeaderName = "age";
|
|
5
|
+
/**
|
|
6
|
+
* What `X-Cache` reads when the Distribution's cache answered.
|
|
7
|
+
*/
|
|
8
|
+
export declare const simCfCacheHit = "Hit from cloudfront";
|
|
9
|
+
/**
|
|
10
|
+
* What `X-Cache` reads when the Origin answered.
|
|
11
|
+
*/
|
|
12
|
+
export declare const simCfCacheMiss = "Miss from cloudfront";
|
|
13
|
+
/**
|
|
14
|
+
* The response with `X-Cache` saying which of the two answered it.
|
|
15
|
+
*
|
|
16
|
+
* An `X-Cache` an Origin sent is replaced, the way CloudFront replaces one.
|
|
17
|
+
*/
|
|
18
|
+
export declare function simCfCacheStatusResponse(response: Response, hit: boolean): Response;
|
|
19
|
+
/**
|
|
20
|
+
* How long an entry stored at one instant has been held at another, in whole
|
|
21
|
+
* seconds.
|
|
22
|
+
*
|
|
23
|
+
* Both instants come off the simulation's clock. A test reaches any age it
|
|
24
|
+
* wants by advancing simulated time. A clock wound backwards would give a
|
|
25
|
+
* negative age, and HTTP has no such thing, so zero is the floor.
|
|
26
|
+
*/
|
|
27
|
+
export declare function simCfCacheAgeSec(storedAt: Date, now: Date): number;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What CloudFront tells the viewer about the cache that answered.
|
|
3
|
+
*
|
|
4
|
+
* `X-Cache` says whether the Distribution held the object, and `Age` says how
|
|
5
|
+
* long it has held it. Both go on ahead of the Behavior's response headers
|
|
6
|
+
* policy and the viewer-response event. A policy can take either off, and a
|
|
7
|
+
* viewer-response function sees them.
|
|
8
|
+
*
|
|
9
|
+
* Real CloudFront writes several other values into `X-Cache` (`RefreshHit` and
|
|
10
|
+
* `LambdaGeneratedResponse` among them). A hit and a miss are the two this
|
|
11
|
+
* simulation reaches, and a response answered before the cache was consulted
|
|
12
|
+
* carries no `X-Cache` at all.
|
|
13
|
+
*
|
|
14
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html
|
|
15
|
+
*/
|
|
16
|
+
const xCacheHeaderName = "x-cache";
|
|
17
|
+
/**
|
|
18
|
+
* The header a hit carries its age in, in seconds.
|
|
19
|
+
*/
|
|
20
|
+
export const simCfAgeHeaderName = "age";
|
|
21
|
+
/**
|
|
22
|
+
* What `X-Cache` reads when the Distribution's cache answered.
|
|
23
|
+
*/
|
|
24
|
+
export const simCfCacheHit = "Hit from cloudfront";
|
|
25
|
+
/**
|
|
26
|
+
* What `X-Cache` reads when the Origin answered.
|
|
27
|
+
*/
|
|
28
|
+
export const simCfCacheMiss = "Miss from cloudfront";
|
|
29
|
+
/**
|
|
30
|
+
* The response with `X-Cache` saying which of the two answered it.
|
|
31
|
+
*
|
|
32
|
+
* An `X-Cache` an Origin sent is replaced, the way CloudFront replaces one.
|
|
33
|
+
*/
|
|
34
|
+
export function simCfCacheStatusResponse(response, hit) {
|
|
35
|
+
const headers = new Headers(response.headers);
|
|
36
|
+
headers.set(xCacheHeaderName, hit ? simCfCacheHit : simCfCacheMiss);
|
|
37
|
+
return new Response(response.body, {
|
|
38
|
+
status: response.status,
|
|
39
|
+
statusText: response.statusText,
|
|
40
|
+
headers,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* How long an entry stored at one instant has been held at another, in whole
|
|
45
|
+
* seconds.
|
|
46
|
+
*
|
|
47
|
+
* Both instants come off the simulation's clock. A test reaches any age it
|
|
48
|
+
* wants by advancing simulated time. A clock wound backwards would give a
|
|
49
|
+
* negative age, and HTTP has no such thing, so zero is the floor.
|
|
50
|
+
*/
|
|
51
|
+
export function simCfCacheAgeSec(storedAt, now) {
|
|
52
|
+
return Math.max(0, Math.floor((now.getTime() - storedAt.getTime()) / 1000));
|
|
53
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SimCloudFrontCachePolicy } from "../cache-policy/sim-cf-cache-policy.js";
|
|
2
|
+
interface SimCfCacheTtlProperties {
|
|
3
|
+
/** The response the Origin answered with, whose headers carry the ask. */
|
|
4
|
+
readonly response: Response;
|
|
5
|
+
/** The Behavior's cache policy, whose three TTLs decide the answer. */
|
|
6
|
+
readonly policy: SimCloudFrontCachePolicy;
|
|
7
|
+
/** Now, off the simulation's clock, which `Expires` is measured from. */
|
|
8
|
+
readonly now: Date;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* How many seconds a Distribution holds this response for. Zero says it holds
|
|
12
|
+
* it not at all.
|
|
13
|
+
*
|
|
14
|
+
* The Origin asks and the policy decides how much of the ask to grant. An
|
|
15
|
+
* Origin naming a duration gets it held between the policy's `MinTTL` and
|
|
16
|
+
* `MaxTTL`, and one naming none gets the greater of `MinTTL` and `DefaultTTL`.
|
|
17
|
+
* `s-maxage` is preferred to `max-age`, and `max-age` to `Expires`, which is
|
|
18
|
+
* the order CloudFront reads them in.
|
|
19
|
+
*
|
|
20
|
+
* `no-store`, `no-cache` and `private` are respected where `MinTTL` is 0, and
|
|
21
|
+
* held for `MinTTL` where it is higher. That last one is CloudFront's own
|
|
22
|
+
* surprise. A policy with a floor overrides an Origin that asked for nothing to
|
|
23
|
+
* be stored.
|
|
24
|
+
*
|
|
25
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
|
|
26
|
+
*/
|
|
27
|
+
export declare function simCfCacheTtlSec(properties: SimCfCacheTtlProperties): number;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { simCfCacheControl } from "./sim-cf-cache-control.js";
|
|
2
|
+
import { simCfHttpDateInstant } from "./sim-cf-http-date.js";
|
|
3
|
+
/**
|
|
4
|
+
* How many seconds a Distribution holds this response for. Zero says it holds
|
|
5
|
+
* it not at all.
|
|
6
|
+
*
|
|
7
|
+
* The Origin asks and the policy decides how much of the ask to grant. An
|
|
8
|
+
* Origin naming a duration gets it held between the policy's `MinTTL` and
|
|
9
|
+
* `MaxTTL`, and one naming none gets the greater of `MinTTL` and `DefaultTTL`.
|
|
10
|
+
* `s-maxage` is preferred to `max-age`, and `max-age` to `Expires`, which is
|
|
11
|
+
* the order CloudFront reads them in.
|
|
12
|
+
*
|
|
13
|
+
* `no-store`, `no-cache` and `private` are respected where `MinTTL` is 0, and
|
|
14
|
+
* held for `MinTTL` where it is higher. That last one is CloudFront's own
|
|
15
|
+
* surprise. A policy with a floor overrides an Origin that asked for nothing to
|
|
16
|
+
* be stored.
|
|
17
|
+
*
|
|
18
|
+
* https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
|
|
19
|
+
*/
|
|
20
|
+
export function simCfCacheTtlSec(properties) {
|
|
21
|
+
const { response, policy, now } = properties;
|
|
22
|
+
const control = simCfCacheControl(response.headers.get("cache-control"));
|
|
23
|
+
if (control.uncacheable) {
|
|
24
|
+
return policy.minTtlSec;
|
|
25
|
+
}
|
|
26
|
+
const asked = control.sharedMaxAgeSec ??
|
|
27
|
+
control.maxAgeSec ??
|
|
28
|
+
expiresTtlSec(response, now);
|
|
29
|
+
if (asked === undefined) {
|
|
30
|
+
return Math.max(policy.minTtlSec, policy.defaultTtlSec);
|
|
31
|
+
}
|
|
32
|
+
return Math.min(Math.max(asked, policy.minTtlSec), policy.maxTtlSec);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The seconds left until the `Expires` header's instant, or none where the
|
|
36
|
+
* response carries no such header.
|
|
37
|
+
*
|
|
38
|
+
* A date already gone by counts as no seconds, which the policy's `MinTTL`
|
|
39
|
+
* then raises where it has one. A value that is not an HTTP date counts the
|
|
40
|
+
* same way, following RFC 9111, which reads an unparsable `Expires` as an
|
|
41
|
+
* object that has already expired.
|
|
42
|
+
*/
|
|
43
|
+
function expiresTtlSec(response, now) {
|
|
44
|
+
const expires = response.headers.get("expires");
|
|
45
|
+
if (expires === null) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const instant = simCfHttpDateInstant(expires.trim());
|
|
49
|
+
return instant === undefined ? 0 : (instant - now.getTime()) / 1000;
|
|
50
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { SimCloudFrontBehavior } from "../behaviour/sim-cloud-front-behavior.js";
|
|
2
|
+
import type { SimCloudFrontCachePolicy } from "../cache-policy/sim-cf-cache-policy.js";
|
|
3
|
+
import type { SimCloudFront } from "../sim-cloudfront.js";
|
|
4
|
+
interface SimCfCacheableRequestProperties {
|
|
5
|
+
readonly cloudFront: SimCloudFront;
|
|
6
|
+
readonly behaviour: SimCloudFrontBehavior;
|
|
7
|
+
readonly request: Request;
|
|
8
|
+
readonly edgeId: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A request the Behavior caches, and what decides for how long.
|
|
12
|
+
*/
|
|
13
|
+
export interface SimCfCacheableRequest {
|
|
14
|
+
/** The key the request is cached under. */
|
|
15
|
+
readonly key: string;
|
|
16
|
+
/**
|
|
17
|
+
* The policy the key came from, whose TTLs settle how long the Origin's
|
|
18
|
+
* answer is held.
|
|
19
|
+
*/
|
|
20
|
+
readonly policy: SimCloudFrontCachePolicy;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The key this request is cached under and the policy that decided it, or none
|
|
24
|
+
* where the Behavior caches nothing.
|
|
25
|
+
*
|
|
26
|
+
* Three things stop a Behavior caching. Its cache policy may be one this
|
|
27
|
+
* simulation does not hold, including the Behavior that names no policy at
|
|
28
|
+
* all, and there is nothing to key on and no TTL that is not a guess. Its
|
|
29
|
+
* policy may cache nothing, which is what a `MaxTTL` of zero says and is how
|
|
30
|
+
* `CachingDisabled` reaches the Origin every time. Or the request's method may
|
|
31
|
+
* be outside the Behavior's `CachedMethods`, which is CloudFront's own rule
|
|
32
|
+
* that a POST is never served from a cache.
|
|
33
|
+
*/
|
|
34
|
+
export declare function simCfCacheableRequest(properties: SimCfCacheableRequestProperties): SimCfCacheableRequest | undefined;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { simCfCacheEntryKey } from "./sim-cf-cache-entry-key.js";
|
|
2
|
+
/**
|
|
3
|
+
* The key this request is cached under and the policy that decided it, or none
|
|
4
|
+
* where the Behavior caches nothing.
|
|
5
|
+
*
|
|
6
|
+
* Three things stop a Behavior caching. Its cache policy may be one this
|
|
7
|
+
* simulation does not hold, including the Behavior that names no policy at
|
|
8
|
+
* all, and there is nothing to key on and no TTL that is not a guess. Its
|
|
9
|
+
* policy may cache nothing, which is what a `MaxTTL` of zero says and is how
|
|
10
|
+
* `CachingDisabled` reaches the Origin every time. Or the request's method may
|
|
11
|
+
* be outside the Behavior's `CachedMethods`, which is CloudFront's own rule
|
|
12
|
+
* that a POST is never served from a cache.
|
|
13
|
+
*/
|
|
14
|
+
export function simCfCacheableRequest(properties) {
|
|
15
|
+
const { cloudFront, behaviour, request, edgeId } = properties;
|
|
16
|
+
if (!cloudFront.cachingEnabled) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const policy = behaviour.cachePolicyId === undefined
|
|
20
|
+
? undefined
|
|
21
|
+
: cloudFront.getCachePolicyById(behaviour.cachePolicyId);
|
|
22
|
+
if (policy === undefined || policy.maxTtlSec <= 0) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
if (!behaviour.cachedMethods.has(request.method.toUpperCase())) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
key: simCfCacheEntryKey({ request, cacheKey: policy.cacheKey, edgeId }),
|
|
30
|
+
policy,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type SimClock } from "../../../util/clock/sim-clock.js";
|
|
2
|
+
/**
|
|
3
|
+
* What one simulated Distribution has cached.
|
|
4
|
+
*
|
|
5
|
+
* Real CloudFront caches at each of its points of presence rather than once
|
|
6
|
+
* per Distribution, which the edge in the key stands for. One cache holds an
|
|
7
|
+
* entry per edge, and a request arriving at another edge misses.
|
|
8
|
+
*
|
|
9
|
+
* An entry leaves the cache two ways. It expires on the simulation's clock
|
|
10
|
+
* rather than the host's. A test reaches the instant an object goes stale by
|
|
11
|
+
* advancing simulated time, with no waiting. Or an invalidation clears it ahead
|
|
12
|
+
* of that instant.
|
|
13
|
+
*
|
|
14
|
+
* Storing takes its seconds from the caller. An Origin's answer is held for
|
|
15
|
+
* what its cache policy allows, and an error's own `ErrorCachingMinTTL` fits
|
|
16
|
+
* the same call.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SimCfDistributionCache {
|
|
19
|
+
private readonly entries;
|
|
20
|
+
private readonly clock;
|
|
21
|
+
/**
|
|
22
|
+
* A cache built standalone, outside a Distribution, falls back to the real
|
|
23
|
+
* clock.
|
|
24
|
+
*/
|
|
25
|
+
constructor(clock?: SimClock);
|
|
26
|
+
/**
|
|
27
|
+
* The response cached under a key, or none where the cache does not hold it.
|
|
28
|
+
*
|
|
29
|
+
* An entry that has reached its expiry is dropped here. The request then goes
|
|
30
|
+
* to the Origin, and what the Origin answers replaces the expired entry.
|
|
31
|
+
*
|
|
32
|
+
* What comes back carries `Age`, counted on the simulation's clock from the
|
|
33
|
+
* instant the Origin's answer was stored. An `Age` the Origin sent is
|
|
34
|
+
* replaced by the Distribution's own, as CloudFront replaces one.
|
|
35
|
+
*/
|
|
36
|
+
read(key: string): Response | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Cache a response under a key for a number of seconds, and hand back one to
|
|
39
|
+
* carry on with.
|
|
40
|
+
*
|
|
41
|
+
* Storing reads the response's body, which can only happen once, so the
|
|
42
|
+
* response the caller continues with is built from the bytes that were
|
|
43
|
+
* stored rather than being the one passed in. A TTL of no seconds stores
|
|
44
|
+
* nothing, and the response passed in is handed straight back unread.
|
|
45
|
+
*/
|
|
46
|
+
store(key: string, response: Response, ttlSec: number): Promise<Response>;
|
|
47
|
+
/**
|
|
48
|
+
* Forget every entry an invalidation's paths name, at every edge.
|
|
49
|
+
*
|
|
50
|
+
* The path an entry was cached under is read back out of its key, so
|
|
51
|
+
* matching a batch costs a pass over the keys rather than a second map from
|
|
52
|
+
* path to entry. Nothing here is keyed on the edge, because an invalidation
|
|
53
|
+
* reaches every point of presence rather than the one a viewer happened to
|
|
54
|
+
* arrive at.
|
|
55
|
+
*/
|
|
56
|
+
clearPaths(paths: readonly string[]): void;
|
|
57
|
+
}
|