2018-10-23 01:05:09 +03:00
! function ( self ) {
"use strict" ;
function normalizeName ( name ) {
if ( "string" != typeof name && ( name = String ( name ) ) , /[^a-z0-9\-#$%&'*+.\^_`|~]/i . test ( name ) ) throw new TypeError ( "Invalid character in header field name" ) ;
return name . toLowerCase ( )
}
function normalizeValue ( value ) {
return "string" != typeof value && ( value = String ( value ) ) , value
}
function iteratorFor ( items ) {
var iterator = {
next : function ( ) {
var value = items . shift ( ) ;
return {
done : void 0 === value ,
value : value
}
}
} ;
return support . iterable && ( iterator [ Symbol . iterator ] = function ( ) {
return iterator
} ) , iterator
}
function Headers ( headers ) {
this . map = { } , headers instanceof Headers ? headers . forEach ( function ( value , name ) {
this . append ( name , value )
} , this ) : headers && Object . getOwnPropertyNames ( headers ) . forEach ( function ( name ) {
this . append ( name , headers [ name ] )
} , this )
}
function consumed ( body ) {
if ( body . bodyUsed ) return Promise . reject ( new TypeError ( "Already read" ) ) ;
body . bodyUsed = ! 0
}
function fileReaderReady ( reader ) {
return new Promise ( function ( resolve , reject ) {
reader . onload = function ( ) {
resolve ( reader . result )
} , reader . onerror = function ( ) {
reject ( reader . error )
}
} )
}
function readBlobAsArrayBuffer ( blob ) {
var reader = new FileReader ,
promise = fileReaderReady ( reader ) ;
return reader . readAsArrayBuffer ( blob ) , promise
}
function readBlobAsText ( blob ) {
var reader = new FileReader ,
promise = fileReaderReady ( reader ) ;
return reader . readAsText ( blob ) , promise
}
function readArrayBufferAsText ( buf ) {
for ( var view = new Uint8Array ( buf ) , chars = new Array ( view . length ) , i = 0 ; i < view . length ; i ++ ) chars [ i ] = String . fromCharCode ( view [ i ] ) ;
return chars . join ( "" )
}
function bufferClone ( buf ) {
if ( buf . slice ) return buf . slice ( 0 ) ;
var view = new Uint8Array ( buf . byteLength ) ;
return view . set ( new Uint8Array ( buf ) ) , view . buffer
}
function Body ( ) {
return this . bodyUsed = ! 1 , this . _initBody = function ( body ) {
if ( this . _bodyInit = body , body )
if ( "string" == typeof body ) this . _bodyText = body ;
else if ( support . blob && Blob . prototype . isPrototypeOf ( body ) ) this . _bodyBlob = body ;
else if ( support . formData && FormData . prototype . isPrototypeOf ( body ) ) this . _bodyFormData = body ;
else if ( support . searchParams && URLSearchParams . prototype . isPrototypeOf ( body ) ) this . _bodyText = body . toString ( ) ;
else if ( support . arrayBuffer && support . blob && isDataView ( body ) ) this . _bodyArrayBuffer = bufferClone ( body . buffer ) , this . _bodyInit = new Blob ( [ this . _bodyArrayBuffer ] ) ;
else {
if ( ! support . arrayBuffer || ! ArrayBuffer . prototype . isPrototypeOf ( body ) && ! isArrayBufferView ( body ) ) throw new Error ( "unsupported BodyInit type" ) ;
this . _bodyArrayBuffer = bufferClone ( body )
} else this . _bodyText = "" ;
this . headers . get ( "content-type" ) || ( "string" == typeof body ? this . headers . set ( "content-type" , "text/plain;charset=UTF-8" ) : this . _bodyBlob && this . _bodyBlob . type ? this . headers . set ( "content-type" , this . _bodyBlob . type ) : support . searchParams && URLSearchParams . prototype . isPrototypeOf ( body ) && this . headers . set ( "content-type" , "application/x-www-form-urlencoded;charset=UTF-8" ) )
} , support . blob && ( this . blob = function ( ) {
var rejected = consumed ( this ) ;
if ( rejected ) return rejected ;
if ( this . _bodyBlob ) return Promise . resolve ( this . _bodyBlob ) ;
if ( this . _bodyArrayBuffer ) return Promise . resolve ( new Blob ( [ this . _bodyArrayBuffer ] ) ) ;
if ( this . _bodyFormData ) throw new Error ( "could not read FormData body as blob" ) ;
return Promise . resolve ( new Blob ( [ this . _bodyText ] ) )
} , this . arrayBuffer = function ( ) {
return this . _bodyArrayBuffer ? consumed ( this ) || Promise . resolve ( this . _bodyArrayBuffer ) : this . blob ( ) . then ( readBlobAsArrayBuffer )
} ) , this . text = function ( ) {
var rejected = consumed ( this ) ;
if ( rejected ) return rejected ;
if ( this . _bodyBlob ) return readBlobAsText ( this . _bodyBlob ) ;
if ( this . _bodyArrayBuffer ) return Promise . resolve ( readArrayBufferAsText ( this . _bodyArrayBuffer ) ) ;
if ( this . _bodyFormData ) throw new Error ( "could not read FormData body as text" ) ;
return Promise . resolve ( this . _bodyText )
} , support . formData && ( this . formData = function ( ) {
return this . text ( ) . then ( decode )
} ) , this . json = function ( ) {
return this . text ( ) . then ( JSON . parse )
} , this
}
function normalizeMethod ( method ) {
var upcased = method . toUpperCase ( ) ;
return methods . indexOf ( upcased ) > - 1 ? upcased : method
}
function Request ( input , options ) {
options = options || { } ;
var body = options . body ;
if ( "string" == typeof input ) this . url = input ;
else {
if ( input . bodyUsed ) throw new TypeError ( "Already read" ) ;
this . url = input . url , this . credentials = input . credentials , options . headers || ( this . headers = new Headers ( input . headers ) ) , this . method = input . method , this . mode = input . mode , body || null == input . _bodyInit || ( body = input . _bodyInit , input . bodyUsed = ! 0 )
}
if ( this . credentials = options . credentials || this . credentials || "omit" , ! options . headers && this . headers || ( this . headers = new Headers ( options . headers ) ) , this . method = normalizeMethod ( options . method || this . method || "GET" ) , this . mode = options . mode || this . mode || null , this . referrer = null , ( "GET" === this . method || "HEAD" === this . method ) && body ) throw new TypeError ( "Body not allowed for GET or HEAD requests" ) ;
this . _initBody ( body )
}
function decode ( body ) {
var form = new FormData ;
return body . trim ( ) . split ( "&" ) . forEach ( function ( bytes ) {
if ( bytes ) {
var split = bytes . split ( "=" ) ,
name = split . shift ( ) . replace ( /\+/g , " " ) ,
value = split . join ( "=" ) . replace ( /\+/g , " " ) ;
form . append ( decodeURIComponent ( name ) , decodeURIComponent ( value ) )
}
} ) , form
}
function parseHeaders ( rawHeaders ) {
var headers = new Headers ;
return rawHeaders . split ( "\r\n" ) . forEach ( function ( line ) {
var parts = line . split ( ":" ) ,
key = parts . shift ( ) . trim ( ) ;
if ( key ) {
var value = parts . join ( ":" ) . trim ( ) ;
headers . append ( key , value )
}
} ) , headers
}
function Response ( bodyInit , options ) {
options || ( options = { } ) , this . type = "default" , this . status = "status" in options ? options . status : 200 , this . ok = this . status >= 200 && this . status < 300 , this . statusText = "statusText" in options ? options . statusText : "OK" , this . headers = new Headers ( options . headers ) , this . url = options . url || "" , this . _initBody ( bodyInit )
}
if ( ! self . fetch ) {
var support = {
searchParams : "URLSearchParams" in self ,
iterable : "Symbol" in self && "iterator" in Symbol ,
blob : "FileReader" in self && "Blob" in self && function ( ) {
try {
return new Blob , ! 0
} catch ( e ) {
return ! 1
}
} ( ) ,
formData : "FormData" in self ,
arrayBuffer : "ArrayBuffer" in self
} ;
if ( support . arrayBuffer ) var viewClasses = [ "[object Int8Array]" , "[object Uint8Array]" , "[object Uint8ClampedArray]" , "[object Int16Array]" , "[object Uint16Array]" , "[object Int32Array]" , "[object Uint32Array]" , "[object Float32Array]" , "[object Float64Array]" ] ,
isDataView = function ( obj ) {
return obj && DataView . prototype . isPrototypeOf ( obj )
} ,
isArrayBufferView = ArrayBuffer . isView || function ( obj ) {
return obj && viewClasses . indexOf ( Object . prototype . toString . call ( obj ) ) > - 1
} ;
Headers . prototype . append = function ( name , value ) {
name = normalizeName ( name ) , value = normalizeValue ( value ) ;
var list = this . map [ name ] ;
list || ( list = [ ] , this . map [ name ] = list ) , list . push ( value )
} , Headers . prototype . delete = function ( name ) {
delete this . map [ normalizeName ( name ) ]
} , Headers . prototype . get = function ( name ) {
var values = this . map [ normalizeName ( name ) ] ;
return values ? values [ 0 ] : null
} , Headers . prototype . getAll = function ( name ) {
return this . map [ normalizeName ( name ) ] || [ ]
} , Headers . prototype . has = function ( name ) {
return this . map . hasOwnProperty ( normalizeName ( name ) )
} , Headers . prototype . set = function ( name , value ) {
this . map [ normalizeName ( name ) ] = [ normalizeValue ( value ) ]
} , Headers . prototype . forEach = function ( callback , thisArg ) {
Object . getOwnPropertyNames ( this . map ) . forEach ( function ( name ) {
this . map [ name ] . forEach ( function ( value ) {
callback . call ( thisArg , value , name , this )
} , this )
} , this )
} , Headers . prototype . keys = function ( ) {
var items = [ ] ;
return this . forEach ( function ( value , name ) {
items . push ( name )
} ) , iteratorFor ( items )
} , Headers . prototype . values = function ( ) {
var items = [ ] ;
return this . forEach ( function ( value ) {
items . push ( value )
} ) , iteratorFor ( items )
} , Headers . prototype . entries = function ( ) {
var items = [ ] ;
return this . forEach ( function ( value , name ) {
items . push ( [ name , value ] )
} ) , iteratorFor ( items )
} , support . iterable && ( Headers . prototype [ Symbol . iterator ] = Headers . prototype . entries ) ;
var methods = [ "DELETE" , "GET" , "HEAD" , "OPTIONS" , "POST" , "PUT" ] ;
Request . prototype . clone = function ( ) {
return new Request ( this , {
body : this . _bodyInit
} )
} , Body . call ( Request . prototype ) , Body . call ( Response . prototype ) , Response . prototype . clone = function ( ) {
return new Response ( this . _bodyInit , {
status : this . status ,
statusText : this . statusText ,
headers : new Headers ( this . headers ) ,
url : this . url
} )
} , Response . error = function ( ) {
var response = new Response ( null , {
status : 0 ,
statusText : ""
} ) ;
return response . type = "error" , response
} ;
var redirectStatuses = [ 301 , 302 , 303 , 307 , 308 ] ;
Response . redirect = function ( url , status ) {
if ( - 1 === redirectStatuses . indexOf ( status ) ) throw new RangeError ( "Invalid status code" ) ;
return new Response ( null , {
status : status ,
headers : {
location : url
}
} )
} , self . Headers = Headers , self . Request = Request , self . Response = Response , self . fetch = function ( input , init ) {
return new Promise ( function ( resolve , reject ) {
var request = new Request ( input , init ) ,
xhr = new XMLHttpRequest ;
xhr . onload = function ( ) {
var options = {
status : xhr . status ,
statusText : xhr . statusText ,
headers : parseHeaders ( xhr . getAllResponseHeaders ( ) || "" )
} ;
options . url = "responseURL" in xhr ? xhr . responseURL : options . headers . get ( "X-Request-URL" ) ;
var body = "response" in xhr ? xhr . response : xhr . responseText ;
resolve ( new Response ( body , options ) )
} , xhr . onerror = function ( ) {
reject ( new TypeError ( "Network request failed" ) )
} , xhr . ontimeout = function ( ) {
reject ( new TypeError ( "Network request failed" ) )
} , xhr . open ( request . method , request . url , ! 0 ) , "include" === request . credentials && ( xhr . withCredentials = ! 0 ) , "responseType" in xhr && support . blob && ( xhr . responseType = "blob" ) , request . headers . forEach ( function ( value , name ) {
xhr . setRequestHeader ( name , value )
} ) , xhr . send ( void 0 === request . _bodyInit ? null : request . _bodyInit )
} )
} , self . fetch . polyfill = ! 0
}
} ( "undefined" != typeof self ? self : this ) ;