/** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal */ interface UniqueArray { keys: Set, array: T[] } namespace UniqueArray { export function create(): UniqueArray { return { keys: new Set(), array: [] }; } export function add({ keys, array }: UniqueArray, key: K, value: T) { if (keys.has(key)) return; keys.add(key); array[array.length] = value; } } export { UniqueArray }