changemaker.lite/api/dist/modules/settings/settings.schemas.js

126 lines
6.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateSiteSettingsSchema = void 0;
const zod_1 = require("zod");
const hexColor = zod_1.z.string().regex(/^#[0-9a-fA-F]{6}$/, 'Must be a hex color (e.g. #ff00ff)');
exports.updateSiteSettingsSchema = zod_1.z.object({
// Organization
organizationName: zod_1.z.string().min(1).max(100).optional(),
organizationShortName: zod_1.z.string().min(1).max(10).optional(),
organizationLogoUrl: zod_1.z.string().url().nullable().optional().or(zod_1.z.literal('')),
organizationFaviconUrl: zod_1.z.string().url().nullable().optional().or(zod_1.z.literal('')),
// Admin theme
adminColorPrimary: hexColor.optional(),
adminColorBgBase: hexColor.optional(),
// Public theme
publicColorPrimary: hexColor.optional(),
publicColorBgBase: hexColor.optional(),
publicColorBgContainer: hexColor.optional(),
publicHeaderGradient: zod_1.z.string().max(500).optional(),
// Text
footerText: zod_1.z.string().max(200).optional(),
loginSubtitle: zod_1.z.string().max(50).optional(),
// Email branding
emailFromName: zod_1.z.string().min(1).max(100).optional(),
// SMTP configuration
smtpHost: zod_1.z.string().max(255).optional(),
smtpPort: zod_1.z.number().int().min(0).max(65535).optional(),
smtpUser: zod_1.z.string().max(255).optional(),
smtpPass: zod_1.z.string().max(500).optional(),
smtpFromAddress: zod_1.z.string().max(255).optional(),
smtpActiveProvider: zod_1.z.enum(['mailhog', 'production']).optional(),
emailTestMode: zod_1.z.boolean().optional(),
testEmailRecipient: zod_1.z.string().max(255).optional(),
// Registration settings
enablePublicRegistration: zod_1.z.boolean().optional(),
enableEmailVerification: zod_1.z.boolean().optional(),
autoApproveVerifiedUsers: zod_1.z.boolean().optional(),
// Feature toggles
enableInfluence: zod_1.z.boolean().optional(),
enableMap: zod_1.z.boolean().optional(),
enableNewsletter: zod_1.z.boolean().optional(),
enableLandingPages: zod_1.z.boolean().optional(),
enableMediaFeatures: zod_1.z.boolean().optional(),
enablePayments: zod_1.z.boolean().optional(),
enableGalleryAds: zod_1.z.boolean().optional(),
enableChat: zod_1.z.boolean().optional(),
enableEvents: zod_1.z.boolean().optional(),
enableDocsComments: zod_1.z.boolean().optional(),
enableSms: zod_1.z.boolean().optional(),
enablePeople: zod_1.z.boolean().optional(),
enableSocial: zod_1.z.boolean().optional(),
enableMeet: zod_1.z.boolean().optional(),
enableMeetingPlanner: zod_1.z.boolean().optional(),
enableTicketedEvents: zod_1.z.boolean().optional(),
enableSocialCalendar: zod_1.z.boolean().optional(),
enableDocsCollaboration: zod_1.z.boolean().optional(),
requireEventApproval: zod_1.z.boolean().optional(),
autoSyncPeopleToMap: zod_1.z.boolean().optional(),
// SMS connection config
smsTermuxApiUrl: zod_1.z.string().max(500).optional(),
smsTermuxApiKey: zod_1.z.string().max(500).optional(),
smsTailscaleApiKey: zod_1.z.string().max(500).optional(),
smsTailscaleTailnet: zod_1.z.string().max(200).optional(),
smsTailscaleDeviceId: zod_1.z.string().max(200).optional(),
smsTailscaleDeviceName: zod_1.z.string().max(200).optional(),
// Gitea Docs Comments
giteaApiToken: zod_1.z.string().max(500).optional(),
giteaCommentsRepoOwner: zod_1.z.string().max(100).optional(),
giteaCommentsRepoName: zod_1.z.string().max(100).optional(),
giteaOauthClientId: zod_1.z.string().max(500).optional(),
giteaOauthClientSecret: zod_1.z.string().max(500).optional(),
// User Provisioning
enableUserProvisioning: zod_1.z.boolean().optional(),
provisionGitea: zod_1.z.boolean().optional(),
provisionGiteaTiming: zod_1.z.enum(['lazy', 'eager']).optional(),
provisionVaultwarden: zod_1.z.boolean().optional(),
provisionVaultwardenTiming: zod_1.z.enum(['lazy', 'eager']).optional(),
provisionListmonk: zod_1.z.boolean().optional(),
provisionListmonkTiming: zod_1.z.enum(['lazy', 'eager']).optional(),
// Auto-upgrade settings
enableAutoUpgrade: zod_1.z.boolean().optional(),
autoUpgradeSchedule: zod_1.z.enum([
'daily-3am', 'daily-4am', 'daily-5am',
'weekly-sun-3am', 'weekly-mon-3am', '12h', '24h',
]).optional(),
autoUpgradePullServices: zod_1.z.boolean().optional(),
notifyAdminAutoUpgrade: zod_1.z.boolean().optional(),
// Navigation configuration (supports one level of nesting via groups)
navConfig: zod_1.z.object({
items: zod_1.z.array(zod_1.z.object({
id: zod_1.z.string(),
label: zod_1.z.string(),
path: zod_1.z.string(),
icon: zod_1.z.string(),
enabled: zod_1.z.boolean(),
order: zod_1.z.number(),
type: zod_1.z.enum(['builtin', 'custom', 'group']),
featureFlag: zod_1.z.string().optional(),
external: zod_1.z.boolean().optional(),
children: zod_1.z.array(zod_1.z.object({
id: zod_1.z.string(),
label: zod_1.z.string(),
path: zod_1.z.string(),
icon: zod_1.z.string(),
enabled: zod_1.z.boolean(),
order: zod_1.z.number(),
type: zod_1.z.enum(['builtin', 'custom']),
featureFlag: zod_1.z.string().optional(),
external: zod_1.z.boolean().optional(),
})).optional(),
})),
}).optional(),
// Notification settings
notifyAdminShiftSignup: zod_1.z.boolean().optional(),
notifyAdminResponseSubmitted: zod_1.z.boolean().optional(),
notifyAdminSignRequested: zod_1.z.boolean().optional(),
notifyAdminShiftCancellation: zod_1.z.boolean().optional(),
notifyVolunteerSessionSummary: zod_1.z.boolean().optional(),
notifyVolunteerCancellation: zod_1.z.boolean().optional(),
notifyVolunteerShiftReminder: zod_1.z.boolean().optional(),
notifyVolunteerShiftThankYou: zod_1.z.boolean().optional(),
notifyVolunteerReengagement: zod_1.z.boolean().optional(),
reengagementInactiveDays: zod_1.z.number().int().min(1).max(365).optional(),
reengagementCooldownDays: zod_1.z.number().int().min(1).max(365).optional(),
});
//# sourceMappingURL=settings.schemas.js.map