@kensio/yulin 0.23.0 → 0.24.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/README.md +8 -5
- package/dist/docs/tsconfig.tsbuildinfo +1 -1
- package/dist/serve/controller/sim-service-controller.d.ts.map +1 -1
- package/dist/serve/http/node-fetch-http-adapter.js +1 -1
- package/dist/serve/http/node-fetch-http-adapter.js.map +1 -1
- package/dist/serve/http/sim-aws-http.d.ts +1 -1
- package/dist/serve/http/sim-aws-http.d.ts.map +1 -1
- package/dist/serve/http/sim-aws-http.js +3 -3
- package/dist/serve/http/sim-aws-http.js.map +1 -1
- package/dist/service/acm/certificate/sim-acm-certificate.d.ts +56 -0
- package/dist/service/acm/certificate/sim-acm-certificate.d.ts.map +1 -0
- package/dist/service/acm/certificate/sim-acm-certificate.js +47 -0
- package/dist/service/acm/certificate/sim-acm-certificate.js.map +1 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-prop-reader.d.ts +52 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-prop-reader.d.ts.map +1 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-prop-reader.js +105 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-prop-reader.js.map +1 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-properties.d.ts +40 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-properties.d.ts.map +1 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-properties.js +79 -0
- package/dist/service/acm/cfn/property/sim-cfn-acm-cert-properties.js.map +1 -0
- package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.d.ts +20 -0
- package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.d.ts.map +1 -0
- package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.js +47 -0
- package/dist/service/acm/cfn/sim-cfn-acm-resource-factory.js.map +1 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.cmd.d.ts +58 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.cmd.d.ts.map +1 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.cmd.js +2 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.cmd.js.map +1 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.handler.d.ts +26 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.handler.d.ts.map +1 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.handler.js +36 -0
- package/dist/service/acm/command/describe-certificate/describe-certificate.handler.js.map +1 -0
- package/dist/service/acm/command/describe-certificate/sim-acm-cert-detail-factory.d.ts +22 -0
- package/dist/service/acm/command/describe-certificate/sim-acm-cert-detail-factory.d.ts.map +1 -0
- package/dist/service/acm/command/describe-certificate/sim-acm-cert-detail-factory.js +45 -0
- package/dist/service/acm/command/describe-certificate/sim-acm-cert-detail-factory.js.map +1 -0
- package/dist/service/acm/command/list-certificates/list-certificates.cmd.d.ts +43 -0
- package/dist/service/acm/command/list-certificates/list-certificates.cmd.d.ts.map +1 -0
- package/dist/service/acm/command/list-certificates/list-certificates.cmd.js +2 -0
- package/dist/service/acm/command/list-certificates/list-certificates.cmd.js.map +1 -0
- package/dist/service/acm/command/list-certificates/list-certificates.handler.d.ts +28 -0
- package/dist/service/acm/command/list-certificates/list-certificates.handler.d.ts.map +1 -0
- package/dist/service/acm/command/list-certificates/list-certificates.handler.js +71 -0
- package/dist/service/acm/command/list-certificates/list-certificates.handler.js.map +1 -0
- package/dist/service/acm/command/request-certificate/request-cert-factory.d.ts +54 -0
- package/dist/service/acm/command/request-certificate/request-cert-factory.d.ts.map +1 -0
- package/dist/service/acm/command/request-certificate/request-cert-factory.js +101 -0
- package/dist/service/acm/command/request-certificate/request-cert-factory.js.map +1 -0
- package/dist/service/acm/command/request-certificate/request-certificate.cmd.d.ts +43 -0
- package/dist/service/acm/command/request-certificate/request-certificate.cmd.d.ts.map +1 -0
- package/dist/service/acm/command/request-certificate/request-certificate.cmd.js +2 -0
- package/dist/service/acm/command/request-certificate/request-certificate.cmd.js.map +1 -0
- package/dist/service/acm/command/request-certificate/request-certificate.handler.d.ts +28 -0
- package/dist/service/acm/command/request-certificate/request-certificate.handler.d.ts.map +1 -0
- package/dist/service/acm/command/request-certificate/request-certificate.handler.js +44 -0
- package/dist/service/acm/command/request-certificate/request-certificate.handler.js.map +1 -0
- package/dist/service/acm/error/sim-acm.error.d.ts +35 -0
- package/dist/service/acm/error/sim-acm.error.d.ts.map +1 -0
- package/dist/service/acm/error/sim-acm.error.js +38 -0
- package/dist/service/acm/error/sim-acm.error.js.map +1 -0
- package/dist/service/acm/sim-acm.d.ts +39 -0
- package/dist/service/acm/sim-acm.d.ts.map +1 -0
- package/dist/service/acm/sim-acm.js +60 -0
- package/dist/service/acm/sim-acm.js.map +1 -0
- package/dist/service/aws/arn.d.ts +1 -1
- package/dist/service/aws/arn.d.ts.map +1 -1
- package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +35 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts.map +1 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.js +53 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.js.map +1 -0
- package/dist/service/aws/factory/sim-aws-service-factory.d.ts +21 -10
- package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
- package/dist/service/aws/factory/sim-aws-service-factory.js +35 -25
- package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts +10 -0
- package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.js +16 -4
- package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
- package/dist/service/aws/sim-aws-account.d.ts +10 -0
- package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account.js +12 -0
- package/dist/service/aws/sim-aws-account.js.map +1 -1
- package/dist/service/aws/sim-aws-region.d.ts +10 -0
- package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-region.js +12 -0
- package/dist/service/aws/sim-aws-region.js.map +1 -1
- package/dist/service/aws/sim-aws.d.ts +17 -2
- package/dist/service/aws/sim-aws.d.ts.map +1 -1
- package/dist/service/aws/sim-aws.js +21 -4
- package/dist/service/aws/sim-aws.js.map +1 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/error-message/sim-cdk-bucket-deploy-error-message.d.ts +4 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/error-message/sim-cdk-bucket-deploy-error-message.d.ts.map +1 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/error-message/sim-cdk-bucket-deploy-error-message.js +12 -6
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/error-message/sim-cdk-bucket-deploy-error-message.js.map +1 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.d.ts.map +1 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +2 -3
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js.map +1 -1
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts.map +1 -1
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js.map +1 -1
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts.map +1 -1
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js.map +1 -1
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +12 -15
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts.map +1 -1
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +30 -5
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js.map +1 -1
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts.map +1 -1
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +2 -3
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-certificate-cfn.d.ts +23 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-certificate-cfn.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-certificate-cfn.js +33 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-certificate-cfn.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-distribution-cfn.d.ts +2 -2
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-distribution-cfn.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-distribution-cfn.js +6 -6
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-distribution-cfn.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-function-cfn.d.ts +1 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-function-cfn.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-function-cfn.js +5 -5
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-function-cfn.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-hosted-zone-cfn.d.ts +23 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-hosted-zone-cfn.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-hosted-zone-cfn.js +37 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-hosted-zone-cfn.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-bucket-cfn.d.ts +1 -2
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-bucket-cfn.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-bucket-cfn.js +8 -8
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-bucket-cfn.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/sim-cfn-default-resource-value-adapter.d.ts +1 -1
- package/dist/service/cloudformation/resource/cfn/sim-cfn-default-resource-value-adapter.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/sim-cfn-default-resource-value-adapter.js +4 -4
- package/dist/service/cloudformation/resource/cfn/sim-cfn-default-resource-value-adapter.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.js +17 -2
- package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.js.map +1 -1
- package/dist/service/cloudformation/resource/create/sim-cfn-resource-creator.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/create/sim-cfn-resource-creator.js +2 -3
- package/dist/service/cloudformation/resource/create/sim-cfn-resource-creator.js.map +1 -1
- package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.js +7 -0
- package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.js.map +1 -1
- package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/sim-cfn-resource.js.map +1 -1
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-creation-state.d.ts +3 -4
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-creation-state.d.ts.map +1 -1
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-creation-state.js +23 -22
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-creation-state.js.map +1 -1
- package/dist/service/cloudformation/sim-cloudformation.d.ts +0 -4
- package/dist/service/cloudformation/sim-cloudformation.d.ts.map +1 -1
- package/dist/service/cloudformation/sim-cloudformation.js +4 -10
- package/dist/service/cloudformation/sim-cloudformation.js.map +1 -1
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-deployment-lifecycle.d.ts +1 -1
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-deployment-lifecycle.d.ts.map +1 -1
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-deployment-lifecycle.js +7 -7
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-deployment-lifecycle.js.map +1 -1
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts.map +1 -1
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js.map +1 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts.map +1 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.js.map +1 -1
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts.map +1 -1
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +2 -3
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js.map +1 -1
- package/dist/service/cloudformation/template/node/fn/sub/resolve/sim-cfn-fn-sub-unresolved-value.d.ts +22 -0
- package/dist/service/cloudformation/template/node/fn/sub/resolve/sim-cfn-fn-sub-unresolved-value.d.ts.map +1 -0
- package/dist/service/cloudformation/template/node/fn/sub/resolve/sim-cfn-fn-sub-unresolved-value.js +36 -0
- package/dist/service/cloudformation/template/node/fn/sub/resolve/sim-cfn-fn-sub-unresolved-value.js.map +1 -0
- package/dist/service/cloudformation/template/node/fn/sub/sim-cfn-fn-sub.d.ts +1 -3
- package/dist/service/cloudformation/template/node/fn/sub/sim-cfn-fn-sub.d.ts.map +1 -1
- package/dist/service/cloudformation/template/node/fn/sub/sim-cfn-fn-sub.js +7 -24
- package/dist/service/cloudformation/template/node/fn/sub/sim-cfn-fn-sub.js.map +1 -1
- package/dist/service/cloudformation/template/node/fn/sub/template/sim-cfn-fn-sub-template.d.ts.map +1 -1
- package/dist/service/cloudformation/template/node/fn/sub/template/sim-cfn-fn-sub-template.js +2 -3
- package/dist/service/cloudformation/template/node/fn/sub/template/sim-cfn-fn-sub-template.js.map +1 -1
- package/dist/service/cloudformation/template/parse/fn/sim-cfn-function-parser.d.ts.map +1 -1
- package/dist/service/cloudformation/template/parse/fn/sim-cfn-function-parser.js +2 -3
- package/dist/service/cloudformation/template/parse/fn/sim-cfn-function-parser.js.map +1 -1
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +1 -1
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts.map +1 -1
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +3 -3
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js.map +1 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +1 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts.map +1 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +4 -4
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js.map +1 -1
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-create-input-builder.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-create-input-builder.js.map +1 -1
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.d.ts +1 -1
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.js +4 -4
- package/dist/service/cloudfront/cfn/cff/sim-cfn-cff-creator.js.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-config-validator.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-config-validator.js.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +4 -4
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js.map +1 -1
- package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.d.ts.map +1 -1
- package/dist/service/cloudfront/command/create-distribution/sim-cf-distro-config-normalizer.d.ts.map +1 -1
- package/dist/service/cloudfront/command/create-distribution/sim-cf-distro-config-normalizer.js.map +1 -1
- package/dist/service/cloudfront/command/get-distribution/get-distribution.cmd.d.ts.map +1 -1
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.d.ts.map +1 -1
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.js +2 -3
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.js.map +1 -1
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +1 -1
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js.map +1 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cff-associations-configure.d.ts.map +1 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cff-associations-configure.js.map +1 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js.map +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts.map +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +4 -4
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js.map +1 -1
- package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-resolver-factory.d.ts.map +1 -1
- package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-resolver-factory.js +2 -3
- package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-resolver-factory.js.map +1 -1
- package/dist/service/cloudfront/origin/s3/sim-cloudfront-s3-origin.js +1 -1
- package/dist/service/cloudfront/origin/s3/sim-cloudfront-s3-origin.js.map +1 -1
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js +1 -1
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js.map +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.cmd.d.ts.map +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.js +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.js +2 -3
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.js.map +1 -1
- package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/put-item/put-item.handler.js +3 -6
- package/dist/service/dynamodb/command/put-item/put-item.handler.js.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-key-schema.js +1 -1
- package/dist/service/dynamodb/table/dynamodb-key-schema.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts +1 -2
- package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table.js +6 -6
- package/dist/service/dynamodb/table/sim-dynamodb-table.js.map +1 -1
- package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.d.ts +22 -0
- package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.d.ts.map +1 -0
- package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.js +65 -0
- package/dist/service/route53/cfn/hosted-zone/sim-cfn-r53-zone-creator.js.map +1 -0
- package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.d.ts +21 -0
- package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.d.ts.map +1 -0
- package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.js +45 -0
- package/dist/service/route53/cfn/record-set/apply/sim-cfn-r53-record-set-applicator.js.map +1 -0
- package/dist/service/route53/cfn/record-set/build/sim-cfn-r53-record-set-builder.d.ts +23 -0
- package/dist/service/route53/cfn/record-set/build/sim-cfn-r53-record-set-builder.d.ts.map +1 -0
- package/dist/service/route53/cfn/record-set/build/sim-cfn-r53-record-set-builder.js +85 -0
- package/dist/service/route53/cfn/record-set/build/sim-cfn-r53-record-set-builder.js.map +1 -0
- package/dist/service/route53/cfn/record-set/parse/sim-cfn-r53-alias-target-parser.d.ts +18 -0
- package/dist/service/route53/cfn/record-set/parse/sim-cfn-r53-alias-target-parser.d.ts.map +1 -0
- package/dist/service/route53/cfn/record-set/parse/sim-cfn-r53-alias-target-parser.js +53 -0
- package/dist/service/route53/cfn/record-set/parse/sim-cfn-r53-alias-target-parser.js.map +1 -0
- package/dist/service/route53/cfn/record-set/resolve/sim-cfn-r53-rec-set-zone-resolver.d.ts +21 -0
- package/dist/service/route53/cfn/record-set/resolve/sim-cfn-r53-rec-set-zone-resolver.d.ts.map +1 -0
- package/dist/service/route53/cfn/record-set/resolve/sim-cfn-r53-rec-set-zone-resolver.js +36 -0
- package/dist/service/route53/cfn/record-set/resolve/sim-cfn-r53-rec-set-zone-resolver.js.map +1 -0
- package/dist/service/route53/cfn/sim-cfn-route53-resource-factory.d.ts +20 -0
- package/dist/service/route53/cfn/sim-cfn-route53-resource-factory.d.ts.map +1 -0
- package/dist/service/route53/cfn/sim-cfn-route53-resource-factory.js +32 -0
- package/dist/service/route53/cfn/sim-cfn-route53-resource-factory.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-res-rec-sets-zone.d.ts +7 -0
- package/dist/service/route53/command/change-resource-record-sets/change-res-rec-sets-zone.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-res-rec-sets-zone.js +12 -0
- package/dist/service/route53/command/change-resource-record-sets/change-res-rec-sets-zone.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.cmd.d.ts +65 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.cmd.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.cmd.js +2 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.cmd.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.d.ts +11 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.handler.d.ts +25 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.handler.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.handler.js +41 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.handler.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js +81 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/list-zones-marker.d.ts +20 -0
- package/dist/service/route53/command/change-resource-record-sets/list-zones-marker.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/list-zones-marker.js +43 -0
- package/dist/service/route53/command/change-resource-record-sets/list-zones-marker.js.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/schedule/schedule-change-res-rec-sets.d.ts +8 -0
- package/dist/service/route53/command/change-resource-record-sets/schedule/schedule-change-res-rec-sets.d.ts.map +1 -0
- package/dist/service/route53/command/change-resource-record-sets/schedule/schedule-change-res-rec-sets.js +17 -0
- package/dist/service/route53/command/change-resource-record-sets/schedule/schedule-change-res-rec-sets.js.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.cmd.d.ts +57 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.cmd.d.ts.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.cmd.js +2 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.cmd.js.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.handler.d.ts +28 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.handler.d.ts.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.handler.js +74 -0
- package/dist/service/route53/command/create-hosted-zone/create-hosted-zone.handler.js.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/sim-route53-zone-id.d.ts +16 -0
- package/dist/service/route53/command/create-hosted-zone/sim-route53-zone-id.d.ts.map +1 -0
- package/dist/service/route53/command/create-hosted-zone/sim-route53-zone-id.js +36 -0
- package/dist/service/route53/command/create-hosted-zone/sim-route53-zone-id.js.map +1 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.cmd.d.ts +31 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.cmd.d.ts.map +1 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.cmd.js +2 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.cmd.js.map +1 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.handler.d.ts +25 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.handler.d.ts.map +1 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.handler.js +48 -0
- package/dist/service/route53/command/get-hosted-zone/get-hosted-zone.handler.js.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.cmd.d.ts +30 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.cmd.d.ts.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.cmd.js +2 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.cmd.js.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.d.ts +24 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.d.ts.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.handler.d.ts +25 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.handler.d.ts.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.handler.js +40 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.handler.js.map +1 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.js +43 -0
- package/dist/service/route53/command/list-hosted-zones-by-name/list-hosted-zones-by-name.js.map +1 -0
- package/dist/service/route53/error/sim-route53.error.d.ts +28 -0
- package/dist/service/route53/error/sim-route53.error.d.ts.map +1 -0
- package/dist/service/route53/error/sim-route53.error.js +29 -0
- package/dist/service/route53/error/sim-route53.error.js.map +1 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone-records.d.ts +34 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone-records.d.ts.map +1 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone-records.js +71 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone-records.js.map +1 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone.d.ts +65 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone.d.ts.map +1 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone.js +111 -0
- package/dist/service/route53/hosted-zone/sim-route53-hosted-zone.js.map +1 -0
- package/dist/service/route53/index.d.ts +2 -0
- package/dist/service/route53/index.d.ts.map +1 -0
- package/dist/service/route53/index.js +2 -0
- package/dist/service/route53/index.js.map +1 -0
- package/dist/service/route53/local-name/sim-route53-local-name.d.ts +14 -0
- package/dist/service/route53/local-name/sim-route53-local-name.d.ts.map +1 -0
- package/dist/service/route53/local-name/sim-route53-local-name.js +35 -0
- package/dist/service/route53/local-name/sim-route53-local-name.js.map +1 -0
- package/dist/service/route53/record/sim-route53-record.d.ts +13 -0
- package/dist/service/route53/record/sim-route53-record.d.ts.map +1 -0
- package/dist/service/route53/record/sim-route53-record.js +2 -0
- package/dist/service/route53/record/sim-route53-record.js.map +1 -0
- package/dist/service/route53/registry/sim-route53-registry.d.ts +22 -0
- package/dist/service/route53/registry/sim-route53-registry.d.ts.map +1 -0
- package/dist/service/route53/registry/sim-route53-registry.js +24 -0
- package/dist/service/route53/registry/sim-route53-registry.js.map +1 -0
- package/dist/service/route53/resolve/sim-r53-zone-record-finder.d.ts +17 -0
- package/dist/service/route53/resolve/sim-r53-zone-record-finder.d.ts.map +1 -0
- package/dist/service/route53/resolve/sim-r53-zone-record-finder.js +37 -0
- package/dist/service/route53/resolve/sim-r53-zone-record-finder.js.map +1 -0
- package/dist/service/route53/resolve/sim-route53-resolver.d.ts +21 -0
- package/dist/service/route53/resolve/sim-route53-resolver.d.ts.map +1 -0
- package/dist/service/route53/resolve/sim-route53-resolver.js +100 -0
- package/dist/service/route53/resolve/sim-route53-resolver.js.map +1 -0
- package/dist/service/route53/sim-route53.d.ts +51 -0
- package/dist/service/route53/sim-route53.d.ts.map +1 -0
- package/dist/service/route53/sim-route53.js +81 -0
- package/dist/service/route53/sim-route53.js.map +1 -0
- package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts.map +1 -1
- package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js +2 -4
- package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js.map +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts.map +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.cmd.d.ts.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js +2 -2
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +2 -4
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/util/background/background.d.ts +1 -1
- package/dist/util/background/background.d.ts.map +1 -1
- package/dist/util/background/background.js +1 -1
- package/dist/util/background/background.js.map +1 -1
- package/dist/util/background/non-deterministic-background.d.ts +1 -1
- package/dist/util/background/non-deterministic-background.d.ts.map +1 -1
- package/dist/util/background/non-deterministic-background.js +1 -1
- package/dist/util/background/non-deterministic-background.js.map +1 -1
- package/dist/util/type-guard/defined.d.ts +2 -2
- package/dist/util/type-guard/defined.d.ts.map +1 -1
- package/dist/util/type-guard/defined.js +4 -4
- package/dist/util/type-guard/defined.js.map +1 -1
- package/dist/util/type-guard/json.d.ts.map +1 -1
- package/dist/util/type-guard/json.js.map +1 -1
- package/dist/util/type-guard/record.d.ts.map +1 -1
- package/dist/util/type-guard/record.js +0 -1
- package/dist/util/type-guard/record.js.map +1 -1
- package/package.json +27 -22
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { normaliseSimRoute53Name } from "../local-name/sim-route53-local-name.js";
|
|
2
|
+
/**
|
|
3
|
+
* Stores and normalises records for a simulated Route53 Hosted Zone.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export class SimRoute53HostedZoneRecords {
|
|
7
|
+
records = new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Current number of records in the hosted zone.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
get count() {
|
|
13
|
+
return this.records.size;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a record, rejecting duplicate name/type pairs.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
create(record) {
|
|
20
|
+
const normalisedRecord = normaliseRecord(record);
|
|
21
|
+
const key = recordKey(normalisedRecord.name, normalisedRecord.type);
|
|
22
|
+
/* v8 ignore if */
|
|
23
|
+
if (this.records.has(key)) {
|
|
24
|
+
throw new Error(`Route53 record ${normalisedRecord.type} ${normalisedRecord.name} already exists`);
|
|
25
|
+
}
|
|
26
|
+
this.records.set(key, normalisedRecord);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create or replace a record.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
upsert(record) {
|
|
33
|
+
const normalisedRecord = normaliseRecord(record);
|
|
34
|
+
this.records.set(recordKey(normalisedRecord.name, normalisedRecord.type), normalisedRecord);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Delete a record by logical name and type.
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
delete(name, type) {
|
|
41
|
+
this.records.delete(recordKey(normaliseSimRoute53Name(name), type));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a record by logical name and type.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
get(name, type) {
|
|
48
|
+
const record = this.records.get(recordKey(normaliseSimRoute53Name(name), type));
|
|
49
|
+
if (record === undefined) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
...record,
|
|
54
|
+
values: [...record.values],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function normaliseRecord(record) {
|
|
59
|
+
return {
|
|
60
|
+
...record,
|
|
61
|
+
name: normaliseSimRoute53Name(record.name),
|
|
62
|
+
values: record.values.map((value) => normaliseRecordValue(record.type, value)),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function recordKey(name, type) {
|
|
66
|
+
return `${type}:${name}`;
|
|
67
|
+
}
|
|
68
|
+
function normaliseRecordValue(type, value) {
|
|
69
|
+
return type === "TXT" ? value : normaliseSimRoute53Name(value);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=sim-route53-hosted-zone-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-hosted-zone-records.js","sourceRoot":"","sources":["../../../../src/service/route53/hosted-zone/sim-route53-hosted-zone-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAMlF;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACrB,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE/D;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAwB;QAC7B,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEpE,kBAAkB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,kBAAkB,gBAAgB,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAwB;QAC7B,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EACvD,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY,EAAE,IAA0B;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,IAAY,EAAE,IAA0B;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAC7B,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAC/C,CAAC;QAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;SAC3B,CAAC;IACJ,CAAC;CACF;AAED,SAAS,eAAe,CAAC,MAAwB;IAC/C,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CACzC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,IAA0B;IACzD,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAA0B,EAC1B,KAAa;IAEb,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { SimRoute53HostedZoneConfig } from "../command/create-hosted-zone/create-hosted-zone.cmd.js";
|
|
2
|
+
import { SimRoute53HostedZoneRecords } from "./sim-route53-hosted-zone-records.js";
|
|
3
|
+
import { type SimRoute53HostedZoneId } from "../command/create-hosted-zone/sim-route53-zone-id.js";
|
|
4
|
+
import type { BackgroundScheduler } from "../../../util/background/background.js";
|
|
5
|
+
export type SimRoute53HostedZoneStatus = "PENDING" | "INSYNC";
|
|
6
|
+
interface SimRoute53HostedZoneProps {
|
|
7
|
+
readonly id: SimRoute53HostedZoneId | string;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly callerReference: string;
|
|
10
|
+
readonly config?: SimRoute53HostedZoneConfig | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Simulated Route53 Hosted Zone.
|
|
14
|
+
*
|
|
15
|
+
* This is the single source of truth for hosted-zone metadata and records.
|
|
16
|
+
*/
|
|
17
|
+
export declare class SimRoute53HostedZone {
|
|
18
|
+
#private;
|
|
19
|
+
readonly records: SimRoute53HostedZoneRecords;
|
|
20
|
+
private readonly hostedZoneId;
|
|
21
|
+
private readonly hostedZoneName;
|
|
22
|
+
private readonly hostedZoneCallerReference;
|
|
23
|
+
private readonly hostedZoneConfig;
|
|
24
|
+
private synchronizationComplete;
|
|
25
|
+
constructor(props: SimRoute53HostedZoneProps);
|
|
26
|
+
/**
|
|
27
|
+
* AWS Route53 Hosted Zone ID.
|
|
28
|
+
*/
|
|
29
|
+
get id(): SimRoute53HostedZoneId;
|
|
30
|
+
/**
|
|
31
|
+
* Normalised Route53 Hosted Zone name.
|
|
32
|
+
*/
|
|
33
|
+
get name(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Caller reference supplied when the hosted zone was created.
|
|
36
|
+
* A Route53 Hosted Zone caller reference is like an idempotency key.
|
|
37
|
+
*/
|
|
38
|
+
get callerReference(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Hosted zone config supplied when the hosted zone was created.
|
|
41
|
+
*/
|
|
42
|
+
get config(): SimRoute53HostedZoneConfig | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Get the current creation status of this sim Hosted Zone.
|
|
45
|
+
*/
|
|
46
|
+
get status(): SimRoute53HostedZoneStatus;
|
|
47
|
+
/**
|
|
48
|
+
* Move the sim Hosted Zone into PENDING status.
|
|
49
|
+
*/
|
|
50
|
+
beginSynchronization(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Schedule Hosted Zone synchronization work and remember its completion.
|
|
53
|
+
*/
|
|
54
|
+
scheduleSynchronization(background: BackgroundScheduler, synchronize: () => Promise<void>): void;
|
|
55
|
+
/**
|
|
56
|
+
* Wait for outstanding Hosted Zone synchronization operations.
|
|
57
|
+
*/
|
|
58
|
+
waitForSynchronizationComplete(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Move the sim Hosted Zone into INSYNC status.
|
|
61
|
+
*/
|
|
62
|
+
completeSynchronization(): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=sim-route53-hosted-zone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-hosted-zone.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/hosted-zone/sim-route53-hosted-zone.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAC1G,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D,UAAU,yBAAyB;IACjC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;CAC1D;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;;IAE/B,SAAgB,OAAO,8BAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAE1E,OAAO,CAAC,uBAAuB,CAA4B;gBAE/C,KAAK,EAAE,yBAAyB;IAS5C;;OAEG;IACH,IAAI,EAAE,IAAI,sBAAsB,CAE/B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,0BAA0B,GAAG,SAAS,CAInD;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,0BAA0B,CAEvC;IAED;;OAEG;IACH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC;;OAEG;IACH,uBAAuB,CACrB,UAAU,EAAE,mBAAmB,EAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/B,IAAI;IA0BP;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrD;;OAEG;IACH,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAIzC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { normaliseSimRoute53Name } from "../local-name/sim-route53-local-name.js";
|
|
2
|
+
import { SimRoute53HostedZoneRecords } from "./sim-route53-hosted-zone-records.js";
|
|
3
|
+
import { assertIsSimRoute53HostedZoneId, } from "../command/create-hosted-zone/sim-route53-zone-id.js";
|
|
4
|
+
/**
|
|
5
|
+
* Simulated Route53 Hosted Zone.
|
|
6
|
+
*
|
|
7
|
+
* This is the single source of truth for hosted-zone metadata and records.
|
|
8
|
+
*/
|
|
9
|
+
export class SimRoute53HostedZone {
|
|
10
|
+
/* @internal */
|
|
11
|
+
records = new SimRoute53HostedZoneRecords();
|
|
12
|
+
hostedZoneId;
|
|
13
|
+
hostedZoneName;
|
|
14
|
+
// Route53 Hosted Zone caller reference is like an idempotency key.
|
|
15
|
+
hostedZoneCallerReference;
|
|
16
|
+
hostedZoneConfig;
|
|
17
|
+
#status = "PENDING";
|
|
18
|
+
synchronizationComplete;
|
|
19
|
+
constructor(props) {
|
|
20
|
+
assertIsSimRoute53HostedZoneId(props.id);
|
|
21
|
+
this.hostedZoneId = props.id;
|
|
22
|
+
this.hostedZoneName = `${normaliseSimRoute53Name(props.name)}.`;
|
|
23
|
+
this.hostedZoneCallerReference = props.callerReference;
|
|
24
|
+
this.hostedZoneConfig =
|
|
25
|
+
props.config === undefined ? undefined : { ...props.config };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* AWS Route53 Hosted Zone ID.
|
|
29
|
+
*/
|
|
30
|
+
get id() {
|
|
31
|
+
return this.hostedZoneId;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Normalised Route53 Hosted Zone name.
|
|
35
|
+
*/
|
|
36
|
+
get name() {
|
|
37
|
+
return this.hostedZoneName;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Caller reference supplied when the hosted zone was created.
|
|
41
|
+
* A Route53 Hosted Zone caller reference is like an idempotency key.
|
|
42
|
+
*/
|
|
43
|
+
get callerReference() {
|
|
44
|
+
return this.hostedZoneCallerReference;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Hosted zone config supplied when the hosted zone was created.
|
|
48
|
+
*/
|
|
49
|
+
get config() {
|
|
50
|
+
return this.hostedZoneConfig === undefined
|
|
51
|
+
? undefined
|
|
52
|
+
: { ...this.hostedZoneConfig };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the current creation status of this sim Hosted Zone.
|
|
56
|
+
*/
|
|
57
|
+
get status() {
|
|
58
|
+
return this.#status;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Move the sim Hosted Zone into PENDING status.
|
|
62
|
+
*/
|
|
63
|
+
beginSynchronization() {
|
|
64
|
+
this.#status = "PENDING";
|
|
65
|
+
return Promise.resolve();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Schedule Hosted Zone synchronization work and remember its completion.
|
|
69
|
+
*/
|
|
70
|
+
scheduleSynchronization(background, synchronize) {
|
|
71
|
+
const synchronizationComplete = new Promise((resolve, reject) => {
|
|
72
|
+
background.schedule(async () => {
|
|
73
|
+
try {
|
|
74
|
+
await synchronize();
|
|
75
|
+
resolve();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
/* v8 ignore start */
|
|
79
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
80
|
+
throw error;
|
|
81
|
+
/* v8 ignore stop */
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
this.synchronizationComplete =
|
|
86
|
+
this.synchronizationComplete === undefined
|
|
87
|
+
? synchronizationComplete
|
|
88
|
+
: Promise.all([
|
|
89
|
+
this.synchronizationComplete,
|
|
90
|
+
synchronizationComplete,
|
|
91
|
+
]).then(() => {
|
|
92
|
+
//
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Wait for outstanding Hosted Zone synchronization operations.
|
|
97
|
+
*/
|
|
98
|
+
async waitForSynchronizationComplete() {
|
|
99
|
+
if (this.synchronizationComplete !== undefined) {
|
|
100
|
+
await this.synchronizationComplete;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Move the sim Hosted Zone into INSYNC status.
|
|
105
|
+
*/
|
|
106
|
+
completeSynchronization() {
|
|
107
|
+
this.#status = "INSYNC";
|
|
108
|
+
return Promise.resolve();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=sim-route53-hosted-zone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-hosted-zone.js","sourceRoot":"","sources":["../../../../src/service/route53/hosted-zone/sim-route53-hosted-zone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/route53/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/route53/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const simRoute53LocalSuffix: string;
|
|
2
|
+
/**
|
|
3
|
+
* Normalise a Route53 name for case-insensitive matching.
|
|
4
|
+
*/
|
|
5
|
+
export declare function normaliseSimRoute53Name(name: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Convert a Yulin-local Route53 name to a logical DNS name.
|
|
8
|
+
*/
|
|
9
|
+
export declare function simRoute53LogicalName(localName: string): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Convert a logical DNS name to a Yulin-local Route53 name.
|
|
12
|
+
*/
|
|
13
|
+
export declare function simRoute53LocalName(logicalName: string): string;
|
|
14
|
+
//# sourceMappingURL=sim-route53-local-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-local-name.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/local-name/sim-route53-local-name.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,QAAiC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ/D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { SimAwsLocalUrl } from "../../../serve/http/url/sim-aws-local-url.js";
|
|
2
|
+
export const simRoute53LocalSuffix = SimAwsLocalUrl.localhostSuffix;
|
|
3
|
+
/**
|
|
4
|
+
* Normalise a Route53 name for case-insensitive matching.
|
|
5
|
+
*/
|
|
6
|
+
export function normaliseSimRoute53Name(name) {
|
|
7
|
+
return name.toLowerCase().replaceAll(/\.+$/g, "");
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert a Yulin-local Route53 name to a logical DNS name.
|
|
11
|
+
*/
|
|
12
|
+
export function simRoute53LogicalName(localName) {
|
|
13
|
+
const normalisedName = normaliseSimRoute53Name(localName);
|
|
14
|
+
if (!normalisedName.endsWith(simRoute53LocalSuffix)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const logicalName = normalisedName.slice(0, -simRoute53LocalSuffix.length);
|
|
18
|
+
const logicalNameLabels = logicalName.split(".");
|
|
19
|
+
// Reject empty labels before normalization can hide malformed hostnames.
|
|
20
|
+
if (logicalNameLabels.some((label) => label.length === 0)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return logicalName;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a logical DNS name to a Yulin-local Route53 name.
|
|
27
|
+
*/
|
|
28
|
+
export function simRoute53LocalName(logicalName) {
|
|
29
|
+
const normalisedName = normaliseSimRoute53Name(logicalName);
|
|
30
|
+
if (normalisedName.endsWith(simRoute53LocalSuffix)) {
|
|
31
|
+
return normalisedName;
|
|
32
|
+
}
|
|
33
|
+
return `${normalisedName}${simRoute53LocalSuffix}`;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sim-route53-local-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-local-name.js","sourceRoot":"","sources":["../../../../src/service/route53/local-name/sim-route53-local-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC,eAAe,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjD,yEAAyE;IACzE,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,cAAc,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAE5D,IAAI,cAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,cAAc,GAAG,qBAAqB,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
2
|
+
export type SimRoute53RecordType = "A" | "AAAA" | "CNAME" | "TXT" | "NS" | "SOA";
|
|
3
|
+
export interface SimRoute53Record {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly type: SimRoute53RecordType;
|
|
6
|
+
readonly values: readonly string[];
|
|
7
|
+
readonly ttl?: number | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface SimRoute53HttpResolution {
|
|
10
|
+
readonly target: SimAwsServiceTarget;
|
|
11
|
+
readonly rewrittenHostname?: string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sim-route53-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-record.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/record/sim-route53-record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,MAAM,MAAM,oBAAoB,GAC9B,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-record.js","sourceRoot":"","sources":["../../../../src/service/route53/record/sim-route53-record.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SimRoute53HostedZoneId } from "../command/create-hosted-zone/sim-route53-zone-id.js";
|
|
2
|
+
import type { SimRoute53HostedZone } from "../hosted-zone/sim-route53-hosted-zone.js";
|
|
3
|
+
/**
|
|
4
|
+
* Simulated Route53 DNS registry across Account scopes.
|
|
5
|
+
*
|
|
6
|
+
* Route53 SDK-style service instances are Account-scoped, but DNS resolution is
|
|
7
|
+
* global within one simulated AWS environment. This registry lets localhost
|
|
8
|
+
* request routing resolve hostnames from hosted zones created in any simulated
|
|
9
|
+
* Account.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SimRoute53Registry {
|
|
12
|
+
private readonly hostedZonesById;
|
|
13
|
+
/**
|
|
14
|
+
* Register a Hosted Zone for global DNS-style resolution.
|
|
15
|
+
*/
|
|
16
|
+
registerHostedZone(hostedZoneId: SimRoute53HostedZoneId, hostedZone: SimRoute53HostedZone): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get all globally resolvable Hosted Zones.
|
|
19
|
+
*/
|
|
20
|
+
get hostedZones(): ReadonlyMap<SimRoute53HostedZoneId, SimRoute53HostedZone>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sim-route53-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-registry.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/registry/sim-route53-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IAEJ;;OAEG;IACH,kBAAkB,CAChB,YAAY,EAAE,sBAAsB,EACpC,UAAU,EAAE,oBAAoB,GAC/B,IAAI;IAIP;;OAEG;IACH,IAAI,WAAW,IAAI,WAAW,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAE3E;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulated Route53 DNS registry across Account scopes.
|
|
3
|
+
*
|
|
4
|
+
* Route53 SDK-style service instances are Account-scoped, but DNS resolution is
|
|
5
|
+
* global within one simulated AWS environment. This registry lets localhost
|
|
6
|
+
* request routing resolve hostnames from hosted zones created in any simulated
|
|
7
|
+
* Account.
|
|
8
|
+
*/
|
|
9
|
+
export class SimRoute53Registry {
|
|
10
|
+
hostedZonesById = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Register a Hosted Zone for global DNS-style resolution.
|
|
13
|
+
*/
|
|
14
|
+
registerHostedZone(hostedZoneId, hostedZone) {
|
|
15
|
+
this.hostedZonesById.set(hostedZoneId, hostedZone);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get all globally resolvable Hosted Zones.
|
|
19
|
+
*/
|
|
20
|
+
get hostedZones() {
|
|
21
|
+
return this.hostedZonesById;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=sim-route53-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-registry.js","sourceRoot":"","sources":["../../../../src/service/route53/registry/sim-route53-registry.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IACZ,eAAe,GAAG,IAAI,GAAG,EAGvC,CAAC;IAEJ;;OAEG;IACH,kBAAkB,CAChB,YAAoC,EACpC,UAAgC;QAEhC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SimRoute53HostedZone } from "../hosted-zone/sim-route53-hosted-zone.js";
|
|
2
|
+
import type { SimRoute53Record, SimRoute53RecordType } from "../record/sim-route53-record.js";
|
|
3
|
+
/**
|
|
4
|
+
* Find records across hosted zones using Route53-style most-specific zone
|
|
5
|
+
* matching.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SimRoute53HostedZoneRecordFinder {
|
|
8
|
+
private readonly hostedZones;
|
|
9
|
+
constructor(hostedZones: ReadonlyMap<string, SimRoute53HostedZone>);
|
|
10
|
+
/**
|
|
11
|
+
* Find the record from the most-specific matching hosted-zone suffix.
|
|
12
|
+
*/
|
|
13
|
+
findRecord(name: string, type: SimRoute53RecordType): SimRoute53Record | undefined;
|
|
14
|
+
private zoneName;
|
|
15
|
+
private zoneContainsName;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=sim-r53-zone-record-finder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-r53-zone-record-finder.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-r53-zone-record-finder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,qBAAa,gCAAgC;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAGzE;;OAEG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,oBAAoB,GACzB,gBAAgB,GAAG,SAAS;IAsB/B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,gBAAgB;CAGzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find records across hosted zones using Route53-style most-specific zone
|
|
3
|
+
* matching.
|
|
4
|
+
*/
|
|
5
|
+
export class SimRoute53HostedZoneRecordFinder {
|
|
6
|
+
hostedZones;
|
|
7
|
+
constructor(hostedZones) {
|
|
8
|
+
this.hostedZones = hostedZones;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Find the record from the most-specific matching hosted-zone suffix.
|
|
12
|
+
*/
|
|
13
|
+
findRecord(name, type) {
|
|
14
|
+
let bestRecord;
|
|
15
|
+
let bestZoneNameLength = -1;
|
|
16
|
+
for (const hostedZone of this.hostedZones.values()) {
|
|
17
|
+
const zoneName = this.zoneName(hostedZone);
|
|
18
|
+
/* v8 ignore if */
|
|
19
|
+
if (!this.zoneContainsName(zoneName, name)) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const record = hostedZone.records.get(name, type);
|
|
23
|
+
if (record !== undefined && zoneName.length > bestZoneNameLength) {
|
|
24
|
+
bestRecord = record;
|
|
25
|
+
bestZoneNameLength = zoneName.length;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return bestRecord;
|
|
29
|
+
}
|
|
30
|
+
zoneName(hostedZone) {
|
|
31
|
+
return hostedZone.name.replaceAll(/\.+$/g, "");
|
|
32
|
+
}
|
|
33
|
+
zoneContainsName(zoneName, name) {
|
|
34
|
+
return name === zoneName || name.endsWith(`.${zoneName}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sim-r53-zone-record-finder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-r53-zone-record-finder.js","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-r53-zone-record-finder.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,OAAO,gCAAgC;IAExB;IADnB,YACmB,WAAsD;QAAtD,gBAAW,GAAX,WAAW,CAA2C;IACtE,CAAC;IAEJ;;OAEG;IACH,UAAU,CACR,IAAY,EACZ,IAA0B;QAE1B,IAAI,UAAwC,CAAC;QAC7C,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAE5B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE3C,kBAAkB;YAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACjE,UAAU,GAAG,MAAM,CAAC;gBACpB,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,QAAQ,CAAC,UAAgC;QAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,gBAAgB,CAAC,QAAgB,EAAE,IAAY;QACrD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
2
|
+
import type { SimRoute53HostedZone } from "../hosted-zone/sim-route53-hosted-zone.js";
|
|
3
|
+
interface SimRoute53ResolverProps {
|
|
4
|
+
readonly hostedZones: ReadonlyMap<string, SimRoute53HostedZone>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Resolves Yulin-local hostnames through simulated Route53 hosted-zone records.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SimRoute53Resolver {
|
|
10
|
+
private readonly recordFinder;
|
|
11
|
+
constructor(props: SimRoute53ResolverProps);
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a Yulin-local HTTP hostname to a simulated AWS service target.
|
|
14
|
+
*/
|
|
15
|
+
resolveHttpHost(hostname: string): SimAwsServiceTarget | undefined;
|
|
16
|
+
private builtinLocalServiceTarget;
|
|
17
|
+
private s3WebsiteServiceTarget;
|
|
18
|
+
private cloudFrontServiceTarget;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=sim-route53-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAK/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAOtF,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAEpD,KAAK,EAAE,uBAAuB;IAI1C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IA2ClE,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,uBAAuB;CAyBhC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { simRoute53LocalName, simRoute53LogicalName, } from "../local-name/sim-route53-local-name.js";
|
|
2
|
+
import { SimRoute53HostedZoneRecordFinder } from "./sim-r53-zone-record-finder.js";
|
|
3
|
+
const s3WebsiteServiceLabel = "s3-website";
|
|
4
|
+
const cloudFrontServiceLabel = "cloudfront";
|
|
5
|
+
const maxCnameDepth = 8;
|
|
6
|
+
/**
|
|
7
|
+
* Resolves Yulin-local hostnames through simulated Route53 hosted-zone records.
|
|
8
|
+
*/
|
|
9
|
+
export class SimRoute53Resolver {
|
|
10
|
+
recordFinder;
|
|
11
|
+
constructor(props) {
|
|
12
|
+
this.recordFinder = new SimRoute53HostedZoneRecordFinder(props.hostedZones);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a Yulin-local HTTP hostname to a simulated AWS service target.
|
|
16
|
+
*/
|
|
17
|
+
resolveHttpHost(hostname) {
|
|
18
|
+
const initialLogicalName = simRoute53LogicalName(hostname);
|
|
19
|
+
if (initialLogicalName === undefined) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
let localName = simRoute53LocalName(initialLogicalName);
|
|
23
|
+
// Track visited CNAME names so cyclic records fail immediately instead of
|
|
24
|
+
// relying on maxCnameDepth to eventually stop the resolution loop.
|
|
25
|
+
const visitedNames = new Set();
|
|
26
|
+
for (let depth = 0; depth <= maxCnameDepth; depth += 1) {
|
|
27
|
+
/* v8 ignore if */
|
|
28
|
+
if (visitedNames.has(localName)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
visitedNames.add(localName);
|
|
32
|
+
const directTarget = this.builtinLocalServiceTarget(localName);
|
|
33
|
+
if (directTarget !== undefined) {
|
|
34
|
+
return directTarget;
|
|
35
|
+
}
|
|
36
|
+
const logicalName = simRoute53LogicalName(localName);
|
|
37
|
+
/* v8 ignore if -- defensive check */
|
|
38
|
+
if (logicalName === undefined) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
const cname = this.recordFinder.findRecord(logicalName, "CNAME");
|
|
42
|
+
const cnameTarget = cname?.values[0];
|
|
43
|
+
if (cnameTarget === undefined || cnameTarget.length === 0) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
localName = simRoute53LocalName(cnameTarget);
|
|
47
|
+
}
|
|
48
|
+
/* v8 ignore next -- defensive fallback */
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
builtinLocalServiceTarget(hostname) {
|
|
52
|
+
const logicalName = simRoute53LogicalName(hostname);
|
|
53
|
+
/* v8 ignore if -- defensive check */
|
|
54
|
+
if (logicalName === undefined) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
return (this.s3WebsiteServiceTarget(logicalName) ??
|
|
58
|
+
this.cloudFrontServiceTarget(logicalName));
|
|
59
|
+
}
|
|
60
|
+
s3WebsiteServiceTarget(logicalName) {
|
|
61
|
+
const labels = logicalName.split(".");
|
|
62
|
+
if (labels.length < 3) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const service = labels.at(-2);
|
|
66
|
+
const regionName = labels.at(-1);
|
|
67
|
+
if (service !== s3WebsiteServiceLabel || regionName === undefined) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const resourceName = labels.slice(0, -2).join(".");
|
|
71
|
+
/* v8 ignore if -- defensive check */
|
|
72
|
+
if (resourceName.length === 0 || regionName.length === 0) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
service: "s3",
|
|
77
|
+
resourceName,
|
|
78
|
+
regionName,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
cloudFrontServiceTarget(logicalName) {
|
|
82
|
+
const labels = logicalName.split(".");
|
|
83
|
+
if (labels.length !== 3) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
const [distroId, service, topLevelDomain] = labels;
|
|
87
|
+
if (service !== cloudFrontServiceLabel || topLevelDomain !== "net") {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
/* v8 ignore if -- defensive check */
|
|
91
|
+
if (distroId === undefined || distroId.length === 0) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
service: "cloudFront",
|
|
96
|
+
resourceName: distroId,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=sim-route53-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-route53-resolver.js","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"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"}
|