@unction/treeify v13.16.0
@unction/treeify
Array<FoldFunctionType<A, B>> => Array => TreeType
This takes a list of functions (the folders) and an array of objects or an object of objects (the collection) to create a tree. Each function in the list of folders will in some way return a new object. All of the objects produced are then turned into a final tree.
const collection = [
{
id: "a1",
type: "resources",
attributes: {
version: "v1",
namespace: "accounts",
}
},
{
id: "a2",
type: "resources",
attributes: {
version: "v1",
namespace: "accounts",
}
},
{
id: "b1",
type: "resources",
attributes: {
version: "v1",
namespace: "profiles",
}
},
{
id: "b1",
type: "resources",
attributes: {
version: "v2",
namespace: "profiles",
}
}
]The order goes from outer layer to deeper layer, so in this case the outer
level properties will be based on key("type"), and the deepest layer
properties will be based on key("id").
const functions =
treeify(
[
groupBy(key("type")),
groupBy(keyChain(["attributes", "namespace"])),
groupBy(keyChain(["attributes", "version"])),
indexBy(key("id")),
]
)(
collection
)The resulting object looks like this:
{
resources: {
accounts: {
v1: {
a1: {
id: "a1",
type: "resources",
attributes: {
version: "v1",
namespace: "accounts",
}
},
a2: {
id: "a2",
type: "resources",
attributes: {
version: "v1",
namespace: "accounts",
}
}
}
},
profiles: {
v1: {
b1: {
id: "b1",
type: "resources",
attributes: {
version: "v1",
namespace: "profiles",
}
}
},
v2: {
b1: {
id: "b1",
type: "resources",
attributes: {
version: "v2",
namespace: "profiles",
}
}
}
}
}
}5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago