UNPKG

953 BJavaScriptView Raw
1var assert = require('assert')
2
3module.exports = getAllRoutes
4
5var transform = function (trie, previous) {
6 var prev = previous || '/'
7 var routes = {}
8 var nodes = trie.nodes
9 Object.keys(nodes).forEach(function (key) {
10 var path = (prev === '/' ? prev : prev + '/') + (key === '$$' ? ':' + trie.name : key)
11 var cb = nodes[key].cb
12 if (cb !== undefined) {
13 routes[path] = cb
14 }
15 if (Object.keys(nodes[key].nodes).length !== 0) {
16 var obj = transform(nodes[key], path)
17 Object.keys(obj).forEach(function (r) {
18 routes[r] = obj[r]
19 })
20 }
21 })
22 return routes
23}
24
25// walk a wayfarer trie
26// (obj, fn) -> null
27function getAllRoutes (router) {
28 assert.equal(typeof router, 'function', 'wayfarer.getAllRoutes: router should be an function')
29
30 var trie = router._trie
31 assert.equal(typeof trie, 'object', 'wayfarer.getAllRoutes: trie should be an object')
32
33 var tree = trie.trie
34 return transform(tree)
35}