@effortless-aws/cli 0.9.4 → 0.10.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.
Files changed (2) hide show
  1. package/dist/cli/index.js +53 -27
  2. package/package.json +2 -2
package/dist/cli/index.js CHANGED
@@ -3951,16 +3951,8 @@ var cleanupOrphanedFunctions = (project, stage) => Effect21.gen(function* () {
3951
3951
 
3952
3952
  // src/aws/sqs.ts
3953
3953
  import { Effect as Effect22 } from "effect";
3954
- var ensureFifoQueue = (input) => Effect22.gen(function* () {
3955
- const {
3956
- name,
3957
- visibilityTimeout = 30,
3958
- retentionPeriod = 345600,
3959
- delay = 0,
3960
- contentBasedDeduplication = true,
3961
- tags
3962
- } = input;
3963
- const queueName = `${name}.fifo`;
3954
+ var ensureSingleFifoQueue = (opts) => Effect22.gen(function* () {
3955
+ const { queueName, attributes, tags } = opts;
3964
3956
  const existingUrl = yield* sqs_exports.make("get_queue_url", {
3965
3957
  QueueName: queueName
3966
3958
  }).pipe(
@@ -3975,13 +3967,7 @@ var ensureFifoQueue = (input) => Effect22.gen(function* () {
3975
3967
  yield* Effect22.logDebug(`Creating FIFO queue ${queueName}...`);
3976
3968
  const result = yield* sqs_exports.make("create_queue", {
3977
3969
  QueueName: queueName,
3978
- Attributes: {
3979
- FifoQueue: "true",
3980
- ContentBasedDeduplication: String(contentBasedDeduplication),
3981
- VisibilityTimeout: String(visibilityTimeout),
3982
- MessageRetentionPeriod: String(retentionPeriod),
3983
- DelaySeconds: String(delay)
3984
- },
3970
+ Attributes: attributes,
3985
3971
  ...tags ? { tags } : {}
3986
3972
  });
3987
3973
  queueUrl = result.QueueUrl;
@@ -3990,12 +3976,7 @@ var ensureFifoQueue = (input) => Effect22.gen(function* () {
3990
3976
  queueUrl = existingUrl;
3991
3977
  yield* sqs_exports.make("set_queue_attributes", {
3992
3978
  QueueUrl: queueUrl,
3993
- Attributes: {
3994
- ContentBasedDeduplication: String(contentBasedDeduplication),
3995
- VisibilityTimeout: String(visibilityTimeout),
3996
- MessageRetentionPeriod: String(retentionPeriod),
3997
- DelaySeconds: String(delay)
3998
- }
3979
+ Attributes: attributes
3999
3980
  });
4000
3981
  if (tags) {
4001
3982
  yield* sqs_exports.make("tag_queue", {
@@ -4014,6 +3995,44 @@ var ensureFifoQueue = (input) => Effect22.gen(function* () {
4014
3995
  }
4015
3996
  return { queueUrl, queueArn };
4016
3997
  });
3998
+ var ensureFifoQueue = (input) => Effect22.gen(function* () {
3999
+ const {
4000
+ name,
4001
+ visibilityTimeout = 30,
4002
+ retentionPeriod = 345600,
4003
+ delay = 0,
4004
+ contentBasedDeduplication = true,
4005
+ maxReceiveCount = 3,
4006
+ tags
4007
+ } = input;
4008
+ const dlqName = `${name}-dlq.fifo`;
4009
+ const { queueUrl: dlqUrl, queueArn: dlqArn } = yield* ensureSingleFifoQueue({
4010
+ queueName: dlqName,
4011
+ attributes: {
4012
+ FifoQueue: "true",
4013
+ ContentBasedDeduplication: String(contentBasedDeduplication),
4014
+ MessageRetentionPeriod: String(retentionPeriod)
4015
+ },
4016
+ tags
4017
+ });
4018
+ const queueName = `${name}.fifo`;
4019
+ const { queueUrl, queueArn } = yield* ensureSingleFifoQueue({
4020
+ queueName,
4021
+ attributes: {
4022
+ FifoQueue: "true",
4023
+ ContentBasedDeduplication: String(contentBasedDeduplication),
4024
+ VisibilityTimeout: String(visibilityTimeout),
4025
+ MessageRetentionPeriod: String(retentionPeriod),
4026
+ DelaySeconds: String(delay),
4027
+ RedrivePolicy: JSON.stringify({
4028
+ deadLetterTargetArn: dlqArn,
4029
+ maxReceiveCount
4030
+ })
4031
+ },
4032
+ tags
4033
+ });
4034
+ return { queueUrl, queueArn, dlqUrl, dlqArn };
4035
+ });
4017
4036
  var ensureSqsEventSourceMapping = (input) => Effect22.gen(function* () {
4018
4037
  const { functionArn, queueArn, batchSize = 10, batchWindow } = input;
4019
4038
  const existingMappings = yield* lambda_exports.make("list_event_source_mappings", {
@@ -4044,8 +4063,7 @@ var ensureSqsEventSourceMapping = (input) => Effect22.gen(function* () {
4044
4063
  });
4045
4064
  return result.UUID;
4046
4065
  });
4047
- var deleteFifoQueue = (queueName) => Effect22.gen(function* () {
4048
- const name = queueName.endsWith(".fifo") ? queueName : `${queueName}.fifo`;
4066
+ var deleteSingleQueue = (name) => Effect22.gen(function* () {
4049
4067
  yield* Effect22.logDebug(`Deleting SQS queue: ${name}`);
4050
4068
  const urlResult = yield* sqs_exports.make("get_queue_url", {
4051
4069
  QueueName: name
@@ -4064,6 +4082,11 @@ var deleteFifoQueue = (queueName) => Effect22.gen(function* () {
4064
4082
  });
4065
4083
  }
4066
4084
  });
4085
+ var deleteFifoQueue = (queueName) => Effect22.gen(function* () {
4086
+ const baseName = queueName.endsWith(".fifo") ? queueName.slice(0, -5) : queueName;
4087
+ yield* deleteSingleQueue(`${baseName}.fifo`);
4088
+ yield* deleteSingleQueue(`${baseName}-dlq.fifo`);
4089
+ });
4067
4090
 
4068
4091
  // src/aws/ses.ts
4069
4092
  import { Effect as Effect23 } from "effect";
@@ -5738,12 +5761,13 @@ var deployFifoQueueFunction = ({ input, fn: fn13, layerArn, external, depsEnv, d
5738
5761
  yield* Effect32.logDebug("Creating SQS FIFO queue...");
5739
5762
  const queueName = `${input.project}-${tagCtx.stage}-${handlerName}`;
5740
5763
  const timeout = toSeconds4(config.lambda?.timeout ?? 30);
5741
- const { queueUrl, queueArn } = yield* ensureFifoQueue({
5764
+ const { queueUrl, queueArn, dlqUrl, dlqArn } = yield* ensureFifoQueue({
5742
5765
  name: queueName,
5743
5766
  visibilityTimeout: Math.max(config.visibilityTimeout ? toSeconds4(config.visibilityTimeout) : timeout, timeout),
5744
5767
  retentionPeriod: config.retentionPeriod ? toSeconds4(config.retentionPeriod) : void 0,
5745
5768
  delay: config.delay ? toSeconds4(config.delay) : void 0,
5746
5769
  contentBasedDeduplication: config.contentBasedDeduplication ?? true,
5770
+ maxReceiveCount: config.maxReceiveCount,
5747
5771
  tags: makeTags(tagCtx, "sqs")
5748
5772
  });
5749
5773
  const queueEnv = {
@@ -5780,7 +5804,9 @@ var deployFifoQueueFunction = ({ input, fn: fn13, layerArn, external, depsEnv, d
5780
5804
  status,
5781
5805
  bundleSize,
5782
5806
  queueUrl,
5783
- queueArn
5807
+ queueArn,
5808
+ dlqUrl,
5809
+ dlqArn
5784
5810
  };
5785
5811
  });
5786
5812
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effortless-aws/cli",
3
- "version": "0.9.4",
3
+ "version": "0.10.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "CLI and deploy tooling for effortless-aws",
@@ -39,7 +39,7 @@
39
39
  "esbuild": "^0.25.0",
40
40
  "glob": "^13.0.0",
41
41
  "ts-morph": "^27.0.2",
42
- "effortless-aws": "0.26.0"
42
+ "effortless-aws": "0.27.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@effect-ak/aws-sdk": "1.0.0-rc.3",