rxcc
Version:
A tool to pack repository contents to single file for AI consumption
112 lines • 3.85 kB
JavaScript
import { z } from 'zod';
// Output style enum
export const repomixOutputStyleSchema = z.enum(['xml', 'markdown', 'plain']);
// Default values map
export const defaultFilePathMap = {
xml: 'repomix-output.xml',
markdown: 'repomix-output.md',
plain: 'repomix-output.txt',
};
// Base config schema
export const repomixConfigBaseSchema = z.object({
output: z
.object({
filePath: z.string().optional(),
style: repomixOutputStyleSchema.optional(),
parsableStyle: z.boolean().optional(),
headerText: z.string().optional(),
instructionFilePath: z.string().optional(),
fileSummary: z.boolean().optional(),
directoryStructure: z.boolean().optional(),
removeComments: z.boolean().optional(),
removeEmptyLines: z.boolean().optional(),
compress: z.boolean().optional(),
topFilesLength: z.number().optional(),
showLineNumbers: z.boolean().optional(),
copyToClipboard: z.boolean().optional(),
includeEmptyDirectories: z.boolean().optional(),
git: z
.object({
sortByChanges: z.boolean().optional(),
sortByChangesMaxCommits: z.number().optional(),
})
.optional(),
})
.optional(),
include: z.array(z.string()).optional(),
ignore: z
.object({
useGitignore: z.boolean().optional(),
useDefaultPatterns: z.boolean().optional(),
customPatterns: z.array(z.string()).optional(),
})
.optional(),
security: z
.object({
enableSecurityCheck: z.boolean().optional(),
})
.optional(),
tokenCount: z
.object({
encoding: z.string().optional(),
})
.optional(),
});
// Default config schema with default values
export const repomixConfigDefaultSchema = z.object({
output: z
.object({
filePath: z.string().default(defaultFilePathMap.xml),
style: repomixOutputStyleSchema.default('xml'),
parsableStyle: z.boolean().default(false),
headerText: z.string().optional(),
instructionFilePath: z.string().optional(),
fileSummary: z.boolean().default(true),
directoryStructure: z.boolean().default(true),
removeComments: z.boolean().default(false),
removeEmptyLines: z.boolean().default(false),
compress: z.boolean().default(false),
topFilesLength: z.number().int().min(0).default(5),
showLineNumbers: z.boolean().default(false),
copyToClipboard: z.boolean().default(false),
includeEmptyDirectories: z.boolean().optional(),
git: z
.object({
sortByChanges: z.boolean().default(true),
sortByChangesMaxCommits: z.number().int().min(1).default(100),
})
.default({}),
})
.default({}),
include: z.array(z.string()).default([]),
ignore: z
.object({
useGitignore: z.boolean().default(true),
useDefaultPatterns: z.boolean().default(true),
customPatterns: z.array(z.string()).default([]),
})
.default({}),
security: z
.object({
enableSecurityCheck: z.boolean().default(true),
})
.default({}),
tokenCount: z
.object({
encoding: z
.string()
.default('o200k_base')
.transform((val) => val),
})
.default({}),
});
export const repomixConfigFileSchema = repomixConfigBaseSchema;
export const repomixConfigCliSchema = repomixConfigBaseSchema;
export const repomixConfigMergedSchema = repomixConfigDefaultSchema
.and(repomixConfigFileSchema)
.and(repomixConfigCliSchema)
.and(z.object({
cwd: z.string(),
}));
export const defaultConfig = repomixConfigDefaultSchema.parse({});
//# sourceMappingURL=configSchema.js.map