@zssz-soft/firebase-functions-shared 1.2.16 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/app.config.d.ts +6 -0
- package/lib/config/app.config.d.ts.map +1 -1
- package/lib/config/app.config.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/modules/booking/booking-email.templates.d.ts +52 -0
- package/lib/modules/booking/booking-email.templates.d.ts.map +1 -1
- package/lib/modules/booking/booking-email.templates.js +768 -0
- package/lib/modules/booking/booking-email.templates.js.map +1 -1
- package/lib/modules/booking/booking-email.triggers.d.ts.map +1 -1
- package/lib/modules/booking/booking-email.triggers.js +22 -5
- package/lib/modules/booking/booking-email.triggers.js.map +1 -1
- package/lib/modules/email/email.d.ts.map +1 -1
- package/lib/modules/email/email.js +11 -2
- package/lib/modules/email/email.js.map +1 -1
- package/lib/modules/error-reporting/error-reporter.d.ts +97 -0
- package/lib/modules/error-reporting/error-reporter.d.ts.map +1 -0
- package/lib/modules/error-reporting/error-reporter.js +156 -0
- package/lib/modules/error-reporting/error-reporter.js.map +1 -0
- package/lib/modules/error-reporting/index.d.ts +7 -0
- package/lib/modules/error-reporting/index.d.ts.map +1 -0
- package/lib/modules/error-reporting/index.js +23 -0
- package/lib/modules/error-reporting/index.js.map +1 -0
- package/lib/modules/events/booking-event.handlers.d.ts +44 -0
- package/lib/modules/events/booking-event.handlers.d.ts.map +1 -0
- package/lib/modules/events/booking-event.handlers.js +274 -0
- package/lib/modules/events/booking-event.handlers.js.map +1 -0
- package/lib/modules/events/booking-event.models.d.ts +109 -0
- package/lib/modules/events/booking-event.models.d.ts.map +1 -0
- package/lib/modules/events/booking-event.models.js +110 -0
- package/lib/modules/events/booking-event.models.js.map +1 -0
- package/lib/modules/events/booking-event.triggers.d.ts +46 -0
- package/lib/modules/events/booking-event.triggers.d.ts.map +1 -0
- package/lib/modules/events/booking-event.triggers.js +178 -0
- package/lib/modules/events/booking-event.triggers.js.map +1 -0
- package/lib/modules/events/event.models.d.ts +53 -0
- package/lib/modules/events/event.models.d.ts.map +1 -0
- package/lib/modules/events/event.models.js +18 -0
- package/lib/modules/events/event.models.js.map +1 -0
- package/lib/modules/events/index.d.ts +29 -0
- package/lib/modules/events/index.d.ts.map +1 -0
- package/lib/modules/events/index.js +49 -0
- package/lib/modules/events/index.js.map +1 -0
- package/lib/modules/health/health-check.d.ts +33 -0
- package/lib/modules/health/health-check.d.ts.map +1 -0
- package/lib/modules/health/health-check.js +142 -0
- package/lib/modules/health/health-check.js.map +1 -0
- package/lib/modules/health/index.d.ts +7 -0
- package/lib/modules/health/index.d.ts.map +1 -0
- package/lib/modules/health/index.js +23 -0
- package/lib/modules/health/index.js.map +1 -0
- package/lib/modules/user/user-auth.triggers.d.ts.map +1 -1
- package/lib/modules/user/user-auth.triggers.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Booking Event Publisher Triggers
|
|
4
|
+
*
|
|
5
|
+
* Publishes CloudEvents to Eventarc when booking documents are created or updated.
|
|
6
|
+
* These events are consumed by subscriber handlers (email, audit, analytics).
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - onDocumentCreated: Publishes BOOKING_SUBMITTED or BOOKING_INSTANT_CONFIRMED
|
|
10
|
+
* - onDocumentUpdated: Publishes events based on workflow state transitions
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.createBookingEventTriggers = createBookingEventTriggers;
|
|
14
|
+
const firebase_functions_1 = require("firebase-functions");
|
|
15
|
+
const firestore_1 = require("firebase-functions/v2/firestore");
|
|
16
|
+
const eventarc_1 = require("firebase-admin/eventarc");
|
|
17
|
+
const error_reporting_1 = require("../error-reporting");
|
|
18
|
+
const booking_event_models_1 = require("./booking-event.models");
|
|
19
|
+
/**
|
|
20
|
+
* Create booking event publisher triggers
|
|
21
|
+
*
|
|
22
|
+
* @param config - Configuration options
|
|
23
|
+
* @returns Object containing trigger functions
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const triggers = createBookingEventTriggers({ region: 'europe-west1' });
|
|
28
|
+
* export const onBookingCreatedEvent = triggers.onBookingCreatedEvent;
|
|
29
|
+
* export const onBookingUpdatedEvent = triggers.onBookingUpdatedEvent;
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function createBookingEventTriggers(config = {}) {
|
|
33
|
+
const cfg = Object.assign(Object.assign({}, booking_event_models_1.DEFAULT_BOOKING_EVENT_CONFIG), config);
|
|
34
|
+
const errorReporter = (0, error_reporting_1.createErrorReporter)('BookingEventPublisher');
|
|
35
|
+
/**
|
|
36
|
+
* Publish a booking event to Eventarc
|
|
37
|
+
*/
|
|
38
|
+
async function publishBookingEvent(eventType, payload) {
|
|
39
|
+
try {
|
|
40
|
+
const channel = (0, eventarc_1.getEventarc)().channel(cfg.eventChannel);
|
|
41
|
+
await channel.publish({
|
|
42
|
+
type: eventType,
|
|
43
|
+
subject: `booking/${payload.bookingId}`,
|
|
44
|
+
data: payload,
|
|
45
|
+
});
|
|
46
|
+
firebase_functions_1.logger.info(`[BookingEvent] Published ${eventType} for booking ${payload.bookingId}`, {
|
|
47
|
+
transitionId: payload.transition.transitionId,
|
|
48
|
+
from: payload.transition.from,
|
|
49
|
+
to: payload.transition.to,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// Log but don't throw - we don't want to fail the Firestore operation
|
|
54
|
+
errorReporter.report(error, {
|
|
55
|
+
requestId: payload.bookingId,
|
|
56
|
+
metadata: {
|
|
57
|
+
type: 'event_publish_error',
|
|
58
|
+
eventType,
|
|
59
|
+
transitionId: payload.transition.transitionId,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
throw error; // Re-throw to trigger retry
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create event payload from booking data
|
|
67
|
+
*/
|
|
68
|
+
function createPayload(bookingId, booking, transitionId, from, to) {
|
|
69
|
+
var _a, _b, _c;
|
|
70
|
+
return {
|
|
71
|
+
bookingId,
|
|
72
|
+
booking: Object.assign(Object.assign({}, booking), { uid: bookingId }),
|
|
73
|
+
transition: {
|
|
74
|
+
transitionId,
|
|
75
|
+
from,
|
|
76
|
+
to,
|
|
77
|
+
triggeredBy: ((_a = booking.workflow) === null || _a === void 0 ? void 0 : _a.lastTransitionBy) ||
|
|
78
|
+
((_b = booking.meta) === null || _b === void 0 ? void 0 : _b.createdBy) ||
|
|
79
|
+
'system',
|
|
80
|
+
triggeredAt: ((_c = booking.workflow) === null || _c === void 0 ? void 0 : _c.lastTransitionAt) || new Date().toISOString(),
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
/**
|
|
86
|
+
* Trigger when a new booking is created
|
|
87
|
+
*
|
|
88
|
+
* Publishes:
|
|
89
|
+
* - BOOKING_SUBMITTED: When workflow state is 'pending_approval' (user booking)
|
|
90
|
+
* - BOOKING_INSTANT_CONFIRMED: When workflow state is 'confirmed' (admin/VIP booking)
|
|
91
|
+
*/
|
|
92
|
+
onBookingCreatedEvent: (0, firestore_1.onDocumentCreated)({
|
|
93
|
+
document: `${cfg.bookingCollection}/{bookingId}`,
|
|
94
|
+
region: cfg.region,
|
|
95
|
+
maxInstances: cfg.maxInstances,
|
|
96
|
+
}, async (event) => {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
const bookingId = event.params.bookingId;
|
|
99
|
+
const bookingData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.data();
|
|
100
|
+
if (!bookingData) {
|
|
101
|
+
firebase_functions_1.logger.warn(`[BookingEvent] No data for new booking ${bookingId}`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const workflowState = (_b = bookingData.workflow) === null || _b === void 0 ? void 0 : _b.currentState;
|
|
105
|
+
// Determine event type based on initial workflow state
|
|
106
|
+
let eventType = null;
|
|
107
|
+
let transitionId;
|
|
108
|
+
if (workflowState === 'pending_approval') {
|
|
109
|
+
eventType = booking_event_models_1.BookingEventTypes.BOOKING_SUBMITTED;
|
|
110
|
+
transitionId = 'submit_for_approval';
|
|
111
|
+
}
|
|
112
|
+
else if (workflowState === 'confirmed') {
|
|
113
|
+
// Express workflow or admin-created booking
|
|
114
|
+
eventType = booking_event_models_1.BookingEventTypes.BOOKING_INSTANT_CONFIRMED;
|
|
115
|
+
transitionId = 'instant_confirm';
|
|
116
|
+
}
|
|
117
|
+
else if (workflowState === 'draft') {
|
|
118
|
+
// Draft state - no event needed until submitted
|
|
119
|
+
firebase_functions_1.logger.info(`[BookingEvent] Skipping draft booking ${bookingId}`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
firebase_functions_1.logger.info(`[BookingEvent] Skipping booking ${bookingId} with state: ${workflowState}`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const payload = createPayload(bookingId, bookingData, transitionId, 'draft', workflowState);
|
|
127
|
+
await publishBookingEvent(eventType, payload);
|
|
128
|
+
}),
|
|
129
|
+
/**
|
|
130
|
+
* Trigger when a booking is updated
|
|
131
|
+
*
|
|
132
|
+
* Publishes events based on workflow state transitions.
|
|
133
|
+
* Only triggers when workflow.currentState changes.
|
|
134
|
+
*/
|
|
135
|
+
onBookingUpdatedEvent: (0, firestore_1.onDocumentUpdated)({
|
|
136
|
+
document: `${cfg.bookingCollection}/{bookingId}`,
|
|
137
|
+
region: cfg.region,
|
|
138
|
+
maxInstances: cfg.maxInstances,
|
|
139
|
+
}, async (event) => {
|
|
140
|
+
var _a, _b, _c, _d;
|
|
141
|
+
const bookingId = event.params.bookingId;
|
|
142
|
+
const before = (_a = event.data) === null || _a === void 0 ? void 0 : _a.before.data();
|
|
143
|
+
const after = (_b = event.data) === null || _b === void 0 ? void 0 : _b.after.data();
|
|
144
|
+
if (!before || !after) {
|
|
145
|
+
firebase_functions_1.logger.warn(`[BookingEvent] Missing before/after data for booking ${bookingId}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Check for workflow state change
|
|
149
|
+
const stateBefore = (_c = before.workflow) === null || _c === void 0 ? void 0 : _c.currentState;
|
|
150
|
+
const stateAfter = (_d = after.workflow) === null || _d === void 0 ? void 0 : _d.currentState;
|
|
151
|
+
if (!stateBefore || !stateAfter || stateBefore === stateAfter) {
|
|
152
|
+
// No workflow state change - skip
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
firebase_functions_1.logger.info(`[BookingEvent] State change detected for ${bookingId}: ${stateBefore} → ${stateAfter}`);
|
|
156
|
+
// Infer transition ID from state change
|
|
157
|
+
const transitionId = (0, booking_event_models_1.inferTransitionId)(stateBefore, stateAfter);
|
|
158
|
+
if (!transitionId) {
|
|
159
|
+
firebase_functions_1.logger.warn(`[BookingEvent] Unknown transition: ${stateBefore} → ${stateAfter}`);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Check if this transition should send notifications
|
|
163
|
+
if (!(0, booking_event_models_1.shouldNotify)(transitionId)) {
|
|
164
|
+
firebase_functions_1.logger.info(`[BookingEvent] Silent transition ${transitionId}, skipping event`);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Get event type for this transition
|
|
168
|
+
const eventType = booking_event_models_1.TransitionToEventMap[transitionId];
|
|
169
|
+
if (!eventType) {
|
|
170
|
+
firebase_functions_1.logger.warn(`[BookingEvent] No event mapping for transition: ${transitionId}`);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const payload = createPayload(bookingId, after, transitionId, stateBefore, stateAfter);
|
|
174
|
+
await publishBookingEvent(eventType, payload);
|
|
175
|
+
}),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=booking-event.triggers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking-event.triggers.js","sourceRoot":"","sources":["../../../src/modules/events/booking-event.triggers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Event Models for LodgeFlow Eventarc Integration
|
|
3
|
+
*
|
|
4
|
+
* CloudEvents specification v1.0 compliant event types for
|
|
5
|
+
* the event-driven notification architecture.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Base CloudEvent structure for LodgeFlow events
|
|
9
|
+
* Follows CloudEvents specification v1.0
|
|
10
|
+
* @see https://cloudevents.io/
|
|
11
|
+
*/
|
|
12
|
+
export interface LodgeFlowCloudEvent<T = unknown> {
|
|
13
|
+
/** CloudEvents specification version */
|
|
14
|
+
specversion: '1.0';
|
|
15
|
+
/** Event type identifier (e.g., 'com.lodgeflow.booking.approved') */
|
|
16
|
+
type: string;
|
|
17
|
+
/** Event source identifier */
|
|
18
|
+
source: string;
|
|
19
|
+
/** Unique event ID */
|
|
20
|
+
id: string;
|
|
21
|
+
/** Event timestamp in ISO 8601 format */
|
|
22
|
+
time?: string;
|
|
23
|
+
/** Subject of the event (e.g., 'booking/abc123') */
|
|
24
|
+
subject?: string;
|
|
25
|
+
/** Content type of the data field */
|
|
26
|
+
datacontenttype?: 'application/json';
|
|
27
|
+
/** Event payload */
|
|
28
|
+
data: T;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Event categories for routing and filtering
|
|
32
|
+
*/
|
|
33
|
+
export type EventCategory = 'booking' | 'user' | 'payment' | 'system';
|
|
34
|
+
/**
|
|
35
|
+
* Event severity levels for alerting
|
|
36
|
+
*/
|
|
37
|
+
export type EventSeverity = 'info' | 'warning' | 'critical';
|
|
38
|
+
/**
|
|
39
|
+
* Base configuration for event triggers
|
|
40
|
+
*/
|
|
41
|
+
export interface EventTriggerConfig {
|
|
42
|
+
/** Cloud Functions deployment region */
|
|
43
|
+
region: string;
|
|
44
|
+
/** Eventarc channel name (default: 'firebase') */
|
|
45
|
+
eventChannel: string;
|
|
46
|
+
/** Maximum number of concurrent function instances */
|
|
47
|
+
maxInstances?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Default event trigger configuration
|
|
51
|
+
*/
|
|
52
|
+
export declare const DEFAULT_EVENT_TRIGGER_CONFIG: EventTriggerConfig;
|
|
53
|
+
//# sourceMappingURL=event.models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.models.d.ts","sourceRoot":"","sources":["../../../src/modules/events/event.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,wCAAwC;IACxC,WAAW,EAAE,KAAK,CAAC;IAEnB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IAEX,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,eAAe,CAAC,EAAE,kBAAkB,CAAC;IAErC,oBAAoB;IACpB,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAI1C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base Event Models for LodgeFlow Eventarc Integration
|
|
4
|
+
*
|
|
5
|
+
* CloudEvents specification v1.0 compliant event types for
|
|
6
|
+
* the event-driven notification architecture.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_EVENT_TRIGGER_CONFIG = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* Default event trigger configuration
|
|
12
|
+
*/
|
|
13
|
+
exports.DEFAULT_EVENT_TRIGGER_CONFIG = {
|
|
14
|
+
region: 'europe-west1',
|
|
15
|
+
eventChannel: 'firebase',
|
|
16
|
+
maxInstances: 10,
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=event.models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.models.js","sourceRoot":"","sources":["../../../src/modules/events/event.models.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAyDH;;GAEG;AACU,QAAA,4BAA4B,GAAuB;IAC9D,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,EAAE;CACjB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Events Module
|
|
3
|
+
*
|
|
4
|
+
* Provides Eventarc-based event-driven architecture for the booking system.
|
|
5
|
+
*
|
|
6
|
+
* Architecture:
|
|
7
|
+
* - Publishers: Firestore triggers that emit CloudEvents to Eventarc
|
|
8
|
+
* - Subscribers: Event handlers that process events (email, audit, etc.)
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import {
|
|
13
|
+
* createBookingEventTriggers,
|
|
14
|
+
* createBookingEmailHandlers,
|
|
15
|
+
* } from '@zssz-soft/firebase-functions-shared';
|
|
16
|
+
*
|
|
17
|
+
* const triggers = createBookingEventTriggers({ region: 'europe-west1' });
|
|
18
|
+
* const handlers = createBookingEmailHandlers({ region: 'europe-west1' });
|
|
19
|
+
*
|
|
20
|
+
* export const onBookingCreatedEvent = triggers.onBookingCreatedEvent;
|
|
21
|
+
* export const onBookingUpdatedEvent = triggers.onBookingUpdatedEvent;
|
|
22
|
+
* export const onBookingEmailHandler = handlers.onBookingEvent;
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export * from './event.models';
|
|
26
|
+
export * from './booking-event.models';
|
|
27
|
+
export * from './booking-event.triggers';
|
|
28
|
+
export * from './booking-event.handlers';
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Events Module
|
|
4
|
+
*
|
|
5
|
+
* Provides Eventarc-based event-driven architecture for the booking system.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Publishers: Firestore triggers that emit CloudEvents to Eventarc
|
|
9
|
+
* - Subscribers: Event handlers that process events (email, audit, etc.)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import {
|
|
14
|
+
* createBookingEventTriggers,
|
|
15
|
+
* createBookingEmailHandlers,
|
|
16
|
+
* } from '@zssz-soft/firebase-functions-shared';
|
|
17
|
+
*
|
|
18
|
+
* const triggers = createBookingEventTriggers({ region: 'europe-west1' });
|
|
19
|
+
* const handlers = createBookingEmailHandlers({ region: 'europe-west1' });
|
|
20
|
+
*
|
|
21
|
+
* export const onBookingCreatedEvent = triggers.onBookingCreatedEvent;
|
|
22
|
+
* export const onBookingUpdatedEvent = triggers.onBookingUpdatedEvent;
|
|
23
|
+
* export const onBookingEmailHandler = handlers.onBookingEvent;
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
29
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
30
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
31
|
+
}
|
|
32
|
+
Object.defineProperty(o, k2, desc);
|
|
33
|
+
}) : (function(o, m, k, k2) {
|
|
34
|
+
if (k2 === undefined) k2 = k;
|
|
35
|
+
o[k2] = m[k];
|
|
36
|
+
}));
|
|
37
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
38
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
// Base event models
|
|
42
|
+
__exportStar(require("./event.models"), exports);
|
|
43
|
+
// Booking event models and types
|
|
44
|
+
__exportStar(require("./booking-event.models"), exports);
|
|
45
|
+
// Booking event publishers (Firestore → Eventarc)
|
|
46
|
+
__exportStar(require("./booking-event.triggers"), exports);
|
|
47
|
+
// Booking event handlers (Eventarc → Email)
|
|
48
|
+
__exportStar(require("./booking-event.handlers"), exports);
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/events/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;;;;;;;;;;AAEH,oBAAoB;AACpB,iDAA+B;AAE/B,iCAAiC;AACjC,yDAAuC;AAEvC,kDAAkD;AAClD,2DAAyC;AAEzC,4CAA4C;AAC5C,2DAAyC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Check Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides endpoints to verify Firebase Functions availability.
|
|
5
|
+
* Used with Cloud Monitoring Uptime Checks for alerting.
|
|
6
|
+
*/
|
|
7
|
+
export interface HealthCheckResponse {
|
|
8
|
+
status: 'ok' | 'degraded' | 'error';
|
|
9
|
+
timestamp: string;
|
|
10
|
+
region: string;
|
|
11
|
+
version: string;
|
|
12
|
+
checks?: {
|
|
13
|
+
name: string;
|
|
14
|
+
status: 'ok' | 'error';
|
|
15
|
+
latencyMs?: number;
|
|
16
|
+
error?: string;
|
|
17
|
+
}[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a simple health check endpoint
|
|
21
|
+
*
|
|
22
|
+
* This is a lightweight HTTP function that Cloud Monitoring can ping.
|
|
23
|
+
* Returns 200 if functions are running, which triggers alerts if unreachable.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createHealthCheckFunction(): import("firebase-functions/v2/https").HttpsFunction;
|
|
26
|
+
/**
|
|
27
|
+
* Create a detailed health check with dependency checks
|
|
28
|
+
*
|
|
29
|
+
* Checks Firestore connectivity and other dependencies.
|
|
30
|
+
* Useful for debugging but more expensive to run.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createDetailedHealthCheckFunction(): import("firebase-functions/v2/https").HttpsFunction;
|
|
33
|
+
//# sourceMappingURL=health-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../../src/modules/health/health-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,wDAwBxC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,wDAyEhD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Health Check Functions
|
|
4
|
+
*
|
|
5
|
+
* Provides endpoints to verify Firebase Functions availability.
|
|
6
|
+
* Used with Cloud Monitoring Uptime Checks for alerting.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.createHealthCheckFunction = createHealthCheckFunction;
|
|
43
|
+
exports.createDetailedHealthCheckFunction = createDetailedHealthCheckFunction;
|
|
44
|
+
const https_1 = require("firebase-functions/v2/https");
|
|
45
|
+
const config_1 = require("../../config");
|
|
46
|
+
/**
|
|
47
|
+
* Create a simple health check endpoint
|
|
48
|
+
*
|
|
49
|
+
* This is a lightweight HTTP function that Cloud Monitoring can ping.
|
|
50
|
+
* Returns 200 if functions are running, which triggers alerts if unreachable.
|
|
51
|
+
*/
|
|
52
|
+
function createHealthCheckFunction() {
|
|
53
|
+
const config = (0, config_1.getConfig)();
|
|
54
|
+
return (0, https_1.onRequest)({
|
|
55
|
+
region: config.region,
|
|
56
|
+
// No auth required - this is a public health endpoint
|
|
57
|
+
invoker: 'public',
|
|
58
|
+
// Minimal resources
|
|
59
|
+
memory: '128MiB',
|
|
60
|
+
timeoutSeconds: 10,
|
|
61
|
+
maxInstances: 2,
|
|
62
|
+
}, async (req, res) => {
|
|
63
|
+
const response = {
|
|
64
|
+
status: 'ok',
|
|
65
|
+
timestamp: new Date().toISOString(),
|
|
66
|
+
region: config.region,
|
|
67
|
+
version: process.env.K_REVISION || 'unknown',
|
|
68
|
+
};
|
|
69
|
+
res.status(200).json(response);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create a detailed health check with dependency checks
|
|
74
|
+
*
|
|
75
|
+
* Checks Firestore connectivity and other dependencies.
|
|
76
|
+
* Useful for debugging but more expensive to run.
|
|
77
|
+
*/
|
|
78
|
+
function createDetailedHealthCheckFunction() {
|
|
79
|
+
const config = (0, config_1.getConfig)();
|
|
80
|
+
return (0, https_1.onRequest)({
|
|
81
|
+
region: config.region,
|
|
82
|
+
invoker: 'public',
|
|
83
|
+
memory: '256MiB',
|
|
84
|
+
timeoutSeconds: 30,
|
|
85
|
+
maxInstances: 2,
|
|
86
|
+
}, async (req, res) => {
|
|
87
|
+
const checks = [];
|
|
88
|
+
let overallStatus = 'ok';
|
|
89
|
+
// Check Firestore connectivity
|
|
90
|
+
try {
|
|
91
|
+
const start = Date.now();
|
|
92
|
+
const { getFirestore } = await Promise.resolve().then(() => __importStar(require('firebase-admin/firestore')));
|
|
93
|
+
const db = getFirestore();
|
|
94
|
+
// Simple read to verify connectivity
|
|
95
|
+
await db.collection('_health').doc('check').get();
|
|
96
|
+
checks.push({
|
|
97
|
+
name: 'firestore',
|
|
98
|
+
status: 'ok',
|
|
99
|
+
latencyMs: Date.now() - start,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
overallStatus = 'degraded';
|
|
104
|
+
checks.push({
|
|
105
|
+
name: 'firestore',
|
|
106
|
+
status: 'error',
|
|
107
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// Check Auth service
|
|
111
|
+
try {
|
|
112
|
+
const start = Date.now();
|
|
113
|
+
const { getAuth } = await Promise.resolve().then(() => __importStar(require('firebase-admin/auth')));
|
|
114
|
+
const auth = getAuth();
|
|
115
|
+
// Verify auth is initialized (doesn't make external call)
|
|
116
|
+
auth.tenantManager();
|
|
117
|
+
checks.push({
|
|
118
|
+
name: 'auth',
|
|
119
|
+
status: 'ok',
|
|
120
|
+
latencyMs: Date.now() - start,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
overallStatus = 'degraded';
|
|
125
|
+
checks.push({
|
|
126
|
+
name: 'auth',
|
|
127
|
+
status: 'error',
|
|
128
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const response = {
|
|
132
|
+
status: overallStatus,
|
|
133
|
+
timestamp: new Date().toISOString(),
|
|
134
|
+
region: config.region,
|
|
135
|
+
version: process.env.K_REVISION || 'unknown',
|
|
136
|
+
checks,
|
|
137
|
+
};
|
|
138
|
+
const statusCode = overallStatus === 'ok' ? 200 : overallStatus === 'degraded' ? 200 : 503;
|
|
139
|
+
res.status(statusCode).json(response);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=health-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../src/modules/health/health-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/health/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Health Check Module
|
|
4
|
+
*
|
|
5
|
+
* Provides health check endpoints for monitoring Firebase Functions availability.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./health-check"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/health/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,iDAA+B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-auth.triggers.d.ts","sourceRoot":"","sources":["../../../src/modules/user/user-auth.triggers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAE/B,iBAAiB,EAAE,GAAG,CAAC;CACxB;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,qBAA0B,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"user-auth.triggers.d.ts","sourceRoot":"","sources":["../../../src/modules/user/user-auth.triggers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAE/B,iBAAiB,EAAE,GAAG,CAAC;CACxB;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,qBAA0B,GAAG,gBAAgB,CAyE3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-auth.triggers.js","sourceRoot":"","sources":["../../../src/modules/user/user-auth.triggers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DH,
|
|
1
|
+
{"version":3,"file":"user-auth.triggers.js","sourceRoot":"","sources":["../../../src/modules/user/user-auth.triggers.ts"],"names":[],"mappings":"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"}
|