@checkfirst/nestjs-outlook 2.0.0 → 3.1.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 (66) hide show
  1. package/README.md +196 -21
  2. package/dist/controllers/calendar.controller.d.ts +10 -0
  3. package/dist/controllers/calendar.controller.js +166 -0
  4. package/dist/controllers/calendar.controller.js.map +1 -0
  5. package/dist/controllers/email.controller.d.ts +10 -0
  6. package/dist/controllers/email.controller.js +166 -0
  7. package/dist/controllers/email.controller.js.map +1 -0
  8. package/dist/controllers/microsoft-auth.controller.d.ts +3 -2
  9. package/dist/controllers/microsoft-auth.controller.js +15 -13
  10. package/dist/controllers/microsoft-auth.controller.js.map +1 -1
  11. package/dist/dto/outlook-webhook-notification.dto.d.ts +5 -0
  12. package/dist/dto/outlook-webhook-notification.dto.js +39 -1
  13. package/dist/dto/outlook-webhook-notification.dto.js.map +1 -1
  14. package/dist/entities/outlook-webhook-subscription.entity.js +3 -4
  15. package/dist/entities/outlook-webhook-subscription.entity.js.map +1 -1
  16. package/dist/{event-types.enum.d.ts → enums/event-types.enum.d.ts} +4 -1
  17. package/dist/{event-types.enum.js → enums/event-types.enum.js} +3 -0
  18. package/dist/enums/event-types.enum.js.map +1 -0
  19. package/dist/enums/permission-scope.enum.d.ts +7 -0
  20. package/dist/enums/permission-scope.enum.js +12 -0
  21. package/dist/enums/permission-scope.enum.js.map +1 -0
  22. package/dist/index.d.ts +9 -5
  23. package/dist/index.js +9 -5
  24. package/dist/index.js.map +1 -1
  25. package/dist/interfaces/config/outlook-config.interface.d.ts +1 -1
  26. package/dist/interfaces/microsoft-auth/state-object.interface.d.ts +4 -2
  27. package/dist/microsoft-outlook.module.js +9 -6
  28. package/dist/microsoft-outlook.module.js.map +1 -1
  29. package/dist/migrations/1697025846000-CreateOutlookTables.js +2 -1
  30. package/dist/migrations/1697025846000-CreateOutlookTables.js.map +1 -1
  31. package/dist/migrations/1697026000000-EnsureUniqueSubscriptions.d.ts +5 -0
  32. package/dist/migrations/1697026000000-EnsureUniqueSubscriptions.js +27 -0
  33. package/dist/migrations/1697026000000-EnsureUniqueSubscriptions.js.map +1 -0
  34. package/dist/repositories/outlook-webhook-subscription.repository.js +14 -1
  35. package/dist/repositories/outlook-webhook-subscription.repository.js.map +1 -1
  36. package/dist/services/auth/index.d.ts +1 -0
  37. package/dist/services/auth/index.js +18 -0
  38. package/dist/services/auth/index.js.map +1 -0
  39. package/dist/services/auth/microsoft-auth.service.d.ts +41 -0
  40. package/dist/services/{microsoft-auth.service.js → auth/microsoft-auth.service.js} +110 -37
  41. package/dist/services/auth/microsoft-auth.service.js.map +1 -0
  42. package/dist/services/{outlook.service.d.ts → calendar/calendar.service.d.ts} +6 -6
  43. package/dist/services/{outlook.service.js → calendar/calendar.service.js} +96 -66
  44. package/dist/services/calendar/calendar.service.js.map +1 -0
  45. package/dist/services/calendar/index.d.ts +1 -0
  46. package/dist/services/calendar/index.js +18 -0
  47. package/dist/services/calendar/index.js.map +1 -0
  48. package/dist/services/email/email.service.d.ts +24 -0
  49. package/dist/services/email/email.service.js +207 -0
  50. package/dist/services/email/email.service.js.map +1 -0
  51. package/dist/services/email/index.d.ts +1 -0
  52. package/dist/services/email/index.js +18 -0
  53. package/dist/services/email/index.js.map +1 -0
  54. package/dist/services/index.d.ts +3 -0
  55. package/dist/services/index.js +20 -0
  56. package/dist/services/index.js.map +1 -0
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/dist/types/microsoft-graph.types.d.ts +1 -1
  59. package/package.json +11 -6
  60. package/dist/controllers/outlook.controller.d.ts +0 -8
  61. package/dist/controllers/outlook.controller.js +0 -117
  62. package/dist/controllers/outlook.controller.js.map +0 -1
  63. package/dist/event-types.enum.js.map +0 -1
  64. package/dist/services/microsoft-auth.service.d.ts +0 -32
  65. package/dist/services/microsoft-auth.service.js.map +0 -1
  66. package/dist/services/outlook.service.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { EventEmitter2 } from '@nestjs/event-emitter';
2
+ import { MicrosoftAuthService } from '../auth/microsoft-auth.service';
3
+ import { MicrosoftOutlookConfig } from '../../interfaces/config/outlook-config.interface';
4
+ import { TokenResponse } from '../../interfaces/outlook/token-response.interface';
5
+ import { Message, ChangeNotification, Subscription } from '@microsoft/microsoft-graph-types';
6
+ import { OutlookWebhookSubscriptionRepository } from '../../repositories/outlook-webhook-subscription.repository';
7
+ export declare class EmailService {
8
+ private readonly microsoftAuthService;
9
+ private readonly webhookSubscriptionRepository;
10
+ private readonly eventEmitter;
11
+ private readonly microsoftConfig;
12
+ private readonly logger;
13
+ constructor(microsoftAuthService: MicrosoftAuthService, webhookSubscriptionRepository: OutlookWebhookSubscriptionRepository, eventEmitter: EventEmitter2, microsoftConfig: MicrosoftOutlookConfig);
14
+ sendEmail(message: Partial<Message>, accessToken: string, refreshToken: string, tokenExpiry: string | undefined, userId: number): Promise<{
15
+ message: Message;
16
+ tokensRefreshed: boolean;
17
+ refreshedTokens?: TokenResponse;
18
+ }>;
19
+ createWebhookSubscription(userId: number, accessToken: string, refreshToken: string): Promise<Subscription>;
20
+ handleEmailWebhook(notificationItem: ChangeNotification): Promise<{
21
+ success: boolean;
22
+ message: string;
23
+ }>;
24
+ }
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var EmailService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.EmailService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const event_emitter_1 = require("@nestjs/event-emitter");
19
+ const microsoft_graph_client_1 = require("@microsoft/microsoft-graph-client");
20
+ const axios_1 = require("axios");
21
+ const microsoft_auth_service_1 = require("../auth/microsoft-auth.service");
22
+ const constants_1 = require("../../constants");
23
+ const outlook_webhook_subscription_repository_1 = require("../../repositories/outlook-webhook-subscription.repository");
24
+ const event_types_enum_1 = require("../../enums/event-types.enum");
25
+ let EmailService = EmailService_1 = class EmailService {
26
+ constructor(microsoftAuthService, webhookSubscriptionRepository, eventEmitter, microsoftConfig) {
27
+ this.microsoftAuthService = microsoftAuthService;
28
+ this.webhookSubscriptionRepository = webhookSubscriptionRepository;
29
+ this.eventEmitter = eventEmitter;
30
+ this.microsoftConfig = microsoftConfig;
31
+ this.logger = new common_1.Logger(EmailService_1.name);
32
+ }
33
+ async sendEmail(message, accessToken, refreshToken, tokenExpiry, userId) {
34
+ try {
35
+ let currentAccessToken = accessToken;
36
+ let currentRefreshToken = refreshToken;
37
+ let tokensRefreshed = false;
38
+ let refreshedTokens;
39
+ if (currentRefreshToken && tokenExpiry) {
40
+ if (this.microsoftAuthService.isTokenExpired(new Date(tokenExpiry))) {
41
+ this.logger.log('Access token is expired or will expire soon. Refreshing token...');
42
+ try {
43
+ refreshedTokens = await this.microsoftAuthService.refreshAccessToken(currentRefreshToken, userId);
44
+ currentAccessToken = refreshedTokens.access_token || currentAccessToken;
45
+ currentRefreshToken = refreshedTokens.refresh_token || currentRefreshToken;
46
+ tokensRefreshed = true;
47
+ this.logger.log('Token refreshed successfully');
48
+ }
49
+ catch (refreshError) {
50
+ this.logger.error('Failed to refresh token:', refreshError);
51
+ throw new Error('Failed to refresh token');
52
+ }
53
+ }
54
+ }
55
+ const client = microsoft_graph_client_1.Client.init({
56
+ authProvider: (done) => {
57
+ done(null, currentAccessToken);
58
+ },
59
+ });
60
+ const sentMessage = await client
61
+ .api('/me/sendMail')
62
+ .post({ message });
63
+ return {
64
+ message: sentMessage,
65
+ tokensRefreshed,
66
+ refreshedTokens,
67
+ };
68
+ }
69
+ catch (error) {
70
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
71
+ this.logger.error(`Failed to send email: ${errorMessage}`);
72
+ throw new Error(`Failed to send email: ${errorMessage}`);
73
+ }
74
+ }
75
+ async createWebhookSubscription(userId, accessToken, refreshToken) {
76
+ try {
77
+ const expirationDateTime = new Date();
78
+ expirationDateTime.setHours(expirationDateTime.getHours() + 72);
79
+ const appUrl = this.microsoftConfig.backendBaseUrl || 'http://localhost:3000';
80
+ const basePath = this.microsoftConfig.basePath;
81
+ const basePathUrl = basePath ? `${appUrl}/${basePath}` : appUrl;
82
+ const notificationUrl = `${basePathUrl}/email/webhook`;
83
+ const subscriptionData = {
84
+ changeType: 'created,updated,deleted',
85
+ notificationUrl,
86
+ lifecycleNotificationUrl: notificationUrl,
87
+ resource: '/me/messages',
88
+ expirationDateTime: expirationDateTime.toISOString(),
89
+ clientState: `user_${String(userId)}_${Math.random().toString(36).substring(2, 15)}`,
90
+ };
91
+ this.logger.debug(`Creating email webhook subscription with notificationUrl: ${notificationUrl}`);
92
+ this.logger.debug(`Subscription data: ${JSON.stringify(subscriptionData)}`);
93
+ const response = await axios_1.default.post('https://graph.microsoft.com/v1.0/subscriptions', subscriptionData, {
94
+ headers: {
95
+ Authorization: `Bearer ${accessToken}`,
96
+ 'Content-Type': 'application/json',
97
+ },
98
+ });
99
+ this.logger.log(`Created email webhook subscription ${String(response.data.id)} for user ${String(userId)}`);
100
+ await this.webhookSubscriptionRepository.saveSubscription({
101
+ subscriptionId: response.data.id,
102
+ userId,
103
+ resource: response.data.resource,
104
+ changeType: response.data.changeType,
105
+ clientState: response.data.clientState || '',
106
+ notificationUrl: response.data.notificationUrl,
107
+ expirationDateTime: response.data.expirationDateTime ? new Date(response.data.expirationDateTime) : new Date(),
108
+ accessToken,
109
+ refreshToken,
110
+ });
111
+ this.logger.debug(`Stored subscription with refresh token: ${refreshToken.substring(0, 5)}...`);
112
+ return response.data;
113
+ }
114
+ catch (error) {
115
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
116
+ this.logger.error(`Failed to create email webhook subscription: ${errorMessage}`);
117
+ throw new Error(`Failed to create email webhook subscription: ${errorMessage}`);
118
+ }
119
+ }
120
+ async handleEmailWebhook(notificationItem) {
121
+ try {
122
+ const { subscriptionId, clientState, resource, changeType } = notificationItem;
123
+ this.logger.debug(`Received email webhook notification for subscription: ${subscriptionId || 'unknown'}`);
124
+ this.logger.debug(`Resource: ${resource || 'unknown'}, ChangeType: ${String(changeType || 'unknown')}`);
125
+ const subscription = await this.webhookSubscriptionRepository.findBySubscriptionId(subscriptionId || '');
126
+ if (!subscription) {
127
+ this.logger.warn(`Unknown subscription ID: ${subscriptionId || 'unknown'}`);
128
+ return { success: false, message: 'Unknown subscription' };
129
+ }
130
+ if (subscription.clientState && clientState !== subscription.clientState) {
131
+ this.logger.warn('Client state mismatch');
132
+ return { success: false, message: 'Client state mismatch' };
133
+ }
134
+ const userId = subscription.userId;
135
+ if (!userId) {
136
+ this.logger.warn('Could not determine user ID from client state');
137
+ return { success: false, message: 'Invalid client state format' };
138
+ }
139
+ let eventType;
140
+ switch (changeType) {
141
+ case 'created':
142
+ eventType = event_types_enum_1.OutlookEventTypes.EMAIL_RECEIVED;
143
+ break;
144
+ case 'updated':
145
+ eventType = event_types_enum_1.OutlookEventTypes.EMAIL_UPDATED;
146
+ break;
147
+ case 'deleted':
148
+ eventType = event_types_enum_1.OutlookEventTypes.EMAIL_DELETED;
149
+ break;
150
+ default:
151
+ eventType = null;
152
+ this.logger.warn(`Unknown change type received: ${String(changeType)}`);
153
+ return { success: false, message: `Unsupported change type: ${String(changeType)}` };
154
+ }
155
+ let emailData = {};
156
+ if (changeType === 'created' && resource && subscription.accessToken) {
157
+ try {
158
+ const messageId = resource.split('/').pop();
159
+ if (messageId) {
160
+ const client = microsoft_graph_client_1.Client.init({
161
+ authProvider: (done) => {
162
+ done(null, subscription.accessToken);
163
+ },
164
+ });
165
+ emailData = await client
166
+ .api(`/me/messages/${messageId}`)
167
+ .select('id,subject,receivedDateTime,from,toRecipients,ccRecipients,body')
168
+ .get();
169
+ this.logger.log(`Retrieved email details for message ID: ${messageId}`);
170
+ }
171
+ }
172
+ catch (error) {
173
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
174
+ this.logger.error(`Failed to retrieve email details: ${errorMessage}`);
175
+ }
176
+ }
177
+ const resourceData = {
178
+ id: '',
179
+ userId,
180
+ subscriptionId,
181
+ resource,
182
+ changeType,
183
+ data: emailData
184
+ };
185
+ if (eventType) {
186
+ this.eventEmitter.emit(eventType, resourceData);
187
+ this.logger.log(`Processed email webhook notification: ${eventType}`);
188
+ }
189
+ return { success: true, message: 'Notification processed' };
190
+ }
191
+ catch (error) {
192
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
193
+ this.logger.error(`Error processing email webhook notification: ${errorMessage}`);
194
+ return { success: false, message: errorMessage };
195
+ }
196
+ }
197
+ };
198
+ exports.EmailService = EmailService;
199
+ exports.EmailService = EmailService = EmailService_1 = __decorate([
200
+ (0, common_1.Injectable)(),
201
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => microsoft_auth_service_1.MicrosoftAuthService))),
202
+ __param(3, (0, common_1.Inject)(constants_1.MICROSOFT_CONFIG)),
203
+ __metadata("design:paramtypes", [microsoft_auth_service_1.MicrosoftAuthService,
204
+ outlook_webhook_subscription_repository_1.OutlookWebhookSubscriptionRepository,
205
+ event_emitter_1.EventEmitter2, Object])
206
+ ], EmailService);
207
+ //# sourceMappingURL=email.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../src/services/email/email.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './email.service';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./email.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/email/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ export * from './calendar';
2
+ export * from './email';
3
+ export * from './auth';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./calendar"), exports);
18
+ __exportStar(require("./email"), exports);
19
+ __exportStar(require("./auth"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,0CAAwB;AACxB,yCAAuB"}