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

4.0.1 • Public • Published

YURL

A daisy-chaining URL manipulation library. As of v4.0.0, the library has been ported to TypeScript.

Usage

Modern versions of Node.js ship with a native implementation of the WHATWG URL interface in the form of the URL class exported by the url module.

yurl builds upon such interface by implementing dedicated modifier methods for each URL property, adding a few bits of useful logic here and there.

Example

import { YURL } from 'yurl';

new YURL('http://example.com/foo/bar?a=24')
    .pathname('..', 'baz')                  // Resolves pathname to /foo/baz
    .port(8888)                             // Changes port to 8888
    .query({a: null, b: 24})                // Drops param "a", sets param "b"
    .format()                               // Serialization

// ==> http://example.com:8888/foo/baz?b=24

Installation

npm install yurl
import { YURL } from 'yurl';
const { YURL } = require('yurl');

Parts

The backing instance of the URL class is available through the parts property.

const example = new YURL('http://example.com');

example.parts.hostname === 'example.com';    // true
example.parts.protocol === 'http:';          // true

Cloning

The clone() method returns a deep copy of the current YURL instance. All other methods are modifier methods and alter the instance they are called upon.

Pathname resolution

The pathname() method supports trailing slashes and both absolute and relative pathnames.

const example = new YURL('http://example.com');

example.parts.pathname === '/';               // true
example.pathname('/foo/bar');
example.parts.pathname === '/foo/bar';        // true
example.pathname('../baz');
example.parts.pathname === '/baz';            // true
example.pathname('/baz/');
example.parts.pathname === '/baz/';           // true

Query params

Query params are set and removed via the .query() method.

const example = new YURL('http://example.com');

example.query('answer', '42');
example.parts.query.answer[0] === '42';       // true
example.format();                             // ?answer=42

example.query({answer: null, hello: 'world'});
example.parts.query.answer;                   // undefined
example.parts.query.hello[0] === 'world';     // true
example.format();                             // ?hello=world

example.query('pets', ['cats', 'dogs']);
example.parts.query.pets[0] === 'cats';       // true
example.parts.query.pets[1] === 'dogs';       // true
example.format();                             // ?pets=cats&pets=dogs

example.query();                              // removes all params

Test

npm test

License

MIT

Dependencies (0)

    Dev Dependencies (5)

    Package Sidebar

    Install

    npm i yurl

    Weekly Downloads

    10

    Version

    4.0.1

    License

    MIT

    Unpacked Size

    15.5 kB

    Total Files

    11

    Last publish

    Collaborators

    • jacoscaz