@tracearr/shared 2.2.4-beta.3 → 2.3.0-beta.1
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 +102 -12
- package/dist/destinations.d.ts.map +1 -1
- package/dist/destinations.js +201 -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,21 @@
|
|
|
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
|
+
input: 'text' | 'url' | 'secret' | 'select' | 'number' | 'email' | 'emails';
|
|
14
19
|
required: boolean;
|
|
15
20
|
/** Masked on read, kept on omit; every url is secret because webhook urls embed credentials */
|
|
16
21
|
secret: boolean;
|
|
@@ -18,6 +23,18 @@ export interface DestinationFieldDescriptor {
|
|
|
18
23
|
/** i18n key under pages:settings.destinations.hints, rendered as the field description */
|
|
19
24
|
hint?: string;
|
|
20
25
|
default?: string;
|
|
26
|
+
/** select only */
|
|
27
|
+
options?: readonly DestinationFieldOption[];
|
|
28
|
+
/** number only; validated on the string value, whole non-negative integers regardless of min */
|
|
29
|
+
min?: number;
|
|
30
|
+
max?: number;
|
|
31
|
+
/** text/secret only: overrides the default 2000-char max and adds a format check */
|
|
32
|
+
maxLength?: number;
|
|
33
|
+
pattern?: RegExp;
|
|
34
|
+
/** select only: choosing a value also writes these sibling fields */
|
|
35
|
+
presets?: Readonly<Record<string, Readonly<Record<string, string>>>>;
|
|
36
|
+
/** i18n key under pages:settings.destinations.groups; the dialog draws a separator where the group changes */
|
|
37
|
+
group?: string;
|
|
21
38
|
}
|
|
22
39
|
export interface DestinationDescriptor {
|
|
23
40
|
kind: DestinationKind;
|
|
@@ -29,13 +46,67 @@ export interface DestinationDescriptor {
|
|
|
29
46
|
events: readonly NotificationEventType[];
|
|
30
47
|
fields: readonly DestinationFieldDescriptor[];
|
|
31
48
|
}
|
|
49
|
+
export declare const EMAIL_SECURITY: readonly ['starttls', 'tls', 'none'];
|
|
50
|
+
export type EmailSecurity = (typeof EMAIL_SECURITY)[number];
|
|
51
|
+
/** 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. */
|
|
52
|
+
export declare const EMAIL_SMTP_PRESETS: {
|
|
53
|
+
readonly postmark: {
|
|
54
|
+
readonly host: 'smtp.postmarkapp.com';
|
|
55
|
+
readonly port: '587';
|
|
56
|
+
readonly security: 'starttls';
|
|
57
|
+
readonly usernameHint: 'smtpPostmarkUsername';
|
|
58
|
+
readonly passwordHint: 'smtpPostmarkPassword';
|
|
59
|
+
};
|
|
60
|
+
readonly resend: {
|
|
61
|
+
readonly host: 'smtp.resend.com';
|
|
62
|
+
readonly port: '465';
|
|
63
|
+
readonly security: 'tls';
|
|
64
|
+
readonly usernameHint: 'smtpResendUsername';
|
|
65
|
+
readonly passwordHint: 'smtpResendPassword';
|
|
66
|
+
};
|
|
67
|
+
readonly ses: {
|
|
68
|
+
readonly host: 'email-smtp.us-east-1.amazonaws.com';
|
|
69
|
+
readonly port: '587';
|
|
70
|
+
readonly security: 'starttls';
|
|
71
|
+
readonly usernameHint: 'smtpSesUsername';
|
|
72
|
+
readonly passwordHint: 'smtpSesPassword';
|
|
73
|
+
};
|
|
74
|
+
readonly mailgun: {
|
|
75
|
+
readonly host: 'smtp.mailgun.org';
|
|
76
|
+
readonly port: '587';
|
|
77
|
+
readonly security: 'starttls';
|
|
78
|
+
readonly usernameHint: 'smtpMailgunUsername';
|
|
79
|
+
readonly passwordHint: 'smtpMailgunPassword';
|
|
80
|
+
};
|
|
81
|
+
readonly sendgrid: {
|
|
82
|
+
readonly host: 'smtp.sendgrid.net';
|
|
83
|
+
readonly port: '587';
|
|
84
|
+
readonly security: 'starttls';
|
|
85
|
+
readonly usernameHint: 'smtpSendgridUsername';
|
|
86
|
+
readonly passwordHint: 'smtpSendgridPassword';
|
|
87
|
+
};
|
|
88
|
+
readonly brevo: {
|
|
89
|
+
readonly host: 'smtp-relay.brevo.com';
|
|
90
|
+
readonly port: '587';
|
|
91
|
+
readonly security: 'starttls';
|
|
92
|
+
readonly usernameHint: 'smtpBrevoUsername';
|
|
93
|
+
readonly passwordHint: 'smtpBrevoPassword';
|
|
94
|
+
};
|
|
95
|
+
readonly gmail: {
|
|
96
|
+
readonly host: 'smtp.gmail.com';
|
|
97
|
+
readonly port: '587';
|
|
98
|
+
readonly security: 'starttls';
|
|
99
|
+
readonly usernameHint: 'smtpGmailUsername';
|
|
100
|
+
readonly passwordHint: 'smtpGmailPassword';
|
|
101
|
+
};
|
|
102
|
+
};
|
|
32
103
|
export declare const DESTINATION_TYPES: {
|
|
33
104
|
readonly discord: {
|
|
34
105
|
readonly kind: 'discord';
|
|
35
106
|
readonly label: 'discord';
|
|
36
107
|
readonly icon: 'MessageSquare';
|
|
37
108
|
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"];
|
|
109
|
+
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
110
|
readonly fields: readonly [DestinationFieldDescriptor];
|
|
40
111
|
};
|
|
41
112
|
readonly json_webhook: {
|
|
@@ -43,7 +114,7 @@ export declare const DESTINATION_TYPES: {
|
|
|
43
114
|
readonly label: 'jsonWebhook';
|
|
44
115
|
readonly icon: 'Webhook';
|
|
45
116
|
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"];
|
|
117
|
+
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
118
|
readonly fields: readonly [DestinationFieldDescriptor];
|
|
48
119
|
};
|
|
49
120
|
readonly ntfy: {
|
|
@@ -51,7 +122,7 @@ export declare const DESTINATION_TYPES: {
|
|
|
51
122
|
readonly label: 'ntfy';
|
|
52
123
|
readonly icon: 'Bell';
|
|
53
124
|
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"];
|
|
125
|
+
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
126
|
readonly fields: readonly [DestinationFieldDescriptor, DestinationFieldDescriptor, DestinationFieldDescriptor];
|
|
56
127
|
};
|
|
57
128
|
readonly gotify: {
|
|
@@ -59,7 +130,7 @@ export declare const DESTINATION_TYPES: {
|
|
|
59
130
|
readonly label: 'gotify';
|
|
60
131
|
readonly icon: 'Bell';
|
|
61
132
|
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"];
|
|
133
|
+
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
134
|
readonly fields: readonly [DestinationFieldDescriptor];
|
|
64
135
|
};
|
|
65
136
|
readonly apprise: {
|
|
@@ -67,7 +138,7 @@ export declare const DESTINATION_TYPES: {
|
|
|
67
138
|
readonly label: 'apprise';
|
|
68
139
|
readonly icon: 'Share2';
|
|
69
140
|
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"];
|
|
141
|
+
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
142
|
readonly fields: readonly [DestinationFieldDescriptor];
|
|
72
143
|
};
|
|
73
144
|
readonly pushover: {
|
|
@@ -75,15 +146,23 @@ export declare const DESTINATION_TYPES: {
|
|
|
75
146
|
readonly label: 'pushover';
|
|
76
147
|
readonly icon: 'Smartphone';
|
|
77
148
|
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"];
|
|
149
|
+
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
150
|
readonly fields: readonly [DestinationFieldDescriptor, DestinationFieldDescriptor];
|
|
80
151
|
};
|
|
152
|
+
readonly email: {
|
|
153
|
+
readonly kind: 'email';
|
|
154
|
+
readonly label: 'email';
|
|
155
|
+
readonly icon: 'Mail';
|
|
156
|
+
readonly builtin: false;
|
|
157
|
+
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"];
|
|
158
|
+
readonly fields: readonly DestinationFieldDescriptor[];
|
|
159
|
+
};
|
|
81
160
|
readonly push: {
|
|
82
161
|
readonly kind: 'push';
|
|
83
162
|
readonly label: 'push';
|
|
84
163
|
readonly icon: 'Smartphone';
|
|
85
164
|
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")[];
|
|
165
|
+
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
166
|
readonly fields: readonly [];
|
|
88
167
|
};
|
|
89
168
|
readonly web_toast: {
|
|
@@ -91,16 +170,20 @@ export declare const DESTINATION_TYPES: {
|
|
|
91
170
|
readonly label: 'webToast';
|
|
92
171
|
readonly icon: 'Globe';
|
|
93
172
|
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")[];
|
|
173
|
+
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
174
|
readonly fields: readonly [];
|
|
96
175
|
};
|
|
97
176
|
};
|
|
98
|
-
|
|
177
|
+
export declare function addressList(value: string): string[];
|
|
178
|
+
/** Zod object for a field list; unknown keys rejected. Exported so refinements are testable without a kind. */
|
|
179
|
+
export declare function configSchemaForFields(fields: readonly DestinationFieldDescriptor[]): z.ZodObject<z.ZodRawShape>;
|
|
180
|
+
/** Zod object for one kind's config, built from its descriptor. */
|
|
99
181
|
export declare function destinationConfigSchema(kind: DestinationKind): z.ZodObject<z.ZodRawShape>;
|
|
100
182
|
export declare const notificationEventTypeSchema: z.ZodEnum<{
|
|
101
183
|
media_added: "media_added";
|
|
102
184
|
media_upgraded: "media_upgraded";
|
|
103
185
|
new_device: "new_device";
|
|
186
|
+
newsletter_send: "newsletter_send";
|
|
104
187
|
plugin_update_available: "plugin_update_available";
|
|
105
188
|
server_down: "server_down";
|
|
106
189
|
server_up: "server_up";
|
|
@@ -116,6 +199,7 @@ export declare const createDestinationSchema: z.ZodObject<{
|
|
|
116
199
|
type: z.ZodEnum<{
|
|
117
200
|
apprise: "apprise";
|
|
118
201
|
discord: "discord";
|
|
202
|
+
email: "email";
|
|
119
203
|
gotify: "gotify";
|
|
120
204
|
json_webhook: "json_webhook";
|
|
121
205
|
ntfy: "ntfy";
|
|
@@ -152,9 +236,15 @@ export interface Destination {
|
|
|
152
236
|
config: Record<string, string | null> | null;
|
|
153
237
|
secretsSet: string[];
|
|
154
238
|
referencedByAutomationCount: number;
|
|
239
|
+
referencedByNewsletterCount: number;
|
|
155
240
|
createdAt: string;
|
|
156
241
|
updatedAt: string;
|
|
157
242
|
}
|
|
243
|
+
/** 200 body of the two test routes. `sentTo` is set by kinds that pick the address themselves. */
|
|
244
|
+
export interface DestinationTestResult {
|
|
245
|
+
success: true;
|
|
246
|
+
sentTo?: string;
|
|
247
|
+
}
|
|
158
248
|
export interface NotificationToast {
|
|
159
249
|
title: string;
|
|
160
250
|
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,113 @@ 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 grouped = (group, fields) => fields.map((field) => ({ ...field, group }));
|
|
152
|
+
const PRESET_OPTIONS = [
|
|
153
|
+
{ value: 'custom', label: 'presetCustom' },
|
|
154
|
+
{ value: 'postmark', label: 'presetPostmark' },
|
|
155
|
+
{ value: 'resend', label: 'presetResend' },
|
|
156
|
+
{ value: 'ses', label: 'presetSes' },
|
|
157
|
+
{ value: 'mailgun', label: 'presetMailgun' },
|
|
158
|
+
{ value: 'sendgrid', label: 'presetSendgrid' },
|
|
159
|
+
{ value: 'brevo', label: 'presetBrevo' },
|
|
160
|
+
{ value: 'gmail', label: 'presetGmail' },
|
|
161
|
+
];
|
|
162
|
+
const SECURITY_OPTIONS = [
|
|
163
|
+
{ value: 'starttls', label: 'securityStarttls' },
|
|
164
|
+
{ value: 'tls', label: 'securityTls' },
|
|
165
|
+
{ value: 'none', label: 'securityNone' },
|
|
166
|
+
];
|
|
58
167
|
export const DESTINATION_TYPES = {
|
|
59
168
|
discord: {
|
|
60
169
|
kind: 'discord',
|
|
@@ -108,6 +217,41 @@ export const DESTINATION_TYPES = {
|
|
|
108
217
|
events: ALL_EVENTS,
|
|
109
218
|
fields: [secret('userKey', 'userKey', true), secret('apiToken', 'apiToken', true)],
|
|
110
219
|
},
|
|
220
|
+
email: {
|
|
221
|
+
kind: 'email',
|
|
222
|
+
label: 'email',
|
|
223
|
+
icon: 'Mail',
|
|
224
|
+
builtin: false,
|
|
225
|
+
events: ALL_EVENTS,
|
|
226
|
+
fields: [
|
|
227
|
+
...grouped('connection', [
|
|
228
|
+
select('preset', 'preset', PRESET_OPTIONS, 'custom', {
|
|
229
|
+
hint: 'smtpPreset',
|
|
230
|
+
presets: EMAIL_SMTP_PRESETS,
|
|
231
|
+
}),
|
|
232
|
+
text('host', 'host', true, 'smtp.example.com'),
|
|
233
|
+
number('port', 'port', '587', 1, 65535),
|
|
234
|
+
select('security', 'security', SECURITY_OPTIONS, 'starttls'),
|
|
235
|
+
{ ...text('username', 'username', false), hint: 'smtpUsernameOptional' },
|
|
236
|
+
secret('password', 'password', false),
|
|
237
|
+
number('messagesPerSecond', 'messagesPerSecond', '2', 1, 50, 'smtpRate'),
|
|
238
|
+
{
|
|
239
|
+
...text('messageStream', 'messageStream', false),
|
|
240
|
+
hint: 'smtpMessageStream',
|
|
241
|
+
maxLength: 64,
|
|
242
|
+
pattern: /^[A-Za-z0-9-]*$/,
|
|
243
|
+
},
|
|
244
|
+
]),
|
|
245
|
+
...grouped('sender', [
|
|
246
|
+
text('fromName', 'fromName', false, undefined, 'Tracearr'),
|
|
247
|
+
email('fromAddress', 'fromAddress', true, 'tracearr@example.com'),
|
|
248
|
+
email('replyTo', 'replyTo', false),
|
|
249
|
+
]),
|
|
250
|
+
...grouped('alerts', [
|
|
251
|
+
emails('to', 'to', false, 'you@example.com, admin@example.com', 'smtpTo'),
|
|
252
|
+
]),
|
|
253
|
+
],
|
|
254
|
+
},
|
|
111
255
|
push: {
|
|
112
256
|
kind: 'push',
|
|
113
257
|
label: 'push',
|
|
@@ -129,11 +273,60 @@ const httpUrl = z
|
|
|
129
273
|
.string()
|
|
130
274
|
.trim()
|
|
131
275
|
.refine((v) => /^https?:\/\/\S+$/i.test(v), 'Must be an http(s) URL');
|
|
132
|
-
|
|
133
|
-
|
|
276
|
+
const address = z.email();
|
|
277
|
+
function isAddress(value) {
|
|
278
|
+
return address.safeParse(value).success;
|
|
279
|
+
}
|
|
280
|
+
export function addressList(value) {
|
|
281
|
+
return value
|
|
282
|
+
.split(',')
|
|
283
|
+
.map((part) => part.trim())
|
|
284
|
+
.filter((part) => part !== '');
|
|
285
|
+
}
|
|
286
|
+
/** An optional field may be left blank; a required one gets `.min(1)` after this, so blank fails there. */
|
|
287
|
+
function fieldSchema(f) {
|
|
288
|
+
const blankOk = (check) => (v) => (!f.required && v === '') || check(v);
|
|
289
|
+
switch (f.input) {
|
|
290
|
+
case 'url':
|
|
291
|
+
return httpUrl;
|
|
292
|
+
case 'email':
|
|
293
|
+
return z.string().trim().max(254).refine(blankOk(isAddress), 'Must be an email address');
|
|
294
|
+
case 'emails':
|
|
295
|
+
return z
|
|
296
|
+
.string()
|
|
297
|
+
.trim()
|
|
298
|
+
.max(2000)
|
|
299
|
+
.refine(blankOk((v) => addressList(v).length > 0 && addressList(v).every(isAddress)), 'Must be one or more comma-separated email addresses');
|
|
300
|
+
case 'number': {
|
|
301
|
+
const min = f.min ?? Number.MIN_SAFE_INTEGER;
|
|
302
|
+
const max = f.max ?? Number.MAX_SAFE_INTEGER;
|
|
303
|
+
return z
|
|
304
|
+
.string()
|
|
305
|
+
.trim()
|
|
306
|
+
.refine(blankOk((v) => /^\d+$/.test(v) && Number(v) >= min && Number(v) <= max), `Must be a whole number between ${min} and ${max}`);
|
|
307
|
+
}
|
|
308
|
+
case 'select': {
|
|
309
|
+
const allowed = (f.options ?? []).map((o) => o.value);
|
|
310
|
+
return z.string().refine(blankOk((v) => allowed.includes(v)), 'Must be one of the listed options');
|
|
311
|
+
}
|
|
312
|
+
case 'text':
|
|
313
|
+
case 'secret': {
|
|
314
|
+
const { pattern } = f;
|
|
315
|
+
const base = z
|
|
316
|
+
.string()
|
|
317
|
+
.trim()
|
|
318
|
+
.max(f.maxLength ?? 2000);
|
|
319
|
+
return pattern
|
|
320
|
+
? base.refine(blankOk((v) => pattern.test(v)), 'Invalid format')
|
|
321
|
+
: base;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/** Zod object for a field list; unknown keys rejected. Exported so refinements are testable without a kind. */
|
|
326
|
+
export function configSchemaForFields(fields) {
|
|
134
327
|
const shape = {};
|
|
135
|
-
for (const f of
|
|
136
|
-
let s = f
|
|
328
|
+
for (const f of fields) {
|
|
329
|
+
let s = fieldSchema(f);
|
|
137
330
|
if (f.required)
|
|
138
331
|
s = s.min(1);
|
|
139
332
|
shape[f.key] =
|
|
@@ -141,6 +334,10 @@ export function destinationConfigSchema(kind) {
|
|
|
141
334
|
}
|
|
142
335
|
return z.strictObject(shape);
|
|
143
336
|
}
|
|
337
|
+
/** Zod object for one kind's config, built from its descriptor. */
|
|
338
|
+
export function destinationConfigSchema(kind) {
|
|
339
|
+
return configSchemaForFields(DESTINATION_TYPES[kind].fields);
|
|
340
|
+
}
|
|
144
341
|
export const notificationEventTypeSchema = z.enum(NOTIFICATION_EVENT_TYPES);
|
|
145
342
|
const subscribableEventSchema = z.enum(SUBSCRIBABLE_EVENTS);
|
|
146
343
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,cAAc;IACd,MAAM;IACN,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,MAAM;IACN,WAAW;CACH,CAAC;AAGX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,yBAAyB;IACzB,yBAAyB;IACzB,2BAA2B;IAC3B,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,qBAAqB;IACrB,iBAAiB;CACkC,CAAC;AAEtD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oBAAoB;CAC+B,CAAC;AAGtD,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,4EAA4E;AAC5E,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CACzC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,CACxE,CAAC;AA6CF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,WAAmB,EAA8B,EAAE,CAAC,CAAC;IAC5F,GAAG;IACH,KAAK;IACL,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CACb,GAAW,EACX,KAAa,EACb,QAAiB,EACjB,IAAa,EACe,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,QAAQ;IACR,MAAM,EAAE,IAAI;IACZ,IAAI;CACL,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CACX,GAAW,EACX,KAAa,EACb,QAAiB,EACjB,WAAoB,EACpB,GAAY,EACgB,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,MAAM;IACb,QAAQ;IACR,MAAM,EAAE,KAAK;IACb,WAAW;IACX,OAAO,EAAE,GAAG;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAGnE,sOAAsO;AACtO,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE;QACR,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,sBAAsB;QACpC,YAAY,EAAE,sBAAsB;KACrC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,oBAAoB;QAClC,YAAY,EAAE,oBAAoB;KACnC;IACD,GAAG,EAAE;QACH,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,iBAAiB;QAC/B,YAAY,EAAE,iBAAiB;KAChC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,qBAAqB;QACnC,YAAY,EAAE,qBAAqB;KACpC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,sBAAsB;QACpC,YAAY,EAAE,sBAAsB;KACrC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,mBAAmB;KAClC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,mBAAmB;KAClC;CAUF,CAAC;AAEF,MAAM,MAAM,GAAG,CACb,GAAW,EACX,KAAa,EACb,OAA0C,EAC1C,GAAW,EACX,KAAK,GAAuE,EAAE,EAClD,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,OAAO;IACP,OAAO,EAAE,GAAG;IACZ,GAAG,KAAK;CACT,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CACb,GAAW,EACX,KAAa,EACb,GAAW,EACX,GAAW,EACX,GAAW,EACX,IAAa,EACe,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,GAAG;IACZ,GAAG;IACH,GAAG;IACH,IAAI;CACL,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,CACZ,GAAW,EACX,KAAa,EACb,QAAiB,EACjB,WAAoB,EACQ,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,OAAO;IACd,QAAQ;IACR,MAAM,EAAE,KAAK;IACb,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CACb,GAAW,EACX,KAAa,EACb,QAAiB,EACjB,WAAmB,EACnB,IAAY,EACgB,EAAE,CAAC,CAAC;IAChC,GAAG;IACH,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,QAAQ;IACR,MAAM,EAAE,KAAK;IACb,WAAW;IACX,IAAI;CACL,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,CACd,KAAa,EACb,MAA6C,EACf,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAM,cAAc,GAAsC;IACxD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC9C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1C,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;IACpC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IAC5C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE;IACxC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE;CACzC,CAAC;AAEF,MAAM,gBAAgB,GAAsC;IAC1D,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAChD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE;IACtC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,sCAAsC,CAAC,CAAC;KAClF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;KAC3D;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;YACN,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC;YACpD,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,CAAC;SAC7D;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,8CAA8C,CAAC,CAAC;KAClF;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,4CAA4C,CAAC,CAAC;KAC7E;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;KACnF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,YAAY,EAAE;gBACvB,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE;oBACnD,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,kBAAkB;iBAC5B,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC;gBAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;gBACvC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC;gBAC5D,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;gBACxE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;gBACrC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC;gBACxE;oBACE,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC;oBAChD,IAAI,EAAE,mBAAmB;oBACzB,SAAS,EAAE,EAAE;oBACb,OAAO,EAAE,iBAAiB;iBAC3B;aACF,CAAC;YACF,GAAG,OAAO,CAAC,QAAQ,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;gBAC1D,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,sBAAsB,CAAC;gBACjE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;aACnC,CAAC;YACF,GAAG,OAAO,CAAC,QAAQ,EAAE;gBACnB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,oCAAoC,EAAE,QAAQ,CAAC;aAC1E,CAAC;SACH;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,EAAE;KACX;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,EAAE;KACX;CACgE,CAAC;AAEpE,MAAM,OAAO,GAAG,CAAC;KACd,MAAM,EAAE;KACR,IAAI,EAAE;KACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;AAExE,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAE1B,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,2GAA2G;AAC3G,SAAS,WAAW,CAAC,CAA6B;IAChD,MAAM,OAAO,GAAG,CAAC,KAA6B,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAC/D,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC3F,KAAK,QAAQ;YACX,OAAO,CAAC;iBACL,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,MAAM,CACL,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAC5E,qDAAqD,CACtD,CAAC;QACN,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAC7C,OAAO,CAAC;iBACL,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,MAAM,CACL,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EACvE,kCAAkC,GAAG,QAAQ,GAAG,EAAE,CACnD,CAAC;QACN,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CACtB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACnC,mCAAmC,CACpC,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC;iBACX,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;YAC5B,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,MAAM,CACT,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC/B,gBAAgB,CACjB;gBACH,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,qBAAqB,CACnC,MAA6C;IAE7C,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YACV,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,uBAAuB,CAAC,IAAqB;IAC3D,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC5D,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,YAAY,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,YAAY,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
|