polfan-server-js-client 0.1.1 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/.gitmodules +3 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  3. package/.idea/polfan-server-js-client.iml +3 -1
  4. package/.idea/vcs.xml +1 -1
  5. package/README.md +17 -17
  6. package/build/index.js +3282 -1
  7. package/build/index.js.map +1 -1
  8. package/build/types/AbstractChatClient.d.ts +26 -9
  9. package/build/types/AbstractRestClient.d.ts +1 -1
  10. package/build/types/EventTarget.d.ts +2 -0
  11. package/build/types/IndexedObjectCollection.d.ts +6 -3
  12. package/build/types/Permissions.d.ts +65 -0
  13. package/build/types/WebSocketChatClient.d.ts +1 -1
  14. package/build/types/index.d.ts +4 -1
  15. package/build/types/state-tracker/AsyncUtils.d.ts +14 -0
  16. package/build/types/state-tracker/ChatStateTracker.d.ts +26 -0
  17. package/build/types/state-tracker/MessagesManager.d.ts +39 -0
  18. package/build/types/state-tracker/PermissionsManager.d.ts +41 -0
  19. package/build/types/state-tracker/RoomsManager.d.ts +49 -0
  20. package/build/types/state-tracker/SpacesManager.d.ts +52 -0
  21. package/build/types/state-tracker/functions.d.ts +2 -0
  22. package/build/types/types/src/index.d.ts +82 -0
  23. package/build/types/types/src/schemes/AckReport.d.ts +7 -0
  24. package/build/types/types/src/schemes/ChatLocation.d.ts +5 -0
  25. package/build/types/types/src/schemes/Envelope.d.ts +5 -0
  26. package/build/types/types/src/schemes/Message.d.ts +7 -0
  27. package/build/types/types/src/schemes/PermissionOverwritesValue.d.ts +4 -0
  28. package/build/types/types/src/schemes/Role.d.ts +6 -0
  29. package/build/types/types/src/schemes/Room.d.ts +10 -0
  30. package/build/types/types/src/schemes/RoomMember.d.ts +7 -0
  31. package/build/types/types/src/schemes/RoomSummary.d.ts +5 -0
  32. package/build/types/types/src/schemes/Space.d.ts +6 -0
  33. package/build/types/types/src/schemes/SpaceMember.d.ts +5 -0
  34. package/build/types/types/src/schemes/Topic.d.ts +5 -0
  35. package/build/types/types/src/schemes/User.d.ts +8 -0
  36. package/build/types/types/src/schemes/UserState.d.ts +6 -0
  37. package/build/types/types/src/schemes/commands/Ack.d.ts +5 -0
  38. package/build/types/types/src/schemes/commands/AssignRole.d.ts +6 -0
  39. package/build/types/types/src/schemes/commands/CreateMessage.d.ts +5 -0
  40. package/build/types/types/src/schemes/commands/CreateOwner.d.ts +5 -0
  41. package/build/types/types/src/schemes/commands/CreateRole.d.ts +5 -0
  42. package/build/types/types/src/schemes/commands/CreateRoom.d.ts +7 -0
  43. package/build/types/types/src/schemes/commands/CreateSpace.d.ts +3 -0
  44. package/build/types/types/src/schemes/commands/CreateTopic.d.ts +12 -0
  45. package/build/types/types/src/schemes/commands/DeassignRole.d.ts +6 -0
  46. package/build/types/types/src/schemes/commands/DeleteOwner.d.ts +5 -0
  47. package/build/types/types/src/schemes/commands/DeleteRole.d.ts +4 -0
  48. package/build/types/types/src/schemes/commands/DeleteRoom.d.ts +3 -0
  49. package/build/types/types/src/schemes/commands/DeleteSpace.d.ts +3 -0
  50. package/build/types/types/src/schemes/commands/DeleteTopic.d.ts +4 -0
  51. package/build/types/types/src/schemes/commands/GetAckReports.d.ts +4 -0
  52. package/build/types/types/src/schemes/commands/GetComputedPermissions.d.ts +4 -0
  53. package/build/types/types/src/schemes/commands/GetOwners.d.ts +4 -0
  54. package/build/types/types/src/schemes/commands/GetPermissionOverwriteTargets.d.ts +4 -0
  55. package/build/types/types/src/schemes/commands/GetPermissionOverwrites.d.ts +6 -0
  56. package/build/types/types/src/schemes/commands/GetRoomMembers.d.ts +3 -0
  57. package/build/types/types/src/schemes/commands/GetSession.d.ts +2 -0
  58. package/build/types/types/src/schemes/commands/GetSpaceMembers.d.ts +3 -0
  59. package/build/types/types/src/schemes/commands/GetSpaceRooms.d.ts +3 -0
  60. package/build/types/types/src/schemes/commands/JoinRoom.d.ts +3 -0
  61. package/build/types/types/src/schemes/commands/JoinSpace.d.ts +3 -0
  62. package/build/types/types/src/schemes/commands/LeaveRoom.d.ts +3 -0
  63. package/build/types/types/src/schemes/commands/LeaveSpace.d.ts +3 -0
  64. package/build/types/types/src/schemes/commands/SetPermissionOverwrites.d.ts +8 -0
  65. package/build/types/types/src/schemes/commands/UpdateRole.d.ts +7 -0
  66. package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +5 -0
  67. package/build/types/types/src/schemes/commands/UpdateSpace.d.ts +4 -0
  68. package/build/types/types/src/schemes/events/AckReports.d.ts +4 -0
  69. package/build/types/types/src/schemes/events/Bye.d.ts +3 -0
  70. package/build/types/types/src/schemes/events/ComputedPermissions.d.ts +5 -0
  71. package/build/types/types/src/schemes/events/Error.d.ts +4 -0
  72. package/build/types/types/src/schemes/events/NewMessage.d.ts +6 -0
  73. package/build/types/types/src/schemes/events/NewRole.d.ts +5 -0
  74. package/build/types/types/src/schemes/events/NewRoom.d.ts +5 -0
  75. package/build/types/types/src/schemes/events/NewTopic.d.ts +5 -0
  76. package/build/types/types/src/schemes/events/Ok.d.ts +2 -0
  77. package/build/types/types/src/schemes/events/Owners.d.ts +8 -0
  78. package/build/types/types/src/schemes/events/PermissionOverwriteTargets.d.ts +10 -0
  79. package/build/types/types/src/schemes/events/PermissionOverwrites.d.ts +8 -0
  80. package/build/types/types/src/schemes/events/PermissionOverwritesUpdated.d.ts +8 -0
  81. package/build/types/types/src/schemes/events/RoleDeleted.d.ts +4 -0
  82. package/build/types/types/src/schemes/events/RoleUpdated.d.ts +5 -0
  83. package/build/types/types/src/schemes/events/RoomDeleted.d.ts +3 -0
  84. package/build/types/types/src/schemes/events/RoomJoined.d.ts +4 -0
  85. package/build/types/types/src/schemes/events/RoomLeft.d.ts +3 -0
  86. package/build/types/types/src/schemes/events/RoomMemberJoined.d.ts +5 -0
  87. package/build/types/types/src/schemes/events/RoomMemberLeft.d.ts +4 -0
  88. package/build/types/types/src/schemes/events/RoomMemberUpdated.d.ts +6 -0
  89. package/build/types/types/src/schemes/events/RoomMembers.d.ts +5 -0
  90. package/build/types/types/src/schemes/events/RoomUpdated.d.ts +4 -0
  91. package/build/types/types/src/schemes/events/Session.d.ts +7 -0
  92. package/build/types/types/src/schemes/events/SpaceDeleted.d.ts +3 -0
  93. package/build/types/types/src/schemes/events/SpaceJoined.d.ts +4 -0
  94. package/build/types/types/src/schemes/events/SpaceLeft.d.ts +3 -0
  95. package/build/types/types/src/schemes/events/SpaceMemberJoined.d.ts +5 -0
  96. package/build/types/types/src/schemes/events/SpaceMemberLeft.d.ts +4 -0
  97. package/build/types/types/src/schemes/events/SpaceMemberUpdated.d.ts +6 -0
  98. package/build/types/types/src/schemes/events/SpaceMembers.d.ts +5 -0
  99. package/build/types/types/src/schemes/events/SpaceRooms.d.ts +5 -0
  100. package/build/types/types/src/schemes/events/SpaceUpdated.d.ts +4 -0
  101. package/build/types/types/src/schemes/events/TopicDeleted.d.ts +4 -0
  102. package/build/types/types/src/schemes/events/UserUpdated.d.ts +4 -0
  103. package/jest.config.ts +199 -0
  104. package/package.json +4 -22
  105. package/src/AbstractChatClient.ts +50 -16
  106. package/src/AbstractRestClient.ts +65 -65
  107. package/src/AuthClient.ts +1 -1
  108. package/src/EventTarget.ts +9 -0
  109. package/src/IndexedObjectCollection.ts +21 -4
  110. package/src/Permissions.ts +46 -0
  111. package/src/WebApiChatClient.ts +2 -2
  112. package/src/WebSocketChatClient.ts +6 -5
  113. package/src/index.ts +7 -2
  114. package/src/state-tracker/AsyncUtils.ts +38 -0
  115. package/src/state-tracker/ChatStateTracker.ts +42 -0
  116. package/src/state-tracker/MessagesManager.ts +154 -0
  117. package/src/state-tracker/PermissionsManager.ts +306 -0
  118. package/src/state-tracker/RoomsManager.ts +272 -0
  119. package/src/state-tracker/SpacesManager.ts +267 -0
  120. package/src/state-tracker/functions.ts +25 -0
  121. package/src/types/README.md +2 -0
  122. package/src/types/package-lock.json +31 -0
  123. package/src/types/package.json +16 -0
  124. package/src/types/src/index.ts +168 -0
  125. package/src/types/src/schemes/AckReport.ts +7 -0
  126. package/src/types/src/schemes/ChatLocation.ts +5 -0
  127. package/src/types/src/schemes/Envelope.ts +5 -0
  128. package/src/types/src/schemes/Message.ts +8 -0
  129. package/src/types/src/schemes/PermissionOverwritesValue.ts +4 -0
  130. package/src/types/src/schemes/Role.ts +6 -0
  131. package/src/types/src/schemes/Room.ts +12 -0
  132. package/src/types/src/schemes/RoomMember.ts +8 -0
  133. package/src/types/src/schemes/RoomSummary.ts +5 -0
  134. package/src/types/src/schemes/Space.ts +7 -0
  135. package/src/types/src/schemes/SpaceMember.ts +6 -0
  136. package/src/types/src/schemes/Topic.ts +5 -0
  137. package/src/types/src/schemes/User.ts +9 -0
  138. package/src/types/src/schemes/UserState.ts +7 -0
  139. package/src/types/src/schemes/commands/Ack.ts +6 -0
  140. package/src/types/src/schemes/commands/AssignRole.ts +7 -0
  141. package/src/types/src/schemes/commands/CreateMessage.ts +6 -0
  142. package/src/types/src/schemes/commands/CreateOwner.ts +6 -0
  143. package/src/types/src/schemes/commands/CreateRole.ts +5 -0
  144. package/src/types/src/schemes/commands/CreateRoom.ts +8 -0
  145. package/src/types/src/schemes/commands/CreateSpace.ts +3 -0
  146. package/src/types/src/schemes/commands/CreateTopic.ts +14 -0
  147. package/src/types/src/schemes/commands/DeassignRole.ts +7 -0
  148. package/src/types/src/schemes/commands/DeleteOwner.ts +6 -0
  149. package/src/types/src/schemes/commands/DeleteRole.ts +4 -0
  150. package/src/types/src/schemes/commands/DeleteRoom.ts +3 -0
  151. package/src/types/src/schemes/commands/DeleteSpace.ts +3 -0
  152. package/src/types/src/schemes/commands/DeleteTopic.ts +5 -0
  153. package/src/types/src/schemes/commands/GetAckReports.ts +5 -0
  154. package/src/types/src/schemes/commands/GetComputedPermissions.ts +5 -0
  155. package/src/types/src/schemes/commands/GetOwners.ts +5 -0
  156. package/src/types/src/schemes/commands/GetPermissionOverwriteTargets.ts +5 -0
  157. package/src/types/src/schemes/commands/GetPermissionOverwrites.ts +7 -0
  158. package/src/types/src/schemes/commands/GetRoomMembers.ts +3 -0
  159. package/src/types/src/schemes/commands/GetSession.ts +2 -0
  160. package/src/types/src/schemes/commands/GetSpaceMembers.ts +3 -0
  161. package/src/types/src/schemes/commands/GetSpaceRooms.ts +3 -0
  162. package/src/types/src/schemes/commands/JoinRoom.ts +3 -0
  163. package/src/types/src/schemes/commands/JoinSpace.ts +3 -0
  164. package/src/types/src/schemes/commands/LeaveRoom.ts +3 -0
  165. package/src/types/src/schemes/commands/LeaveSpace.ts +3 -0
  166. package/src/types/src/schemes/commands/SetPermissionOverwrites.ts +9 -0
  167. package/src/types/src/schemes/commands/UpdateRole.ts +7 -0
  168. package/src/types/src/schemes/commands/UpdateRoom.ts +5 -0
  169. package/src/types/src/schemes/commands/UpdateSpace.ts +4 -0
  170. package/src/types/src/schemes/events/AckReports.ts +5 -0
  171. package/src/types/src/schemes/events/Bye.ts +3 -0
  172. package/src/types/src/schemes/events/ComputedPermissions.ts +6 -0
  173. package/src/types/src/schemes/events/Error.ts +4 -0
  174. package/src/types/src/schemes/events/NewMessage.ts +7 -0
  175. package/src/types/src/schemes/events/NewRole.ts +6 -0
  176. package/src/types/src/schemes/events/NewRoom.ts +6 -0
  177. package/src/types/src/schemes/events/NewTopic.ts +6 -0
  178. package/src/types/src/schemes/events/Ok.ts +3 -0
  179. package/src/types/src/schemes/events/Owners.ts +9 -0
  180. package/src/types/src/schemes/events/PermissionOverwriteTargets.ts +11 -0
  181. package/src/types/src/schemes/events/PermissionOverwrites.ts +9 -0
  182. package/src/types/src/schemes/events/PermissionOverwritesUpdated.ts +9 -0
  183. package/src/types/src/schemes/events/RoleDeleted.ts +4 -0
  184. package/src/types/src/schemes/events/RoleUpdated.ts +6 -0
  185. package/src/types/src/schemes/events/RoomDeleted.ts +3 -0
  186. package/src/types/src/schemes/events/RoomJoined.ts +5 -0
  187. package/src/types/src/schemes/events/RoomLeft.ts +3 -0
  188. package/src/types/src/schemes/events/RoomMemberJoined.ts +6 -0
  189. package/src/types/src/schemes/events/RoomMemberLeft.ts +4 -0
  190. package/src/types/src/schemes/events/RoomMemberUpdated.ts +7 -0
  191. package/src/types/src/schemes/events/RoomMembers.ts +6 -0
  192. package/src/types/src/schemes/events/RoomUpdated.ts +5 -0
  193. package/src/types/src/schemes/events/Session.ts +8 -0
  194. package/src/types/src/schemes/events/SpaceDeleted.ts +3 -0
  195. package/src/types/src/schemes/events/SpaceJoined.ts +5 -0
  196. package/src/types/src/schemes/events/SpaceLeft.ts +3 -0
  197. package/src/types/src/schemes/events/SpaceMemberJoined.ts +6 -0
  198. package/src/types/src/schemes/events/SpaceMemberLeft.ts +4 -0
  199. package/src/types/src/schemes/events/SpaceMemberUpdated.ts +7 -0
  200. package/src/types/src/schemes/events/SpaceMembers.ts +6 -0
  201. package/src/types/src/schemes/events/SpaceRooms.ts +6 -0
  202. package/src/types/src/schemes/events/SpaceUpdated.ts +5 -0
  203. package/src/types/src/schemes/events/TopicDeleted.ts +5 -0
  204. package/src/types/src/schemes/events/UserUpdated.ts +5 -0
  205. package/src/types/tsconfig.json +75 -0
  206. package/tests/async-utils.test.ts +30 -0
  207. package/tests/permissions.test.ts +14 -0
  208. package/tests/space-roles.test.ts +43 -0
  209. package/webpack.config.js +1 -1
  210. package/build/types/ChatStateTracker.d.ts +0 -54
  211. package/src/ChatStateTracker.ts +0 -326
package/build/index.js CHANGED
@@ -1,2 +1,3283 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PServ=e():t.PServ=e()}(self,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function o(t,e,r){return(e=i(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){var e=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===r(e)?e:String(e)}t.r(e),t.d(e,{AuthClient:()=>zt,IndexedCollection:()=>D,IndexedObjectCollection:()=>F,ObservableIndexedCollection:()=>J,ObservableIndexedObjectCollection:()=>B,WebApiChatClient:()=>Lt,WebSocketChatClient:()=>dt});var a=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),o(this,"events",new Map),o(this,"onceEvents",new Map)}var e,r,i;return e=t,(r=[{key:"on",value:function(t,e){return this.addHandler(this.events,t,e),this}},{key:"once",value:function(t,e){return this.addHandler(this.onceEvents,t,e),this}},{key:"emit",value:function(t,e){return this.callHandlers(this.events,t,e),this.callHandlers(this.onceEvents,t,e),this.onceEvents.delete(t),this}},{key:"addHandler",value:function(t,e,r){var n,o=null!==(n=t.get(e))&&void 0!==n?n:[];o.push(r),t.set(e,o)}},{key:"callHandlers",value:function(t,e,r){var n;null===(n=t.get(e))||void 0===n||n.forEach((function(t){return t(r)}))}}])&&n(e.prototype,r),i&&n(e,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,g(n.key),n)}}function l(){return l="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=f(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},l.apply(this,arguments)}function f(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=v(t)););return t}function h(t,e){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},h(t,e)}function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=v(t);if(e){var o=v(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return d(this,r)}}function d(t,e){if(e&&("object"===c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return y(t)}function y(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}function m(t,e,r){return(e=g(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){var e=function(t,e){if("object"!==c(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===c(e)?e:String(e)}var b=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&h(t,e)}(i,t);var e,r,n,o=p(i);function i(){var t;u(this,i);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return m(y(t=o.call.apply(o,[this].concat(r))),"awaitingResponse",new Map),m(y(t),"sentCounter",0),t}return e=i,r=[{key:"on",value:function(t,e){return l(v(i.prototype),"on",this).call(this,t,e)}},{key:"once",value:function(t,e){return l(v(i.prototype),"once",this).call(this,t,e)}},{key:"createEnvelope",value:function(t,e){return{type:t,data:e,ref:(++this.sentCounter).toString()}}},{key:"createPromiseFromCommandEnvelope",value:function(t){var e=this;return new Promise((function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return e.awaitingResponse.set(t.ref,n)}))}},{key:"handleIncomingEnvelope",value:function(t){if(this.awaitingResponse.has(t.ref)){var e="Error"===t.type;this.awaitingResponse.get(t.ref)[0]({data:e?null:t.data,error:e?t.data:null}),this.awaitingResponse.delete(t.ref)}}},{key:"handleEnvelopeSendError",value:function(t,e){this.awaitingResponse.has(t.ref)&&(this.awaitingResponse.get(t.ref)[0](e),this.awaitingResponse.delete(t.ref))}}],r&&s(e.prototype,r),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),i}(a);function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function k(){return k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=S(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},k.apply(this,arguments)}function S(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=P(t)););return t}function E(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&j(t,e)}function j(t,e){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},j(t,e)}function x(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=P(t);if(e){var o=P(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return O(this,r)}}function O(t,e){if(e&&("object"===w(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return L(t)}function L(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function P(t){return P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},P(t)}function _(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=T(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function R(t){return function(t){if(Array.isArray(t))return I(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||T(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(t,e){if(t){if("string"==typeof t)return I(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(t,e):void 0}}function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function M(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function N(t,e,r){return e&&A(t.prototype,e),r&&A(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function G(t,e,r){return(e=C(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function C(t){var e=function(t,e){if("object"!==w(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===w(e)?e:String(e)}var D=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];M(this,t),G(this,"_items",new Map),this.set.apply(this,R(e))}return N(t,[{key:"items",get:function(){return this._items}},{key:"length",get:function(){return this._items.size}},{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this._items.set(i[0],i[1])}}},{key:"get",value:function(t){return this.items.get(t)}},{key:"has",value:function(t){return this.items.has(t)}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this.items.delete(i)}}},{key:"deleteAll",value:function(){this.items.clear()}},{key:"findBy",value:function(e,r){for(var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t;!((n=this.items.entries().next().value).done||o&&i.length===o);)n[1][e]===r&&i.set(n);return i}},{key:"map",value:function(t){return Array.from(this.items.entries()).map((function(e){return t(e[1],e[0])}))}}]),t}(),F=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];M(this,t),this.id=e,G(this,"_items",void 0),this._items=new D,this.set.apply(this,R(r))}return N(t,[{key:"items",get:function(){return Array.from(this._items.items.values())}},{key:"length",get:function(){return this._items.length}},{key:"set",value:function(){for(var t,e=this,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this._items).set.apply(t,R(n.map((function(t){return[e.getId(t),t]}))))}},{key:"get",value:function(t){return this._items.get(t)}},{key:"getAt",value:function(t){return this.items[t]}},{key:"has",value:function(t){return this._items.has(t)}},{key:"delete",value:function(){var t;(t=this._items).delete.apply(t,arguments)}},{key:"deleteAll",value:function(){this._items.deleteAll()}},{key:"findBy",value:function(e,r){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t(this.id),a=_(this.items);try{for(a.s();!(n=a.n()).done;){var c=n.value;if(o&&i.length===o)break;c[e]===r&&i.set(c)}}catch(t){a.e(t)}finally{a.f()}return i}},{key:"map",value:function(t){return this.items.map(t)}},{key:"getId",value:function(t){return"function"==typeof this.id?this.id(t):t[this.id]}}]),t}(),J=function(t){E(r,t);var e=x(r);function r(){var t;M(this,r);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return G(L(t=e.call.apply(e,[this].concat(o))),"eventTarget",void 0),t}return N(r,[{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"set",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{setItems:e.map((function(t){return t[0]}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(D),B=function(t){E(r,t);var e=x(r);function r(t){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return M(this,r),(n=e.call(this,t,o)).id=t,G(L(n),"eventTarget",void 0),n.eventTarget=new a,n}return N(r,[{key:"set",value:function(){for(var t,e=this,n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];o.length&&((t=k(P(r.prototype),"set",this)).call.apply(t,[this].concat(o)),this.eventTarget.emit("change",{setItems:o.map((function(t){return e.getId(t)}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(F);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function Y(t){return function(t){if(Array.isArray(t))return Q(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Q(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function H(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */H=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==U(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function z(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function $(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){z(i,n,o,a,c,"next",t)}function c(t){z(i,n,o,a,c,"throw",t)}a(void 0)}))}}function W(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function q(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t,e){if("object"!==U(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===U(e)?e:String(e)}var V,X=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.client=e,q(this,"joinedSpaces",new B("id")),q(this,"joinedRooms",new B("id")),q(this,"spacesRoles",new D),q(this,"roomsTopics",new D),q(this,"topicsMessages",new D),q(this,"spacesRooms",new D),q(this,"spacesMembers",new D),q(this,"roomsMembers",new D),q(this,"deferredGetters",new D),q(this,"reconnecting",!1),q(this,"me",null),this.bind()}var e,r,n,o,i,a,c,u,s,l,f,h,p;return e=t,r=[{key:"getMe",value:(p=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.me);case 3:case"end":return t.stop()}}),t,this)}))),function(){return p.apply(this,arguments)})},{key:"getJoinedSpaces",value:(h=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedSpaces);case 3:case"end":return t.stop()}}),t,this)}))),function(){return h.apply(this,arguments)})},{key:"getJoinedRooms",value:(f=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedRooms);case 3:case"end":return t.stop()}}),t,this)}))),function(){return f.apply(this,arguments)})},{key:"getSpaceRoles",value:(l=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.spacesRoles.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)})},{key:"getRoomTopics",value:(s=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.roomsTopics.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return s.apply(this,arguments)})},{key:"getTopicMessages",value:(u=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.topicsMessages.get(e));case 1:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)})},{key:"getSpaceRooms",value:(c=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-rooms-".concat(e),this.spacesRooms.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceRooms",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesRooms.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)})},{key:"getSpaceMembers",value:(a=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-members-".concat(e),this.spacesMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getRoomMembers",value:(i=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="rooms-members-".concat(e),this.roomsMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetRoomMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.roomsMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return i.apply(this,arguments)})},{key:"deferredGetterReadiness",value:(o=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.deferredGetters.has(e)){t.next=3;break}return t.next=3,null===(r=this.deferredGetters.get(e))||void 0===r?void 0:r.promise;case 3:case"end":return t.stop()}}),t,this)}))),function(t){return o.apply(this,arguments)})},{key:"bind",value:function(){var t=this;this.client.on(this.client.Event.disconnect,(function(e){return t.handleDisconnect(e)})),this.client.on("NewMessage",(function(e){return t.handleNewMessage(e)})),this.client.on("NewRole",(function(e){return t.handleNewRole(e)})),this.client.on("NewRoom",(function(e){return t.handleNewRoom(e)})),this.client.on("NewTopic",(function(e){return t.handleNewTopic(e)})),this.client.on("RoleDeleted",(function(e){return t.handleRoleDeleted(e)})),this.client.on("RoomDeleted",(function(e){return t.handleRoomDeleted(e)})),this.client.on("RoomJoined",(function(e){return t.handleRoomJoined(e)})),this.client.on("RoomLeft",(function(e){return t.handleRoomLeft(e)})),this.client.on("RoomMemberJoined",(function(e){return t.handleRoomMemberJoined(e)})),this.client.on("RoomMemberLeft",(function(e){return t.handleRoomMemberLeft(e)})),this.client.on("RoomMembers",(function(e){return t.handleRoomMembers(e)})),this.client.on("Session",(function(e){return t.handleSession(e)})),this.client.on("SpaceDeleted",(function(e){return t.handleSpaceDeleted(e)})),this.client.on("SpaceJoined",(function(e){return t.handleSpaceJoined(e)})),this.client.on("SpaceLeft",(function(e){return t.handleSpaceLeft(e)})),this.client.on("SpaceMemberJoined",(function(e){return t.handleSpaceMemberJoined(e)})),this.client.on("SpaceMemberLeft",(function(e){return t.handleSpaceMemberLeft(e)})),this.client.on("SpaceMembers",(function(e){return t.handleSpaceMembers(e)})),this.client.on("SpaceRooms",(function(e){return t.handleSpaceRooms(e)})),this.client.on("SpaceMemberUpdate",(function(e){return t.handleSpaceMemberUpdate(e)})),this.client.on("TopicDeleted",(function(e){return t.handleTopicDeleted(e)}))}},{key:"createDeferredGetter",value:function(t){if(!this.deferredGetters.has(t)){var e={promise:void 0,resolver:void 0};e.promise=new Promise((function(t){return e.resolver=t})),this.deferredGetters.set([t,e])}}},{key:"handleDisconnect",value:function(t){t&&(this.reconnecting=!0)}},{key:"handleNewMessage",value:function(t){this.topicsMessages.get(t.topicId).set(t.message)}},{key:"handleNewRole",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.set(t.role),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleNewRoom",value:function(t){var e;null===(e=this.spacesRooms.get(t.spaceId))||void 0===e||e.set(t.summary)}},{key:"handleNewTopic",value:function(t){var e=this.roomsTopics.get(t.roomId);e.set(t.topic),this.joinedRooms.get(t.roomId).topics=e.items}},{key:"handleRoleDeleted",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.delete(t.id),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleRoomDeleted",value:function(t){t.spaceId&&this.spacesRooms.get(t.spaceId).delete(t.id),this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomJoined",value:function(t){this.addJoinedRooms(t.room)}},{key:"addJoinedRooms",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.roomsTopics).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.topics)]})))),(e=this.joinedRooms).set.apply(e,n)}},{key:"handleRoomLeft",value:function(t){this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomMemberJoined",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).set(t.member)}},{key:"handleRoomMemberLeft",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).delete(t.userId)}},{key:"handleRoomMembers",value:function(t){var e;this.roomsMembers.has(t.id)||(this.roomsMembers.set([t.id,new B((function(t){var e;return null!==(e=null==t?void 0:t.user.id)&&void 0!==e?e:t.spaceMember.user.id}),t.members)]),null===(e=this.deferredGetters.get("rooms-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSession",value:function(t){var e;this.me=t.user,this.me&&!this.reconnecting||(this.reconnecting=!1,this.joinedRooms.deleteAll(),this.roomsTopics.deleteAll(),this.roomsMembers.deleteAll(),this.joinedSpaces.deleteAll(),this.spacesRoles.deleteAll(),this.spacesRooms.deleteAll(),this.spacesMembers.deleteAll(),this.addJoinedRooms.apply(this,Y(t.state.rooms)),this.addJoinedSpaces.apply(this,Y(t.state.spaces)),null===(e=this.deferredGetters.get("session"))||void 0===e||e.resolver())}},{key:"handleSpaceDeleted",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceJoined",value:function(t){this.addJoinedSpaces(t.space)}},{key:"addJoinedSpaces",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.spacesRoles).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.roles)]})))),(e=this.joinedSpaces).set.apply(e,n)}},{key:"handleSpaceLeft",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceMemberJoined",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleSpaceMemberLeft",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).delete(t.userId)}},{key:"handleSpaceMembers",value:function(t){var e;this.spacesMembers.has(t.id)||(this.spacesMembers.set([t.id,new B((function(t){return null==t?void 0:t.user.id}),t.members)]),null===(e=this.deferredGetters.get("spaces-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceRooms",value:function(t){var e;this.spacesRooms.has(t.id)||(this.spacesRooms.set([t.id,new B("id",t.summaries)]),null===(e=this.deferredGetters.get("spaces-rooms-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceMemberUpdate",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleTopicDeleted",value:function(t){var e=this.roomsTopics.get(t.roomId);e.delete(t.id),this.joinedRooms.get(t.roomId).topics=e.items}}],r&&W(e.prototype,r),n&&W(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function tt(t){return function(t){if(Array.isArray(t))return et(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return et(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return et(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function et(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function rt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */rt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Z(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function ot(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){nt(i,n,o,a,c,"next",t)}function c(t){nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function it(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,ht(n.key),n)}}function at(t,e){return at=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},at(t,e)}function ct(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=lt(t);if(e){var o=lt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return ut(this,r)}}function ut(t,e){if(e&&("object"===Z(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return st(t)}function st(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function lt(t){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},lt(t)}function ft(t,e,r){return(e=ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ht(t){var e=function(t,e){if("object"!==Z(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Z(e)?e:String(e)}!function(t){t.connect="connect",t.disconnect="disconnect",t.message="message",t.error="error"}(V||(V={}));var pt,dt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&at(t,e)}(c,t);var e,r,n,o,i,a=ct(c);function c(t){var e,r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(r=a.call(this)).options=t,ft(st(r),"Event",V),ft(st(r),"state",void 0),ft(st(r),"ws",null),ft(st(r),"sendQueue",[]),ft(st(r),"connectingTimeoutId",void 0),ft(st(r),"authenticated",void 0),ft(st(r),"authenticatedResolvers",void 0),!r.options.token&&!r.options.temporaryNick)throw new Error("Token or temporary nick is required");return(null===(e=r.options.stateTracking)||void 0===e||e)&&(r.state=new X(st(r))),r}return e=c,r=[{key:"connect",value:(i=ot(rt().mark((function t(){var e,r,n=this;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.options.token?"token=".concat(this.options.token):"nick=".concat(this.options.temporaryNick),this.ws=new WebSocket("".concat(this.options.url,"?").concat(r)),this.ws.onclose=function(t){return n.onClose(t)},this.ws.onmessage=function(t){return n.onMessage(t)},this.connectingTimeoutId=setTimeout((function(){return n.triggerConnectionTimeout()}),null!==(e=this.options.connectingTimeoutMs)&&void 0!==e?e:1e4),this.authenticated=!1,t.abrupt("return",new Promise((function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return n.authenticatedResolvers=e})));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"disconnect",value:function(){var t;this.sendQueue=[],null===(t=this.ws)||void 0===t||t.close(),this.ws=null}},{key:"send",value:(o=ot(rt().mark((function t(e,r){var n;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.ws&&![this.ws.CLOSED,this.ws.CLOSING].includes(this.ws.readyState)){t.next=2;break}throw new Error("Cannot send; close or closing connection state");case 2:if(this.ws.readyState!==this.ws.CONNECTING&&this.authenticated){t.next=5;break}return this.sendQueue.push([e,r]),t.abrupt("return");case 5:if(this.ws.readyState===this.ws.OPEN){t.next=7;break}throw new Error("Invalid websocket state=".concat(this.ws.readyState));case 7:return n=this.createEnvelope(e,r),this.ws.send(JSON.stringify(n)),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 10:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onMessage",value:function(t){var e=JSON.parse(t.data);if(!this.authenticated){var r="Error"!==e.type;this.authenticated=r,r?(this.authenticatedResolvers[0](),this.emit(this.Event.connect),this.sendFromQueue()):this.authenticatedResolvers[1](e.data)}this.handleIncomingEnvelope(e),this.emit(e.type,e),this.emit(this.Event.message,e)}},{key:"onClose",value:function(t){clearTimeout(this.connectingTimeoutId);var e=1e3!==t.code;e&&this.connect(),this.emit(this.Event.disconnect,e)}},{key:"sendFromQueue",value:function(){var t=this,e=0,r=function(r){var n,o=t.sendQueue[r];setTimeout((function(){return t.send.apply(t,tt(o))}),e),e+=null!==(n=t.options.awaitQueueSendDelayMs)&&void 0!==n?n:500};for(var n in this.sendQueue)r(n);this.sendQueue=[],clearTimeout(this.connectingTimeoutId)}},{key:"triggerConnectionTimeout",value:function(){this.disconnect(),this.emit(this.Event.error,new Error("Connection timeout"))}}],r&&it(e.prototype,r),n&&it(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function vt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */vt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==yt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function mt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){mt(i,n,o,a,c,"next",t)}function c(t){mt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function bt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ot(n.key),n)}}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function kt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=jt(t);if(e){var o=jt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return St(this,r)}}function St(t,e){if(e&&("object"===yt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Et(t)}function Et(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function jt(t){return jt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},jt(t)}function xt(t,e,r){return(e=Ot(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ot(t){var e=function(t,e){if("object"!==yt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===yt(e)?e:String(e)}!function(t){t.message="message",t.error="error",t.destroy="destroy"}(pt||(pt={}));var Lt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(c,t);var e,r,n,o,i,a=kt(c);function c(t){var e;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=a.call(this)).options=t,xt(Et(e),"Event",pt),xt(Et(e),"sendStack",void 0),!e.options.token&&!e.options.temporaryNick)throw new Error("Token or temporary nick is required");return e}return e=c,r=[{key:"send",value:(i=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.createEnvelope(e,r),this.sendStack.push({data:n,attempts:0,lastTimeoutId:null}),this.makeApiCall(this.sendStack.length-1),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 4:case"end":return t.stop()}}),t,this)}))),function(t,e){return i.apply(this,arguments)})},{key:"destroy",value:function(){var t=this;this.sendStack.forEach((function(e){e.lastTimeoutId&&clearTimeout(e.lastTimeoutId),t.awaitingResponse.delete(e.data.ref)})),this.sendStack=[],this.emit(this.Event.destroy,!1)}},{key:"onMessage",value:(o=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.sendStack.splice(e,1),t.next=3,r.json();case 3:n=t.sent,this.handleIncomingEnvelope(n),this.emit(n.type,n),this.emit(this.Event.message,n);case 7:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onError",value:function(t,e){var r,n,o=this;if(this.sendStack[t].attempts>=(null!==(r=this.options.attemptsToSend)&&void 0!==r?r:10))return this.sendStack.splice(t,1),void this.handleEnvelopeSendError(this.sendStack[t].data,new Error("Cannot send ".concat(e,"; aborting after reaching the maximum connection errors")));this.sendStack[t].lastTimeoutId=setTimeout((function(){return o.makeApiCall(t)}),null!==(n=this.options.attemptDelayMs)&&void 0!==n?n:3e3)}},{key:"makeApiCall",value:function(t){var e=this;this.sendStack[t].attempts++;var r=JSON.stringify(this.sendStack[t].data),n={"Content-Type":"application/json",Accept:"application/json"};this.options.token?n.Authorization="Bearer ".concat(this.options.token):this.options.temporaryNick&&(n.Authorization="Temp ".concat(this.options.temporaryNick)),fetch(this.options.url,{headers:n,body:r,method:"POST"}).then((function(r){return e.onMessage(t,r)})).catch((function(){return e.onError(t,r)}))}}],r&&bt(e.prototype,r),n&&bt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}function _t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_t=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Pt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Rt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Tt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,It(n.key),n)}}function It(t){var e=function(t,e){if("object"!==Pt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Pt(e)?e:String(e)}function Mt(t){return Mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mt(t)}function At(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */At=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Mt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){Nt(i,n,o,a,c,"next",t)}function c(t){Nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function Ct(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ht(n.key),n)}}function Ft(t,e){return Ft=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ft(t,e)}function Jt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=Yt(t);if(e){var o=Yt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return Bt(this,r)}}function Bt(t,e){if(e&&("object"===Mt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Ut(t)}function Ut(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Yt(t){return Yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Yt(t)}function Qt(t,e,r){return(e=Ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ht(t){var e=function(t,e){if("object"!==Mt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Mt(e)?e:String(e)}var zt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ft(t,e)}(u,t);var e,r,n,o,i,a,c=Jt(u);function u(){var t;Ct(this,u);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return Qt(Ut(t=c.call.apply(c,[this].concat(r))),"defaultUrl","https://polfan.pl/webservice"),t}return e=u,r=[{key:"deleteToken",value:(a=Gt(At().mark((function t(e){var r;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("DELETE","auth/tokens/".concat(e));case 2:if((r=t.sent).ok){t.next=5;break}throw new Error("Cannot delete access token: ".concat(r.data.errors[0]));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getMe",value:(i=Gt(At().mark((function t(){var e;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("GET","auth/me");case 2:if(!(e=t.sent).ok){t.next=6;break}return e.data.id=e.data.id.toString(),t.abrupt("return",e.data);case 6:throw new Error("Cannot get current user account: ".concat(e.data.errors[0]));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})}],n=[{key:"createToken",value:(o=Gt(At().mark((function t(e,r){var n,o,i=arguments;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=i.length>2&&void 0!==i[2]?i[2]:"pserv-js-client",t.next=3,new u({token:null}).send("POST","auth/tokens",{login:e,password:r,client_name:n});case 3:if(!(o=t.sent).ok){t.next=6;break}return t.abrupt("return",o.data);case 6:throw new Error("Cannot create user token: ".concat(o.data.errors[0]));case 7:case"end":return t.stop()}}),t)}))),function(t,e){return o.apply(this,arguments)})}],r&&Dt(e.prototype,r),n&&Dt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(function(){function t(e){var r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=e,r=this,o=void 0,(n=It(n="defaultUrl"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o}var e,r,n,o,i;return e=t,r=[{key:"send",value:(o=_t().mark((function t(e,r){var n,o,i,a,c,u=arguments;return _t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.length>2&&void 0!==u[2]?u[2]:void 0,o={"Content-Type":"application/json",Accept:"application/json"},this.options.token&&(o.Authorization="Bearer ".concat(this.options.token)),i=this.getUrl(r),a=void 0,n&&(["GET","DELETE"].includes(e)?i+=new URLSearchParams(n).toString():a=JSON.stringify(n)),t.next=8,fetch(i,{method:e,body:a,headers:o});case 8:return c=t.sent,t.t0=c.ok,t.t1=c.status,t.next=13,c.json();case 13:return t.t2=t.sent,t.abrupt("return",{ok:t.t0,status:t.t1,data:t.t2});case 15:case"end":return t.stop()}}),t,this)})),i=function(){var t=this,e=arguments;return new Promise((function(r,n){var i=o.apply(t,e);function a(t){Rt(i,r,n,a,c,"next",t)}function c(t){Rt(i,r,n,a,c,"throw",t)}a(void 0)}))},function(t,e){return i.apply(this,arguments)})},{key:"getUrl",value:function(t){var e;return this.removeEndingSlash(null!==(e=this.options.url)&&void 0!==e?e:this.defaultUrl)+"/"+this.removeStartingSlash(t)}},{key:"removeStartingSlash",value:function(t){return t.replace(/^\/+/,"")}},{key:"removeEndingSlash",value:function(t){return t.replace(/\/+$/,"")}}],r&&Tt(e.prototype,r),n&&Tt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}());return e})()));
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define([], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["PServ"] = factory();
8
+ else
9
+ root["PServ"] = factory();
10
+ })(self, () => {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ // The require scope
14
+ /******/ var __webpack_require__ = {};
15
+ /******/
16
+ /************************************************************************/
17
+ /******/ /* webpack/runtime/define property getters */
18
+ /******/ (() => {
19
+ /******/ // define getter functions for harmony exports
20
+ /******/ __webpack_require__.d = (exports, definition) => {
21
+ /******/ for(var key in definition) {
22
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
23
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
24
+ /******/ }
25
+ /******/ }
26
+ /******/ };
27
+ /******/ })();
28
+ /******/
29
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
30
+ /******/ (() => {
31
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
32
+ /******/ })();
33
+ /******/
34
+ /******/ /* webpack/runtime/make namespace object */
35
+ /******/ (() => {
36
+ /******/ // define __esModule on exports
37
+ /******/ __webpack_require__.r = (exports) => {
38
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
39
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
40
+ /******/ }
41
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
42
+ /******/ };
43
+ /******/ })();
44
+ /******/
45
+ /************************************************************************/
46
+ var __webpack_exports__ = {};
47
+ // ESM COMPAT FLAG
48
+ __webpack_require__.r(__webpack_exports__);
49
+
50
+ // EXPORTS
51
+ __webpack_require__.d(__webpack_exports__, {
52
+ "AuthClient": () => (/* reexport */ AuthClient),
53
+ "IndexedCollection": () => (/* reexport */ IndexedCollection),
54
+ "IndexedObjectCollection": () => (/* reexport */ IndexedObjectCollection),
55
+ "Layer": () => (/* reexport */ Layer),
56
+ "ObservableIndexedCollection": () => (/* reexport */ ObservableIndexedCollection),
57
+ "ObservableIndexedObjectCollection": () => (/* reexport */ ObservableIndexedObjectCollection),
58
+ "PermissionDefinition": () => (/* reexport */ PermissionDefinition),
59
+ "Permissions": () => (/* reexport */ Permissions),
60
+ "WebApiChatClient": () => (/* reexport */ WebApiChatClient),
61
+ "WebSocketChatClient": () => (/* reexport */ WebSocketChatClient)
62
+ });
63
+
64
+ ;// CONCATENATED MODULE: ./src/EventTarget.ts
65
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
66
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
67
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
68
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
69
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
70
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
71
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
72
+ var EventTarget = /*#__PURE__*/function () {
73
+ function EventTarget() {
74
+ _classCallCheck(this, EventTarget);
75
+ _defineProperty(this, "events", new Map());
76
+ _defineProperty(this, "onceEvents", new Map());
77
+ }
78
+ _createClass(EventTarget, [{
79
+ key: "on",
80
+ value: function on(eventName, handler) {
81
+ this.addHandler(this.events, eventName, handler);
82
+ return this;
83
+ }
84
+ }, {
85
+ key: "once",
86
+ value: function once(eventName, handler) {
87
+ this.addHandler(this.onceEvents, eventName, handler);
88
+ return this;
89
+ }
90
+ }, {
91
+ key: "off",
92
+ value: function off(eventName, handler) {
93
+ var _this$events$get;
94
+ var index = (_this$events$get = this.events.get(eventName)) === null || _this$events$get === void 0 ? void 0 : _this$events$get.indexOf(handler);
95
+ if (!index || index < 0) {
96
+ return this;
97
+ }
98
+ this.events.get(eventName).splice(index, 1);
99
+ }
100
+ }, {
101
+ key: "emit",
102
+ value: function emit(eventName, event) {
103
+ this.callHandlers(this.events, eventName, event);
104
+ this.callHandlers(this.onceEvents, eventName, event);
105
+ this.onceEvents["delete"](eventName);
106
+ return this;
107
+ }
108
+ }, {
109
+ key: "addHandler",
110
+ value: function addHandler(map, eventName, handler) {
111
+ var _map$get;
112
+ var handlers = (_map$get = map.get(eventName)) !== null && _map$get !== void 0 ? _map$get : [];
113
+ handlers.push(handler);
114
+ map.set(eventName, handlers);
115
+ }
116
+ }, {
117
+ key: "callHandlers",
118
+ value: function callHandlers(map, eventName, event) {
119
+ var _map$get2;
120
+ (_map$get2 = map.get(eventName)) === null || _map$get2 === void 0 ? void 0 : _map$get2.forEach(function (callback) {
121
+ return callback(event);
122
+ });
123
+ }
124
+ }]);
125
+ return EventTarget;
126
+ }();
127
+ ;// CONCATENATED MODULE: ./src/AbstractChatClient.ts
128
+ function AbstractChatClient_typeof(obj) { "@babel/helpers - typeof"; return AbstractChatClient_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, AbstractChatClient_typeof(obj); }
129
+ function AbstractChatClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
130
+ function AbstractChatClient_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, AbstractChatClient_toPropertyKey(descriptor.key), descriptor); } }
131
+ function AbstractChatClient_createClass(Constructor, protoProps, staticProps) { if (protoProps) AbstractChatClient_defineProperties(Constructor.prototype, protoProps); if (staticProps) AbstractChatClient_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
132
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
133
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
134
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
135
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
136
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
137
+ function _possibleConstructorReturn(self, call) { if (call && (AbstractChatClient_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
138
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
139
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
140
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
141
+ function AbstractChatClient_defineProperty(obj, key, value) { key = AbstractChatClient_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
142
+ function AbstractChatClient_toPropertyKey(arg) { var key = AbstractChatClient_toPrimitive(arg, "string"); return AbstractChatClient_typeof(key) === "symbol" ? key : String(key); }
143
+ function AbstractChatClient_toPrimitive(input, hint) { if (AbstractChatClient_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (AbstractChatClient_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
144
+
145
+ var AbstractChatClient = /*#__PURE__*/function (_EventTarget) {
146
+ _inherits(AbstractChatClient, _EventTarget);
147
+ var _super = _createSuper(AbstractChatClient);
148
+ function AbstractChatClient() {
149
+ var _this;
150
+ AbstractChatClient_classCallCheck(this, AbstractChatClient);
151
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
152
+ args[_key] = arguments[_key];
153
+ }
154
+ _this = _super.call.apply(_super, [this].concat(args));
155
+ AbstractChatClient_defineProperty(_assertThisInitialized(_this), "awaitingResponse", new Map());
156
+ AbstractChatClient_defineProperty(_assertThisInitialized(_this), "sentCounter", 0);
157
+ return _this;
158
+ }
159
+ AbstractChatClient_createClass(AbstractChatClient, [{
160
+ key: "on",
161
+ value: function on(eventName, handler) {
162
+ return _get(_getPrototypeOf(AbstractChatClient.prototype), "on", this).call(this, eventName, handler);
163
+ }
164
+ }, {
165
+ key: "once",
166
+ value: function once(eventName, handler) {
167
+ return _get(_getPrototypeOf(AbstractChatClient.prototype), "once", this).call(this, eventName, handler);
168
+ }
169
+ }, {
170
+ key: "createEnvelope",
171
+ value: function createEnvelope(type, data) {
172
+ return {
173
+ type: type,
174
+ data: data,
175
+ ref: (++this.sentCounter).toString()
176
+ };
177
+ }
178
+ }, {
179
+ key: "createPromiseFromCommandEnvelope",
180
+ value: function createPromiseFromCommandEnvelope(envelope) {
181
+ var _this2 = this;
182
+ return new Promise(function () {
183
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
184
+ args[_key2] = arguments[_key2];
185
+ }
186
+ return _this2.awaitingResponse.set(envelope.ref, args);
187
+ });
188
+ }
189
+ }, {
190
+ key: "handleIncomingEnvelope",
191
+ value: function handleIncomingEnvelope(envelope) {
192
+ if (!this.awaitingResponse.has(envelope.ref)) {
193
+ return;
194
+ }
195
+ var isError = envelope.type === 'Error';
196
+ this.awaitingResponse.get(envelope.ref)[0]({
197
+ data: isError ? null : envelope.data,
198
+ error: isError ? envelope.data : null
199
+ });
200
+ this.awaitingResponse["delete"](envelope.ref);
201
+ }
202
+ }, {
203
+ key: "handleEnvelopeSendError",
204
+ value: function handleEnvelopeSendError(envelope, error) {
205
+ if (!this.awaitingResponse.has(envelope.ref)) {
206
+ return;
207
+ }
208
+ this.awaitingResponse.get(envelope.ref)[0](error);
209
+ this.awaitingResponse["delete"](envelope.ref);
210
+ }
211
+ }]);
212
+ return AbstractChatClient;
213
+ }(EventTarget);
214
+ ;// CONCATENATED MODULE: ./src/IndexedObjectCollection.ts
215
+ function IndexedObjectCollection_typeof(obj) { "@babel/helpers - typeof"; return IndexedObjectCollection_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, IndexedObjectCollection_typeof(obj); }
216
+ function IndexedObjectCollection_get() { if (typeof Reflect !== "undefined" && Reflect.get) { IndexedObjectCollection_get = Reflect.get.bind(); } else { IndexedObjectCollection_get = function _get(target, property, receiver) { var base = IndexedObjectCollection_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return IndexedObjectCollection_get.apply(this, arguments); }
217
+ function IndexedObjectCollection_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = IndexedObjectCollection_getPrototypeOf(object); if (object === null) break; } return object; }
218
+ function IndexedObjectCollection_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) IndexedObjectCollection_setPrototypeOf(subClass, superClass); }
219
+ function IndexedObjectCollection_setPrototypeOf(o, p) { IndexedObjectCollection_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return IndexedObjectCollection_setPrototypeOf(o, p); }
220
+ function IndexedObjectCollection_createSuper(Derived) { var hasNativeReflectConstruct = IndexedObjectCollection_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = IndexedObjectCollection_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = IndexedObjectCollection_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return IndexedObjectCollection_possibleConstructorReturn(this, result); }; }
221
+ function IndexedObjectCollection_possibleConstructorReturn(self, call) { if (call && (IndexedObjectCollection_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return IndexedObjectCollection_assertThisInitialized(self); }
222
+ function IndexedObjectCollection_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
223
+ function IndexedObjectCollection_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
224
+ function IndexedObjectCollection_getPrototypeOf(o) { IndexedObjectCollection_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return IndexedObjectCollection_getPrototypeOf(o); }
225
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
226
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
227
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
228
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
229
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
230
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
231
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
232
+ function IndexedObjectCollection_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
233
+ function IndexedObjectCollection_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, IndexedObjectCollection_toPropertyKey(descriptor.key), descriptor); } }
234
+ function IndexedObjectCollection_createClass(Constructor, protoProps, staticProps) { if (protoProps) IndexedObjectCollection_defineProperties(Constructor.prototype, protoProps); if (staticProps) IndexedObjectCollection_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
235
+ function IndexedObjectCollection_defineProperty(obj, key, value) { key = IndexedObjectCollection_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
236
+ function IndexedObjectCollection_toPropertyKey(arg) { var key = IndexedObjectCollection_toPrimitive(arg, "string"); return IndexedObjectCollection_typeof(key) === "symbol" ? key : String(key); }
237
+ function IndexedObjectCollection_toPrimitive(input, hint) { if (IndexedObjectCollection_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (IndexedObjectCollection_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
238
+
239
+ var IndexedCollection = /*#__PURE__*/function () {
240
+ function IndexedCollection() {
241
+ var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
242
+ IndexedObjectCollection_classCallCheck(this, IndexedCollection);
243
+ IndexedObjectCollection_defineProperty(this, "_items", new Map());
244
+ this.set.apply(this, _toConsumableArray(items));
245
+ }
246
+ IndexedObjectCollection_createClass(IndexedCollection, [{
247
+ key: "items",
248
+ get: function get() {
249
+ return this._items;
250
+ }
251
+ }, {
252
+ key: "length",
253
+ get: function get() {
254
+ return this._items.size;
255
+ }
256
+ }, {
257
+ key: "set",
258
+ value: function set() {
259
+ for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {
260
+ items[_key] = arguments[_key];
261
+ }
262
+ for (var _i = 0, _items = items; _i < _items.length; _i++) {
263
+ var _item = _items[_i];
264
+ this._items.set(_item[0], _item[1]);
265
+ }
266
+ }
267
+ }, {
268
+ key: "get",
269
+ value: function get(id) {
270
+ return this.items.get(id);
271
+ }
272
+ }, {
273
+ key: "has",
274
+ value: function has(id) {
275
+ return this.items.has(id);
276
+ }
277
+ }, {
278
+ key: "delete",
279
+ value: function _delete() {
280
+ for (var _len2 = arguments.length, ids = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
281
+ ids[_key2] = arguments[_key2];
282
+ }
283
+ for (var _i2 = 0, _ids = ids; _i2 < _ids.length; _i2++) {
284
+ var _id = _ids[_i2];
285
+ this.items["delete"](_id);
286
+ }
287
+ }
288
+ }, {
289
+ key: "deleteAll",
290
+ value: function deleteAll() {
291
+ this.items.clear();
292
+ }
293
+ }, {
294
+ key: "findBy",
295
+ value: function findBy(field, valueToFind) {
296
+ var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
297
+ var result = new IndexedCollection();
298
+ var item;
299
+ while (!(item = this.items.entries().next().value).done) {
300
+ if (limit && result.length === limit) {
301
+ break;
302
+ }
303
+ if (item[1][field] === valueToFind) {
304
+ result.set(item);
305
+ }
306
+ }
307
+ return result;
308
+ }
309
+ }, {
310
+ key: "map",
311
+ value: function map(callback) {
312
+ return Array.from(this.items.entries()).map(function (entry) {
313
+ return callback(entry[1], entry[0]);
314
+ });
315
+ }
316
+ }]);
317
+ return IndexedCollection;
318
+ }();
319
+ var IndexedObjectCollection = /*#__PURE__*/function () {
320
+ function IndexedObjectCollection(id) {
321
+ var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
322
+ IndexedObjectCollection_classCallCheck(this, IndexedObjectCollection);
323
+ this.id = id;
324
+ IndexedObjectCollection_defineProperty(this, "_items", void 0);
325
+ this._items = new IndexedCollection();
326
+ this.set.apply(this, _toConsumableArray(items));
327
+ }
328
+ IndexedObjectCollection_createClass(IndexedObjectCollection, [{
329
+ key: "items",
330
+ get: function get() {
331
+ return Array.from(this._items.items.values());
332
+ }
333
+ }, {
334
+ key: "length",
335
+ get: function get() {
336
+ return this._items.length;
337
+ }
338
+ }, {
339
+ key: "set",
340
+ value: function set() {
341
+ var _this$_items,
342
+ _this = this;
343
+ for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
344
+ items[_key3] = arguments[_key3];
345
+ }
346
+ (_this$_items = this._items).set.apply(_this$_items, _toConsumableArray(items.map(function (item) {
347
+ return [_this.getId(item), item];
348
+ })));
349
+ }
350
+ }, {
351
+ key: "get",
352
+ value: function get(id) {
353
+ return this._items.get(id);
354
+ }
355
+ }, {
356
+ key: "getAt",
357
+ value: function getAt(index) {
358
+ return this.items[index];
359
+ }
360
+ }, {
361
+ key: "has",
362
+ value: function has(id) {
363
+ return this._items.has(id);
364
+ }
365
+ }, {
366
+ key: "delete",
367
+ value: function _delete() {
368
+ var _this$_items2;
369
+ (_this$_items2 = this._items)["delete"].apply(_this$_items2, arguments);
370
+ }
371
+ }, {
372
+ key: "deleteAll",
373
+ value: function deleteAll() {
374
+ this._items.deleteAll();
375
+ }
376
+ }, {
377
+ key: "findBy",
378
+ value: function findBy(field, valueToFind) {
379
+ var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
380
+ var result = new IndexedObjectCollection(this.id);
381
+ var _iterator = _createForOfIteratorHelper(this.items),
382
+ _step;
383
+ try {
384
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
385
+ var _value = _step.value;
386
+ if (limit && result.length === limit) {
387
+ break;
388
+ }
389
+ if (_value[field] === valueToFind) {
390
+ result.set(_value);
391
+ }
392
+ }
393
+ } catch (err) {
394
+ _iterator.e(err);
395
+ } finally {
396
+ _iterator.f();
397
+ }
398
+ return result;
399
+ }
400
+ }, {
401
+ key: "map",
402
+ value: function map(callback) {
403
+ return this.items.map(callback);
404
+ }
405
+ }, {
406
+ key: "getId",
407
+ value: function getId(item) {
408
+ return typeof this.id === 'function' ? this.id(item) : item[this.id];
409
+ }
410
+ }]);
411
+ return IndexedObjectCollection;
412
+ }();
413
+ var ObservableIndexedCollection = /*#__PURE__*/function (_IndexedCollection) {
414
+ IndexedObjectCollection_inherits(ObservableIndexedCollection, _IndexedCollection);
415
+ var _super = IndexedObjectCollection_createSuper(ObservableIndexedCollection);
416
+ function ObservableIndexedCollection() {
417
+ var _this3;
418
+ var _this2;
419
+ var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
420
+ IndexedObjectCollection_classCallCheck(this, ObservableIndexedCollection);
421
+ _this2 = _super.call(this);
422
+ IndexedObjectCollection_defineProperty(IndexedObjectCollection_assertThisInitialized(_this2), "eventTarget", void 0);
423
+ _this2.eventTarget = new EventTarget();
424
+ (_this3 = _this2).set.apply(_this3, _toConsumableArray(items));
425
+ return _this2;
426
+ }
427
+ IndexedObjectCollection_createClass(ObservableIndexedCollection, [{
428
+ key: "set",
429
+ value: function set() {
430
+ for (var _len4 = arguments.length, items = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
431
+ items[_key4] = arguments[_key4];
432
+ }
433
+ if (items.length) {
434
+ var _get2;
435
+ (_get2 = IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedCollection.prototype), "set", this)).call.apply(_get2, [this].concat(items));
436
+ this.eventTarget.emit('change', {
437
+ setItems: items.map(function (item) {
438
+ return item[0];
439
+ })
440
+ });
441
+ }
442
+ }
443
+ }, {
444
+ key: "delete",
445
+ value: function _delete() {
446
+ for (var _len5 = arguments.length, ids = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
447
+ ids[_key5] = arguments[_key5];
448
+ }
449
+ if (ids.length) {
450
+ var _get3;
451
+ (_get3 = IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedCollection.prototype), "delete", this)).call.apply(_get3, [this].concat(ids));
452
+ this.eventTarget.emit('change', {
453
+ deletedItems: ids
454
+ });
455
+ }
456
+ }
457
+ }, {
458
+ key: "deleteAll",
459
+ value: function deleteAll() {
460
+ if (this.length) {
461
+ var ids = this._items.keys();
462
+ IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedCollection.prototype), "deleteAll", this).call(this);
463
+ this.eventTarget.emit('change', {
464
+ deletedItems: Array.from(ids)
465
+ });
466
+ }
467
+ }
468
+ }, {
469
+ key: "on",
470
+ value: function on(eventName, handler) {
471
+ this.eventTarget.on(eventName, handler);
472
+ return this;
473
+ }
474
+ }, {
475
+ key: "once",
476
+ value: function once(eventName, handler) {
477
+ this.eventTarget.once(eventName, handler);
478
+ return this;
479
+ }
480
+ }, {
481
+ key: "off",
482
+ value: function off(eventName, handler) {
483
+ this.eventTarget.off(eventName, handler);
484
+ return this;
485
+ }
486
+ }]);
487
+ return ObservableIndexedCollection;
488
+ }(IndexedCollection);
489
+ var ObservableIndexedObjectCollection = /*#__PURE__*/function (_IndexedObjectCollect) {
490
+ IndexedObjectCollection_inherits(ObservableIndexedObjectCollection, _IndexedObjectCollect);
491
+ var _super2 = IndexedObjectCollection_createSuper(ObservableIndexedObjectCollection);
492
+ function ObservableIndexedObjectCollection(id) {
493
+ var _this5;
494
+ var _this4;
495
+ var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
496
+ IndexedObjectCollection_classCallCheck(this, ObservableIndexedObjectCollection);
497
+ _this4 = _super2.call(this, id);
498
+ _this4.id = id;
499
+ IndexedObjectCollection_defineProperty(IndexedObjectCollection_assertThisInitialized(_this4), "eventTarget", void 0);
500
+ _this4.eventTarget = new EventTarget();
501
+ (_this5 = _this4).set.apply(_this5, _toConsumableArray(items));
502
+ return _this4;
503
+ }
504
+ IndexedObjectCollection_createClass(ObservableIndexedObjectCollection, [{
505
+ key: "set",
506
+ value: function set() {
507
+ var _this6 = this;
508
+ for (var _len6 = arguments.length, items = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
509
+ items[_key6] = arguments[_key6];
510
+ }
511
+ if (items.length) {
512
+ var _get4;
513
+ (_get4 = IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedObjectCollection.prototype), "set", this)).call.apply(_get4, [this].concat(items));
514
+ this.eventTarget.emit('change', {
515
+ setItems: items.map(function (item) {
516
+ return _this6.getId(item);
517
+ })
518
+ });
519
+ }
520
+ }
521
+ }, {
522
+ key: "delete",
523
+ value: function _delete() {
524
+ for (var _len7 = arguments.length, ids = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
525
+ ids[_key7] = arguments[_key7];
526
+ }
527
+ if (ids.length) {
528
+ var _get5;
529
+ (_get5 = IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedObjectCollection.prototype), "delete", this)).call.apply(_get5, [this].concat(ids));
530
+ this.eventTarget.emit('change', {
531
+ deletedItems: ids
532
+ });
533
+ }
534
+ }
535
+ }, {
536
+ key: "deleteAll",
537
+ value: function deleteAll() {
538
+ if (this.length) {
539
+ var ids = this._items.items.keys();
540
+ IndexedObjectCollection_get(IndexedObjectCollection_getPrototypeOf(ObservableIndexedObjectCollection.prototype), "deleteAll", this).call(this);
541
+ this.eventTarget.emit('change', {
542
+ deletedItems: Array.from(ids)
543
+ });
544
+ }
545
+ }
546
+ }, {
547
+ key: "on",
548
+ value: function on(eventName, handler) {
549
+ this.eventTarget.on(eventName, handler);
550
+ return this;
551
+ }
552
+ }, {
553
+ key: "once",
554
+ value: function once(eventName, handler) {
555
+ this.eventTarget.once(eventName, handler);
556
+ return this;
557
+ }
558
+ }, {
559
+ key: "off",
560
+ value: function off(eventName, handler) {
561
+ this.eventTarget.off(eventName, handler);
562
+ return this;
563
+ }
564
+ }]);
565
+ return ObservableIndexedObjectCollection;
566
+ }(IndexedObjectCollection);
567
+ ;// CONCATENATED MODULE: ./src/state-tracker/AsyncUtils.ts
568
+ function AsyncUtils_typeof(obj) { "@babel/helpers - typeof"; return AsyncUtils_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, AsyncUtils_typeof(obj); }
569
+ function AsyncUtils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, AsyncUtils_toPropertyKey(descriptor.key), descriptor); } }
570
+ function AsyncUtils_createClass(Constructor, protoProps, staticProps) { if (protoProps) AsyncUtils_defineProperties(Constructor.prototype, protoProps); if (staticProps) AsyncUtils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
571
+ function AsyncUtils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
572
+ function AsyncUtils_defineProperty(obj, key, value) { key = AsyncUtils_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
573
+ function AsyncUtils_toPropertyKey(arg) { var key = AsyncUtils_toPrimitive(arg, "string"); return AsyncUtils_typeof(key) === "symbol" ? key : String(key); }
574
+ function AsyncUtils_toPrimitive(input, hint) { if (AsyncUtils_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (AsyncUtils_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
575
+
576
+ var DeferredTask = /*#__PURE__*/AsyncUtils_createClass(function DeferredTask() {
577
+ var _this = this;
578
+ AsyncUtils_classCallCheck(this, DeferredTask);
579
+ AsyncUtils_defineProperty(this, "promise", void 0);
580
+ AsyncUtils_defineProperty(this, "resolve", void 0);
581
+ this.promise = new Promise(function (resolve) {
582
+ return _this.resolve = resolve;
583
+ });
584
+ });
585
+ var PromiseRegistry = /*#__PURE__*/function () {
586
+ function PromiseRegistry() {
587
+ AsyncUtils_classCallCheck(this, PromiseRegistry);
588
+ AsyncUtils_defineProperty(this, "promises", new IndexedCollection());
589
+ }
590
+ AsyncUtils_createClass(PromiseRegistry, [{
591
+ key: "register",
592
+ value: function register(promise, key) {
593
+ this.promises.set([key, promise]);
594
+ }
595
+ }, {
596
+ key: "registerByFunction",
597
+ value: function registerByFunction(fn, key) {
598
+ this.register(fn(), key);
599
+ }
600
+ }, {
601
+ key: "get",
602
+ value: function get(key) {
603
+ return this.promises.get(key);
604
+ }
605
+ }, {
606
+ key: "has",
607
+ value: function has(key) {
608
+ return this.promises.has(key);
609
+ }
610
+ }, {
611
+ key: "notExist",
612
+ value: function notExist(key) {
613
+ return !this.has(key);
614
+ }
615
+ }, {
616
+ key: "forget",
617
+ value: function forget() {
618
+ var _this$promises;
619
+ (_this$promises = this.promises)["delete"].apply(_this$promises, arguments);
620
+ }
621
+ }]);
622
+ return PromiseRegistry;
623
+ }();
624
+ ;// CONCATENATED MODULE: ./src/state-tracker/MessagesManager.ts
625
+ function MessagesManager_typeof(obj) { "@babel/helpers - typeof"; return MessagesManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, MessagesManager_typeof(obj); }
626
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
627
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { MessagesManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
628
+ function MessagesManager_toConsumableArray(arr) { return MessagesManager_arrayWithoutHoles(arr) || MessagesManager_iterableToArray(arr) || MessagesManager_unsupportedIterableToArray(arr) || MessagesManager_nonIterableSpread(); }
629
+ function MessagesManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
630
+ function MessagesManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return MessagesManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return MessagesManager_arrayLikeToArray(o, minLen); }
631
+ function MessagesManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
632
+ function MessagesManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return MessagesManager_arrayLikeToArray(arr); }
633
+ function MessagesManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
634
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == MessagesManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
635
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
636
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
637
+ function MessagesManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
638
+ function MessagesManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, MessagesManager_toPropertyKey(descriptor.key), descriptor); } }
639
+ function MessagesManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) MessagesManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) MessagesManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
640
+ function MessagesManager_defineProperty(obj, key, value) { key = MessagesManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
641
+ function MessagesManager_toPropertyKey(arg) { var key = MessagesManager_toPrimitive(arg, "string"); return MessagesManager_typeof(key) === "symbol" ? key : String(key); }
642
+ function MessagesManager_toPrimitive(input, hint) { if (MessagesManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (MessagesManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
643
+
644
+ var getCombinedId = function getCombinedId(location) {
645
+ var _location$roomId, _location$topicId;
646
+ return ((_location$roomId = location.roomId) !== null && _location$roomId !== void 0 ? _location$roomId : '') + ((_location$topicId = location.topicId) !== null && _location$topicId !== void 0 ? _location$topicId : '');
647
+ };
648
+ var MessagesManager = /*#__PURE__*/function () {
649
+ // Temporary not lazy loaded; server must implement GetTopicMessages command.
650
+
651
+ function MessagesManager(tracker) {
652
+ var _this = this;
653
+ MessagesManager_classCallCheck(this, MessagesManager);
654
+ this.tracker = tracker;
655
+ MessagesManager_defineProperty(this, "list", new IndexedCollection());
656
+ MessagesManager_defineProperty(this, "acks", new IndexedCollection());
657
+ this.tracker.client.on('NewMessage', function (ev) {
658
+ return _this.handleNewMessage(ev);
659
+ });
660
+ this.tracker.client.on('AckReports', function (ev) {
661
+ return _this.handleAckReports(ev);
662
+ });
663
+ }
664
+
665
+ /**
666
+ * Get collection of the messages written in topic.
667
+ */
668
+ MessagesManager_createClass(MessagesManager, [{
669
+ key: "get",
670
+ value: function () {
671
+ var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(location) {
672
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
673
+ while (1) {
674
+ switch (_context.prev = _context.next) {
675
+ case 0:
676
+ return _context.abrupt("return", this.list.get(getCombinedId(location)));
677
+ case 1:
678
+ case "end":
679
+ return _context.stop();
680
+ }
681
+ }
682
+ }, _callee, this);
683
+ }));
684
+ function get(_x) {
685
+ return _get.apply(this, arguments);
686
+ }
687
+ return get;
688
+ }()
689
+ /**
690
+ * Cache ack reports for all joined rooms in a space and fetch them in bulk if necessary.
691
+ * Then you can get the reports using getRoomAckReports().
692
+ * @see getRoomAckReports
693
+ */
694
+ }, {
695
+ key: "cacheSpaceAckReports",
696
+ value: function () {
697
+ var _cacheSpaceAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(spaceId) {
698
+ var _this2 = this;
699
+ var roomIds, missingRoomIds, result;
700
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
701
+ while (1) {
702
+ switch (_context2.prev = _context2.next) {
703
+ case 0:
704
+ _context2.next = 2;
705
+ return this.tracker.spaces.get();
706
+ case 2:
707
+ if (_context2.sent.has(spaceId)) {
708
+ _context2.next = 4;
709
+ break;
710
+ }
711
+ throw new Error("You are not in space ".concat(spaceId));
712
+ case 4:
713
+ _context2.next = 6;
714
+ return this.tracker.rooms.get();
715
+ case 6:
716
+ roomIds = _context2.sent.findBy('spaceId', spaceId).map(function (room) {
717
+ return room.id;
718
+ });
719
+ missingRoomIds = roomIds.filter(function (roomId) {
720
+ return !_this2.acks.has(roomId);
721
+ });
722
+ if (!missingRoomIds.length) {
723
+ _context2.next = 15;
724
+ break;
725
+ }
726
+ _context2.next = 11;
727
+ return this.tracker.client.send('GetAckReports', {
728
+ location: {
729
+ spaceId: spaceId
730
+ }
731
+ });
732
+ case 11:
733
+ result = _context2.sent;
734
+ if (!result.error) {
735
+ _context2.next = 14;
736
+ break;
737
+ }
738
+ throw result.error;
739
+ case 14:
740
+ missingRoomIds.forEach(function (roomId) {
741
+ var reports = result.data.reports.filter(function (report) {
742
+ return report.roomId === roomId;
743
+ });
744
+ _this2.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', reports)]);
745
+ });
746
+ case 15:
747
+ case "end":
748
+ return _context2.stop();
749
+ }
750
+ }
751
+ }, _callee2, this);
752
+ }));
753
+ function cacheSpaceAckReports(_x2) {
754
+ return _cacheSpaceAckReports.apply(this, arguments);
755
+ }
756
+ return cacheSpaceAckReports;
757
+ }()
758
+ /**
759
+ * Get ack reports for the given room. Undefined if you are not in the room.
760
+ * @param roomId
761
+ */
762
+ }, {
763
+ key: "getRoomAckReports",
764
+ value: function () {
765
+ var _getRoomAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(roomId) {
766
+ var room, result;
767
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
768
+ while (1) {
769
+ switch (_context3.prev = _context3.next) {
770
+ case 0:
771
+ _context3.next = 2;
772
+ return this.tracker.rooms.get();
773
+ case 2:
774
+ room = _context3.sent.get(roomId);
775
+ if (room) {
776
+ _context3.next = 5;
777
+ break;
778
+ }
779
+ return _context3.abrupt("return", undefined);
780
+ case 5:
781
+ if (this.acks.has(roomId)) {
782
+ _context3.next = 12;
783
+ break;
784
+ }
785
+ _context3.next = 8;
786
+ return this.tracker.client.send('GetAckReports', {
787
+ location: {
788
+ roomId: roomId
789
+ }
790
+ });
791
+ case 8:
792
+ result = _context3.sent;
793
+ if (!result.error) {
794
+ _context3.next = 11;
795
+ break;
796
+ }
797
+ throw result.error;
798
+ case 11:
799
+ this.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', result.data.reports)]);
800
+ case 12:
801
+ return _context3.abrupt("return", this.acks.get(roomId));
802
+ case 13:
803
+ case "end":
804
+ return _context3.stop();
805
+ }
806
+ }
807
+ }, _callee3, this);
808
+ }));
809
+ function getRoomAckReports(_x3) {
810
+ return _getRoomAckReports.apply(this, arguments);
811
+ }
812
+ return getRoomAckReports;
813
+ }()
814
+ /**
815
+ * For internal use. If you want to delete the message, execute a proper command on client object.
816
+ * @internal
817
+ */
818
+ }, {
819
+ key: "_deleteByTopicIds",
820
+ value: function _deleteByTopicIds(roomId) {
821
+ var _this$list, _this$acks$get;
822
+ for (var _len = arguments.length, topicIds = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
823
+ topicIds[_key - 1] = arguments[_key];
824
+ }
825
+ (_this$list = this.list)["delete"].apply(_this$list, MessagesManager_toConsumableArray(topicIds.map(function (topicId) {
826
+ return getCombinedId({
827
+ roomId: roomId,
828
+ topicId: topicId
829
+ });
830
+ })));
831
+ (_this$acks$get = this.acks.get(roomId)) === null || _this$acks$get === void 0 ? void 0 : _this$acks$get["delete"].apply(_this$acks$get, topicIds);
832
+ }
833
+
834
+ /**
835
+ * For internal use. If you want to add new topic, execute a proper command on client object.
836
+ * @internal
837
+ */
838
+ }, {
839
+ key: "_handleNewTopics",
840
+ value: function _handleNewTopics(roomId) {
841
+ var _this$list2;
842
+ for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
843
+ topics[_key2 - 1] = arguments[_key2];
844
+ }
845
+ (_this$list2 = this.list).set.apply(_this$list2, MessagesManager_toConsumableArray(topics.map(function (topic) {
846
+ return [getCombinedId({
847
+ roomId: roomId,
848
+ topicId: topic.id
849
+ }), new ObservableIndexedObjectCollection('id')];
850
+ })));
851
+ this.createAckReportsForNewTopics(roomId, topics);
852
+ }
853
+ }, {
854
+ key: "handleNewMessage",
855
+ value: function handleNewMessage(ev) {
856
+ this.list.get(getCombinedId(ev.location)).set(ev.message);
857
+ this.updateLocallyAckReportOnNewMessage(ev);
858
+ }
859
+ }, {
860
+ key: "handleAckReports",
861
+ value: function handleAckReports(ev) {
862
+ var _this3 = this;
863
+ ev.reports.forEach(function (report) {
864
+ var ackReports = _this3.acks.get(report.roomId);
865
+ if (ackReports) {
866
+ ackReports.set(report);
867
+ }
868
+ });
869
+ }
870
+ }, {
871
+ key: "createAckReportsForNewTopics",
872
+ value: function createAckReportsForNewTopics(roomId, topics) {
873
+ var ackReports = this.acks.get(roomId);
874
+ if (!ackReports) {
875
+ // If we don't follow ack reports for this room, skip
876
+ return;
877
+ }
878
+ var newReports = topics.map(function (topic) {
879
+ return {
880
+ roomId: roomId,
881
+ topicId: topic.id,
882
+ lastAckMessageId: null,
883
+ missed: 0,
884
+ missedMoreThan: null
885
+ };
886
+ });
887
+ ackReports.set.apply(ackReports, MessagesManager_toConsumableArray(newReports));
888
+ }
889
+ }, {
890
+ key: "updateLocallyAckReportOnNewMessage",
891
+ value: function updateLocallyAckReportOnNewMessage(ev) {
892
+ var _this$tracker$me;
893
+ var ackReports = this.acks.get(ev.location.roomId);
894
+ if (!ackReports) {
895
+ // If we don't follow ack reports for this room, skip
896
+ return;
897
+ }
898
+ var isMe = ev.message.author.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
899
+ var currentAckReport = ackReports.get(ev.location.topicId);
900
+ var update;
901
+ if (isMe) {
902
+ // Reset missed messages count if new message is authored by me
903
+ update = {
904
+ missed: 0,
905
+ missedMoreThan: null,
906
+ lastAckMessageId: ev.message.id
907
+ };
908
+ } else {
909
+ // ...add 1 otherwise
910
+ update = {
911
+ missed: currentAckReport.missed === null ? null : currentAckReport.missed + 1,
912
+ missedMoreThan: currentAckReport.missedMoreThan === null ? null : currentAckReport.missedMoreThan
913
+ };
914
+ }
915
+ ackReports.set(_objectSpread(_objectSpread({}, currentAckReport), update));
916
+ }
917
+ }]);
918
+ return MessagesManager;
919
+ }();
920
+ ;// CONCATENATED MODULE: ./src/state-tracker/RoomsManager.ts
921
+ function RoomsManager_typeof(obj) { "@babel/helpers - typeof"; return RoomsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, RoomsManager_typeof(obj); }
922
+ function RoomsManager_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
923
+ function RoomsManager_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? RoomsManager_ownKeys(Object(source), !0).forEach(function (key) { RoomsManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : RoomsManager_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
924
+ function RoomsManager_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = RoomsManager_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
925
+ function RoomsManager_toConsumableArray(arr) { return RoomsManager_arrayWithoutHoles(arr) || RoomsManager_iterableToArray(arr) || RoomsManager_unsupportedIterableToArray(arr) || RoomsManager_nonIterableSpread(); }
926
+ function RoomsManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
927
+ function RoomsManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return RoomsManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return RoomsManager_arrayLikeToArray(o, minLen); }
928
+ function RoomsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
929
+ function RoomsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return RoomsManager_arrayLikeToArray(arr); }
930
+ function RoomsManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
931
+ function RoomsManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ RoomsManager_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == RoomsManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
932
+ function RoomsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
933
+ function RoomsManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { RoomsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { RoomsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
934
+ function RoomsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
935
+ function RoomsManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, RoomsManager_toPropertyKey(descriptor.key), descriptor); } }
936
+ function RoomsManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) RoomsManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) RoomsManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
937
+ function RoomsManager_defineProperty(obj, key, value) { key = RoomsManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
938
+ function RoomsManager_toPropertyKey(arg) { var key = RoomsManager_toPrimitive(arg, "string"); return RoomsManager_typeof(key) === "symbol" ? key : String(key); }
939
+ function RoomsManager_toPrimitive(input, hint) { if (RoomsManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (RoomsManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
940
+
941
+
942
+
943
+ var RoomsManager = /*#__PURE__*/function () {
944
+ function RoomsManager(tracker) {
945
+ var _this = this;
946
+ RoomsManager_classCallCheck(this, RoomsManager);
947
+ this.tracker = tracker;
948
+ RoomsManager_defineProperty(this, "messages", void 0);
949
+ RoomsManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
950
+ RoomsManager_defineProperty(this, "topics", new IndexedCollection());
951
+ RoomsManager_defineProperty(this, "members", new IndexedCollection());
952
+ RoomsManager_defineProperty(this, "deferredSession", new DeferredTask());
953
+ RoomsManager_defineProperty(this, "membersPromises", new PromiseRegistry());
954
+ this.messages = new MessagesManager(tracker);
955
+ this.tracker.client.on('NewTopic', function (ev) {
956
+ return _this.handleNewTopic(ev);
957
+ });
958
+ this.tracker.client.on('TopicDeleted', function (ev) {
959
+ return _this.handleTopicDeleted(ev);
960
+ });
961
+ this.tracker.client.on('RoomJoined', function (ev) {
962
+ return _this.handleRoomJoined(ev);
963
+ });
964
+ this.tracker.client.on('RoomLeft', function (ev) {
965
+ return _this.handleRoomLeft(ev);
966
+ });
967
+ this.tracker.client.on('RoomUpdated', function (ev) {
968
+ return _this.handleRoomUpdated(ev);
969
+ });
970
+ this.tracker.client.on('RoomDeleted', function (ev) {
971
+ return _this.handleRoomDeleted(ev);
972
+ });
973
+ this.tracker.client.on('RoomMemberJoined', function (ev) {
974
+ return _this.handleRoomMemberJoined(ev);
975
+ });
976
+ this.tracker.client.on('RoomMemberLeft', function (ev) {
977
+ return _this.handleRoomMemberLeft(ev);
978
+ });
979
+ this.tracker.client.on('RoomMembers', function (ev) {
980
+ return _this.handleRoomMembers(ev);
981
+ });
982
+ this.tracker.client.on('RoomMemberUpdated', function (ev) {
983
+ return _this.handleRoomMemberUpdated(ev);
984
+ });
985
+ this.tracker.client.on('SpaceMemberLeft', function (ev) {
986
+ return _this.handleSpaceMemberLeft(ev);
987
+ });
988
+ this.tracker.client.on('SpaceMemberUpdated', function (ev) {
989
+ return _this.handleSpaceMemberUpdated(ev);
990
+ });
991
+ this.tracker.client.on('SpaceDeleted', function (ev) {
992
+ return _this.handleSpaceDeleted(ev);
993
+ });
994
+ this.tracker.client.on('SpaceLeft', function (ev) {
995
+ return _this.handleSpaceDeleted(ev);
996
+ });
997
+ this.tracker.client.on('UserUpdated', function (ev) {
998
+ return _this.handleUserUpdated(ev);
999
+ });
1000
+ this.tracker.client.on('Session', function (ev) {
1001
+ return _this.handleSession(ev);
1002
+ });
1003
+ }
1004
+
1005
+ /**
1006
+ * Get collection of room members.
1007
+ */
1008
+ RoomsManager_createClass(RoomsManager, [{
1009
+ key: "getMembers",
1010
+ value: function () {
1011
+ var _getMembers = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
1012
+ var _this2 = this;
1013
+ return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1014
+ while (1) {
1015
+ switch (_context2.prev = _context2.next) {
1016
+ case 0:
1017
+ if (this.membersPromises.notExist(roomId)) {
1018
+ this.membersPromises.registerByFunction( /*#__PURE__*/RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee() {
1019
+ var result;
1020
+ return RoomsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1021
+ while (1) {
1022
+ switch (_context.prev = _context.next) {
1023
+ case 0:
1024
+ _context.next = 2;
1025
+ return _this2.tracker.client.send('GetRoomMembers', {
1026
+ id: roomId
1027
+ });
1028
+ case 2:
1029
+ result = _context.sent;
1030
+ if (!result.error) {
1031
+ _context.next = 5;
1032
+ break;
1033
+ }
1034
+ throw result.error;
1035
+ case 5:
1036
+ _this2.handleRoomMembers(result.data);
1037
+ case 6:
1038
+ case "end":
1039
+ return _context.stop();
1040
+ }
1041
+ }
1042
+ }, _callee);
1043
+ })), roomId);
1044
+ }
1045
+ _context2.next = 3;
1046
+ return this.membersPromises.get(roomId);
1047
+ case 3:
1048
+ return _context2.abrupt("return", this.members.get(roomId));
1049
+ case 4:
1050
+ case "end":
1051
+ return _context2.stop();
1052
+ }
1053
+ }
1054
+ }, _callee2, this);
1055
+ }));
1056
+ function getMembers(_x) {
1057
+ return _getMembers.apply(this, arguments);
1058
+ }
1059
+ return getMembers;
1060
+ }()
1061
+ /**
1062
+ * Get a room member representing the current user.
1063
+ */
1064
+ }, {
1065
+ key: "getMe",
1066
+ value: function () {
1067
+ var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3(roomId) {
1068
+ var userId, members;
1069
+ return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1070
+ while (1) {
1071
+ switch (_context3.prev = _context3.next) {
1072
+ case 0:
1073
+ _context3.next = 2;
1074
+ return this.tracker.getMe();
1075
+ case 2:
1076
+ userId = _context3.sent.id;
1077
+ if (this.list.has(roomId)) {
1078
+ _context3.next = 5;
1079
+ break;
1080
+ }
1081
+ return _context3.abrupt("return", undefined);
1082
+ case 5:
1083
+ _context3.next = 7;
1084
+ return this.getMembers(roomId);
1085
+ case 7:
1086
+ members = _context3.sent;
1087
+ return _context3.abrupt("return", members.items.find(function (member) {
1088
+ var _member$user$id, _member$user;
1089
+ return ((_member$user$id = (_member$user = member.user) === null || _member$user === void 0 ? void 0 : _member$user.id) !== null && _member$user$id !== void 0 ? _member$user$id : member.spaceMember.user.id) === userId;
1090
+ }));
1091
+ case 9:
1092
+ case "end":
1093
+ return _context3.stop();
1094
+ }
1095
+ }
1096
+ }, _callee3, this);
1097
+ }));
1098
+ function getMe(_x2) {
1099
+ return _getMe.apply(this, arguments);
1100
+ }
1101
+ return getMe;
1102
+ }()
1103
+ /**
1104
+ * Get collection of all the rooms you are in.
1105
+ */
1106
+ }, {
1107
+ key: "get",
1108
+ value: function () {
1109
+ var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4() {
1110
+ return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1111
+ while (1) {
1112
+ switch (_context4.prev = _context4.next) {
1113
+ case 0:
1114
+ _context4.next = 2;
1115
+ return this.deferredSession.promise;
1116
+ case 2:
1117
+ return _context4.abrupt("return", this.list);
1118
+ case 3:
1119
+ case "end":
1120
+ return _context4.stop();
1121
+ }
1122
+ }
1123
+ }, _callee4, this);
1124
+ }));
1125
+ function get() {
1126
+ return _get.apply(this, arguments);
1127
+ }
1128
+ return get;
1129
+ }()
1130
+ /**
1131
+ * Get collection of room topics.
1132
+ */
1133
+ }, {
1134
+ key: "getTopics",
1135
+ value: function () {
1136
+ var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee5(roomId) {
1137
+ return RoomsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1138
+ while (1) {
1139
+ switch (_context5.prev = _context5.next) {
1140
+ case 0:
1141
+ _context5.next = 2;
1142
+ return this.deferredSession.promise;
1143
+ case 2:
1144
+ return _context5.abrupt("return", this.topics.get(roomId));
1145
+ case 3:
1146
+ case "end":
1147
+ return _context5.stop();
1148
+ }
1149
+ }
1150
+ }, _callee5, this);
1151
+ }));
1152
+ function getTopics(_x3) {
1153
+ return _getTopics.apply(this, arguments);
1154
+ }
1155
+ return getTopics;
1156
+ }()
1157
+ }, {
1158
+ key: "deleteRoom",
1159
+ value: function deleteRoom() {
1160
+ var _this$list, _this$members, _this$membersPromises, _this$topics;
1161
+ for (var _len = arguments.length, roomIds = new Array(_len), _key = 0; _key < _len; _key++) {
1162
+ roomIds[_key] = arguments[_key];
1163
+ }
1164
+ (_this$list = this.list)["delete"].apply(_this$list, roomIds);
1165
+ (_this$members = this.members)["delete"].apply(_this$members, roomIds);
1166
+ (_this$membersPromises = this.membersPromises).forget.apply(_this$membersPromises, roomIds);
1167
+ for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
1168
+ var _this$topics$get$map, _this$topics$get, _this$messages;
1169
+ var roomId = _roomIds[_i];
1170
+ var topicIds = (_this$topics$get$map = (_this$topics$get = this.topics.get(roomId)) === null || _this$topics$get === void 0 ? void 0 : _this$topics$get.map(function (topic) {
1171
+ return topic.id;
1172
+ })) !== null && _this$topics$get$map !== void 0 ? _this$topics$get$map : [];
1173
+ (_this$messages = this.messages)._deleteByTopicIds.apply(_this$messages, [roomId].concat(RoomsManager_toConsumableArray(topicIds)));
1174
+ }
1175
+ (_this$topics = this.topics)["delete"].apply(_this$topics, roomIds);
1176
+ }
1177
+ }, {
1178
+ key: "deleteRoomsBySpaceId",
1179
+ value: function deleteRoomsBySpaceId(spaceId) {
1180
+ this.deleteRoom.apply(this, RoomsManager_toConsumableArray(this.list.findBy('spaceId', spaceId).map(function (room) {
1181
+ return room.id;
1182
+ })));
1183
+ }
1184
+ }, {
1185
+ key: "handleSpaceMemberUpdated",
1186
+ value: function handleSpaceMemberUpdated(ev) {
1187
+ // Update members of rooms related to this space
1188
+ var _iterator = RoomsManager_createForOfIteratorHelper(this.list.findBy('spaceId', ev.spaceId).items),
1189
+ _step;
1190
+ try {
1191
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1192
+ var room = _step.value;
1193
+ var roomMembers = this.members.get(room.id);
1194
+ if (!roomMembers || !roomMembers.has(ev.userId)) {
1195
+ // Skip update if member list for this room is not loaded
1196
+ // or user is not in room
1197
+ continue;
1198
+ }
1199
+ var roomMember = roomMembers.get(ev.userId);
1200
+ var user = roomMember.spaceMember.user;
1201
+
1202
+ // Update space member but first fill user object (it's null in event object)
1203
+ roomMember.spaceMember = RoomsManager_objectSpread(RoomsManager_objectSpread({}, ev.member), {}, {
1204
+ user: user
1205
+ });
1206
+ roomMembers.set(roomMember);
1207
+ }
1208
+ } catch (err) {
1209
+ _iterator.e(err);
1210
+ } finally {
1211
+ _iterator.f();
1212
+ }
1213
+ }
1214
+ }, {
1215
+ key: "handleSpaceMemberLeft",
1216
+ value: function handleSpaceMemberLeft(ev) {
1217
+ var _this3 = this;
1218
+ this.list.findBy('spaceId', ev.spaceId).items.forEach(function (room) {
1219
+ var _this3$members$get;
1220
+ return (_this3$members$get = _this3.members.get(room.id)) === null || _this3$members$get === void 0 ? void 0 : _this3$members$get["delete"](ev.userId);
1221
+ });
1222
+ }
1223
+ }, {
1224
+ key: "handleRoomMemberUpdated",
1225
+ value: function handleRoomMemberUpdated(ev) {
1226
+ var _member$spaceMember$u, _member$spaceMember;
1227
+ if (!this.members.has(ev.roomId)) {
1228
+ // We do not track member list for this room.
1229
+ return;
1230
+ }
1231
+ var members = this.members.get(ev.roomId);
1232
+ var member = members.get(ev.userId);
1233
+ var newMember = ev.member;
1234
+ var user = (_member$spaceMember$u = (_member$spaceMember = member.spaceMember) === null || _member$spaceMember === void 0 ? void 0 : _member$spaceMember.user) !== null && _member$spaceMember$u !== void 0 ? _member$spaceMember$u : member.user;
1235
+ if (newMember.spaceMember) {
1236
+ newMember.spaceMember.user = user;
1237
+ } else {
1238
+ newMember.user = user;
1239
+ }
1240
+ members.set(newMember);
1241
+ }
1242
+ }, {
1243
+ key: "handleSpaceDeleted",
1244
+ value: function handleSpaceDeleted(ev) {
1245
+ this.deleteRoomsBySpaceId(ev.id);
1246
+ }
1247
+ }, {
1248
+ key: "handleTopicDeleted",
1249
+ value: function handleTopicDeleted(ev) {
1250
+ var _room$defaultTopic;
1251
+ var collection = this.topics.get(ev.location.roomId);
1252
+ collection["delete"](ev.location.topicId);
1253
+ var room = this.list.get(ev.location.roomId);
1254
+ if (((_room$defaultTopic = room.defaultTopic) === null || _room$defaultTopic === void 0 ? void 0 : _room$defaultTopic.id) === ev.location.topicId) {
1255
+ this.list.set(RoomsManager_objectSpread(RoomsManager_objectSpread({}, room), {}, {
1256
+ defaultTopic: null
1257
+ }));
1258
+ }
1259
+ }
1260
+ }, {
1261
+ key: "handleNewTopic",
1262
+ value: function handleNewTopic(ev) {
1263
+ this.addJoinedRoomTopics(ev.roomId, ev.topic);
1264
+ }
1265
+ }, {
1266
+ key: "addJoinedRoomTopics",
1267
+ value: function addJoinedRoomTopics(roomId) {
1268
+ var _this$messages2;
1269
+ for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
1270
+ topics[_key2 - 1] = arguments[_key2];
1271
+ }
1272
+ if (this.topics.has(roomId)) {
1273
+ var _this$topics$get2;
1274
+ (_this$topics$get2 = this.topics.get(roomId)).set.apply(_this$topics$get2, topics);
1275
+ } else {
1276
+ this.topics.set([roomId, new ObservableIndexedObjectCollection('id', topics)]);
1277
+ }
1278
+ (_this$messages2 = this.messages)._handleNewTopics.apply(_this$messages2, [roomId].concat(topics));
1279
+ }
1280
+ }, {
1281
+ key: "handleRoomJoined",
1282
+ value: function handleRoomJoined(ev) {
1283
+ this.addJoinedRooms(ev.room);
1284
+ }
1285
+ }, {
1286
+ key: "handleRoomUpdated",
1287
+ value: function handleRoomUpdated(ev) {
1288
+ this.list.set(RoomsManager_objectSpread(RoomsManager_objectSpread({}, this.list.get(ev.room.id)), {}, {
1289
+ name: ev.room.name,
1290
+ description: ev.room.description
1291
+ }));
1292
+ }
1293
+ }, {
1294
+ key: "handleRoomDeleted",
1295
+ value: function handleRoomDeleted(ev) {
1296
+ this.deleteRoom(ev.id);
1297
+ }
1298
+ }, {
1299
+ key: "addJoinedRooms",
1300
+ value: function addJoinedRooms() {
1301
+ var _this$list2;
1302
+ for (var _len3 = arguments.length, rooms = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1303
+ rooms[_key3] = arguments[_key3];
1304
+ }
1305
+ for (var _i2 = 0, _rooms = rooms; _i2 < _rooms.length; _i2++) {
1306
+ var room = _rooms[_i2];
1307
+ if (room.defaultTopic) {
1308
+ this.addJoinedRoomTopics(room.id, room.defaultTopic);
1309
+ }
1310
+ }
1311
+ (_this$list2 = this.list).set.apply(_this$list2, rooms);
1312
+ }
1313
+ }, {
1314
+ key: "handleRoomLeft",
1315
+ value: function handleRoomLeft(ev) {
1316
+ this.deleteRoom(ev.id);
1317
+ }
1318
+ }, {
1319
+ key: "handleRoomMemberJoined",
1320
+ value: function handleRoomMemberJoined(ev) {
1321
+ if (this.members.has(ev.roomId)) {
1322
+ this.members.get(ev.roomId).set(ev.member);
1323
+ }
1324
+ }
1325
+ }, {
1326
+ key: "handleRoomMemberLeft",
1327
+ value: function handleRoomMemberLeft(ev) {
1328
+ if (this.members.has(ev.roomId)) {
1329
+ this.members.get(ev.roomId)["delete"](ev.userId);
1330
+ }
1331
+ }
1332
+ }, {
1333
+ key: "handleRoomMembers",
1334
+ value: function handleRoomMembers(ev) {
1335
+ if (!this.members.has(ev.id)) {
1336
+ this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
1337
+ var _member$user$id2, _member$user2;
1338
+ return (_member$user$id2 = (_member$user2 = member.user) === null || _member$user2 === void 0 ? void 0 : _member$user2.id) !== null && _member$user$id2 !== void 0 ? _member$user$id2 : member.spaceMember.user.id;
1339
+ }, ev.members)]);
1340
+ }
1341
+ }
1342
+ }, {
1343
+ key: "handleSession",
1344
+ value: function handleSession(ev) {
1345
+ this.list.deleteAll();
1346
+ this.topics.deleteAll();
1347
+ this.members.deleteAll();
1348
+ this.addJoinedRooms.apply(this, RoomsManager_toConsumableArray(ev.state.rooms));
1349
+ this.deferredSession.resolve();
1350
+ }
1351
+ }, {
1352
+ key: "handleUserUpdated",
1353
+ value: function handleUserUpdated(ev) {
1354
+ this.members.items.forEach(function (members) {
1355
+ var member = members.get(ev.user.id);
1356
+ if (!member) {
1357
+ // Skip room; updated user is not here
1358
+ return;
1359
+ }
1360
+ var newMember = RoomsManager_objectSpread({}, member);
1361
+ if (member.user) {
1362
+ newMember.user = ev.user;
1363
+ } else {
1364
+ newMember.spaceMember.user = ev.user;
1365
+ }
1366
+ members.set(newMember);
1367
+ });
1368
+ }
1369
+ }]);
1370
+ return RoomsManager;
1371
+ }();
1372
+ ;// CONCATENATED MODULE: ./src/state-tracker/functions.ts
1373
+ function reorderRolesOnPriorityUpdate(allRoles, oldRole, updatedRole) {
1374
+ // If the priority has changed, adjust the rest of roles
1375
+ var increased = updatedRole.priority - oldRole.priority > 0;
1376
+ var decreased = !increased;
1377
+ var changedRoles = [];
1378
+ allRoles.forEach(function (role) {
1379
+ if (role.id === updatedRole.id) {
1380
+ // Skip the updated role
1381
+ return;
1382
+ }
1383
+ if (increased && oldRole.priority <= role.priority) {
1384
+ role.priority--;
1385
+ changedRoles.push(role);
1386
+ }
1387
+ if (decreased && updatedRole.priority <= role.priority) {
1388
+ role.priority++;
1389
+ changedRoles.push(role);
1390
+ }
1391
+ });
1392
+ return changedRoles;
1393
+ }
1394
+ ;// CONCATENATED MODULE: ./src/state-tracker/SpacesManager.ts
1395
+ function SpacesManager_typeof(obj) { "@babel/helpers - typeof"; return SpacesManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, SpacesManager_typeof(obj); }
1396
+ function SpacesManager_toConsumableArray(arr) { return SpacesManager_arrayWithoutHoles(arr) || SpacesManager_iterableToArray(arr) || SpacesManager_unsupportedIterableToArray(arr) || SpacesManager_nonIterableSpread(); }
1397
+ function SpacesManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1398
+ function SpacesManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return SpacesManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return SpacesManager_arrayLikeToArray(o, minLen); }
1399
+ function SpacesManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
1400
+ function SpacesManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return SpacesManager_arrayLikeToArray(arr); }
1401
+ function SpacesManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
1402
+ function SpacesManager_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1403
+ function SpacesManager_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? SpacesManager_ownKeys(Object(source), !0).forEach(function (key) { SpacesManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : SpacesManager_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1404
+ function SpacesManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ SpacesManager_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == SpacesManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
1405
+ function SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
1406
+ function SpacesManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1407
+ function SpacesManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1408
+ function SpacesManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, SpacesManager_toPropertyKey(descriptor.key), descriptor); } }
1409
+ function SpacesManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) SpacesManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) SpacesManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1410
+ function SpacesManager_defineProperty(obj, key, value) { key = SpacesManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1411
+ function SpacesManager_toPropertyKey(arg) { var key = SpacesManager_toPrimitive(arg, "string"); return SpacesManager_typeof(key) === "symbol" ? key : String(key); }
1412
+ function SpacesManager_toPrimitive(input, hint) { if (SpacesManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (SpacesManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1413
+
1414
+
1415
+
1416
+ var SpacesManager = /*#__PURE__*/function () {
1417
+ function SpacesManager(tracker) {
1418
+ var _this = this;
1419
+ SpacesManager_classCallCheck(this, SpacesManager);
1420
+ this.tracker = tracker;
1421
+ SpacesManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
1422
+ SpacesManager_defineProperty(this, "roles", new IndexedCollection());
1423
+ SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1424
+ SpacesManager_defineProperty(this, "roomIdToSpaceId", new IndexedCollection());
1425
+ SpacesManager_defineProperty(this, "members", new IndexedCollection());
1426
+ SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1427
+ SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
1428
+ SpacesManager_defineProperty(this, "membersPromises", new PromiseRegistry());
1429
+ this.tracker.client.on('NewRoom', function (ev) {
1430
+ return _this.handleNewRoom(ev);
1431
+ });
1432
+ this.tracker.client.on('RoomDeleted', function (ev) {
1433
+ return _this.handleRoomDeleted(ev);
1434
+ });
1435
+ this.tracker.client.on('RoomUpdated', function (ev) {
1436
+ return _this.handleRoomUpdated(ev);
1437
+ });
1438
+ this.tracker.client.on('SpaceDeleted', function (ev) {
1439
+ return _this.handleSpaceDeleted(ev);
1440
+ });
1441
+ this.tracker.client.on('SpaceUpdated', function (ev) {
1442
+ return _this.handleSpaceUpdated(ev);
1443
+ });
1444
+ this.tracker.client.on('SpaceJoined', function (ev) {
1445
+ return _this.handleSpaceJoined(ev);
1446
+ });
1447
+ this.tracker.client.on('SpaceLeft', function (ev) {
1448
+ return _this.handleSpaceDeleted(ev);
1449
+ });
1450
+ this.tracker.client.on('SpaceMemberJoined', function (ev) {
1451
+ return _this.handleSpaceMemberJoined(ev);
1452
+ });
1453
+ this.tracker.client.on('SpaceMemberLeft', function (ev) {
1454
+ return _this.handleSpaceMemberLeft(ev);
1455
+ });
1456
+ this.tracker.client.on('SpaceMembers', function (ev) {
1457
+ return _this.handleSpaceMembers(ev);
1458
+ });
1459
+ this.tracker.client.on('SpaceRooms', function (ev) {
1460
+ return _this.handleSpaceRooms(ev);
1461
+ });
1462
+ this.tracker.client.on('SpaceMemberUpdated', function (ev) {
1463
+ return _this.handleSpaceMemberUpdated(ev);
1464
+ });
1465
+ this.tracker.client.on('UserUpdated', function (ev) {
1466
+ return _this.handleUserUpdated(ev);
1467
+ });
1468
+ this.tracker.client.on('NewRole', function (ev) {
1469
+ return _this.handleNewRole(ev);
1470
+ });
1471
+ this.tracker.client.on('RoleDeleted', function (ev) {
1472
+ return _this.handleRoleDeleted(ev);
1473
+ });
1474
+ this.tracker.client.on('RoleUpdated', function (ev) {
1475
+ return _this.handleRoleUpdated(ev);
1476
+ });
1477
+ this.tracker.client.on('Session', function (ev) {
1478
+ return _this.handleSession(ev);
1479
+ });
1480
+ }
1481
+
1482
+ /**
1483
+ * Get collection of all the spaces you are in.
1484
+ */
1485
+ SpacesManager_createClass(SpacesManager, [{
1486
+ key: "get",
1487
+ value: function () {
1488
+ var _get = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee() {
1489
+ return SpacesManager_regeneratorRuntime().wrap(function _callee$(_context) {
1490
+ while (1) {
1491
+ switch (_context.prev = _context.next) {
1492
+ case 0:
1493
+ _context.next = 2;
1494
+ return this.deferredSession.promise;
1495
+ case 2:
1496
+ return _context.abrupt("return", this.list);
1497
+ case 3:
1498
+ case "end":
1499
+ return _context.stop();
1500
+ }
1501
+ }
1502
+ }, _callee, this);
1503
+ }));
1504
+ function get() {
1505
+ return _get.apply(this, arguments);
1506
+ }
1507
+ return get;
1508
+ }()
1509
+ /**
1510
+ * Get collection of space roles.
1511
+ */
1512
+ }, {
1513
+ key: "getRoles",
1514
+ value: function () {
1515
+ var _getRoles = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee2(spaceId) {
1516
+ return SpacesManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1517
+ while (1) {
1518
+ switch (_context2.prev = _context2.next) {
1519
+ case 0:
1520
+ _context2.next = 2;
1521
+ return this.deferredSession.promise;
1522
+ case 2:
1523
+ return _context2.abrupt("return", this.roles.get(spaceId));
1524
+ case 3:
1525
+ case "end":
1526
+ return _context2.stop();
1527
+ }
1528
+ }
1529
+ }, _callee2, this);
1530
+ }));
1531
+ function getRoles(_x) {
1532
+ return _getRoles.apply(this, arguments);
1533
+ }
1534
+ return getRoles;
1535
+ }()
1536
+ /**
1537
+ * Get collection of the all available rooms inside given space.
1538
+ */
1539
+ }, {
1540
+ key: "getRooms",
1541
+ value: function () {
1542
+ var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1543
+ var _this2 = this;
1544
+ return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1545
+ while (1) {
1546
+ switch (_context4.prev = _context4.next) {
1547
+ case 0:
1548
+ if (this.roomsPromises.notExist(spaceId)) {
1549
+ this.roomsPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3() {
1550
+ var result;
1551
+ return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1552
+ while (1) {
1553
+ switch (_context3.prev = _context3.next) {
1554
+ case 0:
1555
+ _context3.next = 2;
1556
+ return _this2.tracker.client.send('GetSpaceRooms', {
1557
+ id: spaceId
1558
+ });
1559
+ case 2:
1560
+ result = _context3.sent;
1561
+ if (!result.error) {
1562
+ _context3.next = 5;
1563
+ break;
1564
+ }
1565
+ throw result.error;
1566
+ case 5:
1567
+ _this2.handleSpaceRooms(result.data);
1568
+ case 6:
1569
+ case "end":
1570
+ return _context3.stop();
1571
+ }
1572
+ }
1573
+ }, _callee3);
1574
+ })), spaceId);
1575
+ }
1576
+ _context4.next = 3;
1577
+ return this.roomsPromises.get(spaceId);
1578
+ case 3:
1579
+ return _context4.abrupt("return", this.rooms.get(spaceId));
1580
+ case 4:
1581
+ case "end":
1582
+ return _context4.stop();
1583
+ }
1584
+ }
1585
+ }, _callee4, this);
1586
+ }));
1587
+ function getRooms(_x2) {
1588
+ return _getRooms.apply(this, arguments);
1589
+ }
1590
+ return getRooms;
1591
+ }()
1592
+ /**
1593
+ * Get collection of space members.
1594
+ */
1595
+ }, {
1596
+ key: "getMembers",
1597
+ value: function () {
1598
+ var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee6(spaceId) {
1599
+ var _this3 = this;
1600
+ return SpacesManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1601
+ while (1) {
1602
+ switch (_context6.prev = _context6.next) {
1603
+ case 0:
1604
+ if (this.membersPromises.notExist(spaceId)) {
1605
+ this.membersPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5() {
1606
+ var result;
1607
+ return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1608
+ while (1) {
1609
+ switch (_context5.prev = _context5.next) {
1610
+ case 0:
1611
+ _context5.next = 2;
1612
+ return _this3.tracker.client.send('GetSpaceMembers', {
1613
+ id: spaceId
1614
+ });
1615
+ case 2:
1616
+ result = _context5.sent;
1617
+ if (!result.error) {
1618
+ _context5.next = 5;
1619
+ break;
1620
+ }
1621
+ throw result.error;
1622
+ case 5:
1623
+ _this3.handleSpaceMembers(result.data);
1624
+ case 6:
1625
+ case "end":
1626
+ return _context5.stop();
1627
+ }
1628
+ }
1629
+ }, _callee5);
1630
+ })), spaceId);
1631
+ }
1632
+ _context6.next = 3;
1633
+ return this.membersPromises.get(spaceId);
1634
+ case 3:
1635
+ return _context6.abrupt("return", this.members.get(spaceId));
1636
+ case 4:
1637
+ case "end":
1638
+ return _context6.stop();
1639
+ }
1640
+ }
1641
+ }, _callee6, this);
1642
+ }));
1643
+ function getMembers(_x3) {
1644
+ return _getMembers.apply(this, arguments);
1645
+ }
1646
+ return getMembers;
1647
+ }()
1648
+ /**
1649
+ * Get a space member representing the current user.
1650
+ */
1651
+ }, {
1652
+ key: "getMe",
1653
+ value: function () {
1654
+ var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee7(spaceId) {
1655
+ var userId, members;
1656
+ return SpacesManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
1657
+ while (1) {
1658
+ switch (_context7.prev = _context7.next) {
1659
+ case 0:
1660
+ _context7.next = 2;
1661
+ return this.tracker.getMe();
1662
+ case 2:
1663
+ userId = _context7.sent.id;
1664
+ if (this.list.has(spaceId)) {
1665
+ _context7.next = 5;
1666
+ break;
1667
+ }
1668
+ return _context7.abrupt("return", undefined);
1669
+ case 5:
1670
+ _context7.next = 7;
1671
+ return this.getMembers(spaceId);
1672
+ case 7:
1673
+ members = _context7.sent;
1674
+ return _context7.abrupt("return", members.items.find(function (member) {
1675
+ return member.user.id === userId;
1676
+ }));
1677
+ case 9:
1678
+ case "end":
1679
+ return _context7.stop();
1680
+ }
1681
+ }
1682
+ }, _callee7, this);
1683
+ }));
1684
+ function getMe(_x4) {
1685
+ return _getMe.apply(this, arguments);
1686
+ }
1687
+ return getMe;
1688
+ }()
1689
+ }, {
1690
+ key: "handleNewRole",
1691
+ value: function handleNewRole(ev) {
1692
+ var collection = this.roles.get(ev.spaceId);
1693
+ collection.set(ev.role);
1694
+ this.list.get(ev.spaceId).roles = collection.items;
1695
+ }
1696
+ }, {
1697
+ key: "handleNewRoom",
1698
+ value: function handleNewRoom(ev) {
1699
+ var _this$rooms$get;
1700
+ (_this$rooms$get = this.rooms.get(ev.spaceId)) === null || _this$rooms$get === void 0 ? void 0 : _this$rooms$get.set(ev.summary);
1701
+ this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);
1702
+ }
1703
+ }, {
1704
+ key: "handleRoomUpdated",
1705
+ value: function handleRoomUpdated(ev) {
1706
+ if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {
1707
+ var rooms = this.rooms.get(ev.room.spaceId);
1708
+ rooms.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, rooms.get(ev.room.id)), {}, {
1709
+ name: ev.room.name,
1710
+ description: ev.room.description
1711
+ }));
1712
+ }
1713
+ }
1714
+ }, {
1715
+ key: "handleRoomDeleted",
1716
+ value: function () {
1717
+ var _handleRoomDeleted = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee8(ev) {
1718
+ var spaceId;
1719
+ return SpacesManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
1720
+ while (1) {
1721
+ switch (_context8.prev = _context8.next) {
1722
+ case 0:
1723
+ spaceId = this.roomIdToSpaceId.get(ev.id);
1724
+ if (spaceId && this.rooms.has(spaceId)) {
1725
+ this.rooms.get(spaceId)["delete"](ev.id);
1726
+ }
1727
+ case 2:
1728
+ case "end":
1729
+ return _context8.stop();
1730
+ }
1731
+ }
1732
+ }, _callee8, this);
1733
+ }));
1734
+ function handleRoomDeleted(_x5) {
1735
+ return _handleRoomDeleted.apply(this, arguments);
1736
+ }
1737
+ return handleRoomDeleted;
1738
+ }()
1739
+ }, {
1740
+ key: "handleRoleDeleted",
1741
+ value: function handleRoleDeleted(ev) {
1742
+ var collection = this.roles.get(ev.spaceId);
1743
+ collection["delete"](ev.id);
1744
+ this.list.get(ev.spaceId).roles = collection.items;
1745
+ }
1746
+ }, {
1747
+ key: "handleSpaceUpdated",
1748
+ value: function handleSpaceUpdated(ev) {
1749
+ this.list.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, this.list.get(ev.space.id)), {}, {
1750
+ name: ev.space.name
1751
+ }));
1752
+ }
1753
+ }, {
1754
+ key: "handleSpaceDeleted",
1755
+ value: function handleSpaceDeleted(ev) {
1756
+ var _this$rooms$get$map, _this$rooms$get2, _this$roomIdToSpaceId;
1757
+ var roomIds = (_this$rooms$get$map = (_this$rooms$get2 = this.rooms.get(ev.id)) === null || _this$rooms$get2 === void 0 ? void 0 : _this$rooms$get2.map(function (item) {
1758
+ return item.id;
1759
+ })) !== null && _this$rooms$get$map !== void 0 ? _this$rooms$get$map : [];
1760
+ (_this$roomIdToSpaceId = this.roomIdToSpaceId)["delete"].apply(_this$roomIdToSpaceId, SpacesManager_toConsumableArray(roomIds));
1761
+ this.roles["delete"](ev.id);
1762
+ this.members["delete"](ev.id);
1763
+ this.membersPromises.forget(ev.id);
1764
+ this.rooms["delete"](ev.id);
1765
+ this.roomsPromises.forget(ev.id);
1766
+ this.list["delete"](ev.id);
1767
+ }
1768
+ }, {
1769
+ key: "handleSpaceJoined",
1770
+ value: function handleSpaceJoined(ev) {
1771
+ this.addJoinedSpaces(ev.space);
1772
+ }
1773
+ }, {
1774
+ key: "addJoinedSpaces",
1775
+ value: function addJoinedSpaces() {
1776
+ var _this$roles, _this$list;
1777
+ for (var _len = arguments.length, spaces = new Array(_len), _key = 0; _key < _len; _key++) {
1778
+ spaces[_key] = arguments[_key];
1779
+ }
1780
+ (_this$roles = this.roles).set.apply(_this$roles, SpacesManager_toConsumableArray(spaces.map(function (space) {
1781
+ return [space.id, new ObservableIndexedObjectCollection('id', space.roles)];
1782
+ })));
1783
+ (_this$list = this.list).set.apply(_this$list, spaces);
1784
+ }
1785
+ }, {
1786
+ key: "handleSpaceMemberJoined",
1787
+ value: function handleSpaceMemberJoined(ev) {
1788
+ if (this.members.has(ev.spaceId)) {
1789
+ this.members.get(ev.spaceId).set(ev.member);
1790
+ }
1791
+ }
1792
+ }, {
1793
+ key: "handleSpaceMemberLeft",
1794
+ value: function handleSpaceMemberLeft(ev) {
1795
+ if (this.members.has(ev.spaceId)) {
1796
+ this.members.get(ev.spaceId)["delete"](ev.userId);
1797
+ }
1798
+ }
1799
+ }, {
1800
+ key: "handleSpaceMembers",
1801
+ value: function handleSpaceMembers(ev) {
1802
+ if (!this.members.has(ev.id)) {
1803
+ this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
1804
+ return member === null || member === void 0 ? void 0 : member.user.id;
1805
+ }, ev.members)]);
1806
+ }
1807
+ }
1808
+ }, {
1809
+ key: "handleSpaceRooms",
1810
+ value: function handleSpaceRooms(ev) {
1811
+ if (!this.rooms.has(ev.id)) {
1812
+ this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);
1813
+ }
1814
+ }
1815
+ }, {
1816
+ key: "handleSpaceMemberUpdated",
1817
+ value: function handleSpaceMemberUpdated(ev) {
1818
+ if (this.members.has(ev.spaceId)) {
1819
+ var members = this.members.get(ev.spaceId);
1820
+ var member = members.get(ev.userId);
1821
+ members.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, ev.member), {}, {
1822
+ user: member.user
1823
+ }));
1824
+ }
1825
+ }
1826
+ }, {
1827
+ key: "handleRoleUpdated",
1828
+ value: function handleRoleUpdated(ev) {
1829
+ var _this$roles$get;
1830
+ var roles = this.roles.get(ev.spaceId);
1831
+ var oldRole = roles.get(ev.role.id);
1832
+ var newRole = ev.role;
1833
+ var rolesToUpdate = [newRole];
1834
+ if (oldRole.priority !== newRole.priority) {
1835
+ rolesToUpdate.push.apply(rolesToUpdate, SpacesManager_toConsumableArray(reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)));
1836
+ }
1837
+ (_this$roles$get = this.roles.get(ev.spaceId)).set.apply(_this$roles$get, rolesToUpdate);
1838
+ }
1839
+ }, {
1840
+ key: "handleSession",
1841
+ value: function handleSession(ev) {
1842
+ this.list.deleteAll();
1843
+ this.roles.deleteAll();
1844
+ this.rooms.deleteAll();
1845
+ this.members.deleteAll();
1846
+ this.roomIdToSpaceId.deleteAll();
1847
+ this.addJoinedSpaces.apply(this, SpacesManager_toConsumableArray(ev.state.spaces));
1848
+ this.deferredSession.resolve();
1849
+ }
1850
+ }, {
1851
+ key: "handleUserUpdated",
1852
+ value: function handleUserUpdated(ev) {
1853
+ this.members.items.forEach(function (members) {
1854
+ var member = members.get(ev.user.id);
1855
+ if (!member) {
1856
+ // Skip space; updated user is not here
1857
+ return;
1858
+ }
1859
+ members.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, member), {}, {
1860
+ user: ev.user
1861
+ }));
1862
+ });
1863
+ }
1864
+ }]);
1865
+ return SpacesManager;
1866
+ }();
1867
+ ;// CONCATENATED MODULE: ./src/Permissions.ts
1868
+ function Permissions_typeof(obj) { "@babel/helpers - typeof"; return Permissions_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, Permissions_typeof(obj); }
1869
+ function Permissions_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Permissions_toPropertyKey(descriptor.key), descriptor); } }
1870
+ function Permissions_createClass(Constructor, protoProps, staticProps) { if (protoProps) Permissions_defineProperties(Constructor.prototype, protoProps); if (staticProps) Permissions_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1871
+ function Permissions_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1872
+ function Permissions_defineProperty(obj, key, value) { key = Permissions_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1873
+ function Permissions_toPropertyKey(arg) { var key = Permissions_toPrimitive(arg, "string"); return Permissions_typeof(key) === "symbol" ? key : String(key); }
1874
+ function Permissions_toPrimitive(input, hint) { if (Permissions_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (Permissions_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1875
+ var Layer;
1876
+ (function (Layer) {
1877
+ Layer[Layer["Global"] = 0] = "Global";
1878
+ Layer[Layer["Space"] = 1] = "Space";
1879
+ Layer[Layer["Room"] = 2] = "Room";
1880
+ Layer[Layer["Topic"] = 3] = "Topic";
1881
+ })(Layer || (Layer = {}));
1882
+ var PermissionDefinition = /*#__PURE__*/Permissions_createClass(function PermissionDefinition() {
1883
+ Permissions_classCallCheck(this, PermissionDefinition);
1884
+ Permissions_defineProperty(this, "value", void 0);
1885
+ Permissions_defineProperty(this, "maxLayer", void 0);
1886
+ });
1887
+ var Permissions = /*#__PURE__*/function () {
1888
+ function Permissions() {
1889
+ Permissions_classCallCheck(this, Permissions);
1890
+ }
1891
+ Permissions_createClass(Permissions, null, [{
1892
+ key: "getNames",
1893
+ value: function getNames() {
1894
+ return Object.keys(this.list);
1895
+ }
1896
+ }, {
1897
+ key: "getByName",
1898
+ value: function getByName(name) {
1899
+ return this.list[name];
1900
+ }
1901
+ }, {
1902
+ key: "canBeDefinedOnLayer",
1903
+ value: function canBeDefinedOnLayer(permissionName, layer) {
1904
+ var def = this.getByName(permissionName);
1905
+ if (!def) {
1906
+ throw new Error("Invalid permission name: ".concat(permissionName));
1907
+ }
1908
+ return layer <= this.getByName(permissionName).maxLayer;
1909
+ }
1910
+ }]);
1911
+ return Permissions;
1912
+ }();
1913
+ Permissions_defineProperty(Permissions, "list", {
1914
+ Root: {
1915
+ value: 1 << 0,
1916
+ maxLayer: Layer.Room
1917
+ },
1918
+ CreateSpaces: {
1919
+ value: 1 << 1,
1920
+ maxLayer: Layer.Global
1921
+ },
1922
+ ManageSpace: {
1923
+ value: 1 << 2,
1924
+ maxLayer: Layer.Space
1925
+ },
1926
+ ManageSpaceRoles: {
1927
+ value: 1 << 3,
1928
+ maxLayer: Layer.Space
1929
+ },
1930
+ ManageRoom: {
1931
+ value: 1 << 4,
1932
+ maxLayer: Layer.Room
1933
+ },
1934
+ ManageTopic: {
1935
+ value: 1 << 5,
1936
+ maxLayer: Layer.Topic
1937
+ },
1938
+ ManageSpaceMembers: {
1939
+ value: 1 << 6,
1940
+ maxLayer: Layer.Space
1941
+ },
1942
+ ManageRoomMembers: {
1943
+ value: 1 << 7,
1944
+ maxLayer: Layer.Room
1945
+ },
1946
+ CreateMessages: {
1947
+ value: 1 << 8,
1948
+ maxLayer: Layer.Topic
1949
+ },
1950
+ ManagePermissions: {
1951
+ value: 1 << 9,
1952
+ maxLayer: Layer.Topic
1953
+ },
1954
+ CreateSpaceRooms: {
1955
+ value: 1 << 10,
1956
+ maxLayer: Layer.Space
1957
+ },
1958
+ ManageSpaceRooms: {
1959
+ value: 1 << 11,
1960
+ maxLayer: Layer.Space
1961
+ }
1962
+ });
1963
+ ;// CONCATENATED MODULE: ./src/state-tracker/PermissionsManager.ts
1964
+ function PermissionsManager_typeof(obj) { "@babel/helpers - typeof"; return PermissionsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, PermissionsManager_typeof(obj); }
1965
+ function PermissionsManager_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = PermissionsManager_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
1966
+ function PermissionsManager_toConsumableArray(arr) { return PermissionsManager_arrayWithoutHoles(arr) || PermissionsManager_iterableToArray(arr) || PermissionsManager_unsupportedIterableToArray(arr) || PermissionsManager_nonIterableSpread(); }
1967
+ function PermissionsManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1968
+ function PermissionsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
1969
+ function PermissionsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return PermissionsManager_arrayLikeToArray(arr); }
1970
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || PermissionsManager_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
1971
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1972
+ function PermissionsManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return PermissionsManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return PermissionsManager_arrayLikeToArray(o, minLen); }
1973
+ function PermissionsManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
1974
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
1975
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
1976
+ function PermissionsManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ PermissionsManager_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == PermissionsManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
1977
+ function PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
1978
+ function PermissionsManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1979
+ function PermissionsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1980
+ function PermissionsManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, PermissionsManager_toPropertyKey(descriptor.key), descriptor); } }
1981
+ function PermissionsManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) PermissionsManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) PermissionsManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1982
+ function PermissionsManager_get() { if (typeof Reflect !== "undefined" && Reflect.get) { PermissionsManager_get = Reflect.get.bind(); } else { PermissionsManager_get = function _get(target, property, receiver) { var base = PermissionsManager_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return PermissionsManager_get.apply(this, arguments); }
1983
+ function PermissionsManager_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = PermissionsManager_getPrototypeOf(object); if (object === null) break; } return object; }
1984
+ function PermissionsManager_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) PermissionsManager_setPrototypeOf(subClass, superClass); }
1985
+ function PermissionsManager_setPrototypeOf(o, p) { PermissionsManager_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return PermissionsManager_setPrototypeOf(o, p); }
1986
+ function PermissionsManager_createSuper(Derived) { var hasNativeReflectConstruct = PermissionsManager_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = PermissionsManager_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = PermissionsManager_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return PermissionsManager_possibleConstructorReturn(this, result); }; }
1987
+ function PermissionsManager_possibleConstructorReturn(self, call) { if (call && (PermissionsManager_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return PermissionsManager_assertThisInitialized(self); }
1988
+ function PermissionsManager_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
1989
+ function PermissionsManager_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1990
+ function PermissionsManager_getPrototypeOf(o) { PermissionsManager_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return PermissionsManager_getPrototypeOf(o); }
1991
+ function PermissionsManager_defineProperty(obj, key, value) { key = PermissionsManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1992
+ function PermissionsManager_toPropertyKey(arg) { var key = PermissionsManager_toPrimitive(arg, "string"); return PermissionsManager_typeof(key) === "symbol" ? key : String(key); }
1993
+ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (PermissionsManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1994
+
1995
+
1996
+
1997
+
1998
+ var getOvId = function getOvId(location, target, targetId) {
1999
+ var _location$spaceId, _location$roomId, _location$topicId;
2000
+ return ((_location$spaceId = location.spaceId) !== null && _location$spaceId !== void 0 ? _location$spaceId : '') + ((_location$roomId = location.roomId) !== null && _location$roomId !== void 0 ? _location$roomId : '') + ((_location$topicId = location.topicId) !== null && _location$topicId !== void 0 ? _location$topicId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
2001
+ };
2002
+ var getOvIdByObject = function getOvIdByObject(overwrites) {
2003
+ return getOvId(overwrites.location, overwrites.target, overwrites.targetId);
2004
+ };
2005
+ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2006
+ PermissionsManager_inherits(PermissionsManager, _EventTarget);
2007
+ var _super = PermissionsManager_createSuper(PermissionsManager);
2008
+ function PermissionsManager(tracker) {
2009
+ var _this;
2010
+ PermissionsManager_classCallCheck(this, PermissionsManager);
2011
+ _this = _super.call(this);
2012
+ _this.tracker = tracker;
2013
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
2014
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwritesPromises", new PromiseRegistry());
2015
+ _this.tracker.client.on('PermissionOverwrites', function (ev) {
2016
+ return _this.handlePermissionOverwrites(ev);
2017
+ });
2018
+ _this.tracker.client.on('PermissionOverwritesUpdated', function (ev) {
2019
+ return _this.handlePermissionOverwrites(ev);
2020
+ });
2021
+ _this.tracker.client.on('SpaceDeleted', function (ev) {
2022
+ return _this.handleSpaceDeleted(ev);
2023
+ });
2024
+ _this.tracker.client.on('SpaceLeft', function (ev) {
2025
+ return _this.handleSpaceDeleted(ev);
2026
+ });
2027
+ _this.tracker.client.on('RoomDeleted', function (ev) {
2028
+ return _this.handleRoomDeleted(ev);
2029
+ });
2030
+ _this.tracker.client.on('RoomLeft', function (ev) {
2031
+ return _this.handleRoomDeleted(ev);
2032
+ });
2033
+ _this.tracker.client.on('TopicDeleted', function (ev) {
2034
+ return _this.handleTopicDeleted(ev);
2035
+ });
2036
+ _this.tracker.client.on('RoleDeleted', function (ev) {
2037
+ return _this.handleRoleDeleted(ev);
2038
+ });
2039
+ _this.tracker.client.on('SpaceMemberUpdated', function (ev) {
2040
+ return _this.handleSpaceMemberUpdated(ev);
2041
+ });
2042
+ _this.tracker.client.on('RoomMemberUpdated', function (ev) {
2043
+ return _this.handleRoomMemberUpdated(ev);
2044
+ });
2045
+ return _this;
2046
+ }
2047
+ PermissionsManager_createClass(PermissionsManager, [{
2048
+ key: "getOverwrites",
2049
+ value: function () {
2050
+ var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(location, target, targetId) {
2051
+ var _this2 = this;
2052
+ var id;
2053
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
2054
+ while (1) {
2055
+ switch (_context2.prev = _context2.next) {
2056
+ case 0:
2057
+ this.validateLocation(location);
2058
+ id = getOvId(location, target, targetId);
2059
+ if (this.overwritesPromises.notExist(id)) {
2060
+ this.overwritesPromises.registerByFunction( /*#__PURE__*/PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee() {
2061
+ var result;
2062
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
2063
+ while (1) {
2064
+ switch (_context.prev = _context.next) {
2065
+ case 0:
2066
+ _context.next = 2;
2067
+ return _this2.tracker.client.send('GetPermissionOverwrites', {
2068
+ location: location,
2069
+ target: target,
2070
+ targetId: targetId
2071
+ });
2072
+ case 2:
2073
+ result = _context.sent;
2074
+ if (!result.error) {
2075
+ _context.next = 5;
2076
+ break;
2077
+ }
2078
+ throw result.error;
2079
+ case 5:
2080
+ _this2.handlePermissionOverwrites(result.data);
2081
+ case 6:
2082
+ case "end":
2083
+ return _context.stop();
2084
+ }
2085
+ }
2086
+ }, _callee);
2087
+ })), id);
2088
+ }
2089
+ _context2.next = 5;
2090
+ return this.overwritesPromises.get(id);
2091
+ case 5:
2092
+ return _context2.abrupt("return", this.overwrites.get(id));
2093
+ case 6:
2094
+ case "end":
2095
+ return _context2.stop();
2096
+ }
2097
+ }
2098
+ }, _callee2, this);
2099
+ }));
2100
+ function getOverwrites(_x, _x2, _x3) {
2101
+ return _getOverwrites.apply(this, arguments);
2102
+ }
2103
+ return getOverwrites;
2104
+ }()
2105
+ }, {
2106
+ key: "on",
2107
+ value: function on(eventName, handler) {
2108
+ return PermissionsManager_get(PermissionsManager_getPrototypeOf(PermissionsManager.prototype), "on", this).call(this, eventName, handler);
2109
+ }
2110
+ }, {
2111
+ key: "check",
2112
+ value: function () {
2113
+ var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, location) {
2114
+ var ownedPermissions, missing;
2115
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
2116
+ while (1) {
2117
+ switch (_context3.prev = _context3.next) {
2118
+ case 0:
2119
+ if (permissionNames.length) {
2120
+ _context3.next = 2;
2121
+ break;
2122
+ }
2123
+ throw new Error('Permission names array cannot be empty');
2124
+ case 2:
2125
+ _context3.next = 4;
2126
+ return this.calculatePermissions(location);
2127
+ case 4:
2128
+ ownedPermissions = _context3.sent;
2129
+ missing = [];
2130
+ permissionNames.forEach(function (name) {
2131
+ if (~ownedPermissions & Permissions.getByName(name).value) {
2132
+ missing.push(name);
2133
+ }
2134
+ });
2135
+ return _context3.abrupt("return", {
2136
+ ok: missing.length === 0,
2137
+ hasAll: missing.length === 0,
2138
+ hasAny: missing.length < permissionNames.length,
2139
+ missing: missing
2140
+ });
2141
+ case 8:
2142
+ case "end":
2143
+ return _context3.stop();
2144
+ }
2145
+ }
2146
+ }, _callee3, this);
2147
+ }));
2148
+ function check(_x4, _x5) {
2149
+ return _check.apply(this, arguments);
2150
+ }
2151
+ return check;
2152
+ }()
2153
+ }, {
2154
+ key: "calculatePermissions",
2155
+ value: function () {
2156
+ var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(location) {
2157
+ var _spaceMember$roles, _roomMember$roles, _yield$this$tracker$s, _yield$this$tracker$r, _yield$this$tracker$r2;
2158
+ var userId, _yield$this$fetchMemb, _yield$this$fetchMemb2, spaceMember, roomMember, userRoles, promises, filterLocation, _filterLocation;
2159
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
2160
+ while (1) {
2161
+ switch (_context4.prev = _context4.next) {
2162
+ case 0:
2163
+ this.validateLocation(location);
2164
+ _context4.next = 3;
2165
+ return this.tracker.getMe();
2166
+ case 3:
2167
+ userId = _context4.sent.id;
2168
+ _context4.next = 6;
2169
+ return this.fetchMembersOrFail(location);
2170
+ case 6:
2171
+ _yield$this$fetchMemb = _context4.sent;
2172
+ _yield$this$fetchMemb2 = _slicedToArray(_yield$this$fetchMemb, 2);
2173
+ spaceMember = _yield$this$fetchMemb2[0];
2174
+ roomMember = _yield$this$fetchMemb2[1];
2175
+ userRoles = [].concat(PermissionsManager_toConsumableArray((_spaceMember$roles = spaceMember === null || spaceMember === void 0 ? void 0 : spaceMember.roles) !== null && _spaceMember$roles !== void 0 ? _spaceMember$roles : []), PermissionsManager_toConsumableArray((_roomMember$roles = roomMember === null || roomMember === void 0 ? void 0 : roomMember.roles) !== null && _roomMember$roles !== void 0 ? _roomMember$roles : []));
2176
+ promises = [
2177
+ // Global user overwrites
2178
+ this.getOverwrites({}, 'User', userId).then(function (v) {
2179
+ return v.overwrites;
2180
+ })];
2181
+ _context4.t0 = location.spaceId;
2182
+ if (!_context4.t0) {
2183
+ _context4.next = 24;
2184
+ break;
2185
+ }
2186
+ _context4.next = 16;
2187
+ return this.tracker.spaces.get();
2188
+ case 16:
2189
+ _context4.t3 = _yield$this$tracker$s = _context4.sent;
2190
+ _context4.t2 = _context4.t3 !== null;
2191
+ if (!_context4.t2) {
2192
+ _context4.next = 20;
2193
+ break;
2194
+ }
2195
+ _context4.t2 = _yield$this$tracker$s !== void 0;
2196
+ case 20:
2197
+ _context4.t1 = _context4.t2;
2198
+ if (!_context4.t1) {
2199
+ _context4.next = 23;
2200
+ break;
2201
+ }
2202
+ _context4.t1 = _yield$this$tracker$s.has(location.spaceId);
2203
+ case 23:
2204
+ _context4.t0 = _context4.t1;
2205
+ case 24:
2206
+ if (!_context4.t0) {
2207
+ _context4.next = 28;
2208
+ break;
2209
+ }
2210
+ filterLocation = {
2211
+ spaceId: location.spaceId
2212
+ };
2213
+ promises.push(this.collectRoleOverwrites(filterLocation, userRoles));
2214
+ promises.push(this.getOverwrites(filterLocation, 'User', userId).then(function (v) {
2215
+ return v.overwrites;
2216
+ }));
2217
+ case 28:
2218
+ _context4.t4 = location.roomId;
2219
+ if (!_context4.t4) {
2220
+ _context4.next = 40;
2221
+ break;
2222
+ }
2223
+ _context4.next = 32;
2224
+ return this.tracker.rooms.get();
2225
+ case 32:
2226
+ _context4.t7 = _yield$this$tracker$r = _context4.sent;
2227
+ _context4.t6 = _context4.t7 !== null;
2228
+ if (!_context4.t6) {
2229
+ _context4.next = 36;
2230
+ break;
2231
+ }
2232
+ _context4.t6 = _yield$this$tracker$r !== void 0;
2233
+ case 36:
2234
+ _context4.t5 = _context4.t6;
2235
+ if (!_context4.t5) {
2236
+ _context4.next = 39;
2237
+ break;
2238
+ }
2239
+ _context4.t5 = _yield$this$tracker$r.has(location.roomId);
2240
+ case 39:
2241
+ _context4.t4 = _context4.t5;
2242
+ case 40:
2243
+ if (!_context4.t4) {
2244
+ _context4.next = 44;
2245
+ break;
2246
+ }
2247
+ _filterLocation = {
2248
+ spaceId: location.spaceId,
2249
+ roomId: location.roomId
2250
+ };
2251
+ if (userRoles.length) {
2252
+ promises.push(this.collectRoleOverwrites(_filterLocation, userRoles));
2253
+ }
2254
+ promises.push(this.getOverwrites(_filterLocation, 'User', userId).then(function (v) {
2255
+ return v.overwrites;
2256
+ }));
2257
+ case 44:
2258
+ _context4.t8 = location.topicId;
2259
+ if (!_context4.t8) {
2260
+ _context4.next = 56;
2261
+ break;
2262
+ }
2263
+ _context4.next = 48;
2264
+ return this.tracker.rooms.getTopics(location.roomId);
2265
+ case 48:
2266
+ _context4.t11 = _yield$this$tracker$r2 = _context4.sent;
2267
+ _context4.t10 = _context4.t11 !== null;
2268
+ if (!_context4.t10) {
2269
+ _context4.next = 52;
2270
+ break;
2271
+ }
2272
+ _context4.t10 = _yield$this$tracker$r2 !== void 0;
2273
+ case 52:
2274
+ _context4.t9 = _context4.t10;
2275
+ if (!_context4.t9) {
2276
+ _context4.next = 55;
2277
+ break;
2278
+ }
2279
+ _context4.t9 = _yield$this$tracker$r2.has(location.topicId);
2280
+ case 55:
2281
+ _context4.t8 = _context4.t9;
2282
+ case 56:
2283
+ if (!_context4.t8) {
2284
+ _context4.next = 59;
2285
+ break;
2286
+ }
2287
+ if (userRoles.length) {
2288
+ promises.push(this.collectRoleOverwrites(location, userRoles));
2289
+ }
2290
+ promises.push(this.getOverwrites(location, 'User', userId).then(function (v) {
2291
+ return v.overwrites;
2292
+ }));
2293
+ case 59:
2294
+ _context4.t12 = this;
2295
+ _context4.next = 62;
2296
+ return Promise.all(promises);
2297
+ case 62:
2298
+ _context4.t13 = _context4.sent;
2299
+ return _context4.abrupt("return", _context4.t12.resolveOverwritesHierarchy.call(_context4.t12, _context4.t13));
2300
+ case 64:
2301
+ case "end":
2302
+ return _context4.stop();
2303
+ }
2304
+ }
2305
+ }, _callee4, this);
2306
+ }));
2307
+ function calculatePermissions(_x6) {
2308
+ return _calculatePermissions.apply(this, arguments);
2309
+ }
2310
+ return calculatePermissions;
2311
+ }()
2312
+ }, {
2313
+ key: "handlePermissionOverwrites",
2314
+ value: function handlePermissionOverwrites(ev) {
2315
+ this.overwrites.set([getOvIdByObject(ev), ev]);
2316
+ this.emit('change');
2317
+ }
2318
+ }, {
2319
+ key: "handleSpaceDeleted",
2320
+ value: function handleSpaceDeleted(ev) {
2321
+ var _this$overwritesPromi;
2322
+ var ids = this.deleteOverwritesByIdPrefix(getOvId({
2323
+ spaceId: ev.id
2324
+ }));
2325
+ (_this$overwritesPromi = this.overwritesPromises).forget.apply(_this$overwritesPromi, PermissionsManager_toConsumableArray(ids));
2326
+ }
2327
+ }, {
2328
+ key: "handleRoomDeleted",
2329
+ value: function () {
2330
+ var _handleRoomDeleted = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(ev) {
2331
+ var room, _this$overwritesPromi2, ids;
2332
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2333
+ while (1) {
2334
+ switch (_context5.prev = _context5.next) {
2335
+ case 0:
2336
+ _context5.next = 2;
2337
+ return this.tracker.rooms.get();
2338
+ case 2:
2339
+ room = _context5.sent.get(ev.id);
2340
+ if (room) {
2341
+ ids = this.deleteOverwritesByIdPrefix(getOvId({
2342
+ spaceId: room.spaceId,
2343
+ roomId: room.id
2344
+ }));
2345
+ (_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
2346
+ }
2347
+ case 4:
2348
+ case "end":
2349
+ return _context5.stop();
2350
+ }
2351
+ }
2352
+ }, _callee5, this);
2353
+ }));
2354
+ function handleRoomDeleted(_x7) {
2355
+ return _handleRoomDeleted.apply(this, arguments);
2356
+ }
2357
+ return handleRoomDeleted;
2358
+ }()
2359
+ }, {
2360
+ key: "handleTopicDeleted",
2361
+ value: function handleTopicDeleted(ev) {
2362
+ var _this$overwritesPromi3;
2363
+ var ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));
2364
+ (_this$overwritesPromi3 = this.overwritesPromises).forget.apply(_this$overwritesPromi3, PermissionsManager_toConsumableArray(ids));
2365
+ }
2366
+ }, {
2367
+ key: "handleRoleDeleted",
2368
+ value: function handleRoleDeleted(ev) {
2369
+ var _this$overwritesPromi4;
2370
+ var ids = this.deleteOverwritesByIdPrefix(getOvId({
2371
+ spaceId: ev.spaceId
2372
+ }, 'Role', ev.id));
2373
+ (_this$overwritesPromi4 = this.overwritesPromises).forget.apply(_this$overwritesPromi4, PermissionsManager_toConsumableArray(ids));
2374
+ }
2375
+ }, {
2376
+ key: "handleSpaceMemberUpdated",
2377
+ value: function handleSpaceMemberUpdated(ev) {
2378
+ var _this$tracker$me;
2379
+ if (ev.userId === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id)) {
2380
+ // User roles in space could potentially have changed
2381
+ this.emit('change');
2382
+ }
2383
+ }
2384
+ }, {
2385
+ key: "handleRoomMemberUpdated",
2386
+ value: function handleRoomMemberUpdated(ev) {
2387
+ var _this$tracker$me2;
2388
+ if (ev.userId === ((_this$tracker$me2 = this.tracker.me) === null || _this$tracker$me2 === void 0 ? void 0 : _this$tracker$me2.id)) {
2389
+ // User roles in room could potentially have changed
2390
+ this.emit('change');
2391
+ }
2392
+ }
2393
+
2394
+ /**
2395
+ * @return Matched and deleted ids
2396
+ */
2397
+ }, {
2398
+ key: "deleteOverwritesByIdPrefix",
2399
+ value: function deleteOverwritesByIdPrefix(prefix) {
2400
+ var _this3 = this;
2401
+ var ids = [];
2402
+ this.overwrites.items.forEach(function (overwrites) {
2403
+ var id = getOvIdByObject(overwrites);
2404
+ if (id.startsWith(prefix)) {
2405
+ ids.push(id);
2406
+ _this3.overwrites["delete"](id);
2407
+ }
2408
+ });
2409
+ return ids;
2410
+ }
2411
+ }, {
2412
+ key: "collectRoleOverwrites",
2413
+ value: function () {
2414
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(location, userRoles) {
2415
+ var _this4 = this;
2416
+ var roleOverwrites;
2417
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
2418
+ while (1) {
2419
+ switch (_context6.prev = _context6.next) {
2420
+ case 0:
2421
+ _context6.next = 2;
2422
+ return Promise.all(userRoles.map(function (roleId) {
2423
+ return _this4.getOverwrites(location, 'Role', roleId);
2424
+ }));
2425
+ case 2:
2426
+ roleOverwrites = _context6.sent;
2427
+ return _context6.abrupt("return", this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites));
2428
+ case 4:
2429
+ case "end":
2430
+ return _context6.stop();
2431
+ }
2432
+ }
2433
+ }, _callee6, this);
2434
+ }));
2435
+ function collectRoleOverwrites(_x8, _x9) {
2436
+ return _collectRoleOverwrites.apply(this, arguments);
2437
+ }
2438
+ return collectRoleOverwrites;
2439
+ }()
2440
+ }, {
2441
+ key: "resolveOverwritesFromRolesByOrder",
2442
+ value: function () {
2443
+ var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee7(spaceId, overwrites) {
2444
+ var allows, denies, roles, sortedOverwrites, permissionsLength;
2445
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
2446
+ while (1) {
2447
+ switch (_context7.prev = _context7.next) {
2448
+ case 0:
2449
+ allows = 0, denies = 0;
2450
+ _context7.next = 3;
2451
+ return this.tracker.spaces.getRoles(spaceId);
2452
+ case 3:
2453
+ roles = _context7.sent;
2454
+ sortedOverwrites = overwrites.sort(function (a, b) {
2455
+ return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
2456
+ }); // Max length of bit word
2457
+ permissionsLength = overwrites.reduce(function (previousValue, currentValue) {
2458
+ var _currentValue$overwri, _currentValue$overwri2, _currentValue$overwri3, _currentValue$overwri4;
2459
+ return Math.max(previousValue, (_currentValue$overwri = (_currentValue$overwri2 = currentValue.overwrites.allow) === null || _currentValue$overwri2 === void 0 ? void 0 : _currentValue$overwri2.toString(2).length) !== null && _currentValue$overwri !== void 0 ? _currentValue$overwri : 0, (_currentValue$overwri3 = (_currentValue$overwri4 = currentValue.overwrites.deny) === null || _currentValue$overwri4 === void 0 ? void 0 : _currentValue$overwri4.toString(2).length) !== null && _currentValue$overwri3 !== void 0 ? _currentValue$overwri3 : 0);
2460
+ }, 0);
2461
+ sortedOverwrites.forEach(function (overwriteEvent) {
2462
+ var _overwrites$deny$toSt, _overwrites$deny, _overwrites$allow$toS, _overwrites$allow;
2463
+ var overwrites = overwriteEvent.overwrites;
2464
+ var revDecDenies = (_overwrites$deny$toSt = (_overwrites$deny = overwrites.deny) === null || _overwrites$deny === void 0 ? void 0 : _overwrites$deny.toString(2).split('').reverse().join('')) !== null && _overwrites$deny$toSt !== void 0 ? _overwrites$deny$toSt : '';
2465
+ var revDecAllows = (_overwrites$allow$toS = (_overwrites$allow = overwrites.allow) === null || _overwrites$allow === void 0 ? void 0 : _overwrites$allow.toString(2).split('').reverse().join('')) !== null && _overwrites$allow$toS !== void 0 ? _overwrites$allow$toS : '';
2466
+ for (var i = 0; i < permissionsLength; i++) {
2467
+ var _revDecDenies$i, _revDecAllows$i;
2468
+ var deny = parseInt((_revDecDenies$i = revDecDenies[i]) !== null && _revDecDenies$i !== void 0 ? _revDecDenies$i : '0');
2469
+ var allow = parseInt((_revDecAllows$i = revDecAllows[i]) !== null && _revDecAllows$i !== void 0 ? _revDecAllows$i : '0');
2470
+ if (deny) {
2471
+ denies |= 1 << i;
2472
+ }
2473
+ if (allow) {
2474
+ allows |= 1 << i;
2475
+ }
2476
+ }
2477
+ });
2478
+ return _context7.abrupt("return", {
2479
+ allow: allows,
2480
+ deny: denies
2481
+ });
2482
+ case 8:
2483
+ case "end":
2484
+ return _context7.stop();
2485
+ }
2486
+ }
2487
+ }, _callee7, this);
2488
+ }));
2489
+ function resolveOverwritesFromRolesByOrder(_x10, _x11) {
2490
+ return _resolveOverwritesFromRolesByOrder.apply(this, arguments);
2491
+ }
2492
+ return resolveOverwritesFromRolesByOrder;
2493
+ }()
2494
+ }, {
2495
+ key: "resolveOverwritesHierarchy",
2496
+ value: function resolveOverwritesHierarchy(permissionOverwritesValues) {
2497
+ var result = 0;
2498
+ var _iterator = PermissionsManager_createForOfIteratorHelper(permissionOverwritesValues),
2499
+ _step;
2500
+ try {
2501
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
2502
+ var value = _step.value;
2503
+ if (value.allow & Permissions.getByName('Root').value) {
2504
+ return this.getRootAccessValue();
2505
+ }
2506
+ result = result & ~value.deny | value.allow;
2507
+ }
2508
+ } catch (err) {
2509
+ _iterator.e(err);
2510
+ } finally {
2511
+ _iterator.f();
2512
+ }
2513
+ return result;
2514
+ }
2515
+ }, {
2516
+ key: "getRootAccessValue",
2517
+ value: function getRootAccessValue() {
2518
+ var result = 0;
2519
+ var _iterator2 = PermissionsManager_createForOfIteratorHelper(Permissions.getNames()),
2520
+ _step2;
2521
+ try {
2522
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
2523
+ var name = _step2.value;
2524
+ result |= Permissions.getByName(name).value;
2525
+ }
2526
+ } catch (err) {
2527
+ _iterator2.e(err);
2528
+ } finally {
2529
+ _iterator2.f();
2530
+ }
2531
+ return result;
2532
+ }
2533
+ }, {
2534
+ key: "fetchMembersOrFail",
2535
+ value: function () {
2536
+ var _fetchMembersOrFail = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee8(location) {
2537
+ var results, spaceFail, roomFail, layer;
2538
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
2539
+ while (1) {
2540
+ switch (_context8.prev = _context8.next) {
2541
+ case 0:
2542
+ _context8.next = 2;
2543
+ return Promise.all([location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null, location.roomId ? this.tracker.rooms.getMe(location.roomId) : null]);
2544
+ case 2:
2545
+ results = _context8.sent;
2546
+ spaceFail = location.spaceId && !results[0];
2547
+ roomFail = location.roomId && !results[1];
2548
+ if (!(spaceFail || roomFail)) {
2549
+ _context8.next = 8;
2550
+ break;
2551
+ }
2552
+ layer = spaceFail ? "space (".concat(location.spaceId, ")") : "room (".concat(location.roomId, ")");
2553
+ throw new Error("Attempting to calculate permissions for a ".concat(layer, " that the user does not belong to"));
2554
+ case 8:
2555
+ return _context8.abrupt("return", results);
2556
+ case 9:
2557
+ case "end":
2558
+ return _context8.stop();
2559
+ }
2560
+ }
2561
+ }, _callee8, this);
2562
+ }));
2563
+ function fetchMembersOrFail(_x12) {
2564
+ return _fetchMembersOrFail.apply(this, arguments);
2565
+ }
2566
+ return fetchMembersOrFail;
2567
+ }()
2568
+ }, {
2569
+ key: "validateLocation",
2570
+ value: function validateLocation(location) {
2571
+ if (location.topicId && !location.roomId) {
2572
+ throw new Error('Corrupted arguments hierarchy');
2573
+ }
2574
+ }
2575
+ }]);
2576
+ return PermissionsManager;
2577
+ }(EventTarget);
2578
+ ;// CONCATENATED MODULE: ./src/state-tracker/ChatStateTracker.ts
2579
+ function ChatStateTracker_typeof(obj) { "@babel/helpers - typeof"; return ChatStateTracker_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, ChatStateTracker_typeof(obj); }
2580
+ function ChatStateTracker_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ ChatStateTracker_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == ChatStateTracker_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
2581
+ function ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2582
+ function ChatStateTracker_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
2583
+ function ChatStateTracker_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2584
+ function ChatStateTracker_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ChatStateTracker_toPropertyKey(descriptor.key), descriptor); } }
2585
+ function ChatStateTracker_createClass(Constructor, protoProps, staticProps) { if (protoProps) ChatStateTracker_defineProperties(Constructor.prototype, protoProps); if (staticProps) ChatStateTracker_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2586
+ function ChatStateTracker_defineProperty(obj, key, value) { key = ChatStateTracker_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2587
+ function ChatStateTracker_toPropertyKey(arg) { var key = ChatStateTracker_toPrimitive(arg, "string"); return ChatStateTracker_typeof(key) === "symbol" ? key : String(key); }
2588
+ function ChatStateTracker_toPrimitive(input, hint) { if (ChatStateTracker_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (ChatStateTracker_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
2589
+
2590
+
2591
+
2592
+
2593
+ var ChatStateTracker = /*#__PURE__*/function () {
2594
+ /**
2595
+ * State of your permissions.
2596
+ */
2597
+
2598
+ /**
2599
+ * State of the rooms you are in.
2600
+ */
2601
+
2602
+ /**
2603
+ * State of the spaces you are in.
2604
+ */
2605
+
2606
+ function ChatStateTracker(client) {
2607
+ var _this = this;
2608
+ ChatStateTracker_classCallCheck(this, ChatStateTracker);
2609
+ this.client = client;
2610
+ ChatStateTracker_defineProperty(this, "permissions", new PermissionsManager(this));
2611
+ ChatStateTracker_defineProperty(this, "rooms", new RoomsManager(this));
2612
+ ChatStateTracker_defineProperty(this, "spaces", new SpacesManager(this));
2613
+ ChatStateTracker_defineProperty(this, "_me", null);
2614
+ ChatStateTracker_defineProperty(this, "deferredSession", new DeferredTask());
2615
+ this.client.on('Session', function (ev) {
2616
+ return _this.handleSession(ev);
2617
+ });
2618
+ }
2619
+ ChatStateTracker_createClass(ChatStateTracker, [{
2620
+ key: "me",
2621
+ get: function get() {
2622
+ return this._me;
2623
+ }
2624
+ }, {
2625
+ key: "getMe",
2626
+ value: function () {
2627
+ var _getMe = ChatStateTracker_asyncToGenerator( /*#__PURE__*/ChatStateTracker_regeneratorRuntime().mark(function _callee() {
2628
+ return ChatStateTracker_regeneratorRuntime().wrap(function _callee$(_context) {
2629
+ while (1) {
2630
+ switch (_context.prev = _context.next) {
2631
+ case 0:
2632
+ _context.next = 2;
2633
+ return this.deferredSession.promise;
2634
+ case 2:
2635
+ return _context.abrupt("return", this._me);
2636
+ case 3:
2637
+ case "end":
2638
+ return _context.stop();
2639
+ }
2640
+ }
2641
+ }, _callee, this);
2642
+ }));
2643
+ function getMe() {
2644
+ return _getMe.apply(this, arguments);
2645
+ }
2646
+ return getMe;
2647
+ }()
2648
+ }, {
2649
+ key: "handleSession",
2650
+ value: function handleSession(ev) {
2651
+ this._me = ev.user;
2652
+ this.deferredSession.resolve();
2653
+ }
2654
+ }]);
2655
+ return ChatStateTracker;
2656
+ }();
2657
+ ;// CONCATENATED MODULE: ./src/WebSocketChatClient.ts
2658
+ function WebSocketChatClient_typeof(obj) { "@babel/helpers - typeof"; return WebSocketChatClient_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, WebSocketChatClient_typeof(obj); }
2659
+ function WebSocketChatClient_toConsumableArray(arr) { return WebSocketChatClient_arrayWithoutHoles(arr) || WebSocketChatClient_iterableToArray(arr) || WebSocketChatClient_unsupportedIterableToArray(arr) || WebSocketChatClient_nonIterableSpread(); }
2660
+ function WebSocketChatClient_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2661
+ function WebSocketChatClient_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return WebSocketChatClient_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return WebSocketChatClient_arrayLikeToArray(o, minLen); }
2662
+ function WebSocketChatClient_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
2663
+ function WebSocketChatClient_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return WebSocketChatClient_arrayLikeToArray(arr); }
2664
+ function WebSocketChatClient_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
2665
+ function WebSocketChatClient_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ WebSocketChatClient_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == WebSocketChatClient_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
2666
+ function WebSocketChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2667
+ function WebSocketChatClient_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { WebSocketChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { WebSocketChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
2668
+ function WebSocketChatClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2669
+ function WebSocketChatClient_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, WebSocketChatClient_toPropertyKey(descriptor.key), descriptor); } }
2670
+ function WebSocketChatClient_createClass(Constructor, protoProps, staticProps) { if (protoProps) WebSocketChatClient_defineProperties(Constructor.prototype, protoProps); if (staticProps) WebSocketChatClient_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2671
+ function WebSocketChatClient_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) WebSocketChatClient_setPrototypeOf(subClass, superClass); }
2672
+ function WebSocketChatClient_setPrototypeOf(o, p) { WebSocketChatClient_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return WebSocketChatClient_setPrototypeOf(o, p); }
2673
+ function WebSocketChatClient_createSuper(Derived) { var hasNativeReflectConstruct = WebSocketChatClient_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = WebSocketChatClient_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = WebSocketChatClient_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return WebSocketChatClient_possibleConstructorReturn(this, result); }; }
2674
+ function WebSocketChatClient_possibleConstructorReturn(self, call) { if (call && (WebSocketChatClient_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return WebSocketChatClient_assertThisInitialized(self); }
2675
+ function WebSocketChatClient_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
2676
+ function WebSocketChatClient_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
2677
+ function WebSocketChatClient_getPrototypeOf(o) { WebSocketChatClient_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return WebSocketChatClient_getPrototypeOf(o); }
2678
+ function WebSocketChatClient_defineProperty(obj, key, value) { key = WebSocketChatClient_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2679
+ function WebSocketChatClient_toPropertyKey(arg) { var key = WebSocketChatClient_toPrimitive(arg, "string"); return WebSocketChatClient_typeof(key) === "symbol" ? key : String(key); }
2680
+ function WebSocketChatClient_toPrimitive(input, hint) { if (WebSocketChatClient_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (WebSocketChatClient_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
2681
+
2682
+
2683
+ var WebSocketChatClientEvent;
2684
+ (function (WebSocketChatClientEvent) {
2685
+ WebSocketChatClientEvent["connect"] = "connect";
2686
+ WebSocketChatClientEvent["disconnect"] = "disconnect";
2687
+ WebSocketChatClientEvent["message"] = "message";
2688
+ WebSocketChatClientEvent["error"] = "error";
2689
+ })(WebSocketChatClientEvent || (WebSocketChatClientEvent = {}));
2690
+ var WebSocketChatClient = /*#__PURE__*/function (_AbstractChatClient) {
2691
+ WebSocketChatClient_inherits(WebSocketChatClient, _AbstractChatClient);
2692
+ var _super = WebSocketChatClient_createSuper(WebSocketChatClient);
2693
+ function WebSocketChatClient(options) {
2694
+ var _this$options$stateTr;
2695
+ var _this;
2696
+ WebSocketChatClient_classCallCheck(this, WebSocketChatClient);
2697
+ _this = _super.call(this);
2698
+ _this.options = options;
2699
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "Event", WebSocketChatClientEvent);
2700
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "state", void 0);
2701
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "ws", null);
2702
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "sendQueue", []);
2703
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "connectingTimeoutId", void 0);
2704
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "authenticated", void 0);
2705
+ WebSocketChatClient_defineProperty(WebSocketChatClient_assertThisInitialized(_this), "authenticatedResolvers", void 0);
2706
+ if (!_this.options.token && !_this.options.temporaryNick) {
2707
+ throw new Error('Token or temporary nick is required');
2708
+ }
2709
+ if ((_this$options$stateTr = _this.options.stateTracking) !== null && _this$options$stateTr !== void 0 ? _this$options$stateTr : true) {
2710
+ _this.state = new ChatStateTracker(WebSocketChatClient_assertThisInitialized(_this));
2711
+ }
2712
+ return _this;
2713
+ }
2714
+ WebSocketChatClient_createClass(WebSocketChatClient, [{
2715
+ key: "connect",
2716
+ value: function () {
2717
+ var _connect = WebSocketChatClient_asyncToGenerator( /*#__PURE__*/WebSocketChatClient_regeneratorRuntime().mark(function _callee() {
2718
+ var _this2 = this,
2719
+ _this$options$connect;
2720
+ var authString;
2721
+ return WebSocketChatClient_regeneratorRuntime().wrap(function _callee$(_context) {
2722
+ while (1) {
2723
+ switch (_context.prev = _context.next) {
2724
+ case 0:
2725
+ authString = this.options.token ? "token=".concat(this.options.token) : "nick=".concat(this.options.temporaryNick);
2726
+ this.ws = new WebSocket("".concat(this.options.url, "?").concat(authString));
2727
+ this.ws.onclose = function (ev) {
2728
+ return _this2.onClose(ev);
2729
+ };
2730
+ this.ws.onmessage = function (ev) {
2731
+ return _this2.onMessage(ev);
2732
+ };
2733
+ this.connectingTimeoutId = setTimeout(function () {
2734
+ return _this2.triggerConnectionTimeout();
2735
+ }, (_this$options$connect = this.options.connectingTimeoutMs) !== null && _this$options$connect !== void 0 ? _this$options$connect : 10000);
2736
+ this.authenticated = false;
2737
+ return _context.abrupt("return", new Promise(function () {
2738
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2739
+ args[_key] = arguments[_key];
2740
+ }
2741
+ return _this2.authenticatedResolvers = args;
2742
+ }));
2743
+ case 7:
2744
+ case "end":
2745
+ return _context.stop();
2746
+ }
2747
+ }
2748
+ }, _callee, this);
2749
+ }));
2750
+ function connect() {
2751
+ return _connect.apply(this, arguments);
2752
+ }
2753
+ return connect;
2754
+ }()
2755
+ }, {
2756
+ key: "disconnect",
2757
+ value: function disconnect() {
2758
+ var _this$ws;
2759
+ this.sendQueue = [];
2760
+ (_this$ws = this.ws) === null || _this$ws === void 0 ? void 0 : _this$ws.close();
2761
+ this.ws = null;
2762
+ }
2763
+ }, {
2764
+ key: "send",
2765
+ value: function () {
2766
+ var _send = WebSocketChatClient_asyncToGenerator( /*#__PURE__*/WebSocketChatClient_regeneratorRuntime().mark(function _callee2(commandType, commandData) {
2767
+ var envelope;
2768
+ return WebSocketChatClient_regeneratorRuntime().wrap(function _callee2$(_context2) {
2769
+ while (1) {
2770
+ switch (_context2.prev = _context2.next) {
2771
+ case 0:
2772
+ if (!(!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState))) {
2773
+ _context2.next = 2;
2774
+ break;
2775
+ }
2776
+ throw new Error('Cannot send; close or closing connection state');
2777
+ case 2:
2778
+ if (!(this.ws.readyState === this.ws.CONNECTING || !this.authenticated)) {
2779
+ _context2.next = 5;
2780
+ break;
2781
+ }
2782
+ this.sendQueue.push([commandType, commandData]);
2783
+ return _context2.abrupt("return");
2784
+ case 5:
2785
+ if (!(this.ws.readyState !== this.ws.OPEN)) {
2786
+ _context2.next = 7;
2787
+ break;
2788
+ }
2789
+ throw new Error("Invalid websocket state=".concat(this.ws.readyState));
2790
+ case 7:
2791
+ envelope = this.createEnvelope(commandType, commandData);
2792
+ this.ws.send(JSON.stringify(envelope));
2793
+ return _context2.abrupt("return", this.createPromiseFromCommandEnvelope(envelope));
2794
+ case 10:
2795
+ case "end":
2796
+ return _context2.stop();
2797
+ }
2798
+ }
2799
+ }, _callee2, this);
2800
+ }));
2801
+ function send(_x, _x2) {
2802
+ return _send.apply(this, arguments);
2803
+ }
2804
+ return send;
2805
+ }()
2806
+ }, {
2807
+ key: "onMessage",
2808
+ value: function onMessage(event) {
2809
+ var envelope = JSON.parse(event.data);
2810
+ this.handleIncomingEnvelope(envelope);
2811
+ this.emit(envelope.type, envelope.data);
2812
+ this.emit(this.Event.message, envelope);
2813
+
2814
+ // Login successfully
2815
+ if (!this.authenticated) {
2816
+ var isAuthenticated = envelope.type !== 'Error';
2817
+ this.authenticated = isAuthenticated;
2818
+ if (isAuthenticated) {
2819
+ this.authenticatedResolvers[0]();
2820
+ this.emit(this.Event.connect);
2821
+ this.sendFromQueue();
2822
+ } else {
2823
+ this.authenticatedResolvers[1](envelope.data);
2824
+ }
2825
+ }
2826
+ }
2827
+ }, {
2828
+ key: "onClose",
2829
+ value: function onClose(event) {
2830
+ clearTimeout(this.connectingTimeoutId);
2831
+ var reconnect = event.code !== 1000; // Connection was closed because of error
2832
+ if (reconnect) {
2833
+ this.connect();
2834
+ }
2835
+ this.emit(this.Event.disconnect, reconnect);
2836
+ }
2837
+ }, {
2838
+ key: "sendFromQueue",
2839
+ value: function sendFromQueue() {
2840
+ var _this3 = this;
2841
+ // Send awaiting data to server
2842
+ var lastDelay = 0;
2843
+ var _loop = function _loop(dataIndex) {
2844
+ var _this3$options$awaitQ;
2845
+ var data = _this3.sendQueue[dataIndex];
2846
+ setTimeout(function () {
2847
+ return _this3.send.apply(_this3, WebSocketChatClient_toConsumableArray(data));
2848
+ }, lastDelay);
2849
+ lastDelay += (_this3$options$awaitQ = _this3.options.awaitQueueSendDelayMs) !== null && _this3$options$awaitQ !== void 0 ? _this3$options$awaitQ : 500;
2850
+ };
2851
+ for (var dataIndex in this.sendQueue) {
2852
+ _loop(dataIndex);
2853
+ }
2854
+ this.sendQueue = [];
2855
+ clearTimeout(this.connectingTimeoutId);
2856
+ }
2857
+ }, {
2858
+ key: "triggerConnectionTimeout",
2859
+ value: function triggerConnectionTimeout() {
2860
+ this.disconnect();
2861
+ this.emit(this.Event.error, new Error('Connection timeout'));
2862
+ }
2863
+ }]);
2864
+ return WebSocketChatClient;
2865
+ }(AbstractChatClient);
2866
+ ;// CONCATENATED MODULE: ./src/WebApiChatClient.ts
2867
+ function WebApiChatClient_typeof(obj) { "@babel/helpers - typeof"; return WebApiChatClient_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, WebApiChatClient_typeof(obj); }
2868
+ function WebApiChatClient_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ WebApiChatClient_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == WebApiChatClient_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
2869
+ function WebApiChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2870
+ function WebApiChatClient_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { WebApiChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { WebApiChatClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
2871
+ function WebApiChatClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2872
+ function WebApiChatClient_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, WebApiChatClient_toPropertyKey(descriptor.key), descriptor); } }
2873
+ function WebApiChatClient_createClass(Constructor, protoProps, staticProps) { if (protoProps) WebApiChatClient_defineProperties(Constructor.prototype, protoProps); if (staticProps) WebApiChatClient_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2874
+ function WebApiChatClient_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) WebApiChatClient_setPrototypeOf(subClass, superClass); }
2875
+ function WebApiChatClient_setPrototypeOf(o, p) { WebApiChatClient_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return WebApiChatClient_setPrototypeOf(o, p); }
2876
+ function WebApiChatClient_createSuper(Derived) { var hasNativeReflectConstruct = WebApiChatClient_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = WebApiChatClient_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = WebApiChatClient_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return WebApiChatClient_possibleConstructorReturn(this, result); }; }
2877
+ function WebApiChatClient_possibleConstructorReturn(self, call) { if (call && (WebApiChatClient_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return WebApiChatClient_assertThisInitialized(self); }
2878
+ function WebApiChatClient_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
2879
+ function WebApiChatClient_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
2880
+ function WebApiChatClient_getPrototypeOf(o) { WebApiChatClient_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return WebApiChatClient_getPrototypeOf(o); }
2881
+ function WebApiChatClient_defineProperty(obj, key, value) { key = WebApiChatClient_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2882
+ function WebApiChatClient_toPropertyKey(arg) { var key = WebApiChatClient_toPrimitive(arg, "string"); return WebApiChatClient_typeof(key) === "symbol" ? key : String(key); }
2883
+ function WebApiChatClient_toPrimitive(input, hint) { if (WebApiChatClient_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (WebApiChatClient_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
2884
+
2885
+ var WebApiChatClientEvent;
2886
+ (function (WebApiChatClientEvent) {
2887
+ WebApiChatClientEvent["message"] = "message";
2888
+ WebApiChatClientEvent["error"] = "error";
2889
+ WebApiChatClientEvent["destroy"] = "destroy";
2890
+ })(WebApiChatClientEvent || (WebApiChatClientEvent = {}));
2891
+ var WebApiChatClient = /*#__PURE__*/function (_AbstractChatClient) {
2892
+ WebApiChatClient_inherits(WebApiChatClient, _AbstractChatClient);
2893
+ var _super = WebApiChatClient_createSuper(WebApiChatClient);
2894
+ function WebApiChatClient(options) {
2895
+ var _this;
2896
+ WebApiChatClient_classCallCheck(this, WebApiChatClient);
2897
+ _this = _super.call(this);
2898
+ _this.options = options;
2899
+ WebApiChatClient_defineProperty(WebApiChatClient_assertThisInitialized(_this), "Event", WebApiChatClientEvent);
2900
+ WebApiChatClient_defineProperty(WebApiChatClient_assertThisInitialized(_this), "sendStack", void 0);
2901
+ if (!_this.options.token && !_this.options.temporaryNick) {
2902
+ throw new Error('Token or temporary nick is required');
2903
+ }
2904
+ return _this;
2905
+ }
2906
+ WebApiChatClient_createClass(WebApiChatClient, [{
2907
+ key: "send",
2908
+ value: function () {
2909
+ var _send = WebApiChatClient_asyncToGenerator( /*#__PURE__*/WebApiChatClient_regeneratorRuntime().mark(function _callee(commandType, commandData) {
2910
+ var envelope;
2911
+ return WebApiChatClient_regeneratorRuntime().wrap(function _callee$(_context) {
2912
+ while (1) {
2913
+ switch (_context.prev = _context.next) {
2914
+ case 0:
2915
+ envelope = this.createEnvelope(commandType, commandData);
2916
+ this.sendStack.push({
2917
+ data: envelope,
2918
+ attempts: 0,
2919
+ lastTimeoutId: null
2920
+ });
2921
+ this.makeApiCall(this.sendStack.length - 1);
2922
+ return _context.abrupt("return", this.createPromiseFromCommandEnvelope(envelope));
2923
+ case 4:
2924
+ case "end":
2925
+ return _context.stop();
2926
+ }
2927
+ }
2928
+ }, _callee, this);
2929
+ }));
2930
+ function send(_x, _x2) {
2931
+ return _send.apply(this, arguments);
2932
+ }
2933
+ return send;
2934
+ }()
2935
+ }, {
2936
+ key: "destroy",
2937
+ value: function destroy() {
2938
+ var _this2 = this;
2939
+ // Cancel all awaiting requests
2940
+ this.sendStack.forEach(function (item) {
2941
+ if (item.lastTimeoutId) {
2942
+ clearTimeout(item.lastTimeoutId);
2943
+ }
2944
+ _this2.awaitingResponse["delete"](item.data.ref);
2945
+ });
2946
+ this.sendStack = [];
2947
+ this.emit(this.Event.destroy, false);
2948
+ }
2949
+ }, {
2950
+ key: "onMessage",
2951
+ value: function () {
2952
+ var _onMessage = WebApiChatClient_asyncToGenerator( /*#__PURE__*/WebApiChatClient_regeneratorRuntime().mark(function _callee2(reqId, response) {
2953
+ var envelope;
2954
+ return WebApiChatClient_regeneratorRuntime().wrap(function _callee2$(_context2) {
2955
+ while (1) {
2956
+ switch (_context2.prev = _context2.next) {
2957
+ case 0:
2958
+ this.sendStack.splice(reqId, 1);
2959
+ _context2.next = 3;
2960
+ return response.json();
2961
+ case 3:
2962
+ envelope = _context2.sent;
2963
+ this.handleIncomingEnvelope(envelope);
2964
+ this.emit(envelope.type, envelope.data);
2965
+ this.emit(this.Event.message, envelope);
2966
+ case 7:
2967
+ case "end":
2968
+ return _context2.stop();
2969
+ }
2970
+ }
2971
+ }, _callee2, this);
2972
+ }));
2973
+ function onMessage(_x3, _x4) {
2974
+ return _onMessage.apply(this, arguments);
2975
+ }
2976
+ return onMessage;
2977
+ }()
2978
+ }, {
2979
+ key: "onError",
2980
+ value: function onError(reqId, body) {
2981
+ var _this$options$attempt,
2982
+ _this3 = this,
2983
+ _this$options$attempt2;
2984
+ if (this.sendStack[reqId].attempts >= ((_this$options$attempt = this.options.attemptsToSend) !== null && _this$options$attempt !== void 0 ? _this$options$attempt : 10)) {
2985
+ this.sendStack.splice(reqId, 1);
2986
+ this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error("Cannot send ".concat(body, "; aborting after reaching the maximum connection errors")));
2987
+ return;
2988
+ }
2989
+ this.sendStack[reqId].lastTimeoutId = setTimeout(function () {
2990
+ return _this3.makeApiCall(reqId);
2991
+ }, (_this$options$attempt2 = this.options.attemptDelayMs) !== null && _this$options$attempt2 !== void 0 ? _this$options$attempt2 : 3000);
2992
+ }
2993
+ }, {
2994
+ key: "makeApiCall",
2995
+ value: function makeApiCall(reqId) {
2996
+ var _this4 = this;
2997
+ this.sendStack[reqId].attempts++;
2998
+ var bodyJson = JSON.stringify(this.sendStack[reqId].data);
2999
+ var headers = {
3000
+ 'Content-Type': 'application/json',
3001
+ Accept: 'application/json'
3002
+ };
3003
+ if (this.options.token) {
3004
+ headers.Authorization = "Bearer ".concat(this.options.token);
3005
+ } else if (this.options.temporaryNick) {
3006
+ headers.Authorization = "Temp ".concat(this.options.temporaryNick);
3007
+ }
3008
+ fetch(this.options.url, {
3009
+ headers: headers,
3010
+ body: bodyJson,
3011
+ method: 'POST'
3012
+ }).then(function (response) {
3013
+ return _this4.onMessage(reqId, response);
3014
+ })["catch"](function () {
3015
+ return _this4.onError(reqId, bodyJson);
3016
+ });
3017
+ }
3018
+ }]);
3019
+ return WebApiChatClient;
3020
+ }(AbstractChatClient);
3021
+ ;// CONCATENATED MODULE: ./src/AbstractRestClient.ts
3022
+ function AbstractRestClient_typeof(obj) { "@babel/helpers - typeof"; return AbstractRestClient_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, AbstractRestClient_typeof(obj); }
3023
+ function AbstractRestClient_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ AbstractRestClient_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == AbstractRestClient_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
3024
+ function AbstractRestClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
3025
+ function AbstractRestClient_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { AbstractRestClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { AbstractRestClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
3026
+ function AbstractRestClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3027
+ function AbstractRestClient_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, AbstractRestClient_toPropertyKey(descriptor.key), descriptor); } }
3028
+ function AbstractRestClient_createClass(Constructor, protoProps, staticProps) { if (protoProps) AbstractRestClient_defineProperties(Constructor.prototype, protoProps); if (staticProps) AbstractRestClient_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3029
+ function AbstractRestClient_defineProperty(obj, key, value) { key = AbstractRestClient_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3030
+ function AbstractRestClient_toPropertyKey(arg) { var key = AbstractRestClient_toPrimitive(arg, "string"); return AbstractRestClient_typeof(key) === "symbol" ? key : String(key); }
3031
+ function AbstractRestClient_toPrimitive(input, hint) { if (AbstractRestClient_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (AbstractRestClient_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
3032
+ var AbstractRestClient = /*#__PURE__*/function () {
3033
+ function AbstractRestClient(options) {
3034
+ AbstractRestClient_classCallCheck(this, AbstractRestClient);
3035
+ this.options = options;
3036
+ AbstractRestClient_defineProperty(this, "defaultUrl", void 0);
3037
+ }
3038
+ AbstractRestClient_createClass(AbstractRestClient, [{
3039
+ key: "send",
3040
+ value: function () {
3041
+ var _send = AbstractRestClient_asyncToGenerator( /*#__PURE__*/AbstractRestClient_regeneratorRuntime().mark(function _callee(method, uri) {
3042
+ var _result$headers$get;
3043
+ var data,
3044
+ headers,
3045
+ url,
3046
+ body,
3047
+ result,
3048
+ _args = arguments;
3049
+ return AbstractRestClient_regeneratorRuntime().wrap(function _callee$(_context) {
3050
+ while (1) {
3051
+ switch (_context.prev = _context.next) {
3052
+ case 0:
3053
+ data = _args.length > 2 && _args[2] !== undefined ? _args[2] : undefined;
3054
+ headers = {
3055
+ 'Content-Type': 'application/json',
3056
+ Accept: 'application/json'
3057
+ };
3058
+ if (this.options.token) {
3059
+ headers.Authorization = "Bearer ".concat(this.options.token);
3060
+ }
3061
+ url = this.getUrl(uri);
3062
+ body = undefined;
3063
+ if (data) {
3064
+ if (['GET', 'DELETE'].includes(method)) {
3065
+ url += new URLSearchParams(data).toString();
3066
+ } else {
3067
+ body = JSON.stringify(data);
3068
+ }
3069
+ }
3070
+ _context.next = 8;
3071
+ return fetch(url, {
3072
+ method: method,
3073
+ body: body,
3074
+ headers: headers
3075
+ });
3076
+ case 8:
3077
+ result = _context.sent;
3078
+ _context.t0 = result.ok;
3079
+ _context.t1 = result.status;
3080
+ if (!((_result$headers$get = result.headers.get('content-type')) !== null && _result$headers$get !== void 0 && _result$headers$get.includes('json'))) {
3081
+ _context.next = 17;
3082
+ break;
3083
+ }
3084
+ _context.next = 14;
3085
+ return result.json();
3086
+ case 14:
3087
+ _context.t2 = _context.sent;
3088
+ _context.next = 20;
3089
+ break;
3090
+ case 17:
3091
+ _context.next = 19;
3092
+ return result.text();
3093
+ case 19:
3094
+ _context.t2 = _context.sent;
3095
+ case 20:
3096
+ _context.t3 = _context.t2;
3097
+ return _context.abrupt("return", {
3098
+ ok: _context.t0,
3099
+ status: _context.t1,
3100
+ data: _context.t3
3101
+ });
3102
+ case 22:
3103
+ case "end":
3104
+ return _context.stop();
3105
+ }
3106
+ }
3107
+ }, _callee, this);
3108
+ }));
3109
+ function send(_x, _x2) {
3110
+ return _send.apply(this, arguments);
3111
+ }
3112
+ return send;
3113
+ }()
3114
+ }, {
3115
+ key: "getUrl",
3116
+ value: function getUrl(uri) {
3117
+ var _this$options$url;
3118
+ return this.removeEndingSlash((_this$options$url = this.options.url) !== null && _this$options$url !== void 0 ? _this$options$url : this.defaultUrl) + '/' + this.removeStartingSlash(uri);
3119
+ }
3120
+ }, {
3121
+ key: "removeStartingSlash",
3122
+ value: function removeStartingSlash(text) {
3123
+ return text.replace(/^\/+/, '');
3124
+ }
3125
+ }, {
3126
+ key: "removeEndingSlash",
3127
+ value: function removeEndingSlash(text) {
3128
+ return text.replace(/\/+$/, '');
3129
+ }
3130
+ }]);
3131
+ return AbstractRestClient;
3132
+ }();
3133
+ ;// CONCATENATED MODULE: ./src/AuthClient.ts
3134
+ function AuthClient_typeof(obj) { "@babel/helpers - typeof"; return AuthClient_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, AuthClient_typeof(obj); }
3135
+ function AuthClient_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ AuthClient_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == AuthClient_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
3136
+ function AuthClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
3137
+ function AuthClient_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { AuthClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { AuthClient_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
3138
+ function AuthClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3139
+ function AuthClient_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, AuthClient_toPropertyKey(descriptor.key), descriptor); } }
3140
+ function AuthClient_createClass(Constructor, protoProps, staticProps) { if (protoProps) AuthClient_defineProperties(Constructor.prototype, protoProps); if (staticProps) AuthClient_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3141
+ function AuthClient_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) AuthClient_setPrototypeOf(subClass, superClass); }
3142
+ function AuthClient_setPrototypeOf(o, p) { AuthClient_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return AuthClient_setPrototypeOf(o, p); }
3143
+ function AuthClient_createSuper(Derived) { var hasNativeReflectConstruct = AuthClient_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = AuthClient_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = AuthClient_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return AuthClient_possibleConstructorReturn(this, result); }; }
3144
+ function AuthClient_possibleConstructorReturn(self, call) { if (call && (AuthClient_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return AuthClient_assertThisInitialized(self); }
3145
+ function AuthClient_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
3146
+ function AuthClient_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
3147
+ function AuthClient_getPrototypeOf(o) { AuthClient_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return AuthClient_getPrototypeOf(o); }
3148
+ function AuthClient_defineProperty(obj, key, value) { key = AuthClient_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3149
+ function AuthClient_toPropertyKey(arg) { var key = AuthClient_toPrimitive(arg, "string"); return AuthClient_typeof(key) === "symbol" ? key : String(key); }
3150
+ function AuthClient_toPrimitive(input, hint) { if (AuthClient_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (AuthClient_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
3151
+
3152
+ var AuthClient = /*#__PURE__*/function (_AbstractRestClient) {
3153
+ AuthClient_inherits(AuthClient, _AbstractRestClient);
3154
+ var _super = AuthClient_createSuper(AuthClient);
3155
+ function AuthClient() {
3156
+ var _this;
3157
+ AuthClient_classCallCheck(this, AuthClient);
3158
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3159
+ args[_key] = arguments[_key];
3160
+ }
3161
+ _this = _super.call.apply(_super, [this].concat(args));
3162
+ AuthClient_defineProperty(AuthClient_assertThisInitialized(_this), "defaultUrl", 'https://polfan.pl/webservice/api');
3163
+ return _this;
3164
+ }
3165
+ AuthClient_createClass(AuthClient, [{
3166
+ key: "deleteToken",
3167
+ value: function () {
3168
+ var _deleteToken = AuthClient_asyncToGenerator( /*#__PURE__*/AuthClient_regeneratorRuntime().mark(function _callee(token) {
3169
+ var response;
3170
+ return AuthClient_regeneratorRuntime().wrap(function _callee$(_context) {
3171
+ while (1) {
3172
+ switch (_context.prev = _context.next) {
3173
+ case 0:
3174
+ _context.next = 2;
3175
+ return this.send('DELETE', "auth/tokens/".concat(token));
3176
+ case 2:
3177
+ response = _context.sent;
3178
+ if (response.ok) {
3179
+ _context.next = 5;
3180
+ break;
3181
+ }
3182
+ throw new Error("Cannot delete access token: ".concat(response.data.errors[0]));
3183
+ case 5:
3184
+ case "end":
3185
+ return _context.stop();
3186
+ }
3187
+ }
3188
+ }, _callee, this);
3189
+ }));
3190
+ function deleteToken(_x) {
3191
+ return _deleteToken.apply(this, arguments);
3192
+ }
3193
+ return deleteToken;
3194
+ }()
3195
+ }, {
3196
+ key: "getMe",
3197
+ value: function () {
3198
+ var _getMe = AuthClient_asyncToGenerator( /*#__PURE__*/AuthClient_regeneratorRuntime().mark(function _callee2() {
3199
+ var response;
3200
+ return AuthClient_regeneratorRuntime().wrap(function _callee2$(_context2) {
3201
+ while (1) {
3202
+ switch (_context2.prev = _context2.next) {
3203
+ case 0:
3204
+ _context2.next = 2;
3205
+ return this.send('GET', 'auth/me');
3206
+ case 2:
3207
+ response = _context2.sent;
3208
+ if (!response.ok) {
3209
+ _context2.next = 6;
3210
+ break;
3211
+ }
3212
+ response.data.id = response.data.id.toString();
3213
+ return _context2.abrupt("return", response.data);
3214
+ case 6:
3215
+ throw new Error("Cannot get current user account: ".concat(response.data.errors[0]));
3216
+ case 7:
3217
+ case "end":
3218
+ return _context2.stop();
3219
+ }
3220
+ }
3221
+ }, _callee2, this);
3222
+ }));
3223
+ function getMe() {
3224
+ return _getMe.apply(this, arguments);
3225
+ }
3226
+ return getMe;
3227
+ }()
3228
+ }], [{
3229
+ key: "createToken",
3230
+ value: function () {
3231
+ var _createToken = AuthClient_asyncToGenerator( /*#__PURE__*/AuthClient_regeneratorRuntime().mark(function _callee3(login, password) {
3232
+ var clientName,
3233
+ response,
3234
+ _args3 = arguments;
3235
+ return AuthClient_regeneratorRuntime().wrap(function _callee3$(_context3) {
3236
+ while (1) {
3237
+ switch (_context3.prev = _context3.next) {
3238
+ case 0:
3239
+ clientName = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : 'pserv-js-client';
3240
+ _context3.next = 3;
3241
+ return new AuthClient({
3242
+ token: null
3243
+ }).send('POST', 'auth/tokens', {
3244
+ login: login,
3245
+ password: password,
3246
+ client_name: clientName
3247
+ });
3248
+ case 3:
3249
+ response = _context3.sent;
3250
+ if (!response.ok) {
3251
+ _context3.next = 6;
3252
+ break;
3253
+ }
3254
+ return _context3.abrupt("return", response.data);
3255
+ case 6:
3256
+ throw new Error("Cannot create user token: ".concat(response.data.errors[0]));
3257
+ case 7:
3258
+ case "end":
3259
+ return _context3.stop();
3260
+ }
3261
+ }
3262
+ }, _callee3);
3263
+ }));
3264
+ function createToken(_x2, _x3) {
3265
+ return _createToken.apply(this, arguments);
3266
+ }
3267
+ return createToken;
3268
+ }()
3269
+ }]);
3270
+ return AuthClient;
3271
+ }(AbstractRestClient);
3272
+ ;// CONCATENATED MODULE: ./src/index.ts
3273
+
3274
+
3275
+
3276
+
3277
+
3278
+
3279
+ /******/ return __webpack_exports__;
3280
+ /******/ })()
3281
+ ;
3282
+ });
2
3283
  //# sourceMappingURL=index.js.map