import { Merger } from '@ephox/katamari'; export interface GroupStore { readonly record: (prop: string, elem: T) => void; readonly get: () => Record; } export const GroupStore = (): GroupStore => { const data: Record = {}; const record = (prop: string, elem: T) => { let d = data[prop] !== undefined ? data[prop] : []; d = d.concat(elem); data[prop] = d; }; const get = (): Record => Merger.deepMerge({}, data); return { record, get }; };