@wraps.dev/cli 2.2.3 → 2.2.5

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
@@ -147,7 +147,7 @@ var require_package = __commonJS({
147
147
  "package.json"(exports, module) {
148
148
  module.exports = {
149
149
  name: "@wraps.dev/cli",
150
- version: "2.2.3",
150
+ version: "2.2.5",
151
151
  description: "CLI for deploying Wraps email infrastructure to your AWS account",
152
152
  type: "module",
153
153
  main: "./dist/cli.js",
@@ -194,7 +194,7 @@ var require_package = __commonJS({
194
194
  author: "Wraps",
195
195
  license: "AGPL-3.0-or-later",
196
196
  dependencies: {
197
- "@wraps.dev/core": "workspace:*",
197
+ "@wraps/core": "workspace:*",
198
198
  "@aws-sdk/client-acm": "3.933.0",
199
199
  "@aws-sdk/client-cloudformation": "^3.490.0",
200
200
  "@aws-sdk/client-cloudfront": "3.933.0",
@@ -3021,6 +3021,197 @@ var init_metadata = __esm({
3021
3021
  }
3022
3022
  });
3023
3023
 
3024
+ // ../core/dist/index.js
3025
+ var dist_exports = {};
3026
+ __export(dist_exports, {
3027
+ ALL_EVENT_TYPES: () => ALL_EVENT_TYPES,
3028
+ DEFAULT_CONFIG_SET_NAME: () => DEFAULT_CONFIG_SET_NAME,
3029
+ DEFAULT_EVENT_TYPES: () => DEFAULT_EVENT_TYPES,
3030
+ DEFAULT_HISTORY_RETENTION: () => DEFAULT_HISTORY_RETENTION,
3031
+ DEFAULT_MAIL_FROM_SUBDOMAIN: () => DEFAULT_MAIL_FROM_SUBDOMAIN,
3032
+ DEFAULT_SUPPRESSION_REASONS: () => DEFAULT_SUPPRESSION_REASONS,
3033
+ DEFAULT_TAGS: () => DEFAULT_TAGS,
3034
+ LAMBDA_EVENT_PROCESSOR_PATH: () => LAMBDA_EVENT_PROCESSOR_PATH,
3035
+ LAMBDA_SMS_EVENT_PROCESSOR_PATH: () => LAMBDA_SMS_EVENT_PROCESSOR_PATH,
3036
+ RESOURCE_PREFIX: () => RESOURCE_PREFIX,
3037
+ VERCEL_OIDC_THUMBPRINT: () => VERCEL_OIDC_THUMBPRINT,
3038
+ VERCEL_OIDC_URL: () => VERCEL_OIDC_URL,
3039
+ calculateTTL: () => calculateTTL,
3040
+ convertToSMTPPassword: () => convertToSMTPPassword,
3041
+ getSMTPConnectionDetails: () => getSMTPConnectionDetails,
3042
+ getSMTPEndpoint: () => getSMTPEndpoint,
3043
+ retentionToAWSPeriod: () => retentionToAWSPeriod,
3044
+ retentionToDays: () => retentionToDays2
3045
+ });
3046
+ import { createHmac } from "crypto";
3047
+ function retentionToDays2(retention) {
3048
+ switch (retention) {
3049
+ case "7days":
3050
+ return 7;
3051
+ case "30days":
3052
+ return 30;
3053
+ case "90days":
3054
+ case "3months":
3055
+ return 90;
3056
+ case "6months":
3057
+ return 180;
3058
+ case "9months":
3059
+ return 270;
3060
+ case "1year":
3061
+ return 365;
3062
+ case "18months":
3063
+ return 548;
3064
+ case "2years":
3065
+ return 730;
3066
+ case "30months":
3067
+ return 913;
3068
+ case "3years":
3069
+ return 1095;
3070
+ case "4years":
3071
+ return 1460;
3072
+ case "5years":
3073
+ return 1825;
3074
+ case "6years":
3075
+ return 2190;
3076
+ case "7years":
3077
+ return 2555;
3078
+ case "8years":
3079
+ return 2920;
3080
+ case "9years":
3081
+ return 3285;
3082
+ case "10years":
3083
+ return 3650;
3084
+ case "indefinite":
3085
+ case "permanent":
3086
+ return -1;
3087
+ // No TTL / permanent
3088
+ default:
3089
+ return 90;
3090
+ }
3091
+ }
3092
+ function retentionToAWSPeriod(retention) {
3093
+ switch (retention) {
3094
+ case "3months":
3095
+ return "THREE_MONTHS";
3096
+ case "6months":
3097
+ return "SIX_MONTHS";
3098
+ case "9months":
3099
+ return "NINE_MONTHS";
3100
+ case "1year":
3101
+ return "ONE_YEAR";
3102
+ case "18months":
3103
+ return "EIGHTEEN_MONTHS";
3104
+ case "2years":
3105
+ return "TWO_YEARS";
3106
+ case "30months":
3107
+ return "THIRTY_MONTHS";
3108
+ case "3years":
3109
+ return "THREE_YEARS";
3110
+ case "4years":
3111
+ return "FOUR_YEARS";
3112
+ case "5years":
3113
+ return "FIVE_YEARS";
3114
+ case "6years":
3115
+ return "SIX_YEARS";
3116
+ case "7years":
3117
+ return "SEVEN_YEARS";
3118
+ case "8years":
3119
+ return "EIGHT_YEARS";
3120
+ case "9years":
3121
+ return "NINE_YEARS";
3122
+ case "10years":
3123
+ return "TEN_YEARS";
3124
+ case "permanent":
3125
+ case "indefinite":
3126
+ return "PERMANENT";
3127
+ default:
3128
+ return "THREE_MONTHS";
3129
+ }
3130
+ }
3131
+ function calculateTTL(retentionDays) {
3132
+ if (retentionDays < 0) {
3133
+ return;
3134
+ }
3135
+ return Math.floor(Date.now() / 1e3) + retentionDays * 24 * 60 * 60;
3136
+ }
3137
+ function convertToSMTPPassword(secretAccessKey, region) {
3138
+ const DATE = "11111111";
3139
+ const SERVICE = "ses";
3140
+ const MESSAGE = "SendRawEmail";
3141
+ const TERMINAL = "aws4_request";
3142
+ const VERSION2 = 4;
3143
+ const kDate = createHmac("sha256", `AWS4${secretAccessKey}`).update(DATE).digest();
3144
+ const kRegion = createHmac("sha256", kDate).update(region).digest();
3145
+ const kService = createHmac("sha256", kRegion).update(SERVICE).digest();
3146
+ const kTerminal = createHmac("sha256", kService).update(TERMINAL).digest();
3147
+ const kMessage = createHmac("sha256", kTerminal).update(MESSAGE).digest();
3148
+ const signatureWithVersion = Buffer.concat([
3149
+ Buffer.from([VERSION2]),
3150
+ kMessage
3151
+ ]);
3152
+ return signatureWithVersion.toString("base64");
3153
+ }
3154
+ function getSMTPEndpoint(region) {
3155
+ return `email-smtp.${region}.amazonaws.com`;
3156
+ }
3157
+ function getSMTPConnectionDetails(region) {
3158
+ return {
3159
+ host: getSMTPEndpoint(region),
3160
+ port: 587,
3161
+ // STARTTLS
3162
+ secure: false
3163
+ // Use STARTTLS
3164
+ };
3165
+ }
3166
+ var DEFAULT_EVENT_TYPES, ALL_EVENT_TYPES, DEFAULT_SUPPRESSION_REASONS, DEFAULT_CONFIG_SET_NAME, DEFAULT_MAIL_FROM_SUBDOMAIN, DEFAULT_HISTORY_RETENTION, VERCEL_OIDC_URL, VERCEL_OIDC_THUMBPRINT, RESOURCE_PREFIX, DEFAULT_TAGS, LAMBDA_EVENT_PROCESSOR_PATH, LAMBDA_SMS_EVENT_PROCESSOR_PATH;
3167
+ var init_dist = __esm({
3168
+ "../core/dist/index.js"() {
3169
+ "use strict";
3170
+ init_esm_shims();
3171
+ DEFAULT_EVENT_TYPES = [
3172
+ "SEND",
3173
+ "DELIVERY",
3174
+ "BOUNCE",
3175
+ "COMPLAINT",
3176
+ "OPEN",
3177
+ "CLICK"
3178
+ ];
3179
+ ALL_EVENT_TYPES = [
3180
+ "SEND",
3181
+ "DELIVERY",
3182
+ "OPEN",
3183
+ "CLICK",
3184
+ "BOUNCE",
3185
+ "COMPLAINT",
3186
+ "REJECT",
3187
+ "RENDERING_FAILURE",
3188
+ "DELIVERY_DELAY",
3189
+ "SUBSCRIPTION"
3190
+ ];
3191
+ DEFAULT_SUPPRESSION_REASONS = [
3192
+ "BOUNCE",
3193
+ "COMPLAINT"
3194
+ ];
3195
+ DEFAULT_CONFIG_SET_NAME = "wraps-email-tracking";
3196
+ DEFAULT_MAIL_FROM_SUBDOMAIN = "mail";
3197
+ DEFAULT_HISTORY_RETENTION = "90days";
3198
+ VERCEL_OIDC_URL = "https://oidc.vercel.com";
3199
+ VERCEL_OIDC_THUMBPRINT = "a031c46782e6e6c662c2c87c76da9aa62ccabd8e";
3200
+ RESOURCE_PREFIX = "wraps-email";
3201
+ DEFAULT_TAGS = {
3202
+ ManagedBy: "wraps"
3203
+ };
3204
+ LAMBDA_EVENT_PROCESSOR_PATH = new URL(
3205
+ "../lambda/event-processor",
3206
+ import.meta.url
3207
+ ).pathname;
3208
+ LAMBDA_SMS_EVENT_PROCESSOR_PATH = new URL(
3209
+ "../lambda/sms-event-processor",
3210
+ import.meta.url
3211
+ ).pathname;
3212
+ }
3213
+ });
3214
+
3024
3215
  // src/infrastructure/resources/lambda.ts
3025
3216
  var lambda_exports = {};
3026
3217
  __export(lambda_exports, {
@@ -3034,10 +3225,6 @@ import { dirname, join as join4 } from "path";
3034
3225
  import { fileURLToPath as fileURLToPath2 } from "url";
3035
3226
  import * as aws7 from "@pulumi/aws";
3036
3227
  import * as pulumi11 from "@pulumi/pulumi";
3037
- import {
3038
- LAMBDA_EVENT_PROCESSOR_PATH,
3039
- LAMBDA_SMS_EVENT_PROCESSOR_PATH
3040
- } from "@wraps.dev/core";
3041
3228
  import { build } from "esbuild";
3042
3229
  function getPackageRoot() {
3043
3230
  const currentFile = fileURLToPath2(import.meta.url);
@@ -3271,6 +3458,7 @@ var init_lambda = __esm({
3271
3458
  "src/infrastructure/resources/lambda.ts"() {
3272
3459
  "use strict";
3273
3460
  init_esm_shims();
3461
+ init_dist();
3274
3462
  }
3275
3463
  });
3276
3464
 
@@ -3519,7 +3707,7 @@ import {
3519
3707
  PutConfigurationSetArchivingOptionsCommand,
3520
3708
  SESv2Client as SESv2Client2
3521
3709
  } from "@aws-sdk/client-sesv2";
3522
- function retentionToAWSPeriod(retention) {
3710
+ function retentionToAWSPeriod2(retention) {
3523
3711
  switch (retention) {
3524
3712
  case "3months":
3525
3713
  return "THREE_MONTHS";
@@ -3565,7 +3753,7 @@ async function createMailManagerArchive(config2) {
3565
3753
  const kmsKeyArn = config2.kmsKeyArn;
3566
3754
  if (!kmsKeyArn) {
3567
3755
  }
3568
- const awsRetention = retentionToAWSPeriod(config2.retention);
3756
+ const awsRetention = retentionToAWSPeriod2(config2.retention);
3569
3757
  let archiveId;
3570
3758
  let archiveArn;
3571
3759
  try {
@@ -8458,7 +8646,7 @@ import * as clack12 from "@clack/prompts";
8458
8646
  // ../email-check/dist/index.js
8459
8647
  init_esm_shims();
8460
8648
  import { promises as dns, Resolver } from "dns";
8461
- import { URL } from "url";
8649
+ import { URL as URL2 } from "url";
8462
8650
  import * as net from "net";
8463
8651
  import * as tls from "tls";
8464
8652
  var QUICK_DKIM_SELECTORS = [
@@ -8936,7 +9124,7 @@ async function batchDnsQuery(items, queryFn, concurrency = 10) {
8936
9124
  }
8937
9125
  function toAsciiDomain(domain) {
8938
9126
  try {
8939
- const url = new URL(`http://${domain.toLowerCase()}`);
9127
+ const url = new URL2(`http://${domain.toLowerCase()}`);
8940
9128
  return url.hostname;
8941
9129
  } catch {
8942
9130
  return domain.toLowerCase();
@@ -11435,9 +11623,9 @@ import pc14 from "picocolors";
11435
11623
 
11436
11624
  // src/infrastructure/email-stack.ts
11437
11625
  init_esm_shims();
11626
+ init_dist();
11438
11627
  import * as aws13 from "@pulumi/aws";
11439
11628
  import * as pulumi12 from "@pulumi/pulumi";
11440
- import { retentionToDays as retentionToDays2 } from "@wraps.dev/core";
11441
11629
 
11442
11630
  // src/infrastructure/resources/dynamodb.ts
11443
11631
  init_esm_shims();
@@ -12023,19 +12211,19 @@ async function createSESResources(config2) {
12023
12211
 
12024
12212
  // src/infrastructure/resources/smtp-credentials.ts
12025
12213
  init_esm_shims();
12026
- import { createHmac } from "crypto";
12214
+ import { createHmac as createHmac2 } from "crypto";
12027
12215
  import * as aws9 from "@pulumi/aws";
12028
- function convertToSMTPPassword(secretAccessKey, region) {
12216
+ function convertToSMTPPassword2(secretAccessKey, region) {
12029
12217
  const DATE = "11111111";
12030
12218
  const SERVICE = "ses";
12031
12219
  const MESSAGE = "SendRawEmail";
12032
12220
  const TERMINAL = "aws4_request";
12033
12221
  const VERSION2 = 4;
12034
- const kDate = createHmac("sha256", `AWS4${secretAccessKey}`).update(DATE).digest();
12035
- const kRegion = createHmac("sha256", kDate).update(region).digest();
12036
- const kService = createHmac("sha256", kRegion).update(SERVICE).digest();
12037
- const kTerminal = createHmac("sha256", kService).update(TERMINAL).digest();
12038
- const kMessage = createHmac("sha256", kTerminal).update(MESSAGE).digest();
12222
+ const kDate = createHmac2("sha256", `AWS4${secretAccessKey}`).update(DATE).digest();
12223
+ const kRegion = createHmac2("sha256", kDate).update(region).digest();
12224
+ const kService = createHmac2("sha256", kRegion).update(SERVICE).digest();
12225
+ const kTerminal = createHmac2("sha256", kService).update(TERMINAL).digest();
12226
+ const kMessage = createHmac2("sha256", kTerminal).update(MESSAGE).digest();
12039
12227
  const signatureWithVersion = Buffer.concat([
12040
12228
  Buffer.from([VERSION2]),
12041
12229
  kMessage
@@ -12099,7 +12287,7 @@ async function createSMTPCredentials(config2) {
12099
12287
  user: iamUser.name
12100
12288
  });
12101
12289
  const smtpPassword = accessKey.secret.apply(
12102
- (secret) => convertToSMTPPassword(secret, config2.region)
12290
+ (secret) => convertToSMTPPassword2(secret, config2.region)
12103
12291
  );
12104
12292
  return {
12105
12293
  iamUser,
@@ -19554,7 +19742,7 @@ async function deploySMSStack(config2) {
19554
19742
  }
19555
19743
  let lambdaFunction;
19556
19744
  if (smsConfig.eventTracking?.dynamoDBHistory && dynamoTable && sqsResources) {
19557
- const { retentionToDays: retentionToDays3 } = await import("@wraps.dev/core");
19745
+ const { retentionToDays: retentionToDays3 } = await Promise.resolve().then(() => (init_dist(), dist_exports));
19558
19746
  const retentionDays = retentionToDays3(
19559
19747
  smsConfig.eventTracking.archiveRetention ?? "90days"
19560
19748
  );