Newborn Programming Monsters

    TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published


    A template mechanism for parametrized url links, provide the url template and get a generator that will inject the parameters for you.

    Full TypeScript support!

    Template parameters are recognized by the TypeScript type system and ensured to be included in the generator arguments, making it easier for you to avoid mistakes during the development before the code is ever deployed or tested.

    Generator Arguments

    Url returned by the generator is always a string, meaning the arguments must also be parsed to strings, however not only strings and numbers can be provided as the arguments to the generator. Anything that has a .toString method, can be an argument. When generating the url, that method will be called and it's result will be inserted into the url.


    Url Template function takes a string with a parametrized url, anything within the string that is inside curly braces is considered a parameter. Each parameter within the string will be an argument to the template generator.

    import { urlTemplate } from "url-templater.ts";
    const apiTemplate = urlTemplate("/api/product/{id}");
    // /api/product/1
    const generatedUrl = apiTemplate.generate({ id: 1 });

    There is no limit to how many parameters you can have.

    import { urlTemplate } from "url-templater.ts";
    const apiTemplate = urlTemplate("/api/{a}/{b}/{c}/{d}");
    // /api/foo/bar/baz/qux
    const generatedUrl = apiTemplate.generate({
      a: "foo",
      b: "bar",
      c: "baz",
      d: "qux",

    Parameters can also be optional, for that add a question sign ? at the beginning of the parameter name.

    import { urlTemplate } from "url-templater.ts";
    const apiTemplate = urlTemplate("/api/product/{?id}");
    // /api/product/1
    const generatedUrlWithId = apiTemplate.generate({ id: 1 });
    // /api/product/
    const generatedUrlWithoutId = apiTemplate.generate({});

    Parameters can also be optionally chained, an optionally chained argument, if it is specified, will require each preceding optional argument to be defined.

    import { urlTemplate } from "url-templater.ts";
    const apiTemplate = urlTemplate("/api/book/{?id}/{+?pageNumber}"); // Here if the pageNumber is specified, the book ID also must be provided
    // /api/book
    const generatedUrl = apiTemplate.generate({}); // this is ok
    // /api/5
    const generatedUrl = apiTemplate.generate({ id: 5 }); // this is ok
    // /api/5/1
    const generatedUrl = apiTemplate.generate({ id: 5, pageNumber: 1 }); // this is ok
    const generatedUrl = apiTemplate.generate({ pageNumber: 1 }); // this is not ok, id is preceding the pageNumber, so the id must be defined


    npm i url-templater.ts

    DownloadsWeekly Downloads






    Unpacked Size

    12.1 kB

    Total Files


    Last publish


    • ncpa0cpl