@capraconsulting/cals-cli 3.3.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cals-cli.js CHANGED
@@ -68,7 +68,7 @@ var read__default = /*#__PURE__*/_interopDefaultLegacy(read);
68
68
  var findUp__default = /*#__PURE__*/_interopDefaultLegacy(findUp);
69
69
  var execa__default = /*#__PURE__*/_interopDefaultLegacy(execa);
70
70
 
71
- var version = "3.3.0";
71
+ var version = "3.4.1";
72
72
  var engines = {
73
73
  node: ">=12.0.0"
74
74
  };
@@ -3417,7 +3417,7 @@ async function main() {
3417
3417
  / /___/ ___ |/ /______/ /
3418
3418
  \\____/_/ |_/_____/____/
3419
3419
  cli ${version}
3420
- built ${"2023-11-24T13:48:55+0000"}
3420
+ built ${"2023-12-04T07:17:26+0000"}
3421
3421
 
3422
3422
  https://github.com/capralifecycle/cals-cli/
3423
3423
 
package/lib/index.es.js CHANGED
@@ -16,14 +16,14 @@ import pLimit from 'p-limit';
16
16
  import keytar from 'keytar';
17
17
  import * as process$1 from 'process';
18
18
  import { performance } from 'perf_hooks';
19
- import { SecretsManagerClient, DescribeSecretCommand, UntagResourceCommand, TagResourceCommand, GetSecretValueCommand, CreateSecretCommand, RestoreSecretCommand, PutSecretValueCommand } from '@aws-sdk/client-secrets-manager';
19
+ import { SecretsManagerClient, DescribeSecretCommand, UntagResourceCommand, TagResourceCommand, GetSecretValueCommand, CreateSecretCommand, RestoreSecretCommand, PutSecretValueCommand, ReplicateSecretToRegionsCommand, RemoveRegionsFromReplicationCommand } from '@aws-sdk/client-secrets-manager';
20
20
  import { STSClient, GetCallerIdentityCommand } from '@aws-sdk/client-sts';
21
21
  import read from 'read';
22
22
  import { strict } from 'assert';
23
23
  import execa from 'execa';
24
24
  import { Transform } from 'stream';
25
25
 
26
- var version = "3.3.0";
26
+ var version = "3.4.1";
27
27
 
28
28
  class CacheProvider {
29
29
  constructor(config) {
@@ -1264,6 +1264,7 @@ class LoadSecrets {
1264
1264
  return result.SecretString;
1265
1265
  }
1266
1266
  async handleUpdate(secretGroup, secret) {
1267
+ var _a, _b, _c, _d, _e;
1267
1268
  const client = this.getSmClient(secretGroup.region);
1268
1269
  const fullName = this.getFullName(secretGroup, secret);
1269
1270
  const describeSecret = await this.getSecretDetails(client, fullName);
@@ -1305,9 +1306,17 @@ class LoadSecrets {
1305
1306
  ];
1306
1307
  let arn;
1307
1308
  let version;
1309
+ let newReplicaRegions = [];
1310
+ let removedReplicaRegions = [];
1308
1311
  if (describeSecret == null) {
1312
+ newReplicaRegions = (_a = secret.replicaRegions) !== null && _a !== void 0 ? _a : [];
1309
1313
  const createResult = await client.send(new CreateSecretCommand({
1310
1314
  Name: fullName,
1315
+ AddReplicaRegions: secret.replicaRegions
1316
+ ? secret.replicaRegions.map((replicaRegion) => ({
1317
+ Region: replicaRegion,
1318
+ }))
1319
+ : undefined,
1311
1320
  Description: "Created by load-secrets",
1312
1321
  SecretString: secretValue,
1313
1322
  Tags: tags,
@@ -1328,6 +1337,26 @@ class LoadSecrets {
1328
1337
  SecretId: fullName,
1329
1338
  SecretString: secretValue,
1330
1339
  }));
1340
+ const currentReplicaRegions = (_c = (_b = describeSecret.ReplicationStatus) === null || _b === void 0 ? void 0 : _b.map((replicationStatus) => replicationStatus.Region)) !== null && _c !== void 0 ? _c : [];
1341
+ newReplicaRegions =
1342
+ (_e = (_d = secret.replicaRegions) === null || _d === void 0 ? void 0 : _d.filter((region) => !currentReplicaRegions.includes(region))) !== null && _e !== void 0 ? _e : [];
1343
+ removedReplicaRegions = currentReplicaRegions
1344
+ .filter((region) => !!region && typeof region === "string")
1345
+ .filter((region) => !(secret.replicaRegions || []).includes(region));
1346
+ if (newReplicaRegions.length > 0) {
1347
+ await client.send(new ReplicateSecretToRegionsCommand({
1348
+ SecretId: fullName,
1349
+ AddReplicaRegions: newReplicaRegions.map((region) => ({
1350
+ Region: region,
1351
+ })),
1352
+ }));
1353
+ }
1354
+ if (removedReplicaRegions.length > 0) {
1355
+ await client.send(new RemoveRegionsFromReplicationCommand({
1356
+ SecretId: fullName,
1357
+ RemoveReplicaRegions: removedReplicaRegions,
1358
+ }));
1359
+ }
1331
1360
  if (updateResult.VersionId == null) {
1332
1361
  throw new Error("Expected versionId");
1333
1362
  }
@@ -1339,6 +1368,16 @@ class LoadSecrets {
1339
1368
  this.reporter.log("Secret stored:");
1340
1369
  this.reporter.log(`ARN: ${this.reporter.format.greenBright(arn)}`);
1341
1370
  this.reporter.log(`Version: ${this.reporter.format.greenBright(version)}`);
1371
+ if (newReplicaRegions.length > 0) {
1372
+ this.reporter.log(`Read replicas added to regions: ${newReplicaRegions
1373
+ .map((r) => this.reporter.format.greenBright(r))
1374
+ .join(", ")}`);
1375
+ }
1376
+ if (removedReplicaRegions.length > 0) {
1377
+ this.reporter.log(`Read replicas removed from regions: ${removedReplicaRegions
1378
+ .map((r) => this.reporter.format.redBright(r))
1379
+ .join(", ")}`);
1380
+ }
1342
1381
  }
1343
1382
  checkSecretGroup(secretGroup) {
1344
1383
  if (!secretGroup.namePrefix.startsWith("/") ||
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/lib/index.js CHANGED
@@ -64,7 +64,7 @@ var process__namespace = /*#__PURE__*/_interopNamespace(process$1);
64
64
  var read__default = /*#__PURE__*/_interopDefaultLegacy(read);
65
65
  var execa__default = /*#__PURE__*/_interopDefaultLegacy(execa);
66
66
 
67
- var version = "3.3.0";
67
+ var version = "3.4.1";
68
68
 
69
69
  class CacheProvider {
70
70
  constructor(config) {
@@ -1305,6 +1305,7 @@ class LoadSecrets {
1305
1305
  return result.SecretString;
1306
1306
  }
1307
1307
  async handleUpdate(secretGroup, secret) {
1308
+ var _a, _b, _c, _d, _e;
1308
1309
  const client = this.getSmClient(secretGroup.region);
1309
1310
  const fullName = this.getFullName(secretGroup, secret);
1310
1311
  const describeSecret = await this.getSecretDetails(client, fullName);
@@ -1346,9 +1347,17 @@ class LoadSecrets {
1346
1347
  ];
1347
1348
  let arn;
1348
1349
  let version;
1350
+ let newReplicaRegions = [];
1351
+ let removedReplicaRegions = [];
1349
1352
  if (describeSecret == null) {
1353
+ newReplicaRegions = (_a = secret.replicaRegions) !== null && _a !== void 0 ? _a : [];
1350
1354
  const createResult = await client.send(new clientSecretsManager.CreateSecretCommand({
1351
1355
  Name: fullName,
1356
+ AddReplicaRegions: secret.replicaRegions
1357
+ ? secret.replicaRegions.map((replicaRegion) => ({
1358
+ Region: replicaRegion,
1359
+ }))
1360
+ : undefined,
1352
1361
  Description: "Created by load-secrets",
1353
1362
  SecretString: secretValue,
1354
1363
  Tags: tags,
@@ -1369,6 +1378,26 @@ class LoadSecrets {
1369
1378
  SecretId: fullName,
1370
1379
  SecretString: secretValue,
1371
1380
  }));
1381
+ const currentReplicaRegions = (_c = (_b = describeSecret.ReplicationStatus) === null || _b === void 0 ? void 0 : _b.map((replicationStatus) => replicationStatus.Region)) !== null && _c !== void 0 ? _c : [];
1382
+ newReplicaRegions =
1383
+ (_e = (_d = secret.replicaRegions) === null || _d === void 0 ? void 0 : _d.filter((region) => !currentReplicaRegions.includes(region))) !== null && _e !== void 0 ? _e : [];
1384
+ removedReplicaRegions = currentReplicaRegions
1385
+ .filter((region) => !!region && typeof region === "string")
1386
+ .filter((region) => !(secret.replicaRegions || []).includes(region));
1387
+ if (newReplicaRegions.length > 0) {
1388
+ await client.send(new clientSecretsManager.ReplicateSecretToRegionsCommand({
1389
+ SecretId: fullName,
1390
+ AddReplicaRegions: newReplicaRegions.map((region) => ({
1391
+ Region: region,
1392
+ })),
1393
+ }));
1394
+ }
1395
+ if (removedReplicaRegions.length > 0) {
1396
+ await client.send(new clientSecretsManager.RemoveRegionsFromReplicationCommand({
1397
+ SecretId: fullName,
1398
+ RemoveReplicaRegions: removedReplicaRegions,
1399
+ }));
1400
+ }
1372
1401
  if (updateResult.VersionId == null) {
1373
1402
  throw new Error("Expected versionId");
1374
1403
  }
@@ -1380,6 +1409,16 @@ class LoadSecrets {
1380
1409
  this.reporter.log("Secret stored:");
1381
1410
  this.reporter.log(`ARN: ${this.reporter.format.greenBright(arn)}`);
1382
1411
  this.reporter.log(`Version: ${this.reporter.format.greenBright(version)}`);
1412
+ if (newReplicaRegions.length > 0) {
1413
+ this.reporter.log(`Read replicas added to regions: ${newReplicaRegions
1414
+ .map((r) => this.reporter.format.greenBright(r))
1415
+ .join(", ")}`);
1416
+ }
1417
+ if (removedReplicaRegions.length > 0) {
1418
+ this.reporter.log(`Read replicas removed from regions: ${removedReplicaRegions
1419
+ .map((r) => this.reporter.format.redBright(r))
1420
+ .join(", ")}`);
1421
+ }
1383
1422
  }
1384
1423
  checkSecretGroup(secretGroup) {
1385
1424
  if (!secretGroup.namePrefix.startsWith("/") ||
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,11 @@
1
1
  export interface BaseSecret {
2
2
  name: string;
3
3
  description?: string;
4
+ /**
5
+ * A list of regions to create read replicas
6
+ * of the secret in.
7
+ */
8
+ replicaRegions?: string[];
4
9
  }
5
10
  export type JsonSecretSimpleField = string;
6
11
  export interface JsonSecretDescribedField {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capraconsulting/cals-cli",
3
- "version": "3.3.0",
3
+ "version": "3.4.1",
4
4
  "description": "CLI for repeatable tasks in CALS",
5
5
  "scripts": {
6
6
  "prepare": "node scripts/create-definition-schema.js && husky install",
@@ -36,7 +36,7 @@
36
36
  "p-limit": "^3.0.0",
37
37
  "p-map": "^4.0.0",
38
38
  "read": "^1.0.7",
39
- "rimraf": "^3.0.2",
39
+ "rimraf": "^4.0.0",
40
40
  "semver": "^7.3.7",
41
41
  "sprintf-js": "^1.1.2",
42
42
  "yargs": "^17.5.1"
@@ -70,7 +70,7 @@
70
70
  "prettier": "3.1.0",
71
71
  "rollup": "2.79.1",
72
72
  "rollup-plugin-typescript2": "0.36.0",
73
- "semantic-release": "21.1.2",
73
+ "semantic-release": "22.0.8",
74
74
  "tempy": "1.0.1",
75
75
  "ts-jest": "^29.1.1",
76
76
  "typescript": "5.2.2",