@simplito/privmx-webendpoint 2.5.2 → 2.6.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 (73) hide show
  1. package/Types.d.ts +97 -1
  2. package/Types.js +102 -15
  3. package/api/ConnectionNative.d.ts +18 -2
  4. package/api/ConnectionNative.js +26 -7
  5. package/api/EventApiNative.d.ts +4 -3
  6. package/api/EventApiNative.js +7 -4
  7. package/api/InboxApiNative.d.ts +4 -5
  8. package/api/InboxApiNative.js +6 -9
  9. package/api/KvdbApiNative.d.ts +5 -5
  10. package/api/KvdbApiNative.js +8 -8
  11. package/api/StoreApiNative.d.ts +6 -7
  12. package/api/StoreApiNative.js +6 -9
  13. package/api/ThreadApiNative.d.ts +4 -5
  14. package/api/ThreadApiNative.js +6 -9
  15. package/assets/driver-web-context.js +1 -1
  16. package/assets/e2ee-worker.js +1 -0
  17. package/assets/endpoint-wasm-module.js +2 -19
  18. package/assets/endpoint-wasm-module.wasm +0 -0
  19. package/assets/privmx-endpoint-web.js +2 -0
  20. package/bundle/privmx-endpoint-web.js +1 -1
  21. package/extra/PrivmxClient.d.ts +9 -2
  22. package/extra/PrivmxClient.js +15 -1
  23. package/extra/__mocks__/constants.d.ts +63 -0
  24. package/extra/__mocks__/constants.js +51 -0
  25. package/extra/__mocks__/mockContainerSubscriber.d.ts +8 -0
  26. package/extra/__mocks__/mockContainerSubscriber.js +26 -0
  27. package/extra/{__tests__/__mocks__ → __mocks__}/mockEventQueue.d.ts +1 -3
  28. package/extra/{__tests__/__mocks__ → __mocks__}/mockEventQueue.js +6 -8
  29. package/extra/{__tests__/__mocks__ → __mocks__}/utils.d.ts +1 -1
  30. package/extra/{__tests__/__mocks__ → __mocks__}/utils.js +4 -5
  31. package/extra/__tests__/eventsManager.test.js +38 -27
  32. package/extra/__tests__/inboxEventManager.js +79 -0
  33. package/extra/__tests__/storeEventManager.test.js +48 -28
  34. package/extra/__tests__/threadEventManager.test.js +49 -29
  35. package/extra/events.d.ts +4 -217
  36. package/extra/events.js +25 -213
  37. package/extra/files.d.ts +2 -2
  38. package/extra/files.js +2 -2
  39. package/extra/inbox.js +1 -2
  40. package/extra/index.d.ts +3 -3
  41. package/extra/index.js +9 -10
  42. package/extra/managers.d.ts +98 -0
  43. package/extra/managers.js +157 -0
  44. package/extra/subscriptions.d.ts +165 -0
  45. package/extra/subscriptions.js +51 -0
  46. package/extra/utils.js +4 -5
  47. package/index.d.ts +2 -2
  48. package/index.js +2 -1
  49. package/package.json +12 -13
  50. package/service/Connection.d.ts +21 -2
  51. package/service/Connection.js +27 -2
  52. package/service/CryptoApi.d.ts +1 -1
  53. package/service/CryptoApi.js +1 -1
  54. package/service/EventApi.d.ts +14 -9
  55. package/service/EventApi.js +35 -10
  56. package/service/InboxApi.d.ts +14 -13
  57. package/service/InboxApi.js +42 -17
  58. package/service/KvdbApi.d.ts +19 -11
  59. package/service/KvdbApi.js +51 -17
  60. package/service/StoreApi.d.ts +18 -15
  61. package/service/StoreApi.js +48 -20
  62. package/service/ThreadApi.d.ts +14 -13
  63. package/service/ThreadApi.js +44 -19
  64. package/service/index.d.ts +2 -1
  65. package/service/index.js +3 -1
  66. package/extra/__tests__/__mocks__/constants.d.ts +0 -36
  67. package/extra/__tests__/__mocks__/constants.js +0 -42
  68. package/extra/__tests__/__mocks__/mockContainerSubscriber.d.ts +0 -12
  69. package/extra/__tests__/__mocks__/mockContainerSubscriber.js +0 -25
  70. package/extra/__tests__/__mocks__/mockEventAPIs.d.ts +0 -30
  71. package/extra/__tests__/__mocks__/mockEventAPIs.js +0 -70
  72. package/extra/__tests__/inboxEventManager.test.js +0 -56
  73. /package/extra/__tests__/{inboxEventManager.test.d.ts → inboxEventManager.d.ts} +0 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../__mocks__/utils");
4
+ const constants_1 = require("../__mocks__/constants");
5
+ const subscriptions_1 = require("../subscriptions");
6
+ const Types_1 = require("../../Types");
7
+ const mockContainerSubscriber_1 = require("../__mocks__/mockContainerSubscriber");
8
+ describe("Inbox event manager", () => {
9
+ let { q, manager } = (0, utils_1.createTestSetup)();
10
+ let mockEventsManager = manager.getInboxEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
11
+ beforeEach(() => {
12
+ let { q: _q, manager } = (0, utils_1.createTestSetup)();
13
+ q = _q;
14
+ mockEventsManager = manager.getInboxEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
15
+ });
16
+ it("should add callback for event", async () => {
17
+ const sub = (0, subscriptions_1.createInboxSubscription)({
18
+ type: Types_1.InboxEventType.INBOX_UPDATE,
19
+ id: "",
20
+ selector: Types_1.InboxEventSelectorType.CONTEXT_ID,
21
+ callbacks: [() => { }],
22
+ });
23
+ await mockEventsManager.subscribeFor([sub]);
24
+ expect(mockEventsManager.listeners.size).toBe(1);
25
+ });
26
+ it("should function to remove callback from event", async () => {
27
+ const sub = (0, subscriptions_1.createInboxSubscription)({
28
+ type: Types_1.InboxEventType.INBOX_UPDATE,
29
+ id: "",
30
+ selector: Types_1.InboxEventSelectorType.CONTEXT_ID,
31
+ callbacks: [() => { }],
32
+ });
33
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
34
+ expect(mockEventsManager.listeners.size).toBe(1);
35
+ await mockEventsManager.unsubscribeFrom([subId]);
36
+ expect(mockEventsManager.listeners.size).toBe(0);
37
+ });
38
+ it("should register multiple callbacks for channel", async () => {
39
+ const storeEventCb = jest.fn();
40
+ const sub = (0, subscriptions_1.createInboxSubscription)({
41
+ type: Types_1.InboxEventType.INBOX_UPDATE,
42
+ id: "",
43
+ selector: Types_1.InboxEventSelectorType.CONTEXT_ID,
44
+ callbacks: [storeEventCb, storeEventCb],
45
+ });
46
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
47
+ q.dispatchEvent((0, constants_1.MOCK_INBOX_CREATED_EVENT)(subId));
48
+ //adding task on end of js event loop
49
+ await (0, utils_1.waitForNextTick)();
50
+ expect(storeEventCb).toHaveBeenCalledTimes(2);
51
+ });
52
+ it("should handle subscription for two channels", async () => {
53
+ const inboxEventCb = jest.fn();
54
+ const entryEventCb = jest.fn();
55
+ const inboxId = "98dsyvb8as7ybd0asydvb0as";
56
+ const subA = (0, subscriptions_1.createInboxSubscription)({
57
+ type: Types_1.InboxEventType.INBOX_CREATE,
58
+ id: "",
59
+ selector: Types_1.InboxEventSelectorType.CONTEXT_ID,
60
+ callbacks: [inboxEventCb],
61
+ });
62
+ const subB = (0, subscriptions_1.createInboxSubscription)({
63
+ type: Types_1.InboxEventType.ENTRY_DELETE,
64
+ id: inboxId,
65
+ selector: Types_1.InboxEventSelectorType.INBOX_ID,
66
+ callbacks: [entryEventCb],
67
+ });
68
+ const [subIdA, subIdB] = await mockEventsManager.subscribeFor([subA, subB]);
69
+ const event = (0, constants_1.MOCK_INBOX_ENTRY_DELETED_EVENT)(inboxId, subIdB);
70
+ const eventCreated = (0, constants_1.MOCK_INBOX_CREATED_EVENT)(subIdA);
71
+ q.dispatchEvent(eventCreated);
72
+ await (0, utils_1.waitForNextTick)();
73
+ q.dispatchEvent(event);
74
+ //adding task on end of js event loop
75
+ await (0, utils_1.waitForNextTick)();
76
+ expect(inboxEventCb).toHaveBeenCalledTimes(1);
77
+ expect(entryEventCb).toHaveBeenCalledTimes(1);
78
+ });
79
+ });
@@ -1,53 +1,73 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs");
4
- const utils_1 = require("./__mocks__/utils");
5
- const constants_1 = require("./__mocks__/constants");
6
- describe('Store event manager', () => {
3
+ const utils_1 = require("../__mocks__/utils");
4
+ const constants_1 = require("../__mocks__/constants");
5
+ const mockContainerSubscriber_1 = require("../__mocks__/mockContainerSubscriber");
6
+ const subscriptions_1 = require("../subscriptions");
7
+ const Types_1 = require("../../Types");
8
+ describe("Store event manager", () => {
7
9
  let { q, manager } = (0, utils_1.createTestSetup)();
8
- let mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q));
10
+ let mockEventsManager = manager.getStoreEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
9
11
  beforeEach(() => {
10
12
  let { q: _q, manager } = (0, utils_1.createTestSetup)();
11
13
  q = _q;
12
- mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q));
14
+ mockEventsManager = manager.getStoreEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
13
15
  });
14
- it('should add callback for event', async () => {
15
- await mockEventsManager.onStoreEvent({
16
- event: 'storeStatsChanged',
17
- callback: () => { }
16
+ it("should add callback for event", async () => {
17
+ const sub = (0, subscriptions_1.createStoreSubscription)({
18
+ type: Types_1.StoreEventType.STORE_UPDATE,
19
+ id: "",
20
+ selector: Types_1.StoreEventSelectorType.CONTEXT_ID,
21
+ callbacks: [() => { }],
18
22
  });
23
+ await mockEventsManager.subscribeFor([sub]);
19
24
  expect(mockEventsManager.listeners.size).toBe(1);
20
25
  });
21
- it('should function to remove callback from event', async () => {
22
- const removeListener = await mockEventsManager.onStoreEvent({
23
- event: 'storeStatsChanged',
24
- callback: () => { }
26
+ it("should function to remove callback from event", async () => {
27
+ const sub = (0, subscriptions_1.createStoreSubscription)({
28
+ type: Types_1.StoreEventType.STORE_UPDATE,
29
+ id: "",
30
+ selector: Types_1.StoreEventSelectorType.CONTEXT_ID,
31
+ callbacks: [() => { }],
25
32
  });
33
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
26
34
  expect(mockEventsManager.listeners.size).toBe(1);
27
- await removeListener();
35
+ await mockEventsManager.unsubscribeFrom([subId]);
28
36
  expect(mockEventsManager.listeners.size).toBe(0);
29
37
  });
30
- it('should register multiple callbacks for channel', async () => {
38
+ it("should register multiple callbacks for channel", async () => {
31
39
  const storeEventCb = jest.fn();
32
- await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
33
- await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
34
- q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT);
40
+ const sub = (0, subscriptions_1.createStoreSubscription)({
41
+ type: Types_1.StoreEventType.STORE_UPDATE,
42
+ id: "",
43
+ selector: Types_1.StoreEventSelectorType.CONTEXT_ID,
44
+ callbacks: [storeEventCb, storeEventCb],
45
+ });
46
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
47
+ q.dispatchEvent((0, constants_1.MOCK_STORE_CREATED_EVENT)(subId));
35
48
  //adding task on end of js event loop
36
49
  await (0, utils_1.waitForNextTick)();
37
50
  expect(storeEventCb).toHaveBeenCalledTimes(2);
38
51
  });
39
- it('should handle subscription for two channels', async () => {
52
+ it("should handle subscription for two channels", async () => {
40
53
  const storeEventCb = jest.fn();
41
54
  const messageEventCb = jest.fn();
42
- const STORE_ID = '98dsyvs87dybv9a87dyvb98';
43
- const storeEvent = (0, constants_1.MOCK_STORE_FILE_DELETED_EVENT)(STORE_ID);
44
- await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
45
- await mockEventsManager.onFileEvent(STORE_ID, {
46
- event: storeEvent.type,
47
- callback: messageEventCb
55
+ const STORE_ID = "98dsyvs87dybv9a87dyvb98";
56
+ const subA = (0, subscriptions_1.createStoreSubscription)({
57
+ type: Types_1.StoreEventType.STORE_CREATE,
58
+ id: "",
59
+ selector: Types_1.StoreEventSelectorType.CONTEXT_ID,
60
+ callbacks: [storeEventCb],
61
+ });
62
+ const subB = (0, subscriptions_1.createStoreSubscription)({
63
+ type: Types_1.StoreEventType.FILE_DELETE,
64
+ id: STORE_ID,
65
+ selector: Types_1.StoreEventSelectorType.STORE_ID,
66
+ callbacks: [messageEventCb],
48
67
  });
49
- q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT);
50
- q.dispatchEvent(storeEvent);
68
+ const [subIdA, subIdB] = await mockEventsManager.subscribeFor([subA, subB]);
69
+ q.dispatchEvent((0, constants_1.MOCK_STORE_CREATED_EVENT)(subIdA));
70
+ q.dispatchEvent((0, constants_1.MOCK_STORE_FILE_DELETED_EVENT)(STORE_ID, subIdB));
51
71
  //adding task on end of js event loop
52
72
  await (0, utils_1.waitForNextTick)();
53
73
  expect(storeEventCb).toHaveBeenCalledTimes(1);
@@ -1,57 +1,77 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs");
4
- const utils_1 = require("./__mocks__/utils");
5
- const constants_1 = require("./__mocks__/constants");
6
- describe('Thread event manager', () => {
3
+ const utils_1 = require("../__mocks__/utils");
4
+ const mockContainerSubscriber_1 = require("../__mocks__/mockContainerSubscriber");
5
+ const subscriptions_1 = require("../subscriptions");
6
+ const Types_1 = require("../../Types");
7
+ const constants_1 = require("../__mocks__/constants");
8
+ describe("Thread event manager", () => {
7
9
  let { q, manager } = (0, utils_1.createTestSetup)();
8
- let mockEventsManager = manager.getThreadEventManager(new mockEventAPIs_1.MockThreadEventApi(q));
10
+ let mockEventsManager = manager.getThreadEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
9
11
  beforeEach(() => {
10
12
  let { q: _q, manager } = (0, utils_1.createTestSetup)();
11
13
  q = _q;
12
- mockEventsManager = manager.getThreadEventManager(new mockEventAPIs_1.MockThreadEventApi(q));
14
+ mockEventsManager = manager.getThreadEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
13
15
  });
14
- it('should create manager', async () => {
16
+ it("should create manager", async () => {
15
17
  expect(mockEventsManager).toBeDefined();
16
18
  expect(manager.dispatchers.length).toBe(1);
17
19
  });
18
- it('should add callback for event', async () => {
19
- await mockEventsManager.onThreadEvent({
20
- event: 'threadStatsChanged',
21
- callback: () => { }
20
+ it("should add callback for event", async () => {
21
+ const sub = (0, subscriptions_1.createThreadSubscription)({
22
+ type: Types_1.ThreadEventType.THREAD_UPDATE,
23
+ id: "",
24
+ selector: Types_1.ThreadEventSelectorType.CONTEXT_ID,
25
+ callbacks: [() => { }],
22
26
  });
27
+ await mockEventsManager.subscribeFor([sub]);
23
28
  expect(mockEventsManager.listeners.size).toBe(1);
24
29
  });
25
- it('should function to remove callback from event', async () => {
26
- const removeListener = await mockEventsManager.onThreadEvent({
27
- event: 'threadStatsChanged',
28
- callback: () => { }
30
+ it("should function to remove callback from event", async () => {
31
+ const sub = (0, subscriptions_1.createThreadSubscription)({
32
+ type: Types_1.ThreadEventType.THREAD_UPDATE,
33
+ id: "",
34
+ selector: Types_1.ThreadEventSelectorType.CONTEXT_ID,
35
+ callbacks: [() => { }],
29
36
  });
37
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
30
38
  expect(mockEventsManager.listeners.size).toBe(1);
31
- await removeListener();
39
+ await mockEventsManager.unsubscribeFrom([subId]);
32
40
  expect(mockEventsManager.listeners.size).toBe(0);
33
41
  });
34
- it('should register multiple callbacks for channel', async () => {
42
+ it("should register multiple callbacks for channel", async () => {
35
43
  const threadEventCb = jest.fn();
36
- await mockEventsManager.onThreadEvent({ event: constants_1.MOCK_THREAD_CREATED_EVENT.type, callback: threadEventCb });
37
- await mockEventsManager.onThreadEvent({ event: constants_1.MOCK_THREAD_CREATED_EVENT.type, callback: threadEventCb });
38
- q.dispatchEvent(constants_1.MOCK_THREAD_CREATED_EVENT);
44
+ const sub = (0, subscriptions_1.createThreadSubscription)({
45
+ type: Types_1.ThreadEventType.THREAD_UPDATE,
46
+ id: "",
47
+ selector: Types_1.ThreadEventSelectorType.CONTEXT_ID,
48
+ callbacks: [threadEventCb, threadEventCb],
49
+ });
50
+ const [subId] = await mockEventsManager.subscribeFor([sub]);
51
+ q.dispatchEvent((0, constants_1.MOCK_THREAD_CREATED_EVENT)(subId));
39
52
  //adding task on end of js event loop
40
53
  await (0, utils_1.waitForNextTick)();
41
54
  expect(threadEventCb).toHaveBeenCalledTimes(2);
42
55
  });
43
- it('should handle subscription for two channels', async () => {
56
+ it("should handle subscription for two channels", async () => {
44
57
  const threadEventCb = jest.fn();
45
58
  const messageEventCb = jest.fn();
46
- const THREAD_ID = '823yrcby32987yc23984b7y3w';
47
- const threadEvent = (0, constants_1.MOCK_THREAD_MESSAGE_DELETED_EVENT)(THREAD_ID);
48
- await mockEventsManager.onThreadEvent({ event: constants_1.MOCK_THREAD_CREATED_EVENT.type, callback: threadEventCb });
49
- await mockEventsManager.onMessageEvent(THREAD_ID, {
50
- event: threadEvent.type,
51
- callback: messageEventCb
59
+ const THREAD_ID = "98dsyvs87dybv9a87dyvb98";
60
+ const subA = (0, subscriptions_1.createThreadSubscription)({
61
+ type: Types_1.ThreadEventType.THREAD_CREATE,
62
+ id: "",
63
+ selector: Types_1.ThreadEventSelectorType.CONTEXT_ID,
64
+ callbacks: [threadEventCb],
65
+ });
66
+ const subB = (0, subscriptions_1.createThreadSubscription)({
67
+ type: Types_1.ThreadEventType.MESSAGE_DELETE,
68
+ id: THREAD_ID,
69
+ selector: Types_1.ThreadEventSelectorType.THREAD_ID,
70
+ callbacks: [messageEventCb],
52
71
  });
53
- q.dispatchEvent(constants_1.MOCK_THREAD_CREATED_EVENT);
54
- q.dispatchEvent(threadEvent);
72
+ const [subIdA, subIdB] = await mockEventsManager.subscribeFor([subA, subB]);
73
+ q.dispatchEvent((0, constants_1.MOCK_THREAD_CREATED_EVENT)(subIdA));
74
+ q.dispatchEvent((0, constants_1.MOCK_THREAD_MESSAGE_DELETED_EVENT)(THREAD_ID, subIdB));
55
75
  //adding task on end of js event loop
56
76
  await (0, utils_1.waitForNextTick)();
57
77
  expect(threadEventCb).toHaveBeenCalledTimes(1);
package/extra/events.d.ts CHANGED
@@ -1,219 +1,6 @@
1
1
  import { Types } from "..";
2
- export type Channel = 'inbox' | `inbox/${string}/entries` | 'store' | `store/${string}/files` | 'thread' | `thread/${string}/messages` | `connection/${string}`;
3
- /**
4
- * Represents a generic event structure.
5
- */
6
- export interface GenericEvent<K extends keyof EventPayload> extends Types.Event {
7
- /**
8
- * Type of the event.
9
- */
10
- type: keyof EventPayload;
11
- /**
12
- * The channel through which the event was emitted.
13
- */
14
- channel: Channel;
15
- /**
16
- * Data associated with the event.
17
- */
18
- data: EventPayload[K];
19
- /**
20
- * ID of connection to which the event was sent.
21
- */
22
- connectionId: number;
23
- }
24
- export interface EventPayload {
25
- threadCreated: Types.Thread;
26
- threadUpdated: Types.Thread;
27
- threadDeleted: {
28
- threadId: string;
29
- };
30
- threadStatsChanged: {
31
- lastMsgDate: number;
32
- messagesCount: number;
33
- threadId: string;
34
- };
35
- threadNewMessage: Types.Message;
36
- threadUpdatedMessage: Types.Message;
37
- threadMessageDeleted: {
38
- threadId: string;
39
- messageId: string;
40
- };
41
- storeCreated: Types.Store;
42
- storeUpdated: Types.Store;
43
- storeDeleted: {
44
- storeId: string;
45
- };
46
- storeStatsChanged: {
47
- contextId: string;
48
- storeId: string;
49
- lastFileDate: number;
50
- filesCount: number;
51
- };
52
- storeFileCreated: Types.File;
53
- storeFileUpdated: Types.File;
54
- storeFileDeleted: {
55
- contextId: string;
56
- storeId: string;
57
- fileId: string;
58
- };
59
- inboxDeleted: {
60
- inboxId: string;
61
- };
62
- inboxUpdated: Types.Inbox;
63
- inboxCreated: Types.Inbox;
64
- inboxEntryCreated: Types.InboxEntry;
65
- inboxEntryDeleted: {
66
- inboxId: string;
67
- entryId: string;
68
- };
69
- libConnected: undefined;
70
- libDisconnected: undefined;
71
- libPlatformDisconnected: undefined;
72
- libBreak: undefined;
73
- }
74
- type EventType = keyof EventPayload;
75
- type EventHandler<E extends keyof EventPayload> = {
76
- event: E;
77
- callback: (event: GenericEvent<E>) => void;
78
- };
79
- export type OnMessageEventHandler = EventHandler<'threadMessageDeleted'> | EventHandler<'threadNewMessage'> | EventHandler<'threadUpdatedMessage'>;
80
- export type OnThreadEventHandler = EventHandler<'threadCreated'> | EventHandler<'threadDeleted'> | EventHandler<'threadUpdated'> | EventHandler<'threadStatsChanged'>;
81
- export type OnFileEventHandler = EventHandler<'storeFileDeleted'> | EventHandler<'storeFileCreated'> | EventHandler<'storeFileUpdated'>;
82
- export type OnStoreEventHandler = EventHandler<'storeCreated'> | EventHandler<'storeStatsChanged'> | EventHandler<'storeUpdated'> | EventHandler<'storeDeleted'>;
83
- export type OnInboxEventHandler = EventHandler<'inboxDeleted'> | EventHandler<'inboxCreated'> | EventHandler<'inboxUpdated'>;
84
- export type OnEntryEventHandler = EventHandler<'inboxEntryCreated'> | EventHandler<'inboxEntryDeleted'>;
85
- export type OnConnectionHandler = EventHandler<'libConnected'> | EventHandler<'libDisconnected'> | EventHandler<'libBreak'> | EventHandler<'libPlatformDisconnected'>;
86
- export declare abstract class BaseEventManager {
87
- private _listeners;
88
- get listeners(): Map<string, Function[]>;
89
- protected channels: Set<Channel>;
90
- protected abstract subscribeForModuleEvents(): Promise<void>;
91
- protected abstract subscribeForModuleElementsEvents(containerId: string): Promise<void>;
92
- protected abstract unsubscribeFromModuleEvents(): Promise<void>;
93
- protected abstract unsubscribeFromModuleElementsEvents(containerId: string): Promise<void>;
94
- constructor();
95
- /**
96
- * Checks whether the user is subscribed to given channel
97
- * @param channel Channel
98
- * @returns {boolean} `boolean`
99
- */
100
- protected isSubscribedToChannel(channel: Channel): boolean;
101
- protected hasEventsOnChannel(channel: Channel): boolean;
102
- /**
103
- * Removes an event listeners from given `channel` and `eventType`
104
- * @param {Channel} channel channel
105
- * @param {string} eventType type of the event
106
- * @param {function} callback callback function
107
- */
108
- protected removeEventListener: (channel: Channel, eventType: EventType, callback: Function) => void;
109
- /**
110
- * Removes all listeners from given channel
111
- * @param {Channel} channel channel
112
- * @returns {void}
113
- */
114
- removeChannelEvents: (channel: Channel) => void;
115
- dispatchEvent(event: Types.Event): void;
116
- /**
117
- * Add an event listeners on given channel and eventType
118
- * @param {Channel} channel channel
119
- * @param {string} eventType type of the event
120
- * @param {function} callback callback function
121
- * @returns {function} function to remove the event listeners
122
- */
123
- private addEventListener;
124
- protected addContainerListener: (channel: Channel, eventType: EventType, callback: Function) => Promise<() => Promise<void>>;
125
- protected addContainerElementListener: (containerId: string, channel: Channel, eventType: EventType, callback: Function) => Promise<() => Promise<void>>;
126
- }
127
- export interface SubscriberForThreadsEvents {
128
- subscribeForThreadEvents(): Promise<void>;
129
- /**
130
- * Unsubscribes from the Thread module main events.
131
- */
132
- unsubscribeFromThreadEvents(): Promise<void>;
133
- /**
134
- * Subscribes for events in given Thread.
135
- * @param {string} threadId ID of the Thread to subscribe
136
- */
137
- subscribeForMessageEvents(threadId: string): Promise<void>;
138
- /**
139
- * Unsubscribes from events in given Thread.
140
- * @param {string} threadId ID of the Thread to unsubscribe
141
- */
142
- unsubscribeFromMessageEvents(threadId: string): Promise<void>;
143
- }
144
- export declare class ThreadEventsManager extends BaseEventManager {
145
- private threadApi;
146
- constructor(threadApi: SubscriberForThreadsEvents);
147
- subscribeForModuleEvents(): Promise<void>;
148
- subscribeForModuleElementsEvents(id: string): Promise<void>;
149
- unsubscribeFromModuleEvents(): Promise<void>;
150
- unsubscribeFromModuleElementsEvents(id: string): Promise<void>;
151
- onThreadEvent(handler: OnThreadEventHandler): Promise<() => Promise<void>>;
152
- onMessageEvent(threadId: string, handler: OnMessageEventHandler): Promise<() => Promise<void>>;
153
- }
154
- export interface SubscriberForStoreEvents {
155
- subscribeForStoreEvents(): Promise<void>;
156
- /**
157
- * Unsubscribes from the Store module main events.
158
- */
159
- unsubscribeFromStoreEvents(): Promise<void>;
160
- /**
161
- * Subscribes for events in given Store.
162
- * @param {string} storeId ID of the Store to subscribe
163
- */
164
- subscribeForFileEvents(storeId: string): Promise<void>;
165
- /**
166
- * Unsubscribes from events in given Store.
167
- * @param {string} storeId ID of the Store to unsubscribe
168
- */
169
- unsubscribeFromFileEvents(storeId: string): Promise<void>;
170
- }
171
- export declare class StoreEventsManager extends BaseEventManager {
172
- private storeApi;
173
- constructor(storeApi: SubscriberForStoreEvents);
174
- subscribeForModuleEvents(): Promise<void>;
175
- subscribeForModuleElementsEvents(id: string): Promise<void>;
176
- unsubscribeFromModuleEvents(): Promise<void>;
177
- unsubscribeFromModuleElementsEvents(id: string): Promise<void>;
178
- onStoreEvent(handler: OnStoreEventHandler): Promise<() => Promise<void>>;
179
- onFileEvent(storeId: string, handler: OnFileEventHandler): Promise<() => Promise<void>>;
180
- }
181
- export interface SubscriberForInboxEvents {
182
- subscribeForInboxEvents(): Promise<void>;
183
- /**
184
- * Unsubscribes from the Inbox module main events.
185
- */
186
- unsubscribeFromInboxEvents(): Promise<void>;
187
- /**
188
- * Subscribes for events in given Inbox.
189
- * @param {string} inboxId ID of the Inbox to subscribe
190
- */
191
- subscribeForEntryEvents(inboxId: string): Promise<void>;
192
- /**
193
- * Unsubscribes from events in given Inbox.
194
- * @param {string} inboxId ID of the Inbox to unsubscribe
195
- */
196
- unsubscribeFromEntryEvents(inboxId: string): Promise<void>;
197
- }
198
- export declare class InboxEventsManager extends BaseEventManager {
199
- private inboxApi;
200
- constructor(inboxApi: SubscriberForInboxEvents);
201
- subscribeForModuleEvents(): Promise<void>;
202
- subscribeForModuleElementsEvents(id: string): Promise<void>;
203
- unsubscribeFromModuleEvents(): Promise<void>;
204
- unsubscribeFromModuleElementsEvents(id: string): Promise<void>;
205
- onInboxEvent(handler: OnInboxEventHandler): Promise<() => Promise<void>>;
206
- onEntryEvent(inboxId: string, handler: OnEntryEventHandler): Promise<() => Promise<void>>;
207
- }
208
- export declare class ConnectionEventsManager extends BaseEventManager {
209
- private connectionId;
210
- protected subscribeForModuleEvents(): Promise<void>;
211
- protected subscribeForModuleElementsEvents(): Promise<void>;
212
- protected unsubscribeFromModuleEvents(): Promise<void>;
213
- protected unsubscribeFromModuleElementsEvents(): Promise<void>;
214
- constructor(connectionId: string);
215
- onConnectionEvent(handler: OnConnectionHandler): Promise<() => Promise<void>>;
216
- }
2
+ import { SubscriberForInboxEvents, SubscriberForKvdbEvents, SubscriberForStoreEvents, SubscriberForThreadsEvents } from "./subscriptions";
3
+ import { BaseEventDispatcherManager, ConnectionEventsManager, InboxEventsManager, KvdbEventsManager, StoreEventsManager, ThreadEventsManager } from "./managers";
217
4
  export declare class EventManager {
218
5
  private _isEventLoopRunning;
219
6
  dispatchers: ((event: Types.Event) => void)[];
@@ -226,10 +13,10 @@ export declare class EventManager {
226
13
  stopEventLoop(): void;
227
14
  removeAllDispatchers: () => void;
228
15
  protected onEvent(event: Types.Event): void;
229
- registerDispatcher(manager: BaseEventManager): void;
16
+ registerDispatcher(manager: BaseEventDispatcherManager): void;
230
17
  getThreadEventManager(threadApi: SubscriberForThreadsEvents): ThreadEventsManager;
231
18
  getStoreEventManager(storeApi: SubscriberForStoreEvents): StoreEventsManager;
19
+ getKvdbEventManager(kvdbApi: SubscriberForKvdbEvents): KvdbEventsManager;
232
20
  getInboxEventManager(inboxApi: SubscriberForInboxEvents): InboxEventsManager;
233
21
  getConnectionEventManager(connectionId: string): ConnectionEventsManager;
234
22
  }
235
- export {};