1.0.2 • Published 10 months ago

@esfx/iter-hierarchy v1.0.2

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
10 months ago

@esfx/iter-hierarchy

A Symbol-based API for defining an Iterable with an inherent hierarchy.

Overview

Installation

npm i @esfx/iter-hierarchy

Usage

import { HierarchyIterable, Hierarchical, HierarchyProvider } from "@esfx/iter-hierarchy";

interface Node {
    parent?: Node;
    children?: Node[];
    ...
}

const hierarchyProvider: HierarchyProvider<Node> = {
    parent(node: Node) { return node.parent; },
    children(node: Node) { return node.children; },
};

class MyHierarchyIterable implements HierarchyIterable<Node> {
    private #nodes: Iterable<Node>;
    constructor(nodes: Iterable<Node>) {
        this.#nodes = nodes;
    }

    [Symbol.iterator]() {
        return this.#nodes[Symbol.iterator]();
    }

    [Hierarchical.hierarchy]() {
        return hierarhcyProvider;
    }
}

API

You can read more about the API here.