@wraps.dev/cli 3.13.0 → 3.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -49626,6 +49626,7 @@ async function inboundInit(options) {
49626
49626
  const primaryTrackedDomain = trackedDomains.find((trackedDomain) => trackedDomain.isPrimary) || trackedDomains[0];
49627
49627
  domain = primaryTrackedDomain.domain;
49628
49628
  } else {
49629
+ ensureInteractive("Domain selection", "--yes");
49629
49630
  const selected = await clack27.select({
49630
49631
  message: "Which domain do you want to receive email on?",
49631
49632
  options: trackedDomains.map((d6) => ({
@@ -49651,6 +49652,7 @@ async function inboundInit(options) {
49651
49652
  `${pc28.bold("Estimated cost:")} ~$0.05/mo for 10K emails (S3 + Lambda)`
49652
49653
  );
49653
49654
  if (!(options.yes || options.preview)) {
49655
+ ensureInteractive("Deployment confirmation", "--yes");
49654
49656
  const confirmed = await clack27.confirm({
49655
49657
  message: "Deploy inbound email infrastructure?",
49656
49658
  initialValue: true
@@ -49951,6 +49953,7 @@ Deploy first: ${pc28.cyan("wraps email inbound init")}
49951
49953
  }
49952
49954
  }
49953
49955
  }
49956
+ ensureInteractive("Destroy confirmation", "--force");
49954
49957
  const confirmed = await clack27.confirm({
49955
49958
  message: "Are you sure you want to destroy inbound email infrastructure?",
49956
49959
  initialValue: false
@@ -50528,6 +50531,10 @@ Deploy first: ${pc28.cyan("wraps email inbound init")}
50528
50531
  } else if (allDomains.length === 1) {
50529
50532
  parentDomain = allDomains[0];
50530
50533
  } else {
50534
+ ensureInteractive(
50535
+ "Parent domain selection",
50536
+ "--domain <domain> (or --yes)"
50537
+ );
50531
50538
  const selected = await clack27.select({
50532
50539
  message: "Which domain should the inbound subdomain be under?",
50533
50540
  options: allDomains.map((d6) => ({
@@ -50756,6 +50763,10 @@ Deploy first: ${pc28.cyan("wraps email inbound init")}
50756
50763
  if (inboundDomains.length === 1) {
50757
50764
  domainToRemove = inboundDomains[0].receivingDomain;
50758
50765
  } else {
50766
+ ensureInteractive(
50767
+ "Inbound domain selection",
50768
+ "--domain <receiving-domain>"
50769
+ );
50759
50770
  const selected = await clack27.select({
50760
50771
  message: "Which inbound domain do you want to remove?",
50761
50772
  options: inboundDomains.map((d6) => ({
@@ -50793,6 +50804,7 @@ Deploy first: ${pc28.cyan("wraps email inbound init")}
50793
50804
  clack27.log.info(pc28.dim(` ${record.type} ${record.name} \u2192 ${value}`));
50794
50805
  }
50795
50806
  }
50807
+ ensureInteractive("Removal confirmation", "--yes");
50796
50808
  const confirmed = await clack27.confirm({
50797
50809
  message: `Remove inbound domain ${pc28.cyan(domainToRemove)}?`,
50798
50810
  initialValue: false
@@ -52268,7 +52280,8 @@ function nextActionFor(review, region) {
52268
52280
  return "AWS is reviewing; typically ~24h. Nothing to do.";
52269
52281
  case "DENIED": {
52270
52282
  const caseId = review.review?.caseId;
52271
- return `Strengthen the application (recipient provenance, unsubscribe handling, bounce/complaint monitoring) and resubmit with --request${caseId ? `, or open a Support case referencing case ${caseId} to ask why` : ""}.`;
52283
+ const where = caseId ? `case ${caseId} in the AWS Support Center` : "your cases in the AWS Support Center";
52284
+ return `AWS shows DENIED for a final denial and also while it waits on your reply to a request for more information. Check ${where}: if you've replied, wait for AWS. If the case is closed, strengthen the application (recipient provenance, unsubscribe handling, bounce/complaint monitoring) and resubmit with --request.`;
52272
52285
  }
52273
52286
  case "FAILED":
52274
52287
  return "AWS could not process the request; resubmit with --request.";
@@ -52459,6 +52472,12 @@ async function runRequestPath(options, accountId, startTime) {
52459
52472
  const websiteUrl = await resolveWebsiteUrl(options);
52460
52473
  const mailType = await resolveMailType(options);
52461
52474
  const additionalContactEmails = resolveContactEmails(options);
52475
+ const openCaseId = before.review?.status === "DENIED" ? before.review.caseId : null;
52476
+ if (openCaseId && !isJsonMode()) {
52477
+ clack34.log.warn(
52478
+ `AWS already has case ${openCaseId} on file for this account. AWS reports DENIED while it waits on your reply to a request for more information, so the case may still be open. If you've replied on it, wait for AWS instead of submitting a new request.`
52479
+ );
52480
+ }
52462
52481
  if (!isJsonMode()) {
52463
52482
  clack34.note(
52464
52483
  `AWS reviews this request by hand, typically within 24 hours. The API sends less than the console form does: the console also asks you to confirm that every recipient opted in and that you handle bounces and complaints. There is no API field for that acknowledgment, so make sure both are true before you submit. If you would rather file the fuller application yourself: ${consoleUrl(region)}.`,
@@ -52485,7 +52504,8 @@ async function runRequestPath(options, accountId, startTime) {
52485
52504
  );
52486
52505
  }
52487
52506
  const confirmed = await clack34.confirm({
52488
- message: `Submit the SES production-access request for account ${accountId} in ${region}?`
52507
+ message: openCaseId ? `Case ${openCaseId} may still be open. Submit a new SES production-access request for account ${accountId} in ${region} anyway?` : `Submit the SES production-access request for account ${accountId} in ${region}?`,
52508
+ initialValue: !openCaseId
52489
52509
  });
52490
52510
  if (clack34.isCancel(confirmed) || !confirmed) {
52491
52511
  clack34.cancel("Operation cancelled.");