@checkfirst/nestjs-outlook 8.0.3 → 9.0.1
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/controllers/calendar.controller.d.ts +1 -0
- package/dist/controllers/calendar.controller.js +60 -44
- package/dist/controllers/calendar.controller.js.map +1 -1
- package/dist/controllers/email.controller.d.ts +1 -0
- package/dist/controllers/email.controller.js +31 -15
- package/dist/controllers/email.controller.js.map +1 -1
- package/dist/enums/event-types.enum.d.ts +2 -1
- package/dist/enums/event-types.enum.js +1 -0
- package/dist/enums/event-types.enum.js.map +1 -1
- package/dist/guards/webhook-client-state.guard.d.ts +32 -0
- package/dist/guards/webhook-client-state.guard.js +102 -0
- package/dist/guards/webhook-client-state.guard.js.map +1 -0
- package/dist/microsoft-outlook.module.js +3 -0
- package/dist/microsoft-outlook.module.js.map +1 -1
- package/dist/repositories/outlook-webhook-subscription.repository.d.ts +1 -0
- package/dist/repositories/outlook-webhook-subscription.repository.js +5 -0
- package/dist/repositories/outlook-webhook-subscription.repository.js.map +1 -1
- package/dist/services/calendar/calendar.service.js +4 -3
- package/dist/services/calendar/calendar.service.js.map +1 -1
- package/dist/services/email/email.service.js +12 -4
- package/dist/services/email/email.service.js.map +1 -1
- package/dist/services/subscription/microsoft-subscription.service.d.ts +12 -0
- package/dist/services/subscription/microsoft-subscription.service.js +92 -2
- package/dist/services/subscription/microsoft-subscription.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -9,5 +9,6 @@ export declare class CalendarController {
|
|
|
9
9
|
constructor(calendarService: CalendarService, lifecycleEventHandler: LifecycleEventHandlerService);
|
|
10
10
|
handleCalendarWebhookNotification(validationToken: string, notificationBody: OutlookWebhookNotificationDto, req: Request, res: Response): Promise<void>;
|
|
11
11
|
handleCalendarWebhook(validationToken: string, notificationBody: OutlookWebhookNotificationDto, req: Request, res: Response): Promise<void>;
|
|
12
|
+
private filterAuthorizedItems;
|
|
12
13
|
private processCalendarNotificationBatch;
|
|
13
14
|
}
|
|
@@ -21,6 +21,7 @@ const calendar_service_1 = require("../services/calendar/calendar.service");
|
|
|
21
21
|
const outlook_webhook_notification_dto_1 = require("../dto/outlook-webhook-notification.dto");
|
|
22
22
|
const webhook_notification_validator_1 = require("../utils/webhook-notification.validator");
|
|
23
23
|
const lifecycle_event_handler_service_1 = require("../services/calendar/lifecycle-event-handler.service");
|
|
24
|
+
const webhook_client_state_guard_1 = require("../guards/webhook-client-state.guard");
|
|
24
25
|
let CalendarController = CalendarController_1 = class CalendarController {
|
|
25
26
|
constructor(calendarService, lifecycleEventHandler) {
|
|
26
27
|
this.calendarService = calendarService;
|
|
@@ -39,33 +40,26 @@ let CalendarController = CalendarController_1 = class CalendarController {
|
|
|
39
40
|
const webhookTraceId = (0, crypto_1.randomUUID)();
|
|
40
41
|
this.logger.log(`[WEBHOOK_RECEIVED] webhookTraceId=${webhookTraceId}, endpoint=notification, notificationCount=${notificationBody.value.length}`);
|
|
41
42
|
this.logger.debug(`Received webhook notification: ${JSON.stringify(notificationBody)}`);
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
const { authorized, rejectedCount } = this.filterAuthorizedItems(req, Array.isArray(notificationBody.value) ? notificationBody.value : []);
|
|
44
|
+
if (rejectedCount > 0) {
|
|
45
|
+
this.logger.warn(`[SECURITY] Skipping ${rejectedCount.toString()} rejected webhook item(s), webhookTraceId=${webhookTraceId}`);
|
|
46
|
+
}
|
|
47
|
+
if (authorized.length === 0) {
|
|
48
|
+
res.json({
|
|
49
|
+
success: true,
|
|
50
|
+
message: rejectedCount > 0
|
|
51
|
+
? `Rejected ${rejectedCount.toString()} notification(s) failing security validation`
|
|
52
|
+
: `Received webhook notification with unexpected format`,
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (authorized.length > 2) {
|
|
57
|
+
this.logger.log(`Received batch of ${authorized.length.toString()} notifications, responding with 202 Accepted`);
|
|
44
58
|
res.status(202).json({
|
|
45
59
|
success: true,
|
|
46
60
|
message: 'Notifications accepted for processing',
|
|
47
61
|
});
|
|
48
|
-
|
|
49
|
-
for (const item of notificationBody.value) {
|
|
50
|
-
await this.calendarService.handleOutlookWebhookV2({
|
|
51
|
-
subscriptionId: item.subscriptionId,
|
|
52
|
-
subscriptionExpirationDateTime: item.subscriptionExpirationDateTime,
|
|
53
|
-
changeType: item.changeType,
|
|
54
|
-
resource: item.resource,
|
|
55
|
-
resourceData: item.resourceData,
|
|
56
|
-
clientState: item.clientState,
|
|
57
|
-
tenantId: item.tenantId,
|
|
58
|
-
}, webhookTraceId);
|
|
59
|
-
}
|
|
60
|
-
res.json({
|
|
61
|
-
success: true,
|
|
62
|
-
message: `Notifications accepted for processing`,
|
|
63
|
-
});
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (Array.isArray(notificationBody.value) && notificationBody.value.length > 0) {
|
|
68
|
-
for (const item of notificationBody.value) {
|
|
62
|
+
for (const item of authorized) {
|
|
69
63
|
await this.calendarService.handleOutlookWebhookV2({
|
|
70
64
|
subscriptionId: item.subscriptionId,
|
|
71
65
|
subscriptionExpirationDateTime: item.subscriptionExpirationDateTime,
|
|
@@ -76,16 +70,22 @@ let CalendarController = CalendarController_1 = class CalendarController {
|
|
|
76
70
|
tenantId: item.tenantId,
|
|
77
71
|
}, webhookTraceId);
|
|
78
72
|
}
|
|
79
|
-
res.json({
|
|
80
|
-
success: true,
|
|
81
|
-
message: `Processed ${notificationBody.value.length.toString()} notifications`,
|
|
82
|
-
});
|
|
83
73
|
return;
|
|
84
74
|
}
|
|
85
|
-
|
|
75
|
+
for (const item of authorized) {
|
|
76
|
+
await this.calendarService.handleOutlookWebhookV2({
|
|
77
|
+
subscriptionId: item.subscriptionId,
|
|
78
|
+
subscriptionExpirationDateTime: item.subscriptionExpirationDateTime,
|
|
79
|
+
changeType: item.changeType,
|
|
80
|
+
resource: item.resource,
|
|
81
|
+
resourceData: item.resourceData,
|
|
82
|
+
clientState: item.clientState,
|
|
83
|
+
tenantId: item.tenantId,
|
|
84
|
+
}, webhookTraceId);
|
|
85
|
+
}
|
|
86
86
|
res.json({
|
|
87
87
|
success: true,
|
|
88
|
-
message: `
|
|
88
|
+
message: `Processed ${authorized.length.toString()} notifications`,
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
catch (error) {
|
|
@@ -110,30 +110,35 @@ let CalendarController = CalendarController_1 = class CalendarController {
|
|
|
110
110
|
const webhookTraceId = (0, crypto_1.randomUUID)();
|
|
111
111
|
this.logger.log(`[WEBHOOK_RECEIVED] webhookTraceId=${webhookTraceId}, endpoint=webhook, notificationCount=${notificationBody.value.length}`);
|
|
112
112
|
this.logger.debug(`Received webhook notification: ${JSON.stringify(notificationBody)}`);
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
const { authorized, rejectedCount } = this.filterAuthorizedItems(req, Array.isArray(notificationBody.value) ? notificationBody.value : []);
|
|
114
|
+
if (rejectedCount > 0) {
|
|
115
|
+
this.logger.warn(`[SECURITY] Skipping ${rejectedCount.toString()} rejected webhook item(s), webhookTraceId=${webhookTraceId}`);
|
|
116
|
+
}
|
|
117
|
+
if (authorized.length === 0) {
|
|
118
|
+
res.json({
|
|
119
|
+
success: true,
|
|
120
|
+
message: rejectedCount > 0
|
|
121
|
+
? `Rejected ${rejectedCount.toString()} notification(s) failing security validation`
|
|
122
|
+
: `Received webhook notification with unexpected format`,
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (authorized.length > 2) {
|
|
127
|
+
this.logger.log(`Received batch of ${authorized.length.toString()} notifications, responding with 202 Accepted`);
|
|
115
128
|
res.status(202).json({
|
|
116
129
|
success: true,
|
|
117
130
|
message: 'Notifications accepted for processing',
|
|
118
131
|
});
|
|
119
|
-
this.processCalendarNotificationBatch(
|
|
132
|
+
this.processCalendarNotificationBatch(authorized, webhookTraceId).catch((error) => {
|
|
120
133
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
121
134
|
this.logger.error(`Error processing notification batch: ${errorMessage}`);
|
|
122
135
|
});
|
|
123
136
|
return;
|
|
124
137
|
}
|
|
125
|
-
|
|
126
|
-
const results = await this.processCalendarNotificationBatch(notificationBody, webhookTraceId);
|
|
127
|
-
res.json({
|
|
128
|
-
success: true,
|
|
129
|
-
message: `Processed ${results.successCount.toString()} out of ${notificationBody.value.length.toString()} notifications`,
|
|
130
|
-
});
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
this.logger.warn('Received webhook notification with unexpected format');
|
|
138
|
+
const results = await this.processCalendarNotificationBatch(authorized, webhookTraceId);
|
|
134
139
|
res.json({
|
|
135
140
|
success: true,
|
|
136
|
-
message: `
|
|
141
|
+
message: `Processed ${results.successCount.toString()} out of ${authorized.length.toString()} notifications`,
|
|
137
142
|
});
|
|
138
143
|
}
|
|
139
144
|
catch (error) {
|
|
@@ -146,11 +151,20 @@ let CalendarController = CalendarController_1 = class CalendarController {
|
|
|
146
151
|
});
|
|
147
152
|
}
|
|
148
153
|
}
|
|
149
|
-
|
|
154
|
+
filterAuthorizedItems(req, items) {
|
|
155
|
+
const validation = req.webhookValidation;
|
|
156
|
+
if (!validation || validation.valid || validation.invalidItems.length === 0) {
|
|
157
|
+
return { authorized: items, rejectedCount: 0 };
|
|
158
|
+
}
|
|
159
|
+
const invalidIndexes = new Set(validation.invalidItems.map((i) => i.index));
|
|
160
|
+
const authorized = items.filter((_, idx) => !invalidIndexes.has(idx));
|
|
161
|
+
return { authorized, rejectedCount: items.length - authorized.length };
|
|
162
|
+
}
|
|
163
|
+
async processCalendarNotificationBatch(items, webhookTraceId) {
|
|
150
164
|
let successCount = 0;
|
|
151
165
|
let failureCount = 0;
|
|
152
166
|
const processedEvents = new Set();
|
|
153
|
-
for (const item of
|
|
167
|
+
for (const item of items) {
|
|
154
168
|
const validation = (0, webhook_notification_validator_1.validateNotificationItem)(item, webhook_notification_validator_1.WebhookResourceType.CALENDAR, this.logger);
|
|
155
169
|
if (validation.isLifecycleEvent) {
|
|
156
170
|
try {
|
|
@@ -220,6 +234,7 @@ let CalendarController = CalendarController_1 = class CalendarController {
|
|
|
220
234
|
exports.CalendarController = CalendarController;
|
|
221
235
|
__decorate([
|
|
222
236
|
(0, common_1.Post)('webhook/notification'),
|
|
237
|
+
(0, common_1.UseGuards)(webhook_client_state_guard_1.WebhookClientStateGuard),
|
|
223
238
|
(0, common_1.HttpCode)(200),
|
|
224
239
|
(0, swagger_1.ApiResponse)({
|
|
225
240
|
status: 200,
|
|
@@ -253,6 +268,7 @@ __decorate([
|
|
|
253
268
|
], CalendarController.prototype, "handleCalendarWebhookNotification", null);
|
|
254
269
|
__decorate([
|
|
255
270
|
(0, common_1.Post)('webhook'),
|
|
271
|
+
(0, common_1.UseGuards)(webhook_client_state_guard_1.WebhookClientStateGuard),
|
|
256
272
|
(0, common_1.HttpCode)(200),
|
|
257
273
|
(0, swagger_1.ApiResponse)({
|
|
258
274
|
status: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.controller.js","sourceRoot":"","sources":["../../src/controllers/calendar.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar.controller.js","sourceRoot":"","sources":["../../src/controllers/calendar.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,6 @@ export declare class EmailController {
|
|
|
6
6
|
private readonly logger;
|
|
7
7
|
constructor(emailService: EmailService);
|
|
8
8
|
handleEmailWebhook(validationToken: string, notificationBody: OutlookWebhookNotificationDto, req: Request, res: Response): Promise<void>;
|
|
9
|
+
private filterAuthorizedItems;
|
|
9
10
|
private processEmailNotificationBatch;
|
|
10
11
|
}
|
|
@@ -19,6 +19,7 @@ const swagger_1 = require("@nestjs/swagger");
|
|
|
19
19
|
const email_service_1 = require("../services/email/email.service");
|
|
20
20
|
const outlook_webhook_notification_dto_1 = require("../dto/outlook-webhook-notification.dto");
|
|
21
21
|
const webhook_notification_validator_1 = require("../utils/webhook-notification.validator");
|
|
22
|
+
const webhook_client_state_guard_1 = require("../guards/webhook-client-state.guard");
|
|
22
23
|
let EmailController = EmailController_1 = class EmailController {
|
|
23
24
|
constructor(emailService) {
|
|
24
25
|
this.emailService = emailService;
|
|
@@ -34,30 +35,35 @@ let EmailController = EmailController_1 = class EmailController {
|
|
|
34
35
|
}
|
|
35
36
|
try {
|
|
36
37
|
this.logger.debug(`Received email webhook notification: ${JSON.stringify(notificationBody)}`);
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const { authorized, rejectedCount } = this.filterAuthorizedItems(req, Array.isArray(notificationBody.value) ? notificationBody.value : []);
|
|
39
|
+
if (rejectedCount > 0) {
|
|
40
|
+
this.logger.warn(`[SECURITY] Skipping ${rejectedCount.toString()} rejected email webhook item(s)`);
|
|
41
|
+
}
|
|
42
|
+
if (authorized.length === 0) {
|
|
43
|
+
res.json({
|
|
44
|
+
success: true,
|
|
45
|
+
message: rejectedCount > 0
|
|
46
|
+
? `Rejected ${rejectedCount.toString()} email notification(s) failing security validation`
|
|
47
|
+
: `Received email webhook notification with unexpected format`,
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (authorized.length > 2) {
|
|
52
|
+
this.logger.log(`Received batch of ${authorized.length.toString()} email notifications, responding with 202 Accepted`);
|
|
39
53
|
res.status(202).json({
|
|
40
54
|
success: true,
|
|
41
55
|
message: 'Email notifications accepted for processing',
|
|
42
56
|
});
|
|
43
|
-
this.processEmailNotificationBatch(
|
|
57
|
+
this.processEmailNotificationBatch(authorized).catch((error) => {
|
|
44
58
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
45
59
|
this.logger.error(`Error processing email notification batch: ${errorMessage}`);
|
|
46
60
|
});
|
|
47
61
|
return;
|
|
48
62
|
}
|
|
49
|
-
|
|
50
|
-
const results = await this.processEmailNotificationBatch(notificationBody);
|
|
51
|
-
res.json({
|
|
52
|
-
success: true,
|
|
53
|
-
message: `Processed ${results.successCount.toString()} out of ${notificationBody.value.length.toString()} email notifications`,
|
|
54
|
-
});
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
this.logger.warn('Received email webhook notification with unexpected format');
|
|
63
|
+
const results = await this.processEmailNotificationBatch(authorized);
|
|
58
64
|
res.json({
|
|
59
65
|
success: true,
|
|
60
|
-
message: `
|
|
66
|
+
message: `Processed ${results.successCount.toString()} out of ${authorized.length.toString()} email notifications`,
|
|
61
67
|
});
|
|
62
68
|
}
|
|
63
69
|
catch (error) {
|
|
@@ -70,11 +76,20 @@ let EmailController = EmailController_1 = class EmailController {
|
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
|
-
|
|
79
|
+
filterAuthorizedItems(req, items) {
|
|
80
|
+
const validation = req.webhookValidation;
|
|
81
|
+
if (!validation || validation.valid || validation.invalidItems.length === 0) {
|
|
82
|
+
return { authorized: items, rejectedCount: 0 };
|
|
83
|
+
}
|
|
84
|
+
const invalidIndexes = new Set(validation.invalidItems.map((i) => i.index));
|
|
85
|
+
const authorized = items.filter((_, idx) => !invalidIndexes.has(idx));
|
|
86
|
+
return { authorized, rejectedCount: items.length - authorized.length };
|
|
87
|
+
}
|
|
88
|
+
async processEmailNotificationBatch(items) {
|
|
74
89
|
let successCount = 0;
|
|
75
90
|
let failureCount = 0;
|
|
76
91
|
const processedMessages = new Set();
|
|
77
|
-
for (const item of
|
|
92
|
+
for (const item of items) {
|
|
78
93
|
const validation = (0, webhook_notification_validator_1.validateNotificationItem)(item, webhook_notification_validator_1.WebhookResourceType.EMAIL, this.logger);
|
|
79
94
|
if (!validation.isValid || validation.shouldSkip) {
|
|
80
95
|
failureCount++;
|
|
@@ -125,6 +140,7 @@ let EmailController = EmailController_1 = class EmailController {
|
|
|
125
140
|
exports.EmailController = EmailController;
|
|
126
141
|
__decorate([
|
|
127
142
|
(0, common_1.Post)('webhook'),
|
|
143
|
+
(0, common_1.UseGuards)(webhook_client_state_guard_1.WebhookClientStateGuard),
|
|
128
144
|
(0, common_1.HttpCode)(200),
|
|
129
145
|
(0, swagger_1.ApiResponse)({
|
|
130
146
|
status: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.controller.js","sourceRoot":"","sources":["../../src/controllers/email.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"email.controller.js","sourceRoot":"","sources":["../../src/controllers/email.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,6 @@ export declare enum OutlookEventTypes {
|
|
|
17
17
|
SUBSCRIPTION_AUTH_FAILED = "outlook.subscription.auth_failed",
|
|
18
18
|
SUBSCRIPTION_CREATION_FAILED = "outlook.subscription.creation_failed",
|
|
19
19
|
HEALTH_CHECK_COMPLETED = "outlook.cron.health_check.completed",
|
|
20
|
-
RETRY_FAILED_SUBSCRIPTIONS_COMPLETED = "outlook.cron.retry_failed_subscriptions.completed"
|
|
20
|
+
RETRY_FAILED_SUBSCRIPTIONS_COMPLETED = "outlook.cron.retry_failed_subscriptions.completed",
|
|
21
|
+
WEBHOOK_REJECTED = "outlook.webhook.rejected"
|
|
21
22
|
}
|
|
@@ -22,5 +22,6 @@ var OutlookEventTypes;
|
|
|
22
22
|
OutlookEventTypes["SUBSCRIPTION_CREATION_FAILED"] = "outlook.subscription.creation_failed";
|
|
23
23
|
OutlookEventTypes["HEALTH_CHECK_COMPLETED"] = "outlook.cron.health_check.completed";
|
|
24
24
|
OutlookEventTypes["RETRY_FAILED_SUBSCRIPTIONS_COMPLETED"] = "outlook.cron.retry_failed_subscriptions.completed";
|
|
25
|
+
OutlookEventTypes["WEBHOOK_REJECTED"] = "outlook.webhook.rejected";
|
|
25
26
|
})(OutlookEventTypes || (exports.OutlookEventTypes = OutlookEventTypes = {}));
|
|
26
27
|
//# sourceMappingURL=event-types.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-types.enum.js","sourceRoot":"","sources":["../../src/enums/event-types.enum.ts"],"names":[],"mappings":";;;AAGA,IAAY,
|
|
1
|
+
{"version":3,"file":"event-types.enum.js","sourceRoot":"","sources":["../../src/enums/event-types.enum.ts"],"names":[],"mappings":";;;AAGA,IAAY,iBAuCX;AAvCD,WAAY,iBAAiB;IAE3B,6EAAwD,CAAA;IACxD,6FAAwE,CAAA;IAGxE,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;IAEvC,sEAAiD,CAAA;IAGjD,2EAAsD,CAAA;IAGtD,8DAAyC,CAAA;IACzC,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;IAGvC,sGAAiF,CAAA;IACjF,8FAAyE,CAAA;IACzE,kEAA6C,CAAA;IAG7C,8EAAyD,CAAA;IACzD,8FAAyE,CAAA;IACzE,kFAA6D,CAAA;IAG7D,0FAAqE,CAAA;IAGrE,mFAA8D,CAAA;IAC9D,+GAA0F,CAAA;IAG1F,kEAA6C,CAAA;AAC/C,CAAC,EAvCW,iBAAiB,iCAAjB,iBAAiB,QAuC5B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
3
|
+
import { Request } from 'express';
|
|
4
|
+
import { OutlookWebhookSubscriptionRepository } from '../repositories/outlook-webhook-subscription.repository';
|
|
5
|
+
export type WebhookRejectionReason = 'missing_subscription_id' | 'unknown_subscription' | 'missing_stored_client_state' | 'client_state_mismatch';
|
|
6
|
+
export interface WebhookValidationItem {
|
|
7
|
+
index: number;
|
|
8
|
+
valid: boolean;
|
|
9
|
+
reason?: WebhookRejectionReason;
|
|
10
|
+
subscriptionId?: string;
|
|
11
|
+
userId?: number | null;
|
|
12
|
+
}
|
|
13
|
+
export interface WebhookValidationResult {
|
|
14
|
+
valid: boolean;
|
|
15
|
+
invalidItems: WebhookValidationItem[];
|
|
16
|
+
}
|
|
17
|
+
export type RequestWithWebhookValidation = Request & {
|
|
18
|
+
webhookValidation?: WebhookValidationResult;
|
|
19
|
+
};
|
|
20
|
+
export interface WebhookRejectedEvent {
|
|
21
|
+
subscriptionId: string;
|
|
22
|
+
userId: number | null;
|
|
23
|
+
reason: WebhookRejectionReason;
|
|
24
|
+
endpoint: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class WebhookClientStateGuard implements CanActivate {
|
|
27
|
+
private readonly webhookSubscriptionRepository;
|
|
28
|
+
private readonly eventEmitter;
|
|
29
|
+
private readonly logger;
|
|
30
|
+
constructor(webhookSubscriptionRepository: OutlookWebhookSubscriptionRepository, eventEmitter: EventEmitter2);
|
|
31
|
+
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
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 WebhookClientStateGuard_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.WebhookClientStateGuard = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
16
|
+
const outlook_webhook_subscription_repository_1 = require("../repositories/outlook-webhook-subscription.repository");
|
|
17
|
+
const event_types_enum_1 = require("../enums/event-types.enum");
|
|
18
|
+
let WebhookClientStateGuard = WebhookClientStateGuard_1 = class WebhookClientStateGuard {
|
|
19
|
+
constructor(webhookSubscriptionRepository, eventEmitter) {
|
|
20
|
+
this.webhookSubscriptionRepository = webhookSubscriptionRepository;
|
|
21
|
+
this.eventEmitter = eventEmitter;
|
|
22
|
+
this.logger = new common_1.Logger(WebhookClientStateGuard_1.name);
|
|
23
|
+
}
|
|
24
|
+
async canActivate(context) {
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
const request = context.switchToHttp().getRequest();
|
|
27
|
+
const validationToken = request.query.validationToken;
|
|
28
|
+
if (validationToken) {
|
|
29
|
+
this.logger.debug('Allowing validation request through');
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
const body = request.body;
|
|
33
|
+
if (!(body === null || body === void 0 ? void 0 : body.value) || !Array.isArray(body.value) || body.value.length === 0) {
|
|
34
|
+
this.logger.debug('No notification items to validate');
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
const endpoint = request.path;
|
|
38
|
+
const validationResults = await Promise.all(body.value.map(async (item, index) => {
|
|
39
|
+
var _a;
|
|
40
|
+
const { subscriptionId, clientState } = item;
|
|
41
|
+
if (!subscriptionId) {
|
|
42
|
+
this.logger.warn(`[SECURITY] Notification item ${index} missing subscriptionId`);
|
|
43
|
+
return { index, valid: false, reason: 'missing_subscription_id', userId: null };
|
|
44
|
+
}
|
|
45
|
+
const subscription = await this.webhookSubscriptionRepository.findBySubscriptionId(subscriptionId);
|
|
46
|
+
if (!subscription) {
|
|
47
|
+
this.logger.warn(`[SECURITY] Unknown subscription ID: ${subscriptionId}. ` +
|
|
48
|
+
`Possible replay attack or stale subscription.`);
|
|
49
|
+
return { index, valid: false, reason: 'unknown_subscription', subscriptionId, userId: null };
|
|
50
|
+
}
|
|
51
|
+
if (!subscription.clientState) {
|
|
52
|
+
this.logger.warn(`[SECURITY] Subscription ${subscriptionId} has no stored clientState; ` +
|
|
53
|
+
`notification cannot be verified. Rejecting as unverifiable.`);
|
|
54
|
+
return {
|
|
55
|
+
index,
|
|
56
|
+
valid: false,
|
|
57
|
+
reason: 'missing_stored_client_state',
|
|
58
|
+
subscriptionId,
|
|
59
|
+
userId: subscription.userId,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (clientState !== subscription.clientState) {
|
|
63
|
+
this.logger.warn(`[SECURITY] ClientState mismatch for subscription ${subscriptionId}. ` +
|
|
64
|
+
`Expected prefix: user_${subscription.userId}_*, received: ${(_a = clientState === null || clientState === void 0 ? void 0 : clientState.substring(0, 20)) !== null && _a !== void 0 ? _a : 'null'}...`);
|
|
65
|
+
return {
|
|
66
|
+
index,
|
|
67
|
+
valid: false,
|
|
68
|
+
reason: 'client_state_mismatch',
|
|
69
|
+
subscriptionId,
|
|
70
|
+
userId: subscription.userId,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return { index, valid: true, subscriptionId, userId: subscription.userId };
|
|
74
|
+
}));
|
|
75
|
+
const invalidItems = validationResults.filter((r) => !r.valid);
|
|
76
|
+
if (invalidItems.length > 0) {
|
|
77
|
+
this.logger.warn(`[SECURITY] Rejecting webhook: ${invalidItems.length}/${body.value.length} items failed validation. ` +
|
|
78
|
+
`Reasons: ${invalidItems.map((i) => { var _a; return `item[${i.index}]:${(_a = i.reason) !== null && _a !== void 0 ? _a : 'unknown'}`; }).join(', ')}`);
|
|
79
|
+
for (const item of invalidItems) {
|
|
80
|
+
const payload = {
|
|
81
|
+
subscriptionId: (_a = item.subscriptionId) !== null && _a !== void 0 ? _a : 'unknown',
|
|
82
|
+
userId: (_b = item.userId) !== null && _b !== void 0 ? _b : null,
|
|
83
|
+
reason: (_c = item.reason) !== null && _c !== void 0 ? _c : 'unknown_subscription',
|
|
84
|
+
endpoint,
|
|
85
|
+
};
|
|
86
|
+
this.eventEmitter.emit(event_types_enum_1.OutlookEventTypes.WEBHOOK_REJECTED, payload);
|
|
87
|
+
}
|
|
88
|
+
request.webhookValidation = { valid: false, invalidItems };
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
request.webhookValidation = { valid: true, invalidItems: [] };
|
|
92
|
+
this.logger.debug(`ClientState validated for ${body.value.length} notification item(s)`);
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
exports.WebhookClientStateGuard = WebhookClientStateGuard;
|
|
97
|
+
exports.WebhookClientStateGuard = WebhookClientStateGuard = WebhookClientStateGuard_1 = __decorate([
|
|
98
|
+
(0, common_1.Injectable)(),
|
|
99
|
+
__metadata("design:paramtypes", [outlook_webhook_subscription_repository_1.OutlookWebhookSubscriptionRepository,
|
|
100
|
+
event_emitter_1.EventEmitter2])
|
|
101
|
+
], WebhookClientStateGuard);
|
|
102
|
+
//# sourceMappingURL=webhook-client-state.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-client-state.guard.js","sourceRoot":"","sources":["../../src/guards/webhook-client-state.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ const microsoft_subscription_service_1 = require("./services/subscription/micros
|
|
|
34
34
|
const graph_rate_limiter_service_1 = require("./services/shared/graph-rate-limiter.service");
|
|
35
35
|
const outlook_lock_store_1 = require("./services/shared/outlook-lock.store");
|
|
36
36
|
const outlook_rate_limit_store_1 = require("./services/shared/outlook-rate-limit.store");
|
|
37
|
+
const webhook_client_state_guard_1 = require("./guards/webhook-client-state.guard");
|
|
37
38
|
_a = new common_1.ConfigurableModuleBuilder()
|
|
38
39
|
.setClassMethodName("forRoot")
|
|
39
40
|
.build(), exports.ConfigurableModuleClass = _a.ConfigurableModuleClass, exports.MODULE_OPTIONS_TOKEN = _a.MODULE_OPTIONS_TOKEN;
|
|
@@ -130,6 +131,7 @@ exports.MicrosoftOutlookModule = MicrosoftOutlookModule = __decorate([
|
|
|
130
131
|
recurrence_service_1.RecurrenceService,
|
|
131
132
|
microsoft_subscription_service_1.MicrosoftSubscriptionService,
|
|
132
133
|
graph_rate_limiter_service_1.GraphRateLimiterService,
|
|
134
|
+
webhook_client_state_guard_1.WebhookClientStateGuard,
|
|
133
135
|
],
|
|
134
136
|
exports: [
|
|
135
137
|
calendar_service_1.CalendarService,
|
|
@@ -143,6 +145,7 @@ exports.MicrosoftOutlookModule = MicrosoftOutlookModule = __decorate([
|
|
|
143
145
|
graph_rate_limiter_service_1.GraphRateLimiterService,
|
|
144
146
|
constants_1.OUTLOOK_LOCK_STORE,
|
|
145
147
|
constants_1.OUTLOOK_RATE_LIMIT_STORE,
|
|
148
|
+
webhook_client_state_guard_1.WebhookClientStateGuard,
|
|
146
149
|
],
|
|
147
150
|
})
|
|
148
151
|
], MicrosoftOutlookModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microsoft-outlook.module.js","sourceRoot":"","sources":["../src/microsoft-outlook.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;AAC3E,6CAAgD;AAChD,+CAAkD;AAClD,yDAA2D;AAC3D,mFAA8E;AAC9E,uFAAkF;AAClF,2EAAuE;AACvE,qEAAiE;AACjE,wGAA4F;AAC5F,oHAA8G;AAC9G,2CAIqB;AAErB,oEAAkE;AAClE,oGAA8F;AAC9F,2EAAuE;AACvE,kEAA8D;AAC9D,4EAAiE;AACjE,oEAAgE;AAChE,gGAA0F;AAC1F,6EAAwE;AACxE,2FAAqF;AACrF,yGAAmG;AACnG,+EAA2E;AAC3E,2GAAsG;AACtG,6FAAuF;AACvF,6EAI8C;AAC9C,yFAIoD;
|
|
1
|
+
{"version":3,"file":"microsoft-outlook.module.js","sourceRoot":"","sources":["../src/microsoft-outlook.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class OutlookWebhookSubscriptionRepository {
|
|
|
13
13
|
findActiveSubscriptions(excludeUserIds?: number[]): Promise<OutlookWebhookSubscription[]>;
|
|
14
14
|
findActiveByUserIds(userIds: number[]): Promise<OutlookWebhookSubscription[]>;
|
|
15
15
|
findActiveByUserId(userId: number): Promise<OutlookWebhookSubscription | null>;
|
|
16
|
+
findAllActiveByUserId(userId: number): Promise<OutlookWebhookSubscription[]>;
|
|
16
17
|
findAllActiveByUserIdAndResource(userId: number, resource: string): Promise<OutlookWebhookSubscription[]>;
|
|
17
18
|
updateLastNotificationAt(subscriptionId: string): Promise<void>;
|
|
18
19
|
findStaleSubscriptions(staleThresholdHours: number): Promise<OutlookWebhookSubscription[]>;
|
|
@@ -115,6 +115,11 @@ let OutlookWebhookSubscriptionRepository = class OutlookWebhookSubscriptionRepos
|
|
|
115
115
|
this.byUserId.set(userId, result);
|
|
116
116
|
return result;
|
|
117
117
|
}
|
|
118
|
+
async findAllActiveByUserId(userId) {
|
|
119
|
+
return this.repository.find({
|
|
120
|
+
where: { userId, isActive: true },
|
|
121
|
+
});
|
|
122
|
+
}
|
|
118
123
|
async findAllActiveByUserIdAndResource(userId, resource) {
|
|
119
124
|
return this.repository.find({
|
|
120
125
|
where: { userId, resource, isActive: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outlook-webhook-subscription.repository.js","sourceRoot":"","sources":["../../src/repositories/outlook-webhook-subscription.repository.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"outlook-webhook-subscription.repository.js","sourceRoot":"","sources":["../../src/repositories/outlook-webhook-subscription.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,qCAAwD;AACxD,yGAA6F;AAC7F,4DAAmD;AAG5C,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAI/C,YAEE,UAAmE;QAAlD,eAAU,GAAV,UAAU,CAAwC;QALpD,qBAAgB,GAAG,IAAI,yBAAQ,CAAqC,KAAK,CAAC,CAAC;QAC3E,aAAQ,GAAG,IAAI,yBAAQ,CAAqC,KAAK,CAAC,CAAC;IAKjF,CAAC;IAEI,UAAU,CAAC,YAAyD;QAC1E,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc;YAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,MAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,YAAiD;QAGjD,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAChC,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACzD,KAAK,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,cAAc,EAAE;aACvD,CAAC,CAAC;YAEH,IAAI,oBAAoB,EAAE,CAAC;gBAEzB,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;gBAClD,oBAAoB,CAAC,EAAE,GAAG,UAAU,CAAC;gBACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAID,MAAM,qBAAqB,qBAAQ,YAAY,CAAE,CAAC;QAClD,OAAO,qBAAqB,CAAC,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,cAAsB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,MAAM;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,cAAsB,EACtB,kBAAwB;QAExB,MAAM,MAAM,GAAwC;YAClD,kBAAkB;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,cAAsB;QACjD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,cAAyB;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,kBAAkB,EAAE,IAAA,kBAAQ,EAAC,GAAG,CAAC;oBACjC,MAAM,EAAE,IAAA,aAAG,EAAC,IAAA,YAAE,EAAC,cAAc,CAAC,CAAC;iBAChC;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,IAAA,kBAAQ,EAAC,GAAG,CAAC;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAiB;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE;gBACL,MAAM,EAAE,IAAA,YAAE,EAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,IAAA,kBAAQ,EAAC,GAAG,CAAC;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC;QACH,IAAI,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD,KAAK,CAAC,qBAAqB,CAAC,MAAc;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,MAAc,EACd,QAAgB;QAEhB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,cAAsB;QACnD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC1B,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClC,EAAE,kBAAkB,EAAE,IAAI,IAAI,EAAE,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,mBAA2B;QACtD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,mBAAmB,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC,UAAU;aACnB,kBAAkB,CAAC,KAAK,CAAC;aACzB,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aACjD,QAAQ,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aAC9D,QAAQ,CACP,yEAAyE,EACzE,EAAE,SAAS,EAAE,CACd;aACA,OAAO,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAuE;QACjF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AApKY,oFAAoC;+CAApC,oCAAoC;IADhD,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,0BAAgB,EAAC,gEAA0B,CAAC,CAAA;qCAChB,oBAAU;GAN9B,oCAAoC,CAoKhD"}
|