Skip to content

Commit 5078e74

Browse files
committed
rosetta
1 parent a38c7a9 commit 5078e74

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

packages/@aws-cdk/mixins-preview/README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ The `.with()` method is available after importing `@aws-cdk/mixins-preview/with`
5555
5656
## Creating Custom Mixins
5757

58-
Mixins are simple classes that implement the `IMixin` interface:
58+
Mixins are simple classes that implement the `IMixin` interface (usually by extending the abstract `Mixin` class:
5959

6060
```typescript
6161
// Simple mixin that enables versioning
62-
class CustomVersioningMixin implements IMixin {
62+
class CustomVersioningMixin extends Mixin implements IMixin {
6363
supports(construct: any): boolean {
6464
return construct instanceof s3.CfnBucket;
6565
}
@@ -131,7 +131,7 @@ For every CloudFormation resource, CDK Mixins automatically generates type-safe
131131

132132
```typescript
133133
import '@aws-cdk/mixins-preview/with';
134-
import { CfnBucketPropsMixin } from '@aws-cdk/mixins-preview/aws-s3/mixins';
134+
135135

136136
const bucket = new s3.Bucket(scope, "Bucket")
137137
.with(new CfnBucketPropsMixin({
@@ -146,6 +146,8 @@ const bucket = new s3.Bucket(scope, "Bucket")
146146
Property mixins support two merge strategies:
147147

148148
```typescript
149+
declare const bucket: s3.CfnBucket;
150+
149151
// MERGE (default): Deep merges properties with existing values
150152
Mixins.of(bucket).apply(new CfnBucketPropsMixin(
151153
{ versioningConfiguration: { status: "Enabled" } },
@@ -155,16 +157,16 @@ Mixins.of(bucket).apply(new CfnBucketPropsMixin(
155157
// OVERWRITE: Replaces existing property values
156158
Mixins.of(bucket).apply(new CfnBucketPropsMixin(
157159
{ versioningConfiguration: { status: "Enabled" } },
158-
{ strategy: PropertyMergeStrategy.OVERWRITE }
160+
{ strategy: PropertyMergeStrategy.OVERRIDE }
159161
));
160162
```
161163

162164
Property mixins are available for all AWS services:
163165

164166
```typescript
165-
import { CfnLogGroupMixin } from '@aws-cdk/mixins-preview/aws-logs/mixins';
166-
import { CfnFunctionMixin } from '@aws-cdk/mixins-preview/aws-lambda/mixins';
167-
import { CfnTableMixin } from '@aws-cdk/mixins-preview/aws-dynamodb/mixins';
167+
import { CfnLogGroupPropsMixin } from '@aws-cdk/mixins-preview/aws-logs/mixins';
168+
import { CfnFunctionPropsMixin } from '@aws-cdk/mixins-preview/aws-lambda/mixins';
169+
import { CfnTablePropsMixin } from '@aws-cdk/mixins-preview/aws-dynamodb/mixins';
168170
```
169171

170172
## Error Handling

packages/@aws-cdk/mixins-preview/rosetta/default.ts-fixture

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,19 @@ import { Stack, App } from 'aws-cdk-lib/core';
33
import * as s3 from 'aws-cdk-lib/aws-s3';
44
import * as logs from 'aws-cdk-lib/aws-logs';
55
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
6-
import {
7-
Mixins,
8-
ConstructSelector,
9-
IMixin
10-
} from '@aws-cdk/mixins-preview/core';
11-
import {
12-
EncryptionAtRest,
13-
AutoDeleteObjects,
14-
EnableVersioning,
15-
CfnPropertiesMixin
16-
} from '@aws-cdk/mixins-preview/mixins';
6+
import '@aws-cdk/mixins-preview/with';
7+
import { ConstructSelector, Mixins, Mixin, IMixin } from '@aws-cdk/mixins-preview/core';
8+
import { PropertyMergeStrategy } from '@aws-cdk/mixins-preview/mixins';
9+
import { AutoDeleteObjects, EnableVersioning, CfnBucketPropsMixin } from '@aws-cdk/mixins-preview/aws-s3/mixins';
1710

1811
declare const scope: Construct;
1912

20-
class ProductionSecurityMixin implements IMixin {
13+
class ProductionSecurityMixin extends Mixins {
14+
supports(_construct: any): boolean { return true; }
15+
applyTo(construct: any): any { return construct; }
16+
}
17+
18+
class EncryptionAtRest extends Mixins {
2119
supports(_construct: any): boolean { return true; }
2220
applyTo(construct: any): any { return construct; }
2321
}

0 commit comments

Comments
 (0)