export const matchAllAndThen = (input: string, pattern: RegExp, callback: (value: string, index: number) => void) => { [...input.matchAll(pattern)].map(match => { if (match && match.index !== undefined) { callback(match[0], match.index); } }); } export const window = (input: T[], size: number): T[][] => { return input.reduce((windows, value, index) => { if (index === input.length - size + 1) return windows; return [...windows, input.slice(index, index + size)]; }, [] as T[][]); }