@protontech/drive-sdk 0.1.1 → 0.1.2
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/dist/internal/events/eventManager.d.ts +1 -0
- package/dist/internal/events/eventManager.js +9 -0
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/eventManager.test.js +53 -38
- package/dist/internal/events/eventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +4 -3
- package/dist/internal/events/index.js +38 -32
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/nodes/events.js +7 -7
- package/dist/internal/nodes/events.js.map +1 -1
- package/dist/internal/sharing/cache.d.ts +1 -0
- package/dist/internal/sharing/cache.js +9 -0
- package/dist/internal/sharing/cache.js.map +1 -1
- package/dist/internal/sharing/events.d.ts +1 -0
- package/dist/internal/sharing/events.js +28 -18
- package/dist/internal/sharing/events.js.map +1 -1
- package/dist/internal/sharing/events.test.js +98 -84
- package/dist/internal/sharing/events.test.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +1 -0
- package/dist/internal/upload/manager.d.ts +1 -1
- package/dist/internal/upload/manager.js +8 -4
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +7 -10
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.js +1 -1
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +1 -1
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/protonDriveClient.js +2 -2
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/transformers.d.ts +1 -1
- package/dist/transformers.js +1 -0
- package/dist/transformers.js.map +1 -1
- package/package.json +1 -1
- package/src/internal/events/eventManager.test.ts +61 -40
- package/src/internal/events/eventManager.ts +10 -0
- package/src/internal/events/index.ts +53 -35
- package/src/internal/nodes/events.ts +6 -7
- package/src/internal/sharing/cache.ts +9 -0
- package/src/internal/sharing/events.test.ts +104 -89
- package/src/internal/sharing/events.ts +33 -18
- package/src/internal/upload/interface.ts +1 -0
- package/src/internal/upload/manager.test.ts +7 -10
- package/src/internal/upload/manager.ts +7 -4
- package/src/internal/upload/streamUploader.test.ts +1 -1
- package/src/internal/upload/streamUploader.ts +1 -1
- package/src/protonDriveClient.ts +2 -2
- package/src/transformers.ts +2 -0
|
@@ -33,8 +33,11 @@ class EventManager {
|
|
|
33
33
|
this.logger = specializedEventManager.getLogger();
|
|
34
34
|
}
|
|
35
35
|
async start() {
|
|
36
|
+
this.logger.info(`Starting event manager with latestEventId: ${this.latestEventId}`);
|
|
36
37
|
if (this.latestEventId === undefined) {
|
|
37
38
|
this.latestEventId = await this.specializedEventManager.getLatestEventId();
|
|
39
|
+
this.scheduleNextPoll();
|
|
40
|
+
return;
|
|
38
41
|
}
|
|
39
42
|
this.processPromise = this.processEvents();
|
|
40
43
|
}
|
|
@@ -95,6 +98,12 @@ class EventManager {
|
|
|
95
98
|
if (listenerError) {
|
|
96
99
|
throw listenerError;
|
|
97
100
|
}
|
|
101
|
+
this.scheduleNextPoll();
|
|
102
|
+
}
|
|
103
|
+
scheduleNextPoll() {
|
|
104
|
+
if (this.timeoutHandle) {
|
|
105
|
+
clearTimeout(this.timeoutHandle);
|
|
106
|
+
}
|
|
98
107
|
this.timeoutHandle = setTimeout(() => {
|
|
99
108
|
this.processPromise = this.processEvents();
|
|
100
109
|
}, this.nextPollTimeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.ts"],"names":[],"mappings":";;;AAGA,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAI9C;;;;;;;;;;;;GAYG;AACH,MAAa,YAAY;IAST;IACA;IATJ,MAAM,CAAS;IACf,aAAa,CAAU;IACvB,aAAa,CAAiC;IAC9C,cAAc,CAAiB;IAC/B,SAAS,GAAkB,EAAE,CAAC;IAC9B,UAAU,GAAW,CAAC,CAAC;IAE/B,YACY,uBAAiD,EACjD,wBAAgC,EACxC,aAA4B;QAFpB,4BAAuB,GAAvB,uBAAuB,CAA0B;QACjD,6BAAwB,GAAxB,wBAAwB,CAAQ;QAGxC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,17 +7,14 @@ jest.useFakeTimers();
|
|
|
7
7
|
const POLLING_INTERVAL = 1;
|
|
8
8
|
describe('EventManager', () => {
|
|
9
9
|
let manager;
|
|
10
|
-
const getLatestEventIdMock = jest.fn();
|
|
11
|
-
const getEventsMock = jest.fn();
|
|
12
10
|
const listenerMock = jest.fn();
|
|
13
|
-
const mockLogger = (0, logger_1.getMockLogger)();
|
|
14
11
|
const subscriptions = [];
|
|
12
|
+
const mockEventManager = {
|
|
13
|
+
getLogger: () => (0, logger_1.getMockLogger)(),
|
|
14
|
+
getLatestEventId: jest.fn(),
|
|
15
|
+
getEvents: jest.fn(),
|
|
16
|
+
};
|
|
15
17
|
beforeEach(() => {
|
|
16
|
-
const mockEventManager = {
|
|
17
|
-
getLogger: () => mockLogger,
|
|
18
|
-
getLatestEventId: getLatestEventIdMock,
|
|
19
|
-
getEvents: getEventsMock,
|
|
20
|
-
};
|
|
21
18
|
manager = new eventManager_1.EventManager(mockEventManager, POLLING_INTERVAL, null);
|
|
22
19
|
const subscription = manager.addListener(listenerMock);
|
|
23
20
|
subscriptions.push(subscription);
|
|
@@ -31,7 +28,7 @@ describe('EventManager', () => {
|
|
|
31
28
|
jest.clearAllMocks();
|
|
32
29
|
});
|
|
33
30
|
it('should start polling when started', async () => {
|
|
34
|
-
|
|
31
|
+
mockEventManager.getLatestEventId.mockResolvedValue('EventId1');
|
|
35
32
|
const mockEvents = [
|
|
36
33
|
[
|
|
37
34
|
{
|
|
@@ -48,7 +45,7 @@ describe('EventManager', () => {
|
|
|
48
45
|
},
|
|
49
46
|
],
|
|
50
47
|
];
|
|
51
|
-
|
|
48
|
+
mockEventManager.getEvents
|
|
52
49
|
.mockImplementationOnce(async function* () {
|
|
53
50
|
yield* mockEvents[0];
|
|
54
51
|
})
|
|
@@ -56,18 +53,19 @@ describe('EventManager', () => {
|
|
|
56
53
|
yield* mockEvents[1];
|
|
57
54
|
})
|
|
58
55
|
.mockImplementationOnce(async function* () { });
|
|
59
|
-
expect(
|
|
60
|
-
expect(
|
|
56
|
+
expect(mockEventManager.getLatestEventId).toHaveBeenCalledTimes(0);
|
|
57
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(0);
|
|
61
58
|
expect(await manager.start()).toBeUndefined();
|
|
62
|
-
expect(getLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
63
|
-
expect(getEventsMock).toHaveBeenCalledWith('EventId1');
|
|
64
59
|
await jest.runOnlyPendingTimersAsync();
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
60
|
+
expect(mockEventManager.getLatestEventId).toHaveBeenCalledTimes(1);
|
|
61
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledWith('EventId1');
|
|
62
|
+
await jest.runOnlyPendingTimersAsync();
|
|
63
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(2);
|
|
64
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledWith('EventId2');
|
|
67
65
|
});
|
|
68
66
|
it('should stop polling when stopped', async () => {
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
68
|
+
mockEventManager.getEvents.mockImplementation(async function* () {
|
|
71
69
|
yield {
|
|
72
70
|
type: interface_1.DriveEventType.FastForward,
|
|
73
71
|
treeEventScopeId: 'volume1',
|
|
@@ -76,14 +74,14 @@ describe('EventManager', () => {
|
|
|
76
74
|
});
|
|
77
75
|
await manager.start();
|
|
78
76
|
await jest.runOnlyPendingTimersAsync();
|
|
79
|
-
const callsBeforeStop =
|
|
77
|
+
const callsBeforeStop = mockEventManager.getEvents.mock.calls.length;
|
|
80
78
|
await manager.stop();
|
|
81
79
|
await jest.runOnlyPendingTimersAsync();
|
|
82
80
|
// Should not have made additional calls after stopping
|
|
83
|
-
expect(
|
|
81
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(callsBeforeStop);
|
|
84
82
|
});
|
|
85
83
|
it('should notify all listeners when getting events', async () => {
|
|
86
|
-
|
|
84
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
87
85
|
const mockEvents = [
|
|
88
86
|
{
|
|
89
87
|
type: interface_1.DriveEventType.NodeCreated,
|
|
@@ -95,7 +93,7 @@ describe('EventManager', () => {
|
|
|
95
93
|
eventId: 'eventId2',
|
|
96
94
|
},
|
|
97
95
|
];
|
|
98
|
-
|
|
96
|
+
mockEventManager.getEvents
|
|
99
97
|
.mockImplementationOnce(async function* () {
|
|
100
98
|
yield* mockEvents;
|
|
101
99
|
})
|
|
@@ -106,16 +104,16 @@ describe('EventManager', () => {
|
|
|
106
104
|
expect(listenerMock).toHaveBeenNthCalledWith(1, mockEvents[0]);
|
|
107
105
|
});
|
|
108
106
|
it('should propagate unsubscription errors', async () => {
|
|
109
|
-
|
|
107
|
+
mockEventManager.getLatestEventId.mockImplementation(() => {
|
|
110
108
|
throw new interface_1.UnsubscribeFromEventsSourceError('Not found');
|
|
111
109
|
});
|
|
112
110
|
await expect(manager.start()).rejects.toThrow(interface_1.UnsubscribeFromEventsSourceError);
|
|
113
|
-
expect(
|
|
111
|
+
expect(mockEventManager.getLatestEventId).toHaveBeenCalledTimes(1);
|
|
114
112
|
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
115
|
-
expect(
|
|
113
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(0);
|
|
116
114
|
});
|
|
117
115
|
it('should continue processing multiple events', async () => {
|
|
118
|
-
|
|
116
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
119
117
|
const mockEvents = [
|
|
120
118
|
{
|
|
121
119
|
type: interface_1.DriveEventType.NodeCreated,
|
|
@@ -136,7 +134,7 @@ describe('EventManager', () => {
|
|
|
136
134
|
eventId: 'eventId3',
|
|
137
135
|
},
|
|
138
136
|
];
|
|
139
|
-
|
|
137
|
+
mockEventManager.getEvents
|
|
140
138
|
.mockImplementationOnce(async function* () {
|
|
141
139
|
yield* mockEvents;
|
|
142
140
|
})
|
|
@@ -148,7 +146,7 @@ describe('EventManager', () => {
|
|
|
148
146
|
expect(listenerMock).toHaveBeenCalledTimes(2);
|
|
149
147
|
expect(listenerMock).toHaveBeenNthCalledWith(1, mockEvents[0]);
|
|
150
148
|
expect(listenerMock).toHaveBeenNthCalledWith(2, mockEvents[1]);
|
|
151
|
-
|
|
149
|
+
mockEventManager.getEvents.mockImplementationOnce(async function* () {
|
|
152
150
|
yield* mockEvents;
|
|
153
151
|
});
|
|
154
152
|
await jest.runOnlyPendingTimersAsync();
|
|
@@ -157,9 +155,9 @@ describe('EventManager', () => {
|
|
|
157
155
|
expect(listenerMock).toHaveBeenNthCalledWith(2, mockEvents[1]);
|
|
158
156
|
});
|
|
159
157
|
it('should retry on error with exponential backoff', async () => {
|
|
160
|
-
|
|
158
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
161
159
|
let callCount = 0;
|
|
162
|
-
|
|
160
|
+
mockEventManager.getEvents.mockImplementation(async function* () {
|
|
163
161
|
callCount++;
|
|
164
162
|
if (callCount <= 3) {
|
|
165
163
|
throw new Error('Network error');
|
|
@@ -172,10 +170,11 @@ describe('EventManager', () => {
|
|
|
172
170
|
});
|
|
173
171
|
expect(manager['retryIndex']).toEqual(0);
|
|
174
172
|
expect(await manager.start()).toBeUndefined();
|
|
175
|
-
|
|
173
|
+
await jest.runOnlyPendingTimersAsync();
|
|
174
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(1);
|
|
176
175
|
expect(manager['retryIndex']).toEqual(1);
|
|
177
176
|
await jest.runOnlyPendingTimersAsync();
|
|
178
|
-
expect(
|
|
177
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(2);
|
|
179
178
|
expect(manager['retryIndex']).toEqual(2);
|
|
180
179
|
await jest.runOnlyPendingTimersAsync();
|
|
181
180
|
expect(manager['retryIndex']).toEqual(3);
|
|
@@ -186,8 +185,8 @@ describe('EventManager', () => {
|
|
|
186
185
|
expect(manager['retryIndex']).toEqual(0);
|
|
187
186
|
});
|
|
188
187
|
it('should stop polling when stopped immediately', async () => {
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
189
|
+
mockEventManager.getEvents.mockImplementation(async function* () {
|
|
191
190
|
yield {
|
|
192
191
|
type: interface_1.DriveEventType.FastForward,
|
|
193
192
|
treeEventScopeId: 'volume1',
|
|
@@ -195,20 +194,36 @@ describe('EventManager', () => {
|
|
|
195
194
|
};
|
|
196
195
|
});
|
|
197
196
|
expect(await manager.start()).toBeUndefined();
|
|
198
|
-
|
|
197
|
+
await jest.runOnlyPendingTimersAsync();
|
|
198
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(1);
|
|
199
199
|
await manager.stop();
|
|
200
200
|
await jest.runOnlyPendingTimersAsync();
|
|
201
201
|
// getEvents should have been called once during start, but not again after stop
|
|
202
|
-
expect(
|
|
202
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(1);
|
|
203
203
|
});
|
|
204
204
|
it('should handle empty event streams', async () => {
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
mockEventManager.getLatestEventId.mockResolvedValue('eventId1');
|
|
206
|
+
mockEventManager.getEvents.mockImplementation(async function* () {
|
|
207
207
|
// Empty generator - no events
|
|
208
208
|
});
|
|
209
209
|
await manager.start();
|
|
210
210
|
await jest.runOnlyPendingTimersAsync();
|
|
211
211
|
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
212
212
|
});
|
|
213
|
+
it('should poll right away after start if latestEventId is passed', async () => {
|
|
214
|
+
manager = new eventManager_1.EventManager(mockEventManager, POLLING_INTERVAL, 'eventId1');
|
|
215
|
+
await manager.start();
|
|
216
|
+
// Right after the start it is called.
|
|
217
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(1);
|
|
218
|
+
});
|
|
219
|
+
it('should not poll right away after start if latestEventId is not passed', async () => {
|
|
220
|
+
manager = new eventManager_1.EventManager(mockEventManager, POLLING_INTERVAL, null);
|
|
221
|
+
await manager.start();
|
|
222
|
+
// Right after the start it is not called.
|
|
223
|
+
expect(mockEventManager.getEvents).not.toHaveBeenCalled();
|
|
224
|
+
// But it is scheduled to be called after the polling interval.
|
|
225
|
+
await jest.runOnlyPendingTimersAsync();
|
|
226
|
+
expect(mockEventManager.getEvents).toHaveBeenCalledTimes(1);
|
|
227
|
+
});
|
|
213
228
|
});
|
|
214
229
|
//# sourceMappingURL=eventManager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.test.ts"],"names":[],"mappings":";;AAAA,+CAAmD;AACnD,iDAA8C;AAC9C,2CAA8G;AAE9G,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAiC,CAAC;IAEtC,MAAM,
|
|
1
|
+
{"version":3,"file":"eventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,16 +15,17 @@ export declare class DriveEventsService {
|
|
|
15
15
|
private cacheEventListeners;
|
|
16
16
|
private latestEventIdProvider?;
|
|
17
17
|
private apiService;
|
|
18
|
-
private
|
|
18
|
+
private coreEventManager?;
|
|
19
19
|
private volumeEventManagers;
|
|
20
20
|
private logger;
|
|
21
21
|
constructor(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, shareManagement: SharesManager, cacheEventListeners?: DriveListener[], latestEventIdProvider?: LatestEventIdProvider | undefined);
|
|
22
|
+
subscribeToCoreEvents(callback: DriveListener): Promise<EventSubscription>;
|
|
23
|
+
private createCoreEventManager;
|
|
22
24
|
/**
|
|
23
25
|
* Subscribe to drive events. The treeEventScopeId can be obtained from a node.
|
|
24
26
|
*/
|
|
25
27
|
subscribeToTreeEvents(treeEventScopeId: string, callback: DriveListener): Promise<EventSubscription>;
|
|
26
|
-
subscribeToCoreEvents(callback: DriveListener): Promise<EventSubscription>;
|
|
27
|
-
private sendNumberOfVolumeSubscriptionsToTelemetry;
|
|
28
28
|
private createVolumeEventManager;
|
|
29
29
|
private getDefaultVolumePollingInterval;
|
|
30
|
+
private sendNumberOfVolumeSubscriptionsToTelemetry;
|
|
30
31
|
}
|
|
@@ -21,7 +21,7 @@ class DriveEventsService {
|
|
|
21
21
|
cacheEventListeners;
|
|
22
22
|
latestEventIdProvider;
|
|
23
23
|
apiService;
|
|
24
|
-
|
|
24
|
+
coreEventManager;
|
|
25
25
|
volumeEventManagers;
|
|
26
26
|
logger;
|
|
27
27
|
constructor(telemetry, apiService, shareManagement, cacheEventListeners = [], latestEventIdProvider) {
|
|
@@ -34,68 +34,74 @@ class DriveEventsService {
|
|
|
34
34
|
this.apiService = new apiService_1.EventsAPIService(apiService);
|
|
35
35
|
this.volumeEventManagers = {};
|
|
36
36
|
}
|
|
37
|
+
// FIXME: Allow to pass own core events manager from the public interface.
|
|
38
|
+
async subscribeToCoreEvents(callback) {
|
|
39
|
+
let manager = this.coreEventManager;
|
|
40
|
+
const started = !!manager;
|
|
41
|
+
if (manager === undefined) {
|
|
42
|
+
manager = await this.createCoreEventManager();
|
|
43
|
+
this.coreEventManager = manager;
|
|
44
|
+
}
|
|
45
|
+
const eventSubscription = manager.addListener(callback);
|
|
46
|
+
if (!started) {
|
|
47
|
+
await manager.start();
|
|
48
|
+
}
|
|
49
|
+
return eventSubscription;
|
|
50
|
+
}
|
|
51
|
+
async createCoreEventManager() {
|
|
52
|
+
if (!this.latestEventIdProvider) {
|
|
53
|
+
throw new Error('Cannot subscribe to events without passing a latestEventIdProvider in ProtonDriveClient initialization');
|
|
54
|
+
}
|
|
55
|
+
const coreEventManager = new coreEventManager_1.CoreEventManager(this.logger, this.apiService);
|
|
56
|
+
const latestEventId = this.latestEventIdProvider.getLatestEventId('core') ?? null;
|
|
57
|
+
const eventManager = new eventManager_1.EventManager(coreEventManager, CORE_POLLING_INTERVAL, latestEventId);
|
|
58
|
+
for (const listener of this.cacheEventListeners) {
|
|
59
|
+
eventManager.addListener(listener);
|
|
60
|
+
}
|
|
61
|
+
return eventManager;
|
|
62
|
+
}
|
|
37
63
|
/**
|
|
38
64
|
* Subscribe to drive events. The treeEventScopeId can be obtained from a node.
|
|
39
65
|
*/
|
|
40
66
|
async subscribeToTreeEvents(treeEventScopeId, callback) {
|
|
41
67
|
const volumeId = treeEventScopeId;
|
|
42
|
-
this.logger.debug(`Creating volume event manager for volume ${volumeId}`);
|
|
43
68
|
let manager = this.volumeEventManagers[volumeId];
|
|
44
|
-
|
|
69
|
+
const started = !!manager;
|
|
45
70
|
if (manager === undefined) {
|
|
46
71
|
manager = await this.createVolumeEventManager(volumeId);
|
|
47
72
|
this.volumeEventManagers[volumeId] = manager;
|
|
48
|
-
started = false;
|
|
49
|
-
this.sendNumberOfVolumeSubscriptionsToTelemetry();
|
|
50
73
|
}
|
|
51
74
|
const eventSubscription = manager.addListener(callback);
|
|
52
75
|
if (!started) {
|
|
53
76
|
await manager.start();
|
|
77
|
+
this.sendNumberOfVolumeSubscriptionsToTelemetry();
|
|
54
78
|
}
|
|
55
79
|
return eventSubscription;
|
|
56
80
|
}
|
|
57
|
-
// FIXME: Allow to pass own core events manager from the public interface.
|
|
58
|
-
async subscribeToCoreEvents(callback) {
|
|
59
|
-
if (this.latestEventIdProvider === null || this.latestEventIdProvider === undefined) {
|
|
60
|
-
throw new Error('Cannot subscribe to events without passing a latestEventIdProvider in ProtonDriveClient initialization');
|
|
61
|
-
}
|
|
62
|
-
if (this.coreEvents === undefined) {
|
|
63
|
-
const coreEventManager = new coreEventManager_1.CoreEventManager(this.logger, this.apiService);
|
|
64
|
-
const latestEventId = this.latestEventIdProvider.getLatestEventId('core') ?? null;
|
|
65
|
-
this.coreEvents = new eventManager_1.EventManager(coreEventManager, CORE_POLLING_INTERVAL, latestEventId);
|
|
66
|
-
for (const listener of this.cacheEventListeners) {
|
|
67
|
-
this.coreEvents.addListener(listener);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
const eventSubscription = this.coreEvents.addListener(callback);
|
|
71
|
-
await this.coreEvents.start();
|
|
72
|
-
return eventSubscription;
|
|
73
|
-
}
|
|
74
|
-
sendNumberOfVolumeSubscriptionsToTelemetry() {
|
|
75
|
-
this.telemetry.logEvent({
|
|
76
|
-
eventName: 'volumeEventsSubscriptionsChanged',
|
|
77
|
-
numberOfVolumeSubscriptions: Object.keys(this.volumeEventManagers).length,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
81
|
async createVolumeEventManager(volumeId) {
|
|
81
|
-
if (this.latestEventIdProvider
|
|
82
|
+
if (!this.latestEventIdProvider) {
|
|
82
83
|
throw new Error('Cannot subscribe to events without passing a latestEventIdProvider in ProtonDriveClient initialization');
|
|
83
84
|
}
|
|
85
|
+
this.logger.debug(`Creating volume event manager for volume ${volumeId}`);
|
|
86
|
+
const volumeEventManager = new volumeEventManager_1.VolumeEventManager(this.logger, this.apiService, volumeId);
|
|
84
87
|
const isOwnVolume = await this.shareManagement.isOwnVolume(volumeId);
|
|
85
88
|
const pollingInterval = this.getDefaultVolumePollingInterval(isOwnVolume);
|
|
86
|
-
const volumeEventManager = new volumeEventManager_1.VolumeEventManager(this.logger, this.apiService, volumeId);
|
|
87
89
|
const latestEventId = this.latestEventIdProvider.getLatestEventId(volumeId);
|
|
88
90
|
const eventManager = new eventManager_1.EventManager(volumeEventManager, pollingInterval, latestEventId);
|
|
89
91
|
for (const listener of this.cacheEventListeners) {
|
|
90
92
|
eventManager.addListener(listener);
|
|
91
93
|
}
|
|
92
|
-
await eventManager.start();
|
|
93
|
-
this.volumeEventManagers[volumeId] = eventManager;
|
|
94
94
|
return eventManager;
|
|
95
95
|
}
|
|
96
96
|
getDefaultVolumePollingInterval(isOwnVolume) {
|
|
97
97
|
return isOwnVolume ? OWN_VOLUME_POLLING_INTERVAL : OTHER_VOLUME_POLLING_INTERVAL;
|
|
98
98
|
}
|
|
99
|
+
sendNumberOfVolumeSubscriptionsToTelemetry() {
|
|
100
|
+
this.telemetry.logEvent({
|
|
101
|
+
eventName: 'volumeEventsSubscriptionsChanged',
|
|
102
|
+
numberOfVolumeSubscriptions: Object.keys(this.volumeEventManagers).length,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
99
105
|
}
|
|
100
106
|
exports.DriveEventsService = DriveEventsService;
|
|
101
107
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/events/index.ts"],"names":[],"mappings":";;;AAGA,6CAAgD;AAChD,yDAAsD;AACtD,6DAA0D;AAC1D,iDAA8C;AAI9C,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AAEvB,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;GAIG;AACH,MAAa,kBAAkB;IAOf;IAEA;IACA;IACA;IAVJ,UAAU,CAAmB;IAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,13 @@ class NodesEventsHandler {
|
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
if (event.type === events_1.DriveEventType.NodeUpdated) {
|
|
44
|
-
|
|
44
|
+
let node;
|
|
45
|
+
try {
|
|
46
|
+
node = await this.cache.getNode(event.nodeUid);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
45
51
|
node.isStale = true;
|
|
46
52
|
node.parentUid = event.parentNodeUid;
|
|
47
53
|
node.isShared = event.isShared;
|
|
@@ -55,12 +61,6 @@ class NodesEventsHandler {
|
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
catch (error) {
|
|
58
|
-
if (error instanceof Error) {
|
|
59
|
-
// FIXME throw CacheMissException error and catch it
|
|
60
|
-
if (error.message === 'Entity not found') {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
64
|
this.logger.error(`Failed to update node cache for event: ${event.eventId}`, error);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/nodes/events.ts"],"names":[],"mappings":";;;AACA,sCAAuD;AAGvD;;;;;GAKG;AACH,MAAa,kBAAkB;IAEf;IACA;IAFZ,YACY,MAAc,EACd,KAAiB;QADjB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAY;IAC1B,CAAC;IAEJ,KAAK,CAAC,uBAAuB,CAAC,KAAiB;QAC3C,IAAI,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACtD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,6DAA6D;gBAC7D,6CAA6C;gBAE7C,yDAAyD;gBACzD,yDAAyD;gBACzD,wDAAwD;gBACxD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/nodes/events.ts"],"names":[],"mappings":";;;AACA,sCAAuD;AAGvD;;;;;GAKG;AACH,MAAa,kBAAkB;IAEf;IACA;IAFZ,YACY,MAAc,EACd,KAAiB;QADjB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAY;IAC1B,CAAC;IAEJ,KAAK,CAAC,uBAAuB,CAAC,KAAiB;QAC3C,IAAI,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACtD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,6DAA6D;gBAC7D,6CAA6C;gBAE7C,yDAAyD;gBACzD,yDAAyD;gBACzD,wDAAwD;gBACxD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC;gBACT,IAAI,CAAC;oBACD,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;gBACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC/B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC/B,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;CACJ;AArDD,gDAqDC"}
|
|
@@ -14,6 +14,7 @@ export declare class SharingCache {
|
|
|
14
14
|
private cache;
|
|
15
15
|
constructor(driveCache: ProtonDriveEntitiesCache);
|
|
16
16
|
getSharedByMeNodeUids(): Promise<string[]>;
|
|
17
|
+
hasSharedByMeNodeUidsLoaded(): Promise<boolean>;
|
|
17
18
|
addSharedByMeNodeUid(nodeUid: string): Promise<void>;
|
|
18
19
|
removeSharedByMeNodeUid(nodeUid: string): Promise<void>;
|
|
19
20
|
setSharedByMeNodeUids(nodeUids: string[] | undefined): Promise<void>;
|
|
@@ -22,6 +22,15 @@ class SharingCache {
|
|
|
22
22
|
async getSharedByMeNodeUids() {
|
|
23
23
|
return this.getNodeUids(interface_1.SharingType.SharedByMe);
|
|
24
24
|
}
|
|
25
|
+
async hasSharedByMeNodeUidsLoaded() {
|
|
26
|
+
try {
|
|
27
|
+
await this.getNodeUids(interface_1.SharingType.SharedByMe);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
25
34
|
async addSharedByMeNodeUid(nodeUid) {
|
|
26
35
|
return this.addNodeUid(interface_1.SharingType.SharedByMe, nodeUid);
|
|
27
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/internal/sharing/cache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/internal/sharing/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,28 +31,38 @@ class SharingEventHandler {
|
|
|
31
31
|
await this.cache.setSharedWithMeNodeUids(undefined);
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
await this.handleSharedByMeNodeUidsLoaded(event);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
this.logger.error(`Skipping shared by me node cache update`, error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async handleSharedByMeNodeUidsLoaded(event) {
|
|
41
|
+
if (event.type === events_1.DriveEventType.TreeRefresh || event.type === events_1.DriveEventType.TreeRemove) {
|
|
42
|
+
await this.cache.setSharedWithMeNodeUids(undefined);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (![events_1.DriveEventType.NodeCreated, events_1.DriveEventType.NodeUpdated, events_1.DriveEventType.NodeDeleted].includes(event.type)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const hasSharedByMeLoaded = await this.cache.hasSharedByMeNodeUidsLoaded();
|
|
49
|
+
if (!hasSharedByMeLoaded) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const isOwnVolume = await this.shares.isOwnVolume(event.treeEventScopeId);
|
|
53
|
+
if (!isOwnVolume) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (event.type === events_1.DriveEventType.NodeCreated || event.type == events_1.DriveEventType.NodeUpdated) {
|
|
57
|
+
if (event.isShared && !event.isTrashed) {
|
|
58
|
+
await this.cache.addSharedByMeNodeUid(event.nodeUid);
|
|
45
59
|
}
|
|
46
|
-
|
|
60
|
+
else {
|
|
47
61
|
await this.cache.removeSharedByMeNodeUid(event.nodeUid);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (event.type === events_1.DriveEventType.TreeRefresh || event.type === events_1.DriveEventType.TreeRemove) {
|
|
51
|
-
await this.cache.setSharedWithMeNodeUids(undefined);
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
|
-
|
|
55
|
-
this.
|
|
64
|
+
if (event.type === events_1.DriveEventType.NodeDeleted) {
|
|
65
|
+
await this.cache.removeSharedByMeNodeUid(event.nodeUid);
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/sharing/events.ts"],"names":[],"mappings":";;;AACA,sCAAuD;AAIvD,MAAa,mBAAmB;IAEhB;IACA;IACA;IAHZ,YACY,MAAc,EACd,KAAmB,EACnB,MAAqB;QAFrB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QACnB,WAAM,GAAN,MAAM,CAAe;IAC9B,CAAC;IAEJ;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAiB;QACpC,IAAI,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,mBAAmB,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/sharing/events.ts"],"names":[],"mappings":";;;AACA,sCAAuD;AAIvD,MAAa,mBAAmB;IAEhB;IACA;IACA;IAHZ,YACY,MAAc,EACd,KAAmB,EACnB,MAAqB;QAFrB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QACnB,WAAM,GAAN,MAAM,CAAe;IAC9B,CAAC;IAEJ;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAiB;QACpC,IAAI,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,mBAAmB,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,MAAM,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAAC,KAAiB;QAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,UAAU,EAAE,CAAC;YACxF,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,CAAC,uBAAc,CAAC,WAAW,EAAE,uBAAc,CAAC,WAAW,EAAE,uBAAc,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7G,OAAO;QACX,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;QAC3E,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,IAAI,uBAAc,CAAC,WAAW,EAAE,CAAC;YACxF,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;CACJ;AAhED,kDAgEC"}
|