@composurecdk/sqs 0.8.0 → 0.8.1
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/dist/commonjs/queue-builder.d.ts.map +1 -1
- package/dist/commonjs/queue-builder.js +36 -0
- package/dist/commonjs/queue-builder.js.map +1 -1
- package/dist/esm/queue-builder.d.ts.map +1 -1
- package/dist/esm/queue-builder.js +36 -0
- package/dist/esm/queue-builder.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-builder.d.ts","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queue-builder.d.ts","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAehE;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAE5E,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;;IACzD,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAM;IAGvC,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAC,MAAM,CAAC,GACnF,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIxC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB;CAgBzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createQueueBuilder = createQueueBuilder;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
5
|
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
5
6
|
const core_1 = require("@composurecdk/core");
|
|
6
7
|
const cloudformation_1 = require("@composurecdk/cloudformation");
|
|
7
8
|
const cloudwatch_1 = require("@composurecdk/cloudwatch");
|
|
8
9
|
const queue_alarms_js_1 = require("./queue-alarms.js");
|
|
9
10
|
const defaults_js_1 = require("./defaults.js");
|
|
11
|
+
/**
|
|
12
|
+
* AWS-recommended minimum for `maxReceiveCount` on an SQS redrive
|
|
13
|
+
* policy. A consumer needs a few retries before SQS gives up and
|
|
14
|
+
* forwards the message to the dead-letter queue; anything below this
|
|
15
|
+
* tends to surface as a flood of "poison" messages from transient
|
|
16
|
+
* errors that would have succeeded on retry.
|
|
17
|
+
*
|
|
18
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html
|
|
19
|
+
*/
|
|
20
|
+
const RECOMMENDED_MIN_MAX_RECEIVE_COUNT = 5;
|
|
10
21
|
class QueueBuilder {
|
|
11
22
|
props = {};
|
|
12
23
|
#customAlarms = [];
|
|
@@ -24,6 +35,7 @@ class QueueBuilder {
|
|
|
24
35
|
...defaults_js_1.QUEUE_DEFAULTS,
|
|
25
36
|
...queueProps,
|
|
26
37
|
};
|
|
38
|
+
warnIfLowMaxReceiveCount(scope, id, mergedProps);
|
|
27
39
|
const queue = new aws_sqs_1.Queue(scope, id, mergedProps);
|
|
28
40
|
const alarms = (0, queue_alarms_js_1.createQueueAlarms)(scope, id, queue, alarmConfig, this.#customAlarms);
|
|
29
41
|
return { queue, alarms };
|
|
@@ -57,4 +69,28 @@ class QueueBuilder {
|
|
|
57
69
|
function createQueueBuilder() {
|
|
58
70
|
return (0, cloudformation_1.taggedBuilder)(QueueBuilder);
|
|
59
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Annotates `scope` with a non-fatal warning when a redrive policy is
|
|
74
|
+
* configured with `maxReceiveCount` below the AWS-recommended floor
|
|
75
|
+
* of {@link RECOMMENDED_MIN_MAX_RECEIVE_COUNT}.
|
|
76
|
+
*
|
|
77
|
+
* The builder owns the redrive policy directly, so this is a true
|
|
78
|
+
* check rather than a contextual reminder — the actual configured
|
|
79
|
+
* value is compared. Short-circuits on unresolved tokens so stacks
|
|
80
|
+
* that thread `maxReceiveCount` through CFN parameters aren't spammed.
|
|
81
|
+
*/
|
|
82
|
+
function warnIfLowMaxReceiveCount(scope, id, props) {
|
|
83
|
+
const dlq = props.deadLetterQueue;
|
|
84
|
+
if (!dlq)
|
|
85
|
+
return;
|
|
86
|
+
const maxReceiveCount = dlq.maxReceiveCount;
|
|
87
|
+
if (aws_cdk_lib_1.Token.isUnresolved(maxReceiveCount))
|
|
88
|
+
return;
|
|
89
|
+
if (maxReceiveCount >= RECOMMENDED_MIN_MAX_RECEIVE_COUNT)
|
|
90
|
+
return;
|
|
91
|
+
aws_cdk_lib_1.Annotations.of(scope).addWarningV2("@composurecdk/sqs:redrive-low-max-receive-count", `QueueBuilder "${id}": redrive policy maxReceiveCount is ${String(maxReceiveCount)}; ` +
|
|
92
|
+
`AWS recommends >= ${String(RECOMMENDED_MIN_MAX_RECEIVE_COUNT)} so the consumer ` +
|
|
93
|
+
`has room to retry before messages hit the dead-letter queue. ` +
|
|
94
|
+
`See https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html`);
|
|
95
|
+
}
|
|
60
96
|
//# sourceMappingURL=queue-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-builder.js","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"queue-builder.js","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":";;AA0JA,gDAEC;AA5JD,6CAAiD;AAEjD,iDAA0E;AAE1E,6CAAgE;AAChE,iEAAkF;AAClF,yDAAkE;AAElE,uDAAsD;AACtD,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,MAAM,iCAAiC,GAAG,CAAC,CAAC;AA0E5C,MAAM,YAAY;IAChB,KAAK,GAA+B,EAAE,CAAC;IAC9B,aAAa,GAAqC,EAAE,CAAC;IAE9D,QAAQ,CACN,GAAW,EACX,SAAoF;QAEpF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,mCAAsB,CAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,iBAAU,CAAC,CAAC,MAAoB;QAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAErE,MAAM,WAAW,GAAG;YAClB,GAAG,4BAAc;YACjB,GAAG,UAAU;SACO,CAAC;QAEvB,wBAAwB,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAA,mCAAiB,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,kBAAkB;IAChC,OAAO,IAAA,8BAAa,EAAkC,YAAY,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAC/B,KAAiB,EACjB,EAAU,EACV,KAAiC;IAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,mBAAK,CAAC,YAAY,CAAC,eAAe,CAAC;QAAE,OAAO;IAChD,IAAI,eAAe,IAAI,iCAAiC;QAAE,OAAO;IACjE,yBAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAChC,iDAAiD,EACjD,iBAAiB,EAAE,wCAAwC,MAAM,CAAC,eAAe,CAAC,IAAI;QACpF,qBAAqB,MAAM,CAAC,iCAAiC,CAAC,mBAAmB;QACjF,+DAA+D;QAC/D,gEAAgE,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-builder.d.ts","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queue-builder.d.ts","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAehE;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAE5E,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;;IACzD,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAM;IAGvC,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAC,MAAM,CAAC,GACnF,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIxC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB;CAgBzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { Annotations, Token } from "aws-cdk-lib";
|
|
1
2
|
import { Queue } from "aws-cdk-lib/aws-sqs";
|
|
2
3
|
import { COPY_STATE } from "@composurecdk/core";
|
|
3
4
|
import { taggedBuilder } from "@composurecdk/cloudformation";
|
|
4
5
|
import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
|
|
5
6
|
import { createQueueAlarms } from "./queue-alarms.js";
|
|
6
7
|
import { QUEUE_DEFAULTS } from "./defaults.js";
|
|
8
|
+
/**
|
|
9
|
+
* AWS-recommended minimum for `maxReceiveCount` on an SQS redrive
|
|
10
|
+
* policy. A consumer needs a few retries before SQS gives up and
|
|
11
|
+
* forwards the message to the dead-letter queue; anything below this
|
|
12
|
+
* tends to surface as a flood of "poison" messages from transient
|
|
13
|
+
* errors that would have succeeded on retry.
|
|
14
|
+
*
|
|
15
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html
|
|
16
|
+
*/
|
|
17
|
+
const RECOMMENDED_MIN_MAX_RECEIVE_COUNT = 5;
|
|
7
18
|
class QueueBuilder {
|
|
8
19
|
props = {};
|
|
9
20
|
#customAlarms = [];
|
|
@@ -21,6 +32,7 @@ class QueueBuilder {
|
|
|
21
32
|
...QUEUE_DEFAULTS,
|
|
22
33
|
...queueProps,
|
|
23
34
|
};
|
|
35
|
+
warnIfLowMaxReceiveCount(scope, id, mergedProps);
|
|
24
36
|
const queue = new Queue(scope, id, mergedProps);
|
|
25
37
|
const alarms = createQueueAlarms(scope, id, queue, alarmConfig, this.#customAlarms);
|
|
26
38
|
return { queue, alarms };
|
|
@@ -54,4 +66,28 @@ class QueueBuilder {
|
|
|
54
66
|
export function createQueueBuilder() {
|
|
55
67
|
return taggedBuilder(QueueBuilder);
|
|
56
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Annotates `scope` with a non-fatal warning when a redrive policy is
|
|
71
|
+
* configured with `maxReceiveCount` below the AWS-recommended floor
|
|
72
|
+
* of {@link RECOMMENDED_MIN_MAX_RECEIVE_COUNT}.
|
|
73
|
+
*
|
|
74
|
+
* The builder owns the redrive policy directly, so this is a true
|
|
75
|
+
* check rather than a contextual reminder — the actual configured
|
|
76
|
+
* value is compared. Short-circuits on unresolved tokens so stacks
|
|
77
|
+
* that thread `maxReceiveCount` through CFN parameters aren't spammed.
|
|
78
|
+
*/
|
|
79
|
+
function warnIfLowMaxReceiveCount(scope, id, props) {
|
|
80
|
+
const dlq = props.deadLetterQueue;
|
|
81
|
+
if (!dlq)
|
|
82
|
+
return;
|
|
83
|
+
const maxReceiveCount = dlq.maxReceiveCount;
|
|
84
|
+
if (Token.isUnresolved(maxReceiveCount))
|
|
85
|
+
return;
|
|
86
|
+
if (maxReceiveCount >= RECOMMENDED_MIN_MAX_RECEIVE_COUNT)
|
|
87
|
+
return;
|
|
88
|
+
Annotations.of(scope).addWarningV2("@composurecdk/sqs:redrive-low-max-receive-count", `QueueBuilder "${id}": redrive policy maxReceiveCount is ${String(maxReceiveCount)}; ` +
|
|
89
|
+
`AWS recommends >= ${String(RECOMMENDED_MIN_MAX_RECEIVE_COUNT)} so the consumer ` +
|
|
90
|
+
`has room to retry before messages hit the dead-letter queue. ` +
|
|
91
|
+
`See https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html`);
|
|
92
|
+
}
|
|
57
93
|
//# sourceMappingURL=queue-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-builder.js","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queue-builder.js","sourceRoot":"","sources":["../../src/queue-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAe,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,iCAAiC,GAAG,CAAC,CAAC;AA0E5C,MAAM,YAAY;IAChB,KAAK,GAA+B,EAAE,CAAC;IAC9B,aAAa,GAAqC,EAAE,CAAC;IAE9D,QAAQ,CACN,GAAW,EACX,SAAoF;QAEpF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAoB;QAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAErE,MAAM,WAAW,GAAG;YAClB,GAAG,cAAc;YACjB,GAAG,UAAU;SACO,CAAC;QAEvB,wBAAwB,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,CAAkC,YAAY,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAC/B,KAAiB,EACjB,EAAU,EACV,KAAiC;IAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC;QAAE,OAAO;IAChD,IAAI,eAAe,IAAI,iCAAiC;QAAE,OAAO;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAChC,iDAAiD,EACjD,iBAAiB,EAAE,wCAAwC,MAAM,CAAC,eAAe,CAAC,IAAI;QACpF,qBAAqB,MAAM,CAAC,iCAAiC,CAAC,mBAAmB;QACjF,+DAA+D;QAC/D,gEAAgE,CACnE,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@composurecdk/sqs",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Composable SQS queue builder with well-architected defaults",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"constructs": "^10.0.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@types/node": "^25.
|
|
48
|
-
"aws-cdk-lib": "^2.
|
|
47
|
+
"@types/node": "^25.9.1",
|
|
48
|
+
"aws-cdk-lib": "^2.257.0",
|
|
49
49
|
"constructs": "^10.6.0",
|
|
50
50
|
"typescript": "^6.0.3",
|
|
51
|
-
"vitest": "^4.1.
|
|
51
|
+
"vitest": "^4.1.7"
|
|
52
52
|
},
|
|
53
53
|
"exports": {
|
|
54
54
|
"./package.json": "./package.json",
|