@checkfirst/nestjs-outlook 8.0.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/constants.d.ts +2 -0
  2. package/dist/constants.js +3 -1
  3. package/dist/constants.js.map +1 -1
  4. package/dist/controllers/calendar.controller.js +3 -0
  5. package/dist/controllers/calendar.controller.js.map +1 -1
  6. package/dist/controllers/email.controller.js +2 -0
  7. package/dist/controllers/email.controller.js.map +1 -1
  8. package/dist/guards/webhook-client-state.guard.d.ts +8 -0
  9. package/dist/guards/webhook-client-state.guard.js +75 -0
  10. package/dist/guards/webhook-client-state.guard.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.js +3 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/interfaces/config/outlook-config.interface.d.ts +10 -0
  15. package/dist/interfaces/state/redis-like.interface.d.ts +13 -0
  16. package/dist/interfaces/state/redis-like.interface.js +3 -0
  17. package/dist/interfaces/state/redis-like.interface.js.map +1 -0
  18. package/dist/microsoft-outlook.module.js +66 -0
  19. package/dist/microsoft-outlook.module.js.map +1 -1
  20. package/dist/repositories/outlook-webhook-subscription.repository.d.ts +1 -0
  21. package/dist/repositories/outlook-webhook-subscription.repository.js +5 -0
  22. package/dist/repositories/outlook-webhook-subscription.repository.js.map +1 -1
  23. package/dist/services/auth/microsoft-auth.service.d.ts +5 -1
  24. package/dist/services/auth/microsoft-auth.service.js +13 -4
  25. package/dist/services/auth/microsoft-auth.service.js.map +1 -1
  26. package/dist/services/calendar/calendar.service.d.ts +1 -1
  27. package/dist/services/calendar/calendar.service.js +4 -4
  28. package/dist/services/calendar/calendar.service.js.map +1 -1
  29. package/dist/services/email/email.service.js +2 -1
  30. package/dist/services/email/email.service.js.map +1 -1
  31. package/dist/services/shared/delta-sync.service.d.ts +6 -1
  32. package/dist/services/shared/delta-sync.service.js +121 -110
  33. package/dist/services/shared/delta-sync.service.js.map +1 -1
  34. package/dist/services/shared/graph-rate-limiter.service.d.ts +15 -17
  35. package/dist/services/shared/graph-rate-limiter.service.js +104 -148
  36. package/dist/services/shared/graph-rate-limiter.service.js.map +1 -1
  37. package/dist/services/shared/outlook-lock.store.d.ts +37 -0
  38. package/dist/services/shared/outlook-lock.store.js +134 -0
  39. package/dist/services/shared/outlook-lock.store.js.map +1 -0
  40. package/dist/services/shared/outlook-rate-limit.store.d.ts +59 -0
  41. package/dist/services/shared/outlook-rate-limit.store.js +235 -0
  42. package/dist/services/shared/outlook-rate-limit.store.js.map +1 -0
  43. package/dist/services/subscription/microsoft-subscription.service.d.ts +12 -0
  44. package/dist/services/subscription/microsoft-subscription.service.js +85 -0
  45. package/dist/services/subscription/microsoft-subscription.service.js.map +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/dist/utils/outlook-api-executor.util.js +3 -3
  48. package/dist/utils/outlook-api-executor.util.js.map +1 -1
  49. package/package.json +3 -1
@@ -28,6 +28,11 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
28
28
  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
29
29
  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
30
30
  };
31
+ var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
32
+ var i, p;
33
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
34
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
35
+ };
31
36
  var DeltaSyncService_1;
32
37
  Object.defineProperty(exports, "__esModule", { value: true });
33
38
  exports.DeltaSyncService = exports.DeltaSyncError = void 0;
@@ -249,129 +254,135 @@ let DeltaSyncService = DeltaSyncService_1 = class DeltaSyncService {
249
254
  return false;
250
255
  }
251
256
  streamDeltaChanges(client_1, requestUrl_1, externalUserId_1) {
252
- return __asyncGenerator(this, arguments, function* streamDeltaChanges_1(client, requestUrl, externalUserId, forceReset = false, dateRange, saveDeltaLink = true) {
253
- var _a, e_2, _b, _c, _d, e_3, _e, _f;
257
+ return __asyncGenerator(this, arguments, function* streamDeltaChanges_1(client, requestUrl, externalUserId, forceReset = false, dateRange, saveDeltaLink = true, skipCursorAdvanceOnEmpty = false) {
254
258
  const internalUserId = yield __await(this.userIdConverter.externalToInternal(externalUserId));
255
- let startLink = yield __await(this.deltaLinkRepository.getDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR));
256
- this.logger.log(`[streamDeltaChanges] Starting stream for user ${internalUserId}, startLink: ${startLink ? 'exists' : 'none'}, forceReset: ${forceReset}`);
257
- if (forceReset && startLink) {
258
- this.logger.log(`[streamDeltaChanges] Force reset requested, deleting existing delta link for user ${internalUserId}`);
259
- yield __await(this.deltaLinkRepository.deleteDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR));
260
- startLink = null;
259
+ const { startUrl, usedExistingCursor } = yield __await(this.resolveSyncStart(internalUserId, requestUrl, forceReset, dateRange));
260
+ this.logger.log(`[streamDeltaChanges] Starting stream for user ${internalUserId}, startLink: ${usedExistingCursor ? 'exists' : 'none'}, forceReset: ${forceReset}, skipCursorAdvanceOnEmpty: ${skipCursorAdvanceOnEmpty}`);
261
+ try {
262
+ const { finalDeltaLink, totalItemsProcessed, pageCount } = yield __await(yield* __asyncDelegator(__asyncValues(this.streamSortedPages(client, startUrl, internalUserId, externalUserId, { isRecovery: false }))));
263
+ yield __await(this.persistDeltaLinkDecision({
264
+ finalDeltaLink,
265
+ saveDeltaLink,
266
+ skipCursorAdvanceOnEmpty,
267
+ usedExistingCursor,
268
+ totalItemsProcessed,
269
+ pageCount,
270
+ internalUserId,
271
+ externalUserId,
272
+ }));
273
+ return yield __await(finalDeltaLink);
261
274
  }
262
- let urlToUse;
263
- let finalDeltaLink = null;
264
- if (!startLink) {
265
- this.logger.log(`[streamDeltaChanges] No delta link found, initializing from current point for user ${internalUserId}`);
266
- if (dateRange) {
267
- const { startDate, endDate } = dateRange;
268
- urlToUse = `${requestUrl}?startDateTime=${startDate.toISOString()}&endDateTime=${endDate.toISOString()}`;
269
- this.logger.log(`[streamDeltaChanges] Using date range: ${startDate.toISOString()} to ${endDate.toISOString()}`);
270
- }
271
- else {
272
- urlToUse = requestUrl;
275
+ catch (error) {
276
+ if (this.is410Error(error)) {
277
+ return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(this.recoverFromExpiredCursor(client, requestUrl, externalUserId, internalUserId, dateRange, saveDeltaLink)))));
273
278
  }
279
+ throw error;
274
280
  }
275
- else {
276
- this.logger.log(`[streamDeltaChanges] Using existing delta link for incremental sync for user ${internalUserId}`);
277
- urlToUse = startLink;
278
- }
281
+ });
282
+ }
283
+ buildInitialUrl(requestUrl, dateRange) {
284
+ if (!dateRange) {
285
+ return requestUrl;
286
+ }
287
+ const { startDate, endDate } = dateRange;
288
+ return `${requestUrl}?startDateTime=${startDate.toISOString()}&endDateTime=${endDate.toISOString()}`;
289
+ }
290
+ async resolveSyncStart(internalUserId, requestUrl, forceReset, dateRange) {
291
+ let startLink = await this.deltaLinkRepository.getDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR);
292
+ if (forceReset && startLink) {
293
+ this.logger.log(`[streamDeltaChanges] Force reset requested, deleting existing delta link for user ${internalUserId}`);
294
+ await this.deltaLinkRepository.deleteDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR);
295
+ startLink = null;
296
+ }
297
+ if (startLink) {
298
+ this.logger.log(`[streamDeltaChanges] Using existing delta link for incremental sync for user ${internalUserId}`);
299
+ return { startUrl: startLink, usedExistingCursor: true };
300
+ }
301
+ this.logger.log(`[streamDeltaChanges] No delta link found, initializing from current point for user ${internalUserId}`);
302
+ if (dateRange) {
303
+ this.logger.log(`[streamDeltaChanges] Using date range: ${dateRange.startDate.toISOString()} to ${dateRange.endDate.toISOString()}`);
304
+ }
305
+ return { startUrl: this.buildInitialUrl(requestUrl, dateRange), usedExistingCursor: false };
306
+ }
307
+ streamSortedPages(client, startUrl, internalUserId, externalUserId, opts) {
308
+ return __asyncGenerator(this, arguments, function* streamSortedPages_1() {
309
+ var _a, e_2, _b, _c;
310
+ const recoveryTag = opts.isRecovery ? ' [RECOVERY]' : '';
279
311
  let pageCount = 0;
280
312
  let totalItemsProcessed = 0;
313
+ let finalDeltaLink = null;
281
314
  try {
282
- try {
283
- for (var _g = true, _h = __asyncValues(this.fetchDeltaPagesCore(client, urlToUse, internalUserId)), _j; _j = yield __await(_h.next()), _a = _j.done, !_a; _g = true) {
284
- _c = _j.value;
285
- _g = false;
286
- const page = _c;
287
- pageCount++;
288
- const sortedBatch = this.sortDeltaItems(page.items);
289
- totalItemsProcessed += sortedBatch.length;
290
- this.logger.log(`[streamDeltaChanges] Yielding page ${pageCount} with ${sortedBatch.length} sorted items for user ${internalUserId}`);
291
- this.eventEmitter.emit('delta-sync.page-processed', {
292
- userId: externalUserId,
293
- pageNumber: pageCount,
294
- itemsInPage: sortedBatch.length,
295
- totalItemsSoFar: totalItemsProcessed,
296
- isLastPage: page.isLastPage,
297
- timestamp: new Date(),
298
- });
299
- yield yield __await(sortedBatch);
300
- if (page.isLastPage && page.deltaLink) {
301
- finalDeltaLink = page.deltaLink;
302
- }
315
+ for (var _d = true, _e = __asyncValues(this.fetchDeltaPagesCore(client, startUrl, internalUserId)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {
316
+ _c = _f.value;
317
+ _d = false;
318
+ const page = _c;
319
+ pageCount++;
320
+ const sortedBatch = this.sortDeltaItems(page.items);
321
+ totalItemsProcessed += sortedBatch.length;
322
+ this.logger.log(`[streamDeltaChanges]${recoveryTag} Yielding page ${pageCount} with ${sortedBatch.length} sorted items for user ${internalUserId}`);
323
+ const progressPayload = {
324
+ userId: externalUserId,
325
+ pageNumber: pageCount,
326
+ itemsInPage: sortedBatch.length,
327
+ totalItemsSoFar: totalItemsProcessed,
328
+ isLastPage: page.isLastPage,
329
+ timestamp: new Date(),
330
+ };
331
+ if (opts.isRecovery) {
332
+ progressPayload.isRecovery = true;
303
333
  }
304
- }
305
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
306
- finally {
307
- try {
308
- if (!_g && !_a && (_b = _h.return)) yield __await(_b.call(_h));
334
+ this.eventEmitter.emit('delta-sync.page-processed', progressPayload);
335
+ yield yield __await(sortedBatch);
336
+ if (page.isLastPage && page.deltaLink) {
337
+ finalDeltaLink = page.deltaLink;
309
338
  }
310
- finally { if (e_2) throw e_2.error; }
311
- }
312
- if (finalDeltaLink && saveDeltaLink) {
313
- yield __await(this.saveDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR, finalDeltaLink));
314
- this.logger.log(`[streamDeltaChanges] Saved delta link after streaming ${pageCount} pages for user ${internalUserId}`);
315
339
  }
316
- else if (finalDeltaLink && !saveDeltaLink) {
317
- this.logger.log(`[streamDeltaChanges] Delta link discarded (saveDeltaLink=false) after streaming ${pageCount} pages for user ${internalUserId}`);
318
- }
319
- else {
320
- this.logger.warn(`[streamDeltaChanges] No delta link received after streaming ${pageCount} pages for user ${internalUserId}`);
321
- }
322
- return yield __await(finalDeltaLink);
323
340
  }
324
- catch (error) {
325
- if (this.is410Error(error)) {
326
- this.logger.warn(`[streamDeltaChanges] Delta token expired (410) for user ${externalUserId}, ` +
327
- `deleting expired token and reinitializing with full sync stream`);
328
- yield __await(this.deltaLinkRepository.deleteDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR));
329
- this.logger.log(`[streamDeltaChanges] Restarting stream with full sync after token expiration for user ${externalUserId}`);
330
- const freshUrl = dateRange
331
- ? `${requestUrl}?startDateTime=${dateRange.startDate.toISOString()}&endDateTime=${dateRange.endDate.toISOString()}`
332
- : requestUrl;
333
- let recoveryPageCount = 0;
334
- let recoveryDeltaLink = null;
335
- let recoveryTotalItems = 0;
336
- try {
337
- for (var _k = true, _l = __asyncValues(this.fetchDeltaPagesCore(client, freshUrl, internalUserId)), _m; _m = yield __await(_l.next()), _d = _m.done, !_d; _k = true) {
338
- _f = _m.value;
339
- _k = false;
340
- const page = _f;
341
- recoveryPageCount++;
342
- const sortedBatch = this.sortDeltaItems(page.items);
343
- recoveryTotalItems += sortedBatch.length;
344
- this.logger.log(`[streamDeltaChanges] [RECOVERY] Yielding page ${recoveryPageCount} with ${sortedBatch.length} sorted items for user ${internalUserId}`);
345
- this.eventEmitter.emit('delta-sync.page-processed', {
346
- userId: externalUserId,
347
- pageNumber: recoveryPageCount,
348
- itemsInPage: sortedBatch.length,
349
- totalItemsSoFar: recoveryTotalItems,
350
- isLastPage: page.isLastPage,
351
- isRecovery: true,
352
- timestamp: new Date(),
353
- });
354
- yield yield __await(sortedBatch);
355
- if (page.isLastPage && page.deltaLink) {
356
- recoveryDeltaLink = page.deltaLink;
357
- }
358
- }
359
- }
360
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
361
- finally {
362
- try {
363
- if (!_k && !_d && (_e = _l.return)) yield __await(_e.call(_l));
364
- }
365
- finally { if (e_3) throw e_3.error; }
366
- }
367
- if (recoveryDeltaLink && saveDeltaLink) {
368
- yield __await(this.saveDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR, recoveryDeltaLink));
369
- this.logger.log(`[streamDeltaChanges] [RECOVERY] Saved delta link after streaming ${recoveryPageCount} pages for user ${internalUserId}`);
370
- }
371
- return yield __await(recoveryDeltaLink);
341
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
342
+ finally {
343
+ try {
344
+ if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
372
345
  }
373
- throw error;
346
+ finally { if (e_2) throw e_2.error; }
347
+ }
348
+ return yield __await({ finalDeltaLink, totalItemsProcessed, pageCount });
349
+ });
350
+ }
351
+ async persistDeltaLinkDecision(params) {
352
+ const { finalDeltaLink, saveDeltaLink, skipCursorAdvanceOnEmpty, usedExistingCursor, totalItemsProcessed, pageCount, internalUserId, } = params;
353
+ const shouldSkipCursorAdvance = skipCursorAdvanceOnEmpty &&
354
+ usedExistingCursor &&
355
+ totalItemsProcessed === 0;
356
+ if (finalDeltaLink && saveDeltaLink && !shouldSkipCursorAdvance) {
357
+ await this.saveDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR, finalDeltaLink);
358
+ this.logger.log(`[streamDeltaChanges] Saved delta link after streaming ${pageCount} pages for user ${internalUserId}`);
359
+ return;
360
+ }
361
+ if (shouldSkipCursorAdvance) {
362
+ this.logger.warn(`[streamDeltaChanges] Empty delta result on existing cursor — KEEPING old cursor ` +
363
+ `(skipCursorAdvanceOnEmpty=true) for user ${internalUserId}. ` +
364
+ `Replication-lag protection: next webhook/reconciliation will re-query the same watermark.`);
365
+ return;
366
+ }
367
+ if (finalDeltaLink && !saveDeltaLink) {
368
+ this.logger.log(`[streamDeltaChanges] Delta link discarded (saveDeltaLink=false) after streaming ${pageCount} pages for user ${internalUserId}`);
369
+ return;
370
+ }
371
+ this.logger.warn(`[streamDeltaChanges] No delta link received after streaming ${pageCount} pages for user ${internalUserId}`);
372
+ }
373
+ recoverFromExpiredCursor(client, requestUrl, externalUserId, internalUserId, dateRange, saveDeltaLink) {
374
+ return __asyncGenerator(this, arguments, function* recoverFromExpiredCursor_1() {
375
+ this.logger.warn(`[streamDeltaChanges] Delta token expired (410) for user ${externalUserId}, ` +
376
+ `deleting expired token and reinitializing with full sync stream`);
377
+ yield __await(this.deltaLinkRepository.deleteDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR));
378
+ this.logger.log(`[streamDeltaChanges] Restarting stream with full sync after token expiration for user ${externalUserId}`);
379
+ const freshUrl = this.buildInitialUrl(requestUrl, dateRange);
380
+ const { finalDeltaLink: recoveryDeltaLink, pageCount: recoveryPageCount } = yield __await(yield* __asyncDelegator(__asyncValues(this.streamSortedPages(client, freshUrl, internalUserId, externalUserId, { isRecovery: true }))));
381
+ if (recoveryDeltaLink && saveDeltaLink) {
382
+ yield __await(this.saveDeltaLink(internalUserId, resource_type_enum_1.ResourceType.CALENDAR, recoveryDeltaLink));
383
+ this.logger.log(`[streamDeltaChanges] [RECOVERY] Saved delta link after streaming ${recoveryPageCount} pages for user ${internalUserId}`);
374
384
  }
385
+ return yield __await(recoveryDeltaLink);
375
386
  });
376
387
  }
377
388
  async initializeDeltaLink(client, requestUrl, internalUserId, resourceType, dateRange) {
@@ -1 +1 @@
1
- {"version":3,"file":"delta-sync.service.js","sourceRoot":"","sources":["../../../src/services/shared/delta-sync.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delta-sync.service.js","sourceRoot":"","sources":["../../../src/services/shared/delta-sync.service.ts"],"names":[],"mappings":"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"}
@@ -1,52 +1,50 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
+ import { OutlookRateLimitStore } from './outlook-rate-limit.store';
2
3
  export declare class GraphRateLimiterService implements OnModuleInit {
4
+ private readonly store;
3
5
  private readonly logger;
4
6
  private readonly MAX_REQUESTS_PER_SECOND;
5
7
  private readonly MAX_REQUESTS_PER_10_MINUTES;
6
8
  private readonly ONE_SECOND_MS;
7
9
  private readonly TEN_MINUTES_MS;
8
10
  private readonly INACTIVE_USER_THRESHOLD_MS;
9
- private readonly userLimiters;
10
11
  private totalPermitsAcquired;
11
12
  private totalWaitTime;
12
13
  private cooldownCount;
13
14
  private readonly CB_FAILURE_THRESHOLD;
14
15
  private readonly CB_FAILURE_WINDOW_MS;
15
16
  private readonly CB_COOLDOWN_MS;
16
- private readonly CB_HALF_OPEN_MAX;
17
- private cbState;
17
+ private readonly CB_PROBE_TTL_MS;
18
18
  private cbFailureTimestamps;
19
- private cbOpenedAt;
20
- private cbHalfOpenInFlight;
21
19
  private cbTotalTrips;
20
+ constructor(store: OutlookRateLimitStore);
22
21
  onModuleInit(): void;
23
22
  acquirePermit(userId: string): Promise<void>;
24
- releasePermit(userId: string): void;
25
- handleRateLimitResponse(userId: string, retryAfterSeconds: number): void;
26
- private canMakeRequest;
27
- private initializeLimiter;
23
+ releasePermit(_userId: string): void;
24
+ handleRateLimitResponse(userId: string, retryAfterSeconds: number): Promise<void>;
28
25
  private cleanupInactiveUsers;
29
- record503Failure(): void;
30
- recordSuccess(): void;
26
+ record503Failure(): Promise<void>;
27
+ recordSuccess(): Promise<void>;
31
28
  private waitForCircuitBreaker;
32
- getStats(): {
29
+ getStats(): Promise<{
30
+ backend: "memory" | "redis";
33
31
  activeUsers: number;
34
32
  totalPermitsAcquired: number;
35
33
  totalWaitTimeMs: number;
36
34
  averageWaitTimeMs: number;
37
35
  cooldownCount: number;
38
36
  circuitBreaker: {
39
- state: "closed" | "open" | "half-open";
37
+ state: import("./outlook-rate-limit.store").CircuitBreakerState;
40
38
  recentFailures: number;
41
39
  totalTrips: number;
42
40
  openedAt: string | null;
43
41
  };
44
- };
45
- getUserStats(userId: string): {
42
+ }>;
43
+ getUserStats(userId: string): Promise<{
46
44
  userId: string;
45
+ backend: "memory" | "redis";
47
46
  recentRequestCount: number;
48
47
  tenMinuteRequestCount: number;
49
48
  cooldownUntil: number | null;
50
- lastActivity: string;
51
- } | null;
49
+ }>;
52
50
  }