// @flow strict export type Path = {| +prev: Path | void, +key: string | number, |}; /** * Given a Path and a key, return a new Path containing the new key. */ export function addPath(prev: $ReadOnly | void, key: string | number) { return { prev, key }; } /** * Given a Path, return an Array of the path keys. */ export function pathToArray(path: ?$ReadOnly): Array { const flattened = []; let curr = path; while (curr) { flattened.push(curr.key); curr = curr.prev; } return flattened.reverse(); }