UNPKG

faj-cli

Version:

FAJ - A powerful CLI resume builder with AI enhancement and multi-format export

120 lines 5.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigSchema = exports.AIConfigSchema = exports.JobRequirementSchema = exports.SkillSchema = exports.RecruiterProfileSchema = exports.DeveloperProfileSchema = exports.UserProfileSchema = exports.AIProviderSchema = exports.UserRoleSchema = void 0; const zod_1 = require("zod"); // Base schemas exports.UserRoleSchema = zod_1.z.enum(['developer', 'recruiter']); exports.AIProviderSchema = zod_1.z.enum(['openai', 'gemini', 'anthropic', 'azure', 'custom']); exports.UserProfileSchema = zod_1.z.object({ id: zod_1.z.string(), role: exports.UserRoleSchema, name: zod_1.z.string().min(1), email: zod_1.z.string().email(), createdAt: zod_1.z.date(), updatedAt: zod_1.z.date(), }); exports.DeveloperProfileSchema = exports.UserProfileSchema.extend({ role: zod_1.z.literal('developer'), skills: zod_1.z.array(zod_1.z.string()), experience: zod_1.z.number().min(0), location: zod_1.z.string().optional(), resumeHash: zod_1.z.string().optional(), githubUsername: zod_1.z.string().optional(), linkedinUrl: zod_1.z.string().url().optional().or(zod_1.z.string()), portfolioUrl: zod_1.z.string().url().optional().or(zod_1.z.string()), phone: zod_1.z.string().optional(), birthDate: zod_1.z.string().optional(), nationality: zod_1.z.string().optional(), languages: zod_1.z.array(zod_1.z.string()).optional(), education: zod_1.z.array(zod_1.z.object({ degree: zod_1.z.string(), field: zod_1.z.string(), institution: zod_1.z.string(), location: zod_1.z.string().optional(), startDate: zod_1.z.string(), endDate: zod_1.z.string().optional(), current: zod_1.z.boolean().default(false), gpa: zod_1.z.number().optional(), highlights: zod_1.z.array(zod_1.z.string()).optional(), })).optional(), careerObjective: zod_1.z.string().optional(), personalSummary: zod_1.z.string().optional(), }); exports.RecruiterProfileSchema = exports.UserProfileSchema.extend({ role: zod_1.z.literal('recruiter'), company: zod_1.z.string().min(1), position: zod_1.z.string().optional(), companyUrl: zod_1.z.string().url().optional(), }); // Skill schema exports.SkillSchema = zod_1.z.object({ name: zod_1.z.string(), level: zod_1.z.enum(['beginner', 'intermediate', 'advanced', 'expert']), yearsOfExperience: zod_1.z.number().optional(), category: zod_1.z.enum(['language', 'framework', 'tool', 'database', 'other']), }); // Job requirement schema exports.JobRequirementSchema = zod_1.z.object({ id: zod_1.z.string(), recruiterId: zod_1.z.string(), title: zod_1.z.string().min(1), company: zod_1.z.string().min(1), location: zod_1.z.string().optional(), remote: zod_1.z.boolean(), type: zod_1.z.enum(['full-time', 'part-time', 'contract', 'internship']), description: zod_1.z.string().min(10), requirements: zod_1.z.object({ skills: zod_1.z.array(zod_1.z.string()), experience: zod_1.z.number().min(0), education: zod_1.z.string().optional(), certifications: zod_1.z.array(zod_1.z.string()).optional(), }), preferences: zod_1.z.object({ skills: zod_1.z.array(zod_1.z.string()).optional(), experience: zod_1.z.number().optional(), }).optional(), salary: zod_1.z.object({ min: zod_1.z.number().optional(), max: zod_1.z.number().optional(), currency: zod_1.z.string().default('USD'), period: zod_1.z.enum(['hourly', 'monthly', 'yearly']), }).optional(), benefits: zod_1.z.array(zod_1.z.string()).optional(), postedAt: zod_1.z.date(), expiresAt: zod_1.z.date().optional(), status: zod_1.z.enum(['active', 'closed', 'draft']), }); // AI configuration schema exports.AIConfigSchema = zod_1.z.object({ provider: exports.AIProviderSchema, apiKey: zod_1.z.string().optional(), endpoint: zod_1.z.string().url().optional(), model: zod_1.z.string().optional(), maxTokens: zod_1.z.number().positive().optional(), temperature: zod_1.z.number().min(0).max(2).optional(), fallbacks: zod_1.z.array(exports.AIProviderSchema).optional(), }); // Main configuration schema exports.ConfigSchema = zod_1.z.object({ version: zod_1.z.string(), profile: zod_1.z.union([exports.UserProfileSchema, exports.DeveloperProfileSchema, exports.RecruiterProfileSchema]).optional(), ai: exports.AIConfigSchema.optional(), storage: zod_1.z.object({ ipfs: zod_1.z.object({ gateway: zod_1.z.string().url(), apiEndpoint: zod_1.z.string().optional(), }).optional(), local: zod_1.z.object({ path: zod_1.z.string(), }).optional(), }).optional(), network: zod_1.z.object({ peers: zod_1.z.array(zod_1.z.string()).optional(), bootstrap: zod_1.z.boolean().optional(), }).optional(), notifications: zod_1.z.object({ email: zod_1.z.boolean().optional(), webhook: zod_1.z.string().url().optional(), }).optional(), }); //# sourceMappingURL=schemas.js.map