router-trie
TypeScript icon, indicating that this package has built-in type declarations

0.0.12 • Public • Published

router-trie

Usage

npm i router-trie
import { createTrie, matchTrie } from "router-trie";

const routesTrie = createTrie([
  {
    id: "root",
    children: [
      {
        id: "home",
        index: true,
      },
    ],
  },
]);

const matches = matchTrie(routesTrie, "/");

console.log(matches);
// [{ id: "root" }, { id: "home", index: true }]

Development

To install dependencies:

npm i

To run the playground:

npm start

To run the tests:

npm test

Visual of the trie structure:

Given the following routing config: routes.json

We get the following trie:

graph TD;
  0__{_ROOT_} --> 0_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_0__{_INDEX_};
  0_0_0__{_INDEX_} --> 0_0_0_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_1__{path-index};
  0_0_1__{path-index} --> 0_0_1_0__{_INDEX_};
  0_0_1_0__{_INDEX_} --> 0_0_1_0_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_2__{not-nested};
  0_0_2__{not-nested} --> 0_0_2_0__{_ROUTE_};
  0_0_2__{not-nested} --> 0_0_2_1__{sub};
  0_0_2_1__{sub} --> 0_0_2_1_0__{_ROUTE_};
  0_0_2__{not-nested} --> 0_0_2_2__{_DYNAMIC_};
  0_0_2_2__{_DYNAMIC_} --> 0_0_2_2_0__{_ROUTE_};
  0_0_2_2__{_DYNAMIC_} --> 0_0_2_2_1__{_DYNAMIC_};
  0_0_2_2_1__{_DYNAMIC_} --> 0_0_2_2_1_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_3__{optional};
  0_0_3__{optional} --> 0_0_3_0__{_OPTIONAL_};
  0_0_3_0__{_OPTIONAL_} --> 0_0_3_0_0__{_OPTIONAL_};
  0_0_3_0_0__{_OPTIONAL_} --> 0_0_3_0_0_0__{_ROUTE_};
  0_0_3_0__{_OPTIONAL_} --> 0_0_3_0_1__{sub};
  0_0_3_0_1__{sub} --> 0_0_3_0_1_0__{_ROUTE_};
  0_0_3__{optional} --> 0_0_3_1__{sub};
  0_0_3_1__{sub} --> 0_0_3_1_0__{_OPTIONAL_};
  0_0_3_1_0__{_OPTIONAL_} --> 0_0_3_1_0_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_4__{nested};
  0_0_4__{nested} --> 0_0_4_0__{_ROUTE_};
  0_0_4_0__{_ROUTE_} --> 0_0_4_0_0__{_INDEX_};
  0_0_4_0_0__{_INDEX_} --> 0_0_4_0_0_0__{_ROUTE_};
  0_0_4_0__{_ROUTE_} --> 0_0_4_0_1__{sub};
  0_0_4_0_1__{sub} --> 0_0_4_0_1_0__{_ROUTE_};
  0_0_4_0__{_ROUTE_} --> 0_0_4_0_2__{_DYNAMIC_};
  0_0_4_0_2__{_DYNAMIC_} --> 0_0_4_0_2_0__{_ROUTE_};
  0_0_4_0_2__{_DYNAMIC_} --> 0_0_4_0_2_1__{_DYNAMIC_};
  0_0_4_0_2_1__{_DYNAMIC_} --> 0_0_4_0_2_1_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_5__{nested-nested};
  0_0_5__{nested-nested} --> 0_0_5_0__{_ROUTE_};
  0_0_5_0__{_ROUTE_} --> 0_0_5_0_0__{_INDEX_};
  0_0_5_0_0__{_INDEX_} --> 0_0_5_0_0_0__{_ROUTE_};
  0_0_5_0__{_ROUTE_} --> 0_0_5_0_1__{sub};
  0_0_5_0_1__{sub} --> 0_0_5_0_1_0__{_ROUTE_};
  0_0_5_0__{_ROUTE_} --> 0_0_5_0_2__{_DYNAMIC_};
  0_0_5_0_2__{_DYNAMIC_} --> 0_0_5_0_2_0__{_ROUTE_};
  0_0_5_0_2_0__{_ROUTE_} --> 0_0_5_0_2_0_0__{_DYNAMIC_};
  0_0_5_0_2_0_0__{_DYNAMIC_} --> 0_0_5_0_2_0_0_0__{_ROUTE_};
  0_0__{_ROUTE_} --> 0_0_6__{_CATCH_ALL_};
  0_0_6__{_CATCH_ALL_} --> 0_0_6_0__{_ROUTE_};

Dependents (2)

Package Sidebar

Install

npm i router-trie

Weekly Downloads

2

Version

0.0.12

License

none

Unpacked Size

81.7 kB

Total Files

13

Last publish

Collaborators

  • jacob-ebey