UNPKG

detox-allure2-adapter

Version:
92 lines 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.truncate = exports.percentVisible = exports.percent = exports.msg = exports.glue = exports.concat = void 0; function concat(...results) { return { message: results.map(stringify).reduce(joinSpace, ''), args: results.map(getArgs).reduce(mergeArgs), }; } exports.concat = concat; function glue(...results) { return { message: results.map(stringify).reduce(join, ''), args: results.map(getArgs).reduce(mergeArgs), }; } exports.glue = glue; function msg(message, args) { return { message, args: omitEmpty(args), }; } exports.msg = msg; function stringify(desc) { if (!desc) return null; if (typeof desc === 'string') return desc; if (supportsStepDescriptions(desc)) return desc.toJSON().message || null; return desc.message || null; } function supportsStepDescriptions(obj) { return Boolean('toJSON' in obj); } function joinSpace(acc, desc) { return acc && desc ? `${acc} ${desc}` : desc || acc; } function join(acc, desc) { return acc && desc ? `${acc}${desc}` : desc || acc; } function omitEmpty(args) { return args ? Object.fromEntries(Object.entries(args).filter(isNotNullish)) : args; } function isNotNullish([_key, value]) { return value != null; } function getArgs(r) { if (!r) return null; if (typeof r === 'string') return null; if (supportsStepDescriptions(r)) return r.toJSON().args; return r.args; } function mergeArgs(acc, r) { return r == null ? acc : { ...acc, ...r }; } function percent(value) { const num = typeof value === 'number' ? value : typeof value === 'string' && value ? Number(value) : Number.NaN; return Number.isFinite(num) ? (num * 100).toFixed(0) + '%' : ''; } exports.percent = percent; function percentVisible(value) { const num = typeof value === 'number' ? value : typeof value === 'string' && value ? Number(value) : Number.NaN; return Number.isFinite(num) ? num.toFixed(0) + '%' : ''; } exports.percentVisible = percentVisible; function truncate(value, maxLength = 40) { if (!value) return ''; const str = typeof value === 'string' ? value : String(value); if (str.length <= maxLength) return str; const charsToShow = maxLength - 1; const frontChars = Math.ceil(charsToShow / 2); const backChars = Math.floor(charsToShow / 2); const backStart = str.length - backChars; return str.slice(0, Math.max(0, frontChars)) + '…' + str.slice(Math.max(0, backStart)); } exports.truncate = truncate; //# sourceMappingURL=utils.js.map