@thejob/schema 2.4.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3655,6 +3655,14 @@ var CampaignSchema = (0, import_yup33.object)({
3655
3655
  * state transition, so it belongs in the state.
3656
3656
  */
3657
3657
  dryRun: (0, import_yup33.boolean)().optional().default(true).label("Dry Run"),
3658
+ /**
3659
+ * Re-eligibility: when someone this campaign already mailed may get it again.
3660
+ *
3661
+ * Absent: on every run they match (job alerts, digests). `0`: once per
3662
+ * person. `N`: again only after N days. Opt-in, because most recurring
3663
+ * campaigns exist to mail the same people repeatedly.
3664
+ */
3665
+ resendAfterDays: (0, import_yup33.number)().integer().min(0).max(365).nullable().optional().default(void 0).label("Resend After (days)"),
3658
3666
  maxRecipients: (0, import_yup33.number)().integer().min(1).max(CAMPAIGN_MAX_RECIPIENTS_CEILING).optional().default(void 0).label("Max Recipients"),
3659
3667
  utm: (0, import_yup33.object)({
3660
3668
  campaign: (0, import_yup33.string)().optional().max(120).label("utm_campaign"),
package/dist/index.d.cts CHANGED
@@ -2859,6 +2859,7 @@ declare const CampaignSchema: yup.ObjectSchema<{
2859
2859
  };
2860
2860
  };
2861
2861
  dryRun: boolean;
2862
+ resendAfterDays: number | null | undefined;
2862
2863
  maxRecipients: number | undefined;
2863
2864
  utm: {
2864
2865
  campaign?: string | undefined;
@@ -2888,6 +2889,7 @@ declare const CampaignSchema: yup.ObjectSchema<{
2888
2889
  };
2889
2890
  };
2890
2891
  dryRun: true;
2892
+ resendAfterDays: undefined;
2891
2893
  maxRecipients: undefined;
2892
2894
  utm: undefined;
2893
2895
  }, "">;
package/dist/index.d.ts CHANGED
@@ -2859,6 +2859,7 @@ declare const CampaignSchema: yup.ObjectSchema<{
2859
2859
  };
2860
2860
  };
2861
2861
  dryRun: boolean;
2862
+ resendAfterDays: number | null | undefined;
2862
2863
  maxRecipients: number | undefined;
2863
2864
  utm: {
2864
2865
  campaign?: string | undefined;
@@ -2888,6 +2889,7 @@ declare const CampaignSchema: yup.ObjectSchema<{
2888
2889
  };
2889
2890
  };
2890
2891
  dryRun: true;
2892
+ resendAfterDays: undefined;
2891
2893
  maxRecipients: undefined;
2892
2894
  utm: undefined;
2893
2895
  }, "">;
package/dist/index.js CHANGED
@@ -3385,6 +3385,14 @@ var CampaignSchema = object31({
3385
3385
  * state transition, so it belongs in the state.
3386
3386
  */
3387
3387
  dryRun: boolean17().optional().default(true).label("Dry Run"),
3388
+ /**
3389
+ * Re-eligibility: when someone this campaign already mailed may get it again.
3390
+ *
3391
+ * Absent: on every run they match (job alerts, digests). `0`: once per
3392
+ * person. `N`: again only after N days. Opt-in, because most recurring
3393
+ * campaigns exist to mail the same people repeatedly.
3394
+ */
3395
+ resendAfterDays: number14().integer().min(0).max(365).nullable().optional().default(void 0).label("Resend After (days)"),
3388
3396
  maxRecipients: number14().integer().min(1).max(CAMPAIGN_MAX_RECIPIENTS_CEILING).optional().default(void 0).label("Max Recipients"),
3389
3397
  utm: object31({
3390
3398
  campaign: string22().optional().max(120).label("utm_campaign"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thejob/schema",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -300,6 +300,23 @@ export const CampaignSchema = object({
300
300
  * state transition, so it belongs in the state.
301
301
  */
302
302
  dryRun: boolean().optional().default(true).label("Dry Run"),
303
+ /**
304
+ * Re-eligibility: when someone this campaign already mailed may get it again.
305
+ *
306
+ * Absent: on every run they match (job alerts, digests). `0`: once per
307
+ * person. `N`: again only after N days. Opt-in, because most recurring
308
+ * campaigns exist to mail the same people repeatedly.
309
+ */
310
+ resendAfterDays: number()
311
+ .integer()
312
+ .min(0)
313
+ .max(365)
314
+ // `null` clears it back to "every run": a PATCH can only `$set`, and JSON
315
+ // has no `undefined` to send.
316
+ .nullable()
317
+ .optional()
318
+ .default(undefined)
319
+ .label("Resend After (days)"),
303
320
  maxRecipients: number()
304
321
  .integer()
305
322
  .min(1)