@kensio/yulin 0.38.0 → 0.40.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 +3 -0
- package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
- package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
- package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
- package/dist/service/aws/factory/sim-aws-scoped-service-registries.d.ts +31 -0
- package/dist/service/aws/factory/sim-aws-scoped-service-registries.d.ts.map +1 -0
- package/dist/service/aws/factory/sim-aws-scoped-service-registries.js +31 -0
- package/dist/service/aws/factory/sim-aws-scoped-service-registries.js.map +1 -0
- package/dist/service/aws/factory/sim-aws-service-factory.d.ts +10 -21
- package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
- package/dist/service/aws/factory/sim-aws-service-factory.js +22 -29
- package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts +5 -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 +6 -0
- package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
- package/dist/service/aws/sim-aws.d.ts +5 -0
- package/dist/service/aws/sim-aws.d.ts.map +1 -1
- package/dist/service/aws/sim-aws.js +6 -0
- package/dist/service/aws/sim-aws.js.map +1 -1
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-cfn-value-adapter.js +13 -0
- package/dist/service/cloudformation/resource/cfn/acm/sim-acm-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +21 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/iam/sim-iam-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/iam/sim-iam-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/iam/sim-iam-cfn-value-adapter.js +17 -0
- package/dist/service/cloudformation/resource/cfn/iam/sim-iam-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-alias-cfn.d.ts +26 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-alias-cfn.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-alias-cfn.js +26 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-alias-cfn.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-cfn-value-adapter.js +19 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-key-cfn.d.ts +25 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-key-cfn.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-key-cfn.js +34 -0
- package/dist/service/cloudformation/resource/cfn/kms/sim-kms-key-cfn.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.js +19 -0
- package/dist/service/cloudformation/resource/cfn/lambda/sim-lambda-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-cfn-value-adapter.js +13 -0
- package/dist/service/cloudformation/resource/cfn/route53/sim-route53-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-cfn-value-adapter.d.ts +6 -0
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-cfn-value-adapter.js +13 -0
- package/dist/service/cloudformation/resource/cfn/s3/sim-s3-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-cfn-value-adapter.d.ts +7 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-cfn-value-adapter.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-cfn-value-adapter.js +14 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-cfn-value-adapter.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-secret-cfn.d.ts +24 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-secret-cfn.d.ts.map +1 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-secret-cfn.js +30 -0
- package/dist/service/cloudformation/resource/cfn/secretsmanager/sim-secrets-manager-secret-cfn.js.map +1 -0
- package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.d.ts +11 -2
- 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 +24 -71
- package/dist/service/cloudformation/resource/cfn/sim-cfn-resource-value-adapter.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 +6 -0
- package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-resolver.js.map +1 -1
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.d.ts +25 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.d.ts.map +1 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.js +36 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-creator.js.map +1 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-properties.d.ts +32 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-properties.d.ts.map +1 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-properties.js +35 -0
- package/dist/service/kms/cfn/alias/sim-cfn-kms-alias-properties.js.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.d.ts +36 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.d.ts.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.js +53 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-creator.js.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-properties.d.ts +57 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-properties.d.ts.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-properties.js +74 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-key-properties.js.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-unsimulated-key-properties.d.ts +49 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-unsimulated-key-properties.d.ts.map +1 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-unsimulated-key-properties.js +72 -0
- package/dist/service/kms/cfn/key/sim-cfn-kms-unsimulated-key-properties.js.map +1 -0
- package/dist/service/kms/cfn/sim-cfn-kms-property-parser.d.ts +56 -0
- package/dist/service/kms/cfn/sim-cfn-kms-property-parser.d.ts.map +1 -0
- package/dist/service/kms/cfn/sim-cfn-kms-property-parser.js +95 -0
- package/dist/service/kms/cfn/sim-cfn-kms-property-parser.js.map +1 -0
- package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.d.ts +23 -0
- package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.d.ts.map +1 -0
- package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.js +34 -0
- package/dist/service/kms/cfn/sim-cfn-kms-resource-factory.js.map +1 -0
- package/dist/service/kms/key/sim-kms-key-store.d.ts +8 -0
- package/dist/service/kms/key/sim-kms-key-store.d.ts.map +1 -1
- package/dist/service/kms/key/sim-kms-key-store.js +10 -0
- package/dist/service/kms/key/sim-kms-key-store.js.map +1 -1
- package/dist/service/kms/sim-kms.d.ts +15 -0
- package/dist/service/kms/sim-kms.d.ts.map +1 -1
- package/dist/service/kms/sim-kms.js +18 -0
- package/dist/service/kms/sim-kms.js.map +1 -1
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generate-secret-string-parser.d.ts +22 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generate-secret-string-parser.d.ts.map +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generate-secret-string-parser.js +47 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generate-secret-string-parser.js.map +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.d.ts +24 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.d.ts.map +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.js +38 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-creator.js.map +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +54 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts.map +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +82 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js.map +1 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-property-parser.d.ts +58 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-property-parser.d.ts.map +1 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-property-parser.js +122 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-property-parser.js.map +1 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.d.ts +24 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.d.ts.map +1 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.js +31 -0
- package/dist/service/secretsmanager/cfn/sim-cfn-secrets-manager-resource-factory.js.map +1 -0
- package/dist/service/secretsmanager/command/authorize/sim-secrets-manager-authorizer.d.ts +29 -0
- package/dist/service/secretsmanager/command/authorize/sim-secrets-manager-authorizer.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/authorize/sim-secrets-manager-authorizer.js +47 -0
- package/dist/service/secretsmanager/command/authorize/sim-secrets-manager-authorizer.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/secret.command.d.ts +144 -0
- package/dist/service/secretsmanager/command/secret/secret.command.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/secret.command.js +2 -0
- package/dist/service/secretsmanager/command/secret/secret.command.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-lifecycle-commands.d.ts +44 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-lifecycle-commands.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-lifecycle-commands.js +61 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-lifecycle-commands.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-list-secrets.d.ts +44 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-list-secrets.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-list-secrets.js +61 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-list-secrets.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-commands.d.ts +48 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-commands.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-commands.js +62 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-commands.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-detail.d.ts +26 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-detail.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-detail.js +38 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-detail.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-page.d.ts +29 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-page.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-page.js +55 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-secret-page.js.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-update-secret.d.ts +46 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-update-secret.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-update-secret.js +67 -0
- package/dist/service/secretsmanager/command/secret/sim-secrets-manager-update-secret.js.map +1 -0
- package/dist/service/secretsmanager/command/sim-secrets-manager-command.types.d.ts +6 -0
- package/dist/service/secretsmanager/command/sim-secrets-manager-command.types.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/sim-secrets-manager-command.types.js +2 -0
- package/dist/service/secretsmanager/command/sim-secrets-manager-command.types.js.map +1 -0
- package/dist/service/secretsmanager/command/value/sim-secrets-manager-value-commands.d.ts +39 -0
- package/dist/service/secretsmanager/command/value/sim-secrets-manager-value-commands.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/value/sim-secrets-manager-value-commands.js +61 -0
- package/dist/service/secretsmanager/command/value/sim-secrets-manager-value-commands.js.map +1 -0
- package/dist/service/secretsmanager/command/value/value.command.d.ts +47 -0
- package/dist/service/secretsmanager/command/value/value.command.d.ts.map +1 -0
- package/dist/service/secretsmanager/command/value/value.command.js +2 -0
- package/dist/service/secretsmanager/command/value/value.command.js.map +1 -0
- package/dist/service/secretsmanager/error/sim-secrets-manager.error.d.ts +55 -0
- package/dist/service/secretsmanager/error/sim-secrets-manager.error.d.ts.map +1 -0
- package/dist/service/secretsmanager/error/sim-secrets-manager.error.js +60 -0
- package/dist/service/secretsmanager/error/sim-secrets-manager.error.js.map +1 -0
- package/dist/service/secretsmanager/index.d.ts +7 -0
- package/dist/service/secretsmanager/index.d.ts.map +1 -0
- package/dist/service/secretsmanager/index.js +7 -0
- package/dist/service/secretsmanager/index.js.map +1 -0
- package/dist/service/secretsmanager/sdk/sim-secrets-manager-sdk-command-router.d.ts +19 -0
- package/dist/service/secretsmanager/sdk/sim-secrets-manager-sdk-command-router.d.ts.map +1 -0
- package/dist/service/secretsmanager/sdk/sim-secrets-manager-sdk-command-router.js +57 -0
- package/dist/service/secretsmanager/sdk/sim-secrets-manager-sdk-command-router.js.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-generated-secret-string.d.ts +37 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-generated-secret-string.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-generated-secret-string.js +70 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-generated-secret-string.js.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-set.d.ts +53 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-set.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-set.js +65 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-set.js.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.d.ts +40 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.js +66 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.js.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.d.ts +31 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.js +52 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.js.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.d.ts +35 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.js +64 -0
- package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.d.ts +33 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.js +60 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-arn.d.ts +42 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-arn.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-arn.js +64 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-arn.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.d.ts +30 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.js +32 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-factory.d.ts +31 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-factory.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-factory.js +35 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-factory.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-id.d.ts +27 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-id.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-id.js +48 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-id.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +23 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +50 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-store.d.ts +53 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-store.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-store.js +92 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-store.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-value.d.ts +47 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-value.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-value.js +81 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-value.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-version.d.ts +56 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-version.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-version.js +62 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-version.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-versions.d.ts +47 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-versions.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-versions.js +83 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-versions.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret.d.ts +75 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret.js +86 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-selector.d.ts +28 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-selector.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-selector.js +43 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-selector.js.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-writer.d.ts +42 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-writer.d.ts.map +1 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-writer.js +60 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-version-writer.js.map +1 -0
- package/dist/service/secretsmanager/sim-secrets-manager.d.ts +85 -0
- package/dist/service/secretsmanager/sim-secrets-manager.d.ts.map +1 -0
- package/dist/service/secretsmanager/sim-secrets-manager.js +156 -0
- package/dist/service/secretsmanager/sim-secrets-manager.js.map +1 -0
- package/package.json +6 -1
package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { SimSecretsManagerInvalidParameterException } from "../../error/sim-secrets-manager.error.js";
|
|
2
|
+
import { secretsManagerPasswordCharacters, SimSecretsManagerPasswordCharacterSet, } from "./sim-secrets-manager-password-character-set.js";
|
|
3
|
+
/**
|
|
4
|
+
* The character sets one generated password is allowed to draw on.
|
|
5
|
+
*
|
|
6
|
+
* The `Exclude*` flags decide which types are included at all, and
|
|
7
|
+
* `ExcludeCharacters` then narrows each included type. Keeping the types apart
|
|
8
|
+
* rather than merging them into one alphabet is what lets
|
|
9
|
+
* `RequireEachIncludedType` mean anything.
|
|
10
|
+
*/
|
|
11
|
+
export class SimSecretsManagerPasswordCharacterSets {
|
|
12
|
+
included;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.included = SimSecretsManagerPasswordCharacterSets.include(options);
|
|
15
|
+
}
|
|
16
|
+
static include(options) {
|
|
17
|
+
const excluded = options.excludeCharacters ?? "";
|
|
18
|
+
const candidates = secretsManagerPasswordCharacters
|
|
19
|
+
.filter((set) => {
|
|
20
|
+
return this.isIncluded(set.name, options);
|
|
21
|
+
})
|
|
22
|
+
.map((set) => {
|
|
23
|
+
return new SimSecretsManagerPasswordCharacterSet(set.name, set.characters).without(excluded);
|
|
24
|
+
});
|
|
25
|
+
for (const set of candidates) {
|
|
26
|
+
set.requireNotEmpty();
|
|
27
|
+
}
|
|
28
|
+
if (candidates.length === 0) {
|
|
29
|
+
throw new SimSecretsManagerInvalidParameterException("A generated password needs at least one character type: every one " +
|
|
30
|
+
"of uppercase, lowercase, numbers and punctuation was excluded");
|
|
31
|
+
}
|
|
32
|
+
return candidates;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether a character type is included, by the flag that governs it.
|
|
36
|
+
*
|
|
37
|
+
* Every type but the space is included unless excluded; the space is the
|
|
38
|
+
* other way round, as it is on real AWS.
|
|
39
|
+
*/
|
|
40
|
+
static isIncluded(name, options) {
|
|
41
|
+
switch (name) {
|
|
42
|
+
case "uppercase": {
|
|
43
|
+
return options.excludeUppercase !== true;
|
|
44
|
+
}
|
|
45
|
+
case "lowercase": {
|
|
46
|
+
return options.excludeLowercase !== true;
|
|
47
|
+
}
|
|
48
|
+
case "numbers": {
|
|
49
|
+
return options.excludeNumbers !== true;
|
|
50
|
+
}
|
|
51
|
+
case "punctuation": {
|
|
52
|
+
return options.excludePunctuation !== true;
|
|
53
|
+
}
|
|
54
|
+
case "space": {
|
|
55
|
+
return options.includeSpace === true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Every character any included type allows, as one pool.
|
|
61
|
+
*/
|
|
62
|
+
get alphabet() {
|
|
63
|
+
return this.included.map((set) => set.characters).join("");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=sim-secrets-manager-password-character-sets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-password-character-sets.js","sourceRoot":"","sources":["../../../../../src/service/secretsmanager/secret/generate/sim-secrets-manager-password-character-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,0CAA0C,CAAC;AACtG,OAAO,EACL,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,iDAAiD,CAAC;AAiBzD;;;;;;;GAOG;AACH,MAAM,OAAO,sCAAsC;IACjC,QAAQ,CAAmD;IAE3E,YAAY,OAAO,GAA8C,EAAE;QACjE,IAAI,CAAC,QAAQ,GAAG,sCAAsC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,OAAO,CACpB,OAAkD;QAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,gCAAgC;aAChD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,OAAO,IAAI,qCAAqC,CAC9C,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,UAAU,CACf,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEL,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,0CAA0C,CAClD,oEAAoE;gBAClE,+DAA+D,CAClE,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,UAAU,CACvB,IAA+D,EAC/D,OAAkD;QAElD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;YAC3C,CAAC;YACD,KAAK,WAAW,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;YAC3C,CAAC;YACD,KAAK,SAAS,EAAE,CAAC;gBACf,OAAO,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC;YACzC,CAAC;YACD,KAAK,aAAa,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC;YAC7C,CAAC;YACD,KAAK,OAAO,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SimSecretsManagerPasswordSpec } from "./sim-secrets-manager-password-spec.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generates the random passwords Secrets Manager generates.
|
|
4
|
+
*
|
|
5
|
+
* The randomness is real rather than seedable: a test that wants the value
|
|
6
|
+
* reads it back out of the simulation, the same way a deployed application
|
|
7
|
+
* does, rather than predicting it. A predictable generator would make a test
|
|
8
|
+
* pass for a reason that says nothing about the deployed system.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SimSecretsManagerPasswordGenerator {
|
|
11
|
+
/**
|
|
12
|
+
* Generate one password meeting a validated spec.
|
|
13
|
+
*
|
|
14
|
+
* Each required type contributes a character first and the rest is drawn
|
|
15
|
+
* from the whole pool, then the result is shuffled so the required
|
|
16
|
+
* characters do not always land at the front.
|
|
17
|
+
*/
|
|
18
|
+
generate(spec: SimSecretsManagerPasswordSpec): string;
|
|
19
|
+
private requiredCharacters;
|
|
20
|
+
/**
|
|
21
|
+
* Pick one character uniformly, without the modulo bias a raw random byte
|
|
22
|
+
* would introduce.
|
|
23
|
+
*/
|
|
24
|
+
private pick;
|
|
25
|
+
/**
|
|
26
|
+
* Take characters from the pool at random until it is empty, which is the
|
|
27
|
+
* Fisher-Yates shuffle written as a drawing rather than as index swaps.
|
|
28
|
+
*/
|
|
29
|
+
private shuffled;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sim-secrets-manager-password-generator.d.ts.map
|
package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-password-generator.d.ts","sourceRoot":"","sources":["../../../../../src/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAE5F;;;;;;;GAOG;AACH,qBAAa,kCAAkC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,MAAM,CASpD;IAED,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;IACH,OAAO,CAAC,IAAI;IAIZ;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAUjB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { randomInt } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Generates the random passwords Secrets Manager generates.
|
|
4
|
+
*
|
|
5
|
+
* The randomness is real rather than seedable: a test that wants the value
|
|
6
|
+
* reads it back out of the simulation, the same way a deployed application
|
|
7
|
+
* does, rather than predicting it. A predictable generator would make a test
|
|
8
|
+
* pass for a reason that says nothing about the deployed system.
|
|
9
|
+
*/
|
|
10
|
+
export class SimSecretsManagerPasswordGenerator {
|
|
11
|
+
/**
|
|
12
|
+
* Generate one password meeting a validated spec.
|
|
13
|
+
*
|
|
14
|
+
* Each required type contributes a character first and the rest is drawn
|
|
15
|
+
* from the whole pool, then the result is shuffled so the required
|
|
16
|
+
* characters do not always land at the front.
|
|
17
|
+
*/
|
|
18
|
+
generate(spec) {
|
|
19
|
+
const characters = this.requiredCharacters(spec);
|
|
20
|
+
const alphabet = spec.characterSets.alphabet;
|
|
21
|
+
while (characters.length < spec.length) {
|
|
22
|
+
characters.push(this.pick(alphabet));
|
|
23
|
+
}
|
|
24
|
+
return this.shuffled(characters).join("");
|
|
25
|
+
}
|
|
26
|
+
requiredCharacters(spec) {
|
|
27
|
+
if (!spec.requireEachIncludedType) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
return spec.characterSets.included.map((set) => this.pick(set.characters));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Pick one character uniformly, without the modulo bias a raw random byte
|
|
34
|
+
* would introduce.
|
|
35
|
+
*/
|
|
36
|
+
pick(characters) {
|
|
37
|
+
return characters.charAt(randomInt(characters.length));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Take characters from the pool at random until it is empty, which is the
|
|
41
|
+
* Fisher-Yates shuffle written as a drawing rather than as index swaps.
|
|
42
|
+
*/
|
|
43
|
+
shuffled(characters) {
|
|
44
|
+
const pool = [...characters];
|
|
45
|
+
const shuffled = [];
|
|
46
|
+
while (pool.length > 0) {
|
|
47
|
+
shuffled.push(...pool.splice(randomInt(pool.length), 1));
|
|
48
|
+
}
|
|
49
|
+
return shuffled;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=sim-secrets-manager-password-generator.js.map
|
package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-password-generator.js","sourceRoot":"","sources":["../../../../../src/service/secretsmanager/secret/generate/sim-secrets-manager-password-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;GAOG;AACH,MAAM,OAAO,kCAAkC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,IAAmC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAE7C,OAAO,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,kBAAkB,CAAC,IAAmC;QAC5D,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACK,IAAI,CAAC,UAAkB;QAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACK,QAAQ,CAAC,UAA6B;QAC5C,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { SimSecretsManagerPasswordCharacterOptions } from "./sim-secrets-manager-password-character-sets.js";
|
|
2
|
+
import { SimSecretsManagerPasswordCharacterSets } from "./sim-secrets-manager-password-character-sets.js";
|
|
3
|
+
/**
|
|
4
|
+
* Everything a Secrets Manager password request can ask for.
|
|
5
|
+
*/
|
|
6
|
+
export interface SimSecretsManagerPasswordOptions extends SimSecretsManagerPasswordCharacterOptions {
|
|
7
|
+
readonly passwordLength?: number | undefined;
|
|
8
|
+
readonly requireEachIncludedType?: boolean | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A validated request for one generated password.
|
|
12
|
+
*
|
|
13
|
+
* Validation lives here rather than in the generator so a contradictory
|
|
14
|
+
* request — a length of zero, or four required character types in a
|
|
15
|
+
* three-character password — is refused when it is described rather than
|
|
16
|
+
* silently honoured in part when it is generated.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SimSecretsManagerPasswordSpec {
|
|
19
|
+
readonly length: number;
|
|
20
|
+
readonly characterSets: SimSecretsManagerPasswordCharacterSets;
|
|
21
|
+
/**
|
|
22
|
+
* Whether every included character type has to appear at least once.
|
|
23
|
+
*
|
|
24
|
+
* Real Secrets Manager defaults this on, so a generated password contains
|
|
25
|
+
* one of everything it was not told to exclude.
|
|
26
|
+
*/
|
|
27
|
+
readonly requireEachIncludedType: boolean;
|
|
28
|
+
constructor(options?: SimSecretsManagerPasswordOptions);
|
|
29
|
+
private static validLength;
|
|
30
|
+
/**
|
|
31
|
+
* Refuse a password too short to hold one of each required type.
|
|
32
|
+
*/
|
|
33
|
+
private requireTypesFit;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sim-secrets-manager-password-spec.d.ts.map
|
package/dist/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-password-spec.d.ts","sourceRoot":"","sources":["../../../../../src/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,kDAAkD,CAAC;AAClH,OAAO,EAAE,sCAAsC,EAAE,MAAM,kDAAkD,CAAC;AAU1G;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,yCAAyC;IACjG,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IACxC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,aAAa,EAAE,sCAAsC,CAAC;IAEtE;;;;;OAKG;IACH,SAAgB,uBAAuB,EAAE,OAAO,CAAC;IAEjD,YAAY,OAAO,GAAE,gCAAqC,EAQzD;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAsB1B;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SimSecretsManagerInvalidParameterException } from "../../error/sim-secrets-manager.error.js";
|
|
2
|
+
import { SimSecretsManagerPasswordCharacterSets } from "./sim-secrets-manager-password-character-sets.js";
|
|
3
|
+
/**
|
|
4
|
+
* The length real Secrets Manager generates when a request does not ask for
|
|
5
|
+
* one, and the range it accepts.
|
|
6
|
+
*/
|
|
7
|
+
const defaultPasswordLength = 32;
|
|
8
|
+
const minimumPasswordLength = 1;
|
|
9
|
+
const maximumPasswordLength = 4096;
|
|
10
|
+
/**
|
|
11
|
+
* A validated request for one generated password.
|
|
12
|
+
*
|
|
13
|
+
* Validation lives here rather than in the generator so a contradictory
|
|
14
|
+
* request — a length of zero, or four required character types in a
|
|
15
|
+
* three-character password — is refused when it is described rather than
|
|
16
|
+
* silently honoured in part when it is generated.
|
|
17
|
+
*/
|
|
18
|
+
export class SimSecretsManagerPasswordSpec {
|
|
19
|
+
length;
|
|
20
|
+
characterSets;
|
|
21
|
+
/**
|
|
22
|
+
* Whether every included character type has to appear at least once.
|
|
23
|
+
*
|
|
24
|
+
* Real Secrets Manager defaults this on, so a generated password contains
|
|
25
|
+
* one of everything it was not told to exclude.
|
|
26
|
+
*/
|
|
27
|
+
requireEachIncludedType;
|
|
28
|
+
constructor(options = {}) {
|
|
29
|
+
this.length = SimSecretsManagerPasswordSpec.validLength(options.passwordLength);
|
|
30
|
+
this.characterSets = new SimSecretsManagerPasswordCharacterSets(options);
|
|
31
|
+
this.requireEachIncludedType = options.requireEachIncludedType !== false;
|
|
32
|
+
this.requireTypesFit();
|
|
33
|
+
}
|
|
34
|
+
static validLength(length) {
|
|
35
|
+
if (length === undefined) {
|
|
36
|
+
return defaultPasswordLength;
|
|
37
|
+
}
|
|
38
|
+
if (!Number.isSafeInteger(length)) {
|
|
39
|
+
throw new SimSecretsManagerInvalidParameterException(`PasswordLength ${String(length)} must be a whole number`);
|
|
40
|
+
}
|
|
41
|
+
if (length < minimumPasswordLength || length > maximumPasswordLength) {
|
|
42
|
+
throw new SimSecretsManagerInvalidParameterException(`PasswordLength ${String(length)} must be between ` +
|
|
43
|
+
`${String(minimumPasswordLength)} and ` +
|
|
44
|
+
`${String(maximumPasswordLength)} characters`);
|
|
45
|
+
}
|
|
46
|
+
return length;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Refuse a password too short to hold one of each required type.
|
|
50
|
+
*/
|
|
51
|
+
requireTypesFit() {
|
|
52
|
+
if (!this.requireEachIncludedType) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const typeCount = this.characterSets.included.length;
|
|
56
|
+
if (typeCount <= this.length) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
throw new SimSecretsManagerInvalidParameterException(`PasswordLength ${String(this.length)} is too short to include one of ` +
|
|
60
|
+
`each of the ${String(typeCount)} character types the request ` +
|
|
61
|
+
`requires. Exclude a character type or ask for a longer password.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=sim-secrets-manager-password-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-password-spec.js","sourceRoot":"","sources":["../../../../../src/service/secretsmanager/secret/generate/sim-secrets-manager-password-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,0CAA0C,CAAC;AAEtG,OAAO,EAAE,sCAAsC,EAAE,MAAM,kDAAkD,CAAC;AAE1G;;;GAGG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAUnC;;;;;;;GAOG;AACH,MAAM,OAAO,6BAA6B;IACxB,MAAM,CAAS;IACf,aAAa,CAAyC;IAEtE;;;;;OAKG;IACa,uBAAuB,CAAU;IAEjD,YAAY,OAAO,GAAqC,EAAE;QACxD,IAAI,CAAC,MAAM,GAAG,6BAA6B,CAAC,WAAW,CACrD,OAAO,CAAC,cAAc,CACvB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,sCAAsC,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,KAAK,KAAK,CAAC;QAEzE,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAA0B;QACnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,0CAA0C,CAClD,kBAAkB,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,GAAG,qBAAqB,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;YACrE,MAAM,IAAI,0CAA0C,CAClD,kBAAkB,MAAM,CAAC,MAAM,CAAC,mBAAmB;gBACjD,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO;gBACvC,GAAG,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAChD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QAErD,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,0CAA0C,CAClD,kBAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kCAAkC;YACrE,eAAe,MAAM,CAAC,SAAS,CAAC,+BAA+B;YAC/D,kEAAkE,CACrE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two ways a DeleteSecret request can ask for a secret to go.
|
|
3
|
+
*/
|
|
4
|
+
export interface SimSecretsManagerDeletionScheduleInput {
|
|
5
|
+
readonly RecoveryWindowInDays?: number | undefined;
|
|
6
|
+
readonly ForceDeleteWithoutRecovery?: boolean | undefined;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* How soon a DeleteSecret request wants the secret gone.
|
|
10
|
+
*
|
|
11
|
+
* Real Secrets Manager does not delete on request: it waits out a recovery
|
|
12
|
+
* window of 7 to 30 days, defaulting to 30, during which the secret can be
|
|
13
|
+
* restored and its name cannot be reused. ForceDeleteWithoutRecovery skips
|
|
14
|
+
* that, and asking for both at once is a contradiction real AWS refuses.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SimSecretsManagerDeletionSchedule {
|
|
17
|
+
readonly isImmediate: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* The recovery window in days, or undefined when deletion is immediate.
|
|
20
|
+
*/
|
|
21
|
+
readonly recoveryWindowInDays: number | undefined;
|
|
22
|
+
constructor(input: SimSecretsManagerDeletionScheduleInput);
|
|
23
|
+
private static refuseWindowWithForce;
|
|
24
|
+
private static validatedDays;
|
|
25
|
+
/**
|
|
26
|
+
* When the secret is due to be gone for good.
|
|
27
|
+
*
|
|
28
|
+
* An immediate deletion is due now, which is what makes the name reusable
|
|
29
|
+
* straight away.
|
|
30
|
+
*/
|
|
31
|
+
deletionDateFrom(now: Date): Date;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=sim-secrets-manager-deletion-schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-deletion-schedule.d.ts","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,qBAAa,iCAAiC;IAC5C,SAAgB,WAAW,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,SAAgB,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzD,YAAY,KAAK,EAAE,sCAAsC,EAgBxD;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAWpC,OAAO,CAAC,MAAM,CAAC,aAAa;IAc5B;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAQhC;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { SimSecretsManagerInvalidParameterException } from "../error/sim-secrets-manager.error.js";
|
|
2
|
+
const minDays = 7;
|
|
3
|
+
const maxDays = 30;
|
|
4
|
+
const defaultDays = 30;
|
|
5
|
+
const millisecondsPerDay = 24 * 60 * 60 * 1000;
|
|
6
|
+
/**
|
|
7
|
+
* How soon a DeleteSecret request wants the secret gone.
|
|
8
|
+
*
|
|
9
|
+
* Real Secrets Manager does not delete on request: it waits out a recovery
|
|
10
|
+
* window of 7 to 30 days, defaulting to 30, during which the secret can be
|
|
11
|
+
* restored and its name cannot be reused. ForceDeleteWithoutRecovery skips
|
|
12
|
+
* that, and asking for both at once is a contradiction real AWS refuses.
|
|
13
|
+
*/
|
|
14
|
+
export class SimSecretsManagerDeletionSchedule {
|
|
15
|
+
isImmediate;
|
|
16
|
+
/**
|
|
17
|
+
* The recovery window in days, or undefined when deletion is immediate.
|
|
18
|
+
*/
|
|
19
|
+
recoveryWindowInDays;
|
|
20
|
+
constructor(input) {
|
|
21
|
+
const { RecoveryWindowInDays: requestedDays, ForceDeleteWithoutRecovery: forced, } = input;
|
|
22
|
+
this.isImmediate = forced === true;
|
|
23
|
+
if (this.isImmediate) {
|
|
24
|
+
SimSecretsManagerDeletionSchedule.refuseWindowWithForce(requestedDays);
|
|
25
|
+
this.recoveryWindowInDays = undefined;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.recoveryWindowInDays =
|
|
29
|
+
SimSecretsManagerDeletionSchedule.validatedDays(requestedDays);
|
|
30
|
+
}
|
|
31
|
+
static refuseWindowWithForce(days) {
|
|
32
|
+
if (days === undefined) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
throw new SimSecretsManagerInvalidParameterException("RecoveryWindowInDays cannot be used with ForceDeleteWithoutRecovery: " +
|
|
36
|
+
"a forced deletion has no recovery window");
|
|
37
|
+
}
|
|
38
|
+
static validatedDays(days) {
|
|
39
|
+
if (days === undefined) {
|
|
40
|
+
return defaultDays;
|
|
41
|
+
}
|
|
42
|
+
if (!Number.isSafeInteger(days) || days < minDays || days > maxDays) {
|
|
43
|
+
throw new SimSecretsManagerInvalidParameterException(`RecoveryWindowInDays must be a whole number between ${String(minDays)} and ${String(maxDays)}`);
|
|
44
|
+
}
|
|
45
|
+
return days;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* When the secret is due to be gone for good.
|
|
49
|
+
*
|
|
50
|
+
* An immediate deletion is due now, which is what makes the name reusable
|
|
51
|
+
* straight away.
|
|
52
|
+
*/
|
|
53
|
+
deletionDateFrom(now) {
|
|
54
|
+
if (this.recoveryWindowInDays === undefined) {
|
|
55
|
+
return now;
|
|
56
|
+
}
|
|
57
|
+
return new Date(now.getTime() + this.recoveryWindowInDays * millisecondsPerDay);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=sim-secrets-manager-deletion-schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-deletion-schedule.js","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-deletion-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC;AAEnG,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAU/C;;;;;;;GAOG;AACH,MAAM,OAAO,iCAAiC;IAC5B,WAAW,CAAU;IAErC;;OAEG;IACa,oBAAoB,CAAqB;IAEzD,YAAY,KAA6C;QACvD,MAAM,EACJ,oBAAoB,EAAE,aAAa,EACnC,0BAA0B,EAAE,MAAM,GACnC,GAAG,KAAK,CAAC;QAEV,IAAI,CAAC,WAAW,GAAG,MAAM,KAAK,IAAI,CAAC;QAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,iCAAiC,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,oBAAoB;YACvB,iCAAiC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,IAAwB;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,0CAA0C,CAClD,uEAAuE;YACrE,0CAA0C,CAC7C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAwB;QACnD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YACpE,MAAM,IAAI,0CAA0C,CAClD,uDAAuD,MAAM,CAAC,OAAO,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,EAAE,CAChG,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAS;QACxB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,IAAI,CACb,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,GAAG,kBAAkB,CAC/D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
|
|
2
|
+
export declare const secretArnSuffixLength = 6;
|
|
3
|
+
/**
|
|
4
|
+
* A name already carrying something shaped like an ARN suffix.
|
|
5
|
+
*
|
|
6
|
+
* This is the pattern that makes a partial ARN ambiguous, so both ARN building
|
|
7
|
+
* and secret name validation need it.
|
|
8
|
+
*/
|
|
9
|
+
export declare const secretArnSuffixPattern: RegExp;
|
|
10
|
+
interface SimSecretsManagerSecretArnProperties {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
13
|
+
readonly suffix?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The ARN of one simulated secret, and the parts a caller can name it by.
|
|
17
|
+
*
|
|
18
|
+
* Real Secrets Manager appends a hyphen and six random characters to the
|
|
19
|
+
* secret name in its ARN, which is why an IAM policy written against a secret
|
|
20
|
+
* has to end in `-??????` or a wildcard rather than the bare name. Reproducing
|
|
21
|
+
* that is the whole point of this class: a policy that works here is one that
|
|
22
|
+
* would work on real AWS.
|
|
23
|
+
*/
|
|
24
|
+
export declare class SimSecretsManagerSecretArn {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly suffix: string;
|
|
27
|
+
/**
|
|
28
|
+
* The name with its ARN suffix, which is the resource part of the ARN.
|
|
29
|
+
*/
|
|
30
|
+
readonly suffixedName: string;
|
|
31
|
+
readonly value: string;
|
|
32
|
+
constructor(properties: SimSecretsManagerSecretArnProperties);
|
|
33
|
+
/**
|
|
34
|
+
* Whether a resource part from a full or partial ARN names this secret.
|
|
35
|
+
*
|
|
36
|
+
* A full ARN carries the suffix and a partial ARN does not, and both are
|
|
37
|
+
* valid ways to name a secret on real AWS.
|
|
38
|
+
*/
|
|
39
|
+
matchesResource(resource: string): boolean;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=sim-secrets-manager-secret-arn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-secret-arn.d.ts","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-secret-arn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAS1F,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAoB,CAAC;AAgBxD,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,YAAY,EAAE,MAAM,CAAC;IAErC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B,YAAY,UAAU,EAAE,oCAAoC,EAS3D;IAED;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzC;CACF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* The alphabet and length of the suffix real Secrets Manager appends to a
|
|
4
|
+
* secret ARN.
|
|
5
|
+
*/
|
|
6
|
+
const suffixAlphabet =
|
|
7
|
+
// eslint-disable-next-line no-secrets/no-secrets -- an alphabet, not a secret.
|
|
8
|
+
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
9
|
+
export const secretArnSuffixLength = 6;
|
|
10
|
+
/**
|
|
11
|
+
* A name already carrying something shaped like an ARN suffix.
|
|
12
|
+
*
|
|
13
|
+
* This is the pattern that makes a partial ARN ambiguous, so both ARN building
|
|
14
|
+
* and secret name validation need it.
|
|
15
|
+
*/
|
|
16
|
+
export const secretArnSuffixPattern = /-[\dA-Za-z]{6}$/;
|
|
17
|
+
/**
|
|
18
|
+
* Six random characters, as real Secrets Manager appends to every secret ARN.
|
|
19
|
+
*/
|
|
20
|
+
function randomSuffix() {
|
|
21
|
+
const bytes = randomBytes(secretArnSuffixLength);
|
|
22
|
+
let suffix = "";
|
|
23
|
+
for (const byte of bytes) {
|
|
24
|
+
suffix += suffixAlphabet.charAt(byte % suffixAlphabet.length);
|
|
25
|
+
}
|
|
26
|
+
return suffix;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The ARN of one simulated secret, and the parts a caller can name it by.
|
|
30
|
+
*
|
|
31
|
+
* Real Secrets Manager appends a hyphen and six random characters to the
|
|
32
|
+
* secret name in its ARN, which is why an IAM policy written against a secret
|
|
33
|
+
* has to end in `-??????` or a wildcard rather than the bare name. Reproducing
|
|
34
|
+
* that is the whole point of this class: a policy that works here is one that
|
|
35
|
+
* would work on real AWS.
|
|
36
|
+
*/
|
|
37
|
+
export class SimSecretsManagerSecretArn {
|
|
38
|
+
name;
|
|
39
|
+
suffix;
|
|
40
|
+
/**
|
|
41
|
+
* The name with its ARN suffix, which is the resource part of the ARN.
|
|
42
|
+
*/
|
|
43
|
+
suffixedName;
|
|
44
|
+
value;
|
|
45
|
+
constructor(properties) {
|
|
46
|
+
const { name, accountRegionScope, suffix = randomSuffix() } = properties;
|
|
47
|
+
this.name = name;
|
|
48
|
+
this.suffix = suffix;
|
|
49
|
+
this.suffixedName = `${name}-${suffix}`;
|
|
50
|
+
this.value =
|
|
51
|
+
`arn:aws:secretsmanager:${accountRegionScope.regionName}:` +
|
|
52
|
+
`${accountRegionScope.accountId}:secret:${this.suffixedName}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether a resource part from a full or partial ARN names this secret.
|
|
56
|
+
*
|
|
57
|
+
* A full ARN carries the suffix and a partial ARN does not, and both are
|
|
58
|
+
* valid ways to name a secret on real AWS.
|
|
59
|
+
*/
|
|
60
|
+
matchesResource(resource) {
|
|
61
|
+
return resource === this.suffixedName || resource === this.name;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=sim-secrets-manager-secret-arn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-secret-arn.js","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-secret-arn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;GAGG;AACH,MAAM,cAAc;AAClB,+EAA+E;AAC/E,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAExD;;GAEG;AACH,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IACrB,IAAI,CAAS;IACb,MAAM,CAAS;IAE/B;;OAEG;IACa,YAAY,CAAS;IAErB,KAAK,CAAS;IAE9B,YAAY,UAAgD;QAC1D,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,GAAG,YAAY,EAAE,EAAE,GAAG,UAAU,CAAC;QAEzE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK;YACR,0BAA0B,kBAAkB,CAAC,UAAU,GAAG;gBAC1D,GAAG,kBAAkB,CAAC,SAAS,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,QAAgB;QAC9B,OAAO,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BackgroundScheduler } from "../../../util/background/background.js";
|
|
2
|
+
import type { SimSecretsManagerSecret } from "./sim-secrets-manager-secret.js";
|
|
3
|
+
import type { SimSecretsManagerSecretStore } from "./sim-secrets-manager-secret-store.js";
|
|
4
|
+
interface SimSecretsManagerSecretExpiryProperties {
|
|
5
|
+
readonly secrets: SimSecretsManagerSecretStore;
|
|
6
|
+
readonly background: BackgroundScheduler;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Removes a secret once its recovery window runs out.
|
|
10
|
+
*
|
|
11
|
+
* The window is scheduled on the simulation's clock rather than the host's, so
|
|
12
|
+
* advancing simulated time past it is what frees the name up again. That is
|
|
13
|
+
* the failure people actually hit when a stack is deleted and redeployed, and
|
|
14
|
+
* it is only testable if the window really elapses.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SimSecretsManagerSecretExpiry {
|
|
17
|
+
private readonly secrets;
|
|
18
|
+
private readonly background;
|
|
19
|
+
constructor(properties: SimSecretsManagerSecretExpiryProperties);
|
|
20
|
+
/**
|
|
21
|
+
* Arrange for a secret to be gone once its deletion date arrives.
|
|
22
|
+
*
|
|
23
|
+
* The scheduled work checks the secret is still due to go at that same
|
|
24
|
+
* instant, so a RestoreSecret in the meantime, or a second deletion with a
|
|
25
|
+
* different window, leaves the earlier schedule with nothing to do.
|
|
26
|
+
*/
|
|
27
|
+
scheduleRemoval(secret: SimSecretsManagerSecret, deletionDate: Date): void;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=sim-secrets-manager-secret-expiry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-secret-expiry.d.ts","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAE1F,UAAU,uCAAuC;IAC/C,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,YAAY,UAAU,EAAE,uCAAuC,EAG9D;IAED;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,GAAG,IAAI,CAQzE;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes a secret once its recovery window runs out.
|
|
3
|
+
*
|
|
4
|
+
* The window is scheduled on the simulation's clock rather than the host's, so
|
|
5
|
+
* advancing simulated time past it is what frees the name up again. That is
|
|
6
|
+
* the failure people actually hit when a stack is deleted and redeployed, and
|
|
7
|
+
* it is only testable if the window really elapses.
|
|
8
|
+
*/
|
|
9
|
+
export class SimSecretsManagerSecretExpiry {
|
|
10
|
+
secrets;
|
|
11
|
+
background;
|
|
12
|
+
constructor(properties) {
|
|
13
|
+
this.secrets = properties.secrets;
|
|
14
|
+
this.background = properties.background;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Arrange for a secret to be gone once its deletion date arrives.
|
|
18
|
+
*
|
|
19
|
+
* The scheduled work checks the secret is still due to go at that same
|
|
20
|
+
* instant, so a RestoreSecret in the meantime, or a second deletion with a
|
|
21
|
+
* different window, leaves the earlier schedule with nothing to do.
|
|
22
|
+
*/
|
|
23
|
+
scheduleRemoval(secret, deletionDate) {
|
|
24
|
+
this.background.scheduleAt(deletionDate, () => {
|
|
25
|
+
if (secret.deletionDate?.getTime() === deletionDate.getTime()) {
|
|
26
|
+
this.secrets.remove(secret);
|
|
27
|
+
}
|
|
28
|
+
return Promise.resolve();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sim-secrets-manager-secret-expiry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-secret-expiry.js","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-secret-expiry.ts"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,MAAM,OAAO,6BAA6B;IACvB,OAAO,CAA+B;IACtC,UAAU,CAAsB;IAEjD,YAAY,UAAmD;QAC7D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,MAA+B,EAAE,YAAkB;QACjE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,GAAkB,EAAE;YAC3D,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SimClock } from "../../../util/clock/sim-clock.js";
|
|
2
|
+
import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
|
|
3
|
+
import { SimSecretsManagerSecret, type SimSecretsManagerTag } from "./sim-secrets-manager-secret.js";
|
|
4
|
+
interface SimSecretsManagerSecretFactoryProperties {
|
|
5
|
+
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
6
|
+
readonly clock: SimClock;
|
|
7
|
+
}
|
|
8
|
+
interface SimSecretsManagerMakeSecretProperties {
|
|
9
|
+
readonly name: string | undefined;
|
|
10
|
+
readonly description?: string | undefined;
|
|
11
|
+
readonly kmsKeyId?: string | undefined;
|
|
12
|
+
readonly tags?: readonly SimSecretsManagerTag[] | undefined;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds simulated secrets, including their name validation and their ARN.
|
|
16
|
+
*
|
|
17
|
+
* Creation has to produce a validated name, an ARN carrying the random suffix
|
|
18
|
+
* that name gets, and a creation timestamp from the simulation's clock, so it
|
|
19
|
+
* happens in one place rather than at each call site that needs a secret.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SimSecretsManagerSecretFactory {
|
|
22
|
+
private readonly accountRegionScope;
|
|
23
|
+
private readonly clock;
|
|
24
|
+
constructor(properties: SimSecretsManagerSecretFactoryProperties);
|
|
25
|
+
/**
|
|
26
|
+
* Make a new secret with no versions yet.
|
|
27
|
+
*/
|
|
28
|
+
make(properties: SimSecretsManagerMakeSecretProperties): SimSecretsManagerSecret;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=sim-secrets-manager-secret-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-secrets-manager-secret-factory.d.ts","sourceRoot":"","sources":["../../../../src/service/secretsmanager/secret/sim-secrets-manager-secret-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EACL,uBAAuB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAIzC,UAAU,wCAAwC;IAChD,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAED,UAAU,qCAAqC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAC;CAC7D;AAED;;;;;;GAMG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IAEjC,YAAY,UAAU,EAAE,wCAAwC,EAG/D;IAED;;OAEG;IACH,IAAI,CACF,UAAU,EAAE,qCAAqC,GAChD,uBAAuB,CAazB;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { SimSecretsManagerSecret, } from "./sim-secrets-manager-secret.js";
|
|
2
|
+
import { SimSecretsManagerSecretArn } from "./sim-secrets-manager-secret-arn.js";
|
|
3
|
+
import { SimSecretsManagerSecretName } from "./sim-secrets-manager-secret-name.js";
|
|
4
|
+
/**
|
|
5
|
+
* Builds simulated secrets, including their name validation and their ARN.
|
|
6
|
+
*
|
|
7
|
+
* Creation has to produce a validated name, an ARN carrying the random suffix
|
|
8
|
+
* that name gets, and a creation timestamp from the simulation's clock, so it
|
|
9
|
+
* happens in one place rather than at each call site that needs a secret.
|
|
10
|
+
*/
|
|
11
|
+
export class SimSecretsManagerSecretFactory {
|
|
12
|
+
accountRegionScope;
|
|
13
|
+
clock;
|
|
14
|
+
constructor(properties) {
|
|
15
|
+
this.accountRegionScope = properties.accountRegionScope;
|
|
16
|
+
this.clock = properties.clock;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Make a new secret with no versions yet.
|
|
20
|
+
*/
|
|
21
|
+
make(properties) {
|
|
22
|
+
const name = new SimSecretsManagerSecretName(properties.name);
|
|
23
|
+
return new SimSecretsManagerSecret({
|
|
24
|
+
arn: new SimSecretsManagerSecretArn({
|
|
25
|
+
name: name.value,
|
|
26
|
+
accountRegionScope: this.accountRegionScope,
|
|
27
|
+
}),
|
|
28
|
+
createdDate: this.clock.now(),
|
|
29
|
+
description: properties.description,
|
|
30
|
+
kmsKeyId: properties.kmsKeyId,
|
|
31
|
+
tags: properties.tags,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sim-secrets-manager-secret-factory.js.map
|