# pure-router

> Pure JavaScript Router

Latest version **0.0.9** (published 2020-08-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install pure-router
pnpm add pure-router
yarn add pure-router
bun add pure-router
```

## 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.0.9 |
| Published | 2020-08-18 |
| First published | 2020-07-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 27.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | teniryte |
| Maintainers | teniryte |

## Links

- npm: https://www.npmjs.com/package/pure-router
- Repository: https://github.com/teniryte/pure-router
- Issues: https://github.com/teniryte/pure-router/issues
- npm.io page: https://npm.io/package/pure-router

## Recent versions

- 0.0.9 (latest) — 2020-08-18
- 0.0.8 — 2020-07-28
- 0.0.7 — 2020-07-21

## README

# pure-router
Pure JavaScript Router

## CDN

```html
<script src="http://cdn.sencort.com/js/pure-router/pure-router.min.js"></script>

<script>
  let router = pureRouter();
</script>
```

## Package

**Installation:**

```sh
npm install pure-router
```

**Creating router:**

```js
const pureRouter = require('pure-router');

let router = pureRouter();
```

**Register handlers:**

All handlers receives single plain object argument with following properties:

- `url`: Requested URL string.
- `path`: Router template URL string.
- `params`: Object containing all parameters specified in `path` property.
- `hash`: URL hash string.
- `query`: Object with all parameters specified in URL after `?` sign.

```js
// Exact url
router.on('/contacts/', ({ url, path, params, hash, query }) => {

});

// Number parameter
router.on('/offers/#id/', ({ url, path, params, hash, query }) => {

});

// String parameter
router.on('/user/$username/', ({ url, path, params, hash, query }) => {

});

// Any type of parameter. Try to parse number, else string.
router.on('/partners/:partner/', ({ url, path, params, hash, query }) => {

});
```
**Example:**

```js
router.on('/partners/#id/', (route) => {
  route === {
     url: '/partners/14/?name=John',
     path: '/partners/:partner',
     params: { partner: 14 },
     hash: 'description',
     query: { name: 'John' },
  }
});

router.go('/partners/14/?name=John#description');
```

## API

### Route

```js
const pureRouter = require('pure-router');

let route = new pureRouter.Route('/user/$username/#id/:person/', handler);

route.test('/user/example/45/66/?name=example#description');

// { username: 'example', id: 45, person: 66 }
route.getParams(url);

// { name: 'example' }
route.getQuery(url);

// 'description'
route.getHash(url);

// { url, path, params, query, hash }
route.getData('/user/example/45/66/?name=example#description');
```

### Router

```js
const pureRouter = require('pure-router');

let router = new pureRouter.Router();

// { url, path, params, query, hash };
router.on('/user/$username/#id/:person/', handler);

route.go('/user/example/45/66/?name=example#description');
```

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