@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.
- package/dist/automations/__tests__/definition.test.js +6 -2
- package/dist/automations/__tests__/definition.test.js.map +1 -1
- package/dist/automations/__tests__/triggers.test.js +18 -1
- package/dist/automations/__tests__/triggers.test.js.map +1 -1
- package/dist/automations/definition.d.ts +7 -0
- package/dist/automations/definition.d.ts.map +1 -1
- package/dist/automations/dryRun.d.ts +2 -0
- package/dist/automations/dryRun.d.ts.map +1 -1
- package/dist/automations/templates.d.ts +4 -0
- package/dist/automations/templates.d.ts.map +1 -1
- package/dist/automations/triggers.d.ts +13 -1
- package/dist/automations/triggers.d.ts.map +1 -1
- package/dist/automations/triggers.js +16 -1
- package/dist/automations/triggers.js.map +1 -1
- package/dist/destinations.d.ts +103 -12
- package/dist/destinations.d.ts.map +1 -1
- package/dist/destinations.js +213 -4
- package/dist/destinations.js.map +1 -1
- package/dist/emailRichText.d.ts +199 -0
- package/dist/emailRichText.d.ts.map +1 -0
- package/dist/emailRichText.js +133 -0
- package/dist/emailRichText.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/mediaServerLinks.d.ts +15 -0
- package/dist/mediaServerLinks.d.ts.map +1 -1
- package/dist/mediaServerLinks.js +60 -0
- package/dist/mediaServerLinks.js.map +1 -1
- package/dist/newsletters.d.ts +1367 -0
- package/dist/newsletters.d.ts.map +1 -0
- package/dist/newsletters.js +215 -0
- package/dist/newsletters.js.map +1 -0
- package/dist/schemas.d.ts +13 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +49 -18
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/destinations.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3E,eAAO,MAAM,iBAAiB,YAC5B,SAAS,EACT,cAAc,EACd,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,WAAW,CACH,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}
|
package/dist/destinations.js
CHANGED
|
@@ -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
|
-
|
|
133
|
-
|
|
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
|
|
136
|
-
let s = f
|
|
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));
|
package/dist/destinations.js.map
CHANGED
|
@@ -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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"}
|