@prenta/core 8.15.0 → 8.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/api/route-helpers/auth.d.ts +7 -0
  3. package/dist/api/route-helpers/auth.d.ts.map +1 -1
  4. package/dist/api/route-helpers/auth.js +13 -0
  5. package/dist/api/route-helpers/auth.js.map +1 -1
  6. package/dist/api/route-helpers/forms.d.ts.map +1 -1
  7. package/dist/api/route-helpers/forms.js +6 -4
  8. package/dist/api/route-helpers/forms.js.map +1 -1
  9. package/dist/api/routes/auth.d.ts.map +1 -1
  10. package/dist/api/routes/auth.js +20 -4
  11. package/dist/api/routes/auth.js.map +1 -1
  12. package/dist/api/routes/forms.d.ts.map +1 -1
  13. package/dist/api/routes/forms.js +85 -5
  14. package/dist/api/routes/forms.js.map +1 -1
  15. package/dist/api/routes/scheduling.d.ts.map +1 -1
  16. package/dist/api/routes/scheduling.js +4 -1
  17. package/dist/api/routes/scheduling.js.map +1 -1
  18. package/dist/api/routes/system.d.ts.map +1 -1
  19. package/dist/api/routes/system.js +9 -2
  20. package/dist/api/routes/system.js.map +1 -1
  21. package/dist/forms/captcha-settings.d.ts +108 -0
  22. package/dist/forms/captcha-settings.d.ts.map +1 -0
  23. package/dist/forms/captcha-settings.js +257 -0
  24. package/dist/forms/captcha-settings.js.map +1 -0
  25. package/dist/forms/client-validation.d.ts +4 -0
  26. package/dist/forms/client-validation.d.ts.map +1 -1
  27. package/dist/forms/client-validation.js +4 -0
  28. package/dist/forms/client-validation.js.map +1 -1
  29. package/dist/next.d.ts.map +1 -1
  30. package/dist/next.js +3 -1
  31. package/dist/next.js.map +1 -1
  32. package/dist/security/captcha.d.ts +22 -2
  33. package/dist/security/captcha.d.ts.map +1 -1
  34. package/dist/security/captcha.js +42 -11
  35. package/dist/security/captcha.js.map +1 -1
  36. package/dist/server-site.d.ts.map +1 -1
  37. package/dist/server-site.js +3 -5
  38. package/dist/server-site.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ /**
2
+ * reCAPTCHA v3 keys for public forms, entered in Form Settings → Spam
3
+ * protection.
4
+ *
5
+ * Storage: one Document row, `collection = '__form_captcha__'`, like the email
6
+ * settings store. The secret key is encrypted with `encryptSecret` and never
7
+ * leaves the server; clients see `hasSecret` and the last four characters.
8
+ *
9
+ * Precedence: `RECAPTCHA_*` / `TURNSTILE_*` env vars win when set, so a
10
+ * deployment can pin keys.
11
+ *
12
+ * Admin login uses these keys only after `protectLogin` is switched on, which
13
+ * requires a real token from the admin's own domain to verify first (a key
14
+ * not registered for that domain would otherwise lock everyone out). Changing
15
+ * the keys switches it off again. Google outages let logins through, and
16
+ * `CAPTCHA_LOGIN=off` turns it off from the deployment as a last resort.
17
+ */
18
+ import { type CaptchaConfig, type CaptchaProvider } from '../security/captcha.js';
19
+ import type { FormSpamSettings } from './types.js';
20
+ export declare const FORM_CAPTCHA_COLLECTION = "__form_captcha__";
21
+ export { FORM_CAPTCHA_ACTION, LOGIN_CAPTCHA_ACTION } from './client-validation.js';
22
+ /** What the admin screen shows. Never includes the secret. */
23
+ export interface FormCaptchaSettingsPublic {
24
+ /** Where the keys forms use come from. */
25
+ source: 'env' | 'admin' | 'none';
26
+ /** The provider forms use. */
27
+ provider: CaptchaProvider;
28
+ /** The admin-entered site key (empty when none is saved). */
29
+ siteKey: string;
30
+ hasSecret: boolean;
31
+ secretLast4: string | null;
32
+ scoreThreshold: number;
33
+ /** True when env keys are set, so the fields below are not in use. */
34
+ envOverride: boolean;
35
+ /** Admin login requires these keys too. */
36
+ protectLogin: boolean;
37
+ /** `CAPTCHA_LOGIN=off` is set, so login protection is off whatever the switch says. */
38
+ loginDisabledByEnv: boolean;
39
+ updatedAt: string | null;
40
+ }
41
+ export interface FormCaptchaSettingsInput {
42
+ siteKey?: string;
43
+ /** Replaces the stored secret. Omit to keep it. */
44
+ secretKey?: string;
45
+ scoreThreshold?: number;
46
+ /** Removes the saved keys. */
47
+ clear?: boolean;
48
+ }
49
+ type Db = {
50
+ document?: {
51
+ findFirst?: (args: unknown) => Promise<{
52
+ id?: string;
53
+ data?: unknown;
54
+ } | null>;
55
+ update?: (args: unknown) => Promise<unknown>;
56
+ create?: (args: unknown) => Promise<unknown>;
57
+ };
58
+ };
59
+ export declare function getFormCaptchaSettings(db: Db): Promise<FormCaptchaSettingsPublic>;
60
+ /** Field errors keyed like the input. Empty when the input can be saved. */
61
+ export declare function validateFormCaptchaInput(input: FormCaptchaSettingsInput, hasStoredSecret: boolean): Record<string, string>;
62
+ /**
63
+ * Save or clear the keys. The caller checks the role and validates first
64
+ * ({@link validateFormCaptchaInput}).
65
+ */
66
+ export declare function putFormCaptchaSettings(db: Db, input: FormCaptchaSettingsInput, userId: string): Promise<FormCaptchaSettingsPublic>;
67
+ /**
68
+ * The captcha public forms use: env keys first, then the admin-entered
69
+ * reCAPTCHA v3 keys. `provider: 'none'` when neither is set.
70
+ */
71
+ export declare function resolveFormCaptchaConfig(db: Db): Promise<CaptchaConfig>;
72
+ /**
73
+ * The captcha admin login uses: env keys first, as before; then the
74
+ * admin-entered keys, but only once login protection is switched on. With
75
+ * admin keys a Google outage lets the login through (it's audited), since a
76
+ * lockout would need a database edit to undo.
77
+ */
78
+ export declare function resolveLoginCaptchaConfig(db: Db): Promise<CaptchaConfig>;
79
+ export type LoginProtectionResult = {
80
+ ok: true;
81
+ settings: FormCaptchaSettingsPublic;
82
+ } | {
83
+ ok: false;
84
+ status: number;
85
+ error: string;
86
+ };
87
+ /**
88
+ * Switch login protection on or off. Switching on needs a token the admin's
89
+ * browser just got with the saved site key and the `login` action; it must
90
+ * pass with the saved secret, proving the keys work on this domain.
91
+ */
92
+ export declare function setLoginProtection(db: Db, input: {
93
+ enabled: boolean;
94
+ token?: string;
95
+ remoteIp?: string;
96
+ }, userId: string): Promise<LoginProtectionResult>;
97
+ /**
98
+ * Form Settings → Spam protection → CAPTCHA: on all forms, per form, or off.
99
+ * "Per form" means forms whose spam strategies include `captcha`.
100
+ */
101
+ export declare function formRequiresCaptcha(scope: 'all' | 'per' | 'off', spamSettings: FormSpamSettings | undefined): boolean;
102
+ /**
103
+ * The captcha one form must pass, or null. The submit route verifies against
104
+ * it and the public schema advertises it, so the two can't disagree. Until
105
+ * Form Settings is saved the scope is "all forms", as before.
106
+ */
107
+ export declare function resolveCaptchaForForm(db: Db, spamSettings: FormSpamSettings | undefined): Promise<CaptchaConfig | null>;
108
+ //# sourceMappingURL=captcha-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captcha-settings.d.ts","sourceRoot":"","sources":["../../src/forms/captcha-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,uBAAuB,qBAAqB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAkBlF,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAChC,8BAA8B;IAC9B,QAAQ,EAAE,eAAe,CAAA;IACzB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,WAAW,EAAE,OAAO,CAAA;IACpB,2CAA2C;IAC3C,YAAY,EAAE,OAAO,CAAA;IACrB,uFAAuF;IACvF,kBAAkB,EAAE,OAAO,CAAA;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,KAAK,EAAE,GAAG;IACR,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC,CAAA;QAC9E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC7C,CAAA;CACF,CAAA;AAiCD,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAEvF;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,EAC/B,eAAe,EAAE,OAAO,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,wBAAwB,EAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC,CAyBpC;AA6CD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAI7E;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAQ9E;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,yBAAyB,CAAA;CAAE,GACjD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAmDhC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAC5B,YAAY,EAAE,gBAAgB,GAAG,SAAS,GACzC,OAAO,CAIT;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,gBAAgB,GAAG,SAAS,GACzC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAK/B"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * reCAPTCHA v3 keys for public forms, entered in Form Settings → Spam
3
+ * protection.
4
+ *
5
+ * Storage: one Document row, `collection = '__form_captcha__'`, like the email
6
+ * settings store. The secret key is encrypted with `encryptSecret` and never
7
+ * leaves the server; clients see `hasSecret` and the last four characters.
8
+ *
9
+ * Precedence: `RECAPTCHA_*` / `TURNSTILE_*` env vars win when set, so a
10
+ * deployment can pin keys.
11
+ *
12
+ * Admin login uses these keys only after `protectLogin` is switched on, which
13
+ * requires a real token from the admin's own domain to verify first (a key
14
+ * not registered for that domain would otherwise lock everyone out). Changing
15
+ * the keys switches it off again. Google outages let logins through, and
16
+ * `CAPTCHA_LOGIN=off` turns it off from the deployment as a last resort.
17
+ */
18
+ import { getCaptchaConfig, getCaptchaPolicy, isCaptchaProviderError, normalizeScoreThreshold, verifyCaptcha, } from '../security/captcha.js';
19
+ import { decryptSecret, encryptSecret } from '../security/secret-storage.js';
20
+ import { LOGIN_CAPTCHA_ACTION } from './client-validation.js';
21
+ import { readStoredFormsSettings } from './site-settings.js';
22
+ export const FORM_CAPTCHA_COLLECTION = '__form_captcha__';
23
+ export { FORM_CAPTCHA_ACTION, LOGIN_CAPTCHA_ACTION } from './client-validation.js';
24
+ function loginCaptchaDisabledByEnv() {
25
+ return (process.env.CAPTCHA_LOGIN ?? '').trim().toLowerCase() === 'off';
26
+ }
27
+ const KEY_PATTERN = /^[A-Za-z0-9_-]{20,200}$/;
28
+ // A failed read throws rather than reading as "no keys": treating it as
29
+ // unset would let protected forms and logins through without a token.
30
+ async function readDocument(db) {
31
+ if (!db.document?.findFirst)
32
+ return { id: null, data: {} };
33
+ const row = await db.document.findFirst({
34
+ where: { collection: FORM_CAPTCHA_COLLECTION, deletedAt: null },
35
+ select: { id: true, data: true },
36
+ });
37
+ const data = row?.data && typeof row.data === 'object' ? row.data : {};
38
+ return { id: row?.id ?? null, data };
39
+ }
40
+ function toPublic(doc) {
41
+ const env = getCaptchaConfig();
42
+ const stored = Boolean(doc.siteKey && doc.secretEncrypted);
43
+ return {
44
+ source: env.provider !== 'none' ? 'env' : stored ? 'admin' : 'none',
45
+ provider: env.provider !== 'none' ? env.provider : stored ? 'recaptcha' : 'none',
46
+ siteKey: doc.siteKey ?? '',
47
+ hasSecret: Boolean(doc.secretEncrypted),
48
+ secretLast4: doc.secretLast4 ?? null,
49
+ scoreThreshold: normalizeScoreThreshold(doc.scoreThreshold),
50
+ envOverride: env.provider !== 'none',
51
+ protectLogin: Boolean(doc.protectLogin && stored),
52
+ loginDisabledByEnv: loginCaptchaDisabledByEnv(),
53
+ updatedAt: doc.updatedAt ?? null,
54
+ };
55
+ }
56
+ export async function getFormCaptchaSettings(db) {
57
+ return toPublic((await readDocument(db)).data);
58
+ }
59
+ /** Field errors keyed like the input. Empty when the input can be saved. */
60
+ export function validateFormCaptchaInput(input, hasStoredSecret) {
61
+ if (input.clear)
62
+ return {};
63
+ const errors = {};
64
+ const siteKey = input.siteKey?.trim() ?? '';
65
+ const secretKey = input.secretKey?.trim() ?? '';
66
+ if (!KEY_PATTERN.test(siteKey)) {
67
+ errors.siteKey = 'Paste the site key from the reCAPTCHA admin console.';
68
+ }
69
+ if (secretKey ? !KEY_PATTERN.test(secretKey) : !hasStoredSecret) {
70
+ errors.secretKey = 'Paste the secret key from the reCAPTCHA admin console.';
71
+ }
72
+ if (input.scoreThreshold !== undefined &&
73
+ (typeof input.scoreThreshold !== 'number' ||
74
+ !Number.isFinite(input.scoreThreshold) ||
75
+ input.scoreThreshold < 0 ||
76
+ input.scoreThreshold > 1)) {
77
+ errors.scoreThreshold = 'Enter a score from 0 to 1.';
78
+ }
79
+ return errors;
80
+ }
81
+ /**
82
+ * Save or clear the keys. The caller checks the role and validates first
83
+ * ({@link validateFormCaptchaInput}).
84
+ */
85
+ export async function putFormCaptchaSettings(db, input, userId) {
86
+ const { id, data: existing } = await readDocument(db);
87
+ const secretKey = input.secretKey?.trim();
88
+ const siteKey = input.siteKey?.trim();
89
+ // New keys haven't been proven on the admin's domain: login protection
90
+ // must be switched on again.
91
+ const keysChanged = Boolean(secretKey) || siteKey !== existing.siteKey;
92
+ const next = input.clear
93
+ ? {}
94
+ : {
95
+ siteKey,
96
+ secretEncrypted: secretKey ? await encryptSecret(secretKey) : existing.secretEncrypted,
97
+ secretLast4: secretKey ? secretKey.slice(-4) : existing.secretLast4,
98
+ scoreThreshold: normalizeScoreThreshold(input.scoreThreshold ?? existing.scoreThreshold),
99
+ ...(keysChanged
100
+ ? {}
101
+ : { protectLogin: existing.protectLogin, loginVerifiedAt: existing.loginVerifiedAt }),
102
+ };
103
+ const data = {
104
+ ...next,
105
+ updatedAt: new Date().toISOString(),
106
+ updatedBy: userId,
107
+ };
108
+ await writeDocument(db, id, data, userId);
109
+ return toPublic(data);
110
+ }
111
+ async function writeDocument(db, id, data, userId) {
112
+ if (id) {
113
+ await db.document.update({ where: { id }, data: { data, updatedById: userId } });
114
+ }
115
+ else {
116
+ await db.document.create({
117
+ data: {
118
+ collection: FORM_CAPTCHA_COLLECTION,
119
+ data,
120
+ status: 'PUBLISHED',
121
+ title: 'Form CAPTCHA',
122
+ slug: 'form-captcha',
123
+ createdById: userId,
124
+ updatedById: userId,
125
+ },
126
+ });
127
+ }
128
+ }
129
+ /**
130
+ * The stored keys as a reCAPTCHA config, or null when none are saved. A
131
+ * secret that no longer decrypts (missing or rotated `CMS_ENCRYPTION_KEY`)
132
+ * gives an `unavailable` config, so the outage policy decides.
133
+ */
134
+ async function storedRecaptchaConfig(data) {
135
+ if (!data.siteKey || !data.secretEncrypted)
136
+ return null;
137
+ const base = {
138
+ provider: 'recaptcha',
139
+ siteKey: data.siteKey,
140
+ scoreThreshold: normalizeScoreThreshold(data.scoreThreshold),
141
+ ...getCaptchaPolicy(),
142
+ };
143
+ try {
144
+ return { ...base, secretKey: await decryptSecret(data.secretEncrypted) };
145
+ }
146
+ catch {
147
+ return { ...base, secretKey: '', unavailable: true };
148
+ }
149
+ }
150
+ /**
151
+ * The captcha public forms use: env keys first, then the admin-entered
152
+ * reCAPTCHA v3 keys. `provider: 'none'` when neither is set.
153
+ */
154
+ export async function resolveFormCaptchaConfig(db) {
155
+ const env = getCaptchaConfig();
156
+ if (env.provider !== 'none')
157
+ return env;
158
+ return (await storedRecaptchaConfig((await readDocument(db)).data)) ?? env;
159
+ }
160
+ /**
161
+ * The captcha admin login uses: env keys first, as before; then the
162
+ * admin-entered keys, but only once login protection is switched on. With
163
+ * admin keys a Google outage lets the login through (it's audited), since a
164
+ * lockout would need a database edit to undo.
165
+ */
166
+ export async function resolveLoginCaptchaConfig(db) {
167
+ // Env keys keep their existing login behaviour: outages reject.
168
+ const env = { ...getCaptchaConfig(), onProviderError: 'fail-closed' };
169
+ if (env.provider !== 'none' || loginCaptchaDisabledByEnv())
170
+ return env;
171
+ const { data } = await readDocument(db);
172
+ if (!data.protectLogin)
173
+ return env;
174
+ const stored = await storedRecaptchaConfig(data);
175
+ return stored ? { ...stored, enforce: true, onProviderError: 'fail-open' } : env;
176
+ }
177
+ /**
178
+ * Switch login protection on or off. Switching on needs a token the admin's
179
+ * browser just got with the saved site key and the `login` action; it must
180
+ * pass with the saved secret, proving the keys work on this domain.
181
+ */
182
+ export async function setLoginProtection(db, input, userId) {
183
+ const { id, data } = await readDocument(db);
184
+ if (!input.enabled) {
185
+ const next = {
186
+ ...data,
187
+ protectLogin: false,
188
+ updatedAt: new Date().toISOString(),
189
+ updatedBy: userId,
190
+ };
191
+ await writeDocument(db, id, next, userId);
192
+ return { ok: true, settings: toPublic(next) };
193
+ }
194
+ if (getCaptchaConfig().provider !== 'none') {
195
+ return {
196
+ ok: false,
197
+ status: 409,
198
+ error: 'Login CAPTCHA comes from your environment variables.',
199
+ };
200
+ }
201
+ const config = await storedRecaptchaConfig(data);
202
+ if (!config) {
203
+ return { ok: false, status: 409, error: 'Save the reCAPTCHA keys first.' };
204
+ }
205
+ if (config.unavailable) {
206
+ return {
207
+ ok: false,
208
+ status: 409,
209
+ error: "The saved secret key can't be read. Enter the secret key again and save.",
210
+ };
211
+ }
212
+ const result = await verifyCaptcha(input.token ?? '', config, input.remoteIp, {
213
+ expectedAction: LOGIN_CAPTCHA_ACTION,
214
+ });
215
+ if (!result.success) {
216
+ return {
217
+ ok: false,
218
+ status: isCaptchaProviderError(result) ? 503 : 422,
219
+ error: isCaptchaProviderError(result)
220
+ ? "Couldn't reach Google to check the keys. Try again in a minute."
221
+ : `These keys didn't pass on this site (${(result.errorCodes ?? []).join(', ') || 'rejected'}). Check that this domain is added to the key in the reCAPTCHA admin console.`,
222
+ };
223
+ }
224
+ const next = {
225
+ ...data,
226
+ protectLogin: true,
227
+ loginVerifiedAt: new Date().toISOString(),
228
+ updatedAt: new Date().toISOString(),
229
+ updatedBy: userId,
230
+ };
231
+ await writeDocument(db, id, next, userId);
232
+ return { ok: true, settings: toPublic(next) };
233
+ }
234
+ /**
235
+ * Form Settings → Spam protection → CAPTCHA: on all forms, per form, or off.
236
+ * "Per form" means forms whose spam strategies include `captcha`.
237
+ */
238
+ export function formRequiresCaptcha(scope, spamSettings) {
239
+ if (scope === 'off')
240
+ return false;
241
+ if (scope === 'per')
242
+ return Boolean(spamSettings?.strategies?.includes('captcha'));
243
+ return true;
244
+ }
245
+ /**
246
+ * The captcha one form must pass, or null. The submit route verifies against
247
+ * it and the public schema advertises it, so the two can't disagree. Until
248
+ * Form Settings is saved the scope is "all forms", as before.
249
+ */
250
+ export async function resolveCaptchaForForm(db, spamSettings) {
251
+ const config = await resolveFormCaptchaConfig(db);
252
+ if (config.provider === 'none' || !config.enforce)
253
+ return null;
254
+ const site = await readStoredFormsSettings(db);
255
+ return formRequiresCaptcha(site?.spam.captchaScope ?? 'all', spamSettings) ? config : null;
256
+ }
257
+ //# sourceMappingURL=captcha-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captcha-settings.js","sourceRoot":"","sources":["../../src/forms/captcha-settings.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,10 @@
13
13
  import type { FormField } from './types.js';
14
14
  export type { ConditionalLogic, ConditionalRule, FormField } from './types.js';
15
15
  export { isSafeRedirectUrl } from './redirect-url.js';
16
+ /** The reCAPTCHA v3 action public forms pass to `grecaptcha.execute`; the server requires it. */
17
+ export declare const FORM_CAPTCHA_ACTION = "form_submit";
18
+ /** The reCAPTCHA v3 action the admin login page uses. */
19
+ export declare const LOGIN_CAPTCHA_ACTION = "login";
16
20
  export declare const FORM_MAX_TEXT_LEN = 5000;
17
21
  export declare const FORM_MAX_TEXTAREA_LEN = 50000;
18
22
  export declare const FORM_MAX_MULTISELECT_ITEMS = 200;
@@ -1 +1 @@
1
- {"version":3,"file":"client-validation.d.ts","sourceRoot":"","sources":["../../src/forms/client-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAA;AAE5D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAIrD,eAAO,MAAM,iBAAiB,OAAQ,CAAA;AACtC,eAAO,MAAM,qBAAqB,QAAS,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,2EAA2E;AAC3E,eAAO,MAAM,aAAa,QAA+B,CAAA;AACzD,2EAA2E;AAC3E,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAOnD,CAAA;AAIF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIrD;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAKzF;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAIT;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAE5F;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACtC,qBAAqB,CAwHvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
1
+ {"version":3,"file":"client-validation.d.ts","sourceRoot":"","sources":["../../src/forms/client-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAA;AAE5D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,gBAAgB,CAAA;AAEhD,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,UAAU,CAAA;AAI3C,eAAO,MAAM,iBAAiB,OAAQ,CAAA;AACtC,eAAO,MAAM,qBAAqB,QAAS,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,2EAA2E;AAC3E,eAAO,MAAM,aAAa,QAA+B,CAAA;AACzD,2EAA2E;AAC3E,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAOnD,CAAA;AAIF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIrD;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAKzF;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAIT;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAE5F;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACtC,qBAAqB,CAwHvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
@@ -1,4 +1,8 @@
1
1
  export { isSafeRedirectUrl } from './redirect-url.js';
2
+ /** The reCAPTCHA v3 action public forms pass to `grecaptcha.execute`; the server requires it. */
3
+ export const FORM_CAPTCHA_ACTION = 'form_submit';
4
+ /** The reCAPTCHA v3 action the admin login page uses. */
5
+ export const LOGIN_CAPTCHA_ACTION = 'login';
2
6
  // Conservative hard caps so a single field can't be used to balloon the row /
3
7
  // exhaust memory even when the schema omits explicit length rules.
4
8
  export const FORM_MAX_TEXT_LEN = 5_000;
@@ -1 +1 @@
1
- {"version":3,"file":"client-validation.js","sourceRoot":"","sources":["../../src/forms/client-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-validation.js","sourceRoot":"","sources":["../../src/forms/client-validation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGxD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAiGD,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EACpD,SAAS,EAAE,eAAe,GAAG,oBAAoB,EACjD,UAAU,GAAE,CAAW,GACtB,CAAC,CA+FH;AAED,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGxD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAmGD,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EACpD,SAAS,EAAE,eAAe,GAAG,oBAAoB,EACjD,UAAU,GAAE,CAAW,GACtB,CAAC,CA+FH;AAED,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
package/dist/next.js CHANGED
@@ -33,7 +33,9 @@ const ADMIN_CSP_REPORT_ONLY = [
33
33
  "img-src 'self' data: blob: https:",
34
34
  "media-src 'self' https:",
35
35
  "style-src 'self' 'unsafe-inline'",
36
- "script-src 'self' 'unsafe-inline'",
36
+ // Login CAPTCHA: Google reCAPTCHA v3 and Cloudflare Turnstile.
37
+ "script-src 'self' 'unsafe-inline' https://www.google.com https://www.gstatic.com https://challenges.cloudflare.com",
38
+ "frame-src 'self' https://www.google.com https://challenges.cloudflare.com",
37
39
  "connect-src 'self' https:",
38
40
  "font-src 'self' data:",
39
41
  ].join('; ');
package/dist/next.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface CaptchaConfig {
15
15
  provider: CaptchaProvider;
16
16
  /** Public site key (safe to expose to client) */
17
17
  siteKey: string;
18
- /** Server-side secret key (from env) */
18
+ /** Server-side secret key (env, or decrypted from the admin-entered form settings) */
19
19
  secretKey: string;
20
20
  /** Minimum score threshold for reCAPTCHA v3 (0.0–1.0, default 0.5). Ignored by Turnstile. */
21
21
  scoreThreshold?: number;
@@ -32,6 +32,12 @@ export interface CaptchaConfig {
32
32
  onProviderError: CaptchaProviderErrorPolicy;
33
33
  /** Upstream verify timeout in ms (default 5000). */
34
34
  timeoutMs: number;
35
+ /**
36
+ * Keys are configured but the secret can't be used (e.g. it no longer
37
+ * decrypts). Verification then fails as a provider error, so
38
+ * `onProviderError` decides instead of the captcha silently turning off.
39
+ */
40
+ unavailable?: boolean;
35
41
  }
36
42
  export interface CaptchaVerifyResult {
37
43
  success: boolean;
@@ -50,17 +56,31 @@ export interface PublicCaptchaConfig {
50
56
  timeoutMs: number;
51
57
  scoreThreshold: number | null;
52
58
  }
59
+ /** A reCAPTCHA v3 score threshold in 0–1; anything else falls back to 0.5. */
60
+ export declare function normalizeScoreThreshold(raw: unknown): number;
61
+ export interface CaptchaVerifyOptions {
62
+ /**
63
+ * The reCAPTCHA v3 action the client passed to `grecaptcha.execute`. When
64
+ * set, a token minted for a different action is rejected.
65
+ */
66
+ expectedAction?: string;
67
+ }
53
68
  /**
54
69
  * Verifies a CAPTCHA token server-side.
55
70
  * Works for both reCAPTCHA v3 and Cloudflare Turnstile.
56
71
  */
57
- export declare function verifyCaptcha(token: string, config: CaptchaConfig, remoteIp?: string): Promise<CaptchaVerifyResult>;
72
+ export declare function verifyCaptcha(token: string, config: CaptchaConfig, remoteIp?: string, options?: CaptchaVerifyOptions): Promise<CaptchaVerifyResult>;
58
73
  /** True when the verify failure should be treated as a provider outage. */
59
74
  export declare function isCaptchaProviderError(result: CaptchaVerifyResult): boolean;
60
75
  /**
61
76
  * Resolves CAPTCHA config from environment variables + optional `forms.captcha`
62
77
  * overrides in CMS config. Returns `{ provider: 'none' }` if no keys are set.
63
78
  */
79
+ /**
80
+ * Enforcement, outage policy and timeout from `CAPTCHA_*` env vars, falling
81
+ * back to `forms.captcha` in CMS config. Shared by every key source.
82
+ */
83
+ export declare function getCaptchaPolicy(): Pick<CaptchaConfig, 'enforce' | 'onProviderError' | 'timeoutMs'>;
64
84
  export declare function getCaptchaConfig(): CaptchaConfig;
65
85
  /** Secret-free captcha status for `/captcha/config` and admin Settings. */
66
86
  export declare function getPublicCaptchaConfig(config?: CaptchaConfig): PublicCaptchaConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/security/captcha.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,CAAA;AAChE,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAA;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,eAAe,EAAE,0BAA0B,CAAA;IAC3C,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,0BAA0B,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAqCD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAyF9B;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAG3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAkDhD;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,GAAE,aAAkC,GACzC,mBAAmB,CASrB"}
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/security/captcha.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,CAAA;AAChE,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAA;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAA;IACjB,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,eAAe,EAAE,0BAA0B,CAAA;IAC3C,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,0BAA0B,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAuCD,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAM5D;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAwG9B;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAG3E;AAED;;;GAGG;AACH;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CACtC,aAAa,EACb,SAAS,GAAG,iBAAiB,GAAG,WAAW,CAC5C,CAaA;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAwChD;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,GAAE,aAAkC,GACzC,mBAAmB,CAUrB"}