# urltree

> Named URL data structure with support for URL building.

Latest version **0.5.1** (published 2014-11-24) · 0 weekly downloads

## Install

```sh
npm install urltree
pnpm add urltree
yarn add urltree
bun add urltree
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.5.1 |
| Published | 2014-11-24 |
| First published | 2014-02-21 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 35 |
| Author | Artem Nezvigin |
| Maintainers | artnez |
| Keywords | express, named, route, tree, url |

## Links

- npm: https://www.npmjs.com/package/urltree
- Repository: http://github.com/artnez/urltree
- Homepage: https://github.com/artnez/urltree
- Issues: https://github.com/artnez/urltree/issues
- npm.io page: https://npm.io/package/urltree

## Alternatives

- [express-promise-router](https://npm.io/package/express-promise-router.md) — 736.1K weekly downloads
- [next-usequerystate](https://npm.io/package/next-usequerystate.md) — 29.8K weekly downloads
- [@bitkyc08/opencodex](https://npm.io/package/@bitkyc08/opencodex.md) — 4.6K weekly downloads
- [lynkr](https://npm.io/package/lynkr.md) — 575 weekly downloads
- [baremetal.js](https://npm.io/package/baremetal.js.md) — 42 weekly downloads

## Recent versions

- 0.5.1 (latest) — 2014-11-24
- 0.5.0 — 2014-11-24
- 0.4.0 — 2014-09-25
- 0.3.0 — 2014-08-28
- 0.2.3 — 2014-04-11
- 0.2.2 — 2014-03-15
- 0.2.1 — 2014-03-15
- 0.2.0 — 2014-03-15
- 0.1.2 — 2014-02-21
- 0.1.1 — 2014-02-21
- 0.1.0 — 2014-02-21

## README

[![Build Status](https://travis-ci.org/artnez/urltree.svg?branch=master)](http://travis-ci.org/artnez/urltree)

urltree
=======

Named URL data structure with support for URL building.

Install
-------

```bash
$ npm install urltree
```

Define URLs
-----------

```javascript
var urltree = require('urltree');

var urls = urltree({
  'user': '/user/:id',
  'file.download': '/product/:product/download/:file',
  'repo.commit.ref': '/repo/commit/:ref'
});

urls.user.toString();
'/user/:id'

urls.file.download.toString();
'/product/:product/download/:file'

urls.repo.commit.ref.toString();
'/repo/commit/:ref'
```

Build URLs
----------

```javascript
urls.user.build({id: 123});
'/user/123'

urls.user.build()
// Error: URL build failed. No param id (/user/:id)

urls.file.download.build({product: 'acme', file: 'logo.jpg'});
'/product/acme/download/logo.jpg'

urls.repo.commit.ref.build({ref: 'HEAD^'});
'/repo/commit/HEAD^'

urls.repo.commit.ref.build({ref: 'HEAD^'}, true);
'/repo/commit/HEAD%5E'
```

Express 3
---------

```javascript
var express = require('express');
var urltree = require('urltree');

var urls = urltree({
  'user': '/user/:id'
});

var app = express();

app.get(urls.user, function(req, res) {
  res.send(urls.user.build({id: 123}));
});
```

Express 4
---------

```javascript
// ...

app.route(urls.user).get(function(req, res) {
  res.send(urls.user.build({id: 123}));
});
```

Express + Handlebars
--------------------

```javascript
var express = require('express');
var hbs = require('hbs');
var urltree = require('urltree');

var app = express();

var urls = urltree({
  'user': '/user/:id'
});

var engine = hbs.create();
engine.registerHelper('route', urls.handlebarsHelper);
app.engine('hbs', engine.__express);
app.set('views', '/path/to/views/');

app.use(function(req, res, next) {
  res.locals.urls = urls;
  next();
});

app.get(urls.user, function(req, res) {
  res.render('user');
});
```

```html
{{route urls.user id=123}}
```

License
-------

MIT

---
_Source: https://npm.io/package/urltree · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
