You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-28 05:03:59 +03:00
3 lines
71 KiB
JavaScript
3 lines
71 KiB
JavaScript
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var httpApi=require("./http-api");var MatrixEvent=require("./models/event").MatrixEvent;var Room=require("./models/room");var User=require("./models/user");var MatrixInMemoryStore=require("./store/memory").MatrixInMemoryStore;var utils=require("./utils");function MatrixClient(opts){utils.checkObjectHasKeys(opts,["baseUrl","request"]);utils.checkObjectHasNoAdditionalKeys(opts,["baseUrl","request","accessToken","userId","store"]);this.store=opts.store||new MatrixInMemoryStore;this.fromToken=undefined;this.clientRunning=false;var httpOpts={baseUrl:opts.baseUrl,accessToken:opts.accessToken,request:opts.request,prefix:httpApi.PREFIX_V1,onlyData:true};this.credentials={userId:opts.userId||null};this._http=new httpApi.MatrixHttpApi(httpOpts)}utils.inherits(MatrixClient,EventEmitter);MatrixClient.prototype.getRoom=function(roomId){if(!this.store){return null}return this.store.getRoom(roomId)};MatrixClient.prototype.getRooms=function(){if(!this.store){return[]}return this.store.getRooms()};MatrixClient.prototype.createRoom=function(options,callback){return this._http.authedRequest(callback,"POST","/createRoom",undefined,options)};MatrixClient.prototype.joinRoom=function(roomIdOrAlias,callback){var path=utils.encodeUri("/join/$roomid",{$roomid:roomIdOrAlias});return this._http.authedRequest(callback,"POST",path,undefined,{})};MatrixClient.prototype.setRoomName=function(roomId,name,callback){return this.sendStateEvent(roomId,"m.room.name",{name:name},undefined,callback)};MatrixClient.prototype.setRoomTopic=function(roomId,topic,callback){return this.sendStateEvent(roomId,"m.room.topic",{topic:topic},undefined,callback)};MatrixClient.prototype.setPowerLevel=function(roomId,userId,powerLevel,event,callback){var content={users:{}};if(event&&event.type==="m.room.power_levels"){content=event.content}content.users[userId]=powerLevel;var path=utils.encodeUri("/rooms/$roomId/state/m.room.power_levels",{$roomId:roomId});return this._http.authedRequest(callback,"PUT",path,undefined,content)};MatrixClient.prototype.getStateEvent=function(roomId,eventType,stateKey,callback){var pathParams={$roomId:roomId,$eventType:eventType,$stateKey:stateKey};var path=utils.encodeUri("/rooms/$roomId/state/$eventType",pathParams);if(stateKey!==undefined){path=utils.encodeUri(path+"/$stateKey",pathParams)}return this._http.authedRequest(callback,"GET",path)};MatrixClient.prototype.sendStateEvent=function(roomId,eventType,content,stateKey,callback){var pathParams={$roomId:roomId,$eventType:eventType,$stateKey:stateKey};var path=utils.encodeUri("/rooms/$roomId/state/$eventType",pathParams);if(stateKey!==undefined){path=utils.encodeUri(path+"/$stateKey",pathParams)}return this._http.authedRequest(callback,"PUT",path,undefined,content)};MatrixClient.prototype.sendEvent=function(roomId,eventType,content,txnId,callback){if(utils.isFunction(txnId)){callback=txnId;txnId=undefined}if(!txnId){txnId="m"+(new Date).getTime()}var path=utils.encodeUri("/rooms/$roomId/send/$eventType/$txnId",{$roomId:roomId,$eventType:eventType,$txnId:txnId});return this._http.authedRequest(callback,"PUT",path,undefined,content)};MatrixClient.prototype.sendMessage=function(roomId,content,txnId,callback){if(utils.isFunction(txnId)){callback=txnId;txnId=undefined}return this.sendEvent(roomId,"m.room.message",content,txnId,callback)};MatrixClient.prototype.sendTextMessage=function(roomId,body,txnId,callback){var content={msgtype:"m.text",body:body};return this.sendMessage(roomId,content,txnId,callback)};MatrixClient.prototype.sendEmoteMessage=function(roomId,body,txnId,callback){var content={msgtype:"m.emote",body:body};return this.sendMessage(roomId,content,txnId,callback)};MatrixClient.prototype.sendImageMessage=function(roomId,url,info,text,callback){if(utils.isFunction(text)){callback=text;text=undefined}if(!text){text="Image"}var content={msgtype:"m.image",url:url,info:info,body:text};return this.sendMessage(roomId,content,callback)};MatrixClient.prototype.sendHtmlMessage=function(roomId,body,htmlBody,callback){var content={msgtype:"m.text",format:"org.matrix.custom.html",body:body,formatted_body:htmlBody};return this.sendMessage(roomId,content,callback)};MatrixClient.prototype.sendTyping=function(roomId,isTyping,timeoutMs,callback){var path=utils.encodeUri("/rooms/$roomId/typing/$userId",{$roomId:roomId,$userId:this.credentials.userId});var data={typing:isTyping};if(isTyping){data.timeout=timeoutMs?timeoutMs:2e4}return this._http.authedRequest(callback,"PUT",path,undefined,data)};MatrixClient.prototype.redactEvent=function(roomId,eventId,callback){var path=utils.encodeUri("/rooms/$roomId/redact/$eventId",{$roomId:roomId,$eventId:eventId});return this._http.authedRequest(callback,"POST",path,undefined,{})};MatrixClient.prototype.invite=function(roomId,userId,callback){return _membershipChange(this,roomId,userId,"invite",undefined,callback)};MatrixClient.prototype.leave=function(roomId,callback){return _membershipChange(this,roomId,undefined,"leave",undefined,callback)};MatrixClient.prototype.ban=function(roomId,userId,reason,callback){return _membershipChange(this,roomId,userId,"ban",reason,callback)};MatrixClient.prototype.unban=function(roomId,userId,callback){return _setMembershipState(this,roomId,userId,"leave",undefined,callback)};MatrixClient.prototype.kick=function(roomId,userId,reason,callback){return _setMembershipState(this,roomId,userId,"leave",reason,callback)};function _setMembershipState(client,roomId,userId,membershipValue,reason,callback){if(utils.isFunction(reason)){callback=reason;reason=undefined}var path=utils.encodeUri("/rooms/$roomId/state/m.room.member/$userId",{$roomId:roomId,$userId:userId});return client._http.authedRequest(callback,"PUT",path,undefined,{membership:membershipValue,reason:reason})}function _membershipChange(client,roomId,userId,membership,reason,callback){if(utils.isFunction(reason)){callback=reason;reason=undefined}var path=utils.encodeUri("/rooms/$room_id/$membership",{$room_id:roomId,$membership:membership});return client._http.authedRequest(callback,"POST",path,undefined,{user_id:userId,reason:reason})}MatrixClient.prototype.getProfileInfo=function(userId,info,callback){if(utils.isFunction(info)){callback=info;info=undefined}var path=info?utils.encodeUri("/profile/$userId/$info",{$userId:userId,$info:info}):utils.encodeUri("/profile/$userId",{$userId:userId});return this._http.authedRequest(callback,"GET",path)};MatrixClient.prototype.setProfileInfo=function(info,data,callback){var path=utils.encodeUri("/profile/$userId/$info",{$userId:this.credentials.userId,$info:info});return this._http.authedRequest(callback,"PUT",path,undefined,data)};MatrixClient.prototype.setDisplayName=function(name,callback){return this.setProfileInfo("displayname",{displayname:name},callback)};MatrixClient.prototype.setAvatarUrl=function(url,callback){return this.setProfileInfo("avatar_url",{avatar_url:url},callback)};MatrixClient.prototype.getThreePids=function(callback){var path="/account/3pid";return this._http.authedRequestWithPrefix(callback,"GET",path,undefined,undefined,httpApi.PREFIX_V2_ALPHA)};MatrixClient.prototype.addThreePid=function(creds,bind,callback){var path="/account/3pid";var data={threePidCreds:creds,bind:bind};return this._http.authedRequestWithPrefix(callback,"POST",path,null,data,httpApi.PREFIX_V2_ALPHA)};MatrixClient.prototype.setPresence=function(presence,callback){var path=utils.encodeUri("/presence/$userId/status",{$userId:this.credentials.userId});var validStates=["offline","online","unavailable"];if(validStates.indexOf(presence)==-1){throw new Error("Bad presence value: "+presence)}var content={presence:presence};return this._http.authedRequest(callback,"PUT",path,undefined,content)};MatrixClient.prototype.publicRooms=function(callback){return this._http.request(callback,"GET","/publicRooms")};MatrixClient.prototype.registerFlows=function(callback){return this._http.request(callback,"GET","/register")};MatrixClient.prototype.loginFlows=function(callback){return this._http.request(callback,"GET","/login")};MatrixClient.prototype.resolveRoomAlias=function(roomAlias,callback){var path=utils.encodeUri("/directory/room/$alias",{$alias:roomAlias});return this._http.request(callback,"GET",path)};MatrixClient.prototype.roomInitialSync=function(roomId,limit,callback){if(utils.isFunction(limit)){callback=limit;limit=undefined}var path=utils.encodeUri("/rooms/$roomId/initialSync",{$roomId:roomId});if(!limit){limit=30}return this._http.authedRequest(callback,"GET",path,{limit:limit})};MatrixClient.prototype.roomState=function(roomId,callback){var path=utils.encodeUri("/rooms/$roomId/state",{$roomId:roomId});return this._http.authedRequest(callback,"GET",path)};MatrixClient.prototype.scrollback=function(roomId,from,limit,callback){if(utils.isFunction(limit)){callback=limit;limit=undefined}var path=utils.encodeUri("/rooms/$roomId/messages",{$roomId:roomId});if(!limit){limit=30}var params={from:from,limit:limit,dir:"b"};return this._http.authedRequest(callback,"GET",path,params)};MatrixClient.prototype.login=function(loginType,data,callback){data.type=loginType;return this._http.authedRequest(callback,"POST","/login",undefined,data)};MatrixClient.prototype.register=function(loginType,data,callback){data.type=loginType;return this._http.authedRequest(callback,"POST","/register",undefined,data)};MatrixClient.prototype.loginWithPassword=function(user,password,callback){return this.login("m.login.password",{user:user,password:password},callback)};MatrixClient.prototype.pushRules=function(callback){return this._http.authedRequest(callback,"GET","/pushrules/")};MatrixClient.prototype.addPushRule=function(scope,kind,ruleId,body,callback){var path=utils.encodeUri("/pushrules/"+scope+"/$kind/$ruleId",{$kind:kind,$ruleId:ruleId});return this._http.authedRequest(callback,"PUT",path,undefined,body)};MatrixClient.prototype.deletePushRule=function(scope,kind,ruleId,callback){var path=utils.encodeUri("/pushrules/"+scope+"/$kind/$ruleId",{$kind:kind,$ruleId:ruleId});return this._http.authedRequest(callback,"DELETE",path)};MatrixClient.prototype.turnServer=function(callback){return this._http.authedRequest(callback,"GET","/voip/turnServer")};MatrixClient.prototype.isLoggedIn=function(){return this._http.opts.accessToken!==undefined};MatrixClient.prototype.startClient=function(historyLen){if(this.clientRunning){return}if(this.fromToken){_pollForEvents(this);return}var self=this;this._http.authedRequest(undefined,"GET","/initialSync",{limit:historyLen||12}).done(function(data){var i,j;if(self.store){var eventMapper=function(event){return new MatrixEvent(event)};utils.forEach(utils.map(data.presence,eventMapper),function(e){var user=createNewUser(self,e.getContent().user_id);user.setPresenceEvent(e);self.store.storeUser(user)});for(i=0;i<data.rooms.length;i++){var room=createNewRoom(self,data.rooms[i].room_id);if(!data.rooms[i].state){data.rooms[i].state=[]}if(data.rooms[i].membership==="invite"){data.rooms[i].state.push({event_id:"$fake_"+room.roomId,content:{membership:"invite"},state_key:self.credentials.userId,user_id:data.rooms[i].inviter,room_id:room.roomId,type:"m.room.member"})}var oldStateEvents=utils.map(utils.deepCopy(data.rooms[i].state),eventMapper);var stateEvents=utils.map(data.rooms[i].state,eventMapper);room.oldState.setStateEvents(oldStateEvents);room.currentState.setStateEvents(stateEvents);room.addEventsToTimeline(utils.map(data.rooms[i].messages?data.rooms[i].messages.chunk:[],eventMapper).reverse(),true);room.recalculate(self.credentials.userId);self.store.storeRoom(room)}}if(data){self.fromToken=data.end;var events=[];for(i=0;i<data.presence.length;i++){events.push(new MatrixEvent(data.presence[i]))}for(i=0;i<data.rooms.length;i++){if(data.rooms[i].state){for(j=0;j<data.rooms[i].state.length;j++){events.push(new MatrixEvent(data.rooms[i].state[j]))}}if(data.rooms[i].messages){for(j=0;j<data.rooms[i].messages.chunk.length;j++){events.push(new MatrixEvent(data.rooms[i].messages.chunk[j]))}}}utils.forEach(events,function(e){self.emit("event",e)})}self.clientRunning=true;self.emit("syncComplete");_pollForEvents(self)},function(err){self.emit("syncError",err)})};function _pollForEvents(client){var self=client;if(!client.clientRunning){return}client._http.authedRequest(undefined,"GET","/events",{from:client.fromToken,timeout:3e4}).done(function(data){var events=[];if(data){events=utils.map(data.chunk,function(event){return new MatrixEvent(event)})}if(self.store){var i=0;var roomIdToEvents={};for(i=0;i<events.length;i++){var roomId=events[i].getRoomId();if(roomId){if(!roomIdToEvents[roomId]){roomIdToEvents[roomId]=[]}roomIdToEvents[roomId].push(events[i])}}var roomIds=utils.keys(roomIdToEvents);for(i=0;i<roomIds.length;i++){var room=self.store.getRoom(roomIds[i]);if(!room){room=createNewRoom(self,roomIds[i])}room.addEvents(roomIdToEvents[roomIds[i]]);room.recalculate(self.credentials.userId)}}if(data){self.fromToken=data.end;utils.forEach(events,function(e){self.emit("event",e)})}_pollForEvents(self)},function(err){self.emit("syncError",err);setTimeout(function(){_pollForEvents(self)},2e3)})}MatrixClient.prototype.stopClient=function(){this.clientRunning=false};function reEmit(reEmitEntity,emittableEntity,eventNames){utils.forEach(eventNames,function(eventName){emittableEntity.on(eventName,function(){var newArgs=[eventName];for(var i=0;i<arguments.length;i++){newArgs.push(arguments[i])}reEmitEntity.emit.apply(reEmitEntity,newArgs)})})}function createNewUser(client,userId){var user=new User(userId);reEmit(client,user,["User.avatarUrl","User.displayName","User.presence"]);return user}function createNewRoom(client,roomId){var room=new Room(roomId);reEmit(client,room,["Room.name","Room.timeline"]);client.emit("Room",room);reEmit(client,room.currentState,["RoomState.events","RoomState.members","RoomState.newMember"]);room.currentState.on("RoomState.newMember",function(event,state,member){reEmit(client,member,["RoomMember.name","RoomMember.typing","RoomMember.powerLevel","RoomMember.membership"])});return room}module.exports.MatrixClient=MatrixClient},{"./http-api":2,"./models/event":4,"./models/room":8,"./models/user":9,"./store/memory":10,"./utils":11,events:13}],2:[function(require,module,exports){"use strict";var q=require("q");var utils=require("./utils");module.exports.PREFIX_V1="/_matrix/client/api/v1";module.exports.PREFIX_V2_ALPHA_PREFIX="/_matrix/client/v2_alpha";module.exports.MatrixHttpApi=function MatrixHttpApi(opts){utils.checkObjectHasKeys(opts,["baseUrl","request","prefix"]);opts.onlyData=opts.onlyData||false;this.opts=opts};module.exports.MatrixHttpApi.prototype={getHttpUriForMxc:function(mxc,width,height,resizeMethod){if(typeof mxc!=="string"||!mxc){return mxc}if(mxc.indexOf("mxc://")!==0){return mxc}var serverAndMediaId=mxc.slice(6);var prefix="/_matrix/media/v1/download/";var params={};if(width){params.width=width}if(height){params.height=height}if(resizeMethod){params.method=resizeMethod}if(utils.keys(params).length>0){prefix="/_matrix/media/v1/thumbnail/"}var fragmentOffset=serverAndMediaId.indexOf("#"),fragment="";if(fragmentOffset>=0){fragment=serverAndMediaId.substr(fragmentOffset);serverAndMediaId=serverAndMediaId.substr(0,fragmentOffset)}return this.credentials.baseUrl+prefix+serverAndMediaId+(utils.keys(params).length===0?"":"?"+utils.encodeParams(params))+fragment},getIdenticonUri:function(identiconString,width,height){if(!identiconString){return}if(!width){width=96}if(!height){height=96}var params={width:width,height:height};var path=utils.encodeUri("/_matrix/media/v1/identicon/$ident",{$ident:identiconString});return this.credentials.baseUrl+path+(utils.keys(params).length===0?"":"?"+utils.encodeParams(params))},getContentUri:function(){var params={access_token:this.credentials.accessToken};return{base:this.credentials.baseUrl,path:"/_matrix/media/v1/upload",params:params}},authedRequest:function(callback,method,path,queryParams,data){if(!queryParams){queryParams={}}queryParams.access_token=this.opts.accessToken;return this.request(callback,method,path,queryParams,data)},request:function(callback,method,path,queryParams,data){return this.requestWithPrefix(callback,method,path,queryParams,data,this.opts.prefix)},authedRequestWithPrefix:function(callback,method,path,queryParams,data,prefix){var fullUri=this.opts.baseUrl+prefix+path;if(!queryParams){queryParams={}}queryParams.access_token=this.opts.accessToken;return this._request(callback,method,fullUri,queryParams,data)},requestWithPrefix:function(callback,method,path,queryParams,data,prefix){var fullUri=this.opts.baseUrl+prefix+path;if(!queryParams){queryParams={}}return this._request(callback,method,fullUri,queryParams,data)},_request:function(callback,method,uri,queryParams,data){if(callback!==undefined&&!utils.isFunction(callback)){throw Error("Expected callback to be a function but got "+typeof callback)}var defer=q.defer();this.opts.request({uri:uri,method:method,withCredentials:false,qs:queryParams,body:data,json:true,_matrix_opts:this.opts},requestCallback(defer,callback,this.opts.onlyData));return defer.promise}};var requestCallback=function(defer,userDefinedCallback,onlyData){userDefinedCallback=userDefinedCallback||function(){};return function(err,response,body){if(!err&&response.statusCode>=400){err=new module.exports.MatrixError(body)}if(err){defer.reject(err);userDefinedCallback(err)}else{var res={code:response.statusCode,headers:response.headers,data:body};defer.resolve(onlyData?body:res);userDefinedCallback(null,onlyData?body:res)}}};module.exports.MatrixError=function MatrixError(errorJson){this.name=errorJson.errcode||"Unknown error code";this.message=errorJson.error||"Unknown message";this.data=errorJson};module.exports.MatrixError.prototype=Object.create(Error.prototype);module.exports.MatrixError.prototype.constructor=module.exports.MatrixError},{"./utils":11,q:15}],3:[function(require,module,exports){"use strict";module.exports.MatrixEvent=require("./models/event").MatrixEvent;module.exports.MatrixInMemoryStore=require("./store/memory").MatrixInMemoryStore;module.exports.MatrixHttpApi=require("./http-api").MatrixHttpApi;module.exports.MatrixError=require("./http-api").MatrixError;module.exports.MatrixClient=require("./client").MatrixClient;module.exports.Room=require("./models/room");module.exports.RoomMember=require("./models/room-member");module.exports.RoomState=require("./models/room-state");module.exports.User=require("./models/user");var request;module.exports.request=function(r){request=r};module.exports.createClient=function(opts){if(typeof opts==="string"){opts={baseUrl:opts}}opts.request=request;return new module.exports.MatrixClient(opts)}},{"./client":1,"./http-api":2,"./models/event":4,"./models/room":8,"./models/room-member":5,"./models/room-state":6,"./models/user":9,"./store/memory":10}],4:[function(require,module,exports){"use strict";module.exports.EventStatus={UNKNOWN:"unknown",SENT:"sent",NOT_SENT:"not_sent",SENDING:"sending",INCOMING:"incoming"};module.exports.MatrixEvent=function MatrixEvent(event){this.event=event||{};this.sender=null;this.target=null;this.status=null;this.forwardLooking=true};module.exports.MatrixEvent.prototype={getId:function(){return this.event.event_id},getSender:function(){return this.event.user_id},getType:function(){return this.event.type},getRoomId:function(){return this.event.room_id},getTs:function(){return this.event.origin_server_ts},getContent:function(){return this.event.content||{}},getPrevContent:function(){return this.event.prev_content||{}},getDirectionalContent:function(){return this.forwardLooking?this.getContent():this.getPrevContent()},getAge:function(){return this.event.age},getStateKey:function(){return this.event.state_key},isState:function(){return this.event.state_key!==undefined}}},{}],5:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var utils=require("../utils");function RoomMember(roomId,userId){this.roomId=roomId;this.userId=userId;this.typing=false;this.name=userId;this.powerLevel=0;this.powerLevelNorm=0;this.user=null;this.membership=null}utils.inherits(RoomMember,EventEmitter);RoomMember.prototype.setMembershipEvent=function(event,roomState){if(event.getType()!=="m.room.member"){return}var oldMembership=this.membership;this.membership=event.getDirectionalContent().membership;var oldName=this.name;this.name=calculateDisplayName(this,event,roomState);if(oldMembership!==this.membership){this.emit("RoomMember.membership",event,this)}if(oldName!==this.name){this.emit("RoomMember.name",event,this)}};RoomMember.prototype.setPowerLevelEvent=function(powerLevelEvent){if(powerLevelEvent.getType()!=="m.room.power_levels"){return}var maxLevel=powerLevelEvent.getContent().users_default||0;utils.forEach(utils.values(powerLevelEvent.getContent().users),function(lvl){maxLevel=Math.max(maxLevel,lvl)});var oldPowerLevel=this.powerLevel;var oldPowerLevelNorm=this.powerLevelNorm;this.powerLevel=powerLevelEvent.getContent().users[this.userId]||powerLevelEvent.getContent().users_default||0;this.powerLevelNorm=0;if(maxLevel>0){this.powerLevelNorm=this.powerLevel*100/maxLevel}if(oldPowerLevel!==this.powerLevel||oldPowerLevelNorm!==this.powerLevelNorm){this.emit("RoomMember.powerLevel",powerLevelEvent,this)}};RoomMember.prototype.setTypingEvent=function(event){if(event.getType()!=="m.typing"){return}var oldTyping=this.typing;this.typing=false;var typingList=event.getContent().user_ids;if(!utils.isArray(typingList)){return}if(typingList.indexOf(this.userId)!==-1){this.typing=true}if(oldTyping!==this.typing){this.emit("RoomMember.typing",event,this)}};RoomMember.prototype.getMembershipState=function(){return this.event.getContent().membership};function calculateDisplayName(member,event,roomState){var displayName=event.getDirectionalContent().displayname;var selfUserId=member.userId;if(!displayName){return selfUserId}if(!roomState){return displayName}var stateEvents=utils.filter(roomState.getStateEvents("m.room.member"),function(e){return e.getContent().displayname===displayName&&e.getSender()!==selfUserId});if(stateEvents.length>1){return displayName+" ("+selfUserId+")"}return displayName}module.exports=RoomMember},{"../utils":11,events:13}],6:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var utils=require("../utils");var RoomMember=require("./room-member");function RoomState(roomId){this.roomId=roomId;this.members={};this.events={};this.paginationToken=null;this._sentinels={}}utils.inherits(RoomState,EventEmitter);RoomState.prototype.getMembers=function(){return utils.values(this.members)};RoomState.prototype.getMember=function(userId){return this.members[userId]||null};RoomState.prototype.getSentinelMember=function(userId){return this._sentinels[userId]||null};RoomState.prototype.getStateEvents=function(eventType,stateKey){if(!this.events[eventType]){return stateKey===undefined?[]:null}if(stateKey===undefined){return utils.values(this.events[eventType])}var event=this.events[eventType][stateKey];return event?event:null};RoomState.prototype.setStateEvents=function(stateEvents){var self=this;utils.forEach(stateEvents,function(event){if(event.getRoomId()!==self.roomId){return}if(!event.isState()){return}if(self.events[event.getType()]===undefined){self.events[event.getType()]={}}self.events[event.getType()][event.getStateKey()]=event;self.emit("RoomState.events",event,self);if(event.getType()==="m.room.member"){var userId=event.getStateKey();var member=self.members[userId];if(!member){member=new RoomMember(event.getRoomId(),userId);self.emit("RoomState.newMember",event,self,member)}var sentinel=new RoomMember(event.getRoomId(),userId);utils.forEach([member,sentinel],function(roomMember){roomMember.setMembershipEvent(event,self);var pwrLvlEvent=self.getStateEvents("m.room.power_levels","");if(pwrLvlEvent){roomMember.setPowerLevelEvent(pwrLvlEvent)}});self._sentinels[userId]=sentinel;self.members[userId]=member;self.emit("RoomState.members",event,self,member)}else if(event.getType()==="m.room.power_levels"){var members=utils.values(self.members);utils.forEach(members,function(member){member.setPowerLevelEvent(event)})}})};RoomState.prototype.setTypingEvent=function(event){utils.forEach(utils.values(this.members),function(member){member.setTypingEvent(event)})};module.exports=RoomState},{"../utils":11,"./room-member":5,events:13}],7:[function(require,module,exports){"use strict";function RoomSummary(roomId,info){this.roomId=roomId;this.info=info}module.exports=RoomSummary},{}],8:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var RoomState=require("./room-state");var RoomSummary=require("./room-summary");var utils=require("../utils");function Room(roomId){this.roomId=roomId;this.name=roomId;this.timeline=[];this.oldState=new RoomState(roomId);this.currentState=new RoomState(roomId);this.summary=null}utils.inherits(Room,EventEmitter);Room.prototype.getMember=function(userId){var member=this.currentState.members[userId];if(!member){return null}return member};Room.prototype.getJoinedMembers=function(){return utils.filter(this.currentState.getMembers(),function(m){return m.membership==="join"})};Room.prototype.addEventsToTimeline=function(events,toStartOfTimeline){var stateContext=toStartOfTimeline?this.oldState:this.currentState;for(var i=0;i<events.length;i++){events[i].sender=stateContext.getSentinelMember(events[i].getSender());if(events[i].getType()==="m.room.member"){events[i].target=stateContext.getSentinelMember(events[i].getStateKey())}if(events[i].isState()){if(toStartOfTimeline){events[i].forwardLooking=false}stateContext.setStateEvents([events[i]],toStartOfTimeline)}if(toStartOfTimeline){this.timeline.unshift(events[i])}else{this.timeline.push(events[i])}this.emit("Room.timeline",events[i],this,toStartOfTimeline)}};Room.prototype.addEvents=function(events){for(var i=0;i<events.length;i++){if(events[i].getType()==="m.typing"){this.currentState.setTypingEvent(events[i])}else{this.addEventsToTimeline([events[i]])}}};Room.prototype.recalculate=function(userId){var oldName=this.name;this.name=this.calculateRoomName(userId);this.summary=new RoomSummary(this.roomId,{title:this.name});if(oldName!==this.name){this.emit("Room.name",this)}};Room.prototype.calculateRoomName=function(userId){var alias;var mRoomAliases=this.currentState.getStateEvents("m.room.aliases")[0];if(mRoomAliases&&utils.isArray(mRoomAliases.getContent().aliases)){alias=mRoomAliases.getContent().aliases[0]}var mRoomName=this.currentState.getStateEvents("m.room.name","");if(mRoomName){return mRoomName.getContent().name+(alias?" ("+alias+")":"")}else if(alias){return alias}else{var members=utils.filter(this.currentState.getMembers(),function(m){return m.userId!==userId});if(members.length===0){var memberList=this.currentState.getMembers();if(memberList.length===1){if(memberList[0].membership==="invite"){return"Room Invite"}else{return userId}}else{return"?"}}else if(members.length===1){return members[0].name}else if(members.length===2){return members[0].name+" and "+members[1].name}else{return members[0].name+" and "+(members.length-1)+" others"}}};module.exports=Room},{"../utils":11,"./room-state":6,"./room-summary":7,events:13}],9:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var utils=require("../utils");function User(userId){this.userId=userId;this.presence="offline";this.displayName=userId;this.avatarUrl=null;this.lastActiveAgo=0}utils.inherits(User,EventEmitter);User.prototype.setPresenceEvent=function(event){if(event.getType()!=="m.presence"){return}var eventsToFire=[];if(event.getContent().presence!==this.presence){eventsToFire.push("User.presence")}if(event.getContent().avatar_url!==this.avatarUrl){eventsToFire.push("User.avatarUrl")}if(event.getContent().displayname!==this.displayName){eventsToFire.push("User.displayName")}this.presence=event.getContent().presence;this.displayName=event.getContent().displayname;this.avatarUrl=event.getContent().avatar_url;this.lastActiveAgo=event.getContent().last_active_ago;for(var i=0;i<eventsToFire.length;i++){this.emit(eventsToFire[i],event,this)}};module.exports=User},{"../utils":11,events:13}],10:[function(require,module,exports){"use strict";var utils=require("../utils");module.exports.MatrixInMemoryStore=function MatrixInMemoryStore(){this.rooms={};this.users={}};module.exports.MatrixInMemoryStore.prototype={storeRoom:function(room){this.rooms[room.roomId]=room},getRoom:function(roomId){return this.rooms[roomId]||null},getRooms:function(){return utils.values(this.rooms)},getRoomSummaries:function(){return utils.map(utils.values(this.rooms),function(room){return room.summary})},storeUser:function(user){this.users[user.userId]=user},getUser:function(userId){return this.users[userId]||null}}},{"../utils":11}],11:[function(require,module,exports){"use strict";module.exports.encodeParams=function(params){var qs="";for(var key in params){if(!params.hasOwnProperty(key)){continue}qs+="&"+encodeURIComponent(key)+"="+encodeURIComponent(params[key])}return qs.substring(1)};module.exports.encodeUri=function(pathTemplate,variables){for(var key in variables){if(!variables.hasOwnProperty(key)){continue}pathTemplate=pathTemplate.replace(key,encodeURIComponent(variables[key]))}return pathTemplate};module.exports.map=function(array,fn){var results=new Array(array.length);for(var i=0;i<array.length;i++){results[i]=fn(array[i])}return results};module.exports.filter=function(array,fn){var results=[];for(var i=0;i<array.length;i++){if(fn(array[i],i,array)){results.push(array[i])}}return results};module.exports.keys=function(obj){var keys=[];for(var key in obj){if(!obj.hasOwnProperty(key)){continue}keys.push(key)}return keys};module.exports.values=function(obj){var values=[];for(var key in obj){if(!obj.hasOwnProperty(key)){continue}values.push(obj[key])}return values};module.exports.forEach=function(array,fn){for(var i=0;i<array.length;i++){fn(array[i],i)}};module.exports.isFunction=function(value){return Object.prototype.toString.call(value)=="[object Function]"};module.exports.isArray=function(value){return Boolean(value&&value.constructor===Array)};module.exports.checkObjectHasKeys=function(obj,keys){for(var i=0;i<keys.length;i++){if(!obj.hasOwnProperty(keys[i])){throw new Error("Missing required key: "+keys[i])}}};module.exports.checkObjectHasNoAdditionalKeys=function(obj,allowedKeys){for(var key in obj){if(!obj.hasOwnProperty(key)){continue}if(allowedKeys.indexOf(key)===-1){throw new Error("Unknown key: "+key)}}};module.exports.shallowCopy=function(src,dst){for(var i in src){if(src.hasOwnProperty(i)){dst[i]=src[i]}}};module.exports.deepCopy=function(obj){return JSON.parse(JSON.stringify(obj))};module.exports.inherits=function(ctor,superCtor){if(typeof Object.create!="function"){Object.create=function(){function Temp(){}var hasOwn=Object.prototype.hasOwnProperty;return function(O){if(typeof O!="object"){throw new TypeError("Object prototype may only be an Object or null")}Temp.prototype=O;var obj=new Temp;Temp.prototype=null;if(arguments.length>1){var Properties=Object(arguments[1]);for(var prop in Properties){if(hasOwn.call(Properties,prop)){obj[prop]=Properties[prop]}}}return obj}}()}ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}},{}],12:[function(require,module,exports){
|
|
(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.returnExports=factory()}})(this,function(){var XHR=XMLHttpRequest;if(!XHR)throw new Error("missing XMLHttpRequest");request.log={trace:noop,debug:noop,info:noop,warn:noop,error:noop};var DEFAULT_TIMEOUT=3*60*1e3;function request(options,callback){if(typeof callback!=="function")throw new Error("Bad callback given: "+callback);if(!options)throw new Error("No options given");var options_onResponse=options.onResponse;if(typeof options==="string")options={uri:options};else options=JSON.parse(JSON.stringify(options));options.onResponse=options_onResponse;if(options.verbose)request.log=getLogger();if(options.url){options.uri=options.url;delete options.url}if(!options.uri&&options.uri!=="")throw new Error("options.uri is a required argument");if(typeof options.uri!="string")throw new Error("options.uri must be a string");var unsupported_options=["proxy","_redirectsFollowed","maxRedirects","followRedirect"];for(var i=0;i<unsupported_options.length;i++)if(options[unsupported_options[i]])throw new Error("options."+unsupported_options[i]+" is not supported");options.callback=callback;options.method=options.method||"GET";options.headers=options.headers||{};options.body=options.body||null;options.timeout=options.timeout||request.DEFAULT_TIMEOUT;if(options.headers.host)throw new Error("Options.headers.host is not supported");if(options.json){options.headers.accept=options.headers.accept||"application/json";if(options.method!=="GET")options.headers["content-type"]="application/json";if(typeof options.json!=="boolean")options.body=JSON.stringify(options.json);else if(typeof options.body!=="string")options.body=JSON.stringify(options.body)}var serialize=function(obj){var str=[];for(var p in obj)if(obj.hasOwnProperty(p)){str.push(encodeURIComponent(p)+"="+encodeURIComponent(obj[p]))}return str.join("&")};if(options.qs){var qs=typeof options.qs=="string"?options.qs:serialize(options.qs);if(options.uri.indexOf("?")!==-1){options.uri=options.uri+"&"+qs}else{options.uri=options.uri+"?"+qs}}var multipart=function(obj){var result={};result.boundry="-------------------------------"+Math.floor(Math.random()*1e9);var lines=[];for(var p in obj){if(obj.hasOwnProperty(p)){lines.push("--"+result.boundry+"\n"+'Content-Disposition: form-data; name="'+p+'"'+"\n"+"\n"+obj[p]+"\n")}}lines.push("--"+result.boundry+"--");result.body=lines.join("");result.length=result.body.length;result.type="multipart/form-data; boundary="+result.boundry;return result};if(options.form){if(typeof options.form=="string")throw"form name unsupported";if(options.method==="POST"){var encoding=(options.encoding||"application/x-www-form-urlencoded").toLowerCase();options.headers["content-type"]=encoding;switch(encoding){case"application/x-www-form-urlencoded":options.body=serialize(options.form).replace(/%20/g,"+");break;case"multipart/form-data":var multi=multipart(options.form);options.body=multi.body;options.headers["content-type"]=multi.type;break;default:throw new Error("unsupported encoding:"+encoding)}}}options.onResponse=options.onResponse||noop;if(options.onResponse===true){options.onResponse=callback;options.callback=noop}if(!options.headers.authorization&&options.auth)options.headers.authorization="Basic "+b64_enc(options.auth.username+":"+options.auth.password);return run_xhr(options)}var req_seq=0;function run_xhr(options){var xhr=new XHR,timed_out=false,is_cors=is_crossDomain(options.uri),supports_cors="withCredentials"in xhr;req_seq+=1;xhr.seq_id=req_seq;xhr.id=req_seq+": "+options.method+" "+options.uri;xhr._id=xhr.id;if(is_cors&&!supports_cors){var cors_err=new Error("Browser does not support cross-origin request: "+options.uri);cors_err.cors="unsupported";return options.callback(cors_err,xhr)}xhr.timeoutTimer=setTimeout(too_late,options.timeout);function too_late(){timed_out=true;var er=new Error("ETIMEDOUT");er.code="ETIMEDOUT";er.duration=options.timeout;request.log.error("Timeout",{id:xhr._id,milliseconds:options.timeout});return options.callback(er,xhr)}var did={response:false,loading:false,end:false};xhr.onreadystatechange=on_state_change;xhr.open(options.method,options.uri,true);if(is_cors)xhr.withCredentials=!!options.withCredentials;xhr.send(options.body);return xhr;function on_state_change(event){if(timed_out)return request.log.debug("Ignoring timed out state change",{state:xhr.readyState,id:xhr.id});request.log.debug("State change",{state:xhr.readyState,id:xhr.id,timed_out:timed_out});if(xhr.readyState===XHR.OPENED){request.log.debug("Request started",{id:xhr.id});for(var key in options.headers)xhr.setRequestHeader(key,options.headers[key])}else if(xhr.readyState===XHR.HEADERS_RECEIVED)on_response();else if(xhr.readyState===XHR.LOADING){on_response();on_loading()}else if(xhr.readyState===XHR.DONE){on_response();on_loading();on_end()}}function on_response(){if(did.response)return;did.response=true;request.log.debug("Got response",{id:xhr.id,status:xhr.status});clearTimeout(xhr.timeoutTimer);xhr.statusCode=xhr.status;if(is_cors&&xhr.statusCode==0){var cors_err=new Error("CORS request rejected: "+options.uri);cors_err.cors="rejected";did.loading=true;did.end=true;return options.callback(cors_err,xhr)}options.onResponse(null,xhr)}function on_loading(){if(did.loading)return;did.loading=true;request.log.debug("Response body loading",{id:xhr.id})}function on_end(){if(did.end)return;did.end=true;request.log.debug("Request done",{id:xhr.id});xhr.body=xhr.responseText;if(options.json){try{xhr.body=JSON.parse(xhr.responseText)}catch(er){return options.callback(er,xhr)}}options.callback(null,xhr,xhr.body)}}request.withCredentials=false;request.DEFAULT_TIMEOUT=DEFAULT_TIMEOUT;request.defaults=function(options,requester){var def=function(method){var d=function(params,callback){if(typeof params==="string")params={uri:params};else{params=JSON.parse(JSON.stringify(params))}for(var i in options){if(params[i]===undefined)params[i]=options[i]}return method(params,callback)};return d};var de=def(request);de.get=def(request.get);de.post=def(request.post);de.put=def(request.put);de.head=def(request.head);return de};var shortcuts=["get","put","post","head"];shortcuts.forEach(function(shortcut){var method=shortcut.toUpperCase();var func=shortcut.toLowerCase();request[func]=function(opts){if(typeof opts==="string")opts={method:method,uri:opts};else{opts=JSON.parse(JSON.stringify(opts));opts.method=method}var args=[opts].concat(Array.prototype.slice.apply(arguments,[1]));return request.apply(this,args)}});request.couch=function(options,callback){if(typeof options==="string")options={uri:options};options.json=true;if(options.body)options.json=options.body;delete options.body;callback=callback||noop;var xhr=request(options,couch_handler);return xhr;function couch_handler(er,resp,body){if(er)return callback(er,resp,body);if((resp.statusCode<200||resp.statusCode>299)&&body.error){er=new Error("CouchDB error: "+(body.error.reason||body.error.error));for(var key in body)er[key]=body[key];return callback(er,resp,body)}return callback(er,resp,body)}};function noop(){}function getLogger(){var logger={},levels=["trace","debug","info","warn","error"],level,i;for(i=0;i<levels.length;i++){level=levels[i];logger[level]=noop;if(typeof console!=="undefined"&&console&&console[level])logger[level]=formatted(console,level)}return logger}function formatted(obj,method){return formatted_logger;function formatted_logger(str,context){if(typeof context==="object")str+=" "+JSON.stringify(context);return obj[method].call(obj,str)}}function is_crossDomain(url){var rurl=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;var ajaxLocation;try{ajaxLocation=location.href}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href}var ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[],parts=rurl.exec(url.toLowerCase());var result=!!(parts&&(parts[1]!=ajaxLocParts[1]||parts[2]!=ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?80:443))!=(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?80:443))));return result}function b64_enc(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc="",tmp_arr=[];if(!data){return data}do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&63;h2=bits>>12&63;h3=bits>>6&63;h4=bits&63;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4)}while(i<data.length);enc=tmp_arr.join("");switch(data.length%3){case 1:enc=enc.slice(0,-2)+"==";break;case 2:enc=enc.slice(0,-1)+"=";break}return enc}return request})},{}],13:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}throw TypeError('Uncaught, unspecified "error" event.')}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],14:[function(require,module,exports){var process=module.exports={};var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=setTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){currentQueue[queueIndex].run()}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;clearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){setTimeout(drainQueue,0)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],15:[function(require,module,exports){(function(process){(function(definition){"use strict";if(typeof bootstrap==="function"){bootstrap("promise",definition)}else if(typeof exports==="object"&&typeof module==="object"){module.exports=definition()}else if(typeof define==="function"&&define.amd){define(definition)}else if(typeof ses!=="undefined"){if(!ses.ok()){return}else{ses.makeQ=definition}}else if(typeof window!=="undefined"||typeof self!=="undefined"){var global=typeof window!=="undefined"?window:self;var previousQ=global.Q;global.Q=definition();global.Q.noConflict=function(){global.Q=previousQ;return this}}else{throw new Error("This environment was not anticipated by Q. Please file a bug.")}})(function(){"use strict";var hasStacks=false;try{throw new Error}catch(e){hasStacks=!!e.stack}var qStartingLine=captureLine();var qFileName;var noop=function(){};var nextTick=function(){var head={task:void 0,next:null};var tail=head;var flushing=false;var requestTick=void 0;var isNodeJS=false;var laterQueue=[];function flush(){var task,domain;while(head.next){head=head.next;task=head.task;head.task=void 0;domain=head.domain;if(domain){head.domain=void 0;domain.enter()}runSingle(task,domain)}while(laterQueue.length){task=laterQueue.pop();runSingle(task)}flushing=false}function runSingle(task,domain){try{task()}catch(e){if(isNodeJS){if(domain){domain.exit()}setTimeout(flush,0);if(domain){domain.enter()}throw e}else{setTimeout(function(){throw e},0)}}if(domain){domain.exit()}}nextTick=function(task){tail=tail.next={task:task,domain:isNodeJS&&process.domain,next:null};if(!flushing){flushing=true;requestTick()}};if(typeof process==="object"&&process.toString()==="[object process]"&&process.nextTick){isNodeJS=true;requestTick=function(){process.nextTick(flush)}}else if(typeof setImmediate==="function"){if(typeof window!=="undefined"){requestTick=setImmediate.bind(window,flush)}else{requestTick=function(){setImmediate(flush)}}}else if(typeof MessageChannel!=="undefined"){var channel=new MessageChannel;channel.port1.onmessage=function(){requestTick=requestPortTick;channel.port1.onmessage=flush;flush()};var requestPortTick=function(){channel.port2.postMessage(0)};requestTick=function(){setTimeout(flush,0);requestPortTick()}}else{requestTick=function(){setTimeout(flush,0)}}nextTick.runAfter=function(task){laterQueue.push(task);if(!flushing){flushing=true;requestTick()}};return nextTick}();var call=Function.call;function uncurryThis(f){return function(){return call.apply(f,arguments)}}var array_slice=uncurryThis(Array.prototype.slice);var array_reduce=uncurryThis(Array.prototype.reduce||function(callback,basis){var index=0,length=this.length;if(arguments.length===1){do{if(index in this){basis=this[index++];break}if(++index>=length){throw new TypeError}}while(1)}for(;index<length;index++){if(index in this){basis=callback(basis,this[index],index)}}return basis});var array_indexOf=uncurryThis(Array.prototype.indexOf||function(value){for(var i=0;i<this.length;i++){if(this[i]===value){return i}}return-1});var array_map=uncurryThis(Array.prototype.map||function(callback,thisp){var self=this;var collect=[];array_reduce(self,function(undefined,value,index){collect.push(callback.call(thisp,value,index,self))},void 0);return collect});var object_create=Object.create||function(prototype){function Type(){}Type.prototype=prototype;return new Type};var object_hasOwnProperty=uncurryThis(Object.prototype.hasOwnProperty);var object_keys=Object.keys||function(object){var keys=[];for(var key in object){if(object_hasOwnProperty(object,key)){keys.push(key)}}return keys};var object_toString=uncurryThis(Object.prototype.toString);function isObject(value){return value===Object(value)}function isStopIteration(exception){return object_toString(exception)==="[object StopIteration]"||exception instanceof QReturnValue}var QReturnValue;if(typeof ReturnValue!=="undefined"){QReturnValue=ReturnValue}else{QReturnValue=function(value){this.value=value}}var STACK_JUMP_SEPARATOR="From previous event:";function makeStackTraceLong(error,promise){if(hasStacks&&promise.stack&&typeof error==="object"&&error!==null&&error.stack&&error.stack.indexOf(STACK_JUMP_SEPARATOR)===-1){var stacks=[];for(var p=promise;!!p;p=p.source){if(p.stack){stacks.unshift(p.stack)}}stacks.unshift(error.stack);var concatedStacks=stacks.join("\n"+STACK_JUMP_SEPARATOR+"\n");error.stack=filterStackString(concatedStacks)}}function filterStackString(stackString){var lines=stackString.split("\n");var desiredLines=[];for(var i=0;i<lines.length;++i){var line=lines[i];if(!isInternalFrame(line)&&!isNodeFrame(line)&&line){desiredLines.push(line)}}return desiredLines.join("\n")}function isNodeFrame(stackLine){return stackLine.indexOf("(module.js:")!==-1||stackLine.indexOf("(node.js:")!==-1}function getFileNameAndLineNumber(stackLine){var attempt1=/at .+ \((.+):(\d+):(?:\d+)\)$/.exec(stackLine);if(attempt1){return[attempt1[1],Number(attempt1[2])]}var attempt2=/at ([^ ]+):(\d+):(?:\d+)$/.exec(stackLine);if(attempt2){return[attempt2[1],Number(attempt2[2])]}var attempt3=/.*@(.+):(\d+)$/.exec(stackLine);if(attempt3){return[attempt3[1],Number(attempt3[2])]}}function isInternalFrame(stackLine){var fileNameAndLineNumber=getFileNameAndLineNumber(stackLine);if(!fileNameAndLineNumber){return false}var fileName=fileNameAndLineNumber[0];var lineNumber=fileNameAndLineNumber[1];return fileName===qFileName&&lineNumber>=qStartingLine&&lineNumber<=qEndingLine}function captureLine(){if(!hasStacks){return}try{throw new Error}catch(e){var lines=e.stack.split("\n");var firstLine=lines[0].indexOf("@")>0?lines[1]:lines[2];var fileNameAndLineNumber=getFileNameAndLineNumber(firstLine);if(!fileNameAndLineNumber){return}qFileName=fileNameAndLineNumber[0];return fileNameAndLineNumber[1]}}function deprecate(callback,name,alternative){return function(){if(typeof console!=="undefined"&&typeof console.warn==="function"){console.warn(name+" is deprecated, use "+alternative+" instead.",new Error("").stack)}return callback.apply(callback,arguments)}}function Q(value){if(value instanceof Promise){return value}if(isPromiseAlike(value)){return coerce(value)}else{return fulfill(value)}}Q.resolve=Q;Q.nextTick=nextTick;Q.longStackSupport=false;if(typeof process==="object"&&process&&process.env&&process.env.Q_DEBUG){Q.longStackSupport=true}Q.defer=defer;function defer(){var messages=[],progressListeners=[],resolvedPromise;var deferred=object_create(defer.prototype);var promise=object_create(Promise.prototype);promise.promiseDispatch=function(resolve,op,operands){var args=array_slice(arguments);if(messages){messages.push(args);if(op==="when"&&operands[1]){progressListeners.push(operands[1])}}else{Q.nextTick(function(){resolvedPromise.promiseDispatch.apply(resolvedPromise,args)})}};promise.valueOf=function(){if(messages){return promise}var nearerValue=nearer(resolvedPromise);if(isPromise(nearerValue)){resolvedPromise=nearerValue}return nearerValue};promise.inspect=function(){if(!resolvedPromise){return{state:"pending"}}return resolvedPromise.inspect()};if(Q.longStackSupport&&hasStacks){try{throw new Error}catch(e){promise.stack=e.stack.substring(e.stack.indexOf("\n")+1)}}function become(newPromise){resolvedPromise=newPromise;promise.source=newPromise;array_reduce(messages,function(undefined,message){Q.nextTick(function(){newPromise.promiseDispatch.apply(newPromise,message)})},void 0);messages=void 0;progressListeners=void 0}deferred.promise=promise;deferred.resolve=function(value){if(resolvedPromise){return}become(Q(value))};deferred.fulfill=function(value){if(resolvedPromise){return}become(fulfill(value))};deferred.reject=function(reason){if(resolvedPromise){return}become(reject(reason))};deferred.notify=function(progress){if(resolvedPromise){return}array_reduce(progressListeners,function(undefined,progressListener){Q.nextTick(function(){progressListener(progress)})},void 0)};return deferred}defer.prototype.makeNodeResolver=function(){var self=this;return function(error,value){if(error){self.reject(error)}else if(arguments.length>2){self.resolve(array_slice(arguments,1))}else{self.resolve(value)}}};Q.Promise=promise;Q.promise=promise;function promise(resolver){if(typeof resolver!=="function"){throw new TypeError("resolver must be a function.")}var deferred=defer();try{resolver(deferred.resolve,deferred.reject,deferred.notify)}catch(reason){deferred.reject(reason)}return deferred.promise}promise.race=race;promise.all=all;promise.reject=reject;promise.resolve=Q;Q.passByCopy=function(object){return object};Promise.prototype.passByCopy=function(){return this};Q.join=function(x,y){return Q(x).join(y)};Promise.prototype.join=function(that){return Q([this,that]).spread(function(x,y){if(x===y){return x}else{throw new Error("Can't join: not the same: "+x+" "+y)}})};Q.race=race;function race(answerPs){return promise(function(resolve,reject){for(var i=0,len=answerPs.length;i<len;i++){Q(answerPs[i]).then(resolve,reject)}})}Promise.prototype.race=function(){return this.then(Q.race)};Q.makePromise=Promise;function Promise(descriptor,fallback,inspect){if(fallback===void 0){fallback=function(op){return reject(new Error("Promise does not support operation: "+op))}}if(inspect===void 0){inspect=function(){return{state:"unknown"}}}var promise=object_create(Promise.prototype);promise.promiseDispatch=function(resolve,op,args){var result;try{if(descriptor[op]){result=descriptor[op].apply(promise,args)}else{result=fallback.call(promise,op,args)}}catch(exception){result=reject(exception)}if(resolve){resolve(result)}};promise.inspect=inspect;if(inspect){var inspected=inspect();if(inspected.state==="rejected"){promise.exception=inspected.reason}promise.valueOf=function(){var inspected=inspect();if(inspected.state==="pending"||inspected.state==="rejected"){return promise}return inspected.value}}return promise}Promise.prototype.toString=function(){return"[object Promise]"};Promise.prototype.then=function(fulfilled,rejected,progressed){var self=this;var deferred=defer();var done=false;function _fulfilled(value){try{return typeof fulfilled==="function"?fulfilled(value):value}catch(exception){return reject(exception)}}function _rejected(exception){if(typeof rejected==="function"){makeStackTraceLong(exception,self);try{return rejected(exception)}catch(newException){return reject(newException)}}return reject(exception)}function _progressed(value){return typeof progressed==="function"?progressed(value):value}Q.nextTick(function(){self.promiseDispatch(function(value){if(done){return}done=true;deferred.resolve(_fulfilled(value))},"when",[function(exception){if(done){return}done=true;deferred.resolve(_rejected(exception))}])});self.promiseDispatch(void 0,"when",[void 0,function(value){var newValue;var threw=false;try{newValue=_progressed(value)}catch(e){threw=true;if(Q.onerror){Q.onerror(e)}else{throw e}}if(!threw){deferred.notify(newValue)}}]);return deferred.promise};Q.tap=function(promise,callback){return Q(promise).tap(callback)};Promise.prototype.tap=function(callback){callback=Q(callback);return this.then(function(value){return callback.fcall(value).thenResolve(value)})};Q.when=when;function when(value,fulfilled,rejected,progressed){return Q(value).then(fulfilled,rejected,progressed)}Promise.prototype.thenResolve=function(value){return this.then(function(){return value})};Q.thenResolve=function(promise,value){return Q(promise).thenResolve(value)};Promise.prototype.thenReject=function(reason){return this.then(function(){throw reason})};Q.thenReject=function(promise,reason){return Q(promise).thenReject(reason)};Q.nearer=nearer;function nearer(value){if(isPromise(value)){var inspected=value.inspect();if(inspected.state==="fulfilled"){return inspected.value}}return value}Q.isPromise=isPromise;function isPromise(object){return object instanceof Promise}Q.isPromiseAlike=isPromiseAlike;function isPromiseAlike(object){return isObject(object)&&typeof object.then==="function"}Q.isPending=isPending;function isPending(object){return isPromise(object)&&object.inspect().state==="pending"}Promise.prototype.isPending=function(){return this.inspect().state==="pending"};Q.isFulfilled=isFulfilled;function isFulfilled(object){return!isPromise(object)||object.inspect().state==="fulfilled"}Promise.prototype.isFulfilled=function(){return this.inspect().state==="fulfilled"};Q.isRejected=isRejected;function isRejected(object){return isPromise(object)&&object.inspect().state==="rejected"}Promise.prototype.isRejected=function(){return this.inspect().state==="rejected"};var unhandledReasons=[];var unhandledRejections=[];var reportedUnhandledRejections=[];var trackUnhandledRejections=true;function resetUnhandledRejections(){unhandledReasons.length=0;unhandledRejections.length=0;if(!trackUnhandledRejections){trackUnhandledRejections=true}}function trackRejection(promise,reason){if(!trackUnhandledRejections){return}if(typeof process==="object"&&typeof process.emit==="function"){Q.nextTick.runAfter(function(){if(array_indexOf(unhandledRejections,promise)!==-1){process.emit("unhandledRejection",reason,promise);reportedUnhandledRejections.push(promise)}})}unhandledRejections.push(promise);if(reason&&typeof reason.stack!=="undefined"){unhandledReasons.push(reason.stack)}else{unhandledReasons.push("(no stack) "+reason)}}function untrackRejection(promise){if(!trackUnhandledRejections){return}var at=array_indexOf(unhandledRejections,promise);if(at!==-1){if(typeof process==="object"&&typeof process.emit==="function"){Q.nextTick.runAfter(function(){var atReport=array_indexOf(reportedUnhandledRejections,promise);if(atReport!==-1){process.emit("rejectionHandled",unhandledReasons[at],promise);reportedUnhandledRejections.splice(atReport,1)}})}unhandledRejections.splice(at,1);unhandledReasons.splice(at,1)}}Q.resetUnhandledRejections=resetUnhandledRejections;Q.getUnhandledReasons=function(){return unhandledReasons.slice()};Q.stopUnhandledRejectionTracking=function(){resetUnhandledRejections();trackUnhandledRejections=false};resetUnhandledRejections();Q.reject=reject;function reject(reason){var rejection=Promise({when:function(rejected){if(rejected){untrackRejection(this)}return rejected?rejected(reason):this}},function fallback(){return this},function inspect(){return{state:"rejected",reason:reason}});trackRejection(rejection,reason);return rejection}Q.fulfill=fulfill;function fulfill(value){return Promise({when:function(){return value},get:function(name){return value[name]},set:function(name,rhs){value[name]=rhs},"delete":function(name){delete value[name]},post:function(name,args){if(name===null||name===void 0){return value.apply(void 0,args)}else{return value[name].apply(value,args)}},apply:function(thisp,args){return value.apply(thisp,args)},keys:function(){return object_keys(value)}},void 0,function inspect(){return{state:"fulfilled",value:value}})}function coerce(promise){var deferred=defer();Q.nextTick(function(){try{promise.then(deferred.resolve,deferred.reject,deferred.notify)}catch(exception){deferred.reject(exception)}});return deferred.promise}Q.master=master;function master(object){return Promise({isDef:function(){}},function fallback(op,args){return dispatch(object,op,args)},function(){return Q(object).inspect()})}Q.spread=spread;function spread(value,fulfilled,rejected){return Q(value).spread(fulfilled,rejected)}Promise.prototype.spread=function(fulfilled,rejected){return this.all().then(function(array){return fulfilled.apply(void 0,array)},rejected)};Q.async=async;function async(makeGenerator){return function(){function continuer(verb,arg){var result;if(typeof StopIteration==="undefined"){try{result=generator[verb](arg)}catch(exception){return reject(exception)}if(result.done){return Q(result.value)}else{return when(result.value,callback,errback)}}else{try{result=generator[verb](arg)}catch(exception){if(isStopIteration(exception)){return Q(exception.value)}else{return reject(exception)}}return when(result,callback,errback)}}var generator=makeGenerator.apply(this,arguments);var callback=continuer.bind(continuer,"next");var errback=continuer.bind(continuer,"throw");return callback()}}Q.spawn=spawn;function spawn(makeGenerator){Q.done(Q.async(makeGenerator)())}Q["return"]=_return;function _return(value){throw new QReturnValue(value)}Q.promised=promised;function promised(callback){return function(){return spread([this,all(arguments)],function(self,args){return callback.apply(self,args)})}}Q.dispatch=dispatch;function dispatch(object,op,args){return Q(object).dispatch(op,args)}Promise.prototype.dispatch=function(op,args){var self=this;var deferred=defer();Q.nextTick(function(){self.promiseDispatch(deferred.resolve,op,args)});return deferred.promise};Q.get=function(object,key){return Q(object).dispatch("get",[key])};Promise.prototype.get=function(key){return this.dispatch("get",[key])};Q.set=function(object,key,value){return Q(object).dispatch("set",[key,value])};Promise.prototype.set=function(key,value){return this.dispatch("set",[key,value])};Q.del=Q["delete"]=function(object,key){return Q(object).dispatch("delete",[key])};Promise.prototype.del=Promise.prototype["delete"]=function(key){
|
|
return this.dispatch("delete",[key])};Q.mapply=Q.post=function(object,name,args){return Q(object).dispatch("post",[name,args])};Promise.prototype.mapply=Promise.prototype.post=function(name,args){return this.dispatch("post",[name,args])};Q.send=Q.mcall=Q.invoke=function(object,name){return Q(object).dispatch("post",[name,array_slice(arguments,2)])};Promise.prototype.send=Promise.prototype.mcall=Promise.prototype.invoke=function(name){return this.dispatch("post",[name,array_slice(arguments,1)])};Q.fapply=function(object,args){return Q(object).dispatch("apply",[void 0,args])};Promise.prototype.fapply=function(args){return this.dispatch("apply",[void 0,args])};Q["try"]=Q.fcall=function(object){return Q(object).dispatch("apply",[void 0,array_slice(arguments,1)])};Promise.prototype.fcall=function(){return this.dispatch("apply",[void 0,array_slice(arguments)])};Q.fbind=function(object){var promise=Q(object);var args=array_slice(arguments,1);return function fbound(){return promise.dispatch("apply",[this,args.concat(array_slice(arguments))])}};Promise.prototype.fbind=function(){var promise=this;var args=array_slice(arguments);return function fbound(){return promise.dispatch("apply",[this,args.concat(array_slice(arguments))])}};Q.keys=function(object){return Q(object).dispatch("keys",[])};Promise.prototype.keys=function(){return this.dispatch("keys",[])};Q.all=all;function all(promises){return when(promises,function(promises){var pendingCount=0;var deferred=defer();array_reduce(promises,function(undefined,promise,index){var snapshot;if(isPromise(promise)&&(snapshot=promise.inspect()).state==="fulfilled"){promises[index]=snapshot.value}else{++pendingCount;when(promise,function(value){promises[index]=value;if(--pendingCount===0){deferred.resolve(promises)}},deferred.reject,function(progress){deferred.notify({index:index,value:progress})})}},void 0);if(pendingCount===0){deferred.resolve(promises)}return deferred.promise})}Promise.prototype.all=function(){return all(this)};Q.any=any;function any(promises){if(promises.length===0){return Q.resolve()}var deferred=Q.defer();var pendingCount=0;array_reduce(promises,function(prev,current,index){var promise=promises[index];pendingCount++;when(promise,onFulfilled,onRejected,onProgress);function onFulfilled(result){deferred.resolve(result)}function onRejected(){pendingCount--;if(pendingCount===0){deferred.reject(new Error("Can't get fulfillment value from any promise, all "+"promises were rejected."))}}function onProgress(progress){deferred.notify({index:index,value:progress})}},undefined);return deferred.promise}Promise.prototype.any=function(){return any(this)};Q.allResolved=deprecate(allResolved,"allResolved","allSettled");function allResolved(promises){return when(promises,function(promises){promises=array_map(promises,Q);return when(all(array_map(promises,function(promise){return when(promise,noop,noop)})),function(){return promises})})}Promise.prototype.allResolved=function(){return allResolved(this)};Q.allSettled=allSettled;function allSettled(promises){return Q(promises).allSettled()}Promise.prototype.allSettled=function(){return this.then(function(promises){return all(array_map(promises,function(promise){promise=Q(promise);function regardless(){return promise.inspect()}return promise.then(regardless,regardless)}))})};Q.fail=Q["catch"]=function(object,rejected){return Q(object).then(void 0,rejected)};Promise.prototype.fail=Promise.prototype["catch"]=function(rejected){return this.then(void 0,rejected)};Q.progress=progress;function progress(object,progressed){return Q(object).then(void 0,void 0,progressed)}Promise.prototype.progress=function(progressed){return this.then(void 0,void 0,progressed)};Q.fin=Q["finally"]=function(object,callback){return Q(object)["finally"](callback)};Promise.prototype.fin=Promise.prototype["finally"]=function(callback){callback=Q(callback);return this.then(function(value){return callback.fcall().then(function(){return value})},function(reason){return callback.fcall().then(function(){throw reason})})};Q.done=function(object,fulfilled,rejected,progress){return Q(object).done(fulfilled,rejected,progress)};Promise.prototype.done=function(fulfilled,rejected,progress){var onUnhandledError=function(error){Q.nextTick(function(){makeStackTraceLong(error,promise);if(Q.onerror){Q.onerror(error)}else{throw error}})};var promise=fulfilled||rejected||progress?this.then(fulfilled,rejected,progress):this;if(typeof process==="object"&&process&&process.domain){onUnhandledError=process.domain.bind(onUnhandledError)}promise.then(void 0,onUnhandledError)};Q.timeout=function(object,ms,error){return Q(object).timeout(ms,error)};Promise.prototype.timeout=function(ms,error){var deferred=defer();var timeoutId=setTimeout(function(){if(!error||"string"===typeof error){error=new Error(error||"Timed out after "+ms+" ms");error.code="ETIMEDOUT"}deferred.reject(error)},ms);this.then(function(value){clearTimeout(timeoutId);deferred.resolve(value)},function(exception){clearTimeout(timeoutId);deferred.reject(exception)},deferred.notify);return deferred.promise};Q.delay=function(object,timeout){if(timeout===void 0){timeout=object;object=void 0}return Q(object).delay(timeout)};Promise.prototype.delay=function(timeout){return this.then(function(value){var deferred=defer();setTimeout(function(){deferred.resolve(value)},timeout);return deferred.promise})};Q.nfapply=function(callback,args){return Q(callback).nfapply(args)};Promise.prototype.nfapply=function(args){var deferred=defer();var nodeArgs=array_slice(args);nodeArgs.push(deferred.makeNodeResolver());this.fapply(nodeArgs).fail(deferred.reject);return deferred.promise};Q.nfcall=function(callback){var args=array_slice(arguments,1);return Q(callback).nfapply(args)};Promise.prototype.nfcall=function(){var nodeArgs=array_slice(arguments);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.fapply(nodeArgs).fail(deferred.reject);return deferred.promise};Q.nfbind=Q.denodeify=function(callback){var baseArgs=array_slice(arguments,1);return function(){var nodeArgs=baseArgs.concat(array_slice(arguments));var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());Q(callback).fapply(nodeArgs).fail(deferred.reject);return deferred.promise}};Promise.prototype.nfbind=Promise.prototype.denodeify=function(){var args=array_slice(arguments);args.unshift(this);return Q.denodeify.apply(void 0,args)};Q.nbind=function(callback,thisp){var baseArgs=array_slice(arguments,2);return function(){var nodeArgs=baseArgs.concat(array_slice(arguments));var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());function bound(){return callback.apply(thisp,arguments)}Q(bound).fapply(nodeArgs).fail(deferred.reject);return deferred.promise}};Promise.prototype.nbind=function(){var args=array_slice(arguments,0);args.unshift(this);return Q.nbind.apply(void 0,args)};Q.nmapply=Q.npost=function(object,name,args){return Q(object).npost(name,args)};Promise.prototype.nmapply=Promise.prototype.npost=function(name,args){var nodeArgs=array_slice(args||[]);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Q.nsend=Q.nmcall=Q.ninvoke=function(object,name){var nodeArgs=array_slice(arguments,2);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());Q(object).dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Promise.prototype.nsend=Promise.prototype.nmcall=Promise.prototype.ninvoke=function(name){var nodeArgs=array_slice(arguments,1);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Q.nodeify=nodeify;function nodeify(object,nodeback){return Q(object).nodeify(nodeback)}Promise.prototype.nodeify=function(nodeback){if(nodeback){this.then(function(value){Q.nextTick(function(){nodeback(null,value)})},function(error){Q.nextTick(function(){nodeback(error)})})}else{return this}};Q.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var qEndingLine=captureLine();return Q})}).call(this,require("_process"))},{_process:14}],16:[function(require,module,exports){(function(global){var matrixcs=require("./lib/matrix");matrixcs.request(require("browser-request"));module.exports=matrixcs;global.matrixcs=matrixcs}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./lib/matrix":3,"browser-request":12}]},{},[16]); |