alchemy 0.22.4 → 0.24.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/lib/aws/bucket.d.ts.map +1 -1
- package/lib/aws/bucket.js +13 -12
- package/lib/aws/bucket.js.map +1 -1
- package/lib/aws/control/client.d.ts.map +1 -1
- package/lib/aws/control/client.js +5 -3
- package/lib/aws/control/client.js.map +1 -1
- package/lib/aws/control/properties.d.ts +11 -2
- package/lib/aws/control/properties.d.ts.map +1 -1
- package/lib/aws/control/properties.js +96 -19
- package/lib/aws/control/properties.js.map +1 -1
- package/lib/aws/control/resource.d.ts.map +1 -1
- package/lib/aws/control/resource.js +13 -4
- package/lib/aws/control/resource.js.map +1 -1
- package/lib/aws/control/types.d.ts +81069 -0
- package/lib/aws/control/types.d.ts.map +1 -0
- package/lib/aws/control/types.js +4 -0
- package/lib/aws/control/types.js.map +1 -0
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +51 -42
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/index.d.ts +1 -0
- package/lib/aws/index.d.ts.map +1 -1
- package/lib/aws/index.js +1 -0
- package/lib/aws/index.js.map +1 -1
- package/lib/aws/policy-attachment.d.ts.map +1 -1
- package/lib/aws/policy-attachment.js +5 -4
- package/lib/aws/policy-attachment.js.map +1 -1
- package/lib/aws/policy.d.ts.map +1 -1
- package/lib/aws/policy.js +21 -20
- package/lib/aws/policy.js.map +1 -1
- package/lib/aws/queue.d.ts.map +1 -1
- package/lib/aws/queue.js +19 -15
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/retry.d.ts +5 -0
- package/lib/aws/retry.d.ts.map +1 -0
- package/lib/aws/retry.js +27 -0
- package/lib/aws/retry.js.map +1 -0
- package/lib/aws/role.d.ts.map +1 -1
- package/lib/aws/role.js +31 -30
- package/lib/aws/role.js.map +1 -1
- package/lib/aws/ses.d.ts.map +1 -1
- package/lib/aws/ses.js +27 -26
- package/lib/aws/ses.js.map +1 -1
- package/lib/aws/ssm-parameter.d.ts +150 -0
- package/lib/aws/ssm-parameter.d.ts.map +1 -0
- package/lib/aws/ssm-parameter.js +184 -0
- package/lib/aws/ssm-parameter.js.map +1 -0
- package/lib/aws/table.d.ts.map +1 -1
- package/lib/aws/table.js +9 -27
- package/lib/aws/table.js.map +1 -1
- package/lib/cloudflare/account-id.d.ts +1 -0
- package/lib/cloudflare/account-id.d.ts.map +1 -1
- package/lib/cloudflare/account-id.js.map +1 -1
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +22 -2
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/bound.d.ts +1 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/index.d.ts +2 -1
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +2 -1
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts +7 -1
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
- package/lib/cloudflare/queue-consumer.js +14 -0
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts +27 -0
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +23 -0
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/route.d.ts +7 -0
- package/lib/cloudflare/route.d.ts.map +1 -1
- package/lib/cloudflare/route.js +44 -2
- package/lib/cloudflare/route.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +1 -2
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +2 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +20 -9
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/workflow.d.ts +7 -0
- package/lib/cloudflare/workflow.d.ts.map +1 -1
- package/lib/cloudflare/workflow.js +2 -0
- package/lib/cloudflare/workflow.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +1 -0
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +1 -0
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/destroy.js +1 -1
- package/lib/destroy.js.map +1 -1
- package/lib/dns/godaddy.d.ts.map +1 -1
- package/lib/dns/godaddy.js +2 -1
- package/lib/dns/godaddy.js.map +1 -1
- package/lib/fs/file-system-state-store.d.ts.map +1 -1
- package/lib/fs/file-system-state-store.js +14 -2
- package/lib/fs/file-system-state-store.js.map +1 -1
- package/lib/github/secret.d.ts.map +1 -1
- package/lib/github/secret.js +1 -0
- package/lib/github/secret.js.map +1 -1
- package/lib/neon/api.d.ts.map +1 -1
- package/lib/neon/api.js +2 -1
- package/lib/neon/api.js.map +1 -1
- package/lib/runtime/shims.d.ts +6 -0
- package/lib/runtime/shims.d.ts.map +1 -0
- package/lib/runtime/shims.js +27 -0
- package/lib/runtime/shims.js.map +1 -0
- package/lib/sentry/api.d.ts.map +1 -1
- package/lib/sentry/api.js +2 -1
- package/lib/sentry/api.js.map +1 -1
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +1 -7
- package/lib/test/bun.js.map +1 -1
- package/lib/test/prune.d.ts +2 -1
- package/lib/test/prune.d.ts.map +1 -1
- package/lib/test/prune.js +29 -5
- package/lib/test/prune.js.map +1 -1
- package/lib/test/vitest.d.ts +92 -0
- package/lib/test/vitest.d.ts.map +1 -0
- package/lib/test/vitest.js +94 -0
- package/lib/test/vitest.js.map +1 -0
- package/lib/upstash/api.d.ts.map +1 -1
- package/lib/upstash/api.js +2 -1
- package/lib/upstash/api.js.map +1 -1
- package/lib/util/retry.js +2 -2
- package/lib/util/retry.js.map +1 -1
- package/lib/util/safe-fetch.d.ts +2 -0
- package/lib/util/safe-fetch.d.ts.map +1 -0
- package/lib/util/safe-fetch.js +49 -0
- package/lib/util/safe-fetch.js.map +1 -0
- package/lib/vercel/api.d.ts.map +1 -1
- package/lib/vercel/api.js +2 -1
- package/lib/vercel/api.js.map +1 -1
- package/lib/web/vitepress/process-front-matter-files.d.ts.map +1 -1
- package/lib/web/vitepress/process-front-matter-files.js +11 -7
- package/lib/web/vitepress/process-front-matter-files.js.map +1 -1
- package/package.json +10 -6
- package/src/alchemy.ts +2 -2
- package/src/aws/bucket.ts +55 -36
- package/src/aws/control/client.ts +13 -13
- package/src/aws/control/properties.ts +96 -19
- package/src/aws/control/resource.ts +19 -3
- package/src/aws/control/types.ts +87235 -0
- package/src/aws/function.ts +233 -178
- package/src/aws/index.ts +1 -0
- package/src/aws/policy-attachment.ts +15 -10
- package/src/aws/policy.ts +75 -54
- package/src/aws/queue.ts +53 -36
- package/src/aws/retry.ts +38 -0
- package/src/aws/role.ts +121 -90
- package/src/aws/ses.ts +101 -73
- package/src/aws/ssm-parameter.ts +315 -0
- package/src/aws/table.ts +61 -90
- package/src/cloudflare/account-id.ts +2 -0
- package/src/cloudflare/api.ts +26 -3
- package/src/cloudflare/bound.ts +1 -1
- package/src/cloudflare/index.ts +2 -1
- package/src/cloudflare/queue-consumer.ts +27 -1
- package/src/cloudflare/queue.ts +29 -0
- package/src/cloudflare/route.ts +86 -2
- package/src/cloudflare/worker-metadata.ts +1 -2
- package/src/cloudflare/worker.ts +24 -10
- package/src/cloudflare/workflow.ts +8 -0
- package/src/cloudflare/wrangler.json.ts +8 -1
- package/src/destroy.ts +1 -1
- package/src/dns/godaddy.ts +3 -1
- package/src/fs/file-system-state-store.ts +16 -2
- package/src/github/secret.ts +2 -0
- package/src/neon/api.ts +2 -1
- package/src/sentry/api.ts +2 -1
- package/src/test/bun.ts +1 -7
- package/src/test/prune.ts +31 -4
- package/src/test/vitest.ts +209 -0
- package/src/upstash/api.ts +2 -1
- package/src/util/retry.ts +3 -3
- package/src/util/safe-fetch.ts +62 -0
- package/src/vercel/api.ts +2 -1
- package/src/web/vitepress/process-front-matter-files.ts +15 -7
- package/src/aws/control/types.d.ts +0 -85129
package/lib/aws/queue.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CreateQueueCommand, DeleteQueueCommand, GetQueueAttributesCommand, GetQueueUrlCommand, QueueDeletedRecently, QueueDoesNotExist, SQSClient, } from "@aws-sdk/client-sqs";
|
|
2
2
|
import { Resource } from "../resource.js";
|
|
3
|
+
import { retry } from "./retry.js";
|
|
3
4
|
/**
|
|
4
5
|
* AWS SQS Queue Resource
|
|
5
6
|
*
|
|
@@ -50,20 +51,22 @@ export const Queue = Resource("sqs::Queue", async function (_id, props) {
|
|
|
50
51
|
if (this.phase === "delete") {
|
|
51
52
|
try {
|
|
52
53
|
// Get queue URL first
|
|
53
|
-
const urlResponse = await client.send(new GetQueueUrlCommand({
|
|
54
|
+
const urlResponse = await retry(() => client.send(new GetQueueUrlCommand({
|
|
54
55
|
QueueName: queueName,
|
|
55
|
-
}));
|
|
56
|
+
})));
|
|
56
57
|
// Delete the queue
|
|
57
|
-
await client.send(new DeleteQueueCommand({
|
|
58
|
+
await retry(() => client.send(new DeleteQueueCommand({
|
|
58
59
|
QueueUrl: urlResponse.QueueUrl,
|
|
59
|
-
}));
|
|
60
|
+
})));
|
|
60
61
|
// Wait for queue to be deleted
|
|
61
62
|
let queueDeleted = false;
|
|
62
63
|
while (!queueDeleted) {
|
|
63
64
|
try {
|
|
64
|
-
await
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
await retry(() => {
|
|
66
|
+
return client.send(new GetQueueUrlCommand({
|
|
67
|
+
QueueName: queueName,
|
|
68
|
+
}));
|
|
69
|
+
});
|
|
67
70
|
// If we get here, queue still exists
|
|
68
71
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
69
72
|
}
|
|
@@ -78,6 +81,7 @@ export const Queue = Resource("sqs::Queue", async function (_id, props) {
|
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
83
|
catch (error) {
|
|
84
|
+
console.log(error.message);
|
|
81
85
|
if (!isQueueDoesNotExist(error)) {
|
|
82
86
|
throw error;
|
|
83
87
|
}
|
|
@@ -122,16 +126,16 @@ export const Queue = Resource("sqs::Queue", async function (_id, props) {
|
|
|
122
126
|
: undefined;
|
|
123
127
|
try {
|
|
124
128
|
// Create the queue
|
|
125
|
-
const createResponse = await client.send(new CreateQueueCommand({
|
|
129
|
+
const createResponse = await retry(() => client.send(new CreateQueueCommand({
|
|
126
130
|
QueueName: queueName,
|
|
127
131
|
Attributes: attributes,
|
|
128
132
|
tags,
|
|
129
|
-
}));
|
|
133
|
+
})), (err) => isQueueDeletedRecently(err));
|
|
130
134
|
// Get queue attributes
|
|
131
|
-
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
135
|
+
const attributesResponse = await retry(() => client.send(new GetQueueAttributesCommand({
|
|
132
136
|
QueueUrl: createResponse.QueueUrl,
|
|
133
137
|
AttributeNames: ["QueueArn"],
|
|
134
|
-
}));
|
|
138
|
+
})));
|
|
135
139
|
return this({
|
|
136
140
|
...props,
|
|
137
141
|
arn: attributesResponse.Attributes.QueueArn,
|
|
@@ -149,16 +153,16 @@ export const Queue = Resource("sqs::Queue", async function (_id, props) {
|
|
|
149
153
|
// Wait for 1 second before retrying
|
|
150
154
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
151
155
|
// Retry creating the queue
|
|
152
|
-
const createResponse = await client.send(new CreateQueueCommand({
|
|
156
|
+
const createResponse = await retry(() => client.send(new CreateQueueCommand({
|
|
153
157
|
QueueName: queueName,
|
|
154
158
|
Attributes: attributes,
|
|
155
159
|
tags,
|
|
156
|
-
}));
|
|
160
|
+
})));
|
|
157
161
|
// Get queue attributes
|
|
158
|
-
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
162
|
+
const attributesResponse = await retry(() => client.send(new GetQueueAttributesCommand({
|
|
159
163
|
QueueUrl: createResponse.QueueUrl,
|
|
160
164
|
AttributeNames: ["QueueArn"],
|
|
161
|
-
}));
|
|
165
|
+
})));
|
|
162
166
|
return this({
|
|
163
167
|
...props,
|
|
164
168
|
arn: attributesResponse.Attributes.QueueArn,
|
package/lib/aws/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/aws/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/aws/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAuFnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAC3B,YAAY,EACZ,KAAK,WAEH,GAAW,EACX,KAAiB;IAEjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,8CAA8C;IAC9C,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CACnC,MAAM,CAAC,IAAI,CACT,IAAI,kBAAkB,CAAC;gBACrB,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CACF,CAAC;YAEF,mBAAmB;YACnB,MAAM,KAAK,CAAC,GAAG,EAAE,CACf,MAAM,CAAC,IAAI,CACT,IAAI,kBAAkB,CAAC;gBACrB,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,CAAC,CACH,CACF,CAAC;YAEF,+BAA+B;YAC/B,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,OAAO,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,GAAG,EAAE;wBACf,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,kBAAkB,CAAC;4BACrB,SAAS,EAAE,SAAS;yBACrB,CAAC,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,qCAAqC;oBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IACD,+BAA+B;IAC/B,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAC/C,UAAU,CAAC,sBAAsB;YAC/B,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC3C,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;QACtD,UAAU,CAAC,6BAA6B;YACtC,KAAK,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;QAC9B,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;YACpC,UAAU,CAAC,yBAAyB,GAAG,MAAM,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC9B,UAAU,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;QACrB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EACjD,EAAE,CACH;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,EAAE,CACH,MAAM,CAAC,IAAI,CACT,IAAI,kBAAkB,CAAC;YACrB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;YACtB,IAAI;SACL,CAAC,CACH,EACH,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CACrC,CAAC;QAEF,uBAAuB;QACvB,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAC1C,MAAM,CAAC,IAAI,CACT,IAAI,yBAAyB,CAAC;YAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,cAAc,EAAE,CAAC,UAAU,CAAC;SAC7B,CAAC,CACH,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;YACV,GAAG,KAAK;YACR,GAAG,EAAE,kBAAkB,CAAC,UAAW,CAAC,QAAS;YAC7C,GAAG,EAAE,cAAc,CAAC,QAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CACT,UAAU,SAAS,yEAAyE,CAC7F,CAAC;YACF,6CAA6C;YAC7C,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,OAAO,UAAU,GAAG,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,oCAAoC;oBACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAE1D,2BAA2B;oBAC3B,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CACtC,MAAM,CAAC,IAAI,CACT,IAAI,kBAAkB,CAAC;wBACrB,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,UAAU;wBACtB,IAAI;qBACL,CAAC,CACH,CACF,CAAC;oBAEF,uBAAuB;oBACvB,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAC1C,MAAM,CAAC,IAAI,CACT,IAAI,yBAAyB,CAAC;wBAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,cAAc,EAAE,CAAC,UAAU,CAAC;qBAC7B,CAAC,CACH,CACF,CAAC;oBAEF,OAAO,IAAI,CAAC;wBACV,GAAG,KAAK;wBACR,GAAG,EAAE,kBAAkB,CAAC,UAAW,CAAC,QAAS;wBAC7C,GAAG,EAAE,cAAc,CAAC,QAAS;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,IACE,CAAC,sBAAsB,CAAC,UAAU,CAAC;wBACnC,UAAU,KAAK,UAAU,GAAG,CAAC,EAC7B,CAAC;wBACD,MAAM,UAAU,CAAC;oBACnB,CAAC;oBACD,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,mBAAmB,CAAC,KAAU;IACrC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,mBAAmB;QAClC,KAAK,CAAC,IAAI,KAAK,yCAAyC;QACxD,KAAK,YAAY,iBAAiB,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAU;IACxC,OAAO,CACL,KAAK,YAAY,oBAAoB;QACrC,KAAK,CAAC,IAAI,KAAK,6CAA6C;QAC5D,KAAK,CAAC,IAAI,KAAK,sBAAsB,CACtC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/aws/retry.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EACrB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,GAC9C,OAAO,CAAC,CAAC,CAAC,CAOZ"}
|
package/lib/aws/retry.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { withExponentialBackoff } from "../util/retry.js";
|
|
2
|
+
/**
|
|
3
|
+
* Check if an error is retryable (throttling/rate limiting)
|
|
4
|
+
*/
|
|
5
|
+
function isRetryableError(error) {
|
|
6
|
+
if (!error)
|
|
7
|
+
return false;
|
|
8
|
+
const errorCode = error.name || error.code || "";
|
|
9
|
+
const errorMessage = error.message || "";
|
|
10
|
+
// Check for common AWS throttling error codes and messages
|
|
11
|
+
return (errorCode === "Throttling" ||
|
|
12
|
+
errorCode === "ThrottlingException" ||
|
|
13
|
+
errorCode === "TooManyRequestsException" ||
|
|
14
|
+
errorCode === "RequestLimitExceeded" ||
|
|
15
|
+
errorMessage.includes("Rate exceeded") ||
|
|
16
|
+
errorMessage.includes("throttling") ||
|
|
17
|
+
errorMessage.includes("Throttling") ||
|
|
18
|
+
errorMessage.includes("Internal server error"));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Retry function with standardized parameters for AWS throttling
|
|
22
|
+
*/
|
|
23
|
+
export function retry(operation, extraIsRetryableError) {
|
|
24
|
+
return withExponentialBackoff(operation, (err) => isRetryableError(err) || extraIsRetryableError?.(err) || false, 10, // max attempts
|
|
25
|
+
1000);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/aws/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAEzC,2DAA2D;IAC3D,OAAO,CACL,SAAS,KAAK,YAAY;QAC1B,SAAS,KAAK,qBAAqB;QACnC,SAAS,KAAK,0BAA0B;QACxC,SAAS,KAAK,sBAAsB;QACpC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,SAA2B,EAC3B,qBAA+C;IAE/C,OAAO,sBAAsB,CAC3B,SAAS,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EACvE,EAAE,EAAE,eAAe;IACnB,IAAI,CACL,CAAC;AACJ,CAAC"}
|
package/lib/aws/role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/aws/role.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/aws/role.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,gBAAgB,EAAE,cAAc,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC,CAAC;IAEH;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS;IAC5D;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHG;AACH,eAAO,MAAM,IAAI,yFAGP,OAAO,CAAC,IAAI,CAAC,OACd,MAAM,SACJ,SAAS,KACf,OAAO,CAAC,IAAI,CAAC,CAgTjB,CAAC"}
|
package/lib/aws/role.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AttachRolePolicyCommand, CreateRoleCommand, DeleteRoleCommand, DeleteRolePolicyCommand, DetachRolePolicyCommand, EntityAlreadyExistsException, GetRoleCommand, IAMClient, ListAttachedRolePoliciesCommand, NoSuchEntityException, PutRolePolicyCommand, TagRoleCommand, UpdateAssumeRolePolicyCommand, UpdateRoleCommand, } from "@aws-sdk/client-iam";
|
|
2
2
|
import { Resource } from "../resource.js";
|
|
3
3
|
import { ignore } from "../util/ignore.js";
|
|
4
|
+
import { retry } from "./retry.js";
|
|
4
5
|
/**
|
|
5
6
|
* AWS IAM Role Resource
|
|
6
7
|
*
|
|
@@ -122,25 +123,25 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
122
123
|
// Delete any inline policies first
|
|
123
124
|
if (props.policies) {
|
|
124
125
|
for (const policy of props.policies) {
|
|
125
|
-
await ignore(NoSuchEntityException.name, () => client.send(new DeleteRolePolicyCommand({
|
|
126
|
+
await ignore(NoSuchEntityException.name, () => retry(() => client.send(new DeleteRolePolicyCommand({
|
|
126
127
|
RoleName: props.roleName,
|
|
127
128
|
PolicyName: policy.policyName,
|
|
128
|
-
})));
|
|
129
|
+
}))));
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
// We need to detach managed policies before deleting the role
|
|
132
133
|
// First, get all attached policies
|
|
133
134
|
try {
|
|
134
|
-
const attachedPoliciesResponse = await client.send(new ListAttachedRolePoliciesCommand({
|
|
135
|
+
const attachedPoliciesResponse = await retry(() => client.send(new ListAttachedRolePoliciesCommand({
|
|
135
136
|
RoleName: props.roleName,
|
|
136
|
-
}));
|
|
137
|
+
})));
|
|
137
138
|
// Detach all managed policies
|
|
138
139
|
const attachedPolicies = attachedPoliciesResponse.AttachedPolicies || [];
|
|
139
140
|
for (const policy of attachedPolicies) {
|
|
140
|
-
await ignore(NoSuchEntityException.name, () => client.send(new DetachRolePolicyCommand({
|
|
141
|
+
await ignore(NoSuchEntityException.name, () => retry(() => client.send(new DetachRolePolicyCommand({
|
|
141
142
|
RoleName: props.roleName,
|
|
142
143
|
PolicyArn: policy.PolicyArn,
|
|
143
|
-
})));
|
|
144
|
+
}))));
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
147
|
catch (error) {
|
|
@@ -150,9 +151,9 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
150
151
|
// Role doesn't exist, no need to continue with detaching policies
|
|
151
152
|
}
|
|
152
153
|
// Try to delete the role, ignoring if it doesn't exist
|
|
153
|
-
await ignore(NoSuchEntityException.name, () => client.send(new DeleteRoleCommand({
|
|
154
|
+
await ignore(NoSuchEntityException.name, () => retry(() => client.send(new DeleteRoleCommand({
|
|
154
155
|
RoleName: props.roleName,
|
|
155
|
-
})));
|
|
156
|
+
}))));
|
|
156
157
|
}
|
|
157
158
|
catch (error) {
|
|
158
159
|
// If we get any other error besides NoSuchEntityException, log it but don't fail
|
|
@@ -169,7 +170,7 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
169
170
|
try {
|
|
170
171
|
if (this.phase === "create") {
|
|
171
172
|
// Try to create the role
|
|
172
|
-
await client.send(new CreateRoleCommand({
|
|
173
|
+
await retry(() => client.send(new CreateRoleCommand({
|
|
173
174
|
RoleName: props.roleName,
|
|
174
175
|
AssumeRolePolicyDocument: assumeRolePolicyDocument,
|
|
175
176
|
Description: props.description,
|
|
@@ -190,16 +191,16 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
190
191
|
Value: this.id,
|
|
191
192
|
},
|
|
192
193
|
],
|
|
193
|
-
}));
|
|
194
|
+
})));
|
|
194
195
|
}
|
|
195
196
|
}
|
|
196
197
|
catch (error) {
|
|
197
198
|
if (error instanceof EntityAlreadyExistsException &&
|
|
198
199
|
this.phase === "create") {
|
|
199
200
|
// Check if we were the ones who created it
|
|
200
|
-
const existingRole = await client.send(new GetRoleCommand({
|
|
201
|
+
const existingRole = await retry(() => client.send(new GetRoleCommand({
|
|
201
202
|
RoleName: props.roleName,
|
|
202
|
-
}));
|
|
203
|
+
})));
|
|
203
204
|
const roleTags = existingRole.Role?.Tags?.reduce((acc, tag) => {
|
|
204
205
|
acc[tag.Key] = tag.Value;
|
|
205
206
|
return acc;
|
|
@@ -214,24 +215,24 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
214
215
|
}
|
|
215
216
|
}
|
|
216
217
|
// Get or update the role
|
|
217
|
-
role = await client.send(new GetRoleCommand({
|
|
218
|
+
role = await retry(() => client.send(new GetRoleCommand({
|
|
218
219
|
RoleName: props.roleName,
|
|
219
|
-
}));
|
|
220
|
+
})));
|
|
220
221
|
// Update assume role policy if it changed
|
|
221
222
|
if (role.Role?.AssumeRolePolicyDocument !== assumeRolePolicyDocument) {
|
|
222
|
-
await client.send(new UpdateAssumeRolePolicyCommand({
|
|
223
|
+
await retry(() => client.send(new UpdateAssumeRolePolicyCommand({
|
|
223
224
|
RoleName: props.roleName,
|
|
224
225
|
PolicyDocument: assumeRolePolicyDocument,
|
|
225
|
-
}));
|
|
226
|
+
})));
|
|
226
227
|
}
|
|
227
228
|
// Update role description and max session duration if they changed
|
|
228
229
|
if (role.Role?.Description !== props.description ||
|
|
229
230
|
role.Role?.MaxSessionDuration !== props.maxSessionDuration) {
|
|
230
|
-
await client.send(new UpdateRoleCommand({
|
|
231
|
+
await retry(() => client.send(new UpdateRoleCommand({
|
|
231
232
|
RoleName: props.roleName,
|
|
232
233
|
Description: props.description,
|
|
233
234
|
MaxSessionDuration: props.maxSessionDuration,
|
|
234
|
-
}));
|
|
235
|
+
})));
|
|
235
236
|
}
|
|
236
237
|
// Update tags
|
|
237
238
|
const newTags = {
|
|
@@ -243,20 +244,20 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
243
244
|
Key,
|
|
244
245
|
Value,
|
|
245
246
|
}));
|
|
246
|
-
await client.send(new TagRoleCommand({
|
|
247
|
+
await retry(() => client.send(new TagRoleCommand({
|
|
247
248
|
RoleName: props.roleName,
|
|
248
249
|
Tags: tags,
|
|
249
|
-
}));
|
|
250
|
+
})));
|
|
250
251
|
// Handle policy changes
|
|
251
252
|
const previousPolicies = this.phase === "update" ? this.output.policies || [] : [];
|
|
252
253
|
const currentPolicies = props.policies || [];
|
|
253
254
|
// Delete policies that were removed
|
|
254
255
|
for (const oldPolicy of previousPolicies) {
|
|
255
256
|
if (!currentPolicies.some((p) => p.policyName === oldPolicy.policyName)) {
|
|
256
|
-
await ignore(NoSuchEntityException.name, () => client.send(new DeleteRolePolicyCommand({
|
|
257
|
+
await ignore(NoSuchEntityException.name, () => retry(() => client.send(new DeleteRolePolicyCommand({
|
|
257
258
|
RoleName: props.roleName,
|
|
258
259
|
PolicyName: oldPolicy.policyName,
|
|
259
|
-
})));
|
|
260
|
+
}))));
|
|
260
261
|
}
|
|
261
262
|
}
|
|
262
263
|
// Update or create policies
|
|
@@ -265,18 +266,18 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
265
266
|
if (!oldPolicy ||
|
|
266
267
|
JSON.stringify(oldPolicy.policyDocument) !==
|
|
267
268
|
JSON.stringify(policy.policyDocument)) {
|
|
268
|
-
await client.send(new PutRolePolicyCommand({
|
|
269
|
+
await retry(() => client.send(new PutRolePolicyCommand({
|
|
269
270
|
RoleName: props.roleName,
|
|
270
271
|
PolicyName: policy.policyName,
|
|
271
272
|
PolicyDocument: JSON.stringify(policy.policyDocument),
|
|
272
|
-
}));
|
|
273
|
+
})));
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
// Handle managed policy attachments
|
|
276
277
|
// Get currently attached policies
|
|
277
|
-
const attachedPoliciesResponse = await client.send(new ListAttachedRolePoliciesCommand({
|
|
278
|
+
const attachedPoliciesResponse = await retry(() => client.send(new ListAttachedRolePoliciesCommand({
|
|
278
279
|
RoleName: props.roleName,
|
|
279
|
-
}));
|
|
280
|
+
})));
|
|
280
281
|
const currentAttachedPolicies = attachedPoliciesResponse.AttachedPolicies || [];
|
|
281
282
|
const currentPolicyArns = currentAttachedPolicies.map((p) => p.PolicyArn);
|
|
282
283
|
// If we're updating, use an empty array as default when managedPolicyArns is undefined
|
|
@@ -285,19 +286,19 @@ export const Role = Resource("iam::Role", async function (_id, props) {
|
|
|
285
286
|
// Detach policies that are no longer needed
|
|
286
287
|
for (const policyArn of currentPolicyArns) {
|
|
287
288
|
if (!desiredPolicyArns.includes(policyArn)) {
|
|
288
|
-
await client.send(new DetachRolePolicyCommand({
|
|
289
|
+
await retry(() => client.send(new DetachRolePolicyCommand({
|
|
289
290
|
RoleName: props.roleName,
|
|
290
291
|
PolicyArn: policyArn,
|
|
291
|
-
}));
|
|
292
|
+
})));
|
|
292
293
|
}
|
|
293
294
|
}
|
|
294
295
|
// Attach new policies that weren't attached before
|
|
295
296
|
for (const policyArn of desiredPolicyArns) {
|
|
296
297
|
if (!currentPolicyArns.includes(policyArn)) {
|
|
297
|
-
await client.send(new AttachRolePolicyCommand({
|
|
298
|
+
await retry(() => client.send(new AttachRolePolicyCommand({
|
|
298
299
|
RoleName: props.roleName,
|
|
299
300
|
PolicyArn: policyArn,
|
|
300
|
-
}));
|
|
301
|
+
})));
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
304
|
if (!role?.Role) {
|
package/lib/aws/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/aws/role.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,cAAc,EACd,SAAS,EACT,+BAA+B,EAC/B,qBAAqB,EACrB,oBAAoB,EAEpB,cAAc,EACd,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/aws/role.ts"],"names":[],"mappings":"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"}
|
package/lib/aws/ses.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ses.d.ts","sourceRoot":"","sources":["../../src/aws/ses.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EAUpB,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ses.d.ts","sourceRoot":"","sources":["../../src/aws/ses.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EAUpB,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,GAAI,SAAQ,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ;IACzD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAEzC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,GAAG,yFAGN,OAAO,CAAC,GAAG,CAAC,OACb,MAAM,SACJ,QAAQ,KACd,OAAO,CAAC,GAAG,CAAC,CAqPhB,CAAC"}
|
package/lib/aws/ses.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CreateConfigurationSetCommand, CreateEmailIdentityCommand, DeleteConfigurationSetCommand, DeleteEmailIdentityCommand, GetConfigurationSetCommand, GetEmailIdentityCommand, NotFoundException, PutConfigurationSetDeliveryOptionsCommand, PutConfigurationSetReputationOptionsCommand, PutConfigurationSetSendingOptionsCommand, PutConfigurationSetSuppressionOptionsCommand, PutConfigurationSetTrackingOptionsCommand, PutEmailIdentityDkimAttributesCommand, SESv2Client, } from "@aws-sdk/client-sesv2";
|
|
2
2
|
import { Resource } from "../resource.js";
|
|
3
3
|
import { ignore } from "../util/ignore.js";
|
|
4
|
+
import { retry } from "./retry.js";
|
|
4
5
|
/**
|
|
5
6
|
* AWS SES Resource
|
|
6
7
|
*
|
|
@@ -56,15 +57,15 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
56
57
|
const output = this.output;
|
|
57
58
|
// Delete configuration set if it exists
|
|
58
59
|
if (output?.configurationSetName) {
|
|
59
|
-
await ignore(NotFoundException.name, () => client.send(new DeleteConfigurationSetCommand({
|
|
60
|
+
await ignore(NotFoundException.name, () => retry(() => client.send(new DeleteConfigurationSetCommand({
|
|
60
61
|
ConfigurationSetName: output.configurationSetName,
|
|
61
|
-
})));
|
|
62
|
+
}))));
|
|
62
63
|
}
|
|
63
64
|
// Delete email identity if it exists
|
|
64
65
|
if (output?.emailIdentity) {
|
|
65
|
-
await ignore(NotFoundException.name, () => client.send(new DeleteEmailIdentityCommand({
|
|
66
|
+
await ignore(NotFoundException.name, () => retry(() => client.send(new DeleteEmailIdentityCommand({
|
|
66
67
|
EmailIdentity: output.emailIdentity,
|
|
67
|
-
})));
|
|
68
|
+
}))));
|
|
68
69
|
}
|
|
69
70
|
// Return empty output for delete
|
|
70
71
|
return this.destroy();
|
|
@@ -79,9 +80,9 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
79
80
|
// Check if configuration set exists
|
|
80
81
|
let configSetExists = false;
|
|
81
82
|
try {
|
|
82
|
-
await client.send(new GetConfigurationSetCommand({
|
|
83
|
+
await retry(() => client.send(new GetConfigurationSetCommand({
|
|
83
84
|
ConfigurationSetName: props.configurationSetName,
|
|
84
|
-
}));
|
|
85
|
+
})));
|
|
85
86
|
configSetExists = true;
|
|
86
87
|
}
|
|
87
88
|
catch (error) {
|
|
@@ -95,42 +96,42 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
95
96
|
if (configSetExists) {
|
|
96
97
|
// Update existing configuration set using appropriate update commands
|
|
97
98
|
if (props.sendingOptions) {
|
|
98
|
-
await client.send(new PutConfigurationSetSendingOptionsCommand({
|
|
99
|
+
await retry(() => client.send(new PutConfigurationSetSendingOptionsCommand({
|
|
99
100
|
ConfigurationSetName: props.configurationSetName,
|
|
100
101
|
SendingEnabled: props.sendingOptions.SendingEnabled,
|
|
101
|
-
}));
|
|
102
|
+
})));
|
|
102
103
|
}
|
|
103
104
|
if (props.reputationOptions) {
|
|
104
|
-
await client.send(new PutConfigurationSetReputationOptionsCommand({
|
|
105
|
+
await retry(() => client.send(new PutConfigurationSetReputationOptionsCommand({
|
|
105
106
|
ConfigurationSetName: props.configurationSetName,
|
|
106
107
|
ReputationMetricsEnabled: props.reputationOptions.ReputationMetricsEnabled,
|
|
107
|
-
}));
|
|
108
|
+
})));
|
|
108
109
|
}
|
|
109
110
|
if (props.trackingOptions) {
|
|
110
|
-
await client.send(new PutConfigurationSetTrackingOptionsCommand({
|
|
111
|
+
await retry(() => client.send(new PutConfigurationSetTrackingOptionsCommand({
|
|
111
112
|
ConfigurationSetName: props.configurationSetName,
|
|
112
113
|
CustomRedirectDomain: props.trackingOptions.CustomRedirectDomain,
|
|
113
|
-
}));
|
|
114
|
+
})));
|
|
114
115
|
}
|
|
115
116
|
if (props.suppressionOptions) {
|
|
116
|
-
await client.send(new PutConfigurationSetSuppressionOptionsCommand({
|
|
117
|
+
await retry(() => client.send(new PutConfigurationSetSuppressionOptionsCommand({
|
|
117
118
|
ConfigurationSetName: props.configurationSetName,
|
|
118
119
|
SuppressedReasons: props.suppressionOptions.SuppressedReasons,
|
|
119
|
-
}));
|
|
120
|
+
})));
|
|
120
121
|
}
|
|
121
122
|
if (props.deliveryOptions) {
|
|
122
|
-
await client.send(new PutConfigurationSetDeliveryOptionsCommand({
|
|
123
|
+
await retry(() => client.send(new PutConfigurationSetDeliveryOptionsCommand({
|
|
123
124
|
ConfigurationSetName: props.configurationSetName,
|
|
124
125
|
TlsPolicy: props.deliveryOptions.TlsPolicy,
|
|
125
126
|
SendingPoolName: props.deliveryOptions.SendingPoolName,
|
|
126
|
-
}));
|
|
127
|
+
})));
|
|
127
128
|
}
|
|
128
129
|
// In SESv2, the ARN isn't directly returned in the response
|
|
129
130
|
configurationSetArn = `arn:aws:ses:${process.env.AWS_REGION}:${process.env.AWS_ACCOUNT_ID}:configuration-set/${props.configurationSetName}`;
|
|
130
131
|
}
|
|
131
132
|
else {
|
|
132
133
|
// Create new configuration set
|
|
133
|
-
await client.send(new CreateConfigurationSetCommand({
|
|
134
|
+
await retry(() => client.send(new CreateConfigurationSetCommand({
|
|
134
135
|
ConfigurationSetName: props.configurationSetName,
|
|
135
136
|
SendingOptions: props.sendingOptions,
|
|
136
137
|
ReputationOptions: props.reputationOptions,
|
|
@@ -141,7 +142,7 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
141
142
|
Key,
|
|
142
143
|
Value,
|
|
143
144
|
})),
|
|
144
|
-
}));
|
|
145
|
+
})));
|
|
145
146
|
// In SESv2, the ARN isn't directly returned in the response
|
|
146
147
|
configurationSetArn = `arn:aws:ses:${process.env.AWS_REGION}:${process.env.AWS_ACCOUNT_ID}:configuration-set/${props.configurationSetName}`;
|
|
147
148
|
}
|
|
@@ -151,9 +152,9 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
151
152
|
// Check if identity exists
|
|
152
153
|
let getIdentityResult;
|
|
153
154
|
try {
|
|
154
|
-
getIdentityResult = await client.send(new GetEmailIdentityCommand({
|
|
155
|
+
getIdentityResult = await retry(() => client.send(new GetEmailIdentityCommand({
|
|
155
156
|
EmailIdentity: props.emailIdentity,
|
|
156
|
-
}));
|
|
157
|
+
})));
|
|
157
158
|
}
|
|
158
159
|
catch (error) {
|
|
159
160
|
if (error instanceof NotFoundException) {
|
|
@@ -165,13 +166,13 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
165
166
|
}
|
|
166
167
|
if (!getIdentityResult) {
|
|
167
168
|
// Create new email identity
|
|
168
|
-
const createIdentityResult = await client.send(new CreateEmailIdentityCommand({
|
|
169
|
+
const createIdentityResult = await retry(() => client.send(new CreateEmailIdentityCommand({
|
|
169
170
|
EmailIdentity: props.emailIdentity,
|
|
170
171
|
Tags: Object.entries(props.tags || {}).map(([Key, Value]) => ({
|
|
171
172
|
Key,
|
|
172
173
|
Value,
|
|
173
174
|
})),
|
|
174
|
-
}));
|
|
175
|
+
})));
|
|
175
176
|
// If it's an email address, we don't need to explicitly verify in v2
|
|
176
177
|
// The verification email is automatically sent by SES in v2
|
|
177
178
|
// Store the identity information
|
|
@@ -189,16 +190,16 @@ export const SES = Resource("aws::SES", async function (_id, props) {
|
|
|
189
190
|
// Update DKIM settings if requested
|
|
190
191
|
if (props.enableDkim !== undefined) {
|
|
191
192
|
if (props.enableDkim) {
|
|
192
|
-
await client.send(new PutEmailIdentityDkimAttributesCommand({
|
|
193
|
+
await retry(() => client.send(new PutEmailIdentityDkimAttributesCommand({
|
|
193
194
|
EmailIdentity: props.emailIdentity,
|
|
194
195
|
SigningEnabled: true,
|
|
195
|
-
}));
|
|
196
|
+
})));
|
|
196
197
|
// We can check the current status of DKIM
|
|
197
198
|
dkimVerificationStatus = "PENDING"; // Default to pending
|
|
198
199
|
// Get the updated identity to check DKIM status
|
|
199
|
-
const updatedIdentity = await client.send(new GetEmailIdentityCommand({
|
|
200
|
+
const updatedIdentity = await retry(() => client.send(new GetEmailIdentityCommand({
|
|
200
201
|
EmailIdentity: props.emailIdentity,
|
|
201
|
-
}));
|
|
202
|
+
})));
|
|
202
203
|
if (updatedIdentity.DkimAttributes?.Status) {
|
|
203
204
|
dkimVerificationStatus = updatedIdentity.DkimAttributes.Status;
|
|
204
205
|
}
|
package/lib/aws/ses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ses.js","sourceRoot":"","sources":["../../src/aws/ses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAE1B,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,yCAAyC,EACzC,2CAA2C,EAC3C,wCAAwC,EACxC,4CAA4C,EAC5C,yCAAyC,EACzC,qCAAqC,EAErC,WAAW,GAIZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ses.js","sourceRoot":"","sources":["../../src/aws/ses.ts"],"names":[],"mappings":"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"}
|