cdk-cost-analyzer 0.1.31 → 0.1.32

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.
@@ -2,35 +2,35 @@
2
2
  "entries": {
3
3
  "AmazonS3:US East (N. Virginia):storageClass:General Purpose|volumeType:Standard": {
4
4
  "price": 0.023,
5
- "timestamp": 1770971189885
5
+ "timestamp": 1770972967203
6
6
  },
7
7
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-ReadUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
8
8
  "price": 0.023,
9
- "timestamp": 1770971189892
9
+ "timestamp": 1770972967209
10
10
  },
11
11
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-WriteUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
12
12
  "price": 0.023,
13
- "timestamp": 1770971189892
13
+ "timestamp": 1770972967210
14
14
  },
15
15
  "AmazonEC2:US East (N. Virginia):capacitystatus:Used|instanceType:t3.micro|operatingSystem:Linux|preInstalledSw:NA|tenancy:Shared": {
16
16
  "price": 0.023,
17
- "timestamp": 1770971189901
17
+ "timestamp": 1770972967219
18
18
  },
19
19
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Requests": {
20
20
  "price": 0.023,
21
- "timestamp": 1770971189906
21
+ "timestamp": 1770972967229
22
22
  },
23
23
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Duration": {
24
24
  "price": 0.023,
25
- "timestamp": 1770971189906
25
+ "timestamp": 1770972967229
26
26
  },
27
27
  "AmazonS3:EU (Frankfurt):storageClass:General Purpose|volumeType:Standard": {
28
28
  "price": 0.023,
29
- "timestamp": 1770971197326
29
+ "timestamp": 1770972974708
30
30
  },
31
31
  "AmazonS3:invalid-region-123:storageClass:General Purpose|volumeType:Standard": {
32
32
  "price": 0.023,
33
- "timestamp": 1770971197371
33
+ "timestamp": 1770972974758
34
34
  }
35
35
  }
36
36
  }
@@ -80,6 +80,16 @@ export interface UsageAssumptionsConfig {
80
80
  /** Number of mobile push deliveries per month (default: 0) */
81
81
  mobilePushDeliveries?: number;
82
82
  };
83
+ /**
84
+ * SQS usage assumptions for cost estimation.
85
+ * Applies to both Standard and FIFO queues.
86
+ *
87
+ * @see https://aws.amazon.com/sqs/pricing/
88
+ */
89
+ sqs?: {
90
+ /** Number of requests per month (default: 1,000,000) */
91
+ monthlyRequests?: number;
92
+ };
83
93
  /**
84
94
  * Step Functions usage assumptions for cost estimation.
85
95
  *
@@ -12,4 +12,4 @@ class ConfigurationError extends Error {
12
12
  }
13
13
  }
14
14
  exports.ConfigurationError = ConfigurationError;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZIQSxNQUFhLGtCQUFtQixTQUFRLEtBQUs7SUFHbEM7SUFDQTtJQUhULFlBQ0UsT0FBZSxFQUNSLFVBQWtCLEVBQ2xCLGdCQUEwQjtRQUVqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIUixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBVTtRQUdqQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQVRELGdEQVNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb3N0QW5hbHl6ZXJDb25maWcge1xuICB0aHJlc2hvbGRzPzogVGhyZXNob2xkQ29uZmlnO1xuICB1c2FnZUFzc3VtcHRpb25zPzogVXNhZ2VBc3N1bXB0aW9uc0NvbmZpZztcbiAgc3ludGhlc2lzPzogU3ludGhlc2lzQ29uZmlnO1xuICBleGNsdXNpb25zPzogRXhjbHVzaW9uc0NvbmZpZztcbiAgY2FjaGU/OiBDYWNoZUNvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHJlc2hvbGRDb25maWcge1xuICBkZWZhdWx0PzogVGhyZXNob2xkTGV2ZWxzO1xuICBlbnZpcm9ubWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBUaHJlc2hvbGRMZXZlbHM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRocmVzaG9sZExldmVscyB7XG4gIHdhcm5pbmc/OiBudW1iZXI7XG4gIGVycm9yPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzYWdlQXNzdW1wdGlvbnNDb25maWcge1xuICBzMz86IHtcbiAgICBzdG9yYWdlR0I/OiBudW1iZXI7XG4gICAgZ2V0UmVxdWVzdHM/OiBudW1iZXI7XG4gICAgcHV0UmVxdWVzdHM/OiBudW1iZXI7XG4gIH07XG4gIGxhbWJkYT86IHtcbiAgICBpbnZvY2F0aW9uc1Blck1vbnRoPzogbnVtYmVyO1xuICAgIGF2ZXJhZ2VEdXJhdGlvbk1zPzogbnVtYmVyO1xuICB9O1xuICAvKipcbiAgICogRHluYW1vREIgdXNhZ2UgYXNzdW1wdGlvbnMgZm9yIG9uLWRlbWFuZCAocGF5LXBlci1yZXF1ZXN0KSBiaWxsaW5nIG1vZGUuXG4gICAqIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBlc3RpbWF0ZSBtb250aGx5IGNvc3RzIGZvciBEeW5hbW9EQiB0YWJsZXNcbiAgICogY29uZmlndXJlZCB3aXRoIEJpbGxpbmdNb2RlOiBQQVlfUEVSX1JFUVVFU1QuXG4gICAqXG4gICAqIEZvciBwcm92aXNpb25lZCBiaWxsaW5nIG1vZGUsIGNvc3RzIGFyZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZVxuICAgKiBSZWFkQ2FwYWNpdHlVbml0cyBhbmQgV3JpdGVDYXBhY2l0eVVuaXRzIHNwZWNpZmllZCBpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9keW5hbW9kYi9wcmljaW5nL1xuICAgKi9cbiAgZHluYW1vZGI/OiB7XG4gICAgLyoqIE51bWJlciBvZiByZWFkIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMTAsMDAwLDAwMCkgKi9cbiAgICByZWFkUmVxdWVzdHNQZXJNb250aD86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIHdyaXRlIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMSwwMDAsMDAwKSAqL1xuICAgIHdyaXRlUmVxdWVzdHNQZXJNb250aD86IG51bWJlcjtcbiAgfTtcbiAgbmF0R2F0ZXdheT86IHtcbiAgICBkYXRhUHJvY2Vzc2VkR0I/OiBudW1iZXI7XG4gIH07XG4gIGFsYj86IHtcbiAgICBuZXdDb25uZWN0aW9uc1BlclNlY29uZD86IG51bWJlcjtcbiAgICBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZT86IG51bWJlcjtcbiAgICBwcm9jZXNzZWRCeXRlc0dCPzogbnVtYmVyO1xuICB9O1xuICBubGI/OiB7XG4gICAgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQ/OiBudW1iZXI7XG4gICAgYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGU/OiBudW1iZXI7XG4gICAgcHJvY2Vzc2VkQnl0ZXNHQj86IG51bWJlcjtcbiAgfTtcbiAgY2xvdWRmcm9udD86IHtcbiAgICBkYXRhVHJhbnNmZXJHQj86IG51bWJlcjtcbiAgICByZXF1ZXN0cz86IG51bWJlcjtcbiAgfTtcbiAgYXBpR2F0ZXdheT86IHtcbiAgICByZXF1ZXN0c1Blck1vbnRoPzogbnVtYmVyO1xuICB9O1xuICB2cGNFbmRwb2ludD86IHtcbiAgICBkYXRhUHJvY2Vzc2VkR0I/OiBudW1iZXI7XG4gIH07XG4gIC8qKlxuICAgKiBTTlMgKFNpbXBsZSBOb3RpZmljYXRpb24gU2VydmljZSkgdXNhZ2UgYXNzdW1wdGlvbnMuXG4gICAqIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBlc3RpbWF0ZSBtb250aGx5IGNvc3RzIGZvciBTTlMgdG9waWNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vc25zL3ByaWNpbmcvXG4gICAqL1xuICBzbnM/OiB7XG4gICAgLyoqIE51bWJlciBvZiBwdWJsaXNoIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMSwwMDAsMDAwKSAqL1xuICAgIG1vbnRobHlQdWJsaXNoZXM/OiBudW1iZXI7XG4gICAgLyoqIE51bWJlciBvZiBIVFRQL1MgZGVsaXZlcmllcyBwZXIgbW9udGggKGRlZmF1bHQ6IDEsMDAwLDAwMCkgKi9cbiAgICBodHRwRGVsaXZlcmllcz86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIGVtYWlsIGRlbGl2ZXJpZXMgcGVyIG1vbnRoIChkZWZhdWx0OiAwKSAqL1xuICAgIGVtYWlsRGVsaXZlcmllcz86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIFNNUyBkZWxpdmVyaWVzIHBlciBtb250aCAoZGVmYXVsdDogMCkgKi9cbiAgICBzbXNEZWxpdmVyaWVzPzogbnVtYmVyO1xuICAgIC8qKiBOdW1iZXIgb2YgbW9iaWxlIHB1c2ggZGVsaXZlcmllcyBwZXIgbW9udGggKGRlZmF1bHQ6IDApICovXG4gICAgbW9iaWxlUHVzaERlbGl2ZXJpZXM/OiBudW1iZXI7XG4gIH07XG4gIC8qKlxuICAgKiBTdGVwIEZ1bmN0aW9ucyB1c2FnZSBhc3N1bXB0aW9ucyBmb3IgY29zdCBlc3RpbWF0aW9uLlxuICAgKlxuICAgKiBTdGFuZGFyZCB3b3JrZmxvd3MgYXJlIGNoYXJnZWQgcGVyIHN0YXRlIHRyYW5zaXRpb24uXG4gICAqIEV4cHJlc3Mgd29ya2Zsb3dzIGFyZSBjaGFyZ2VkIHBlciByZXF1ZXN0IGFuZCBwZXIgR0Itc2Vjb25kIG9mIGR1cmF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvcHJpY2luZy9cbiAgICovXG4gIHN0ZXBGdW5jdGlvbnM/OiB7XG4gICAgLyoqIE51bWJlciBvZiB3b3JrZmxvdyBleGVjdXRpb25zIHBlciBtb250aCAoZGVmYXVsdDogMTAsMDAwKSAqL1xuICAgIG1vbnRobHlFeGVjdXRpb25zPzogbnVtYmVyO1xuICAgIC8qKiBOdW1iZXIgb2Ygc3RhdGUgdHJhbnNpdGlvbnMgcGVyIGV4ZWN1dGlvbiAoZGVmYXVsdDogMTAsIGZvciBTdGFuZGFyZCB3b3JrZmxvd3MpICovXG4gICAgc3RhdGVUcmFuc2l0aW9uc1BlckV4ZWN1dGlvbj86IG51bWJlcjtcbiAgICAvKiogQXZlcmFnZSBleGVjdXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0OiAxMDAwLCBmb3IgRXhwcmVzcyB3b3JrZmxvd3MpICovXG4gICAgYXZlcmFnZUR1cmF0aW9uTXM/OiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2lzQ29uZmlnIHtcbiAgYXBwUGF0aD86IHN0cmluZztcbiAgb3V0cHV0UGF0aD86IHN0cmluZztcbiAgY3VzdG9tQ29tbWFuZD86IHN0cmluZztcbiAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjbHVzaW9uc0NvbmZpZyB7XG4gIHJlc291cmNlVHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUNvbmZpZyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBkdXJhdGlvbkhvdXJzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SZXN1bHQge1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBzdHJpbmdbXTtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIGNvbmZpZ1BhdGg6IHN0cmluZyxcbiAgICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nW10sXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdDb25maWd1cmF0aW9uRXJyb3InO1xuICB9XG59XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVJQSxNQUFhLGtCQUFtQixTQUFRLEtBQUs7SUFHbEM7SUFDQTtJQUhULFlBQ0UsT0FBZSxFQUNSLFVBQWtCLEVBQ2xCLGdCQUEwQjtRQUVqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIUixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBVTtRQUdqQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQVRELGdEQVNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb3N0QW5hbHl6ZXJDb25maWcge1xuICB0aHJlc2hvbGRzPzogVGhyZXNob2xkQ29uZmlnO1xuICB1c2FnZUFzc3VtcHRpb25zPzogVXNhZ2VBc3N1bXB0aW9uc0NvbmZpZztcbiAgc3ludGhlc2lzPzogU3ludGhlc2lzQ29uZmlnO1xuICBleGNsdXNpb25zPzogRXhjbHVzaW9uc0NvbmZpZztcbiAgY2FjaGU/OiBDYWNoZUNvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHJlc2hvbGRDb25maWcge1xuICBkZWZhdWx0PzogVGhyZXNob2xkTGV2ZWxzO1xuICBlbnZpcm9ubWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBUaHJlc2hvbGRMZXZlbHM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRocmVzaG9sZExldmVscyB7XG4gIHdhcm5pbmc/OiBudW1iZXI7XG4gIGVycm9yPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzYWdlQXNzdW1wdGlvbnNDb25maWcge1xuICBzMz86IHtcbiAgICBzdG9yYWdlR0I/OiBudW1iZXI7XG4gICAgZ2V0UmVxdWVzdHM/OiBudW1iZXI7XG4gICAgcHV0UmVxdWVzdHM/OiBudW1iZXI7XG4gIH07XG4gIGxhbWJkYT86IHtcbiAgICBpbnZvY2F0aW9uc1Blck1vbnRoPzogbnVtYmVyO1xuICAgIGF2ZXJhZ2VEdXJhdGlvbk1zPzogbnVtYmVyO1xuICB9O1xuICAvKipcbiAgICogRHluYW1vREIgdXNhZ2UgYXNzdW1wdGlvbnMgZm9yIG9uLWRlbWFuZCAocGF5LXBlci1yZXF1ZXN0KSBiaWxsaW5nIG1vZGUuXG4gICAqIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBlc3RpbWF0ZSBtb250aGx5IGNvc3RzIGZvciBEeW5hbW9EQiB0YWJsZXNcbiAgICogY29uZmlndXJlZCB3aXRoIEJpbGxpbmdNb2RlOiBQQVlfUEVSX1JFUVVFU1QuXG4gICAqXG4gICAqIEZvciBwcm92aXNpb25lZCBiaWxsaW5nIG1vZGUsIGNvc3RzIGFyZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZVxuICAgKiBSZWFkQ2FwYWNpdHlVbml0cyBhbmQgV3JpdGVDYXBhY2l0eVVuaXRzIHNwZWNpZmllZCBpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9keW5hbW9kYi9wcmljaW5nL1xuICAgKi9cbiAgZHluYW1vZGI/OiB7XG4gICAgLyoqIE51bWJlciBvZiByZWFkIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMTAsMDAwLDAwMCkgKi9cbiAgICByZWFkUmVxdWVzdHNQZXJNb250aD86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIHdyaXRlIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMSwwMDAsMDAwKSAqL1xuICAgIHdyaXRlUmVxdWVzdHNQZXJNb250aD86IG51bWJlcjtcbiAgfTtcbiAgbmF0R2F0ZXdheT86IHtcbiAgICBkYXRhUHJvY2Vzc2VkR0I/OiBudW1iZXI7XG4gIH07XG4gIGFsYj86IHtcbiAgICBuZXdDb25uZWN0aW9uc1BlclNlY29uZD86IG51bWJlcjtcbiAgICBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZT86IG51bWJlcjtcbiAgICBwcm9jZXNzZWRCeXRlc0dCPzogbnVtYmVyO1xuICB9O1xuICBubGI/OiB7XG4gICAgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQ/OiBudW1iZXI7XG4gICAgYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGU/OiBudW1iZXI7XG4gICAgcHJvY2Vzc2VkQnl0ZXNHQj86IG51bWJlcjtcbiAgfTtcbiAgY2xvdWRmcm9udD86IHtcbiAgICBkYXRhVHJhbnNmZXJHQj86IG51bWJlcjtcbiAgICByZXF1ZXN0cz86IG51bWJlcjtcbiAgfTtcbiAgYXBpR2F0ZXdheT86IHtcbiAgICByZXF1ZXN0c1Blck1vbnRoPzogbnVtYmVyO1xuICB9O1xuICB2cGNFbmRwb2ludD86IHtcbiAgICBkYXRhUHJvY2Vzc2VkR0I/OiBudW1iZXI7XG4gIH07XG4gIC8qKlxuICAgKiBTTlMgKFNpbXBsZSBOb3RpZmljYXRpb24gU2VydmljZSkgdXNhZ2UgYXNzdW1wdGlvbnMuXG4gICAqIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBlc3RpbWF0ZSBtb250aGx5IGNvc3RzIGZvciBTTlMgdG9waWNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vc25zL3ByaWNpbmcvXG4gICAqL1xuICBzbnM/OiB7XG4gICAgLyoqIE51bWJlciBvZiBwdWJsaXNoIHJlcXVlc3RzIHBlciBtb250aCAoZGVmYXVsdDogMSwwMDAsMDAwKSAqL1xuICAgIG1vbnRobHlQdWJsaXNoZXM/OiBudW1iZXI7XG4gICAgLyoqIE51bWJlciBvZiBIVFRQL1MgZGVsaXZlcmllcyBwZXIgbW9udGggKGRlZmF1bHQ6IDEsMDAwLDAwMCkgKi9cbiAgICBodHRwRGVsaXZlcmllcz86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIGVtYWlsIGRlbGl2ZXJpZXMgcGVyIG1vbnRoIChkZWZhdWx0OiAwKSAqL1xuICAgIGVtYWlsRGVsaXZlcmllcz86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIFNNUyBkZWxpdmVyaWVzIHBlciBtb250aCAoZGVmYXVsdDogMCkgKi9cbiAgICBzbXNEZWxpdmVyaWVzPzogbnVtYmVyO1xuICAgIC8qKiBOdW1iZXIgb2YgbW9iaWxlIHB1c2ggZGVsaXZlcmllcyBwZXIgbW9udGggKGRlZmF1bHQ6IDApICovXG4gICAgbW9iaWxlUHVzaERlbGl2ZXJpZXM/OiBudW1iZXI7XG4gIH07XG4gIC8qKlxuICAgKiBTUVMgdXNhZ2UgYXNzdW1wdGlvbnMgZm9yIGNvc3QgZXN0aW1hdGlvbi5cbiAgICogQXBwbGllcyB0byBib3RoIFN0YW5kYXJkIGFuZCBGSUZPIHF1ZXVlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3Nxcy9wcmljaW5nL1xuICAgKi9cbiAgc3FzPzoge1xuICAgIC8qKiBOdW1iZXIgb2YgcmVxdWVzdHMgcGVyIG1vbnRoIChkZWZhdWx0OiAxLDAwMCwwMDApICovXG4gICAgbW9udGhseVJlcXVlc3RzPzogbnVtYmVyO1xuICB9O1xuICAvKipcbiAgICogU3RlcCBGdW5jdGlvbnMgdXNhZ2UgYXNzdW1wdGlvbnMgZm9yIGNvc3QgZXN0aW1hdGlvbi5cbiAgICpcbiAgICogU3RhbmRhcmQgd29ya2Zsb3dzIGFyZSBjaGFyZ2VkIHBlciBzdGF0ZSB0cmFuc2l0aW9uLlxuICAgKiBFeHByZXNzIHdvcmtmbG93cyBhcmUgY2hhcmdlZCBwZXIgcmVxdWVzdCBhbmQgcGVyIEdCLXNlY29uZCBvZiBkdXJhdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL3ByaWNpbmcvXG4gICAqL1xuICBzdGVwRnVuY3Rpb25zPzoge1xuICAgIC8qKiBOdW1iZXIgb2Ygd29ya2Zsb3cgZXhlY3V0aW9ucyBwZXIgbW9udGggKGRlZmF1bHQ6IDEwLDAwMCkgKi9cbiAgICBtb250aGx5RXhlY3V0aW9ucz86IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIHN0YXRlIHRyYW5zaXRpb25zIHBlciBleGVjdXRpb24gKGRlZmF1bHQ6IDEwLCBmb3IgU3RhbmRhcmQgd29ya2Zsb3dzKSAqL1xuICAgIHN0YXRlVHJhbnNpdGlvbnNQZXJFeGVjdXRpb24/OiBudW1iZXI7XG4gICAgLyoqIEF2ZXJhZ2UgZXhlY3V0aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogMTAwMCwgZm9yIEV4cHJlc3Mgd29ya2Zsb3dzKSAqL1xuICAgIGF2ZXJhZ2VEdXJhdGlvbk1zPzogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoZXNpc0NvbmZpZyB7XG4gIGFwcFBhdGg/OiBzdHJpbmc7XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIGN1c3RvbUNvbW1hbmQ/OiBzdHJpbmc7XG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2x1c2lvbnNDb25maWcge1xuICByZXNvdXJjZVR5cGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVDb25maWcge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZHVyYXRpb25Ib3Vycz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGVycm9yczogc3RyaW5nW107XG4gIHdhcm5pbmdzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyBjb25maWdQYXRoOiBzdHJpbmcsXG4gICAgcHVibGljIHZhbGlkYXRpb25FcnJvcnM6IHN0cmluZ1tdLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29uZmlndXJhdGlvbkVycm9yJztcbiAgfVxufVxuIl19
@@ -17,6 +17,7 @@ const NLBCalculator_1 = require("./calculators/NLBCalculator");
17
17
  const RDSCalculator_1 = require("./calculators/RDSCalculator");
18
18
  const S3Calculator_1 = require("./calculators/S3Calculator");
19
19
  const SNSCalculator_1 = require("./calculators/SNSCalculator");
20
+ const SQSCalculator_1 = require("./calculators/SQSCalculator");
20
21
  const StepFunctionsCalculator_1 = require("./calculators/StepFunctionsCalculator");
21
22
  const VPCEndpointCalculator_1 = require("./calculators/VPCEndpointCalculator");
22
23
  const PricingClient_1 = require("./PricingClient");
@@ -58,6 +59,7 @@ class PricingService {
58
59
  new AutoScalingGroupCalculator_1.AutoScalingGroupCalculator(),
59
60
  new LaunchTemplateCalculator_1.LaunchTemplateCalculator(),
60
61
  new SNSCalculator_1.SNSCalculator(usageAssumptions?.sns?.monthlyPublishes, usageAssumptions?.sns?.httpDeliveries, usageAssumptions?.sns?.emailDeliveries, usageAssumptions?.sns?.smsDeliveries, usageAssumptions?.sns?.mobilePushDeliveries),
62
+ new SQSCalculator_1.SQSCalculator(config),
61
63
  new StepFunctionsCalculator_1.StepFunctionsCalculator(usageAssumptions?.stepFunctions?.monthlyExecutions, usageAssumptions?.stepFunctions?.stateTransitionsPerExecution, usageAssumptions?.stepFunctions?.averageDurationMs),
62
64
  ];
63
65
  }
@@ -172,4 +174,4 @@ class PricingService {
172
174
  }
173
175
  }
174
176
  exports.PricingService = PricingService;
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2luZ1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpY2luZy9QcmljaW5nU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBOEM7QUFDOUMsK0RBQTREO0FBQzVELDZFQUEwRTtBQUMxRSx5RkFBc0Y7QUFDdEYsNkVBQTBFO0FBQzFFLHlFQUFzRTtBQUN0RSwrREFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELCtFQUE0RTtBQUM1RSxxRUFBa0U7QUFDbEUscUZBQWtGO0FBQ2xGLDZFQUEwRTtBQUMxRSwrREFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFDNUQsbUZBQWdGO0FBQ2hGLCtFQUE0RTtBQUM1RSxtREFBZ0Q7QUFVaEQsTUFBYSxjQUFjO0lBQ2pCLFdBQVcsQ0FBMkI7SUFDdEMsYUFBYSxDQUFnQjtJQUM3QixxQkFBcUIsQ0FBYztJQUUzQyxZQUNFLFNBQWlCLFdBQVcsRUFDNUIsZ0JBQXlDLEVBQ3pDLHFCQUFnQyxFQUNoQyxXQUF5QixFQUN6QixhQUE2QjtRQUU3QixrREFBa0Q7UUFDbEQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGlEQUFpRDtZQUNqRCxJQUFJLFlBQXNDLENBQUM7WUFDM0MsSUFBSSxXQUFXLEVBQUUsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNuQyxNQUFNLGFBQWEsR0FBRyxXQUFXLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFDdkQsWUFBWSxHQUFHLElBQUksMkJBQVksQ0FBQywwQkFBMEIsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJ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QUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixNQUFNLFVBQVUsR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7UUFFMUUsT0FBTztZQUNMLFVBQVU7WUFDVixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUEzTUQsd0NBMk1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVNYW5hZ2VyIH0gZnJvbSAnLi9DYWNoZU1hbmFnZXInO1xuaW1wb3J0IHsgQUxCQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvQUxCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBBUElHYXRld2F5Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvQVBJR2F0ZXdheUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgQXV0b1NjYWxpbmdHcm91cENhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0F1dG9TY2FsaW5nR3JvdXBDYWxjdWxhdG9yJztcbmltcG9ydCB7IENsb3VkRnJvbnRDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9DbG91ZEZyb250Q2FsY3VsYXRvcic7XG5pbXBvcnQgeyBEeW5hbW9EQkNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0R5bmFtb0RCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBFQzJDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FQzJDYWxjdWxhdG9yJztcbmltcG9ydCB7IEVDU0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0VDU0NhbGN1bGF0b3InO1xuaW1wb3J0IHsgRWxhc3RpQ2FjaGVDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FbGFzdGlDYWNoZUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgTGFtYmRhQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTGFtYmRhQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBMYXVuY2hUZW1wbGF0ZUNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0xhdW5jaFRlbXBsYXRlQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBOYXRHYXRld2F5Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTmF0R2F0ZXdheUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgTkxCQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTkxCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBSRFNDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9SRFNDYWxjdWxhdG9yJztcbmltcG9ydCB7IFMzQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvUzNDYWxjdWxhdG9yJztcbmltcG9ydCB7IFNOU0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL1NOU0NhbGN1bGF0b3InO1xuaW1wb3J0IHsgU3RlcEZ1bmN0aW9uc0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL1N0ZXBGdW5jdGlvbnNDYWxjdWxhdG9yJztcbmltcG9ydCB7IFZQQ0VuZHBvaW50Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvVlBDRW5kcG9pbnRDYWxjdWxhdG9yJztcbmltcG9ydCB7IFByaWNpbmdDbGllbnQgfSBmcm9tICcuL1ByaWNpbmdDbGllbnQnO1xuaW1wb3J0IHtcbiAgUHJpY2luZ1NlcnZpY2UgYXMgSVByaWNpbmdTZXJ2aWNlLFxuICBNb250aGx5Q29zdCxcbiAgQ29zdERlbHRhLFxuICBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFVzYWdlQXNzdW1wdGlvbnNDb25maWcsIENhY2hlQ29uZmlnLCBDb3N0QW5hbHl6ZXJDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VXaXRoSWQsIFJlc291cmNlRGlmZiB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgUHJpY2luZ1NlcnZpY2UgaW1wbGVtZW50cyBJUHJpY2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNhbGN1bGF0b3JzOiBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yW107XG4gIHByaXZhdGUgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudDtcbiAgcHJpdmF0ZSBleGNsdWRlZFJlc291cmNlVHlwZXM6IFNldDxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlZ2lvbjogc3RyaW5nID0gJ3VzLWVhc3QtMScsXG4gICAgdXNhZ2VBc3N1bXB0aW9ucz86IFVzYWdlQXNzdW1wdGlvbnNDb25maWcsXG4gICAgZXhjbHVkZWRSZXNvdXJjZVR5cGVzPzogc3RyaW5nW10sXG4gICAgY2FjaGVDb25maWc/OiBDYWNoZUNvbmZpZyxcbiAgICBwcmljaW5nQ2xpZW50PzogUHJpY2luZ0NsaWVudCxcbiAgKSB7XG4gICAgLy8gVXNlIHByb3ZpZGVkIHByaWNpbmcgY2xpZW50IG9yIGNyZWF0ZSBhIG5ldyBvbmVcbiAgICBpZiAocHJpY2luZ0NsaWVudCkge1xuICAgICAgdGhpcy5wcmljaW5nQ2xpZW50ID0gcHJpY2luZ0NsaWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW5pdGlhbGl6ZSBjYWNoZSBtYW5hZ2VyIGlmIGNhY2hpbmcgaXMgZW5hYmxlZFxuICAgICAgbGV0IGNhY2hlTWFuYWdlcjogQ2FjaGVNYW5hZ2VyIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKGNhY2hlQ29uZmlnPy5lbmFibGVkICE9PSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjYWNoZUR1cmF0aW9uID0gY2FjaGVDb25maWc/LmR1cmF0aW9uSG91cnMgPz8gMjQ7XG4gICAgICAgIGNhY2hlTWFuYWdlciA9IG5ldyBDYWNoZU1hbmFnZXIoJy5jZGstY29zdC1hbmFseXplci1jYWNoZScsIGNhY2hlRHVyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByaWNpbmdDbGllbnQgPSBuZXcgUHJpY2luZ0NsaWVudChyZWdpb24sIGNhY2hlTWFuYWdlcik7XG4gICAgfVxuICAgIHRoaXMuZXhjbHVkZWRSZXNvdXJjZVR5cGVzID0gbmV3IFNldChleGNsdWRlZFJlc291cmNlVHlwZXMgfHwgW10pO1xuICAgIFxuICAgIC8vIEJ1aWxkIGNvbmZpZyBvYmplY3QgZm9yIGNhbGN1bGF0b3JzIHRoYXQgbmVlZCBpdFxuICAgIGNvbnN0IGNvbmZpZzogQ29zdEFuYWx5emVyQ29uZmlnIHwgdW5kZWZpbmVkID0gdXNhZ2VBc3N1bXB0aW9ucyA/IHsgdXNhZ2VBc3N1bXB0aW9ucyB9IDogdW5kZWZpbmVkO1xuICAgIFxuICAgIHRoaXMuY2FsY3VsYXRvcnMgPSBbXG4gICAgICBuZXcgRUMyQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IFMzQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IExhbWJkYUNhbGN1bGF0b3IoXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LmxhbWJkYT8uaW52b2NhdGlvbnNQZXJNb250aCxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8ubGFtYmRhPy5hdmVyYWdlRHVyYXRpb25NcyxcbiAgICAgICksXG4gICAgICBuZXcgUkRTQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IER5bmFtb0RCQ2FsY3VsYXRvcihjb25maWcpLFxuICAgICAgbmV3IEVDU0NhbGN1bGF0b3IoKSxcbiAgICAgIG5ldyBBUElHYXRld2F5Q2FsY3VsYXRvcigpLFxuICAgICAgbmV3IE5hdEdhdGV3YXlDYWxjdWxhdG9yKHVzYWdlQXNzdW1wdGlvbnM/Lm5hdEdhdGV3YXk/LmRhdGFQcm9jZXNzZWRHQiksXG4gICAgICBuZXcgQUxCQ2FsY3VsYXRvcihcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uYWxiPy5uZXdDb25uZWN0aW9uc1BlclNlY29uZCxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uYWxiPy5hY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uYWxiPy5wcm9jZXNzZWRCeXRlc0dCLFxuICAgICAgKSxcbiAgICAgIG5ldyBOTEJDYWxjdWxhdG9yKFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5ubGI/Lm5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5ubGI/LmFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5ubGI/LnByb2Nlc3NlZEJ5dGVzR0IsXG4gICAgICApLFxuICAgICAgbmV3IFZQQ0VuZHBvaW50Q2FsY3VsYXRvcih1c2FnZUFzc3VtcHRpb25zPy52cGNFbmRwb2ludD8uZGF0YVByb2Nlc3NlZEdCKSxcbiAgICAgIG5ldyBDbG91ZEZyb250Q2FsY3VsYXRvcihcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uY2xvdWRmcm9udD8uZGF0YVRyYW5zZmVyR0IsXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LmNsb3VkZnJvbnQ/LnJlcXVlc3RzLFxuICAgICAgKSxcbiAgICAgIG5ldyBFbGFzdGlDYWNoZUNhbGN1bGF0b3IoKSxcbiAgICAgIG5ldyBBdXRvU2NhbGluZ0dyb3VwQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IExhdW5jaFRlbXBsYXRlQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IFNOU0NhbGN1bGF0b3IoXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LnNucz8ubW9udGhseVB1Ymxpc2hlcyxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uc25zPy5odHRwRGVsaXZlcmllcyxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uc25zPy5lbWFpbERlbGl2ZXJpZXMsXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LnNucz8uc21zRGVsaXZlcmllcyxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uc25zPy5tb2JpbGVQdXNoRGVsaXZlcmllcyxcbiAgICAgICksXG4gICAgICBuZXcgU3RlcEZ1bmN0aW9uc0NhbGN1bGF0b3IoXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LnN0ZXBGdW5jdGlvbnM/Lm1vbnRobHlFeGVjdXRpb25zLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zdGVwRnVuY3Rpb25zPy5zdGF0ZVRyYW5zaXRpb25zUGVyRXhlY3V0aW9uLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zdGVwRnVuY3Rpb25zPy5hdmVyYWdlRHVyYXRpb25NcyxcbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIGdldFJlc291cmNlQ29zdChyZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsIHJlZ2lvbjogc3RyaW5nLCB0ZW1wbGF0ZVJlc291cmNlcz86IFJlc291cmNlV2l0aElkW10pOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgLy8gQ2hlY2sgaWYgcmVzb3VyY2UgdHlwZSBpcyBleGNsdWRlZFxuICAgIGlmICh0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMocmVzb3VyY2UudHlwZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnaGlnaCcsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYFJlc291cmNlIHR5cGUgJHtyZXNvdXJjZS50eXBlfSBpcyBleGNsdWRlZCBmcm9tIGNvc3QgYW5hbHlzaXNgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRmluZCBjYWxjdWxhdG9yIHVzaW5nIGNhbkNhbGN1bGF0ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gc3VwcG9ydHNcbiAgICBjb25zdCBjYWxjdWxhdG9yID0gdGhpcy5jYWxjdWxhdG9ycy5maW5kKGNhbGMgPT4ge1xuICAgICAgaWYgKGNhbGMuY2FuQ2FsY3VsYXRlKSB7XG4gICAgICAgIHJldHVybiBjYWxjLmNhbkNhbGN1bGF0ZShyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FsYy5zdXBwb3J0cyhyZXNvdXJjZS50eXBlKTtcbiAgICB9KTtcblxuICAgIGlmICghY2FsY3VsYXRvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgUmVzb3VyY2UgdHlwZSAke3Jlc291cmNlLnR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBjYWxjdWxhdG9yLmNhbGN1bGF0ZUNvc3QocmVzb3VyY2UsIHJlZ2lvbiwgdGhpcy5wcmljaW5nQ2xpZW50LCB0ZW1wbGF0ZVJlc291cmNlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBjYWxjdWxhdGUgY29zdDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldENvc3REZWx0YShkaWZmOiBSZXNvdXJjZURpZmYsIHJlZ2lvbjogc3RyaW5nKTogUHJvbWlzZTxDb3N0RGVsdGE+IHtcbiAgICAvLyBGaWx0ZXIgb3V0IGV4Y2x1ZGVkIHJlc291cmNlcyBiZWZvcmUgcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGZpbHRlcmVkQWRkZWQgPSBkaWZmLmFkZGVkLmZpbHRlcihyID0+ICF0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMoci50eXBlKSk7XG4gICAgY29uc3QgZmlsdGVyZWRSZW1vdmVkID0gZGlmZi5yZW1vdmVkLmZpbHRlcihyID0+ICF0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMoci50eXBlKSk7XG4gICAgY29uc3QgZmlsdGVyZWRNb2RpZmllZCA9IGRpZmYubW9kaWZpZWQuZmlsdGVyKHIgPT4gIXRoaXMuZXhjbHVkZWRSZXNvdXJjZVR5cGVzLmhhcyhyLnR5cGUpKTtcblxuICAgIC8vIEJ1aWxkIHRlbXBsYXRlIHJlc291cmNlIGNvbnRleHQgZnJvbSBhbGwgcmVzb3VyY2VzIGluIHRoZSBkaWZmXG4gICAgY29uc3QgYWxsUmVzb3VyY2VzOiBSZXNvdXJjZVdpdGhJZFtdID0gW1xuICAgICAgLi4uZGlmZi5hZGRlZCxcbiAgICAgIC4uLmRpZmYucmVtb3ZlZCxcbiAgICAgIC4uLmRpZmYubW9kaWZpZWQubWFwKHIgPT4gKHtcbiAgICAgICAgbG9naWNhbElkOiByLmxvZ2ljYWxJZCxcbiAgICAgICAgdHlwZTogci50eXBlLFxuICAgICAgICBwcm9wZXJ0aWVzOiByLm5ld1Byb3BlcnRpZXMsXG4gICAgICB9KSksXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkQWRkZWQubWFwKGFzeW5jIChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBtb250aGx5Q29zdCA9IGF3YWl0IHRoaXMuZ2V0UmVzb3VyY2VDb3N0KHJlc291cmNlLCByZWdpb24sIGFsbFJlc291cmNlcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBtb250aGx5Q29zdCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCByZW1vdmVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkUmVtb3ZlZC5tYXAoYXN5bmMgKHJlc291cmNlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gYXdhaXQgdGhpcy5nZXRSZXNvdXJjZUNvc3QocmVzb3VyY2UsIHJlZ2lvbiwgYWxsUmVzb3VyY2VzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2dpY2FsSWQ6IHJlc291cmNlLmxvZ2ljYWxJZCxcbiAgICAgICAgICB0eXBlOiByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIG1vbnRobHlDb3N0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IG1vZGlmaWVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkTW9kaWZpZWQubWFwKGFzeW5jIChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRSZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQgPSB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiByZXNvdXJjZS5vbGRQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdSZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQgPSB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiByZXNvdXJjZS5uZXdQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9sZE1vbnRobHlDb3N0ID0gYXdhaXQgdGhpcy5nZXRSZXNvdXJjZUNvc3Qob2xkUmVzb3VyY2UsIHJlZ2lvbiwgYWxsUmVzb3VyY2VzKTtcbiAgICAgICAgY29uc3QgbmV3TW9udGhseUNvc3QgPSBhd2FpdCB0aGlzLmdldFJlc291cmNlQ29zdChuZXdSZXNvdXJjZSwgcmVnaW9uLCBhbGxSZXNvdXJjZXMpO1xuICAgICAgICBjb25zdCBjb3N0RGVsdGEgPSBuZXdNb250aGx5Q29zdC5hbW91bnQgLSBvbGRNb250aGx5Q29zdC5hbW91bnQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2dpY2FsSWQ6IHJlc291cmNlLmxvZ2ljYWxJZCxcbiAgICAgICAgICB0eXBlOiByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIG1vbnRobHlDb3N0OiBuZXdNb250aGx5Q29zdCxcbiAgICAgICAgICBvbGRNb250aGx5Q29zdCxcbiAgICAgICAgICBuZXdNb250aGx5Q29zdCxcbiAgICAgICAgICBjb3N0RGVsdGEsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgdG90YWxBZGRlZENvc3QgPSBhZGRlZENvc3RzLnJlZHVjZSgoc3VtLCByKSA9PiBzdW0gKyByLm1vbnRobHlDb3N0LmFtb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxSZW1vdmVkQ29zdCA9IHJlbW92ZWRDb3N0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5tb250aGx5Q29zdC5hbW91bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsTW9kaWZpZWREZWx0YSA9IG1vZGlmaWVkQ29zdHMucmVkdWNlKChzdW0sIHIpID0+IHN1bSArIHIuY29zdERlbHRhLCAwKTtcblxuICAgIGNvbnN0IHRvdGFsRGVsdGEgPSB0b3RhbEFkZGVkQ29zdCAtIHRvdGFsUmVtb3ZlZENvc3QgKyB0b3RhbE1vZGlmaWVkRGVsdGE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxEZWx0YSxcbiAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgIGFkZGVkQ29zdHMsXG4gICAgICByZW1vdmVkQ29zdHMsXG4gICAgICBtb2RpZmllZENvc3RzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzIGFuZCBjb25uZWN0aW9uc1xuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnByaWNpbmdDbGllbnQuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2luZ1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpY2luZy9QcmljaW5nU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBOEM7QUFDOUMsK0RBQTREO0FBQzVELDZFQUEwRTtBQUMxRSx5RkFBc0Y7QUFDdEYsNkVBQTBFO0FBQzFFLHlFQUFzRTtBQUN0RSwrREFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELCtFQUE0RTtBQUM1RSxxRUFBa0U7QUFDbEUscUZBQWtGO0FBQ2xGLDZFQUEwRTtBQUMxRSwrREFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELG1GQUFnRjtBQUNoRiwrRUFBNEU7QUFDNUUsbURBQWdEO0FBVWhELE1BQWEsY0FBYztJQUNqQixXQUFXLENBQTJCO0lBQ3RDLGFBQWEsQ0FBZ0I7SUFDN0IscUJBQXFCLENBQWM7SUFFM0MsWUFDRSxTQUFpQixXQUFXLEVBQzVCLGdCQUF5QyxFQUN6QyxxQkFBZ0MsRUFDaEMsV0FBeUIsRUFDekIsYUFBNkI7UUFFN0Isa0RBQWtEO1FBQ2xELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixpREFBaUQ7WUFDakQsSUFBSSxZQUFzQyxDQUFDO1lBQzNDLElBQUksV0FBVyxFQUFFLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxhQUFhLEdBQUcsV0FBVyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsMEJBQTBCLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSw2QkFBYSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMv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QUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixNQUFNLFVBQVUsR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7UUFFMUUsT0FBTztZQUNMLFVBQVU7WUFDVixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUE1TUQsd0NBNE1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVNYW5hZ2VyIH0gZnJvbSAnLi9DYWNoZU1hbmFnZXInO1xuaW1wb3J0IHsgQUxCQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvQUxCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBBUElHYXRld2F5Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvQVBJR2F0ZXdheUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgQXV0b1NjYWxpbmdHcm91cENhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0F1dG9TY2FsaW5nR3JvdXBDYWxjdWxhdG9yJztcbmltcG9ydCB7IENsb3VkRnJvbnRDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9DbG91ZEZyb250Q2FsY3VsYXRvcic7XG5pbXBvcnQgeyBEeW5hbW9EQkNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0R5bmFtb0RCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBFQzJDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FQzJDYWxjdWxhdG9yJztcbmltcG9ydCB7IEVDU0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0VDU0NhbGN1bGF0b3InO1xuaW1wb3J0IHsgRWxhc3RpQ2FjaGVDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FbGFzdGlDYWNoZUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgTGFtYmRhQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTGFtYmRhQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBMYXVuY2hUZW1wbGF0ZUNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0xhdW5jaFRlbXBsYXRlQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBOYXRHYXRld2F5Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTmF0R2F0ZXdheUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgTkxCQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTkxCQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBSRFNDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9SRFNDYWxjdWxhdG9yJztcbmltcG9ydCB7IFMzQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvUzNDYWxjdWxhdG9yJztcbmltcG9ydCB7IFNOU0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL1NOU0NhbGN1bGF0b3InO1xuaW1wb3J0IHsgU1FTQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvU1FTQ2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTdGVwRnVuY3Rpb25zQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvU3RlcEZ1bmN0aW9uc0NhbGN1bGF0b3InO1xuaW1wb3J0IHsgVlBDRW5kcG9pbnRDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9WUENFbmRwb2ludENhbGN1bGF0b3InO1xuaW1wb3J0IHsgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4vUHJpY2luZ0NsaWVudCc7XG5pbXBvcnQge1xuICBQcmljaW5nU2VydmljZSBhcyBJUHJpY2luZ1NlcnZpY2UsXG4gIE1vbnRobHlDb3N0LFxuICBDb3N0RGVsdGEsXG4gIFJlc291cmNlQ29zdENhbGN1bGF0b3IsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgVXNhZ2VBc3N1bXB0aW9uc0NvbmZpZywgQ2FjaGVDb25maWcsIENvc3RBbmFseXplckNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCwgUmVzb3VyY2VEaWZmIH0gZnJvbSAnLi4vZGlmZi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBQcmljaW5nU2VydmljZSBpbXBsZW1lbnRzIElQcmljaW5nU2VydmljZSB7XG4gIHByaXZhdGUgY2FsY3VsYXRvcnM6IFJlc291cmNlQ29zdENhbGN1bGF0b3JbXTtcbiAgcHJpdmF0ZSBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50O1xuICBwcml2YXRlIGV4Y2x1ZGVkUmVzb3VyY2VUeXBlczogU2V0PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVnaW9uOiBzdHJpbmcgPSAndXMtZWFzdC0xJyxcbiAgICB1c2FnZUFzc3VtcHRpb25zPzogVXNhZ2VBc3N1bXB0aW9uc0NvbmZpZyxcbiAgICBleGNsdWRlZFJlc291cmNlVHlwZXM/OiBzdHJpbmdbXSxcbiAgICBjYWNoZUNvbmZpZz86IENhY2hlQ29uZmlnLFxuICAgIHByaWNpbmdDbGllbnQ/OiBQcmljaW5nQ2xpZW50LFxuICApIHtcbiAgICAvLyBVc2UgcHJvdmlkZWQgcHJpY2luZyBjbGllbnQgb3IgY3JlYXRlIGEgbmV3IG9uZVxuICAgIGlmIChwcmljaW5nQ2xpZW50KSB7XG4gICAgICB0aGlzLnByaWNpbmdDbGllbnQgPSBwcmljaW5nQ2xpZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbml0aWFsaXplIGNhY2hlIG1hbmFnZXIgaWYgY2FjaGluZyBpcyBlbmFibGVkXG4gICAgICBsZXQgY2FjaGVNYW5hZ2VyOiBDYWNoZU1hbmFnZXIgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoY2FjaGVDb25maWc/LmVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlRHVyYXRpb24gPSBjYWNoZUNvbmZpZz8uZHVyYXRpb25Ib3VycyA/PyAyNDtcbiAgICAgICAgY2FjaGVNYW5hZ2VyID0gbmV3IENhY2hlTWFuYWdlcignLmNkay1jb3N0LWFuYWx5emVyLWNhY2hlJywgY2FjaGVEdXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJpY2luZ0NsaWVudCA9IG5ldyBQcmljaW5nQ2xpZW50KHJlZ2lvbiwgY2FjaGVNYW5hZ2VyKTtcbiAgICB9XG4gICAgdGhpcy5leGNsdWRlZFJlc291cmNlVHlwZXMgPSBuZXcgU2V0KGV4Y2x1ZGVkUmVzb3VyY2VUeXBlcyB8fCBbXSk7XG4gICAgXG4gICAgLy8gQnVpbGQgY29uZmlnIG9iamVjdCBmb3IgY2FsY3VsYXRvcnMgdGhhdCBuZWVkIGl0XG4gICAgY29uc3QgY29uZmlnOiBDb3N0QW5hbHl6ZXJDb25maWcgfCB1bmRlZmluZWQgPSB1c2FnZUFzc3VtcHRpb25zID8geyB1c2FnZUFzc3VtcHRpb25zIH0gOiB1bmRlZmluZWQ7XG4gICAgXG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IFtcbiAgICAgIG5ldyBFQzJDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgUzNDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgTGFtYmRhQ2FsY3VsYXRvcihcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8ubGFtYmRhPy5pbnZvY2F0aW9uc1Blck1vbnRoLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5sYW1iZGE/LmF2ZXJhZ2VEdXJhdGlvbk1zLFxuICAgICAgKSxcbiAgICAgIG5ldyBSRFNDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgRHluYW1vREJDYWxjdWxhdG9yKGNvbmZpZyksXG4gICAgICBuZXcgRUNTQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IEFQSUdhdGV3YXlDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgTmF0R2F0ZXdheUNhbGN1bGF0b3IodXNhZ2VBc3N1bXB0aW9ucz8ubmF0R2F0ZXdheT8uZGF0YVByb2Nlc3NlZEdCKSxcbiAgICAgIG5ldyBBTEJDYWxjdWxhdG9yKFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5hbGI/Lm5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5hbGI/LmFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5hbGI/LnByb2Nlc3NlZEJ5dGVzR0IsXG4gICAgICApLFxuICAgICAgbmV3IE5MQkNhbGN1bGF0b3IoXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/Lm5sYj8ubmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQsXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/Lm5sYj8uYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUsXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/Lm5sYj8ucHJvY2Vzc2VkQnl0ZXNHQixcbiAgICAgICksXG4gICAgICBuZXcgVlBDRW5kcG9pbnRDYWxjdWxhdG9yKHVzYWdlQXNzdW1wdGlvbnM/LnZwY0VuZHBvaW50Py5kYXRhUHJvY2Vzc2VkR0IpLFxuICAgICAgbmV3IENsb3VkRnJvbnRDYWxjdWxhdG9yKFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5jbG91ZGZyb250Py5kYXRhVHJhbnNmZXJHQixcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uY2xvdWRmcm9udD8ucmVxdWVzdHMsXG4gICAgICApLFxuICAgICAgbmV3IEVsYXN0aUNhY2hlQ2FsY3VsYXRvcigpLFxuICAgICAgbmV3IEF1dG9TY2FsaW5nR3JvdXBDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgTGF1bmNoVGVtcGxhdGVDYWxjdWxhdG9yKCksXG4gICAgICBuZXcgU05TQ2FsY3VsYXRvcihcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uc25zPy5tb250aGx5UHVibGlzaGVzLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zbnM/Lmh0dHBEZWxpdmVyaWVzLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zbnM/LmVtYWlsRGVsaXZlcmllcyxcbiAgICAgICAgdXNhZ2VBc3N1bXB0aW9ucz8uc25zPy5zbXNEZWxpdmVyaWVzLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zbnM/Lm1vYmlsZVB1c2hEZWxpdmVyaWVzLFxuICAgICAgKSxcbiAgICAgIG5ldyBTUVNDYWxjdWxhdG9yKGNvbmZpZyksXG4gICAgICBuZXcgU3RlcEZ1bmN0aW9uc0NhbGN1bGF0b3IoXG4gICAgICAgIHVzYWdlQXNzdW1wdGlvbnM/LnN0ZXBGdW5jdGlvbnM/Lm1vbnRobHlFeGVjdXRpb25zLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zdGVwRnVuY3Rpb25zPy5zdGF0ZVRyYW5zaXRpb25zUGVyRXhlY3V0aW9uLFxuICAgICAgICB1c2FnZUFzc3VtcHRpb25zPy5zdGVwRnVuY3Rpb25zPy5hdmVyYWdlRHVyYXRpb25NcyxcbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIGdldFJlc291cmNlQ29zdChyZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsIHJlZ2lvbjogc3RyaW5nLCB0ZW1wbGF0ZVJlc291cmNlcz86IFJlc291cmNlV2l0aElkW10pOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgLy8gQ2hlY2sgaWYgcmVzb3VyY2UgdHlwZSBpcyBleGNsdWRlZFxuICAgIGlmICh0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMocmVzb3VyY2UudHlwZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnaGlnaCcsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYFJlc291cmNlIHR5cGUgJHtyZXNvdXJjZS50eXBlfSBpcyBleGNsdWRlZCBmcm9tIGNvc3QgYW5hbHlzaXNgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRmluZCBjYWxjdWxhdG9yIHVzaW5nIGNhbkNhbGN1bGF0ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gc3VwcG9ydHNcbiAgICBjb25zdCBjYWxjdWxhdG9yID0gdGhpcy5jYWxjdWxhdG9ycy5maW5kKGNhbGMgPT4ge1xuICAgICAgaWYgKGNhbGMuY2FuQ2FsY3VsYXRlKSB7XG4gICAgICAgIHJldHVybiBjYWxjLmNhbkNhbGN1bGF0ZShyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FsYy5zdXBwb3J0cyhyZXNvdXJjZS50eXBlKTtcbiAgICB9KTtcblxuICAgIGlmICghY2FsY3VsYXRvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgUmVzb3VyY2UgdHlwZSAke3Jlc291cmNlLnR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBjYWxjdWxhdG9yLmNhbGN1bGF0ZUNvc3QocmVzb3VyY2UsIHJlZ2lvbiwgdGhpcy5wcmljaW5nQ2xpZW50LCB0ZW1wbGF0ZVJlc291cmNlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBjYWxjdWxhdGUgY29zdDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldENvc3REZWx0YShkaWZmOiBSZXNvdXJjZURpZmYsIHJlZ2lvbjogc3RyaW5nKTogUHJvbWlzZTxDb3N0RGVsdGE+IHtcbiAgICAvLyBGaWx0ZXIgb3V0IGV4Y2x1ZGVkIHJlc291cmNlcyBiZWZvcmUgcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGZpbHRlcmVkQWRkZWQgPSBkaWZmLmFkZGVkLmZpbHRlcihyID0+ICF0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMoci50eXBlKSk7XG4gICAgY29uc3QgZmlsdGVyZWRSZW1vdmVkID0gZGlmZi5yZW1vdmVkLmZpbHRlcihyID0+ICF0aGlzLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5oYXMoci50eXBlKSk7XG4gICAgY29uc3QgZmlsdGVyZWRNb2RpZmllZCA9IGRpZmYubW9kaWZpZWQuZmlsdGVyKHIgPT4gIXRoaXMuZXhjbHVkZWRSZXNvdXJjZVR5cGVzLmhhcyhyLnR5cGUpKTtcblxuICAgIC8vIEJ1aWxkIHRlbXBsYXRlIHJlc291cmNlIGNvbnRleHQgZnJvbSBhbGwgcmVzb3VyY2VzIGluIHRoZSBkaWZmXG4gICAgY29uc3QgYWxsUmVzb3VyY2VzOiBSZXNvdXJjZVdpdGhJZFtdID0gW1xuICAgICAgLi4uZGlmZi5hZGRlZCxcbiAgICAgIC4uLmRpZmYucmVtb3ZlZCxcbiAgICAgIC4uLmRpZmYubW9kaWZpZWQubWFwKHIgPT4gKHtcbiAgICAgICAgbG9naWNhbElkOiByLmxvZ2ljYWxJZCxcbiAgICAgICAgdHlwZTogci50eXBlLFxuICAgICAgICBwcm9wZXJ0aWVzOiByLm5ld1Byb3BlcnRpZXMsXG4gICAgICB9KSksXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkQWRkZWQubWFwKGFzeW5jIChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBtb250aGx5Q29zdCA9IGF3YWl0IHRoaXMuZ2V0UmVzb3VyY2VDb3N0KHJlc291cmNlLCByZWdpb24sIGFsbFJlc291cmNlcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBtb250aGx5Q29zdCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCByZW1vdmVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkUmVtb3ZlZC5tYXAoYXN5bmMgKHJlc291cmNlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gYXdhaXQgdGhpcy5nZXRSZXNvdXJjZUNvc3QocmVzb3VyY2UsIHJlZ2lvbiwgYWxsUmVzb3VyY2VzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2dpY2FsSWQ6IHJlc291cmNlLmxvZ2ljYWxJZCxcbiAgICAgICAgICB0eXBlOiByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIG1vbnRobHlDb3N0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IG1vZGlmaWVkQ29zdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbHRlcmVkTW9kaWZpZWQubWFwKGFzeW5jIChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRSZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQgPSB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiByZXNvdXJjZS5vbGRQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdSZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQgPSB7XG4gICAgICAgICAgbG9naWNhbElkOiByZXNvdXJjZS5sb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZTogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiByZXNvdXJjZS5uZXdQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9sZE1vbnRobHlDb3N0ID0gYXdhaXQgdGhpcy5nZXRSZXNvdXJjZUNvc3Qob2xkUmVzb3VyY2UsIHJlZ2lvbiwgYWxsUmVzb3VyY2VzKTtcbiAgICAgICAgY29uc3QgbmV3TW9udGhseUNvc3QgPSBhd2FpdCB0aGlzLmdldFJlc291cmNlQ29zdChuZXdSZXNvdXJjZSwgcmVnaW9uLCBhbGxSZXNvdXJjZXMpO1xuICAgICAgICBjb25zdCBjb3N0RGVsdGEgPSBuZXdNb250aGx5Q29zdC5hbW91bnQgLSBvbGRNb250aGx5Q29zdC5hbW91bnQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2dpY2FsSWQ6IHJlc291cmNlLmxvZ2ljYWxJZCxcbiAgICAgICAgICB0eXBlOiByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIG1vbnRobHlDb3N0OiBuZXdNb250aGx5Q29zdCxcbiAgICAgICAgICBvbGRNb250aGx5Q29zdCxcbiAgICAgICAgICBuZXdNb250aGx5Q29zdCxcbiAgICAgICAgICBjb3N0RGVsdGEsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgdG90YWxBZGRlZENvc3QgPSBhZGRlZENvc3RzLnJlZHVjZSgoc3VtLCByKSA9PiBzdW0gKyByLm1vbnRobHlDb3N0LmFtb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxSZW1vdmVkQ29zdCA9IHJlbW92ZWRDb3N0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5tb250aGx5Q29zdC5hbW91bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsTW9kaWZpZWREZWx0YSA9IG1vZGlmaWVkQ29zdHMucmVkdWNlKChzdW0sIHIpID0+IHN1bSArIHIuY29zdERlbHRhLCAwKTtcblxuICAgIGNvbnN0IHRvdGFsRGVsdGEgPSB0b3RhbEFkZGVkQ29zdCAtIHRvdGFsUmVtb3ZlZENvc3QgKyB0b3RhbE1vZGlmaWVkRGVsdGE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxEZWx0YSxcbiAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgIGFkZGVkQ29zdHMsXG4gICAgICByZW1vdmVkQ29zdHMsXG4gICAgICBtb2RpZmllZENvc3RzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzIGFuZCBjb25uZWN0aW9uc1xuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnByaWNpbmdDbGllbnQuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { ResourceWithId } from '../../diff/types';
2
+ import { ResourceCostCalculator, MonthlyCost, PricingClient } from '../types';
3
+ import { CostAnalyzerConfig } from '../../config/types';
4
+ export declare class SQSCalculator implements ResourceCostCalculator {
5
+ private readonly DEFAULT_MONTHLY_REQUESTS;
6
+ private readonly FALLBACK_STANDARD_PRICE_PER_MILLION;
7
+ private readonly FALLBACK_FIFO_PRICE_PER_MILLION;
8
+ private config?;
9
+ constructor(config?: CostAnalyzerConfig);
10
+ supports(resourceType: string): boolean;
11
+ calculateCost(resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
12
+ private isFifoQueue;
13
+ private getMonthlyRequests;
14
+ private buildAssumptions;
15
+ private getPricePerMillion;
16
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQSCalculator = void 0;
4
+ const RegionMapper_1 = require("../RegionMapper");
5
+ class SQSCalculator {
6
+ DEFAULT_MONTHLY_REQUESTS = 1_000_000;
7
+ // Fallback pricing rates (AWS SQS us-east-1 pricing as of 2024)
8
+ // Used when API pricing is unavailable but user provided usage assumptions
9
+ FALLBACK_STANDARD_PRICE_PER_MILLION = 0.40;
10
+ FALLBACK_FIFO_PRICE_PER_MILLION = 0.50;
11
+ config;
12
+ constructor(config) {
13
+ this.config = config;
14
+ }
15
+ supports(resourceType) {
16
+ return resourceType === 'AWS::SQS::Queue';
17
+ }
18
+ async calculateCost(resource, region, pricingClient) {
19
+ const isFifo = this.isFifoQueue(resource);
20
+ const monthlyRequests = this.getMonthlyRequests();
21
+ try {
22
+ const pricePerMillion = await this.getPricePerMillion(region, isFifo, pricingClient);
23
+ const assumptions = this.buildAssumptions(monthlyRequests, isFifo);
24
+ if (pricePerMillion === null) {
25
+ const hasCustomAssumptions = this.config?.usageAssumptions?.sqs?.monthlyRequests !== undefined;
26
+ if (hasCustomAssumptions) {
27
+ const fallbackPrice = isFifo
28
+ ? this.FALLBACK_FIFO_PRICE_PER_MILLION
29
+ : this.FALLBACK_STANDARD_PRICE_PER_MILLION;
30
+ const monthlyCost = (monthlyRequests / 1_000_000) * fallbackPrice;
31
+ return {
32
+ amount: monthlyCost,
33
+ currency: 'USD',
34
+ confidence: 'low',
35
+ assumptions: [
36
+ 'Using fallback pricing (API unavailable)',
37
+ ...assumptions,
38
+ ],
39
+ };
40
+ }
41
+ return {
42
+ amount: 0,
43
+ currency: 'USD',
44
+ confidence: 'unknown',
45
+ assumptions: [
46
+ `Pricing data not available for SQS in region ${region}`,
47
+ ...assumptions,
48
+ ],
49
+ };
50
+ }
51
+ const monthlyCost = (monthlyRequests / 1_000_000) * pricePerMillion;
52
+ return {
53
+ amount: monthlyCost,
54
+ currency: 'USD',
55
+ confidence: 'medium',
56
+ assumptions,
57
+ };
58
+ }
59
+ catch (error) {
60
+ const assumptions = this.buildAssumptions(monthlyRequests, isFifo);
61
+ const hasCustomAssumptions = this.config?.usageAssumptions?.sqs?.monthlyRequests !== undefined;
62
+ if (hasCustomAssumptions) {
63
+ const fallbackPrice = isFifo
64
+ ? this.FALLBACK_FIFO_PRICE_PER_MILLION
65
+ : this.FALLBACK_STANDARD_PRICE_PER_MILLION;
66
+ const monthlyCost = (monthlyRequests / 1_000_000) * fallbackPrice;
67
+ return {
68
+ amount: monthlyCost,
69
+ currency: 'USD',
70
+ confidence: 'low',
71
+ assumptions: [
72
+ 'Using fallback pricing (API error)',
73
+ ...assumptions,
74
+ ],
75
+ };
76
+ }
77
+ return {
78
+ amount: 0,
79
+ currency: 'USD',
80
+ confidence: 'unknown',
81
+ assumptions: [
82
+ `Failed to fetch pricing: ${error instanceof Error ? error.message : String(error)}`,
83
+ ...assumptions,
84
+ ],
85
+ };
86
+ }
87
+ }
88
+ isFifoQueue(resource) {
89
+ return resource.properties.FifoQueue === true ||
90
+ resource.properties.FifoQueue === 'true';
91
+ }
92
+ getMonthlyRequests() {
93
+ return this.config?.usageAssumptions?.sqs?.monthlyRequests ?? this.DEFAULT_MONTHLY_REQUESTS;
94
+ }
95
+ buildAssumptions(monthlyRequests, isFifo) {
96
+ const assumptions = [
97
+ `Assumes ${monthlyRequests.toLocaleString()} requests per month`,
98
+ isFifo ? 'FIFO queue' : 'Standard queue',
99
+ 'Does not include data transfer costs',
100
+ ];
101
+ if (this.config?.usageAssumptions?.sqs?.monthlyRequests !== undefined) {
102
+ assumptions.push('Using custom monthly requests assumption from configuration');
103
+ }
104
+ return assumptions;
105
+ }
106
+ async getPricePerMillion(region, isFifo, pricingClient) {
107
+ const normalizedRegion = (0, RegionMapper_1.normalizeRegion)(region);
108
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
109
+ // Standard queue usagetype: USE1-Requests (or just Requests for us-east-1)
110
+ // FIFO queue usagetype: USE1-Requests-FIFO (or just Requests-FIFO for us-east-1)
111
+ const baseUsageType = isFifo ? 'Requests-FIFO' : 'Requests';
112
+ const usageType = regionPrefix ? `${regionPrefix}-${baseUsageType}` : baseUsageType;
113
+ return pricingClient.getPrice({
114
+ serviceCode: 'AWSQueueService',
115
+ region: normalizedRegion,
116
+ filters: [
117
+ { field: 'productFamily', value: 'Queue' },
118
+ { field: 'usagetype', value: usageType },
119
+ ],
120
+ });
121
+ }
122
+ }
123
+ exports.SQSCalculator = SQSCalculator;
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FTQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL1NRU0NhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQW1FO0FBR25FLE1BQWEsYUFBYTtJQUNQLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUV0RCxnRUFBZ0U7SUFDaEUsMkVBQTJFO0lBQzFELG1DQUFtQyxHQUFHLElBQUksQ0FBQztJQUMzQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7SUFFaEQsTUFBTSxDQUFzQjtJQUVwQyxZQUFZLE1BQTJCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsWUFBb0I7UUFDM0IsT0FBTyxZQUFZLEtBQUssaUJBQWlCLENBQUM7SUFDNUMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQztZQUNILE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFckYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVuRSxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxlQUFlLEtBQUssU0FBUyxDQUFDO2dCQUUvRixJQUFJLG9CQUFvQixFQUFFLENB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UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQzlCLE1BQWMsRUFDZCxNQUFlLEVBQ2YsYUFBNEI7UUFFNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsTUFBTSxZQUFZLEdBQUcsSUFBQSw4QkFBZSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLDJFQUEyRTtRQUMzRSxpRkFBaUY7UUFDakYsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFcEYsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBQzVCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2FBQ3pDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcEpELHNDQW9KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiwgZ2V0UmVnaW9uUHJlZml4IH0gZnJvbSAnLi4vUmVnaW9uTWFwcGVyJztcbmltcG9ydCB7IENvc3RBbmFseXplckNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBTUVNDYWxjdWxhdG9yIGltcGxlbWVudHMgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9NT05USExZX1JFUVVFU1RTID0gMV8wMDBfMDAwO1xuXG4gIC8vIEZhbGxiYWNrIHByaWNpbmcgcmF0ZXMgKEFXUyBTUVMgdXMtZWFzdC0xIHByaWNpbmcgYXMgb2YgMjAyNClcbiAgLy8gVXNlZCB3aGVuIEFQSSBwcmljaW5nIGlzIHVuYXZhaWxhYmxlIGJ1dCB1c2VyIHByb3ZpZGVkIHVzYWdlIGFzc3VtcHRpb25zXG4gIHByaXZhdGUgcmVhZG9ubHkgRkFMTEJBQ0tfU1RBTkRBUkRfUFJJQ0VfUEVSX01JTExJT04gPSAwLjQwO1xuICBwcml2YXRlIHJlYWRvbmx5IEZBTExCQUNLX0ZJRk9fUFJJQ0VfUEVSX01JTExJT04gPSAwLjUwO1xuXG4gIHByaXZhdGUgY29uZmlnPzogQ29zdEFuYWx5emVyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IENvc3RBbmFseXplckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgc3VwcG9ydHMocmVzb3VyY2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVzb3VyY2VUeXBlID09PSAnQVdTOjpTUVM6OlF1ZXVlJztcbiAgfVxuXG4gIGFzeW5jIGNhbGN1bGF0ZUNvc3QoXG4gICAgcmVzb3VyY2U6IFJlc291cmNlV2l0aElkLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHByaWNpbmdDbGllbnQ6IFByaWNpbmdDbGllbnQsXG4gICk6IFByb21pc2U8TW9udGhseUNvc3Q+IHtcbiAgICBjb25zdCBpc0ZpZm8gPSB0aGlzLmlzRmlmb1F1ZXVlKHJlc291cmNlKTtcbiAgICBjb25zdCBtb250aGx5UmVxdWVzdHMgPSB0aGlzLmdldE1vbnRobHlSZXF1ZXN0cygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByaWNlUGVyTWlsbGlvbiA9IGF3YWl0IHRoaXMuZ2V0UHJpY2VQZXJNaWxsaW9uKHJlZ2lvbiwgaXNGaWZvLCBwcmljaW5nQ2xpZW50KTtcblxuICAgICAgY29uc3QgYXNzdW1wdGlvbnMgPSB0aGlzLmJ1aWxkQXNzdW1wdGlvbnMobW9udGhseVJlcXVlc3RzLCBpc0ZpZm8pO1xuXG4gICAgICBpZiAocHJpY2VQZXJNaWxsaW9uID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGhhc0N1c3RvbUFzc3VtcHRpb25zID0gdGhpcy5jb25maWc/LnVzYWdlQXNzdW1wdGlvbnM/LnNxcz8ubW9udGhseVJlcXVlc3RzICE9PSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGhhc0N1c3RvbUFzc3VtcHRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tQcmljZSA9IGlzRmlmb1xuICAgICAgICAgICAgPyB0aGlzLkZBTExCQUNLX0ZJRk9fUFJJQ0VfUEVSX01JTExJT05cbiAgICAgICAgICAgIDogdGhpcy5GQUxMQkFDS19TVEFOREFSRF9QUklDRV9QRVJfTUlMTElPTjtcbiAgICAgICAgICBjb25zdCBtb250aGx5Q29zdCA9IChtb250aGx5UmVxdWVzdHMgLyAxXzAwMF8wMDApICogZmFsbGJhY2tQcmljZTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbW91bnQ6IG1vbnRobHlDb3N0LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgY29uZmlkZW5jZTogJ2xvdycsXG4gICAgICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgICAgICAnVXNpbmcgZmFsbGJhY2sgcHJpY2luZyAoQVBJIHVuYXZhaWxhYmxlKScsXG4gICAgICAgICAgICAgIC4uLmFzc3VtcHRpb25zLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgICAgYFByaWNpbmcgZGF0YSBub3QgYXZhaWxhYmxlIGZvciBTUVMgaW4gcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgICAgICAuLi5hc3N1bXB0aW9ucyxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtb250aGx5Q29zdCA9IChtb250aGx5UmVxdWVzdHMgLyAxXzAwMF8wMDApICogcHJpY2VQZXJNaWxsaW9uO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IG1vbnRobHlDb3N0LFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nLFxuICAgICAgICBhc3N1bXB0aW9ucyxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25zID0gdGhpcy5idWlsZEFzc3VtcHRpb25zKG1vbnRobHlSZXF1ZXN0cywgaXNGaWZvKTtcbiAgICAgIGNvbnN0IGhhc0N1c3RvbUFzc3VtcHRpb25zID0gdGhpcy5jb25maWc/LnVzYWdlQXNzdW1wdGlvbnM/LnNxcz8ubW9udGhseVJlcXVlc3RzICE9PSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChoYXNDdXN0b21Bc3N1bXB0aW9ucykge1xuICAgICAgICBjb25zdCBmYWxsYmFja1ByaWNlID0gaXNGaWZvXG4gICAgICAgICAgPyB0aGlzLkZBTExCQUNLX0ZJRk9fUFJJQ0VfUEVSX01JTExJT05cbiAgICAgICAgICA6IHRoaXMuRkFMTEJBQ0tfU1RBTkRBUkRfUFJJQ0VfUEVSX01JTExJT047XG4gICAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gKG1vbnRobHlSZXF1ZXN0cyAvIDFfMDAwXzAwMCkgKiBmYWxsYmFja1ByaWNlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgY29uZmlkZW5jZTogJ2xvdycsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgICdVc2luZyBmYWxsYmFjayBwcmljaW5nIChBUEkgZXJyb3IpJyxcbiAgICAgICAgICAgIC4uLmFzc3VtcHRpb25zLFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxuICAgICAgICAgIC4uLmFzc3VtcHRpb25zLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzRmlmb1F1ZXVlKHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZS5wcm9wZXJ0aWVzLkZpZm9RdWV1ZSA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICByZXNvdXJjZS5wcm9wZXJ0aWVzLkZpZm9RdWV1ZSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb250aGx5UmVxdWVzdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnVzYWdlQXNzdW1wdGlvbnM/LnNxcz8ubW9udGhseVJlcXVlc3RzID8/IHRoaXMuREVGQVVMVF9NT05USExZX1JFUVVFU1RTO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFzc3VtcHRpb25zKG1vbnRobHlSZXF1ZXN0czogbnVtYmVyLCBpc0ZpZm86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbnMgPSBbXG4gICAgICBgQXNzdW1lcyAke21vbnRobHlSZXF1ZXN0cy50b0xvY2FsZVN0cmluZygpfSByZXF1ZXN0cyBwZXIgbW9udGhgLFxuICAgICAgaXNGaWZvID8gJ0ZJRk8gcXVldWUnIDogJ1N0YW5kYXJkIHF1ZXVlJyxcbiAgICAgICdEb2VzIG5vdCBpbmNsdWRlIGRhdGEgdHJhbnNmZXIgY29zdHMnLFxuICAgIF07XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnVzYWdlQXNzdW1wdGlvbnM/LnNxcz8ubW9udGhseVJlcXVlc3RzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc3VtcHRpb25zLnB1c2goJ1VzaW5nIGN1c3RvbSBtb250aGx5IHJlcXVlc3RzIGFzc3VtcHRpb24gZnJvbSBjb25maWd1cmF0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcmljZVBlck1pbGxpb24oXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgaXNGaWZvOiBib29sZWFuLFxuICAgIHByaWNpbmdDbGllbnQ6IFByaWNpbmdDbGllbnQsXG4gICk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWdpb24gPSBub3JtYWxpemVSZWdpb24ocmVnaW9uKTtcbiAgICBjb25zdCByZWdpb25QcmVmaXggPSBnZXRSZWdpb25QcmVmaXgocmVnaW9uKTtcblxuICAgIC8vIFN0YW5kYXJkIHF1ZXVlIHVzYWdldHlwZTogVVNFMS1SZXF1ZXN0cyAob3IganVzdCBSZXF1ZXN0cyBmb3IgdXMtZWFzdC0xKVxuICAgIC8vIEZJRk8gcXVldWUgdXNhZ2V0eXBlOiBVU0UxLVJlcXVlc3RzLUZJRk8gKG9yIGp1c3QgUmVxdWVzdHMtRklGTyBmb3IgdXMtZWFzdC0xKVxuICAgIGNvbnN0IGJhc2VVc2FnZVR5cGUgPSBpc0ZpZm8gPyAnUmVxdWVzdHMtRklGTycgOiAnUmVxdWVzdHMnO1xuICAgIGNvbnN0IHVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tJHtiYXNlVXNhZ2VUeXBlfWAgOiBiYXNlVXNhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgc2VydmljZUNvZGU6ICdBV1NRdWV1ZVNlcnZpY2UnLFxuICAgICAgcmVnaW9uOiBub3JtYWxpemVkUmVnaW9uLFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnUXVldWUnIH0sXG4gICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogdXNhZ2VUeXBlIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -8,6 +8,7 @@ export { RDSCalculator } from './calculators/RDSCalculator';
8
8
  export { CloudFrontCalculator } from './calculators/CloudFrontCalculator';
9
9
  export { ElastiCacheCalculator } from './calculators/ElastiCacheCalculator';
10
10
  export { SNSCalculator, SNSCostBreakdown } from './calculators/SNSCalculator';
11
+ export { SQSCalculator } from './calculators/SQSCalculator';
11
12
  export { LaunchTemplateCalculator, LaunchTemplateConfig, EbsVolumeConfig, } from './calculators/LaunchTemplateCalculator';
12
13
  export { StepFunctionsCalculator, StepFunctionsWorkflowType, } from './calculators/StepFunctionsCalculator';
13
14
  export * from './types';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.StepFunctionsCalculator = exports.LaunchTemplateCalculator = exports.SNSCalculator = exports.ElastiCacheCalculator = exports.CloudFrontCalculator = exports.RDSCalculator = exports.LambdaCalculator = exports.S3Calculator = exports.EC2Calculator = exports.CacheManager = exports.PricingClient = exports.PricingService = void 0;
17
+ exports.StepFunctionsCalculator = exports.LaunchTemplateCalculator = exports.SQSCalculator = exports.SNSCalculator = exports.ElastiCacheCalculator = exports.CloudFrontCalculator = exports.RDSCalculator = exports.LambdaCalculator = exports.S3Calculator = exports.EC2Calculator = exports.CacheManager = exports.PricingClient = exports.PricingService = void 0;
18
18
  var PricingService_1 = require("./PricingService");
19
19
  Object.defineProperty(exports, "PricingService", { enumerable: true, get: function () { return PricingService_1.PricingService; } });
20
20
  var PricingClient_1 = require("./PricingClient");
@@ -35,9 +35,11 @@ var ElastiCacheCalculator_1 = require("./calculators/ElastiCacheCalculator");
35
35
  Object.defineProperty(exports, "ElastiCacheCalculator", { enumerable: true, get: function () { return ElastiCacheCalculator_1.ElastiCacheCalculator; } });
36
36
  var SNSCalculator_1 = require("./calculators/SNSCalculator");
37
37
  Object.defineProperty(exports, "SNSCalculator", { enumerable: true, get: function () { return SNSCalculator_1.SNSCalculator; } });
38
+ var SQSCalculator_1 = require("./calculators/SQSCalculator");
39
+ Object.defineProperty(exports, "SQSCalculator", { enumerable: true, get: function () { return SQSCalculator_1.SQSCalculator; } });
38
40
  var LaunchTemplateCalculator_1 = require("./calculators/LaunchTemplateCalculator");
39
41
  Object.defineProperty(exports, "LaunchTemplateCalculator", { enumerable: true, get: function () { return LaunchTemplateCalculator_1.LaunchTemplateCalculator; } });
40
42
  var StepFunctionsCalculator_1 = require("./calculators/StepFunctionsCalculator");
41
43
  Object.defineProperty(exports, "StepFunctionsCalculator", { enumerable: true, get: function () { return StepFunctionsCalculator_1.StepFunctionsCalculator; } });
42
44
  __exportStar(require("./types"), exports);
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpY2luZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsaURBQWdEO0FBQXZDLDhHQUFBLGFBQWEsT0FBQTtBQUN0QiwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLDZEQUE0RDtBQUFuRCw4R0FBQSxhQUFhLE9BQUE7QUFDdEIsMkRBQTBEO0FBQWpELDRHQUFBLFlBQVksT0FBQTtBQUNyQixtRUFBa0U7QUFBekQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsNkRBQTREO0FBQW5ELDhHQUFBLGFBQWEsT0FBQTtBQUN0QiwyRUFBMEU7QUFBakUsNEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IsNkVBQTRFO0FBQW5FLDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDZEQUE4RTtBQUFyRSw4R0FBQSxhQUFhLE9BQUE7QUFDdEIsbUZBSWdEO0FBSDlDLG9JQUFBLHdCQUF3QixPQUFBO0FBSTFCLGlGQUcrQztBQUY3QyxrSUFBQSx1QkFBdUIsT0FBQTtBQUd6QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQcmljaW5nU2VydmljZSB9IGZyb20gJy4vUHJpY2luZ1NlcnZpY2UnO1xuZXhwb3J0IHsgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4vUHJpY2luZ0NsaWVudCc7XG5leHBvcnQgeyBDYWNoZU1hbmFnZXIgfSBmcm9tICcuL0NhY2hlTWFuYWdlcic7XG5leHBvcnQgeyBFQzJDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FQzJDYWxjdWxhdG9yJztcbmV4cG9ydCB7IFMzQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvUzNDYWxjdWxhdG9yJztcbmV4cG9ydCB7IExhbWJkYUNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0xhbWJkYUNhbGN1bGF0b3InO1xuZXhwb3J0IHsgUkRTQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvUkRTQ2FsY3VsYXRvcic7XG5leHBvcnQgeyBDbG91ZEZyb250Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvQ2xvdWRGcm9udENhbGN1bGF0b3InO1xuZXhwb3J0IHsgRWxhc3RpQ2FjaGVDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9FbGFzdGlDYWNoZUNhbGN1bGF0b3InO1xuZXhwb3J0IHsgU05TQ2FsY3VsYXRvciwgU05TQ29zdEJyZWFrZG93biB9IGZyb20gJy4vY2FsY3VsYXRvcnMvU05TQ2FsY3VsYXRvcic7XG5leHBvcnQge1xuICBMYXVuY2hUZW1wbGF0ZUNhbGN1bGF0b3IsXG4gIExhdW5jaFRlbXBsYXRlQ29uZmlnLFxuICBFYnNWb2x1bWVDb25maWcsXG59IGZyb20gJy4vY2FsY3VsYXRvcnMvTGF1bmNoVGVtcGxhdGVDYWxjdWxhdG9yJztcbmV4cG9ydCB7XG4gIFN0ZXBGdW5jdGlvbnNDYWxjdWxhdG9yLFxuICBTdGVwRnVuY3Rpb25zV29ya2Zsb3dUeXBlLFxufSBmcm9tICcuL2NhbGN1bGF0b3JzL1N0ZXBGdW5jdGlvbnNDYWxjdWxhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpY2luZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsaURBQWdEO0FBQXZDLDhHQUFBLGFBQWEsT0FBQTtBQUN0QiwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLDZEQUE0RDtBQUFuRCw4R0FBQSxhQUFhLE9BQUE7QUFDdEIsMkRBQTBEO0FBQWpELDRHQUFBLFlBQVksT0FBQTtBQUNyQixtRUFBa0U7QUFBekQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsNkRBQTREO0FBQW5ELDhHQUFBLGFBQWEsT0FBQTtBQUN0QiwyRUFBMEU7QUFBakUsNEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IsNkVBQTRFO0FBQW5FLDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDZEQUE4RTtBQUFyRSw4R0FBQSxhQUFhLE9BQUE7QUFDdEIsNkRBQTREO0FBQW5ELDhHQUFBLGFBQWEsT0FBQTtBQUN0QixtRkFJZ0Q7QUFIOUMsb0lBQUEsd0JBQXdCLE9BQUE7QUFJMUIsaUZBRytDO0FBRjdDLGtJQUFBLHVCQUF1QixPQUFBO0FBR3pCLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFByaWNpbmdTZXJ2aWNlIH0gZnJvbSAnLi9QcmljaW5nU2VydmljZSc7XG5leHBvcnQgeyBQcmljaW5nQ2xpZW50IH0gZnJvbSAnLi9QcmljaW5nQ2xpZW50JztcbmV4cG9ydCB7IENhY2hlTWFuYWdlciB9IGZyb20gJy4vQ2FjaGVNYW5hZ2VyJztcbmV4cG9ydCB7IEVDMkNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0VDMkNhbGN1bGF0b3InO1xuZXhwb3J0IHsgUzNDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9TM0NhbGN1bGF0b3InO1xuZXhwb3J0IHsgTGFtYmRhQ2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvTGFtYmRhQ2FsY3VsYXRvcic7XG5leHBvcnQgeyBSRFNDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9SRFNDYWxjdWxhdG9yJztcbmV4cG9ydCB7IENsb3VkRnJvbnRDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9DbG91ZEZyb250Q2FsY3VsYXRvcic7XG5leHBvcnQgeyBFbGFzdGlDYWNoZUNhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL0VsYXN0aUNhY2hlQ2FsY3VsYXRvcic7XG5leHBvcnQgeyBTTlNDYWxjdWxhdG9yLCBTTlNDb3N0QnJlYWtkb3duIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy9TTlNDYWxjdWxhdG9yJztcbmV4cG9ydCB7IFNRU0NhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL1NRU0NhbGN1bGF0b3InO1xuZXhwb3J0IHtcbiAgTGF1bmNoVGVtcGxhdGVDYWxjdWxhdG9yLFxuICBMYXVuY2hUZW1wbGF0ZUNvbmZpZyxcbiAgRWJzVm9sdW1lQ29uZmlnLFxufSBmcm9tICcuL2NhbGN1bGF0b3JzL0xhdW5jaFRlbXBsYXRlQ2FsY3VsYXRvcic7XG5leHBvcnQge1xuICBTdGVwRnVuY3Rpb25zQ2FsY3VsYXRvcixcbiAgU3RlcEZ1bmN0aW9uc1dvcmtmbG93VHlwZSxcbn0gZnJvbSAnLi9jYWxjdWxhdG9ycy9TdGVwRnVuY3Rpb25zQ2FsY3VsYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
@@ -1 +1 @@
1
- v0.1.31
1
+ v0.1.32
@@ -9,6 +9,7 @@ This document provides detailed information about all supported AWS resource typ
9
9
  - [Storage Resources](#storage-resources)
10
10
  - [Database Resources](#database-resources)
11
11
  - [Networking Resources](#networking-resources)
12
+ - [Messaging Resources](#messaging-resources)
12
13
  - [Content Delivery Resources](#content-delivery-resources)
13
14
  - [Serverless Resources](#serverless-resources)
14
15
  - [Container Resources](#container-resources)
@@ -386,6 +387,54 @@ Monthly Cost: $0.00 (no charge)
386
387
  - Each endpoint per AZ incurs separate charges
387
388
  - Data transfer within same region not charged
388
389
 
390
+ ## Messaging Resources
391
+
392
+ ### AWS::SQS::Queue
393
+
394
+ **Description:** Amazon Simple Queue Service for message queuing
395
+
396
+ **Cost Components:**
397
+ - Request pricing: Per million requests
398
+
399
+ **Queue Types:**
400
+ - **Standard Queue**: $0.40 per million requests (first 1 million free)
401
+ - **FIFO Queue**: $0.50 per million requests (first 1 million free)
402
+
403
+ **Default Assumptions:**
404
+ - 1 million requests per month
405
+ - Standard queue (unless FifoQueue property is true)
406
+
407
+ **Configuration:**
408
+ ```yaml
409
+ usageAssumptions:
410
+ sqs:
411
+ monthlyRequests: 1000000
412
+ ```
413
+
414
+ **Example (Standard Queue):**
415
+ ```
416
+ Requests: 1M × $0.40/1M = $0.40
417
+ Total: $0.40/month
418
+ ```
419
+
420
+ **Example (FIFO Queue):**
421
+ ```
422
+ Requests: 1M × $0.50/1M = $0.50
423
+ Total: $0.50/month
424
+ ```
425
+
426
+ **Detection:**
427
+ - Queue type is detected from the `FifoQueue` CloudFormation property
428
+ - If `FifoQueue: true` is set, FIFO pricing is applied
429
+ - Otherwise, standard queue pricing is used
430
+
431
+ **Notes:**
432
+ - First 1 million requests free per month (not factored into estimates)
433
+ - FIFO queues provide exactly-once processing
434
+ - Data transfer costs not included
435
+ - Long polling and batch operations count as single requests
436
+ - Dead-letter queue costs calculated separately
437
+
389
438
  ## Content Delivery Resources
390
439
 
391
440
  ### AWS::CloudFront::Distribution
@@ -802,6 +851,10 @@ usageAssumptions:
802
851
  vpcEndpoint:
803
852
  dataProcessedGB: 200
804
853
 
854
+ # Messaging
855
+ sqs:
856
+ monthlyRequests: 5000000
857
+
805
858
  # Content Delivery
806
859
  cloudFront:
807
860
  dataTransferGB: 1000
package/package.json CHANGED
@@ -83,7 +83,7 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "version": "0.1.31",
86
+ "version": "0.1.32",
87
87
  "bugs": {
88
88
  "url": "https://github.com/buildinginthecloud/cdk-cost-analyzer/issues"
89
89
  },