@tracearr/shared 2.2.4-beta.3 → 2.3.0-beta.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.
Files changed (42) hide show
  1. package/dist/automations/__tests__/definition.test.js +6 -2
  2. package/dist/automations/__tests__/definition.test.js.map +1 -1
  3. package/dist/automations/__tests__/triggers.test.js +18 -1
  4. package/dist/automations/__tests__/triggers.test.js.map +1 -1
  5. package/dist/automations/definition.d.ts +7 -0
  6. package/dist/automations/definition.d.ts.map +1 -1
  7. package/dist/automations/dryRun.d.ts +2 -0
  8. package/dist/automations/dryRun.d.ts.map +1 -1
  9. package/dist/automations/templates.d.ts +4 -0
  10. package/dist/automations/templates.d.ts.map +1 -1
  11. package/dist/automations/triggers.d.ts +13 -1
  12. package/dist/automations/triggers.d.ts.map +1 -1
  13. package/dist/automations/triggers.js +16 -1
  14. package/dist/automations/triggers.js.map +1 -1
  15. package/dist/destinations.d.ts +103 -12
  16. package/dist/destinations.d.ts.map +1 -1
  17. package/dist/destinations.js +213 -4
  18. package/dist/destinations.js.map +1 -1
  19. package/dist/emailRichText.d.ts +199 -0
  20. package/dist/emailRichText.d.ts.map +1 -0
  21. package/dist/emailRichText.js +133 -0
  22. package/dist/emailRichText.js.map +1 -0
  23. package/dist/index.d.ts +8 -4
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +7 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/mediaServerLinks.d.ts +15 -0
  28. package/dist/mediaServerLinks.d.ts.map +1 -1
  29. package/dist/mediaServerLinks.js +60 -0
  30. package/dist/mediaServerLinks.js.map +1 -1
  31. package/dist/newsletters.d.ts +1367 -0
  32. package/dist/newsletters.d.ts.map +1 -0
  33. package/dist/newsletters.js +215 -0
  34. package/dist/newsletters.js.map +1 -0
  35. package/dist/schemas.d.ts +13 -0
  36. package/dist/schemas.d.ts.map +1 -1
  37. package/dist/schemas.js +49 -18
  38. package/dist/schemas.js.map +1 -1
  39. package/dist/types.d.ts +4 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/package.json +1 -1
@@ -1,16 +1,22 @@
1
1
  import { z } from 'zod';
2
2
  import type { NotificationEventType, ViolationSeverity } from './types.js';
3
- export declare const DESTINATION_KINDS: readonly ['discord', 'json_webhook', 'ntfy', 'gotify', 'apprise', 'pushover', 'push', 'web_toast'];
3
+ export declare const DESTINATION_KINDS: readonly ['discord', 'json_webhook', 'ntfy', 'gotify', 'apprise', 'pushover', 'email', 'push', 'web_toast'];
4
4
  export type DestinationKind = (typeof DESTINATION_KINDS)[number];
5
- export declare const NOTIFICATION_EVENT_TYPES: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
5
+ export declare const NOTIFICATION_EVENT_TYPES: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
6
6
  /** What a destination may subscribe to on its own; every other event reaches it through an automation. */
7
7
  export declare const SUBSCRIBABLE_EVENTS: readonly ["violation_detected"];
8
8
  export type SubscribableEvent = (typeof SUBSCRIBABLE_EVENTS)[number];
9
+ export interface DestinationFieldOption {
10
+ value: string;
11
+ /** i18n key under pages:settings.destinations.options */
12
+ label: string;
13
+ }
9
14
  export interface DestinationFieldDescriptor {
10
15
  key: string;
11
16
  /** i18n key under pages:settings.destinations.fields */
12
17
  label: string;
13
- input: 'text' | 'url' | 'secret';
18
+ /** toggle stores 'true' or 'false' so the config blob stays all strings; absent reads as the default */
19
+ input: 'text' | 'url' | 'secret' | 'select' | 'number' | 'email' | 'emails' | 'toggle';
14
20
  required: boolean;
15
21
  /** Masked on read, kept on omit; every url is secret because webhook urls embed credentials */
16
22
  secret: boolean;
@@ -18,6 +24,18 @@ export interface DestinationFieldDescriptor {
18
24
  /** i18n key under pages:settings.destinations.hints, rendered as the field description */
19
25
  hint?: string;
20
26
  default?: string;
27
+ /** select only */
28
+ options?: readonly DestinationFieldOption[];
29
+ /** number only; validated on the string value, whole non-negative integers regardless of min */
30
+ min?: number;
31
+ max?: number;
32
+ /** text/secret only: overrides the default 2000-char max and adds a format check */
33
+ maxLength?: number;
34
+ pattern?: RegExp;
35
+ /** select only: choosing a value also writes these sibling fields */
36
+ presets?: Readonly<Record<string, Readonly<Record<string, string>>>>;
37
+ /** i18n key under pages:settings.destinations.groups; the dialog draws a separator where the group changes */
38
+ group?: string;
21
39
  }
22
40
  export interface DestinationDescriptor {
23
41
  kind: DestinationKind;
@@ -29,13 +47,67 @@ export interface DestinationDescriptor {
29
47
  events: readonly NotificationEventType[];
30
48
  fields: readonly DestinationFieldDescriptor[];
31
49
  }
50
+ export declare const EMAIL_SECURITY: readonly ['starttls', 'tls', 'none'];
51
+ export type EmailSecurity = (typeof EMAIL_SECURITY)[number];
52
+ /** Host, port and security per provider; the dialog copies them into the sibling fields. usernameHint/passwordHint are i18n keys under pages:settings.destinations.hints, resolved by the dialog rather than copied into the form. */
53
+ export declare const EMAIL_SMTP_PRESETS: {
54
+ readonly postmark: {
55
+ readonly host: 'smtp.postmarkapp.com';
56
+ readonly port: '587';
57
+ readonly security: 'starttls';
58
+ readonly usernameHint: 'smtpPostmarkUsername';
59
+ readonly passwordHint: 'smtpPostmarkPassword';
60
+ };
61
+ readonly resend: {
62
+ readonly host: 'smtp.resend.com';
63
+ readonly port: '465';
64
+ readonly security: 'tls';
65
+ readonly usernameHint: 'smtpResendUsername';
66
+ readonly passwordHint: 'smtpResendPassword';
67
+ };
68
+ readonly ses: {
69
+ readonly host: 'email-smtp.us-east-1.amazonaws.com';
70
+ readonly port: '587';
71
+ readonly security: 'starttls';
72
+ readonly usernameHint: 'smtpSesUsername';
73
+ readonly passwordHint: 'smtpSesPassword';
74
+ };
75
+ readonly mailgun: {
76
+ readonly host: 'smtp.mailgun.org';
77
+ readonly port: '587';
78
+ readonly security: 'starttls';
79
+ readonly usernameHint: 'smtpMailgunUsername';
80
+ readonly passwordHint: 'smtpMailgunPassword';
81
+ };
82
+ readonly sendgrid: {
83
+ readonly host: 'smtp.sendgrid.net';
84
+ readonly port: '587';
85
+ readonly security: 'starttls';
86
+ readonly usernameHint: 'smtpSendgridUsername';
87
+ readonly passwordHint: 'smtpSendgridPassword';
88
+ };
89
+ readonly brevo: {
90
+ readonly host: 'smtp-relay.brevo.com';
91
+ readonly port: '587';
92
+ readonly security: 'starttls';
93
+ readonly usernameHint: 'smtpBrevoUsername';
94
+ readonly passwordHint: 'smtpBrevoPassword';
95
+ };
96
+ readonly gmail: {
97
+ readonly host: 'smtp.gmail.com';
98
+ readonly port: '587';
99
+ readonly security: 'starttls';
100
+ readonly usernameHint: 'smtpGmailUsername';
101
+ readonly passwordHint: 'smtpGmailPassword';
102
+ };
103
+ };
32
104
  export declare const DESTINATION_TYPES: {
33
105
  readonly discord: {
34
106
  readonly kind: 'discord';
35
107
  readonly label: 'discord';
36
108
  readonly icon: 'MessageSquare';
37
109
  readonly builtin: false;
38
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
110
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
39
111
  readonly fields: readonly [DestinationFieldDescriptor];
40
112
  };
41
113
  readonly json_webhook: {
@@ -43,7 +115,7 @@ export declare const DESTINATION_TYPES: {
43
115
  readonly label: 'jsonWebhook';
44
116
  readonly icon: 'Webhook';
45
117
  readonly builtin: false;
46
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
118
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
47
119
  readonly fields: readonly [DestinationFieldDescriptor];
48
120
  };
49
121
  readonly ntfy: {
@@ -51,7 +123,7 @@ export declare const DESTINATION_TYPES: {
51
123
  readonly label: 'ntfy';
52
124
  readonly icon: 'Bell';
53
125
  readonly builtin: false;
54
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
126
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
55
127
  readonly fields: readonly [DestinationFieldDescriptor, DestinationFieldDescriptor, DestinationFieldDescriptor];
56
128
  };
57
129
  readonly gotify: {
@@ -59,7 +131,7 @@ export declare const DESTINATION_TYPES: {
59
131
  readonly label: 'gotify';
60
132
  readonly icon: 'Bell';
61
133
  readonly builtin: false;
62
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
134
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
63
135
  readonly fields: readonly [DestinationFieldDescriptor];
64
136
  };
65
137
  readonly apprise: {
@@ -67,7 +139,7 @@ export declare const DESTINATION_TYPES: {
67
139
  readonly label: 'apprise';
68
140
  readonly icon: 'Share2';
69
141
  readonly builtin: false;
70
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
142
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
71
143
  readonly fields: readonly [DestinationFieldDescriptor];
72
144
  };
73
145
  readonly pushover: {
@@ -75,15 +147,23 @@ export declare const DESTINATION_TYPES: {
75
147
  readonly label: 'pushover';
76
148
  readonly icon: 'Smartphone';
77
149
  readonly builtin: false;
78
- readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed"];
150
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
79
151
  readonly fields: readonly [DestinationFieldDescriptor, DestinationFieldDescriptor];
80
152
  };
153
+ readonly email: {
154
+ readonly kind: 'email';
155
+ readonly label: 'email';
156
+ readonly icon: 'Mail';
157
+ readonly builtin: false;
158
+ readonly events: readonly ["violation_detected", "stream_started", "stream_stopped", "server_down", "server_up", "plugin_update_available", "server_update_available", "tracearr_update_available", "media_added", "media_upgraded", "new_device", "trust_score_changed", "newsletter_send"];
159
+ readonly fields: readonly DestinationFieldDescriptor[];
160
+ };
81
161
  readonly push: {
82
162
  readonly kind: 'push';
83
163
  readonly label: 'push';
84
164
  readonly icon: 'Smartphone';
85
165
  readonly builtin: true;
86
- readonly events: readonly ("media_added" | "media_upgraded" | "new_device" | "server_down" | "server_up" | "server_update_available" | "stream_started" | "stream_stopped" | "tracearr_update_available" | "trust_score_changed" | "violation_detected")[];
166
+ readonly events: readonly ("media_added" | "media_upgraded" | "new_device" | "newsletter_send" | "server_down" | "server_up" | "server_update_available" | "stream_started" | "stream_stopped" | "tracearr_update_available" | "trust_score_changed" | "violation_detected")[];
87
167
  readonly fields: readonly [];
88
168
  };
89
169
  readonly web_toast: {
@@ -91,16 +171,20 @@ export declare const DESTINATION_TYPES: {
91
171
  readonly label: 'webToast';
92
172
  readonly icon: 'Globe';
93
173
  readonly builtin: true;
94
- readonly events: readonly ("media_added" | "media_upgraded" | "new_device" | "server_down" | "server_up" | "server_update_available" | "stream_started" | "stream_stopped" | "tracearr_update_available" | "trust_score_changed" | "violation_detected")[];
174
+ readonly events: readonly ("media_added" | "media_upgraded" | "new_device" | "newsletter_send" | "server_down" | "server_up" | "server_update_available" | "stream_started" | "stream_stopped" | "tracearr_update_available" | "trust_score_changed" | "violation_detected")[];
95
175
  readonly fields: readonly [];
96
176
  };
97
177
  };
98
- /** Zod object for one kind's config, built from its descriptor; unknown keys rejected. */
178
+ export declare function addressList(value: string): string[];
179
+ /** Zod object for a field list; unknown keys rejected. Exported so refinements are testable without a kind. */
180
+ export declare function configSchemaForFields(fields: readonly DestinationFieldDescriptor[]): z.ZodObject<z.ZodRawShape>;
181
+ /** Zod object for one kind's config, built from its descriptor. */
99
182
  export declare function destinationConfigSchema(kind: DestinationKind): z.ZodObject<z.ZodRawShape>;
100
183
  export declare const notificationEventTypeSchema: z.ZodEnum<{
101
184
  media_added: "media_added";
102
185
  media_upgraded: "media_upgraded";
103
186
  new_device: "new_device";
187
+ newsletter_send: "newsletter_send";
104
188
  plugin_update_available: "plugin_update_available";
105
189
  server_down: "server_down";
106
190
  server_up: "server_up";
@@ -116,6 +200,7 @@ export declare const createDestinationSchema: z.ZodObject<{
116
200
  type: z.ZodEnum<{
117
201
  apprise: "apprise";
118
202
  discord: "discord";
203
+ email: "email";
119
204
  gotify: "gotify";
120
205
  json_webhook: "json_webhook";
121
206
  ntfy: "ntfy";
@@ -152,9 +237,15 @@ export interface Destination {
152
237
  config: Record<string, string | null> | null;
153
238
  secretsSet: string[];
154
239
  referencedByAutomationCount: number;
240
+ referencedByNewsletterCount: number;
155
241
  createdAt: string;
156
242
  updatedAt: string;
157
243
  }
244
+ /** 200 body of the two test routes. `sentTo` is set by kinds that pick the address themselves. */
245
+ export interface DestinationTestResult {
246
+ success: true;
247
+ sentTo?: string;
248
+ }
158
249
  export interface NotificationToast {
159
250
  title: string;
160
251
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export const DESTINATION_KINDS = [
6
6
  'gotify',
7
7
  'apprise',
8
8
  'pushover',
9
+ 'email',
9
10
  'push',
10
11
  'web_toast',
11
12
  ];
@@ -22,6 +23,7 @@ export const NOTIFICATION_EVENT_TYPES = [
22
23
  'media_upgraded',
23
24
  'new_device',
24
25
  'trust_score_changed',
26
+ 'newsletter_send',
25
27
  ];
26
28
  /** What a destination may subscribe to on its own; every other event reaches it through an automation. */
27
29
  export const SUBSCRIBABLE_EVENTS = [
@@ -55,6 +57,122 @@ const text = (key, label, required, placeholder, def) => ({
55
57
  placeholder,
56
58
  default: def,
57
59
  });
60
+ export const EMAIL_SECURITY = ['starttls', 'tls', 'none'];
61
+ /** Host, port and security per provider; the dialog copies them into the sibling fields. usernameHint/passwordHint are i18n keys under pages:settings.destinations.hints, resolved by the dialog rather than copied into the form. */
62
+ export const EMAIL_SMTP_PRESETS = {
63
+ postmark: {
64
+ host: 'smtp.postmarkapp.com',
65
+ port: '587',
66
+ security: 'starttls',
67
+ usernameHint: 'smtpPostmarkUsername',
68
+ passwordHint: 'smtpPostmarkPassword',
69
+ },
70
+ resend: {
71
+ host: 'smtp.resend.com',
72
+ port: '465',
73
+ security: 'tls',
74
+ usernameHint: 'smtpResendUsername',
75
+ passwordHint: 'smtpResendPassword',
76
+ },
77
+ ses: {
78
+ host: 'email-smtp.us-east-1.amazonaws.com',
79
+ port: '587',
80
+ security: 'starttls',
81
+ usernameHint: 'smtpSesUsername',
82
+ passwordHint: 'smtpSesPassword',
83
+ },
84
+ mailgun: {
85
+ host: 'smtp.mailgun.org',
86
+ port: '587',
87
+ security: 'starttls',
88
+ usernameHint: 'smtpMailgunUsername',
89
+ passwordHint: 'smtpMailgunPassword',
90
+ },
91
+ sendgrid: {
92
+ host: 'smtp.sendgrid.net',
93
+ port: '587',
94
+ security: 'starttls',
95
+ usernameHint: 'smtpSendgridUsername',
96
+ passwordHint: 'smtpSendgridPassword',
97
+ },
98
+ brevo: {
99
+ host: 'smtp-relay.brevo.com',
100
+ port: '587',
101
+ security: 'starttls',
102
+ usernameHint: 'smtpBrevoUsername',
103
+ passwordHint: 'smtpBrevoPassword',
104
+ },
105
+ gmail: {
106
+ host: 'smtp.gmail.com',
107
+ port: '587',
108
+ security: 'starttls',
109
+ usernameHint: 'smtpGmailUsername',
110
+ passwordHint: 'smtpGmailPassword',
111
+ },
112
+ };
113
+ const select = (key, label, options, def, extra = {}) => ({
114
+ key,
115
+ label,
116
+ input: 'select',
117
+ required: true,
118
+ secret: false,
119
+ options,
120
+ default: def,
121
+ ...extra,
122
+ });
123
+ const number = (key, label, def, min, max, hint) => ({
124
+ key,
125
+ label,
126
+ input: 'number',
127
+ required: true,
128
+ secret: false,
129
+ default: def,
130
+ min,
131
+ max,
132
+ hint,
133
+ });
134
+ const email = (key, label, required, placeholder) => ({
135
+ key,
136
+ label,
137
+ input: 'email',
138
+ required,
139
+ secret: false,
140
+ placeholder,
141
+ });
142
+ const emails = (key, label, required, placeholder, hint) => ({
143
+ key,
144
+ label,
145
+ input: 'emails',
146
+ required,
147
+ secret: false,
148
+ placeholder,
149
+ hint,
150
+ });
151
+ const toggle = (key, label, def, hint) => ({
152
+ key,
153
+ label,
154
+ input: 'toggle',
155
+ required: false,
156
+ secret: false,
157
+ default: def,
158
+ hint,
159
+ });
160
+ const grouped = (group, fields) => fields.map((field) => ({ ...field, group }));
161
+ const PRESET_OPTIONS = [
162
+ { value: 'custom', label: 'presetCustom' },
163
+ { value: 'postmark', label: 'presetPostmark' },
164
+ { value: 'resend', label: 'presetResend' },
165
+ { value: 'ses', label: 'presetSes' },
166
+ { value: 'mailgun', label: 'presetMailgun' },
167
+ { value: 'sendgrid', label: 'presetSendgrid' },
168
+ { value: 'brevo', label: 'presetBrevo' },
169
+ { value: 'gmail', label: 'presetGmail' },
170
+ ];
171
+ const SECURITY_OPTIONS = [
172
+ { value: 'starttls', label: 'securityStarttls' },
173
+ { value: 'tls', label: 'securityTls' },
174
+ { value: 'none', label: 'securityNone' },
175
+ ];
58
176
  export const DESTINATION_TYPES = {
59
177
  discord: {
60
178
  kind: 'discord',
@@ -108,6 +226,42 @@ export const DESTINATION_TYPES = {
108
226
  events: ALL_EVENTS,
109
227
  fields: [secret('userKey', 'userKey', true), secret('apiToken', 'apiToken', true)],
110
228
  },
229
+ email: {
230
+ kind: 'email',
231
+ label: 'email',
232
+ icon: 'Mail',
233
+ builtin: false,
234
+ events: ALL_EVENTS,
235
+ fields: [
236
+ ...grouped('connection', [
237
+ select('preset', 'preset', PRESET_OPTIONS, 'custom', {
238
+ hint: 'smtpPreset',
239
+ presets: EMAIL_SMTP_PRESETS,
240
+ }),
241
+ text('host', 'host', true, 'smtp.example.com'),
242
+ number('port', 'port', '587', 1, 65535),
243
+ select('security', 'security', SECURITY_OPTIONS, 'starttls'),
244
+ toggle('verifyCertificate', 'verifyCertificate', 'true', 'smtpVerifyCertificate'),
245
+ { ...text('username', 'username', false), hint: 'smtpUsernameOptional' },
246
+ secret('password', 'password', false),
247
+ number('messagesPerSecond', 'messagesPerSecond', '2', 1, 50, 'smtpRate'),
248
+ {
249
+ ...text('messageStream', 'messageStream', false),
250
+ hint: 'smtpMessageStream',
251
+ maxLength: 64,
252
+ pattern: /^[A-Za-z0-9-]*$/,
253
+ },
254
+ ]),
255
+ ...grouped('sender', [
256
+ text('fromName', 'fromName', false, undefined, 'Tracearr'),
257
+ email('fromAddress', 'fromAddress', true, 'tracearr@example.com'),
258
+ email('replyTo', 'replyTo', false),
259
+ ]),
260
+ ...grouped('alerts', [
261
+ emails('to', 'to', false, 'you@example.com, admin@example.com', 'smtpTo'),
262
+ ]),
263
+ ],
264
+ },
111
265
  push: {
112
266
  kind: 'push',
113
267
  label: 'push',
@@ -129,11 +283,62 @@ const httpUrl = z
129
283
  .string()
130
284
  .trim()
131
285
  .refine((v) => /^https?:\/\/\S+$/i.test(v), 'Must be an http(s) URL');
132
- /** Zod object for one kind's config, built from its descriptor; unknown keys rejected. */
133
- export function destinationConfigSchema(kind) {
286
+ const address = z.email();
287
+ function isAddress(value) {
288
+ return address.safeParse(value).success;
289
+ }
290
+ export function addressList(value) {
291
+ return value
292
+ .split(',')
293
+ .map((part) => part.trim())
294
+ .filter((part) => part !== '');
295
+ }
296
+ /** An optional field may be left blank; a required one gets `.min(1)` after this, so blank fails there. */
297
+ function fieldSchema(f) {
298
+ const blankOk = (check) => (v) => (!f.required && v === '') || check(v);
299
+ switch (f.input) {
300
+ case 'url':
301
+ return httpUrl;
302
+ case 'email':
303
+ return z.string().trim().max(254).refine(blankOk(isAddress), 'Must be an email address');
304
+ case 'emails':
305
+ return z
306
+ .string()
307
+ .trim()
308
+ .max(2000)
309
+ .refine(blankOk((v) => addressList(v).length > 0 && addressList(v).every(isAddress)), 'Must be one or more comma-separated email addresses');
310
+ case 'number': {
311
+ const min = f.min ?? Number.MIN_SAFE_INTEGER;
312
+ const max = f.max ?? Number.MAX_SAFE_INTEGER;
313
+ return z
314
+ .string()
315
+ .trim()
316
+ .refine(blankOk((v) => /^\d+$/.test(v) && Number(v) >= min && Number(v) <= max), `Must be a whole number between ${min} and ${max}`);
317
+ }
318
+ case 'select': {
319
+ const allowed = (f.options ?? []).map((o) => o.value);
320
+ return z.string().refine(blankOk((v) => allowed.includes(v)), 'Must be one of the listed options');
321
+ }
322
+ case 'toggle':
323
+ return z.string().refine(blankOk((v) => v === 'true' || v === 'false'), 'Must be true or false');
324
+ case 'text':
325
+ case 'secret': {
326
+ const { pattern } = f;
327
+ const base = z
328
+ .string()
329
+ .trim()
330
+ .max(f.maxLength ?? 2000);
331
+ return pattern
332
+ ? base.refine(blankOk((v) => pattern.test(v)), 'Invalid format')
333
+ : base;
334
+ }
335
+ }
336
+ }
337
+ /** Zod object for a field list; unknown keys rejected. Exported so refinements are testable without a kind. */
338
+ export function configSchemaForFields(fields) {
134
339
  const shape = {};
135
- for (const f of DESTINATION_TYPES[kind].fields) {
136
- let s = f.input === 'url' ? httpUrl : z.string().trim().max(2000);
340
+ for (const f of fields) {
341
+ let s = fieldSchema(f);
137
342
  if (f.required)
138
343
  s = s.min(1);
139
344
  shape[f.key] =
@@ -141,6 +346,10 @@ export function destinationConfigSchema(kind) {
141
346
  }
142
347
  return z.strictObject(shape);
143
348
  }
349
+ /** Zod object for one kind's config, built from its descriptor. */
350
+ export function destinationConfigSchema(kind) {
351
+ return configSchemaForFields(DESTINATION_TYPES[kind].fields);
352
+ }
144
353
  export const notificationEventTypeSchema = z.enum(NOTIFICATION_EVENT_TYPES);
145
354
  const subscribableEventSchema = z.enum(SUBSCRIBABLE_EVENTS);
146
355
  const nonBuiltinKind = z.enum(DESTINATION_KINDS.filter((k) => !DESTINATION_TYPES[k].builtin));
@@ -1 +1 @@
1
- {"version":3,"file":"destinations.js","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"destinations.js","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}