Nostradamus Prophecy Machine

    url-match-pattern

    1.0.1 • Public • Published

    URL Match Pattern

    a JavaScript package handles match patterns described in browser extension

    demo page

    See articles on MDN and Chrome Developers.

    Usage

    /// check if a string is a valid URL match pattern
    URLMatchPattern.test('*://github.com/'); // true
    
    /// check if a string matches a URL match pattern
    URLMatchPattern.test('*://*.google.com/*', 'https://google.com/search'); // true
    
    /// get a RegExp object which represents a URL match pattern
    const regexp = URLMatchPattern.toRegExp('*://*.name/');
    regexp.test('https://domainA.name/'); // true
    regexp.test('https://domainB.name/'); // true
    
    /// or create an object with `test` method
    const pattern = new URLMatchPattern('*://*.name/');
    pattern.test('https://domainA.name/'); // true
    pattern.test('https://domainB.name/'); // true

    Note

    Method test (both static and instance) allows url string:

    • with port
    • with hash
    • without path

    However, that's not the case after converting to RegExp.

    URLMatchPattern.test('*://*/', 'http://username:password@abc:666/#hash=hash?a'); // true
    URLMatchPattern.test('*://*/', 'http://abc'); // true
    
    const pattern = new URLMatchPattern('*://*/');
    pattern.test('http://username:password@abc:666/#hash=hash?a'); // true
    pattern.test('http://abc'); // true
    
    /// converting to RegExp object would lose that compatibility for current version
    const regexp = URLMatchPattern.toRegExp('*://*/');
    regexp.test('http://abc/'); // true
    regexp.test('http://abc:80/'); // false
    regexp.test('http://abc/#foo'); // false
    regexp.test('http://abc'); // false

    Compatibility

    Either browser supports http, https, and ftp.

    scheme this project Firefox 55+ Chrome 91+ Edge, Opera Safari
    ws, wss Yes Yes No No No
    urn No No Yes No No
    data No partial No No No
    file Yes Yes Yes Yes No

    Defects of URL Match Pattern

    • not well-defined
    • no escaping way for * in path
    • * in path also matches / and ?, which usually have special meaning.

    Keywords

    Install

    npm i url-match-pattern

    DownloadsWeekly Downloads

    2

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    16 kB

    Total Files

    7

    Last publish

    Collaborators

    • kong0107