https://github.com/hyperjump-io/uri-template
An RFC-6570 URI Template implementation
https://github.com/hyperjump-io/uri-template
Last synced: 5 months ago
JSON representation
An RFC-6570 URI Template implementation
- Host: GitHub
- URL: https://github.com/hyperjump-io/uri-template
- Owner: hyperjump-io
- License: mit
- Created: 2020-08-26T02:32:27.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-07-11T20:25:04.000Z (almost 2 years ago)
- Last Synced: 2025-10-03T23:38:46.700Z (9 months ago)
- Language: JavaScript
- Size: 16.6 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# URI Template
This is an implementation of [RFC 6570](https://tools.ietf.org/html/rfc6570) -
URI Template.
* Supports Level 4
* Separate parse and expand steps
* More efficient expansion
* Introspect a template
* Validate that a template is correct without expanding
* Detailed error messaging
## Installation
```bash
npm install @hyperjump/uri-template
```
## Usage
```javascript
const UriTemplate = require("@hyperjump/uri-template");
// Parse and expand in one step
UriTemplate.expand("/foo{?foo,bar}", { foo: "aaa", bar: "bbb" }); // => /foo?foo=aaa&bar=bbb
// Parse a URI Template
const template = UriTemplate.parse("/foo{?foo,bar}");
// Expand a URI Template from the pre-parsed template
UriTemplate.expand(template, { foo: "aaa", bar: "bbb" }); // => /foo?foo=aaa&bar=bbb
UriTemplate.expand(template, { foo: "ccc", bar: "ddd" }); // => /foo?foo=ccc&bar=ddd
// Convert a parsed template back into a string
UriTemplate.stringify(template); // => /foo{?foo,bar}
```
## API
* **parse**: (string) => Template
Parse a URI Template
* **expand**: (Template | string, Object) => string
Expand a URI template. The first argument can either be a URI Template AST
(the result of `parse`) or a URI Template string.
* **stringify**: (Template) => string
Convert a URI Template AST back into a URI Template string
* **Template**: array
An AST representing URI Template
## Contributing
### Tests
Run the tests
```bash
npm test
```
Run the tests with a continuous test runner
```bash
npm test -- --watch
```