// type PredicateFunc < T > = (value: any, index: number, array: any[]) => T; // const compiledCach: Map < string, PredicateFunc < any >> = new Map(); // export function joinListHelper(...args): string { // const context: any[] = args.shift(); // const options = args.pop(); // if (context && context instanceof Array) { // let [seperator, filter] = [...args]; // seperator = seperator ? seperator.replace(/\\n/g, os.EOL) : ","; // let filteredArray = context; // if (filter) { // const fliterFn = complieFilterfn < boolean > (filter); // if (fliterFn) { // filteredArray = context.filter(fliterFn); // } else { // throw new Error(`${fliterFn} is not valid filter expressaion`); // } // } // return filteredArray.map((c) => options.fn(c)).join(seperator); // } else { // return ""; // } // }