s3-secure-bucket 0.3.7 → 0.4.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/.jsii +20 -19
- package/API.md +8 -4
- package/lib/bucket-policies/access-log-bucket-policy.d.ts +15 -0
- package/lib/bucket-policies/access-log-bucket-policy.js +118 -0
- package/lib/bucket-policies/cloud-watch-log-archive-policy.d.ts +15 -0
- package/lib/bucket-policies/cloud-watch-log-archive-policy.js +89 -0
- package/lib/bucket-policies/deployment-pipeline-artifact-policy.d.ts +11 -0
- package/lib/bucket-policies/deployment-pipeline-artifact-policy.js +69 -0
- package/lib/bucket-policies/index.d.ts +18 -0
- package/lib/bucket-policies/index.js +36 -0
- package/lib/bucket-policies/types.d.ts +22 -0
- package/lib/bucket-policies/types.js +3 -0
- package/lib/bucket-types/bucket-type.d.ts +48 -0
- package/lib/bucket-types/bucket-type.js +48 -0
- package/lib/bucket-types/encryption-default.d.ts +14 -0
- package/lib/bucket-types/encryption-default.js +59 -0
- package/lib/bucket-types/index.d.ts +8 -0
- package/lib/bucket-types/index.js +13 -0
- package/lib/bucket-types/props.d.ts +16 -0
- package/lib/bucket-types/props.js +37 -0
- package/lib/index.d.ts +5 -80
- package/lib/index.js +8 -255
- package/lib/s3-secure-bucket.d.ts +43 -0
- package/lib/s3-secure-bucket.js +118 -0
- package/package.json +5 -6
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
2
|
+
import { Construct, IDependable } from 'constructs';
|
|
3
|
+
import { S3SecureBucketProps } from './bucket-types';
|
|
4
|
+
/**
|
|
5
|
+
* S3 bucket with opinionated secure defaults: private ACLs, block public access, TLS-only access,
|
|
6
|
+
* and encryption (S3-managed for log/origin/archive types; KMS-managed by default otherwise).
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Secure defaults applied regardless of `props`:
|
|
10
|
+
* - `removalPolicy`: {@link RemovalPolicy.RETAIN}
|
|
11
|
+
* - `publicReadAccess`: `false`
|
|
12
|
+
* - `blockPublicAccess`: {@link s3.BlockPublicAccess.BLOCK_ALL}
|
|
13
|
+
* - `enforceSSL`: `true`
|
|
14
|
+
* - `versioned`: `true` unless explicitly set in `props`
|
|
15
|
+
* - `objectOwnership`: {@link s3.ObjectOwnership.BUCKET_OWNER_ENFORCED} unless overridden
|
|
16
|
+
* - `accessControl`: {@link s3.BucketAccessControl.PRIVATE} unless overridden
|
|
17
|
+
*
|
|
18
|
+
* Bucket-type-specific behavior:
|
|
19
|
+
* - {@link S3SecureBucketType.DEPLOYMENT_PIPELINE_ARTIFACT_BUCKET}: may attach a deploy-role policy when a non-default bootstrap qualifier is present.
|
|
20
|
+
* - {@link S3SecureBucketType.ACCESS_LOG_BUCKET}: adds log-writer principals; see {@link S3SecureBucket#accessLogBucketPolicyDependable}.
|
|
21
|
+
* - {@link S3SecureBucketType.CLOUD_WATCH_LOG_ARCHIVE_BUCKET}: adds CloudWatch Logs export principals (`logs.<region>.amazonaws.com`).
|
|
22
|
+
*/
|
|
23
|
+
export declare class S3SecureBucket extends s3.Bucket {
|
|
24
|
+
/**
|
|
25
|
+
* Set only when {@link S3SecureBucketProps.bucketType} is {@link S3SecureBucketType.ACCESS_LOG_BUCKET}.
|
|
26
|
+
* Use as a dependency target so load balancer access-log enablement runs after the bucket policy
|
|
27
|
+
* exists (ELB performs an immediate validation `PutObject` that fails if the policy is not applied yet).
|
|
28
|
+
*
|
|
29
|
+
* Example: `loadBalancer.node.addDependency(bucket.accessLogBucketPolicyDependable!)`.
|
|
30
|
+
*
|
|
31
|
+
* @default undefined when `bucketType` is not {@link S3SecureBucketType.ACCESS_LOG_BUCKET}.
|
|
32
|
+
*/
|
|
33
|
+
readonly accessLogBucketPolicyDependable?: IDependable;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a secure S3 bucket according to `bucketType` and merged `props`.
|
|
36
|
+
*
|
|
37
|
+
* @param scope - Parent construct, typically a {@link Stack}.
|
|
38
|
+
* @param id - Construct ID (stable logical ID segment).
|
|
39
|
+
* @param props - Optional {@link S3SecureBucketProps}; secure defaults override several {@link s3.BucketProps} fields.
|
|
40
|
+
* When `eventBridgeEnabled` is `true`, EventBridge notification is enabled via an L1 property override.
|
|
41
|
+
*/
|
|
42
|
+
constructor(scope: Construct, id: string, props?: S3SecureBucketProps);
|
|
43
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.S3SecureBucket = void 0;
|
|
37
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
38
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
39
|
+
const s3 = __importStar(require("aws-cdk-lib/aws-s3"));
|
|
40
|
+
const bucket_policies_1 = require("./bucket-policies");
|
|
41
|
+
const bucket_types_1 = require("./bucket-types");
|
|
42
|
+
/**
|
|
43
|
+
* S3 bucket with opinionated secure defaults: private ACLs, block public access, TLS-only access,
|
|
44
|
+
* and encryption (S3-managed for log/origin/archive types; KMS-managed by default otherwise).
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* Secure defaults applied regardless of `props`:
|
|
48
|
+
* - `removalPolicy`: {@link RemovalPolicy.RETAIN}
|
|
49
|
+
* - `publicReadAccess`: `false`
|
|
50
|
+
* - `blockPublicAccess`: {@link s3.BlockPublicAccess.BLOCK_ALL}
|
|
51
|
+
* - `enforceSSL`: `true`
|
|
52
|
+
* - `versioned`: `true` unless explicitly set in `props`
|
|
53
|
+
* - `objectOwnership`: {@link s3.ObjectOwnership.BUCKET_OWNER_ENFORCED} unless overridden
|
|
54
|
+
* - `accessControl`: {@link s3.BucketAccessControl.PRIVATE} unless overridden
|
|
55
|
+
*
|
|
56
|
+
* Bucket-type-specific behavior:
|
|
57
|
+
* - {@link S3SecureBucketType.DEPLOYMENT_PIPELINE_ARTIFACT_BUCKET}: may attach a deploy-role policy when a non-default bootstrap qualifier is present.
|
|
58
|
+
* - {@link S3SecureBucketType.ACCESS_LOG_BUCKET}: adds log-writer principals; see {@link S3SecureBucket#accessLogBucketPolicyDependable}.
|
|
59
|
+
* - {@link S3SecureBucketType.CLOUD_WATCH_LOG_ARCHIVE_BUCKET}: adds CloudWatch Logs export principals (`logs.<region>.amazonaws.com`).
|
|
60
|
+
*/
|
|
61
|
+
class S3SecureBucket extends s3.Bucket {
|
|
62
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "s3-secure-bucket.S3SecureBucket", version: "0.4.0" };
|
|
63
|
+
/**
|
|
64
|
+
* Set only when {@link S3SecureBucketProps.bucketType} is {@link S3SecureBucketType.ACCESS_LOG_BUCKET}.
|
|
65
|
+
* Use as a dependency target so load balancer access-log enablement runs after the bucket policy
|
|
66
|
+
* exists (ELB performs an immediate validation `PutObject` that fails if the policy is not applied yet).
|
|
67
|
+
*
|
|
68
|
+
* Example: `loadBalancer.node.addDependency(bucket.accessLogBucketPolicyDependable!)`.
|
|
69
|
+
*
|
|
70
|
+
* @default undefined when `bucketType` is not {@link S3SecureBucketType.ACCESS_LOG_BUCKET}.
|
|
71
|
+
*/
|
|
72
|
+
accessLogBucketPolicyDependable;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a secure S3 bucket according to `bucketType` and merged `props`.
|
|
75
|
+
*
|
|
76
|
+
* @param scope - Parent construct, typically a {@link Stack}.
|
|
77
|
+
* @param id - Construct ID (stable logical ID segment).
|
|
78
|
+
* @param props - Optional {@link S3SecureBucketProps}; secure defaults override several {@link s3.BucketProps} fields.
|
|
79
|
+
* When `eventBridgeEnabled` is `true`, EventBridge notification is enabled via an L1 property override.
|
|
80
|
+
*/
|
|
81
|
+
constructor(scope, id, props) {
|
|
82
|
+
const bucketType = props?.bucketType || bucket_types_1.S3SecureBucketType.DEFAULT_BUCKET;
|
|
83
|
+
super(scope, id, {
|
|
84
|
+
...props,
|
|
85
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
86
|
+
encryption: (0, bucket_types_1.resolveEncryptionDefault)(bucketType, props?.encryption),
|
|
87
|
+
accessControl: (() => {
|
|
88
|
+
if (!props?.accessControl) {
|
|
89
|
+
return s3.BucketAccessControl.PRIVATE;
|
|
90
|
+
}
|
|
91
|
+
return props.accessControl;
|
|
92
|
+
})(),
|
|
93
|
+
eventBridgeEnabled: undefined,
|
|
94
|
+
publicReadAccess: false,
|
|
95
|
+
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
|
|
96
|
+
enforceSSL: true,
|
|
97
|
+
versioned: props?.versioned !== undefined ? props.versioned : true,
|
|
98
|
+
objectOwnership: (() => {
|
|
99
|
+
if (props?.objectOwnership) {
|
|
100
|
+
return props.objectOwnership;
|
|
101
|
+
}
|
|
102
|
+
return s3.ObjectOwnership.BUCKET_OWNER_ENFORCED;
|
|
103
|
+
})(),
|
|
104
|
+
});
|
|
105
|
+
const cfnBucket = this.node.defaultChild;
|
|
106
|
+
if (props?.eventBridgeEnabled === true) {
|
|
107
|
+
cfnBucket.addPropertyOverride('NotificationConfiguration.EventBridgeConfiguration.EventBridgeEnabled', true);
|
|
108
|
+
}
|
|
109
|
+
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
110
|
+
const policyResult = (0, bucket_policies_1.applyBucketPolicies)(bucketType, {
|
|
111
|
+
bucket: this,
|
|
112
|
+
stack,
|
|
113
|
+
});
|
|
114
|
+
this.accessLogBucketPolicyDependable = policyResult.accessLogBucketPolicyDependable;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.S3SecureBucket = S3SecureBucket;
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtc2VjdXJlLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zMy1zZWN1cmUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBbUQ7QUFDbkQsdURBQXlDO0FBRXpDLHVEQUF3RDtBQUN4RCxpREFJd0I7QUFFeEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQWEsY0FBZSxTQUFRLEVBQUUsQ0FBQyxNQUFNOztJQUMzQzs7Ozs7Ozs7T0FRRztJQUNhLCtCQUErQixDQUFlO0lBRTlEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxVQUFVLElBQUksaUNBQWtCLENBQUMsY0FBYyxDQUFDO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTtZQUNuQyxVQUFVLEVBQUUsSUFBQSx1Q0FBd0IsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUNuRSxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUM7b0JBQzFCLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDN0IsQ0FBQyxDQUFDLEVBQUU7WUFDSixrQkFBa0IsRUFBRSxTQUFTO1lBQzdCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7WUFDakQsVUFBVSxFQUFFLElBQUk7WUFDaEIsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ2xFLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQzNCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUM7WUFDbEQsQ0FBQyxDQUFDLEVBQUU7U0FDTCxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQTRCLENBQUM7UUFDekQsSUFBSSxLQUFLLEVBQUUsa0JBQWtCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLHVFQUF1RSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLFlBQVksR0FBRyxJQUFBLHFDQUFtQixFQUFDLFVBQVUsRUFBRTtZQUNuRCxNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUs7U0FDTixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsK0JBQStCLEdBQUcsWUFBWSxDQUFDLCtCQUErQixDQUFDO0lBQ3RGLENBQUM7O0FBeERILHdDQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSURlcGVuZGFibGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGFwcGx5QnVja2V0UG9saWNpZXMgfSBmcm9tICcuL2J1Y2tldC1wb2xpY2llcyc7XG5pbXBvcnQge1xuICByZXNvbHZlRW5jcnlwdGlvbkRlZmF1bHQsXG4gIFMzU2VjdXJlQnVja2V0UHJvcHMsXG4gIFMzU2VjdXJlQnVja2V0VHlwZSxcbn0gZnJvbSAnLi9idWNrZXQtdHlwZXMnO1xuXG4vKipcbiAqIFMzIGJ1Y2tldCB3aXRoIG9waW5pb25hdGVkIHNlY3VyZSBkZWZhdWx0czogcHJpdmF0ZSBBQ0xzLCBibG9jayBwdWJsaWMgYWNjZXNzLCBUTFMtb25seSBhY2Nlc3MsXG4gKiBhbmQgZW5jcnlwdGlvbiAoUzMtbWFuYWdlZCBmb3IgbG9nL29yaWdpbi9hcmNoaXZlIHR5cGVzOyBLTVMtbWFuYWdlZCBieSBkZWZhdWx0IG90aGVyd2lzZSkuXG4gKlxuICogQHJlbWFya3NcbiAqIFNlY3VyZSBkZWZhdWx0cyBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgYHByb3BzYDpcbiAqIC0gYHJlbW92YWxQb2xpY3lgOiB7QGxpbmsgUmVtb3ZhbFBvbGljeS5SRVRBSU59XG4gKiAtIGBwdWJsaWNSZWFkQWNjZXNzYDogYGZhbHNlYFxuICogLSBgYmxvY2tQdWJsaWNBY2Nlc3NgOiB7QGxpbmsgczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMfVxuICogLSBgZW5mb3JjZVNTTGA6IGB0cnVlYFxuICogLSBgdmVyc2lvbmVkYDogYHRydWVgIHVubGVzcyBleHBsaWNpdGx5IHNldCBpbiBgcHJvcHNgXG4gKiAtIGBvYmplY3RPd25lcnNoaXBgOiB7QGxpbmsgczMuT2JqZWN0T3duZXJzaGlwLkJVQ0tFVF9PV05FUl9FTkZPUkNFRH0gdW5sZXNzIG92ZXJyaWRkZW5cbiAqIC0gYGFjY2Vzc0NvbnRyb2xgOiB7QGxpbmsgczMuQnVja2V0QWNjZXNzQ29udHJvbC5QUklWQVRFfSB1bmxlc3Mgb3ZlcnJpZGRlblxuICpcbiAqIEJ1Y2tldC10eXBlLXNwZWNpZmljIGJlaGF2aW9yOlxuICogLSB7QGxpbmsgUzNTZWN1cmVCdWNrZXRUeXBlLkRFUExPWU1FTlRfUElQRUxJTkVfQVJUSUZBQ1RfQlVDS0VUfTogbWF5IGF0dGFjaCBhIGRlcGxveS1yb2xlIHBvbGljeSB3aGVuIGEgbm9uLWRlZmF1bHQgYm9vdHN0cmFwIHF1YWxpZmllciBpcyBwcmVzZW50LlxuICogLSB7QGxpbmsgUzNTZWN1cmVCdWNrZXRUeXBlLkFDQ0VTU19MT0dfQlVDS0VUfTogYWRkcyBsb2ctd3JpdGVyIHByaW5jaXBhbHM7IHNlZSB7QGxpbmsgUzNTZWN1cmVCdWNrZXQjYWNjZXNzTG9nQnVja2V0UG9saWN5RGVwZW5kYWJsZX0uXG4gKiAtIHtAbGluayBTM1NlY3VyZUJ1Y2tldFR5cGUuQ0xPVURfV0FUQ0hfTE9HX0FSQ0hJVkVfQlVDS0VUfTogYWRkcyBDbG91ZFdhdGNoIExvZ3MgZXhwb3J0IHByaW5jaXBhbHMgKGBsb2dzLjxyZWdpb24+LmFtYXpvbmF3cy5jb21gKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzU2VjdXJlQnVja2V0IGV4dGVuZHMgczMuQnVja2V0IHtcbiAgLyoqXG4gICAqIFNldCBvbmx5IHdoZW4ge0BsaW5rIFMzU2VjdXJlQnVja2V0UHJvcHMuYnVja2V0VHlwZX0gaXMge0BsaW5rIFMzU2VjdXJlQnVja2V0VHlwZS5BQ0NFU1NfTE9HX0JVQ0tFVH0uXG4gICAqIFVzZSBhcyBhIGRlcGVuZGVuY3kgdGFyZ2V0IHNvIGxvYWQgYmFsYW5jZXIgYWNjZXNzLWxvZyBlbmFibGVtZW50IHJ1bnMgYWZ0ZXIgdGhlIGJ1Y2tldCBwb2xpY3lcbiAgICogZXhpc3RzIChFTEIgcGVyZm9ybXMgYW4gaW1tZWRpYXRlIHZhbGlkYXRpb24gYFB1dE9iamVjdGAgdGhhdCBmYWlscyBpZiB0aGUgcG9saWN5IGlzIG5vdCBhcHBsaWVkIHlldCkuXG4gICAqXG4gICAqIEV4YW1wbGU6IGBsb2FkQmFsYW5jZXIubm9kZS5hZGREZXBlbmRlbmN5KGJ1Y2tldC5hY2Nlc3NMb2dCdWNrZXRQb2xpY3lEZXBlbmRhYmxlISlgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgd2hlbiBgYnVja2V0VHlwZWAgaXMgbm90IHtAbGluayBTM1NlY3VyZUJ1Y2tldFR5cGUuQUNDRVNTX0xPR19CVUNLRVR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc0xvZ0J1Y2tldFBvbGljeURlcGVuZGFibGU/OiBJRGVwZW5kYWJsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlY3VyZSBTMyBidWNrZXQgYWNjb3JkaW5nIHRvIGBidWNrZXRUeXBlYCBhbmQgbWVyZ2VkIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFBhcmVudCBjb25zdHJ1Y3QsIHR5cGljYWxseSBhIHtAbGluayBTdGFja30uXG4gICAqIEBwYXJhbSBpZCAtIENvbnN0cnVjdCBJRCAoc3RhYmxlIGxvZ2ljYWwgSUQgc2VnbWVudCkuXG4gICAqIEBwYXJhbSBwcm9wcyAtIE9wdGlvbmFsIHtAbGluayBTM1NlY3VyZUJ1Y2tldFByb3BzfTsgc2VjdXJlIGRlZmF1bHRzIG92ZXJyaWRlIHNldmVyYWwge0BsaW5rIHMzLkJ1Y2tldFByb3BzfSBmaWVsZHMuXG4gICAqIFdoZW4gYGV2ZW50QnJpZGdlRW5hYmxlZGAgaXMgYHRydWVgLCBFdmVudEJyaWRnZSBub3RpZmljYXRpb24gaXMgZW5hYmxlZCB2aWEgYW4gTDEgcHJvcGVydHkgb3ZlcnJpZGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFMzU2VjdXJlQnVja2V0UHJvcHMpIHtcbiAgICBjb25zdCBidWNrZXRUeXBlID0gcHJvcHM/LmJ1Y2tldFR5cGUgfHwgUzNTZWN1cmVCdWNrZXRUeXBlLkRFRkFVTFRfQlVDS0VUO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIGVuY3J5cHRpb246IHJlc29sdmVFbmNyeXB0aW9uRGVmYXVsdChidWNrZXRUeXBlLCBwcm9wcz8uZW5jcnlwdGlvbiksXG4gICAgICBhY2Nlc3NDb250cm9sOiAoKCkgPT4ge1xuICAgICAgICBpZiAoIXByb3BzPy5hY2Nlc3NDb250cm9sKSB7XG4gICAgICAgICAgcmV0dXJuIHMzLkJ1Y2tldEFjY2Vzc0NvbnRyb2wuUFJJVkFURTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHMuYWNjZXNzQ29udHJvbDtcbiAgICAgIH0pKCksXG4gICAgICBldmVudEJyaWRnZUVuYWJsZWQ6IHVuZGVmaW5lZCxcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IGZhbHNlLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICB2ZXJzaW9uZWQ6IHByb3BzPy52ZXJzaW9uZWQgIT09IHVuZGVmaW5lZCA/IHByb3BzLnZlcnNpb25lZCA6IHRydWUsXG4gICAgICBvYmplY3RPd25lcnNoaXA6ICgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcz8ub2JqZWN0T3duZXJzaGlwKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm9iamVjdE93bmVyc2hpcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczMuT2JqZWN0T3duZXJzaGlwLkJVQ0tFVF9PV05FUl9FTkZPUkNFRDtcbiAgICAgIH0pKCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBjZm5CdWNrZXQgPSB0aGlzLm5vZGUuZGVmYXVsdENoaWxkIGFzIHMzLkNmbkJ1Y2tldDtcbiAgICBpZiAocHJvcHM/LmV2ZW50QnJpZGdlRW5hYmxlZCA9PT0gdHJ1ZSkge1xuICAgICAgY2ZuQnVja2V0LmFkZFByb3BlcnR5T3ZlcnJpZGUoJ05vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24uRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uLkV2ZW50QnJpZGdlRW5hYmxlZCcsIHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgcG9saWN5UmVzdWx0ID0gYXBwbHlCdWNrZXRQb2xpY2llcyhidWNrZXRUeXBlLCB7XG4gICAgICBidWNrZXQ6IHRoaXMsXG4gICAgICBzdGFjayxcbiAgICB9KTtcbiAgICB0aGlzLmFjY2Vzc0xvZ0J1Y2tldFBvbGljeURlcGVuZGFibGUgPSBwb2xpY3lSZXN1bHQuYWNjZXNzTG9nQnVja2V0UG9saWN5RGVwZW5kYWJsZTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -48,15 +48,15 @@
|
|
|
48
48
|
"eslint-plugin-import": "^2.32.0",
|
|
49
49
|
"jest": "^30.4.2",
|
|
50
50
|
"jest-junit": "^17",
|
|
51
|
-
"jsii": "
|
|
51
|
+
"jsii": "6.0.x",
|
|
52
52
|
"jsii-diff": "^1.138.0",
|
|
53
53
|
"jsii-docgen": "^10.5.0",
|
|
54
54
|
"jsii-pacmak": "^1.138.0",
|
|
55
|
-
"jsii-rosetta": "
|
|
55
|
+
"jsii-rosetta": "6.0.x",
|
|
56
56
|
"projen": "^0.101.11",
|
|
57
57
|
"ts-jest": "^29.4.11",
|
|
58
58
|
"ts-node": "^10.9.2",
|
|
59
|
-
"typescript": "
|
|
59
|
+
"typescript": "6.0.x"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"aws-cdk-lib": "^2.232.0",
|
|
@@ -70,8 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"devEngines": {
|
|
72
72
|
"packageManager": {
|
|
73
|
-
"name": "
|
|
74
|
-
"version": "1.22.22",
|
|
73
|
+
"name": "npm",
|
|
75
74
|
"onFail": "ignore"
|
|
76
75
|
}
|
|
77
76
|
},
|
|
@@ -81,7 +80,7 @@
|
|
|
81
80
|
"publishConfig": {
|
|
82
81
|
"access": "public"
|
|
83
82
|
},
|
|
84
|
-
"version": "0.
|
|
83
|
+
"version": "0.4.0",
|
|
85
84
|
"jest": {
|
|
86
85
|
"coverageProvider": "v8",
|
|
87
86
|
"testMatch": [
|