JSPM

compact-prefix-tree

2.0.2
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 7
    • Score
      100M100P100Q57440F
    • License MIT

    A serializable compact prefix trie

    Package Exports

    • compact-prefix-tree
    • compact-prefix-tree/cjs
    • compact-prefix-tree/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (compact-prefix-tree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Compact Prefix Tree

    A serializable compact prefix tree (also known as Radix tree or Patricia tree or space-optimized trie) implementation in JavaScript.

    Usage

    Installation

    npm install compact-prefix-tree

    General Usage

    import { CompactPrefixTree } from "compact-prefix-tree/index.js";
    // OR
    const { CompactPrefixTree } = require("compact-prefix-tree/cjs");
    
    const items = [
      "http://www.example.com/foo/",
      "http://www.example.com/baz/",
    ];
    
    // create a trie from array of strings
    const trie = new CompactPrefixTree(items);
    // can add items later
    trie.add("http://www.example.com/john/");
    
    // look for a prefix of a word
    const p1 = trie.prefix("http://www.example.com/john/doe");
    // p1: { prefix: "http://www.example.com/john/", isProper: true }
    const p2 = trie.prefix("http://www.example.com/bazinga");
    // p2: { prefix: "http://www.example.com/", isProper: false }
    // above is not proper as it doesn't exist in list of items provided

    Serialization

    const { CompactPrefixTree, getWordsFromTrie } = require("compact-prefix-tree");
    const items = [
      "http://www.example.com/foo/",
      "https://www.example.com/baz/",
    ];
    const trie = new CompactPrefixTree(items);
    const serialized = JSON.stringify(trie.T);
    // {
    //   "http": {
    //     "://www.example.com/foo/": null,
    //     "s://www.example.com/baz/": null
    //   }
    // }
    
    const words = getWordsFromTrie(JSON.parse(serialized));
    // Set(2) {"http://www.example.com/foo/" "https://www.example.com/baz/"}
    
    const trie2 = new CompactPrefixTree(Array.from(words));
    // assert(isEqual(trie.items, trie2.items));

    License

    [MIT License] Copyright 2018 Sid Vishnoi (https://sidvishnoi.github.io)