@composurecdk/dynamodb 0.11.1 → 0.11.2

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 CHANGED
@@ -94,6 +94,28 @@ createTableBuilder()
94
94
  .encryptionKey(ref<KeyBuilderResult>("tableKey").get("key"));
95
95
  ```
96
96
 
97
+ ## Grants
98
+
99
+ `tableGrants` gives a grantee access to a table — declared on the **grantee**, pointing at the table via a `ref` ([ADR-0013](../../docs/adr/0013-consumer-side-grants.md)). One namespace serves both builders:
100
+
101
+ ```ts
102
+ createFunctionBuilder()
103
+ // ...
104
+ .grant(tableGrants.readWrite(ref<TableV2BuilderResult>("orders").get("table")));
105
+ ```
106
+
107
+ | Capability | Table actions | Key actions |
108
+ | ------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------- |
109
+ | `read` | `GetItem`, `Query`, `Scan`, `BatchGetItem`, … `DescribeTable` | `Decrypt`, `DescribeKey` |
110
+ | `write` | `PutItem`, `UpdateItem`, `DeleteItem`, `BatchWriteItem`, `DescribeTable` | `read`'s, plus `Encrypt`, `ReEncrypt*`, `GenerateDataKey*` |
111
+ | `put` | `PutItem` | as `write` |
112
+ | `readWrite` | `read`'s and `write`'s | as `write` |
113
+ | `fullAccess` | `dynamodb:*` | as `write` |
114
+
115
+ `put` is for a write-once store: its grantee may add items but never update or delete them. It leaves out `BatchWriteItem`, which can delete.
116
+
117
+ Each capability grants the table's customer-managed key, when it has one, in the grantee's identity policy, so a grant stands alone. A key built by [`@composurecdk/kms`](../kms/README.md) keeps CDK's default key policy, which delegates to IAM, so that is enough within the account. Two limits: on a `TableV2` with replicas only the primary Region's key is granted, not a replica's; and a key in another account needs its key policy to allow the grantee.
118
+
97
119
  ## DynamoDB Streams
98
120
 
99
121
  Enable a stream with `.dynamoStream(StreamViewType…)` (TableV2) or `.stream(StreamViewType…)` (classic). The build result surfaces the stream ARN so a downstream component can wire a consumer:
@@ -8,13 +8,23 @@ import { type Grant, type Resolvable } from "@composurecdk/core";
8
8
  *
9
9
  * `ITable` is implemented by both `Table` and `TableV2`, so these helpers serve
10
10
  * either builder's result. Each delegates to the table's native `grant*Data`
11
- * method. See ADR-0013.
11
+ * method, or to `grant` for an action set CDK has no method for. See ADR-0013.
12
+ *
13
+ * Every capability also covers the table's customer-managed key, when it has
14
+ * one, in the grantee's identity policy. On a `TableV2` with replicas that is
15
+ * the primary Region's key only: a replica's key is not granted.
12
16
  */
13
17
  export declare const tableGrants: {
14
18
  /** Read access (`dynamodb:GetItem`, `Query`, `Scan`, …). */
15
19
  read: (table: Resolvable<ITable>) => Grant<IGrantable>;
16
20
  /** Write access (`dynamodb:PutItem`, `UpdateItem`, `DeleteItem`, …). */
17
21
  write: (table: Resolvable<ITable>) => Grant<IGrantable>;
22
+ /**
23
+ * Put items, and nothing else (`dynamodb:PutItem`) — for a write-once store
24
+ * whose writer must not update or delete. `BatchWriteItem` is left out
25
+ * because it can delete.
26
+ */
27
+ put: (table: Resolvable<ITable>) => Grant<IGrantable>;
18
28
  /** Combined read and write access. */
19
29
  readWrite: (table: Resolvable<ITable>) => Grant<IGrantable>;
20
30
  /** Full access to the table and its indexes (`dynamodb:*`). */
@@ -1 +1 @@
1
- {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,KAAK,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQ3E;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;IACtB,4DAA4D;kBAbpD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAiB9C,wEAAwE;mBAjBhE,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAqB9C,sCAAsC;uBArB9B,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAyB9C,+DAA+D;wBAzBvD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;CA6B/C,CAAC"}
1
+ {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,KAAK,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsB3E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;IACtB,4DAA4D;kBA/BpD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAmC9C,wEAAwE;mBAnChE,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAuC9C;;;;OAIG;iBA3CK,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAgD9C,sCAAsC;uBAhD9B,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAoD9C,+DAA+D;wBApDvD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;CAwD/C,CAAC"}
@@ -2,8 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tableGrants = void 0;
4
4
  const core_1 = require("@composurecdk/core");
5
- /** Wraps one of {@link ITable}'s native grant methods as a capability helper. */
5
+ /** Wraps a grant on {@link ITable} as a capability helper. */
6
6
  const capability = (apply) => (table) => (0, core_1.grantVia)(table, apply);
7
+ /**
8
+ * The key actions `grantWriteData` grants on a table's customer-managed key:
9
+ * aws-cdk-lib's `KEY_READ_ACTIONS` and `KEY_WRITE_ACTIONS` from its `perms.ts`,
10
+ * combined. `ITable.grant` grants none, so a capability built on it adds these
11
+ * itself to stand alone as `write` does.
12
+ */
13
+ const KEY_WRITE_ACTIONS = [
14
+ "kms:Decrypt",
15
+ "kms:DescribeKey",
16
+ "kms:Encrypt",
17
+ "kms:ReEncrypt*",
18
+ "kms:GenerateDataKey*",
19
+ ];
7
20
  /**
8
21
  * Consumer-side grant helpers for a DynamoDB table. Pass one to a grantee
9
22
  * builder's `grant(...)` — e.g.
@@ -11,7 +24,11 @@ const capability = (apply) => (table) => (0, core_1.grantVia)(table, apply);
11
24
  *
12
25
  * `ITable` is implemented by both `Table` and `TableV2`, so these helpers serve
13
26
  * either builder's result. Each delegates to the table's native `grant*Data`
14
- * method. See ADR-0013.
27
+ * method, or to `grant` for an action set CDK has no method for. See ADR-0013.
28
+ *
29
+ * Every capability also covers the table's customer-managed key, when it has
30
+ * one, in the grantee's identity policy. On a `TableV2` with replicas that is
31
+ * the primary Region's key only: a replica's key is not granted.
15
32
  */
16
33
  exports.tableGrants = {
17
34
  /** Read access (`dynamodb:GetItem`, `Query`, `Scan`, …). */
@@ -22,6 +39,15 @@ exports.tableGrants = {
22
39
  write: capability((table, grantee) => {
23
40
  table.grantWriteData(grantee);
24
41
  }),
42
+ /**
43
+ * Put items, and nothing else (`dynamodb:PutItem`) — for a write-once store
44
+ * whose writer must not update or delete. `BatchWriteItem` is left out
45
+ * because it can delete.
46
+ */
47
+ put: capability((table, grantee) => {
48
+ table.grant(grantee, "dynamodb:PutItem");
49
+ table.encryptionKey?.grant(grantee, ...KEY_WRITE_ACTIONS);
50
+ }),
25
51
  /** Combined read and write access. */
26
52
  readWrite: capability((table, grantee) => {
27
53
  table.grantReadWriteData(grantee);
@@ -1 +1 @@
1
- {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":";;;AAEA,6CAA2E;AAE3E,iFAAiF;AACjF,MAAM,UAAU,GACd,CAAC,KAAmD,EAAE,EAAE,CACxD,CAAC,KAAyB,EAAqB,EAAE,CAC/C,IAAA,eAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3B;;;;;;;;GAQG;AACU,QAAA,WAAW,GAAG;IACzB,4DAA4D;IAC5D,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,wEAAwE;IACxE,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,sCAAsC;IACtC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":";;;AAEA,6CAA2E;AAE3E,8DAA8D;AAC9D,MAAM,UAAU,GACd,CAAC,KAAmD,EAAE,EAAE,CACxD,CAAC,KAAyB,EAAqB,EAAE,CAC/C,IAAA,eAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG;IACxB,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,sBAAsB;CACvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACU,QAAA,WAAW,GAAG;IACzB,4DAA4D;IAC5D,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,wEAAwE;IACxE,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IACF;;;;OAIG;IACH,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACzC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAC5D,CAAC,CAAC;IACF,sCAAsC;IACtC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;CACH,CAAC"}
@@ -8,13 +8,23 @@ import { type Grant, type Resolvable } from "@composurecdk/core";
8
8
  *
9
9
  * `ITable` is implemented by both `Table` and `TableV2`, so these helpers serve
10
10
  * either builder's result. Each delegates to the table's native `grant*Data`
11
- * method. See ADR-0013.
11
+ * method, or to `grant` for an action set CDK has no method for. See ADR-0013.
12
+ *
13
+ * Every capability also covers the table's customer-managed key, when it has
14
+ * one, in the grantee's identity policy. On a `TableV2` with replicas that is
15
+ * the primary Region's key only: a replica's key is not granted.
12
16
  */
13
17
  export declare const tableGrants: {
14
18
  /** Read access (`dynamodb:GetItem`, `Query`, `Scan`, …). */
15
19
  read: (table: Resolvable<ITable>) => Grant<IGrantable>;
16
20
  /** Write access (`dynamodb:PutItem`, `UpdateItem`, `DeleteItem`, …). */
17
21
  write: (table: Resolvable<ITable>) => Grant<IGrantable>;
22
+ /**
23
+ * Put items, and nothing else (`dynamodb:PutItem`) — for a write-once store
24
+ * whose writer must not update or delete. `BatchWriteItem` is left out
25
+ * because it can delete.
26
+ */
27
+ put: (table: Resolvable<ITable>) => Grant<IGrantable>;
18
28
  /** Combined read and write access. */
19
29
  readWrite: (table: Resolvable<ITable>) => Grant<IGrantable>;
20
30
  /** Full access to the table and its indexes (`dynamodb:*`). */
@@ -1 +1 @@
1
- {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,KAAK,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQ3E;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;IACtB,4DAA4D;kBAbpD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAiB9C,wEAAwE;mBAjBhE,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAqB9C,sCAAsC;uBArB9B,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAyB9C,+DAA+D;wBAzBvD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;CA6B/C,CAAC"}
1
+ {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,KAAK,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsB3E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;IACtB,4DAA4D;kBA/BpD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAmC9C,wEAAwE;mBAnChE,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAuC9C;;;;OAIG;iBA3CK,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAgD9C,sCAAsC;uBAhD9B,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;IAoD9C,+DAA+D;wBApDvD,UAAU,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,UAAU,CAAC;CAwD/C,CAAC"}
@@ -1,6 +1,19 @@
1
1
  import { grantVia } from "@composurecdk/core";
2
- /** Wraps one of {@link ITable}'s native grant methods as a capability helper. */
2
+ /** Wraps a grant on {@link ITable} as a capability helper. */
3
3
  const capability = (apply) => (table) => grantVia(table, apply);
4
+ /**
5
+ * The key actions `grantWriteData` grants on a table's customer-managed key:
6
+ * aws-cdk-lib's `KEY_READ_ACTIONS` and `KEY_WRITE_ACTIONS` from its `perms.ts`,
7
+ * combined. `ITable.grant` grants none, so a capability built on it adds these
8
+ * itself to stand alone as `write` does.
9
+ */
10
+ const KEY_WRITE_ACTIONS = [
11
+ "kms:Decrypt",
12
+ "kms:DescribeKey",
13
+ "kms:Encrypt",
14
+ "kms:ReEncrypt*",
15
+ "kms:GenerateDataKey*",
16
+ ];
4
17
  /**
5
18
  * Consumer-side grant helpers for a DynamoDB table. Pass one to a grantee
6
19
  * builder's `grant(...)` — e.g.
@@ -8,7 +21,11 @@ const capability = (apply) => (table) => grantVia(table, apply);
8
21
  *
9
22
  * `ITable` is implemented by both `Table` and `TableV2`, so these helpers serve
10
23
  * either builder's result. Each delegates to the table's native `grant*Data`
11
- * method. See ADR-0013.
24
+ * method, or to `grant` for an action set CDK has no method for. See ADR-0013.
25
+ *
26
+ * Every capability also covers the table's customer-managed key, when it has
27
+ * one, in the grantee's identity policy. On a `TableV2` with replicas that is
28
+ * the primary Region's key only: a replica's key is not granted.
12
29
  */
13
30
  export const tableGrants = {
14
31
  /** Read access (`dynamodb:GetItem`, `Query`, `Scan`, …). */
@@ -19,6 +36,15 @@ export const tableGrants = {
19
36
  write: capability((table, grantee) => {
20
37
  table.grantWriteData(grantee);
21
38
  }),
39
+ /**
40
+ * Put items, and nothing else (`dynamodb:PutItem`) — for a write-once store
41
+ * whose writer must not update or delete. `BatchWriteItem` is left out
42
+ * because it can delete.
43
+ */
44
+ put: capability((table, grantee) => {
45
+ table.grant(grantee, "dynamodb:PutItem");
46
+ table.encryptionKey?.grant(grantee, ...KEY_WRITE_ACTIONS);
47
+ }),
22
48
  /** Combined read and write access. */
23
49
  readWrite: capability((table, grantee) => {
24
50
  table.grantReadWriteData(grantee);
@@ -1 +1 @@
1
- {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,QAAQ,EAAmB,MAAM,oBAAoB,CAAC;AAE3E,iFAAiF;AACjF,MAAM,UAAU,GACd,CAAC,KAAmD,EAAE,EAAE,CACxD,CAAC,KAAyB,EAAqB,EAAE,CAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,4DAA4D;IAC5D,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,wEAAwE;IACxE,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,sCAAsC;IACtC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/grants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,QAAQ,EAAmB,MAAM,oBAAoB,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,UAAU,GACd,CAAC,KAAmD,EAAE,EAAE,CACxD,CAAC,KAAyB,EAAqB,EAAE,CAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG;IACxB,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,sBAAsB;CACvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,4DAA4D;IAC5D,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,wEAAwE;IACxE,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IACF;;;;OAIG;IACH,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACzC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAC5D,CAAC,CAAC;IACF,sCAAsC;IACtC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@composurecdk/dynamodb",
3
- "version": "0.11.1",
3
+ "version": "0.11.2",
4
4
  "description": "Composable DynamoDB table builder with well-architected defaults",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@composurecdk/cdk-testing": "*",
51
- "@types/node": "^26.6.4",
51
+ "@types/node": "^26.6.5",
52
52
  "aws-cdk-lib": "^2.271.0",
53
53
  "constructs": "^10.8.1",
54
54
  "typescript": "^6.0.3",