UNPKG

fizz-client

Version:
1 lines 387 kB
!function(f){"object"==typeof exports&&"undefined"!=typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).FizzClient=f()}(function(){return function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var p="function"==typeof require&&require;if(!f&&p)return p(i,!0);if(u)return u(i,!0);throw(p=new Error("Cannot find module '"+i+"'")).code="MODULE_NOT_FOUND",p}p=n[i]={exports:{}},e[i][0].call(p.exports,function(r){return o(e[i][1][r]||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}({1:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzChannelMessage=void 0;exports.FizzChannelMessage=class{constructor(id,from,nick,to,body,data,translations,created){this._id=id,this._from=from,this._nick=nick,this._to=to,this._body=body,this._data=data,this._translations=translations,this._created=created}getId(){return this._id}getFrom(){return this._from}getNick(){return this._nick}getTo(){return this._to}getBody(){return this._body}getData(){return this._data}getTranslations(){return this._translations}getCreated(){return this._created}}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzChatClient=void 0;const fizzUtils_1=require("../common/fizzUtils"),fizzConfig_1=require("../common/fizzConfig"),fizzChannelMessage_1=require("./fizzChannelMessage"),fizzMQTTChannelMessageListener_1=require("./fizzMQTTChannelMessageListener");class FizzChatClient extends require("../common/fizzEvents").EventEmitter{constructor(userId,sessionRepo,client,reconnectIntervalMs,reconnectCount){super(),this._client=client,this._listener=new fizzMQTTChannelMessageListener_1.FizzMqttChannelMessageListener(userId,sessionRepo,reconnectIntervalMs,reconnectCount),this._listener.on("connected",sessionPresent=>this.emit("connected",!sessionPresent)),this._listener.on("disconnected",()=>this.emit("disconnected")),this._listener.on("messagePublished",message=>this.emit("messagePublished",message)),this._listener.on("messageUpdated",message=>this.emit("messageUpdated",message)),this._listener.on("messageDeleted",message=>this.emit("messageDeleted",message)),this._listener.on("error",error=>this.emit("error",error))}get isConnected(){return this._listener.connected}publishMessage(channelId,nick,body,data,translate,filter,payload){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));payload={nick:nick,body:body,data:data,translate:translate,filter:filter,persist:payload};let posted=this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/messages",JSON.stringify(payload),{"Content-Type":"application/json"});return posted.then(response=>this.processResponse(response))}updateMessage(channelId,messageId,nick,body,data,translate,payload){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(messageId<1)return Promise.reject(new Error("invalid_message_id"));payload={nick:nick,body:body,data:data,translate:translate,filter:payload};let posted=this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/messages/"+messageId,JSON.stringify(payload),{"Content-Type":"application/json"});return posted.then(response=>this.processResponse(response))}deleteMessage(channelId,messageId){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(messageId<1)return Promise.reject(new Error("invalid_message_id"));let deleted=this._client.delete(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/messages/"+messageId,{});return deleted.then(response=>this.processResponse(response))}subscribe(channeld){if(null==channeld)return Promise.reject(new Error("invalid_channel_id"));let posted=this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channeld+"/subscribers","",{"Content-Type":"application/json"});return posted.then(response=>this.processResponse(response))}unsubscribe(channeld){if(null==channeld)return Promise.reject(new Error("invalid_channel_id"));let deleted=this._client.delete(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channeld+"/subscribers",{"Content-Type":"application/json"});return deleted.then(response=>this.processResponse(response))}queryLatest(channeld,count){return this.query(channeld,count,-1)}query(channeld,count,beforeId,afterId){if(null==channeld)return Promise.reject(new Error("invalid_channel_id"));if(count<0)return Promise.reject(new Error("invalid_message_count"));if(0==count)return Promise.resolve([]);let path="/v1/channels/"+channeld+"/messages?count="+count;0<beforeId&&(path+="&before_id="+beforeId),afterId&&0<afterId&&(path+="&after_id="+afterId);let queried=this._client.get(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,path,{});return queried.then(body=>{var[code,body]=body;if(code!=fizzUtils_1.HttpStatus.OK)throw body?new Error(body.reason):new Error("request_failed");if(body)return this.parseMessages(body);throw new Error("invalid_payload")})}ban(channelId,userId,payload){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(null==userId)return Promise.reject(new Error("invalid_user_id"));if(payload<=0)return Promise.reject(new Error("invalid_duration"));payload={user_id:userId,duration:payload};let posted=this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/bans",JSON.stringify(payload),{"Content-Type":"application/json"});return posted.then(response=>this.processResponse(response))}unban(channelId,userId){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(null==userId)return Promise.reject(new Error("invalid_user_id"));let deleted=this._client.delete(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/bans/"+userId,{});return deleted.then(response=>this.processResponse(response))}mute(channelId,userId,payload){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(null==userId)return Promise.reject(new Error("invalid_user_id"));if(payload<=0)return Promise.reject(new Error("invalid_duration"));payload={user_id:userId,duration:payload};let posted=this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/mutes",JSON.stringify(payload),{"Content-Type":"application/json"});return posted.then(response=>this.processResponse(response))}unmute(channelId,userId){if(null==channelId)return Promise.reject(new Error("invalid_channel_id"));if(null==userId)return Promise.reject(new Error("invalid_user_id"));let deleted=this._client.delete(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/channels/"+channelId+"/mutes/"+userId,{});return deleted.then(response=>this.processResponse(response))}parseMessages(messages){let result=[];for(let mi=0;mi<messages.length;mi++){var messageBuffer=messages[mi];result.push(new fizzChannelMessage_1.FizzChannelMessage(messageBuffer.id,messageBuffer.from,messageBuffer.nick,messageBuffer.to,messageBuffer.body,messageBuffer.data,messageBuffer.translations,messageBuffer.created))}return result}processResponse(body){var[code,body]=body;return code==fizzUtils_1.HttpStatus.OK?Promise.resolve():Promise.reject(new Error(body.reason))}}exports.FizzChatClient=FizzChatClient},{"../common/fizzConfig":5,"../common/fizzEvents":6,"../common/fizzUtils":9,"./fizzChannelMessage":1,"./fizzMQTTChannelMessageListener":3}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzMqttChannelMessageListener=void 0;const mqtt_1=require("mqtt");var fizzEvents_1=require("../common/fizzEvents");const fizzConfig_1=require("../common/fizzConfig"),fizzUtils_1=require("../common/fizzUtils"),fizzChannelMessage_1=require("./fizzChannelMessage");class FizzMqttClient extends fizzEvents_1.EventEmitter{constructor(host,options,reconnectIntervalMs,reconnectCount){super(),this._reconnected=0,this._reconnectIntervalMs=reconnectIntervalMs,this._reconnectCount=reconnectCount,this._client=(0,mqtt_1.connect)(host,options),this._client.on("connect",connack=>this.emit("connect",connack)),this._client.on("message",(topic,payload)=>this.emit("message",topic,payload)),this._client.on("error",error=>this.onError(error)),this._client.on("end",()=>this.emit("end")),this._client.on("offline",()=>this.emit("offline"))}static connect(host,options,reconnectIntervalMs,reconnectCount){return new FizzMqttClient(host,options,reconnectIntervalMs,reconnectCount)}get connected(){return!!this._client&&this._client.connected}end(force,opts,cb){var _a;null!==(_a=this._client)&&void 0!==_a&&_a.end(force,opts,cb)}removeListeners(){var _a;null!==(_a=this._client)&&void 0!==_a&&_a.removeAllListeners()}onError(error){4!=error.code&&this._reconnected++<this._reconnectCount?setTimeout(()=>{var _a;return null===(_a=this._client)||void 0===_a?void 0:_a.reconnect()},this._reconnectIntervalMs):this.emit("error",error)}}class FizzMqttChannelMessageListener extends fizzEvents_1.EventEmitter{constructor(userId,sessionRepo,reconnectIntervalMs,reconnectCount){super(),this._sessionRepo=sessionRepo,this._userId=userId,this._reconnectIntervalMs=reconnectIntervalMs,this._reconnectCount=reconnectCount,sessionRepo.on("updated",()=>this.onSessionUpdated()),this.fetch(reconnectCount)}get connected(){return!!this._client&&this._client.connected}onSessionUpdated(){this.disconnect().then(v=>this.connect())}disconnect(){return new Promise(resolve=>{this._client&&(this._client.removeListeners(),this._client.connected)?this._client.end(!0,void 0,()=>{resolve()}):resolve()})}connect(){null!=this._sessionRepo.session&&(this._client=FizzMqttClient.connect("wss://"+fizzConfig_1.FizzConfig.MQTT_HOST_ENDPOINT,{username:this._userId,password:this._sessionRepo.session.token,clientId:this._sessionRepo.session.subscriberId,keepalive:30,clean:!1},this._reconnectIntervalMs,this._reconnectCount),this._client.on("connect",connack=>this.onConnect(connack)),this._client.on("message",(topic,payload)=>this.onMessage(topic,payload)),this._client.on("error",error=>this.onError(error)),this._client.on("end",()=>this.onEnded()),this._client.on("offline",()=>this.onEnded()))}fetch(retry){this._sessionRepo.fetchToken((error,session)=>{!error&&null!=session||(0<retry?setTimeout(()=>this.fetch(retry-1),this._reconnectIntervalMs):this.emit("error",new Error("failed to fetch token")))})}onConnect(connack){this.emit("connected",connack.sessionPresent)}onMessage(topic,messageData){var type,message=fizzUtils_1.Utils.safeParse(messageData.toString("utf-8"));null!=message&&(type=message.type,null!=(messageData=fizzUtils_1.Utils.safeParse(message.data))&&(message=new fizzChannelMessage_1.FizzChannelMessage(message.id,message.from,messageData.nick,messageData.to,messageData.body,messageData.data,messageData.translations,message.created),"CMSGP"==type?this.emit("messagePublished",message):"CMSGU"==type?this.emit("messageUpdated",message):"CMSGD"==type&&this.emit("messageDeleted",message)))}onError(error){4==error.code?this.fetch(this._reconnectCount):this.emit("error",new Error("connection failure"))}onEnded(){this.emit("disconnected")}}exports.FizzMqttChannelMessageListener=FizzMqttChannelMessageListener},{"../common/fizzConfig":5,"../common/fizzEvents":6,"../common/fizzUtils":9,"./fizzChannelMessage":1,mqtt:148}],4:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzAuthRestClient=void 0;exports.FizzAuthRestClient=class{constructor(client,sessionRepo){this._client=client,this._sessionRepo=sessionRepo}post(host,port,path,body,headers){return this._client.post(host,port,path,body,this.authHeaders(headers)).then(response=>this.processResponse(response,()=>this._client.post(host,port,path,body,this.authHeaders(headers))))}get(host,port,path,headers){return this._client.get(host,port,path,this.authHeaders(headers)).then(response=>this.processResponse(response,()=>this._client.get(host,port,path,this.authHeaders(headers))))}delete(host,port,path,headers){return this._client.delete(host,port,path,this.authHeaders(headers)).then(response=>this.processResponse(response,()=>this._client.delete(host,port,path,this.authHeaders(headers))))}processResponse(response,retry){return 401==response[0]?new Promise((resolve,reject)=>{this._sessionRepo.fetchToken((error,token)=>{error?reject(error):retry().then(response=>resolve(response)).catch(err=>reject(err))})}):Promise.resolve(response)}authHeaders(headers){return this._sessionRepo.session&&(headers["Session-Token"]=this._sessionRepo.session.token),headers}}},{}],5:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzConfig=void 0;class FizzConfig{}(exports.FizzConfig=FizzConfig).API_BASE_URL="api.fizz.io",FizzConfig.API_BASE_PORT=443,FizzConfig.MQTT_HOST_ENDPOINT="mqtt.fizz.io:443/mqtt",FizzConfig.RECONNECT_INTERVAL_MS=1e4,FizzConfig.RECONNECT_COUNT=360},{}],6:[function(require,module,exports){"use strict";var R="object"==typeof Reflect?Reflect:null,ReflectApply=R&&"function"==typeof R.apply?R.apply:function(target,receiver,args){return Function.prototype.apply.call(target,receiver,args)};var ReflectOwnKeys=R&&"function"==typeof R.ownKeys?R.ownKeys:Object.getOwnPropertySymbols?function(target){return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))}:function(target){return Object.getOwnPropertyNames(target)},NumberIsNaN=Number.isNaN||function(value){return value!=value};function EventEmitter(){EventEmitter.init.call(this)}((module.exports=EventEmitter).EventEmitter=EventEmitter).prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var defaultMaxListeners=10;function checkListener(listener){if("function"!=typeof listener)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof listener)}function _getMaxListeners(that){return void 0===that._maxListeners?EventEmitter.defaultMaxListeners:that._maxListeners}function _addListener(target,type,warning,prepend){var events,existing;return checkListener(warning),void 0===(events=target._events)?(events=target._events=Object.create(null),target._eventsCount=0):(void 0!==events.newListener&&(target.emit("newListener",type,warning.listener||warning),events=target._events),existing=events[type]),void 0===existing?(existing=events[type]=warning,++target._eventsCount):("function"==typeof existing?existing=events[type]=prepend?[warning,existing]:[existing,warning]:prepend?existing.unshift(warning):existing.push(warning),0<(warning=_getMaxListeners(target))&&existing.length>warning&&!existing.warned&&(existing.warned=!0,(warning=new Error("Possible EventEmitter memory leak detected. "+existing.length+" "+String(type)+" listeners added. Use emitter.setMaxListeners() to increase limit")).name="MaxListenersExceededWarning",warning.emitter=target,warning.type=type,warning.count=existing.length,warning=warning,console&&console.warn&&console.warn(warning))),target}function _onceWrap(state,wrapped,listener){state={fired:!1,wrapFn:void 0,target:state,type:wrapped,listener:listener},wrapped=function(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}.bind(state);return wrapped.listener=listener,state.wrapFn=wrapped}function _listeners(events,evlistener,unwrap){events=events._events;if(void 0===events)return[];evlistener=events[evlistener];return void 0===evlistener?[]:"function"==typeof evlistener?unwrap?[evlistener.listener||evlistener]:[evlistener]:unwrap?function(arr){for(var ret=new Array(arr.length),i=0;i<ret.length;++i)ret[i]=arr[i].listener||arr[i];return ret}(evlistener):arrayClone(evlistener,evlistener.length)}function listenerCount(evlistener){var events=this._events;if(void 0!==events){evlistener=events[evlistener];if("function"==typeof evlistener)return 1;if(void 0!==evlistener)return evlistener.length}return 0}function arrayClone(arr,n){for(var copy=new Array(n),i=0;i<n;++i)copy[i]=arr[i];return copy}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(arg){if("number"!=typeof arg||arg<0||NumberIsNaN(arg))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+arg+".");defaultMaxListeners=arg}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function(n){if("number"!=typeof n||n<0||NumberIsNaN(n))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+n+".");return this._maxListeners=n,this},EventEmitter.prototype.getMaxListeners=function(){return _getMaxListeners(this)},EventEmitter.prototype.emit=function(handler){for(var args=[],i=1;i<arguments.length;i++)args.push(arguments[i]);var er,err="error"===handler,events=this._events;if(void 0!==events)err=err&&void 0===events.error;else if(!err)return!1;if(err){if((er=0<args.length?args[0]:er)instanceof Error)throw er;err=new Error("Unhandled error."+(er?" ("+er.message+")":""));throw err.context=er,err}handler=events[handler];if(void 0===handler)return!1;if("function"==typeof handler)ReflectApply(handler,this,args);else for(var len=handler.length,listeners=arrayClone(handler,len),i=0;i<len;++i)ReflectApply(listeners[i],this,args);return!0},EventEmitter.prototype.on=EventEmitter.prototype.addListener=function(type,listener){return _addListener(this,type,listener,!1)},EventEmitter.prototype.prependListener=function(type,listener){return _addListener(this,type,listener,!0)},EventEmitter.prototype.once=function(type,listener){return checkListener(listener),this.on(type,_onceWrap(this,type,listener)),this},EventEmitter.prototype.prependOnceListener=function(type,listener){return checkListener(listener),this.prependListener(type,_onceWrap(this,type,listener)),this},EventEmitter.prototype.removeListener=function(type,listener){var list,events,position,i,originalListener;if(checkListener(listener),void 0===(events=this._events))return this;if(void 0===(list=events[type]))return this;if(list===listener||list.listener===listener)0==--this._eventsCount?this._events=Object.create(null):(delete events[type],events.removeListener&&this.emit("removeListener",type,list.listener||listener));else if("function"!=typeof list){for(position=-1,i=list.length-1;0<=i;i--)if(list[i]===listener||list[i].listener===listener){originalListener=list[i].listener,position=i;break}if(position<0)return this;0===position?list.shift():function(list,index){for(;index+1<list.length;index++)list[index]=list[index+1];list.pop()}(list,position),1===list.length&&(events[type]=list[0]),void 0!==events.removeListener&&this.emit("removeListener",type,originalListener||listener)}return this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.removeAllListeners=function(type){var listeners,events=this._events;if(void 0===events)return this;if(void 0===events.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==events[type]&&(0==--this._eventsCount?this._events=Object.create(null):delete events[type]),this;if(0===arguments.length){for(var key,keys=Object.keys(events),i=0;i<keys.length;++i)"removeListener"!==(key=keys[i])&&this.removeAllListeners(key);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(listeners=events[type]))this.removeListener(type,listeners);else if(void 0!==listeners)for(i=listeners.length-1;0<=i;i--)this.removeListener(type,listeners[i]);return this},EventEmitter.prototype.listeners=function(type){return _listeners(this,type,!0)},EventEmitter.prototype.rawListeners=function(type){return _listeners(this,type,!1)},EventEmitter.listenerCount=function(emitter,type){return"function"==typeof emitter.listenerCount?emitter.listenerCount(type):listenerCount.call(emitter,type)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function(){return 0<this._eventsCount?ReflectOwnKeys(this._events):[]}},{}],7:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzRestClient=exports.FizzRestResponse=void 0;const axios=require("axios");exports.FizzRestResponse=class{constructor(code,body){this.code=code,this.body=body}};class FizzRestClient{post(host,port,path,body,headers){return new Promise((resolve,reject)=>{axios.default.request({method:"POST",baseURL:"https://"+host+":"+port+"/",url:path,data:body,headers:headers,timeout:FizzRestClient.REQ_TIMEOUT}).then(response=>resolve([response.status,response.data])).catch(err=>{err.response?resolve([err.response.status,err.response.data]):reject(err)})})}get(host,port,path,headers){return new Promise((resolve,reject)=>{axios.default.request({method:"GET",baseURL:"https://"+host+":"+port+"/",url:path,headers:headers,timeout:FizzRestClient.REQ_TIMEOUT}).then(response=>resolve([response.status,response.data])).catch(err=>{err.response?resolve([err.response.status,err.response.data]):reject(err)})})}delete(host,port,path,headers){return new Promise((resolve,reject)=>{axios.default.request({method:"DELETE",baseURL:"https://"+host+":"+port+"/",url:path,headers:headers,timeout:FizzRestClient.REQ_TIMEOUT}).then(response=>resolve([response.status,response.data])).catch(err=>{err.response?resolve([err.response.status,err.response.data]):reject(err)})})}}(exports.FizzRestClient=FizzRestClient).REQ_TIMEOUT=1e4},{axios:14}],8:[function(EventEmitter,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzSessionRepository=exports.FizzSession=void 0;EventEmitter=EventEmitter("../common/fizzEvents");exports.FizzSession=class{constructor(token,subscriberId,now){this._token=token,this._subscriberId=subscriberId,this._now=now}get token(){return this._token}get subscriberId(){return this._subscriberId}get now(){return this._now}};class FizzSessionRepository extends EventEmitter{constructor(provider){super(),this._requests=[],this._provider=provider}get session(){return this._session}fetchToken(onDone){this._requests.push(onDone),1<this._requests.length||this._provider().then(session=>{this._session=session;for(let pi=0;pi<this._requests.length;pi++)this._requests[pi](void 0,session);this._requests=[],this.emit("updated",session)}).catch(err=>{for(let pi=0;pi<this._requests.length;pi++)this._requests[pi](err);this._requests=[]})}}exports.FizzSessionRepository=FizzSessionRepository},{"../common/fizzEvents":6}],9:[function(require,module,exports){"use strict";var HttpStatus;Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utils=exports.HttpStatus=void 0,function(HttpStatus){HttpStatus[HttpStatus.OK=200]="OK",HttpStatus[HttpStatus.UNAUTHORIZED=401]="UNAUTHORIZED"}(HttpStatus=exports.HttpStatus||(exports.HttpStatus={}));exports.Utils=class{static safeParse(json){try{return JSON.parse(json)}catch(error){return}}static processResponse(body){var[code,body]=body;return code==HttpStatus.OK?Promise.resolve():Promise.reject(new Error(body.reason))}}},{}],10:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzAnalytics=void 0;const fizzConfig_1=require("./common/fizzConfig"),fizzUtils_1=require("./common/fizzUtils");exports.FizzAnalytics=class{constructor(client,sessionRepository){this._client=client,this._sessionRespository=sessionRepository,this._build="",this._custom_01="",this._custom_02="",this._custom_03="",this._retry=2}getBuildParams(){let bp={};return""!==this._build&&(bp.build=this._build),""!==this._custom_01&&(bp.custom_custom_01=this._custom_01),""!==this._custom_02&&(bp.custom_custom_02=this._custom_02),""!==this._custom_03&&(bp.custom_custom_03=this._custom_03),bp}sessionStarted(userId){var session=this._sessionRespository.session,event=this.getBuildParams(),event=Object.assign({user_id:userId,type:"session_started",ver:1,session_id:null==session?void 0:session.subscriberId,time:null==session?void 0:session.now,platform:"web_player"},event);return this.postEvents([event],this._retry)}messageSent(userId,content,channelId,nick){var session=this._sessionRespository.session,event=this.getBuildParams(),event=Object.assign({user_id:userId,type:"text_msg_sent",ver:1,session_id:null==session?void 0:session.subscriberId,time:null==session?void 0:session.now,platform:"web_player",content:content,channel_id:channelId,nick:nick},event);this.postEvents([event],this._retry)}sessionEnded(userId,duration){var session=this._sessionRespository.session,event=this.getBuildParams(),event=Object.assign({user_id:userId,type:"session_ended",ver:1,session_id:null==session?void 0:session.subscriberId,time:null==session?void 0:session.now,duration:duration},event);this.postEvents([event],this._retry)}productPurchased(userId,productId,amount,currency){var session=this._sessionRespository.session,event=this.getBuildParams(),event=Object.assign({user_id:userId,type:"product_purchased",ver:1,session_id:null==session?void 0:session.subscriberId,time:null==session?void 0:session.now,product_id:productId,amount:amount,currency:currency},event);this.postEvents([event],this._retry)}setBuildVer(build){this._build=build}setCustomDim01(custom_01){this._custom_01=custom_01}setCustomDim02(custom_02){this._custom_02=custom_02}setCustomDim03(custom_03){this._custom_03=custom_03}postEvents(events,retry){console.log("post events: "+events);var payload=events;return this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/events",JSON.stringify(payload),{"Content-Type":"application/json"}).then(body=>{var[status,body]=body;status!=fizzUtils_1.HttpStatus.OK&&(console.log(body.reason),0<retry&&setTimeout(()=>this.postEvents(events,retry-1),5e3))}).catch(err=>{console.log(err),0<retry&&setTimeout(()=>this.postEvents(events,retry-1),5e3)})}}},{"./common/fizzConfig":5,"./common/fizzUtils":9}],11:[function(require,module,exports){"use strict";const createHmac=require("create-hmac"),fizzRestClient_1=require("./common/fizzRestClient"),fizzChatClient_1=require("./chat/fizzChatClient"),fizzSessionRepository_1=require("./common/fizzSessionRepository"),fizzAuthRestClient_1=require("./common/fizzAuthRestClient"),fizzConfig_1=require("./common/fizzConfig"),FizzOptions=require("./fizzOptions"),fizzModeration_1=require("./fizzModeration"),fizzAnalytics_1=require("./fizzAnalytics");class FizzClient{constructor(userId,provider,options){this._sessionRepo=new fizzSessionRepository_1.FizzSessionRepository(provider),this._authRestClient=new fizzAuthRestClient_1.FizzAuthRestClient(new fizzRestClient_1.FizzRestClient,this._sessionRepo),this._chatClient=new fizzChatClient_1.FizzChatClient(userId,this._sessionRepo,this._authRestClient,options.reconnectIntervalMs,options.reconnectCount),this._moderationClient=new fizzModeration_1.FizzModeration(this._authRestClient),this._analyticsClient=new fizzAnalytics_1.FizzAnalytics(this._authRestClient,this._sessionRepo),this._sessionRepo.on("updated",()=>this._analyticsClient.sessionStarted(userId))}static createOptions(){return new FizzOptions}static create(appId,appSecret,userId,locale,options){return FizzClient.createWithProvider(appId,userId,()=>FizzClient.defaultProvider(appId,appSecret,userId,locale),options)}static createWithProvider(appId,userId,provider,client){if(null==appId)return Promise.reject("invalid_app_id");if(null==provider)return Promise.reject("invalid_provider");client=new FizzClient(userId,provider,client||new FizzOptions);return Promise.resolve(client)}get chat(){return this._chatClient}get moderation(){return this._moderationClient}get analytics(){return this._analyticsClient}static defaultProvider(appId,headers,userId,body){body=JSON.stringify({user_id:userId,app_id:appId,locale:body}),headers={"Content-Type":"application/json",Authorization:"HMAC-SHA256 "+createHmac("sha256",headers).update(body).digest("base64")};const sent=FizzClient.restClient.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/sessions",body,headers);return sent.then(body=>{var[code,body]=body;if(null==body)throw new Error("invalid_response");if(200!=code)throw new Error(body.reason);return new fizzSessionRepository_1.FizzSession(body.token,body.subscriber_id,body.now_ts)})}}FizzClient.restClient=new fizzRestClient_1.FizzRestClient,module.exports=FizzClient},{"./chat/fizzChatClient":2,"./common/fizzAuthRestClient":4,"./common/fizzConfig":5,"./common/fizzRestClient":7,"./common/fizzSessionRepository":8,"./fizzAnalytics":10,"./fizzModeration":12,"./fizzOptions":13,"create-hmac":48}],12:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FizzModeration=void 0;const fizzConfig_1=require("./common/fizzConfig"),fizzUtils_1=require("./common/fizzUtils");exports.FizzModeration=class{constructor(client){this._client=client}reportChatMessage(channelId,message,messageId,language,userId,offense,description,payload){payload={channel_id:channelId,message:message,message_id:messageId,language:language,user_id:userId,offense:offense,description:description,time:payload};return this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/reports",JSON.stringify(payload),{"Content-Type":"application/json"}).then(response=>fizzUtils_1.Utils.processResponse(response))}moderateTexts(texts){return this._client.post(fizzConfig_1.FizzConfig.API_BASE_URL,fizzConfig_1.FizzConfig.API_BASE_PORT,"/v1/moderatedTexts",JSON.stringify(texts),{"Content-Type":"application/json"}).then(body=>{var[status,body]=body;return status==fizzUtils_1.HttpStatus.OK?Promise.resolve(body):Promise.reject(new Error(body.reason))})}}},{"./common/fizzConfig":5,"./common/fizzUtils":9}],13:[function(require,module,exports){"use strict";const fizzConfig_1=require("./common/fizzConfig");module.exports=class{constructor(){this._reconnectIntervalMs=fizzConfig_1.FizzConfig.RECONNECT_INTERVAL_MS,this._reconnectCount=fizzConfig_1.FizzConfig.RECONNECT_COUNT}get reconnectIntervalMs(){return this._reconnectIntervalMs||fizzConfig_1.FizzConfig.RECONNECT_INTERVAL_MS}set reconnectIntervalMs(value){this._reconnectIntervalMs=value}get reconnectCount(){return this._reconnectCount||fizzConfig_1.FizzConfig.RECONNECT_COUNT}set reconnectCount(value){this._reconnectCount=value}}},{"./common/fizzConfig":5}],14:[function(require,module,exports){module.exports=require("./lib/axios")},{"./lib/axios":16}],15:[function(require,module,exports){"use strict";var utils=require("./../utils"),settle=require("./../core/settle"),buildURL=require("./../helpers/buildURL"),buildFullPath=require("../core/buildFullPath"),parseHeaders=require("./../helpers/parseHeaders"),isURLSameOrigin=require("./../helpers/isURLSameOrigin"),createError=require("../core/createError");module.exports=function(config){return new Promise(function(resolve,reject){var requestData=config.data,requestHeaders=config.headers;utils.isFormData(requestData)&&delete requestHeaders["Content-Type"];var request=new XMLHttpRequest;config.auth&&(fullPath=config.auth.username||"",xsrfValue=config.auth.password||"",requestHeaders.Authorization="Basic "+btoa(fullPath+":"+xsrfValue));var xsrfValue,fullPath=buildFullPath(config.baseURL,config.url);if(request.open(config.method.toUpperCase(),buildURL(fullPath,config.params,config.paramsSerializer),!0),request.timeout=config.timeout,request.onreadystatechange=function(){var response;request&&4===request.readyState&&(0!==request.status||request.responseURL&&0===request.responseURL.indexOf("file:"))&&(response="getAllResponseHeaders"in request?parseHeaders(request.getAllResponseHeaders()):null,response={data:config.responseType&&"text"!==config.responseType?request.response:request.responseText,status:request.status,statusText:request.statusText,headers:response,config:config,request:request},settle(resolve,reject,response),request=null)},request.onabort=function(){request&&(reject(createError("Request aborted",config,"ECONNABORTED",request)),request=null)},request.onerror=function(){reject(createError("Network Error",config,null,request)),request=null},request.ontimeout=function(){var timeoutErrorMessage="timeout of "+config.timeout+"ms exceeded";config.timeoutErrorMessage&&(timeoutErrorMessage=config.timeoutErrorMessage),reject(createError(timeoutErrorMessage,config,"ECONNABORTED",request)),request=null},utils.isStandardBrowserEnv()&&(xsrfValue=require("./../helpers/cookies"),(xsrfValue=(config.withCredentials||isURLSameOrigin(fullPath))&&config.xsrfCookieName?xsrfValue.read(config.xsrfCookieName):void 0)&&(requestHeaders[config.xsrfHeaderName]=xsrfValue)),"setRequestHeader"in request&&utils.forEach(requestHeaders,function(val,key){void 0===requestData&&"content-type"===key.toLowerCase()?delete requestHeaders[key]:request.setRequestHeader(key,val)}),utils.isUndefined(config.withCredentials)||(request.withCredentials=!!config.withCredentials),config.responseType)try{request.responseType=config.responseType}catch(e){if("json"!==config.responseType)throw e}"function"==typeof config.onDownloadProgress&&request.addEventListener("progress",config.onDownloadProgress),"function"==typeof config.onUploadProgress&&request.upload&&request.upload.addEventListener("progress",config.onUploadProgress),config.cancelToken&&config.cancelToken.promise.then(function(cancel){request&&(request.abort(),reject(cancel),request=null)}),void 0===requestData&&(requestData=null),request.send(requestData)})}},{"../core/buildFullPath":22,"../core/createError":23,"./../core/settle":27,"./../helpers/buildURL":31,"./../helpers/cookies":33,"./../helpers/isURLSameOrigin":35,"./../helpers/parseHeaders":37,"./../utils":39}],16:[function(require,module,exports){"use strict";var utils=require("./utils"),bind=require("./helpers/bind"),Axios=require("./core/Axios"),mergeConfig=require("./core/mergeConfig");function createInstance(instance){var context=new Axios(instance),instance=bind(Axios.prototype.request,context);return utils.extend(instance,Axios.prototype,context),utils.extend(instance,context),instance}var axios=createInstance(require("./defaults"));axios.Axios=Axios,axios.create=function(instanceConfig){return createInstance(mergeConfig(axios.defaults,instanceConfig))},axios.Cancel=require("./cancel/Cancel"),axios.CancelToken=require("./cancel/CancelToken"),axios.isCancel=require("./cancel/isCancel"),axios.all=function(promises){return Promise.all(promises)},axios.spread=require("./helpers/spread"),module.exports=axios,module.exports.default=axios},{"./cancel/Cancel":17,"./cancel/CancelToken":18,"./cancel/isCancel":19,"./core/Axios":20,"./core/mergeConfig":26,"./defaults":29,"./helpers/bind":30,"./helpers/spread":38,"./utils":39}],17:[function(require,module,exports){"use strict";function Cancel(message){this.message=message}Cancel.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Cancel.prototype.__CANCEL__=!0,module.exports=Cancel},{}],18:[function(require,module,exports){"use strict";var Cancel=require("./Cancel");function CancelToken(executor){if("function"!=typeof executor)throw new TypeError("executor must be a function.");var resolvePromise;this.promise=new Promise(function(resolve){resolvePromise=resolve});var token=this;executor(function(message){token.reason||(token.reason=new Cancel(message),resolvePromise(token.reason))})}CancelToken.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},CancelToken.source=function(){var cancel;return{token:new CancelToken(function(c){cancel=c}),cancel:cancel}},module.exports=CancelToken},{"./Cancel":17}],19:[function(require,module,exports){"use strict";module.exports=function(value){return!(!value||!value.__CANCEL__)}},{}],20:[function(require,module,exports){"use strict";var utils=require("./../utils"),buildURL=require("../helpers/buildURL"),InterceptorManager=require("./InterceptorManager"),dispatchRequest=require("./dispatchRequest"),mergeConfig=require("./mergeConfig");function Axios(instanceConfig){this.defaults=instanceConfig,this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}Axios.prototype.request=function(config){"string"==typeof config?(config=arguments[1]||{}).url=arguments[0]:config=config||{},(config=mergeConfig(this.defaults,config)).method?config.method=config.method.toLowerCase():this.defaults.method?config.method=this.defaults.method.toLowerCase():config.method="get";var chain=[dispatchRequest,void 0],promise=Promise.resolve(config);for(this.interceptors.request.forEach(function(interceptor){chain.unshift(interceptor.fulfilled,interceptor.rejected)}),this.interceptors.response.forEach(function(interceptor){chain.push(interceptor.fulfilled,interceptor.rejected)});chain.length;)promise=promise.then(chain.shift(),chain.shift());return promise},Axios.prototype.getUri=function(config){return config=mergeConfig(this.defaults,config),buildURL(config.url,config.params,config.paramsSerializer).replace(/^\?/,"")},utils.forEach(["delete","get","head","options"],function(method){Axios.prototype[method]=function(url,config){return this.request(utils.merge(config||{},{method:method,url:url}))}}),utils.forEach(["post","put","patch"],function(method){Axios.prototype[method]=function(url,data,config){return this.request(utils.merge(config||{},{method:method,url:url,data:data}))}}),module.exports=Axios},{"../helpers/buildURL":31,"./../utils":39,"./InterceptorManager":21,"./dispatchRequest":24,"./mergeConfig":26}],21:[function(require,module,exports){"use strict";var utils=require("./../utils");function InterceptorManager(){this.handlers=[]}InterceptorManager.prototype.use=function(fulfilled,rejected){return this.handlers.push({fulfilled:fulfilled,rejected:rejected}),this.handlers.length-1},InterceptorManager.prototype.eject=function(id){this.handlers[id]&&(this.handlers[id]=null)},InterceptorManager.prototype.forEach=function(fn){utils.forEach(this.handlers,function(h){null!==h&&fn(h)})},module.exports=InterceptorManager},{"./../utils":39}],22:[function(require,module,exports){"use strict";var isAbsoluteURL=require("../helpers/isAbsoluteURL"),combineURLs=require("../helpers/combineURLs");module.exports=function(baseURL,requestedURL){return baseURL&&!isAbsoluteURL(requestedURL)?combineURLs(baseURL,requestedURL):requestedURL}},{"../helpers/combineURLs":32,"../helpers/isAbsoluteURL":34}],23:[function(require,module,exports){"use strict";var enhanceError=require("./enhanceError");module.exports=function(error,config,code,request,response){error=new Error(error);return enhanceError(error,config,code,request,response)}},{"./enhanceError":25}],24:[function(require,module,exports){"use strict";var utils=require("./../utils"),transformData=require("./transformData"),isCancel=require("../cancel/isCancel"),defaults=require("../defaults");function throwIfCancellationRequested(config){config.cancelToken&&config.cancelToken.throwIfRequested()}module.exports=function(config){return throwIfCancellationRequested(config),config.headers=config.headers||{},config.data=transformData(config.data,config.headers,config.transformRequest),config.headers=utils.merge(config.headers.common||{},config.headers[config.method]||{},config.headers),utils.forEach(["delete","get","head","post","put","patch","common"],function(method){delete config.headers[method]}),(config.adapter||defaults.adapter)(config).then(function(response){return throwIfCancellationRequested(config),response.data=transformData(response.data,response.headers,config.transformResponse),response},function(reason){return isCancel(reason)||(throwIfCancellationRequested(config),reason&&reason.response&&(reason.response.data=transformData(reason.response.data,reason.response.headers,config.transformResponse))),Promise.reject(reason)})}},{"../cancel/isCancel":19,"../defaults":29,"./../utils":39,"./transformData":28}],25:[function(require,module,exports){"use strict";module.exports=function(error,config,code,request,response){return error.config=config,code&&(error.code=code),error.request=request,error.response=response,error.isAxiosError=!0,error.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},error}},{}],26:[function(require,module,exports){"use strict";var utils=require("../utils");module.exports=function(config1,config2){config2=config2||{};var config={},valueFromConfig2Keys=["url","method","params","data"],mergeDeepPropertiesKeys=["headers","auth","proxy"],otherKeys=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];utils.forEach(valueFromConfig2Keys,function(prop){void 0!==config2[prop]&&(config[prop]=config2[prop])}),utils.forEach(mergeDeepPropertiesKeys,function(prop){utils.isObject(config2[prop])?config[prop]=utils.deepMerge(config1[prop],config2[prop]):void 0!==config2[prop]?config[prop]=config2[prop]:utils.isObject(config1[prop])?config[prop]=utils.deepMerge(config1[prop]):void 0!==config1[prop]&&(config[prop]=config1[prop])}),utils.forEach(otherKeys,function(prop){void 0!==config2[prop]?config[prop]=config2[prop]:void 0!==config1[prop]&&(config[prop]=config1[prop])});var axiosKeys=valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(otherKeys),otherKeys=Object.keys(config2).filter(function(key){return-1===axiosKeys.indexOf(key)});return utils.forEach(otherKeys,function(prop){void 0!==config2[prop]?config[prop]=config2[prop]:void 0!==config1[prop]&&(config[prop]=config1[prop])}),config}},{"../utils":39}],27:[function(require,module,exports){"use strict";var createError=require("./createError");module.exports=function(resolve,reject,response){var validateStatus=response.config.validateStatus;!validateStatus||validateStatus(response.status)?resolve(response):reject(createError("Request failed with status code "+response.status,response.config,null,response.request,response))}},{"./createError":23}],28:[function(require,module,exports){"use strict";var utils=require("./../utils");module.exports=function(data,headers,fns){return utils.forEach(fns,function(fn){data=fn(data,headers)}),data}},{"./../utils":39}],29:[function(require,module,exports){!function(process){!function(){"use strict";var utils=require("./utils"),normalizeHeaderName=require("./helpers/normalizeHeaderName"),DEFAULT_CONTENT_TYPE={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(headers,value){!utils.isUndefined(headers)&&utils.isUndefined(headers["Content-Type"])&&(headers["Content-Type"]=value)}var adapter,defaults={adapter:("undefined"!=typeof XMLHttpRequest?adapter=require("./adapters/xhr"):void 0!==process&&"[object process]"===Object.prototype.toString.call(process)&&(adapter=require("./adapters/http")),adapter),transformRequest:[function(data,headers){return normalizeHeaderName(headers,"Accept"),normalizeHeaderName(headers,"Content-Type"),utils.isFormData(data)||utils.isArrayBuffer(data)||utils.isBuffer(data)||utils.isStream(data)||utils.isFile(data)||utils.isBlob(data)?data:utils.isArrayBufferView(data)?data.buffer:utils.isURLSearchParams(data)?(setContentTypeIfUnset(headers,"application/x-www-form-urlencoded;charset=utf-8"),data.toString()):utils.isObject(data)?(setContentTypeIfUnset(headers,"application/json;charset=utf-8"),JSON.stringify(data)):data}],transformResponse:[function(data){if("string"==typeof data)try{data=JSON.parse(data)}catch(e){}return data}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(status){return 200<=status&&status<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};utils.forEach(["delete","get","head"],function(method){defaults.headers[method]={}}),utils.forEach(["post","put","patch"],function(method){defaults.headers[method]=utils.merge(DEFAULT_CONTENT_TYPE)}),module.exports=defaults}.call(this)}.call(this,require("_process"))},{"./adapters/http":15,"./adapters/xhr":15,"./helpers/normalizeHeaderName":36,"./utils":39,_process:168}],30:[function(require,module,exports){"use strict";module.exports=function(fn,thisArg){return function(){for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];return fn.apply(thisArg,args)}}},{}],31:[function(require,module,exports){"use strict";var utils=require("./../utils");function encode(val){return encodeURIComponent(val).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}module.exports=function(url,hashmarkIndex,serializedParams){if(!hashmarkIndex)return url;var parts,serializedParams=serializedParams?serializedParams(hashmarkIndex):utils.isURLSearchParams(hashmarkIndex)?hashmarkIndex.toString():(parts=[],utils.forEach(hashmarkIndex,function(val,key){null!=val&&(utils.isArray(val)?key+="[]":val=[val],utils.forEach(val,function(v){utils.isDate(v)?v=v.toISOString():utils.isObject(v)&&(v=JSON.stringify(v)),parts.push(encode(key)+"="+encode(v))}))}),parts.join("&"));return serializedParams&&(-1!==(hashmarkIndex=url.indexOf("#"))&&(url=url.slice(0,hashmarkIndex)),url+=(-1===url.indexOf("?")?"?":"&")+serializedParams),url}},{"./../utils":39}],32:[function(require,module,exports){"use strict";module.exports=function(baseURL,relativeURL){return relativeURL?baseURL.replace(/\/+$/,"")+"/"+relativeURL.replace(/^\/+/,""):baseURL}},{}],33:[function(require,module,exports){"use strict";var utils=require("./../utils");module.exports=utils.isStandardBrowserEnv()?{write:function(name,value,expires,path,domain,secure){var cookie=[];cookie.push(name+"="+encodeURIComponent(value)),utils.isNumber(expires)&&cookie.push("expires="+new Date(expires).toGMTString()),utils.isString(path)&&cookie.push("path="+path),utils.isString(domain)&&cookie.push("domain="+domain),!0===secure&&cookie.push("secure"),document.cookie=cookie.join("; ")},read:function(match){match=document.cookie.match(new RegExp("(^|;\\s*)("+match+")=([^;]*)"));return match?decodeURIComponent(match[3]):null},remove:function(name){this.write(name,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},{"./../utils":39}],34:[function(require,module,exports){"use strict";module.exports=function(url){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url)}},{}],35:[function(require,module,exports){"use strict";var originURL,msie,urlParsingNode,utils=require("./../utils");function resolveURL(href){return msie&&(urlParsingNode.setAttribute("href",href),href=urlParsingNode.href),urlParsingNode.setAttribute("href",href),{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,""):"",host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,""):"",hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,""):"",hostname:urlParsingNode.hostname,port:urlParsingNode.port,pathname:"/"===urlParsingNode.pathname.charAt(0)?urlParsingNode.pathname:"/"+urlParsingNode.pathname}}module.exports=utils.isStandardBrowserEnv()?(msie=/(msie|trident)/i.test(navigator.userAgent),urlParsingNode=document.createElement("a"),originURL=resolveURL(window.location.href),function(parsed){parsed=utils.isString(parsed)?resolveURL(parsed):parsed;return parsed.protocol===originURL.protocol&&parsed.host===originURL.host}):function(){return!0}},{"./../utils":39}],36:[function(require,module,exports){"use strict";var utils=require("../utils");module.exports=function(headers,normalizedName){utils.forEach(headers,function(value,name){name!==normalizedName&&name.toUpperCase()===normalizedName.toUpperCase()&&(headers[normalizedName]=value,delete headers[name])})}},{"../utils":39}],37:[function(require,module,exports){"use strict";var utils=require("./../utils"),ignoreDuplicateOf=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];module.exports=function(headers){var key,val,parsed={};return headers&&utils.forEach(headers.split("\n"),function(line){val=line.indexOf(":"),key=utils.trim(line.substr(0,val)).toLowerCase(),val=utils.trim(line.substr(val+1)),key&&(parsed[key]&&0<=ignoreDuplicateOf.indexOf(key)||(parsed[key]="set-cookie"===key?(parsed[key]||[]).concat([val]):parsed[key]?parsed[key]+", "+val:val))}),parsed}},{"./../utils":39}],38:[function(require,module,exports){"use strict";module.exports=function(callback){return function(arr){return callback.apply(null,arr)}}},{}],39:[function(require,module,exports){"use strict";var bind=require("./helpers/bind"),toString=Object.prototype.toString;function isArray(val){return"[object Array]"===toString.call(val)}function isUndefined