detox-allure2-adapter
Version:
Detox adapter for jest-allure2-reporter
92 lines • 2.76 kB
JavaScript
;
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