mod-url

    1.0.0 • Public • Published

    mod-url

    Build Status DeepScan grade

    npm i mod-url
    
    const mod = require('mod-url');
     
    console.log(mod.parse('github.com').done());
    // https://github.com/
     
    console.log(mod.parse('http://google.com')
      .protocol('https')
      .subdomain('www')
      .domainext('in')
      .path('search?q=query')
      .fragment('foo')
      .done());
    // https://www.google.in/search?q=query#foo

    API

    .parse(url) -> parse url.

    example of accepted url types : github, github.com, www.github.com, http://www.github.com, https://github.com, github.com/path

    const gh = mod.parse('github');

    .done() -> get modified string.

    console.log(gh.done());
    // https://github.com/

    .protocol(string) -> modify protocol scheme.

    let url = mod.parse('github');
    url = url.protocol('http');
     
    // or
    // url = mod.parse('github').protocol('http').done();
     
    console.log(url.done());
    // http://github.com/

    .subdomain(string) -> modify subdomain.

    const url = mod.parse('github').subdomain('www').done();
     
    console.log(url);
    // https://www.github.com/
    const url = mod.parse('www.github.com').subdomain('x.y').done();
     
    console.log(url);
    // https://x.y.github.com/

    To remove subdomain. Do not pass null argument. Instead pass empty string

    const url = mod.parse('www.github.com').subdomain('').done();
     
    console.log(url);
    // https://github.com/

    .domain(string) -> modify domain.

    const url = mod.parse('yahoo.com/search?q=query').domain('google').done();
     
    console.log(url);
    // https://google.com/search?q=query
    const url = mod.parse('google.com').domain('www.google.in').done();
     
    console.log(url);
    // https://www.google.in/
    const url = mod.parse('google').domain('google.in').done();
     
    console.log(url);
    // https://google.in/

    You cannot remove domain. ie .domain('') wont work

    .domainext(string) -> modify domain extension

    const url = mod.parse('google.com/search?q=query').domainext('uk').done();
     
    console.log(url);
    // https://google.uk/search?q=query

    .port(string | number) -> modify port

    const url = mod.parse('google.com').port(80).done();
     
    console.log(url);
    // https://google:80.com/

    .path(string) -> modify full path

    const url = mod.parse('google.com/path/to?q=q1').path('onlypath').done();
     
    console.log(url);
    // https://google.com/onlypath
    const url = mod.parse('github.com/daunting/long/path/not/required/to/you').path('').done();
     
    console.log(url);
    // https://github.com/

    .onlypath(string) -> modify path (excluding query & fragment)

    const url = mod.parse('google.com/version1?q=query').onlypath('version2').done();
     
    console.log(url);
    // https://google.com/version2?q=query

    .query(string) -> modify query

    const url = mod.parse('google.com/search?q=query').query('foo=bar&baz=foo').done();
     
    console.log(url);
    // https://google.com/seach?foo=bar&baz=foo

    .fragment(string) -> modify fragment

    const url = mod.parse('google.com/hi').fragment('#hello').done();
     
    console.log(url);
    // https://google.com/hi#hello

    chain modify functions as you want

    const url = mod.parse('something').path('/random?query=unknown').protocol('http').subdomain('www').domainext('foo').port('90').domain('something-else').done();
     
    console.log(url);
    // http://www.something-else:90.foo/random?query=unknown

    Do not forget to add .done() at last

    DO NOT - (mod-url is mutable)

    const url1 = mod.parse('google');
     
    const url2 = mod.parse('github');
     
    console.log(url1.done());
    // https://github.com
     
    console.log(url2.done());
    // https://github.com
    // solution for above behavior
    const url1 = mod.parse('google').done();
    const url2 = mod.parse('github').done();
     
    console.log(url1);
    console.log(url2);

    Install

    npm i mod-url

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    15.9 kB

    Total Files

    8

    Last publish

    Collaborators

    • mayursiinh