@@ -19,17 +19,14 @@ interface MapConstructor {
19
19
20
20
declare const Map : MapConstructor ;
21
21
22
- export type HeaderObject = { [ key : string ] : string | string [ ] } ;
23
- export type HeaderMap = Map < string , string | string [ ] > ;
24
-
25
22
// Declare that there is a global property named "Headers" - this might not be present at runtime
26
23
declare const Headers : any ;
27
24
28
25
// BrowserHeaders is a wrapper class for Headers
29
- export default class BrowserHeaders {
26
+ export class BrowserHeaders {
30
27
keyValueMap : { [ key : string ] : string [ ] } ;
31
28
32
- constructor ( init : HeaderObject | HeaderMap | BrowserHeaders | WindowHeaders | string = "" , options : { splitValues : boolean } = { splitValues : false } ) {
29
+ constructor ( init : BrowserHeaders . ConstructorArg = { } , options : { splitValues : boolean } = { splitValues : false } ) {
33
30
this . keyValueMap = { } ;
34
31
35
32
if ( init ) {
@@ -46,19 +43,19 @@ export default class BrowserHeaders {
46
43
} ) ;
47
44
} ) ;
48
45
} else if ( init instanceof BrowserHeaders ) {
49
- init . forEach ( ( key , values ) => {
46
+ ( init as BrowserHeaders ) . forEach ( ( key , values ) => {
50
47
this . append ( key , values )
51
48
} ) ;
52
49
} else if ( typeof Map !== "undefined" && init instanceof Map ) {
53
- const asMap = init as HeaderMap ;
50
+ const asMap = init as BrowserHeaders . HeaderMap ;
54
51
asMap . forEach ( ( value : string | string [ ] , key : string ) => {
55
52
this . append ( key , value ) ;
56
53
} ) ;
57
54
} else if ( typeof init === "string" ) {
58
55
this . appendFromString ( init ) ;
59
56
} else if ( typeof init === "object" ) {
60
57
Object . getOwnPropertyNames ( init ) . forEach ( key => {
61
- const asObject = init as HeaderObject ;
58
+ const asObject = init as BrowserHeaders . HeaderObject ;
62
59
const values = asObject [ key ] ;
63
60
if ( Array . isArray ( values ) ) {
64
61
values . forEach ( value => {
@@ -162,4 +159,22 @@ export default class BrowserHeaders {
162
159
callback ( key , this . keyValueMap [ key ] ) ;
163
160
} , this ) ;
164
161
}
162
+
163
+ toHeaders ( ) : WindowHeaders {
164
+ const headers : WindowHeaders = new Headers ( ) ;
165
+
166
+ this . forEach ( ( key , values ) => {
167
+ values . forEach ( value => {
168
+ headers . append ( key , value ) ;
169
+ } ) ;
170
+ } ) ;
171
+
172
+ return headers ;
173
+ }
174
+ }
175
+
176
+ export namespace BrowserHeaders {
177
+ export type HeaderObject = { [ key : string ] : string | string [ ] } ;
178
+ export type HeaderMap = Map < string , string | string [ ] > ;
179
+ export type ConstructorArg = HeaderObject | HeaderMap | BrowserHeaders | WindowHeaders | string ;
165
180
}
0 commit comments