0.2.1 • Published 5 months ago

compare-uri-specificity v0.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

compare-uri-specificity

A helper function to compare the specificity of URIs, routes, and paths. When used in an array sort function, more specific URIs will come earlier than less specific ones.

Installation

npm install compare-uri-specificity

Usage

import { compareUriSpecificity } from 'compare-uri-specificity';

// Different segment lengths
compareUriSpecificity('/foo/bar', '/foo');     // -1 (first is more specific)
compareUriSpecificity('/foo', '/foo/bar');     // 1 (first is less specific)
compareUriSpecificity('/a/b/c', '/x/y');       // -1 (first is more specific)

// Wildcards vs concrete paths
compareUriSpecificity('/foo/bar', '/foo/*');   // -1 (concrete path is more specific)
compareUriSpecificity('/foo/*', '/foo/bar');   // 1 (wildcard is less specific)

// Partial segment matches
compareUriSpecificity('/foo', '/food');        // 1 (shorter segment is less specific)
compareUriSpecificity('/food', '/foo');        // -1 (longer segment is more specific)

// Equal specificity
compareUriSpecificity('/foo/bar', '/foo/baz'); // 0 (equal specificity)
compareUriSpecificity('/foo/', '/foo');        // 0 (trailing slashes ignored)

// Using with Array.sort()
const uris = ['/foo', '/foo/bar', '/foo/*', '/food'];
uris.sort(compareUriSpecificity);
// Result: ['/foo/bar', '/food', '/foo', '/foo/*']

// Error handling
compareUriSpecificity('foo//bar', '/foo');     // throws Error: Invalid URI format
compareUriSpecificity('/foo', null);           // throws Error: URI must be a string
0.2.1

5 months ago

0.2.0

5 months ago

0.1.3

5 months ago

0.1.2

5 months ago

0.1.1

5 months ago

0.1.0

5 months ago