UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

108 lines 4.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigSchema = void 0; const zod_1 = require("zod"); // Zod doesn't have a specific type for Knex.PoolConfig, so we define it loosely // or only include the fields you intend to validate. // For simplicity here, we'll allow any object, but you should refine this // if you need validation for specific Knex pool properties. // const KnexPoolConfigSchema = z.record(z.any()).optional(); const DatabaseConfigSchema = zod_1.z.strictObject({ host: zod_1.z.string(), port: zod_1.z.number().int().positive(), database: zod_1.z.string(), user: zod_1.z.string(), password: zod_1.z.string(), allowSelfSignedCertificates: zod_1.z.boolean().optional(), caCert: zod_1.z.string().optional(), }); const AlternateDatabaseConfigSchema = zod_1.z.strictObject({ host: zod_1.z.string().optional(), port: zod_1.z.number().int().positive().optional(), database: zod_1.z.string().optional(), user: zod_1.z.string().optional(), password: zod_1.z.string().optional(), allowSelfSignedCertificates: zod_1.z.boolean().optional(), caCert: zod_1.z.string().optional(), }); const FileStorageConfigSchema = zod_1.z.strictObject({ accessKeyId: zod_1.z.string().optional(), secretAccessKey: zod_1.z.string().optional(), url: zod_1.z.url(), publicUrl: zod_1.z.url().optional(), bucket: zod_1.z.string(), region: zod_1.z.string().optional(), maximumWidthForSmallImages: zod_1.z.number().int().nonnegative(), maximumWidthForMediumImages: zod_1.z.number().int().nonnegative(), s3ForcePathStyle: zod_1.z.boolean(), s3SeparateDeleteOperations: zod_1.z.boolean(), }); const MailerTransportAuthSchema = zod_1.z.strictObject({ user: zod_1.z.string(), pass: zod_1.z.string(), }); const MailerTransportSchema = zod_1.z.strictObject({ host: zod_1.z.string(), port: zod_1.z.number().int().positive(), auth: MailerTransportAuthSchema, }); const MailerConfigSchema = zod_1.z.strictObject({ from: zod_1.z.string(), transport: MailerTransportSchema, }); const TeamConfigSchema = zod_1.z.strictObject({ displayName: zod_1.z.string(), role: zod_1.z.string(), }); const TeamsConfigSchema = zod_1.z.strictObject({ global: zod_1.z.array(TeamConfigSchema), nonGlobal: zod_1.z.array(TeamConfigSchema), }); const StaticFolderSchema = zod_1.z.strictObject({ folderPath: zod_1.z.string(), mountPoint: zod_1.z.string(), }); const IntegrationConfigSchema = zod_1.z.strictObject({ name: zod_1.z.string(), clientId: zod_1.z.string(), redirectUri: zod_1.z.url(), tokenUrl: zod_1.z.url(), }); const SentrySchema = zod_1.z.strictObject({ dsn: zod_1.z.string(), environment: zod_1.z.string(), }); const AdminUserSchema = zod_1.z.strictObject({ username: zod_1.z.string(), password: zod_1.z.string(), email: zod_1.z.email(), givenNames: zod_1.z.string().optional(), surname: zod_1.z.string().optional(), }); exports.ConfigSchema = zod_1.z.strictObject({ // database db: DatabaseConfigSchema, subscriptionsDb: AlternateDatabaseConfigSchema.optional(), jobQueueDb: AlternateDatabaseConfigSchema.optional(), // pool: KnexPoolConfigSchema.optional(), acquireConnectionTimeout: zod_1.z.number().int().nonnegative().optional(), adminUser: zod_1.z.union([AdminUserSchema, zod_1.z.literal(false)]), clientUrl: zod_1.z.url().optional(), components: zod_1.z.array(zod_1.z.string()), corsOrigin: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(), fileStorage: zod_1.z.union([FileStorageConfigSchema, zod_1.z.literal(false)]), mailer: zod_1.z.union([MailerConfigSchema, zod_1.z.literal(false)]), passwordResetRedirect: zod_1.z.string(), port: zod_1.z.number().int().positive(), secret: zod_1.z.string(), sentry: zod_1.z.union([SentrySchema, zod_1.z.literal(false)]), serverUrl: zod_1.z.url(), staticFolders: zod_1.z.array(StaticFolderSchema), suppressLoggerInTestEnv: zod_1.z.boolean(), teams: TeamsConfigSchema, tokenExpiresIn: zod_1.z.number().int().nonnegative(), useGraphQLServer: zod_1.z.boolean(), // drop integrations: zod_1.z.array(IntegrationConfigSchema).optional(), }); //# sourceMappingURL=configSchema.js.map