-
-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathindex.d.ts
140 lines (130 loc) · 3.97 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import { BackendModule, MultiReadCallback, ReadCallback, ResourceKey } from "i18next";
type LoadPathOption =
| string
| ((lngs: string[], namespaces: string[]) => string)
| ((lngs: string[], namespaces: string[]) => Promise<string>);
type AddPathOption =
| string
| ((lng: string, namespace: string) => string);
type FetchFunction = (input: string, init: RequestInit) => Promise<Response> | void
export interface HttpBackendOptions {
/**
* Use an alternative fetch function that acts like an interecept, (usefull for low level mocks/simulations)
*
* This option is not called if:
*
* 1. There is an custom value set for the "request" property in this options object.
* 2. The backend selected xmlHttpRequest over fetch
*
* If the function is called and it returns anything BUT a promise the fetch or xmlHttpRequest will be subsequentially called
*
*/
alternateFetch?: FetchFunction;
/**
* path where resources get loaded from, or a function
* returning a path:
* function(lngs, namespaces) { return customPath; }
* the returned path will interpolate lng, ns if provided like giving a static path
*/
loadPath?: LoadPathOption;
/**
* path to post missing resources, must be `string` or a `function` returning a path:
* function(lng, namespace) { return customPath; }
*/
addPath?: AddPathOption;
/**
* parse data after it has been fetched
* in example use https://www.npmjs.com/package/json5 or https://www.npmjs.com/package/jsonc-parser
* here it removes the letter a from the json (bad idea)
*/
parse?(
data: string,
languages?: string | string[],
namespaces?: string | string[]
): { [key: string]: any };
/**
* parse data before it has been sent by addPath
*/
parsePayload?(
namespace: string,
key: string,
fallbackValue?: string
): { [key: string]: any };
/**
* parse data before it has been sent by loadPath
* if value returned it will send a POST request
*/
parseLoadPayload?(
languages: string[],
namespaces: string[]
): { [key: string]: any } | undefined;
/**
* allow cross domain requests
*/
crossDomain?: boolean;
/**
* allow credentials on cross domain requests
*/
withCredentials?: boolean;
/**
* define a custom xhr function
* can be used to support XDomainRequest in IE 8 and 9
*/
request?(
options: HttpBackendOptions,
url: string,
payload: {} | string,
callback: RequestCallback
): void;
/**
* adds parameters to resource URL. 'example.com' -> 'example.com?v=1.3.5'
*/
queryStringParams?: { [key: string]: string };
/**
* allows an object containing custom headers or a function that when called returns
* an object of custom headers
*/
customHeaders?: { [key: string]: string } | (() => { [key: string]: string });
/**
* can be used to reload resources in a specific
* interval (useful in server environments)
*/
reloadInterval?: false | number;
/**
* fetch api request options, can be a function
*/
requestOptions?: RequestInit | ((payload: {} | string) => RequestInit);
}
type RequestCallback = (error: any | undefined | null, response: RequestResponse | undefined | null) => void;
interface RequestResponse {
status: number;
data: ResourceKey;
}
export default class I18NextHttpBackend
implements BackendModule<HttpBackendOptions>
{
static type: "backend";
constructor(services?: any, options?: HttpBackendOptions);
init(services?: any, options?: HttpBackendOptions): void;
readMulti?(
languages: string[],
namespaces: string[],
callback: MultiReadCallback
): void;
read(language: string, namespace: string, callback: ReadCallback): void;
loadUrl(
url: string,
callback: ReadCallback,
languages?: string | string[],
namespaces?: string | string[]
): void;
create?(
languages: string[],
namespace: string,
key: string,
fallbackValue: string
): void;
type: "backend";
services: any;
options: HttpBackendOptions;
}