uri-templates-lite
v1.0.0
Published
Lightweight replacement for uri-templates with compatible API
Maintainers
Readme
uri-templates-lite
A lightweight replacement for the uri-templates package with a compatible API. This package provides basic URI template parsing and parameter extraction/filling functionality while being significantly smaller and simpler than the original.
Features
- ✅ Compatible API with
uri-templatespackage - 🪶 Lightweight (under 50 lines of code)
- 🚀 Zero dependencies
- 📦 Small bundle size
- 🔧 Basic URI template support
Installation
npm install uri-templates-liteUsage
const parseURITemplate = require('uri-templates-lite');
// Create a template parser
const template = parseURITemplate('/api/{version}/users/{id}');
// Extract parameters from a URI
const params = template.fromUri('/api/v1/users/123');
console.log(params); // { version: 'v1', id: '123' }
// Fill template with parameters
const uri = template.fill({ version: 'v2', id: '456' });
console.log(uri); // '/api/v2/users/456'API
parseURITemplate(template)
Creates a template parser for the given URI template.
Parameters:
template(string): URI template with parameters in{param}format
Returns: Object with fromUri and fill methods
template.fromUri(uri)
Extracts parameters from a URI by matching against the template.
Parameters:
uri(string): The URI to extract parameters from
Returns: Object with extracted parameters or null if no match
template.fill(params)
Fills the template with the provided parameter values.
Parameters:
params(object): Parameters to fill the template with
Returns: String with the filled template
Limitations
This is a simplified implementation that supports basic URI template functionality. It does not support:
- Advanced RFC 6570 operators (like
+,#,.,/,;,?,&) - Complex expansion rules
- Reserved character handling
For most use cases involving simple path parameters, this implementation should be sufficient.
License
MIT
Contributing
This package was created as a lightweight replacement for uri-templates in the Vibex Task Manager project. Contributions are welcome!
