@simplito/privmx-webendpoint 2.6.4 → 2.7.1

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 (177) hide show
  1. package/CONTRIBUTING.md +86 -0
  2. package/README.md +97 -7
  3. package/assets/driver-web-context.js +1 -1
  4. package/assets/e2ee-worker.js +1 -1
  5. package/assets/endpoint-wasm-module.js +3 -3
  6. package/assets/endpoint-wasm-module.wasm +0 -0
  7. package/assets/rms-processor.js +1 -0
  8. package/build-manifest.sh +6 -0
  9. package/{FinalizationHelper.js → dist/FinalizationHelper.js} +1 -1
  10. package/dist/ServerTypes.d.ts +7 -0
  11. package/{Types.d.ts → dist/Types.d.ts} +97 -10
  12. package/{Types.js → dist/Types.js} +17 -32
  13. package/{api → dist/api}/Api.d.ts +2 -0
  14. package/{api → dist/api}/Api.js +18 -1
  15. package/{api → dist/api}/ConnectionNative.js +1 -1
  16. package/{api → dist/api}/CryptoApiNative.js +1 -2
  17. package/{api → dist/api}/InboxApiNative.d.ts +21 -2
  18. package/{api → dist/api}/KvdbApiNative.d.ts +19 -2
  19. package/dist/api/NativeError.d.ts +13 -0
  20. package/dist/api/NativeError.js +20 -0
  21. package/{api → dist/api}/StoreApiNative.d.ts +19 -2
  22. package/dist/api/StreamApiNative.d.ts +72 -0
  23. package/dist/api/StreamApiNative.js +142 -0
  24. package/{api → dist/api}/ThreadApiNative.d.ts +19 -2
  25. package/dist/assets/e2ee-worker.js +1 -0
  26. package/dist/bundle/privmx-endpoint-web.js +2 -0
  27. package/dist/bundle/privmx-endpoint-web.js.LICENSE.txt +30 -0
  28. package/dist/bundle/rms-processor.js +1 -0
  29. package/{extra → dist/extra}/PrivmxClient.d.ts +9 -9
  30. package/{extra → dist/extra}/PrivmxClient.js +12 -12
  31. package/{extra → dist/extra}/PublicConnection.d.ts +2 -2
  32. package/{extra → dist/extra}/PublicConnection.js +2 -2
  33. package/{extra → dist/extra}/__tests__/connectionEventManager.test.js +1 -3
  34. package/{extra → dist/extra}/__tests__/customEventManager.test.js +1 -3
  35. package/{extra → dist/extra}/__tests__/userEventManager.test.js +2 -6
  36. package/{extra → dist/extra}/__tests__/utils.test.js +18 -18
  37. package/{extra → dist/extra}/events.js +32 -12
  38. package/{extra → dist/extra}/files.d.ts +5 -5
  39. package/{extra → dist/extra}/files.js +11 -11
  40. package/{extra → dist/extra}/generics.d.ts +1 -1
  41. package/{extra → dist/extra}/inbox.d.ts +1 -1
  42. package/{extra → dist/extra}/inbox.js +2 -2
  43. package/{extra → dist/extra}/index.d.ts +7 -7
  44. package/{extra → dist/extra}/managers.js +1 -1
  45. package/{extra → dist/extra}/utils.js +9 -9
  46. package/{index.d.ts → dist/index.d.ts} +3 -2
  47. package/{index.js → dist/index.js} +4 -1
  48. package/{service → dist/service}/Connection.js +13 -6
  49. package/{service → dist/service}/CryptoApi.js +2 -8
  50. package/{service → dist/service}/EndpointFactory.d.ts +11 -0
  51. package/{service → dist/service}/EndpointFactory.js +45 -10
  52. package/{service → dist/service}/EventApi.js +9 -5
  53. package/dist/service/EventDispatcher.d.ts +15 -0
  54. package/dist/service/EventDispatcher.js +25 -0
  55. package/{service → dist/service}/EventQueue.d.ts +4 -4
  56. package/{service → dist/service}/EventQueue.js +5 -9
  57. package/{service → dist/service}/ExtKey.d.ts +10 -10
  58. package/{service → dist/service}/ExtKey.js +10 -10
  59. package/{service → dist/service}/InboxApi.js +7 -11
  60. package/{service → dist/service}/KvdbApi.js +12 -7
  61. package/{service → dist/service}/StoreApi.js +10 -15
  62. package/dist/service/StreamApi.d.ts +237 -0
  63. package/dist/service/StreamApi.js +442 -0
  64. package/{service → dist/service}/ThreadApi.js +6 -7
  65. package/{service → dist/service}/UserVerifierInterface.d.ts +2 -2
  66. package/dist/service/UserVerifierInterface.js +2 -0
  67. package/dist/service/WebRtcInterface.d.ts +58 -0
  68. package/dist/service/WebRtcInterface.js +8 -0
  69. package/{service → dist/service}/index.d.ts +3 -2
  70. package/{service → dist/service}/index.js +5 -3
  71. package/dist/webStreams/CryptoUtils.d.ts +24 -0
  72. package/dist/webStreams/CryptoUtils.js +58 -0
  73. package/dist/webStreams/KeyStore.d.ts +9 -0
  74. package/dist/webStreams/KeyStore.js +29 -0
  75. package/dist/webStreams/Logger.d.ts +7 -0
  76. package/dist/webStreams/Logger.js +25 -0
  77. package/dist/webStreams/PeerConnectionsManager.d.ts +20 -0
  78. package/dist/webStreams/PeerConnectionsManager.js +92 -0
  79. package/dist/webStreams/Queue.d.ts +19 -0
  80. package/dist/webStreams/Queue.js +70 -0
  81. package/dist/webStreams/Utils.d.ts +20 -0
  82. package/dist/webStreams/Utils.js +211 -0
  83. package/dist/webStreams/WebRtcClient.d.ts +85 -0
  84. package/dist/webStreams/WebRtcClient.js +437 -0
  85. package/dist/webStreams/WebRtcClientTypes.d.ts +64 -0
  86. package/dist/webStreams/WebRtcClientTypes.js +2 -0
  87. package/dist/webStreams/WebRtcConfig.d.ts +20 -0
  88. package/dist/webStreams/WebRtcConfig.js +53 -0
  89. package/dist/webStreams/WebRtcInterfaceImpl.d.ts +28 -0
  90. package/dist/webStreams/WebRtcInterfaceImpl.js +85 -0
  91. package/dist/webStreams/WebWorkerHelper copy.d.ts +0 -0
  92. package/dist/webStreams/WebWorkerHelper copy.js +17 -0
  93. package/dist/webStreams/WebWorkerHelper.d.ts +18 -0
  94. package/dist/webStreams/WebWorkerHelper.js +69 -0
  95. package/dist/webStreams/audio/ActiveSpeakerDetector.d.ts +38 -0
  96. package/dist/webStreams/audio/ActiveSpeakerDetector.js +64 -0
  97. package/dist/webStreams/audio/LocalAudioLevelMeter.d.ts +12 -0
  98. package/dist/webStreams/audio/LocalAudioLevelMeter.js +101 -0
  99. package/dist/webStreams/types/ApiTypes.d.ts +74 -0
  100. package/dist/webStreams/types/ApiTypes.js +2 -0
  101. package/dist/webStreams/types/BaseServerTypes.d.ts +10 -0
  102. package/dist/webStreams/types/BaseServerTypes.js +2 -0
  103. package/dist/webStreams/types/MediaServerWebSocketApiTypes.d.ts +255 -0
  104. package/dist/webStreams/types/MediaServerWebSocketApiTypes.js +2 -0
  105. package/dist/webStreams/types/SignalingReceiverTypes.d.ts +13 -0
  106. package/dist/webStreams/types/SignalingReceiverTypes.js +2 -0
  107. package/dist/webStreams/types/SignalingSenderTypes.d.ts +24 -0
  108. package/dist/webStreams/types/SignalingSenderTypes.js +2 -0
  109. package/dist/webStreams/types/StreamsApiTypes.d.ts +144 -0
  110. package/dist/webStreams/types/StreamsApiTypes.js +2 -0
  111. package/dist/webStreams/worker/WorkerEvents.d.ts +11 -0
  112. package/dist/webStreams/worker/WorkerEvents.js +2 -0
  113. package/dist/webStreams/worker/worker.d.ts +13 -0
  114. package/dist/webStreams/worker/worker.js +202 -0
  115. package/package.json +46 -15
  116. package/assets/endpoint-wasm-module.worker.js +0 -1
  117. package/assets/privmx-endpoint-web.js +0 -2
  118. package/bundle/privmx-endpoint-web.js +0 -2
  119. package/bundle/privmx-endpoint-web.js.LICENSE.txt +0 -10
  120. /package/{FinalizationHelper.d.ts → dist/FinalizationHelper.d.ts} +0 -0
  121. /package/{extra/generics.js → dist/ServerTypes.js} +0 -0
  122. /package/{api → dist/api}/ApiStatic.d.ts +0 -0
  123. /package/{api → dist/api}/ApiStatic.js +0 -0
  124. /package/{api → dist/api}/BaseNative.d.ts +0 -0
  125. /package/{api → dist/api}/BaseNative.js +0 -0
  126. /package/{api → dist/api}/ConnectionNative.d.ts +0 -0
  127. /package/{api → dist/api}/CryptoApiNative.d.ts +0 -0
  128. /package/{api → dist/api}/EventApiNative.d.ts +0 -0
  129. /package/{api → dist/api}/EventApiNative.js +0 -0
  130. /package/{api → dist/api}/EventQueueNative.d.ts +0 -0
  131. /package/{api → dist/api}/EventQueueNative.js +0 -0
  132. /package/{api → dist/api}/ExtKeyNative.d.ts +0 -0
  133. /package/{api → dist/api}/ExtKeyNative.js +0 -0
  134. /package/{api → dist/api}/IdGenerator.d.ts +0 -0
  135. /package/{api → dist/api}/IdGenerator.js +0 -0
  136. /package/{api → dist/api}/InboxApiNative.js +0 -0
  137. /package/{api → dist/api}/KvdbApiNative.js +0 -0
  138. /package/{api → dist/api}/StoreApiNative.js +0 -0
  139. /package/{api → dist/api}/ThreadApiNative.js +0 -0
  140. /package/{bundle.d.ts → dist/bundle.d.ts} +0 -0
  141. /package/{bundle.js → dist/bundle.js} +0 -0
  142. /package/{extra → dist/extra}/__mocks__/constants.d.ts +0 -0
  143. /package/{extra → dist/extra}/__mocks__/constants.js +0 -0
  144. /package/{extra → dist/extra}/__mocks__/mockContainerSubscriber.d.ts +0 -0
  145. /package/{extra → dist/extra}/__mocks__/mockContainerSubscriber.js +0 -0
  146. /package/{extra → dist/extra}/__mocks__/mockEventQueue.d.ts +0 -0
  147. /package/{extra → dist/extra}/__mocks__/mockEventQueue.js +0 -0
  148. /package/{extra → dist/extra}/__mocks__/utils.d.ts +0 -0
  149. /package/{extra → dist/extra}/__mocks__/utils.js +0 -0
  150. /package/{extra → dist/extra}/__tests__/connectionEventManager.test.d.ts +0 -0
  151. /package/{extra → dist/extra}/__tests__/customEventManager.test.d.ts +0 -0
  152. /package/{extra → dist/extra}/__tests__/eventsManager.test.d.ts +0 -0
  153. /package/{extra → dist/extra}/__tests__/eventsManager.test.js +0 -0
  154. /package/{extra → dist/extra}/__tests__/inboxEventManager.d.ts +0 -0
  155. /package/{extra → dist/extra}/__tests__/inboxEventManager.js +0 -0
  156. /package/{extra → dist/extra}/__tests__/storeEventManager.test.d.ts +0 -0
  157. /package/{extra → dist/extra}/__tests__/storeEventManager.test.js +0 -0
  158. /package/{extra → dist/extra}/__tests__/threadEventManager.test.d.ts +0 -0
  159. /package/{extra → dist/extra}/__tests__/threadEventManager.test.js +0 -0
  160. /package/{extra → dist/extra}/__tests__/userEventManager.test.d.ts +0 -0
  161. /package/{extra → dist/extra}/__tests__/utils.test.d.ts +0 -0
  162. /package/{extra → dist/extra}/events.d.ts +0 -0
  163. /package/{service/UserVerifierInterface.js → dist/extra/generics.js} +0 -0
  164. /package/{extra → dist/extra}/index.js +0 -0
  165. /package/{extra → dist/extra}/managers.d.ts +0 -0
  166. /package/{extra → dist/extra}/subscriptions.d.ts +0 -0
  167. /package/{extra → dist/extra}/subscriptions.js +0 -0
  168. /package/{extra → dist/extra}/utils.d.ts +0 -0
  169. /package/{service → dist/service}/BaseApi.d.ts +0 -0
  170. /package/{service → dist/service}/BaseApi.js +0 -0
  171. /package/{service → dist/service}/Connection.d.ts +0 -0
  172. /package/{service → dist/service}/CryptoApi.d.ts +0 -0
  173. /package/{service → dist/service}/EventApi.d.ts +0 -0
  174. /package/{service → dist/service}/InboxApi.d.ts +0 -0
  175. /package/{service → dist/service}/KvdbApi.d.ts +0 -0
  176. /package/{service → dist/service}/StoreApi.d.ts +0 -0
  177. /package/{service → dist/service}/ThreadApi.d.ts +0 -0
Binary file
@@ -0,0 +1 @@
1
+ class RMSProcessor extends AudioWorkletProcessor{constructor(){super(),this.smoothing=.3,this.prev=0}process(s){const t=s[0];if(!t||!t[0])return!0;const o=t[0];let r=0;for(let s=0;s<o.length;s++){const t=o[s];r+=t*t}const e=Math.sqrt(r/o.length),h=this.smoothing*e+(1-this.smoothing)*this.prev;this.prev=h;let c=20*Math.log10(h||1e-8);return c<-100&&(c=-100),this.port.postMessage({rmsDb:c}),!0}}registerProcessor("rms-processor",RMSProcessor);
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+
3
+ PRIVMX_ENDPOINT="v2.7.1"
4
+ PSON_CPP="v1.0.7"
5
+ GMP="6.3.0"
6
+ POCO="1.10.1"
@@ -23,7 +23,7 @@ class FinalizationHelper {
23
23
  scheduler = null;
24
24
  constructor(wasmLib) {
25
25
  this.wasmLib = wasmLib;
26
- this.finalizationRegistry = new FinalizationRegistry(onCleanup => {
26
+ this.finalizationRegistry = new FinalizationRegistry((onCleanup) => {
27
27
  const api = ApiStatic_1.ApiStatic.getInstance();
28
28
  this.finalizationQueue.push(onCleanup.onFree);
29
29
  this.scheduleCleanup();
@@ -0,0 +1,7 @@
1
+ import type * as ServerTypes from "./webStreams/types/ApiTypes";
2
+ import type * as StreamsApi from "./webStreams/types/StreamsApiTypes";
3
+ import type { AppRequest } from "./webStreams/types/BaseServerTypes";
4
+ import type * as SignalingFromServer from "./webStreams/types/SignalingSenderTypes";
5
+ import type * as SignalingApi from "./webStreams/types/SignalingReceiverTypes";
6
+ import type * as MediaServerApiTypes from "./webStreams/types/MediaServerWebSocketApiTypes";
7
+ export { ServerTypes as Types, AppRequest, StreamsApi, SignalingFromServer, SignalingApi, MediaServerApiTypes, };
@@ -9,6 +9,7 @@ See the License for the specific language governing permissions and
9
9
  limitations under the License.
10
10
  */
11
11
  import { ExtKey } from "./service/ExtKey";
12
+ import * as StreamsApiTypes from "./webStreams/types/ApiTypes";
12
13
  export type SortOrder = "desc" | "asc";
13
14
  /**
14
15
  * Holds Event details
@@ -50,14 +51,14 @@ export interface PagingQuery {
50
51
  queryAsJson?: string;
51
52
  }
52
53
  /**
53
- * Contains results of listing methods
54
- *
55
- * @type {PagingList<T>}
56
- *
57
- * @param {number} totalAvailable total items available to get
58
- * @param {T[]} readItems list of items read during single method call
59
- *
60
- */
54
+ * Contains results of listing methods
55
+ *
56
+ * @type {PagingList<T>}
57
+ *
58
+ * @param {number} totalAvailable total items available to get
59
+ * @param {T[]} readItems list of items read during single method call
60
+ *
61
+ */
61
62
  export interface PagingList<T> {
62
63
  totalAvailable: number;
63
64
  readItems: T[];
@@ -137,7 +138,7 @@ export interface ContextUserEventData {
137
138
  */
138
139
  export interface UserWithAction {
139
140
  user: UserWithPubKey;
140
- action: 'login' | 'logout';
141
+ action: "login" | "logout";
141
142
  }
142
143
  /**
143
144
  * Contains information about changed statuses of users in the Context.
@@ -561,6 +562,54 @@ export interface ItemPolicy {
561
562
  update?: PolicyEntry;
562
563
  delete?: PolicyEntry;
563
564
  }
565
+ export type StreamId = StreamsApiTypes.StreamId;
566
+ export type StreamRoomId = StreamsApiTypes.StreamRoomId;
567
+ export type StreamHandle = number & {
568
+ _streamHandle: never;
569
+ };
570
+ export interface StreamRoom {
571
+ contextId: string;
572
+ streamRoomId: string;
573
+ createDate: number;
574
+ creator: string;
575
+ lastModificationDate: number;
576
+ lastModifier: string;
577
+ users: string[];
578
+ managers: string[];
579
+ version: number;
580
+ publicMeta: Uint8Array;
581
+ privateMeta: Uint8Array;
582
+ policy: ContainerPolicy;
583
+ statusCode: number;
584
+ closed: boolean;
585
+ }
586
+ export interface StreamInfo {
587
+ id: number;
588
+ userId: string;
589
+ dummy?: boolean;
590
+ tracks: TrackInfo[];
591
+ talking?: boolean;
592
+ }
593
+ export interface TrackInfo {
594
+ type: string;
595
+ mindex: string;
596
+ mid: string;
597
+ disabled?: boolean;
598
+ codec: string;
599
+ description?: string;
600
+ moderated?: boolean;
601
+ simulcast?: boolean;
602
+ svc?: boolean;
603
+ talking?: boolean;
604
+ }
605
+ export interface StreamPublishResult {
606
+ published: boolean;
607
+ data?: {
608
+ streamRoomId: StreamRoomId;
609
+ stream: StreamInfo;
610
+ userId: string;
611
+ };
612
+ }
564
613
  /**
565
614
  * Holds error details
566
615
  *
@@ -584,7 +633,7 @@ export interface Error {
584
633
  * @param {string} mnemonic BIP-39 mnemonic
585
634
  * @param {ExtKey} extKey Ecc Key
586
635
  * @param {Uint8Array} entropy BIP-39 entropy
587
- */
636
+ */
588
637
  export interface BIP39 {
589
638
  mnemonic: string;
590
639
  entropy: Uint8Array;
@@ -621,6 +670,26 @@ export interface BridgeIdentity {
621
670
  pubKey?: string;
622
671
  instanceId?: string;
623
672
  }
673
+ export interface Key {
674
+ keyId: string;
675
+ key: Uint8Array;
676
+ type: number;
677
+ }
678
+ export interface StreamSubscription {
679
+ streamId: number;
680
+ streamTrackId?: string;
681
+ }
682
+ export interface TurnCredentials {
683
+ url: string;
684
+ username: string;
685
+ password: string;
686
+ expirationTime: number;
687
+ }
688
+ export interface RemoteStreamListener {
689
+ streamRoomId: StreamRoomId;
690
+ streamId?: StreamId;
691
+ onRemoteStreamTrack: (event: RTCTrackEvent) => void;
692
+ }
624
693
  /**
625
694
  * PKI Verification options
626
695
  *
@@ -702,6 +771,20 @@ export declare enum KvdbEventSelectorType {
702
771
  export declare enum EventsEventSelectorType {
703
772
  CONTEXT_ID = 0
704
773
  }
774
+ export declare enum StreamEventType {
775
+ STREAMROOM_CREATE = 0,
776
+ STREAMROOM_UPDATE = 1,
777
+ STREAMROOM_DELETE = 2,
778
+ STREAM_JOIN = 4,
779
+ STREAM_LEAVE = 5,
780
+ STREAM_PUBLISH = 6,
781
+ STREAM_UNPUBLISH = 7
782
+ }
783
+ export declare enum StreamEventSelectorType {
784
+ CONTEXT_ID = 0,
785
+ STREAMROOM_ID = 1,
786
+ STREAM_ID = 2
787
+ }
705
788
  export type CollectionItemChange = {
706
789
  itemId: string;
707
790
  action: string;
@@ -712,3 +795,7 @@ export type CollectionChangedEventData = {
712
795
  affectedItemsCount: number;
713
796
  items: CollectionItemChange[];
714
797
  };
798
+ export interface RecordingEncKey {
799
+ id: Uint8Array;
800
+ key: Uint8Array;
801
+ }
@@ -10,33 +10,7 @@ See the License for the specific language governing permissions and
10
10
  limitations under the License.
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.EventsEventSelectorType = exports.KvdbEventSelectorType = exports.KvdbEventType = exports.InboxEventSelectorType = exports.InboxEventType = exports.ThreadEventSelectorType = exports.ThreadEventType = exports.StoreEventSelectorType = exports.StoreEventType = exports.ConnectionEventSelectorType = exports.ConnectionEventType = void 0;
14
- ;
15
- ;
16
- ;
17
- ;
18
- ;
19
- ;
20
- ;
21
- ;
22
- ;
23
- ;
24
- ;
25
- ;
26
- ;
27
- ;
28
- ;
29
- ;
30
- ;
31
- ;
32
- ;
33
- ;
34
- ;
35
- ;
36
- ;
37
- ;
38
- ;
39
- ;
13
+ exports.StreamEventSelectorType = exports.StreamEventType = exports.EventsEventSelectorType = exports.KvdbEventSelectorType = exports.KvdbEventType = exports.InboxEventSelectorType = exports.InboxEventType = exports.ThreadEventSelectorType = exports.ThreadEventType = exports.StoreEventSelectorType = exports.StoreEventType = exports.ConnectionEventSelectorType = exports.ConnectionEventType = void 0;
40
14
  // Enums
41
15
  var ConnectionEventType;
42
16
  (function (ConnectionEventType) {
@@ -91,14 +65,12 @@ var InboxEventType;
91
65
  InboxEventType[InboxEventType["ENTRY_DELETE"] = 4] = "ENTRY_DELETE";
92
66
  InboxEventType[InboxEventType["COLLECTION_CHANGE"] = 5] = "COLLECTION_CHANGE";
93
67
  })(InboxEventType || (exports.InboxEventType = InboxEventType = {}));
94
- ;
95
68
  var InboxEventSelectorType;
96
69
  (function (InboxEventSelectorType) {
97
70
  InboxEventSelectorType[InboxEventSelectorType["CONTEXT_ID"] = 0] = "CONTEXT_ID";
98
71
  InboxEventSelectorType[InboxEventSelectorType["INBOX_ID"] = 1] = "INBOX_ID";
99
72
  InboxEventSelectorType[InboxEventSelectorType["ENTRY_ID"] = 2] = "ENTRY_ID";
100
73
  })(InboxEventSelectorType || (exports.InboxEventSelectorType = InboxEventSelectorType = {}));
101
- ;
102
74
  var KvdbEventType;
103
75
  (function (KvdbEventType) {
104
76
  KvdbEventType[KvdbEventType["KVDB_CREATE"] = 0] = "KVDB_CREATE";
@@ -110,16 +82,29 @@ var KvdbEventType;
110
82
  KvdbEventType[KvdbEventType["ENTRY_DELETE"] = 6] = "ENTRY_DELETE";
111
83
  KvdbEventType[KvdbEventType["COLLECTION_CHANGE"] = 7] = "COLLECTION_CHANGE";
112
84
  })(KvdbEventType || (exports.KvdbEventType = KvdbEventType = {}));
113
- ;
114
85
  var KvdbEventSelectorType;
115
86
  (function (KvdbEventSelectorType) {
116
87
  KvdbEventSelectorType[KvdbEventSelectorType["CONTEXT_ID"] = 0] = "CONTEXT_ID";
117
88
  KvdbEventSelectorType[KvdbEventSelectorType["KVDB_ID"] = 1] = "KVDB_ID";
118
89
  KvdbEventSelectorType[KvdbEventSelectorType["ENTRY_ID"] = 2] = "ENTRY_ID";
119
90
  })(KvdbEventSelectorType || (exports.KvdbEventSelectorType = KvdbEventSelectorType = {}));
120
- ;
121
91
  var EventsEventSelectorType;
122
92
  (function (EventsEventSelectorType) {
123
93
  EventsEventSelectorType[EventsEventSelectorType["CONTEXT_ID"] = 0] = "CONTEXT_ID";
124
94
  })(EventsEventSelectorType || (exports.EventsEventSelectorType = EventsEventSelectorType = {}));
125
- ;
95
+ var StreamEventType;
96
+ (function (StreamEventType) {
97
+ StreamEventType[StreamEventType["STREAMROOM_CREATE"] = 0] = "STREAMROOM_CREATE";
98
+ StreamEventType[StreamEventType["STREAMROOM_UPDATE"] = 1] = "STREAMROOM_UPDATE";
99
+ StreamEventType[StreamEventType["STREAMROOM_DELETE"] = 2] = "STREAMROOM_DELETE";
100
+ StreamEventType[StreamEventType["STREAM_JOIN"] = 4] = "STREAM_JOIN";
101
+ StreamEventType[StreamEventType["STREAM_LEAVE"] = 5] = "STREAM_LEAVE";
102
+ StreamEventType[StreamEventType["STREAM_PUBLISH"] = 6] = "STREAM_PUBLISH";
103
+ StreamEventType[StreamEventType["STREAM_UNPUBLISH"] = 7] = "STREAM_UNPUBLISH";
104
+ })(StreamEventType || (exports.StreamEventType = StreamEventType = {}));
105
+ var StreamEventSelectorType;
106
+ (function (StreamEventSelectorType) {
107
+ StreamEventSelectorType[StreamEventSelectorType["CONTEXT_ID"] = 0] = "CONTEXT_ID";
108
+ StreamEventSelectorType[StreamEventSelectorType["STREAMROOM_ID"] = 1] = "STREAMROOM_ID";
109
+ StreamEventSelectorType[StreamEventSelectorType["STREAM_ID"] = 2] = "STREAM_ID";
110
+ })(StreamEventSelectorType || (exports.StreamEventSelectorType = StreamEventSelectorType = {}));
@@ -17,4 +17,6 @@ export declare class Api {
17
17
  private resolveResult;
18
18
  private generateId;
19
19
  private setResultsCallback;
20
+ private toNativeError;
21
+ private isRawCppError;
20
22
  }
@@ -12,6 +12,7 @@ limitations under the License.
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.Api = void 0;
14
14
  const IdGenerator_1 = require("./IdGenerator");
15
+ const NativeError_1 = require("./NativeError");
15
16
  class Api {
16
17
  lib;
17
18
  promises;
@@ -34,7 +35,7 @@ class Api {
34
35
  this.promises.get(result.taskId).resolve(result.result);
35
36
  }
36
37
  else {
37
- this.promises.get(result.taskId).reject(result.error);
38
+ this.promises.get(result.taskId).reject(this.toNativeError(result.error));
38
39
  }
39
40
  this.promises.delete(result.taskId);
40
41
  }
@@ -44,5 +45,21 @@ class Api {
44
45
  setResultsCallback() {
45
46
  this.lib.setResultsCallback((result) => this.resolveResult(result));
46
47
  }
48
+ toNativeError(error) {
49
+ if (this.isRawCppError(error)) {
50
+ return new NativeError_1.NativeError(error);
51
+ }
52
+ if (error instanceof Error) {
53
+ return error;
54
+ }
55
+ return new Error(typeof error === "string" ? error : JSON.stringify(error));
56
+ }
57
+ isRawCppError(obj) {
58
+ return (typeof obj === "object" &&
59
+ obj !== null &&
60
+ "code" in obj &&
61
+ "name" in obj &&
62
+ "scope" in obj);
63
+ }
47
64
  }
48
65
  exports.Api = Api;
@@ -80,7 +80,7 @@ class ConnectionNative extends BaseNative_1.BaseNative {
80
80
  return verifierInterface.verify(request);
81
81
  }
82
82
  throw new Error("Call on UserVerifierInterface with missing implementation");
83
- }
83
+ },
84
84
  };
85
85
  this.userVerifierPtr = await this.runAsync((taskId) => this.api.lib.Connection_newUserVerifierInterface(taskId, connectionPtr, bindingId));
86
86
  }
@@ -13,7 +13,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.CryptoApiNative = void 0;
14
14
  const ExtKey_1 = require("../service/ExtKey");
15
15
  const BaseNative_1 = require("./BaseNative");
16
- ;
17
16
  class CryptoApiNative extends BaseNative_1.BaseNative {
18
17
  async newApi() {
19
18
  return this.runAsync((taskId) => this.api.lib.CryptoApi_newCryptoApi(taskId));
@@ -80,7 +79,7 @@ class CryptoApiNative extends BaseNative_1.BaseNative {
80
79
  return {
81
80
  mnemonic: bipNative.mnemonic,
82
81
  entropy: bipNative.entropy,
83
- extKey: ExtKey_1.ExtKey.fromPtr(bipNative.extKey)
82
+ extKey: ExtKey_1.ExtKey.fromPtr(bipNative.extKey),
84
83
  };
85
84
  }
86
85
  }
@@ -14,8 +14,27 @@ export declare class InboxApiNative extends BaseNative {
14
14
  newApi(connectionPtr: number, threadApiPtr: number, storeApiPtr: number): Promise<number>;
15
15
  deleteApi(ptr: number): Promise<void>;
16
16
  create(ptr: number, args: []): Promise<void>;
17
- createInbox(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, FilesConfig | undefined, ContainerWithoutItemPolicy | undefined]): Promise<string>;
18
- updateInbox(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, FilesConfig | undefined, number, boolean, boolean, ContainerWithoutItemPolicy | undefined]): Promise<void>;
17
+ createInbox(ptr: number, args: [
18
+ string,
19
+ UserWithPubKey[],
20
+ UserWithPubKey[],
21
+ Uint8Array,
22
+ Uint8Array,
23
+ FilesConfig | undefined,
24
+ ContainerWithoutItemPolicy | undefined
25
+ ]): Promise<string>;
26
+ updateInbox(ptr: number, args: [
27
+ string,
28
+ UserWithPubKey[],
29
+ UserWithPubKey[],
30
+ Uint8Array,
31
+ Uint8Array,
32
+ FilesConfig | undefined,
33
+ number,
34
+ boolean,
35
+ boolean,
36
+ ContainerWithoutItemPolicy | undefined
37
+ ]): Promise<void>;
19
38
  getInbox(ptr: number, args: [string]): Promise<Inbox>;
20
39
  listInboxes(ptr: number, args: [string, PagingQuery]): Promise<PagingList<Inbox>>;
21
40
  getInboxPublicView(ptr: number, args: [string]): Promise<InboxPublicView>;
@@ -14,8 +14,25 @@ export declare class KvdbApiNative extends BaseNative {
14
14
  newApi(connectionPtr: number): Promise<number>;
15
15
  deleteApi(ptr: number): Promise<void>;
16
16
  create(ptr: number, args: []): Promise<void>;
17
- createKvdb(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, ContainerPolicy | undefined]): Promise<string>;
18
- updateKvdb(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, number, boolean, boolean, ContainerPolicy | undefined]): Promise<void>;
17
+ createKvdb(ptr: number, args: [
18
+ string,
19
+ UserWithPubKey[],
20
+ UserWithPubKey[],
21
+ Uint8Array,
22
+ Uint8Array,
23
+ ContainerPolicy | undefined
24
+ ]): Promise<string>;
25
+ updateKvdb(ptr: number, args: [
26
+ string,
27
+ UserWithPubKey[],
28
+ UserWithPubKey[],
29
+ Uint8Array,
30
+ Uint8Array,
31
+ number,
32
+ boolean,
33
+ boolean,
34
+ ContainerPolicy | undefined
35
+ ]): Promise<void>;
19
36
  deleteKvdb(ptr: number, args: [string]): Promise<void>;
20
37
  getKvdb(ptr: number, args: [string]): Promise<Kvdb>;
21
38
  listKvdbs(ptr: number, args: [string, PagingQuery]): Promise<PagingList<Kvdb>>;
@@ -0,0 +1,13 @@
1
+ export interface RawCppError {
2
+ code: number;
3
+ name: string;
4
+ scope: string;
5
+ description: string;
6
+ full: string;
7
+ }
8
+ export declare class NativeError extends Error {
9
+ readonly code: number;
10
+ readonly scope: string;
11
+ readonly fullMessage: string;
12
+ constructor(raw: RawCppError);
13
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeError = void 0;
4
+ class NativeError extends Error {
5
+ code;
6
+ scope;
7
+ fullMessage;
8
+ constructor(raw) {
9
+ super(raw.description || raw.full);
10
+ Object.setPrototypeOf(this, NativeError.prototype);
11
+ this.name = raw.name || "NativeError";
12
+ this.code = raw.code;
13
+ this.scope = raw.scope;
14
+ this.fullMessage = raw.full;
15
+ if (this.stack && raw.full) {
16
+ this.stack += `\n Caused by Native C++ Exception: ${raw.full}`;
17
+ }
18
+ }
19
+ }
20
+ exports.NativeError = NativeError;
@@ -14,8 +14,25 @@ export declare class StoreApiNative extends BaseNative {
14
14
  newApi(connectionPtr: number): Promise<number>;
15
15
  deleteApi(ptr: number): Promise<void>;
16
16
  create(ptr: number, args: []): Promise<void>;
17
- createStore(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, ContainerPolicy | undefined]): Promise<string>;
18
- updateStore(ptr: number, args: [string, UserWithPubKey[], UserWithPubKey[], Uint8Array, Uint8Array, number, boolean, boolean, ContainerPolicy | undefined]): Promise<void>;
17
+ createStore(ptr: number, args: [
18
+ string,
19
+ UserWithPubKey[],
20
+ UserWithPubKey[],
21
+ Uint8Array,
22
+ Uint8Array,
23
+ ContainerPolicy | undefined
24
+ ]): Promise<string>;
25
+ updateStore(ptr: number, args: [
26
+ string,
27
+ UserWithPubKey[],
28
+ UserWithPubKey[],
29
+ Uint8Array,
30
+ Uint8Array,
31
+ number,
32
+ boolean,
33
+ boolean,
34
+ ContainerPolicy | undefined
35
+ ]): Promise<void>;
19
36
  deleteStore(ptr: number, args: [string]): Promise<void>;
20
37
  getStore(ptr: number, args: [string]): Promise<Store>;
21
38
  listStores(ptr: number, args: [string, PagingQuery]): Promise<PagingList<Store>>;
@@ -0,0 +1,72 @@
1
+ /*!
2
+ PrivMX Web Endpoint.
3
+ Copyright © 2024 Simplito sp. z o.o.
4
+
5
+ This file is part of the PrivMX Platform (https://privmx.dev).
6
+ This software is Licensed under the PrivMX Free License.
7
+
8
+ See the License for the specific language governing permissions and
9
+ limitations under the License.
10
+ */
11
+ import { Jsep } from "../service/WebRtcInterface";
12
+ import { ContainerPolicy, PagingList, PagingQuery, StreamInfo, StreamEventSelectorType, StreamEventType, StreamRoom, TurnCredentials, UserWithPubKey } from "../Types";
13
+ import { WebRtcClient } from "../webStreams/WebRtcClient";
14
+ import { WebRtcInterfaceImpl } from "../webStreams/WebRtcInterfaceImpl";
15
+ import { Api } from "./Api";
16
+ import { BaseNative } from "./BaseNative";
17
+ import * as Types from "../Types";
18
+ export declare class StreamApiNative extends BaseNative {
19
+ protected webRtcClient: WebRtcClient;
20
+ protected static bindingId: number;
21
+ static getBindingId(): number;
22
+ protected webRtcInterfacePtr: number;
23
+ protected selfPtr: number;
24
+ protected webRtcInterfaceImpl: WebRtcInterfaceImpl | null;
25
+ constructor(api: Api, webRtcClient: WebRtcClient);
26
+ newApi(connectionPtr: number, eventApiPtr: number): Promise<number>;
27
+ deleteApi(ptr: number): Promise<void>;
28
+ create(ptr: number, args: []): Promise<void>;
29
+ createStreamRoom(ptr: number, args: [
30
+ string,
31
+ UserWithPubKey[],
32
+ UserWithPubKey[],
33
+ Uint8Array,
34
+ Uint8Array,
35
+ ContainerPolicy | undefined
36
+ ]): Promise<string>;
37
+ updateStreamRoom(ptr: number, args: [
38
+ string,
39
+ UserWithPubKey[],
40
+ UserWithPubKey[],
41
+ Uint8Array,
42
+ Uint8Array,
43
+ number,
44
+ boolean,
45
+ boolean,
46
+ ContainerPolicy | undefined
47
+ ]): Promise<void>;
48
+ deleteStreamRoom(ptr: number, args: [string]): Promise<void>;
49
+ getStreamRoom(ptr: number, args: [string]): Promise<StreamRoom>;
50
+ listStreamRooms(ptr: number, args: [string, PagingQuery]): Promise<PagingList<StreamRoom>>;
51
+ createStream(ptr: number, args: [string]): Promise<Types.StreamHandle>;
52
+ joinStreamRoom(ptr: number, args: [string]): Promise<void>;
53
+ leaveStreamRoom(ptr: number, args: [string]): Promise<void>;
54
+ enableStreamRoomRecording(ptr: number, args: [string]): Promise<void>;
55
+ getStreamRoomRecordingKeys(ptr: number, args: [string]): Promise<Types.RecordingEncKey[]>;
56
+ publishStream(ptr: number, args: [number]): Promise<Types.StreamPublishResult>;
57
+ updateStream(ptr: number, args: [number]): Promise<Types.StreamPublishResult>;
58
+ unpublishStream(ptr: number, args: [number]): Promise<void>;
59
+ listStreams(ptr: number, args: [string]): Promise<StreamInfo[]>;
60
+ subscribeToRemoteStreams(ptr: number, args: [string, Types.StreamSubscription[]]): Promise<void>;
61
+ modifyRemoteStreamsSubscriptions(ptr: number, args: [string, Types.StreamSubscription[], Types.StreamSubscription[]]): Promise<void>;
62
+ unsubscribeFromRemoteStreams(ptr: number, args: [string, Types.StreamSubscription[]]): Promise<void>;
63
+ keyManagement(ptr: number, args: [boolean]): Promise<void>;
64
+ getTurnCredentials(ptr: number, args: []): Promise<TurnCredentials[]>;
65
+ subscribeFor(ptr: number, args: [string[]]): Promise<string[]>;
66
+ unsubscribeFrom(ptr: number, args: [string[]]): Promise<void>;
67
+ buildSubscriptionQuery(ptr: number, args: [StreamEventType, StreamEventSelectorType, string]): Promise<string>;
68
+ trickle(ptr: number, args: [number, RTCIceCandidate]): Promise<void>;
69
+ acceptOfferOnReconfigure(ptr: number, args: [number, Jsep]): Promise<void>;
70
+ setNewOfferOnReconfigure(ptr: number, args: [number, Jsep]): Promise<void>;
71
+ protected bindWebRtcInterfaceAsHandler(bindingId: number): void;
72
+ }