import errorCodes from '../../lib/error'; import { Format, format } from './Format'; const { ERR_INVALID_FORMAT_INSTANCE, } = errorCodes; const isValidFormat = (format: Format) => { if (!(format instanceof Format)) { throw new ERR_INVALID_FORMAT_INSTANCE(); } return true; }; const cascade = (formats: Format[]) => { if (!formats.every(isValidFormat)) { return; } return (info) => { let obj = info; for (const item of formats) { obj = item.transform(obj); if (!obj) { return false; } } return obj; }; }; export function combine(...args: Format[]) { const combinedFormat = format(cascade(args)); return combinedFormat(); }