diff options
Diffstat (limited to 'school/node_modules/graphql/jsutils/Path.js.flow')
-rw-r--r-- | school/node_modules/graphql/jsutils/Path.js.flow | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/school/node_modules/graphql/jsutils/Path.js.flow b/school/node_modules/graphql/jsutils/Path.js.flow new file mode 100644 index 0000000..4b0e23c --- /dev/null +++ b/school/node_modules/graphql/jsutils/Path.js.flow @@ -0,0 +1,30 @@ +// @flow strict +export type Path = {| + +prev: Path | void, + +key: string | number, + +typename: string | void, +|}; + +/** + * Given a Path and a key, return a new Path containing the new key. + */ +export function addPath( + prev: $ReadOnly<Path> | void, + key: string | number, + typename: string | void, +): Path { + return { prev, key, typename }; +} + +/** + * Given a Path, return an Array of the path keys. + */ +export function pathToArray(path: ?$ReadOnly<Path>): Array<string | number> { + const flattened = []; + let curr = path; + while (curr) { + flattened.push(curr.key); + curr = curr.prev; + } + return flattened.reverse(); +} |