-
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathindex.d.ts
53 lines (44 loc) · 1.57 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
export class MissingValueError extends Error {
name: 'MissingValueError';
message: string;
key: string;
constructor(key: string);
}
export type Options = {
/**
By default, Pupa throws a `MissingValueError` when a placeholder resolves to `undefined`. With this option set to `true`, it simply ignores it and leaves the placeholder as is.
@default false
*/
ignoreMissing?: boolean;
/**
Performs arbitrary operation for each interpolation. If the returned value was `undefined`, it behaves differently depending on the `ignoreMissing` option. Otherwise, the returned value will be interpolated into a string (and escaped when double-braced) and embedded into the template.
@default ({value}) => value
*/
transform?: (data: {value: unknown; key: string}) => unknown;
};
/**
Simple micro templating.
@param template - Text with placeholders for `data` properties.
@param data - Data to interpolate into `template`. The keys should be a valid JS identifier or number (`a-z`, `A-Z`, `0-9`).
@example
```
import pupa from 'pupa';
pupa('The mobile number of {name} is {phone.mobile}', {
name: 'Sindre',
phone: {
mobile: '609 24 363'
}
});
//=> 'The mobile number of Sindre is 609 24 363'
pupa('I like {0} and {1}', ['🦄', '🐮']);
//=> 'I like 🦄 and 🐮'
// Double braces encodes the HTML entities to avoid code injection.
pupa('I like {{0}} and {{1}}', ['<br>🦄</br>', '<i>🐮</i>']);
//=> 'I like <br>🦄</br> and <i>🐮</i>'
```
*/
export default function pupa(
template: string,
data: unknown[] | Record<string, any>,
options?: Options
): string;