@techsee/techsee-nway-media-service-client 1.0.0

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 (165) hide show
  1. package/README.md +1 -0
  2. package/lib/assets/img/avatar.png +0 -0
  3. package/lib/assets/img/camera-button.png +0 -0
  4. package/lib/assets/img/exclamation-mark.png +0 -0
  5. package/lib/assets/img/media-rejected/chrome1.png +0 -0
  6. package/lib/assets/img/media-rejected/chrome2.png +0 -0
  7. package/lib/assets/img/media-rejected/chrome3.png +0 -0
  8. package/lib/assets/img/media-rejected/chrome4.png +0 -0
  9. package/lib/assets/img/media-rejected/close_button.png +0 -0
  10. package/lib/assets/img/media-rejected/ios1.png +0 -0
  11. package/lib/assets/img/media-rejected/ios2.png +0 -0
  12. package/lib/components/Avatar/Avatar.scss +45 -0
  13. package/lib/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.scss +31 -0
  14. package/lib/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.scss +6 -0
  15. package/lib/components/LoaderSpinner/LoaderSpinner.scss +69 -0
  16. package/lib/components/MagicMarker/MagicMarker.scss +18 -0
  17. package/lib/components/MediaRejectedModal/MediaRejectedModal.scss +75 -0
  18. package/lib/components/Multiparty.scss +8 -0
  19. package/lib/components/Video/Video.scss +10 -0
  20. package/lib/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.scss +49 -0
  21. package/lib/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.scss +128 -0
  22. package/lib/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.scss +34 -0
  23. package/lib/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.scss +15 -0
  24. package/lib/components/VideoPlaceholders/Tooltip.scss +65 -0
  25. package/lib/src/components/Avatar/Avatar.d.ts +8 -0
  26. package/lib/src/components/Avatar/Avatar.d.ts.map +1 -0
  27. package/lib/src/components/Avatar/Avatar.js +26 -0
  28. package/lib/src/components/Avatar/Avatar.js.map +1 -0
  29. package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.d.ts +7 -0
  30. package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.d.ts.map +1 -0
  31. package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.js +11 -0
  32. package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.js.map +1 -0
  33. package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.d.ts +21 -0
  34. package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.d.ts.map +1 -0
  35. package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.js +36 -0
  36. package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.js.map +1 -0
  37. package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.d.ts +18 -0
  38. package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.d.ts.map +1 -0
  39. package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.js +35 -0
  40. package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.js.map +1 -0
  41. package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.d.ts +10 -0
  42. package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.d.ts.map +1 -0
  43. package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.js +22 -0
  44. package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.js.map +1 -0
  45. package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.d.ts +9 -0
  46. package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.d.ts.map +1 -0
  47. package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.js +15 -0
  48. package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.js.map +1 -0
  49. package/lib/src/components/ButtonPanels/index.d.ts +6 -0
  50. package/lib/src/components/ButtonPanels/index.d.ts.map +1 -0
  51. package/lib/src/components/ButtonPanels/index.js +14 -0
  52. package/lib/src/components/ButtonPanels/index.js.map +1 -0
  53. package/lib/src/components/LoaderSpinner/LoaderSpinner.d.ts +8 -0
  54. package/lib/src/components/LoaderSpinner/LoaderSpinner.d.ts.map +1 -0
  55. package/lib/src/components/LoaderSpinner/LoaderSpinner.js +22 -0
  56. package/lib/src/components/LoaderSpinner/LoaderSpinner.js.map +1 -0
  57. package/lib/src/components/MagicMarker/MagicMarkerComponent.d.ts +36 -0
  58. package/lib/src/components/MagicMarker/MagicMarkerComponent.d.ts.map +1 -0
  59. package/lib/src/components/MagicMarker/MagicMarkerComponent.js +112 -0
  60. package/lib/src/components/MagicMarker/MagicMarkerComponent.js.map +1 -0
  61. package/lib/src/components/MagicMarker/index.d.ts +2 -0
  62. package/lib/src/components/MagicMarker/index.d.ts.map +1 -0
  63. package/lib/src/components/MagicMarker/index.js +6 -0
  64. package/lib/src/components/MagicMarker/index.js.map +1 -0
  65. package/lib/src/components/MediaRejectedModal/MediaRejectedModal.d.ts +24 -0
  66. package/lib/src/components/MediaRejectedModal/MediaRejectedModal.d.ts.map +1 -0
  67. package/lib/src/components/MediaRejectedModal/MediaRejectedModal.js +45 -0
  68. package/lib/src/components/MediaRejectedModal/MediaRejectedModal.js.map +1 -0
  69. package/lib/src/components/Multiparty.d.ts +23 -0
  70. package/lib/src/components/Multiparty.d.ts.map +1 -0
  71. package/lib/src/components/Multiparty.js +163 -0
  72. package/lib/src/components/Multiparty.js.map +1 -0
  73. package/lib/src/components/Multiparty.types.d.ts +11 -0
  74. package/lib/src/components/Multiparty.types.d.ts.map +1 -0
  75. package/lib/src/components/Multiparty.types.js +9 -0
  76. package/lib/src/components/Multiparty.types.js.map +1 -0
  77. package/lib/src/components/Video/Video.d.ts +22 -0
  78. package/lib/src/components/Video/Video.d.ts.map +1 -0
  79. package/lib/src/components/Video/Video.js +23 -0
  80. package/lib/src/components/Video/Video.js.map +1 -0
  81. package/lib/src/components/Video/VideoPlaceholder.d.ts +23 -0
  82. package/lib/src/components/Video/VideoPlaceholder.d.ts.map +1 -0
  83. package/lib/src/components/Video/VideoPlaceholder.js +30 -0
  84. package/lib/src/components/Video/VideoPlaceholder.js.map +1 -0
  85. package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.d.ts +23 -0
  86. package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.d.ts.map +1 -0
  87. package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.js +35 -0
  88. package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.js.map +1 -0
  89. package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.d.ts +34 -0
  90. package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.d.ts.map +1 -0
  91. package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.js +65 -0
  92. package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.js.map +1 -0
  93. package/lib/src/components/VideoLayouts/VideoLayoutManager.d.ts +29 -0
  94. package/lib/src/components/VideoLayouts/VideoLayoutManager.d.ts.map +1 -0
  95. package/lib/src/components/VideoLayouts/VideoLayoutManager.js +23 -0
  96. package/lib/src/components/VideoLayouts/VideoLayoutManager.js.map +1 -0
  97. package/lib/src/components/VideoLayouts/index.d.ts +2 -0
  98. package/lib/src/components/VideoLayouts/index.d.ts.map +1 -0
  99. package/lib/src/components/VideoLayouts/index.js +6 -0
  100. package/lib/src/components/VideoLayouts/index.js.map +1 -0
  101. package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.d.ts +12 -0
  102. package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.d.ts.map +1 -0
  103. package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.js +36 -0
  104. package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.js.map +1 -0
  105. package/lib/src/components/VideoPlaceholders/CameraOffButton.d.ts +4 -0
  106. package/lib/src/components/VideoPlaceholders/CameraOffButton.d.ts.map +1 -0
  107. package/lib/src/components/VideoPlaceholders/CameraOffButton.js +9 -0
  108. package/lib/src/components/VideoPlaceholders/CameraOffButton.js.map +1 -0
  109. package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.d.ts +12 -0
  110. package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.d.ts.map +1 -0
  111. package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.js +40 -0
  112. package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.js.map +1 -0
  113. package/lib/src/index.d.ts +7 -0
  114. package/lib/src/index.d.ts.map +1 -0
  115. package/lib/src/index.js +30 -0
  116. package/lib/src/index.js.map +1 -0
  117. package/lib/src/services/ConnectionManager.d.ts +27 -0
  118. package/lib/src/services/ConnectionManager.d.ts.map +1 -0
  119. package/lib/src/services/ConnectionManager.js +123 -0
  120. package/lib/src/services/ConnectionManager.js.map +1 -0
  121. package/lib/src/services/MediaStateService.d.ts +25 -0
  122. package/lib/src/services/MediaStateService.d.ts.map +1 -0
  123. package/lib/src/services/MediaStateService.js +84 -0
  124. package/lib/src/services/MediaStateService.js.map +1 -0
  125. package/lib/src/services/MultipartyController.d.ts +29 -0
  126. package/lib/src/services/MultipartyController.d.ts.map +1 -0
  127. package/lib/src/services/MultipartyController.js +300 -0
  128. package/lib/src/services/MultipartyController.js.map +1 -0
  129. package/lib/src/services/MultipartyEventTypes.d.ts +92 -0
  130. package/lib/src/services/MultipartyEventTypes.d.ts.map +1 -0
  131. package/lib/src/services/MultipartyEventTypes.js +19 -0
  132. package/lib/src/services/MultipartyEventTypes.js.map +1 -0
  133. package/lib/src/services/trafficLogManager.d.ts +21 -0
  134. package/lib/src/services/trafficLogManager.d.ts.map +1 -0
  135. package/lib/src/services/trafficLogManager.js +130 -0
  136. package/lib/src/services/trafficLogManager.js.map +1 -0
  137. package/lib/src/services/types.d.ts +39 -0
  138. package/lib/src/services/types.d.ts.map +1 -0
  139. package/lib/src/services/types.js +47 -0
  140. package/lib/src/services/types.js.map +1 -0
  141. package/lib/src/utils/ClientConstants.d.ts +3 -0
  142. package/lib/src/utils/ClientConstants.d.ts.map +1 -0
  143. package/lib/src/utils/ClientConstants.js +6 -0
  144. package/lib/src/utils/ClientConstants.js.map +1 -0
  145. package/lib/src/utils/MergingStore.d.ts +9 -0
  146. package/lib/src/utils/MergingStore.d.ts.map +1 -0
  147. package/lib/src/utils/MergingStore.js +85 -0
  148. package/lib/src/utils/MergingStore.js.map +1 -0
  149. package/lib/src/utils/detectOsType.d.ts +8 -0
  150. package/lib/src/utils/detectOsType.d.ts.map +1 -0
  151. package/lib/src/utils/detectOsType.js +23 -0
  152. package/lib/src/utils/detectOsType.js.map +1 -0
  153. package/lib/src/utils/index.d.ts +5 -0
  154. package/lib/src/utils/index.d.ts.map +1 -0
  155. package/lib/src/utils/index.js +14 -0
  156. package/lib/src/utils/index.js.map +1 -0
  157. package/lib/src/utils/useEvent.d.ts +8 -0
  158. package/lib/src/utils/useEvent.d.ts.map +1 -0
  159. package/lib/src/utils/useEvent.js +24 -0
  160. package/lib/src/utils/useEvent.js.map +1 -0
  161. package/lib/test/services/ConnectionManager.unit.d.ts +2 -0
  162. package/lib/test/services/ConnectionManager.unit.d.ts.map +1 -0
  163. package/lib/test/services/ConnectionManager.unit.js +207 -0
  164. package/lib/test/services/ConnectionManager.unit.js.map +1 -0
  165. package/package.json +108 -0
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPinnedUserType = exports.toSessionClientRole = exports.AudioState = exports.ConnectionState = exports.PinnedUserType = void 0;
4
+ var MediaConstants_1 = require("@techsee/techsee-nway-media-service/lib/MediaConstants");
5
+ var PinnedUserType;
6
+ (function (PinnedUserType) {
7
+ PinnedUserType["AGENT"] = "agent";
8
+ PinnedUserType["USER"] = "user";
9
+ PinnedUserType["NONE"] = "none";
10
+ })(PinnedUserType = exports.PinnedUserType || (exports.PinnedUserType = {}));
11
+ var ConnectionState;
12
+ (function (ConnectionState) {
13
+ ConnectionState["WaitingForConnection"] = "WaitingForConnection";
14
+ ConnectionState["Connecting"] = "Connecting";
15
+ ConnectionState["ConnectedPublishingVideo"] = "ConnectedPublishingVideo";
16
+ ConnectionState["ConnectedNoVideo"] = "ConnectedNoVideo";
17
+ ConnectionState["Disconnected"] = "Disconnected";
18
+ })(ConnectionState = exports.ConnectionState || (exports.ConnectionState = {}));
19
+ var AudioState;
20
+ (function (AudioState) {
21
+ AudioState["DISABLED"] = "disabled";
22
+ AudioState["MUTED"] = "muted";
23
+ AudioState["ENABLED"] = "enabled";
24
+ })(AudioState = exports.AudioState || (exports.AudioState = {}));
25
+ var toSessionClientRole = function (userType) {
26
+ switch (userType) {
27
+ case PinnedUserType.AGENT:
28
+ return MediaConstants_1.SessionClientRole.AGENT;
29
+ case PinnedUserType.USER:
30
+ return MediaConstants_1.SessionClientRole.USER;
31
+ default:
32
+ return undefined;
33
+ }
34
+ };
35
+ exports.toSessionClientRole = toSessionClientRole;
36
+ var toPinnedUserType = function (userRole) {
37
+ switch (userRole) {
38
+ case MediaConstants_1.SessionClientRole.AGENT:
39
+ return PinnedUserType.AGENT;
40
+ case MediaConstants_1.SessionClientRole.USER:
41
+ return PinnedUserType.USER;
42
+ default:
43
+ return PinnedUserType.NONE;
44
+ }
45
+ };
46
+ exports.toPinnedUserType = toPinnedUserType;
47
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/types.ts"],"names":[],"mappings":";;;AAAA,yFAIgE;AAGhE,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,+BAAa,CAAA;AACjB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AAID,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,gEAA6C,CAAA;IAC7C,4CAAyB,CAAA;IACzB,wEAAqD,CAAA;IACrD,wDAAqC,CAAA;IACrC,gDAA6B,CAAA;AACjC,CAAC,EANW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAM1B;AAWD,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,mCAAqB,CAAA;IACrB,6BAAe,CAAA;IACf,iCAAmB,CAAA;AACvB,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB;AAWM,IAAM,mBAAmB,GAAG,UAAC,QAAyB;IACzD,QAAQ,QAAQ,EAAE;QACd,KAAK,cAAc,CAAC,KAAK;YACrB,OAAO,kCAAiB,CAAC,KAAK,CAAC;QACnC,KAAK,cAAc,CAAC,IAAI;YACpB,OAAO,kCAAiB,CAAC,IAAI,CAAC;QAClC;YACI,OAAO,SAAS,CAAC;KACxB;AACL,CAAC,CAAC;AATW,QAAA,mBAAmB,uBAS9B;AAEK,IAAM,gBAAgB,GAAG,UAAC,QAA4B;IACzD,QAAQ,QAAQ,EAAE;QACd,KAAK,kCAAiB,CAAC,KAAK;YACxB,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,kCAAiB,CAAC,IAAI;YACvB,OAAO,cAAc,CAAC,IAAI,CAAC;QAC/B;YACI,OAAO,cAAc,CAAC,IAAI,CAAC;KAClC;AACL,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B"}
@@ -0,0 +1,3 @@
1
+ export declare const remoteVideoDomIdPrefix = "remote-video";
2
+ export declare const ownVideoDomId = "own-video";
3
+ //# sourceMappingURL=ClientConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientConstants.d.ts","sourceRoot":"","sources":["../../../src/utils/ClientConstants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AACrD,eAAO,MAAM,aAAa,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ownVideoDomId = exports.remoteVideoDomIdPrefix = void 0;
4
+ exports.remoteVideoDomIdPrefix = 'remote-video';
5
+ exports.ownVideoDomId = 'own-video';
6
+ //# sourceMappingURL=ClientConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientConstants.js","sourceRoot":"","sources":["../../../src/utils/ClientConstants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,cAAc,CAAC;AACxC,QAAA,aAAa,GAAG,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare class MergingStore<StoredType> {
2
+ private array;
3
+ add: (...data: StoredType[]) => Readonly<StoredType>[];
4
+ remove: <T extends keyof StoredType>(findBy: T, equalTo: StoredType[T]) => Readonly<StoredType>[];
5
+ update: <T extends keyof StoredType>(findBy: T, equalTo: StoredType[T], data: Partial<StoredType>) => Readonly<StoredType>[];
6
+ find: <T extends keyof StoredType>(findBy: T, equalTo: StoredType[T]) => Readonly<StoredType> | null;
7
+ get: () => Readonly<StoredType>[];
8
+ }
9
+ //# sourceMappingURL=MergingStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MergingStore.d.ts","sourceRoot":"","sources":["../../../src/utils/MergingStore.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY,CAAC,UAAU;IAChC,OAAO,CAAC,KAAK,CAAoB;IAK1B,GAAG,YAAa,UAAU,EAAE,KAAG,SAAS,UAAU,CAAC,EAAE,CAI1D;IAKK,MAAM,qEAAoE,SAAS,UAAU,CAAC,EAAE,CAMrG;IAKK,MAAM,wEAGH,QAAQ,UAAU,CAAC,KAC1B,SAAS,UAAU,CAAC,EAAE,CAMvB;IAQK,IAAI,qEAAoE,SAAS,UAAU,CAAC,GAAG,IAAI,CASxG;IAKK,GAAG,QAAO,SAAS,UAAU,CAAC,EAAE,CAAe;CACzD"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.MergingStore = void 0;
24
+ /*
25
+ * Array wrapper that enables:
26
+ * - typesafe search for objects using any property
27
+ * - typesafe, bulk, partial updates to objects matching given (typesafe) predicate
28
+ * - bulk removal of objects matching given (typesafe) predicate
29
+ */
30
+ var MergingStore = /** @class */ (function () {
31
+ function MergingStore() {
32
+ var _this = this;
33
+ this.array = [];
34
+ /*
35
+ * Adds elements to the array. No checking for duplicates
36
+ */
37
+ this.add = function () {
38
+ var data = [];
39
+ for (var _i = 0; _i < arguments.length; _i++) {
40
+ data[_i] = arguments[_i];
41
+ }
42
+ _this.array = __spreadArray(__spreadArray([], _this.array, true), data, true);
43
+ return data;
44
+ };
45
+ /*
46
+ * Removes elements matching the predicate
47
+ */
48
+ this.remove = function (findBy, equalTo) {
49
+ var removedItems = _this.array.filter(function (item) { return item[findBy] === equalTo; });
50
+ _this.array = _this.array.filter(function (item) { return item[findBy] !== equalTo; });
51
+ return removedItems;
52
+ };
53
+ /*
54
+ * Updates elements matching the predicate
55
+ */
56
+ this.update = function (findBy, equalTo, data) {
57
+ var updatedItems = _this.array.filter(function (item) { return item[findBy] === equalTo; }).map(function (item) { return (__assign(__assign({}, item), data)); });
58
+ _this.array = __spreadArray(__spreadArray([], _this.array.filter(function (entry) { return entry[findBy] !== equalTo; }), true), updatedItems, true);
59
+ return updatedItems;
60
+ };
61
+ /*
62
+ * Return elements matching the predicate
63
+ *
64
+ * Native 'find' is not supported on IE so we need to fallback to old-school
65
+ * loop based implementation
66
+ */
67
+ this.find = function (findBy, equalTo) {
68
+ // eslint-disable-next-line no-restricted-syntax
69
+ for (var _i = 0, _a = _this.array; _i < _a.length; _i++) {
70
+ var item = _a[_i];
71
+ if (item[findBy] === equalTo) {
72
+ return item || null;
73
+ }
74
+ }
75
+ return null;
76
+ };
77
+ /*
78
+ * Returns all elements
79
+ */
80
+ this.get = function () { return _this.array; };
81
+ }
82
+ return MergingStore;
83
+ }());
84
+ exports.MergingStore = MergingStore;
85
+ //# sourceMappingURL=MergingStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MergingStore.js","sourceRoot":"","sources":["../../../src/utils/MergingStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH;IAAA;QAAA,iBA2DC;QA1DW,UAAK,GAAiB,EAAE,CAAC;QAEjC;;WAEG;QACI,QAAG,GAAG;YAAC,cAAqB;iBAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;gBAArB,yBAAqB;;YAC/B,KAAI,CAAC,KAAK,mCAAO,KAAI,CAAC,KAAK,SAAK,IAAI,OAAC,CAAC;YAEtC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF;;WAEG;QACI,WAAM,GAAG,UAA6B,MAAS,EAAE,OAAsB;YAC1E,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAxB,CAAwB,CAAC,CAAC;YAE3E,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAxB,CAAwB,CAAC,CAAC;YAEnE,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF;;WAEG;QACI,WAAM,GAAG,UACZ,MAAS,EACT,OAAsB,EACtB,IAAyB;YAEzB,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAxB,CAAwB,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,uBAAK,IAAI,GAAK,IAAI,EAAE,EAApB,CAAoB,CAAC,CAAC;YAE/G,KAAI,CAAC,KAAK,mCAAO,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAzB,CAAyB,CAAC,SAAK,YAAY,OAAC,CAAC;YAE3F,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF;;;;;WAKG;QACI,SAAI,GAAG,UAA6B,MAAS,EAAE,OAAsB;YACxE,gDAAgD;YAChD,KAAmB,UAAU,EAAV,KAAA,KAAI,CAAC,KAAK,EAAV,cAAU,EAAV,IAAU,EAAE;gBAA1B,IAAM,IAAI,SAAA;gBACX,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;oBAC1B,OAAO,IAAI,IAAI,IAAI,CAAC;iBACvB;aACJ;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF;;WAEG;QACI,QAAG,GAAG,cAA8B,OAAA,KAAI,CAAC,KAAK,EAAV,CAAU,CAAC;IAC1D,CAAC;IAAD,mBAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DY,oCAAY"}
@@ -0,0 +1,8 @@
1
+ export declare enum OSType {
2
+ OTHER = "other",
3
+ IOS = "ios",
4
+ ANDROID = "android"
5
+ }
6
+ /** @TODO: Convert into stateful service */
7
+ export declare const detectOSType: () => OSType;
8
+ //# sourceMappingURL=detectOsType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectOsType.d.ts","sourceRoot":"","sources":["../../../src/utils/detectOsType.ts"],"names":[],"mappings":"AAEA,oBAAY,MAAM;IACd,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,OAAO,YAAY;CACtB;AAED,2CAA2C;AAC3C,eAAO,MAAM,YAAY,QAAO,MAY/B,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectOSType = exports.OSType = void 0;
4
+ var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
5
+ var OSType;
6
+ (function (OSType) {
7
+ OSType["OTHER"] = "other";
8
+ OSType["IOS"] = "ios";
9
+ OSType["ANDROID"] = "android";
10
+ })(OSType = exports.OSType || (exports.OSType = {}));
11
+ /** @TODO: Convert into stateful service */
12
+ var detectOSType = function () {
13
+ var environmentService = new ts_environment_detect_1.TsEnvironmentDetect();
14
+ if (environmentService.isAndroid()) {
15
+ return OSType.ANDROID;
16
+ }
17
+ if (environmentService.isIOS()) {
18
+ return OSType.IOS;
19
+ }
20
+ return OSType.OTHER;
21
+ };
22
+ exports.detectOSType = detectOSType;
23
+ //# sourceMappingURL=detectOsType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectOsType.js","sourceRoot":"","sources":["../../../src/utils/detectOsType.ts"],"names":[],"mappings":";;;AAAA,mGAA8F;AAE9F,IAAY,MAIX;AAJD,WAAY,MAAM;IACd,yBAAe,CAAA;IACf,qBAAW,CAAA;IACX,6BAAmB,CAAA;AACvB,CAAC,EAJW,MAAM,GAAN,cAAM,KAAN,cAAM,QAIjB;AAED,2CAA2C;AACpC,IAAM,YAAY,GAAG;IACxB,IAAM,kBAAkB,GAAG,IAAI,2CAAmB,EAAE,CAAC;IAErD,IAAI,kBAAkB,CAAC,SAAS,EAAE,EAAE;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC;KACzB;IAED,IAAI,kBAAkB,CAAC,KAAK,EAAE,EAAE;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC;KACrB;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB"}
@@ -0,0 +1,5 @@
1
+ export { useEvent } from './useEvent';
2
+ export { MergingStore } from './MergingStore';
3
+ export { detectOSType, OSType } from './detectOsType';
4
+ export { remoteVideoDomIdPrefix, ownVideoDomId } from './ClientConstants';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,sBAAsB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ownVideoDomId = exports.remoteVideoDomIdPrefix = exports.OSType = exports.detectOSType = exports.MergingStore = exports.useEvent = void 0;
4
+ var useEvent_1 = require("./useEvent");
5
+ Object.defineProperty(exports, "useEvent", { enumerable: true, get: function () { return useEvent_1.useEvent; } });
6
+ var MergingStore_1 = require("./MergingStore");
7
+ Object.defineProperty(exports, "MergingStore", { enumerable: true, get: function () { return MergingStore_1.MergingStore; } });
8
+ var detectOsType_1 = require("./detectOsType");
9
+ Object.defineProperty(exports, "detectOSType", { enumerable: true, get: function () { return detectOsType_1.detectOSType; } });
10
+ Object.defineProperty(exports, "OSType", { enumerable: true, get: function () { return detectOsType_1.OSType; } });
11
+ var ClientConstants_1 = require("./ClientConstants");
12
+ Object.defineProperty(exports, "remoteVideoDomIdPrefix", { enumerable: true, get: function () { return ClientConstants_1.remoteVideoDomIdPrefix; } });
13
+ Object.defineProperty(exports, "ownVideoDomId", { enumerable: true, get: function () { return ClientConstants_1.ownVideoDomId; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,+CAAoD;AAA5C,4GAAA,YAAY,OAAA;AAAE,sGAAA,MAAM,OAAA;AAC5B,qDAAwE;AAAhE,yHAAA,sBAAsB,OAAA;AAAE,gHAAA,aAAa,OAAA"}
@@ -0,0 +1,8 @@
1
+ import { DependencyList } from 'react';
2
+ import { TypedEventCallback, TypedEventEmitter } from '@techsee/techsee-common/lib/helpers/TypedEventEmitter';
3
+ type TypedEventParamMap = {
4
+ [key: string]: any;
5
+ };
6
+ export declare const useEvent: <EventMap extends TypedEventParamMap, EventName extends keyof EventMap>(emitter: TypedEventEmitter<EventMap>, event: EventName, callback: TypedEventCallback<EventMap, EventName>, deps: DependencyList) => void;
7
+ export {};
8
+ //# sourceMappingURL=useEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEvent.d.ts","sourceRoot":"","sources":["../../../src/utils/useEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAY,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,uDAAuD,CAAC;AAG5G,KAAK,kBAAkB,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,QAAQ,8MAKlB,IASF,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.useEvent = void 0;
13
+ var react_1 = require("react");
14
+ var useEvent = function (emitter, event, callback, deps) {
15
+ (0, react_1.useEffect)(function () {
16
+ emitter.on(event, callback);
17
+ return function () {
18
+ emitter.off(event, callback);
19
+ };
20
+ // eslint-disable-next-line react-hooks/exhaustive-deps
21
+ }, __spreadArray([emitter, event, callback], deps, true));
22
+ };
23
+ exports.useEvent = useEvent;
24
+ //# sourceMappingURL=useEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEvent.js","sourceRoot":"","sources":["../../../src/utils/useEvent.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAgD;AAQzC,IAAM,QAAQ,GAAG,UACpB,OAAoC,EACpC,KAAgB,EAChB,QAAiD,EACjD,IAAoB;IAEpB,IAAA,iBAAS,EAAC;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE5B,OAAO;YACH,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,uDAAuD;IAC3D,CAAC,iBAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAK,IAAI,QAAE,CAAC;AAC5C,CAAC,CAAC;AAdW,QAAA,QAAQ,YAcnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ConnectionManager.unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionManager.unit.d.ts","sourceRoot":"","sources":["../../../test/services/ConnectionManager.unit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
51
+ var MediaConstants_1 = require("@techsee/techsee-nway-media-service/lib/MediaConstants");
52
+ var ConnectionManager_1 = require("../../src/services/ConnectionManager");
53
+ var types_1 = require("../../src/services/types");
54
+ function initWithRole(role) {
55
+ var connections = [];
56
+ for (var _i = 1; _i < arguments.length; _i++) {
57
+ connections[_i - 1] = arguments[_i];
58
+ }
59
+ var connectionManager = new ConnectionManager_1.ConnectionManager(role);
60
+ connectionManager.initWith.apply(connectionManager, connections.map(function (connection) { return (__assign(__assign({}, connection), { isOwnConnection: role === connection.userRole })); }));
61
+ return connectionManager;
62
+ }
63
+ describe('ConnectionManager', function () {
64
+ var agentConnection = {
65
+ userRole: MediaConstants_1.SessionClientRole.AGENT,
66
+ connectionState: types_1.ConnectionState.Connecting,
67
+ isOwnConnection: true,
68
+ isMediaPermissionsRejected: false,
69
+ videoStreamId: 'agent-video'
70
+ };
71
+ var userConnection = {
72
+ userRole: MediaConstants_1.SessionClientRole.USER,
73
+ connectionState: types_1.ConnectionState.Disconnected,
74
+ isOwnConnection: false,
75
+ isMediaPermissionsRejected: false,
76
+ videoStreamId: 'user-video'
77
+ };
78
+ describe('initialization', function () {
79
+ test('Can be initialized with 1 connection', function () { return __awaiter(void 0, void 0, void 0, function () {
80
+ var connectionManager, connections;
81
+ return __generator(this, function (_a) {
82
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.AGENT, agentConnection);
83
+ connections = connectionManager.get();
84
+ expect(connections.length).toEqual(1);
85
+ expect(connections[0]).toMatchObject(agentConnection);
86
+ return [2 /*return*/];
87
+ });
88
+ }); });
89
+ test('Can be initialized with 2 connections', function () { return __awaiter(void 0, void 0, void 0, function () {
90
+ var connectionManager, connections;
91
+ return __generator(this, function (_a) {
92
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.AGENT, agentConnection, userConnection);
93
+ connections = connectionManager.get();
94
+ expect(connections.length).toEqual(2);
95
+ expect(connections[0]).toMatchObject(agentConnection);
96
+ expect(connections[1]).toMatchObject(userConnection);
97
+ return [2 /*return*/];
98
+ });
99
+ }); });
100
+ });
101
+ describe('Returns correct userRole', function () {
102
+ test('when initialized as AGENT', function () { return __awaiter(void 0, void 0, void 0, function () {
103
+ var connectionManager;
104
+ return __generator(this, function (_a) {
105
+ connectionManager = new ConnectionManager_1.ConnectionManager(MediaConstants_1.SessionClientRole.AGENT);
106
+ expect(connectionManager.userRole).toEqual(MediaConstants_1.SessionClientRole.AGENT);
107
+ return [2 /*return*/];
108
+ });
109
+ }); });
110
+ test('when initialized as USER', function () { return __awaiter(void 0, void 0, void 0, function () {
111
+ var connectionManager;
112
+ return __generator(this, function (_a) {
113
+ connectionManager = new ConnectionManager_1.ConnectionManager(MediaConstants_1.SessionClientRole.USER);
114
+ expect(connectionManager.userRole).toEqual(MediaConstants_1.SessionClientRole.USER);
115
+ return [2 /*return*/];
116
+ });
117
+ }); });
118
+ });
119
+ describe('setClientMediaPermissionsRejected', function () {
120
+ test('set to true when initialized as AGENT', function () { return __awaiter(void 0, void 0, void 0, function () {
121
+ var connectionManager, agent, user;
122
+ return __generator(this, function (_a) {
123
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.AGENT, agentConnection, userConnection);
124
+ connectionManager.setPeerMediaPermissionsRejected(true);
125
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
126
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
127
+ expect(agent.isMediaPermissionsRejected).toBeFalsy();
128
+ expect(user.isMediaPermissionsRejected).toBeTruthy();
129
+ expect(user.connectionState).toBe(types_1.ConnectionState.ConnectedNoVideo);
130
+ return [2 /*return*/];
131
+ });
132
+ }); });
133
+ test('set to false when initialized as AGENT', function () { return __awaiter(void 0, void 0, void 0, function () {
134
+ var connectionManager, agent, user;
135
+ return __generator(this, function (_a) {
136
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.AGENT, agentConnection, userConnection);
137
+ connectionManager.setPeerMediaPermissionsRejected(false);
138
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
139
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
140
+ expect(agent.isMediaPermissionsRejected).toBeFalsy();
141
+ expect(user.isMediaPermissionsRejected).toBeFalsy();
142
+ expect(user.connectionState).toBe(types_1.ConnectionState.Disconnected);
143
+ return [2 /*return*/];
144
+ });
145
+ }); });
146
+ test('when initialized as USER', function () { return __awaiter(void 0, void 0, void 0, function () {
147
+ var connectionManager, agent, user;
148
+ return __generator(this, function (_a) {
149
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.USER, agentConnection, userConnection);
150
+ connectionManager.setPeerMediaPermissionsRejected(true);
151
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
152
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
153
+ expect(agent.isMediaPermissionsRejected).toBeTruthy();
154
+ expect(user.isMediaPermissionsRejected).toBeFalsy();
155
+ expect(user.connectionState).not.toBe(types_1.ConnectionState.ConnectedNoVideo);
156
+ return [2 /*return*/];
157
+ });
158
+ }); });
159
+ });
160
+ describe('setOwnMediaPermissionsRejected', function () {
161
+ test('set to true when initialized as USER', function () { return __awaiter(void 0, void 0, void 0, function () {
162
+ var connectionManager, agent, user;
163
+ return __generator(this, function (_a) {
164
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.USER, agentConnection, userConnection);
165
+ connectionManager.setOwnMediaPermissionsRejected(true);
166
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
167
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
168
+ expect(agent.isMediaPermissionsRejected).toBeFalsy();
169
+ expect(user.isMediaPermissionsRejected).toBeTruthy();
170
+ expect(user.connectionState).toBe(types_1.ConnectionState.ConnectedNoVideo);
171
+ return [2 /*return*/];
172
+ });
173
+ }); });
174
+ test('set to false when initialized as USER', function () { return __awaiter(void 0, void 0, void 0, function () {
175
+ var connectionManager, agent, user;
176
+ return __generator(this, function (_a) {
177
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.USER, agentConnection, userConnection);
178
+ connectionManager.setOwnMediaPermissionsRejected(false);
179
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
180
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
181
+ expect(agent.isMediaPermissionsRejected).toBeFalsy();
182
+ expect(user.isMediaPermissionsRejected).toBeFalsy();
183
+ expect(user.connectionState).toBe(types_1.ConnectionState.ConnectedNoVideo);
184
+ return [2 /*return*/];
185
+ });
186
+ }); });
187
+ test('when initialized as AGENT', function () { return __awaiter(void 0, void 0, void 0, function () {
188
+ var connectionManager, agent, user;
189
+ return __generator(this, function (_a) {
190
+ connectionManager = initWithRole(MediaConstants_1.SessionClientRole.AGENT, agentConnection, userConnection);
191
+ connectionManager.setOwnMediaPermissionsRejected(true);
192
+ agent = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.AGENT);
193
+ user = connectionManager.find('userRole', MediaConstants_1.SessionClientRole.USER);
194
+ expect(agent.isMediaPermissionsRejected).toBeTruthy();
195
+ expect(user.isMediaPermissionsRejected).toBeFalsy();
196
+ expect(user.connectionState).not.toBe(types_1.ConnectionState.ConnectedNoVideo);
197
+ return [2 /*return*/];
198
+ });
199
+ }); });
200
+ });
201
+ describe('connectionCreated handler', function () {
202
+ // const connectionManager = initWithRole(SessionClientRole.USER, agentConnection);
203
+ // connectionManager.connectionCreated({})
204
+ });
205
+ });
206
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
207
+ //# sourceMappingURL=ConnectionManager.unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionManager.unit.js","sourceRoot":"","sources":["../../../test/services/ConnectionManager.unit.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,108 @@
1
+ {
2
+ "name": "@techsee/techsee-nway-media-service-client",
3
+ "version": "1.0.0",
4
+ "description": "TechSee NWay media service client",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/TechSeeDev/techsee-common-packages.git",
8
+ "directory": "packages/techsee-nway-media-service-client"
9
+ },
10
+ "main": "lib/index.js",
11
+ "types": "lib/index.d.ts",
12
+ "files": [
13
+ "lib"
14
+ ],
15
+ "scripts": {
16
+ "prepublishOnly": "npm run build",
17
+ "postpublish": "npm run clean",
18
+ "build": "tsc && npm run copy",
19
+ "copy": "run-s copy:*",
20
+ "copy:styles": "copyfiles -u 1 \"./src/**/*.scss\" \"lib\"",
21
+ "copy:assets": "cp -r ./src/assets lib/",
22
+ "clean": "rimraf lib dist",
23
+ "lint": "run-s lint:*",
24
+ "lint:prettier": "prettier --check \"./**/*.{js?(x),ts?(x),json,scss,md}\"",
25
+ "lint:eslint": "eslint \"./**/*.{js?(x),ts?(x)}\"",
26
+ "lint-staged": "lint-staged",
27
+ "lint-fix": "run-s lint-fix:*",
28
+ "lint-fix:prettier": "prettier --write \"./**/*.{js?(x),ts?(x),json,scss,md}\"",
29
+ "lint-fix:eslint": "eslint --fix --color \"./**/*.{js?(x),ts?(x)}\"",
30
+ "test": "jest --config=./jest.config.js",
31
+ "tag": "git tag v$npm_package_version -f | git push -f --tags"
32
+ },
33
+ "lint-staged": {
34
+ "./**/*.{js?(x),ts?(x),json,scss,md}": "prettier --write",
35
+ "./**/*.{js?(x),ts?(x)}": "eslint --fix --color"
36
+ },
37
+ "dependencies": {
38
+ "@techsee/techsee-client-infra": "^24.0.0",
39
+ "@techsee/techsee-client-services": "^25.0.0",
40
+ "@techsee/techsee-common": "^15.36.0",
41
+ "@techsee/techsee-nway-media-service": "^1.0.0",
42
+ "@techsee/techsee-ui-common": "^16.41.0",
43
+ "moment": "2.24.0"
44
+ },
45
+ "devDependencies": {
46
+ "@opentok/client": "2.28.2",
47
+ "@types/events": "~3.0.0",
48
+ "@types/jest": "^29.5.13",
49
+ "@types/lodash": "^4.17.7",
50
+ "@types/react": "~17.0.50",
51
+ "@types/react-bootstrap": "~0.32.25",
52
+ "@types/react-dom": "~17.0.0",
53
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
54
+ "@typescript-eslint/parser": "^5.62.0",
55
+ "bootstrap": "3.3.7",
56
+ "copyfiles": "~2.4.1",
57
+ "eslint": "^8.57.1",
58
+ "eslint-config-airbnb-typescript": "^17.1.0",
59
+ "eslint-config-prettier": "^9.1.0",
60
+ "eslint-config-semistandard": "^17.0.0",
61
+ "eslint-config-standard": "^17.1.0",
62
+ "eslint-formatter-pretty": "^6.0.1",
63
+ "eslint-plugin-eslint-comments": "^3.2.0",
64
+ "eslint-plugin-import": "^2.30.0",
65
+ "eslint-plugin-jest": "^27.9.0",
66
+ "eslint-plugin-jsx-a11y": "^6.10.0",
67
+ "eslint-plugin-prettier": "^5.2.1",
68
+ "eslint-plugin-promise": "^6.6.0",
69
+ "eslint-plugin-react": "^7.36.1",
70
+ "eslint-plugin-react-hooks": "^4.6.2",
71
+ "husky": "^9.1.6",
72
+ "jest": "^29.7.0",
73
+ "jest-environment-jsdom": "^29.7.0",
74
+ "lint-staged": "^15.2.10",
75
+ "lodash": "^4.17.21",
76
+ "npm-run-all": "^4.1.5",
77
+ "prettier": "^3.3.3",
78
+ "react": "17.0.1",
79
+ "react-bootstrap": "0.32.4",
80
+ "react-dom": "17.0.1",
81
+ "rimraf": "~3.0.2",
82
+ "ts-jest": "^29.2.5",
83
+ "typescript": "^4.9.5"
84
+ },
85
+ "peerDependencies": {
86
+ "lodash": "^4.17.21",
87
+ "react": "^17.0.0",
88
+ "react-bootstrap": "^0.32.4",
89
+ "react-dom": "^17.0.0"
90
+ },
91
+ "overrides": {
92
+ "@techsee/techsee-client-services": {
93
+ "react": "^17.0.0",
94
+ "react-dom": "^17.0.0"
95
+ },
96
+ "@techsee/techsee-ui-common": {
97
+ "react": "^17.0.0",
98
+ "react-dom": "^17.0.0",
99
+ "react-overlays": "~0.9.1"
100
+ }
101
+ },
102
+ "husky": {
103
+ "hooks": {
104
+ "pre-commit": "npm run lint-staged && npm test",
105
+ "pre-push": "npm run lint && npm test"
106
+ }
107
+ }
108
+ }