UNPKG

4.3 kBTypeScriptView Raw
1export interface ParseOptions {
2 /**
3 * Set the default delimiter for repeat parameters. (default: `'/'`)
4 */
5 delimiter?: string;
6 /**
7 * List of characters to automatically consider prefixes when parsing.
8 */
9 prefixes?: string;
10}
11/**
12 * Parse a string for the raw tokens.
13 */
14export declare function parse(str: string, options?: ParseOptions): Token[];
15export interface TokensToFunctionOptions {
16 /**
17 * When `true` the regexp will be case sensitive. (default: `false`)
18 */
19 sensitive?: boolean;
20 /**
21 * Function for encoding input strings for output.
22 */
23 encode?: (value: string, token: Key) => string;
24 /**
25 * When `false` the function can produce an invalid (unmatched) path. (default: `true`)
26 */
27 validate?: boolean;
28}
29/**
30 * Compile a string to a template function for the path.
31 */
32export declare function compile<P extends object = object>(str: string, options?: ParseOptions & TokensToFunctionOptions): PathFunction<P>;
33export declare type PathFunction<P extends object = object> = (data?: P) => string;
34/**
35 * Expose a method for transforming tokens into the path function.
36 */
37export declare function tokensToFunction<P extends object = object>(tokens: Token[], options?: TokensToFunctionOptions): PathFunction<P>;
38export interface RegexpToFunctionOptions {
39 /**
40 * Function for decoding strings for params.
41 */
42 decode?: (value: string, token: Key) => string;
43}
44/**
45 * A match result contains data about the path match.
46 */
47export interface MatchResult<P extends object = object> {
48 path: string;
49 index: number;
50 params: P;
51}
52/**
53 * A match is either `false` (no match) or a match result.
54 */
55export declare type Match<P extends object = object> = false | MatchResult<P>;
56/**
57 * The match function takes a string and returns whether it matched the path.
58 */
59export declare type MatchFunction<P extends object = object> = (path: string) => Match<P>;
60/**
61 * Create path match function from `path-to-regexp` spec.
62 */
63export declare function match<P extends object = object>(str: Path, options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions): MatchFunction<P>;
64/**
65 * Create a path match function from `path-to-regexp` output.
66 */
67export declare function regexpToFunction<P extends object = object>(re: RegExp, keys: Key[], options?: RegexpToFunctionOptions): MatchFunction<P>;
68/**
69 * Metadata about a key.
70 */
71export interface Key {
72 name: string | number;
73 prefix: string;
74 suffix: string;
75 pattern: string;
76 modifier: string;
77}
78/**
79 * A token is a string (nothing special) or key metadata (capture group).
80 */
81export declare type Token = string | Key;
82export interface TokensToRegexpOptions {
83 /**
84 * When `true` the regexp will be case sensitive. (default: `false`)
85 */
86 sensitive?: boolean;
87 /**
88 * When `true` the regexp won't allow an optional trailing delimiter to match. (default: `false`)
89 */
90 strict?: boolean;
91 /**
92 * When `true` the regexp will match to the end of the string. (default: `true`)
93 */
94 end?: boolean;
95 /**
96 * When `true` the regexp will match from the beginning of the string. (default: `true`)
97 */
98 start?: boolean;
99 /**
100 * Sets the final character for non-ending optimistic matches. (default: `/`)
101 */
102 delimiter?: string;
103 /**
104 * List of characters that can also be "end" characters.
105 */
106 endsWith?: string;
107 /**
108 * Encode path tokens for use in the `RegExp`.
109 */
110 encode?: (value: string) => string;
111}
112/**
113 * Expose a function for taking tokens and returning a RegExp.
114 */
115export declare function tokensToRegexp(tokens: Token[], keys?: Key[], options?: TokensToRegexpOptions): RegExp;
116/**
117 * Supported `path-to-regexp` input types.
118 */
119export declare type Path = string | RegExp | Array<string | RegExp>;
120/**
121 * Normalize the given path string, returning a regular expression.
122 *
123 * An empty array can be passed in for the keys, which will hold the
124 * placeholder key descriptions. For example, using `/user/:id`, `keys` will
125 * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
126 */
127export declare function pathToRegexp(path: Path, keys?: Key[], options?: TokensToRegexpOptions & ParseOptions): RegExp;