# falcor-path-utils
**Repository Path**: mirrors_netflix/falcor-path-utils
## Basic Information
- **Project Name**: falcor-path-utils
- **Description**: A collection of utilities for manipulating Falcor Paths.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-19
- **Last Updated**: 2026-07-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Falcor Path Utils
This repository contains utilities for transforming and manipulating Falcor paths.
## Utility functions:
* `collapse(paths)`
Simplifies a set of paths. Example:
~~~js
var util = require("falcor-path-utils");
var collapsedPaths = util.collapse([
["genres", 0, "titles", 0, "name"],
["genres", 0, "titles", 0, "rating"],
["genres", 0, "titles", 1, "name"],
["genres", 0, "titles", 1, "rating"]
]);
// collapsed paths is ["genres", 0, "titles", {from: 0, to: 1}, ["name", "rating"]]
~~~
* `iterateKeySet(keySet, note)`
Takes in a `keySet` and a `note` and attempts to iterate over it.
* `toTree(paths)`
Converts `paths` to a tree with null leaves. ([see spec](./test/toTree.spec.js))
* `toPaths(lengths)`
Converts a `lengthTree` to paths. ([see spec](./test/toPaths.spec.js))
* `pathsComplementFromTree(paths, tree)`
Returns a list of these `paths` that are not in the `tree`. ([see spec](./test/pathsComplementFromTree.spec.js))
* `pathsComplementFromLengthTree(paths, lengthTree)`
Like above, but for use with length tree.
* `hasIntersection(tree, path, depth)`
Tests to see if the intersection should be stripped from the total paths.
* `optimizePathSets(cache, paths, maxRefFollow)`
([see spec](./test/optimizePathSets.spec.js))
* `pathCount(pathSet)`
Returns the number of paths in a PathSet.
~~~js
var util = require("falcor-path-utils");
console.log(util.pathCount(["titlesById", [512, 628], ["name","rating"]]))
// prints 4, because ["titlesById", [512, 628], ["name","rating"]] contains...
// ["titlesById", 512, "name"]
// ["titlesById", 512, "rating"]
// ["titlesById", 628, "name"]
// ["titlesById", 628, "rating"]
~~~
* `escape(string)`
Escapes untrusted input to make it safe to include in a path.
* `unescape(string)`
Unescapes a string encoded with escape.
* `materialize(pathSet, value)`
Construct a JsonGraph of value at pathSet paths.