@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.
- package/Types.d.ts +97 -1
- package/Types.js +102 -15
- package/api/ConnectionNative.d.ts +18 -2
- package/api/ConnectionNative.js +26 -7
- package/api/EventApiNative.d.ts +4 -3
- package/api/EventApiNative.js +7 -4
- package/api/InboxApiNative.d.ts +4 -5
- package/api/InboxApiNative.js +6 -9
- package/api/KvdbApiNative.d.ts +5 -5
- package/api/KvdbApiNative.js +8 -8
- package/api/StoreApiNative.d.ts +6 -7
- package/api/StoreApiNative.js +6 -9
- package/api/ThreadApiNative.d.ts +4 -5
- package/api/ThreadApiNative.js +6 -9
- package/assets/driver-web-context.js +1 -1
- package/assets/e2ee-worker.js +1 -0
- package/assets/endpoint-wasm-module.js +2 -19
- package/assets/endpoint-wasm-module.wasm +0 -0
- package/assets/privmx-endpoint-web.js +2 -0
- package/bundle/privmx-endpoint-web.js +1 -1
- package/extra/PrivmxClient.d.ts +9 -2
- package/extra/PrivmxClient.js +15 -1
- package/extra/__mocks__/constants.d.ts +63 -0
- package/extra/__mocks__/constants.js +51 -0
- package/extra/__mocks__/mockContainerSubscriber.d.ts +8 -0
- package/extra/__mocks__/mockContainerSubscriber.js +26 -0
- package/extra/{__tests__/__mocks__ → __mocks__}/mockEventQueue.d.ts +1 -3
- package/extra/{__tests__/__mocks__ → __mocks__}/mockEventQueue.js +6 -8
- package/extra/{__tests__/__mocks__ → __mocks__}/utils.d.ts +1 -1
- package/extra/{__tests__/__mocks__ → __mocks__}/utils.js +4 -5
- package/extra/__tests__/eventsManager.test.js +38 -27
- package/extra/__tests__/inboxEventManager.js +79 -0
- package/extra/__tests__/storeEventManager.test.js +48 -28
- package/extra/__tests__/threadEventManager.test.js +49 -29
- package/extra/events.d.ts +4 -217
- package/extra/events.js +25 -213
- package/extra/files.d.ts +2 -2
- package/extra/files.js +2 -2
- package/extra/inbox.js +1 -2
- package/extra/index.d.ts +3 -3
- package/extra/index.js +9 -10
- package/extra/managers.d.ts +98 -0
- package/extra/managers.js +157 -0
- package/extra/subscriptions.d.ts +165 -0
- package/extra/subscriptions.js +51 -0
- package/extra/utils.js +4 -5
- package/index.d.ts +2 -2
- package/index.js +2 -1
- package/package.json +12 -13
- package/service/Connection.d.ts +21 -2
- package/service/Connection.js +27 -2
- package/service/CryptoApi.d.ts +1 -1
- package/service/CryptoApi.js +1 -1
- package/service/EventApi.d.ts +14 -9
- package/service/EventApi.js +35 -10
- package/service/InboxApi.d.ts +14 -13
- package/service/InboxApi.js +42 -17
- package/service/KvdbApi.d.ts +19 -11
- package/service/KvdbApi.js +51 -17
- package/service/StoreApi.d.ts +18 -15
- package/service/StoreApi.js +48 -20
- package/service/ThreadApi.d.ts +14 -13
- package/service/ThreadApi.js +44 -19
- package/service/index.d.ts +2 -1
- package/service/index.js +3 -1
- package/extra/__tests__/__mocks__/constants.d.ts +0 -36
- package/extra/__tests__/__mocks__/constants.js +0 -42
- package/extra/__tests__/__mocks__/mockContainerSubscriber.d.ts +0 -12
- package/extra/__tests__/__mocks__/mockContainerSubscriber.js +0 -25
- package/extra/__tests__/__mocks__/mockEventAPIs.d.ts +0 -30
- package/extra/__tests__/__mocks__/mockEventAPIs.js +0 -70
- package/extra/__tests__/inboxEventManager.test.js +0 -56
- /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
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
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
|
|
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
|
|
14
|
+
mockEventsManager = manager.getStoreEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
|
|
13
15
|
});
|
|
14
|
-
it(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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(
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
35
|
+
await mockEventsManager.unsubscribeFrom([subId]);
|
|
28
36
|
expect(mockEventsManager.listeners.size).toBe(0);
|
|
29
37
|
});
|
|
30
|
-
it(
|
|
38
|
+
it("should register multiple callbacks for channel", async () => {
|
|
31
39
|
const storeEventCb = jest.fn();
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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(
|
|
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 =
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
50
|
-
q.dispatchEvent(
|
|
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
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
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
|
|
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
|
|
14
|
+
mockEventsManager = manager.getThreadEventManager(new mockContainerSubscriber_1.MockContainerSubscriber(q));
|
|
13
15
|
});
|
|
14
|
-
it(
|
|
16
|
+
it("should create manager", async () => {
|
|
15
17
|
expect(mockEventsManager).toBeDefined();
|
|
16
18
|
expect(manager.dispatchers.length).toBe(1);
|
|
17
19
|
});
|
|
18
|
-
it(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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(
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
39
|
+
await mockEventsManager.unsubscribeFrom([subId]);
|
|
32
40
|
expect(mockEventsManager.listeners.size).toBe(0);
|
|
33
41
|
});
|
|
34
|
-
it(
|
|
42
|
+
it("should register multiple callbacks for channel", async () => {
|
|
35
43
|
const threadEventCb = jest.fn();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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(
|
|
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 =
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
54
|
-
q.dispatchEvent(
|
|
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
|
-
|
|
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:
|
|
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 {};
|