npm's personal messenger

    @hyperjump/uri-template

    0.3.0 • Public • Published

    URI Template

    This is an implementation of RFC 6570 - URI Template.

    • Supports Level 4
    • Separate parse and expand steps
      • More efficient expansion
      • Introspect a template
      • Validate that a template is correct without expanding
    • Partially expand template with incomplete data
    • Detailed error messaging

    Installation

    npm install @hyperjump/uri-template

    Usage

    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}
    
    // Partially expand template with incomplete data
    const template = UriTemplate.expandPartial("/foo/{foo}{?bar}", { foo: "aaa" });
    UriTemplate.stringify(template); // => /foo/aaa{?bar}
    UriTemplate.expand(template, { bar: "bbb" }); // => /foo/aaa?bar=bbb

    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.

    • expandPartial: (Template | string, Object) => Template

      Partially expand a URI template. This function will expand the expressions using the data passed, but it will skip any expressions it doesn't have defined data for. The first argument can either be a URI Template AST (the result of parse) or a URI Template string. The result is a URI Template AST.

    • 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

    npm test

    Run the tests with a continuous test runner

    npm test -- --watch

    Install

    npm i @hyperjump/uri-template

    DownloadsWeekly Downloads

    701

    Version

    0.3.0

    License

    MIT

    Unpacked Size

    275 kB

    Total Files

    30

    Last publish

    Collaborators

    • jason.desrosiers