UNPKG

tdpw

Version:

CLI tool for uploading Playwright test reports to TestDino platform with Azure storage support

103 lines 3.99 kB
"use strict"; /** * Core types and interfaces for TestDino CLI */ Object.defineProperty(exports, "__esModule", { value: true }); exports.maskToken = exports.stringToBoolean = exports.ExitCode = exports.AuthenticationError = exports.FileSystemError = exports.NetworkError = exports.ValidationError = exports.ConfigurationError = exports.BaseError = exports.ApiTokenSchema = exports.ConfigSchema = exports.CLIOptionsSchema = void 0; const zod_1 = require("zod"); // CLI Options Schema exports.CLIOptionsSchema = zod_1.z.object({ reportDirectory: zod_1.z.string().min(1, 'Report directory is required'), token: zod_1.z.string().min(1, 'API token is required'), uploadImages: zod_1.z.boolean().optional().default(false), uploadVideos: zod_1.z.boolean().optional().default(false), uploadHtml: zod_1.z.boolean().optional().default(false), uploadTraces: zod_1.z.boolean().optional().default(false), jsonReport: zod_1.z.string().optional(), htmlReport: zod_1.z.string().optional(), traceDir: zod_1.z.string().optional(), verbose: zod_1.z.boolean().optional().default(false), dryRun: zod_1.z.boolean().optional().default(false), }); // Configuration Schema exports.ConfigSchema = zod_1.z.object({ apiUrl: zod_1.z.string().url(), token: zod_1.z.string().min(1), uploadImages: zod_1.z.boolean().default(false), uploadVideos: zod_1.z.boolean().default(false), uploadHtml: zod_1.z.boolean().default(false), uploadTraces: zod_1.z.boolean().default(false), verbose: zod_1.z.boolean().default(false), dryRun: zod_1.z.boolean().default(false), }); // API Token Validation Schema exports.ApiTokenSchema = zod_1.z.string().regex(/^trx_(development|staging|production)_[a-f0-9]{64}$/, 'Invalid API token format. Expected: trx_{env}_{64-char-hex}'); // Error Types class BaseError extends Error { code; cause; constructor(message, code, cause) { super(message); this.name = this.constructor.name; this.code = code; if (cause !== undefined) { this.cause = cause; } Error.captureStackTrace(this, this.constructor); } } exports.BaseError = BaseError; class ConfigurationError extends BaseError { constructor(message, cause) { super(message, 'CONFIG_ERROR', cause); } } exports.ConfigurationError = ConfigurationError; class ValidationError extends BaseError { constructor(message, cause) { super(message, 'VALIDATION_ERROR', cause); } } exports.ValidationError = ValidationError; class NetworkError extends BaseError { constructor(message, cause) { super(message, 'NETWORK_ERROR', cause); } } exports.NetworkError = NetworkError; class FileSystemError extends BaseError { constructor(message, cause) { super(message, 'FILESYSTEM_ERROR', cause); } } exports.FileSystemError = FileSystemError; class AuthenticationError extends BaseError { constructor(message, cause) { super(message, 'AUTH_ERROR', cause); } } exports.AuthenticationError = AuthenticationError; // Exit Codes var ExitCode; (function (ExitCode) { ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS"; ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR"; ExitCode[ExitCode["AUTHENTICATION_ERROR"] = 2] = "AUTHENTICATION_ERROR"; ExitCode[ExitCode["FILE_NOT_FOUND_ERROR"] = 3] = "FILE_NOT_FOUND_ERROR"; ExitCode[ExitCode["NETWORK_ERROR"] = 4] = "NETWORK_ERROR"; })(ExitCode || (exports.ExitCode = ExitCode = {})); // Utility function to convert string to boolean const stringToBoolean = (value) => { if (!value) return false; return ['true', '1', 'yes', 'on'].includes(value.toLowerCase()); }; exports.stringToBoolean = stringToBoolean; // Utility to mask sensitive data in logs const maskToken = (token) => { if (token.length <= 8) return '***'; return `${token.slice(0, 4)}***${token.slice(-4)}`; }; exports.maskToken = maskToken; //# sourceMappingURL=index.js.map