envx-cli
Version:
Environment file encryption and management tool
173 lines • 6.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateCopyOptions = exports.validateInteractiveOptions = exports.validateCreateOptions = exports.validateDecryptOptions = exports.validateEncryptOptions = exports.validateOptions = exports.validateSchema = exports.commandResultSchema = exports.fileOperationSchema = exports.envrcConfigSchema = exports.stageSecretSchema = exports.copySchema = exports.interactiveSchema = exports.createSchema = exports.decryptSchema = exports.encryptSchema = exports.baseOptionsSchema = void 0;
const zod_1 = require("zod");
exports.baseOptionsSchema = zod_1.z.object({
cwd: zod_1.z.string().optional(),
environment: zod_1.z.string().optional(),
passphrase: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
interactive: zod_1.z.boolean().optional(),
generate: zod_1.z.boolean().optional(),
stage: zod_1.z.string().optional(),
});
exports.encryptSchema = zod_1.z
.object({
environment: zod_1.z.string().min(1, 'Environment is required'),
passphrase: zod_1.z.string().min(1, 'Passphrase is required'),
cwd: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
all: zod_1.z.boolean().optional(),
overwrite: zod_1.z.boolean().optional(),
})
.refine(data => {
if (data.all && data.environment) {
return false;
}
if (!data.all && !data.environment) {
return false;
}
return true;
}, {
message: 'Cannot use --all with --environment flag',
path: ['all'],
});
exports.decryptSchema = zod_1.z
.object({
environment: zod_1.z.string().min(1, 'Environment is required'),
passphrase: zod_1.z.string().min(1, 'Passphrase is required'),
cwd: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
all: zod_1.z.boolean().optional(),
overwrite: zod_1.z.boolean().optional(),
})
.refine(data => {
if (data.all && data.environment) {
return false;
}
if (!data.all && !data.environment) {
return false;
}
return true;
}, {
message: 'Cannot use --all with --environment flag',
path: ['all'],
});
exports.createSchema = zod_1.z.object({
environment: zod_1.z.string().min(1, 'Environment is required'),
template: zod_1.z.string().optional(),
cwd: zod_1.z.string().optional(),
});
exports.interactiveSchema = zod_1.z.object({
overwrite: zod_1.z.boolean().optional(),
cwd: zod_1.z.string().optional(),
});
exports.copySchema = zod_1.z
.object({
environment: zod_1.z.string().optional(),
passphrase: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
cwd: zod_1.z.string().optional(),
overwrite: zod_1.z.boolean().optional(),
all: zod_1.z.boolean().optional(),
})
.refine(data => {
if (data.all && !data.environment) {
return false;
}
if (!data.all && !data.environment) {
return false;
}
return true;
}, {
message: 'Environment is required, especially when using --all flag',
path: ['environment'],
});
exports.stageSecretSchema = zod_1.z.object({
stage: zod_1.z.string().min(1, 'Stage is required'),
secret: zod_1.z.string().min(1, 'Secret is required'),
variableName: zod_1.z.string().min(1, 'Variable name is required'),
});
exports.envrcConfigSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.string());
exports.fileOperationSchema = zod_1.z.object({
success: zod_1.z.boolean(),
message: zod_1.z.string(),
filePath: zod_1.z.string().optional(),
error: zod_1.z.instanceof(Error).optional(),
});
exports.commandResultSchema = zod_1.z.object({
success: zod_1.z.boolean(),
message: zod_1.z.string(),
data: zod_1.z.any().optional(),
errors: zod_1.z.array(zod_1.z.string()).optional(),
});
const validateSchema = (schema, data) => {
try {
return schema.parse(data);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const errorMessages = error.issues.map((err) => `${err.path.join('.')}: ${err.message}`);
throw new Error(`Validation failed:\n${errorMessages.join('\n')}`);
}
throw error;
}
};
exports.validateSchema = validateSchema;
const validateOptions = (data) => (0, exports.validateSchema)(exports.baseOptionsSchema, data);
exports.validateOptions = validateOptions;
const validateEncryptOptions = (data) => {
const processedData = data;
if (processedData?.all) {
const schemaForAll = zod_1.z
.object({
passphrase: zod_1.z.string().min(1, 'Passphrase is required'),
cwd: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
all: zod_1.z.boolean().optional(),
overwrite: zod_1.z.boolean().optional(),
environment: zod_1.z.string().optional(),
})
.refine(data => !data.environment, {
message: 'Cannot use --all with --environment flag',
path: ['environment'],
});
return (0, exports.validateSchema)(schemaForAll, data);
}
return (0, exports.validateSchema)(exports.encryptSchema, data);
};
exports.validateEncryptOptions = validateEncryptOptions;
const validateDecryptOptions = (data) => {
const processedData = data;
if (processedData?.all) {
const schemaForAll = zod_1.z
.object({
passphrase: zod_1.z.string().min(1, 'Passphrase is required'),
cwd: zod_1.z.string().optional(),
secret: zod_1.z.string().optional(),
all: zod_1.z.boolean().optional(),
overwrite: zod_1.z.boolean().optional(),
environment: zod_1.z.string().optional(),
})
.refine(data => !data.environment, {
message: 'Cannot use --all with --environment flag',
path: ['environment'],
});
return (0, exports.validateSchema)(schemaForAll, data);
}
return (0, exports.validateSchema)(exports.decryptSchema, data);
};
exports.validateDecryptOptions = validateDecryptOptions;
const validateCreateOptions = (data) => (0, exports.validateSchema)(exports.createSchema, data);
exports.validateCreateOptions = validateCreateOptions;
const validateInteractiveOptions = (data) => (0, exports.validateSchema)(exports.interactiveSchema, data);
exports.validateInteractiveOptions = validateInteractiveOptions;
const validateCopyOptions = (data) => {
const processedData = data;
if (processedData?.all && !processedData?.environment) {
throw new Error('The --all flag requires an environment to be specified with -e/--environment');
}
return (0, exports.validateSchema)(exports.copySchema, data);
};
exports.validateCopyOptions = validateCopyOptions;
//# sourceMappingURL=index.js.map