@zssz-soft/firebase-functions-shared 1.4.1 → 1.5.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/lib/index.d.ts CHANGED
@@ -15,4 +15,5 @@ export * from './modules/booking';
15
15
  export * from './modules/events';
16
16
  export * from './modules/error-reporting';
17
17
  export * from './modules/health';
18
+ export * from './modules/audit';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
package/lib/index.js CHANGED
@@ -31,4 +31,5 @@ __exportStar(require("./modules/booking"), exports);
31
31
  __exportStar(require("./modules/events"), exports);
32
32
  __exportStar(require("./modules/error-reporting"), exports);
33
33
  __exportStar(require("./modules/health"), exports);
34
+ __exportStar(require("./modules/audit"), exports);
34
35
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,sDAAoC;AACpC,kDAAgC;AAChC,oDAAkC;AAClC,iDAA+B;AAC/B,qDAAmC;AACnC,gDAA8B;AAC9B,oDAAkC;AAClC,mDAAiC;AACjC,4DAA0C;AAC1C,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,sDAAoC;AACpC,kDAAgC;AAChC,oDAAkC;AAClC,iDAA+B;AAC/B,qDAAmC;AACnC,gDAA8B;AAC9B,oDAAkC;AAClC,mDAAiC;AACjC,4DAA0C;AAC1C,mDAAiC;AACjC,kDAAgC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Server-Side Audit Models
3
+ *
4
+ * Extends the core audit models with server-specific types and metadata.
5
+ * These models are used by Firebase Cloud Functions to track operations.
6
+ */
7
+ /**
8
+ * Server-specific audit metadata
9
+ * Extends the base AuditMetadata with Cloud Functions context
10
+ */
11
+ export interface ServerAuditMetadata {
12
+ /** Cloud Function name */
13
+ functionName: string;
14
+ /** Cloud Function execution ID */
15
+ executionId?: string;
16
+ /** Cloud Function region */
17
+ region?: string;
18
+ /** Function revision/version */
19
+ revision?: string;
20
+ /** Trigger type (http, firestore, pubsub, eventarc, etc.) */
21
+ triggerType?: 'http' | 'firestore' | 'pubsub' | 'eventarc' | 'scheduler' | 'storage' | 'auth';
22
+ /** Document path for Firestore triggers */
23
+ documentPath?: string;
24
+ /** Event type for event-driven triggers */
25
+ eventType?: string;
26
+ /** Request information (for HTTP triggers) */
27
+ request?: {
28
+ method?: string;
29
+ url?: string;
30
+ ip?: string;
31
+ userAgent?: string;
32
+ origin?: string;
33
+ };
34
+ /** Performance metrics */
35
+ performance?: {
36
+ /** Duration in milliseconds */
37
+ durationMs?: number;
38
+ /** Memory usage in MB */
39
+ memoryMb?: number;
40
+ };
41
+ /** Additional custom metadata */
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * Server-side audit log entry
46
+ */
47
+ export interface ServerAuditLog {
48
+ /** Unique audit log ID (auto-generated) */
49
+ id?: string;
50
+ /** User ID who triggered the action (or 'system' for automated tasks) */
51
+ userId: string;
52
+ /** Action performed */
53
+ action: ServerAuditAction;
54
+ /** Resource affected by the action */
55
+ resource: ServerAuditResource;
56
+ /** Timestamp when action occurred (ISO string for Firestore) */
57
+ timestamp: string;
58
+ /** Server metadata */
59
+ metadata: ServerAuditMetadata;
60
+ /** Action result */
61
+ result: ServerAuditResult;
62
+ /** Additional context data */
63
+ context?: Record<string, unknown>;
64
+ }
65
+ /**
66
+ * Types of server-side actions that can be audited
67
+ */
68
+ export type ServerAuditAction = 'data.create' | 'data.read' | 'data.update' | 'data.delete' | 'data.batch_create' | 'data.batch_update' | 'data.batch_delete' | 'email.send' | 'email.send_batch' | 'email.template_render' | 'user.create' | 'user.update' | 'user.delete' | 'user.role_change' | 'user.password_reset' | 'auth.user_created' | 'auth.user_deleted' | 'auth.user_disabled' | 'auth.email_verified' | 'booking.created' | 'booking.updated' | 'booking.status_changed' | 'booking.cancelled' | 'booking.confirmed' | 'booking.completed' | 'workflow.transition' | 'workflow.state_change' | 'event.published' | 'event.received' | 'event.processed' | 'system.bootstrap' | 'system.cleanup' | 'system.migration' | 'system.backup' | 'security.permission_denied' | 'security.unauthorized_access' | 'security.rate_limited' | 'storage.upload' | 'storage.delete' | 'storage.thumbnail_generated' | string;
69
+ /**
70
+ * Resource types that can be audited on the server
71
+ */
72
+ export interface ServerAuditResource {
73
+ /** Type of resource (e.g., 'booking', 'user', 'apartment') */
74
+ type: string;
75
+ /** Resource identifier */
76
+ id?: string;
77
+ /** Firestore collection path */
78
+ collection?: string;
79
+ /** Parent resource if applicable */
80
+ parent?: {
81
+ type: string;
82
+ id: string;
83
+ };
84
+ /** Additional resource metadata */
85
+ metadata?: Record<string, unknown>;
86
+ }
87
+ /**
88
+ * Result of an audited action
89
+ */
90
+ export interface ServerAuditResult {
91
+ /** Whether the action was successful */
92
+ success: boolean;
93
+ /** Status code or error code */
94
+ code?: string | number;
95
+ /** Human-readable message */
96
+ message?: string;
97
+ /** Error details if action failed */
98
+ error?: {
99
+ type: string;
100
+ message: string;
101
+ stack?: string;
102
+ };
103
+ /** Changes made (for update actions) */
104
+ changes?: {
105
+ before?: unknown;
106
+ after?: unknown;
107
+ fields?: string[];
108
+ };
109
+ /** Additional result data */
110
+ data?: unknown;
111
+ }
112
+ /**
113
+ * Configuration for the audit service
114
+ */
115
+ export interface AuditConfig {
116
+ /** Firestore collection name for audit logs */
117
+ collection?: string;
118
+ /** Whether to enable audit logging (default: true) */
119
+ enabled?: boolean;
120
+ /** Default function name to use if not provided */
121
+ defaultFunctionName?: string;
122
+ /** Cloud Functions region */
123
+ region?: string;
124
+ /** Actions to skip (not audit) */
125
+ skipActions?: ServerAuditAction[];
126
+ /** Resource types to skip (not audit) */
127
+ skipResourceTypes?: string[];
128
+ /** Whether to include full error stack traces (default: false in production) */
129
+ includeStackTraces?: boolean;
130
+ }
131
+ /**
132
+ * Default audit configuration
133
+ */
134
+ export declare const DEFAULT_AUDIT_CONFIG: Required<AuditConfig>;
135
+ /**
136
+ * Options for creating an audit log entry
137
+ */
138
+ export interface AuditLogOptions {
139
+ /** User ID (defaults to 'system') */
140
+ userId?: string;
141
+ /** Action performed */
142
+ action: ServerAuditAction;
143
+ /** Resource being acted upon */
144
+ resource: ServerAuditResource;
145
+ /** Whether the action was successful */
146
+ success: boolean;
147
+ /** Optional result message */
148
+ message?: string;
149
+ /** Error if action failed */
150
+ error?: Error;
151
+ /** Changes made */
152
+ changes?: ServerAuditResult['changes'];
153
+ /** Additional context */
154
+ context?: Record<string, unknown>;
155
+ /** Performance timing */
156
+ durationMs?: number;
157
+ }
158
+ //# sourceMappingURL=audit.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.models.d.ts","sourceRoot":"","sources":["../../../src/modules/audit/audit.models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Server-Side Audit Models
4
+ *
5
+ * Extends the core audit models with server-specific types and metadata.
6
+ * These models are used by Firebase Cloud Functions to track operations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DEFAULT_AUDIT_CONFIG = void 0;
10
+ /**
11
+ * Default audit configuration
12
+ */
13
+ exports.DEFAULT_AUDIT_CONFIG = {
14
+ collection: 'audit_logs',
15
+ enabled: true,
16
+ defaultFunctionName: 'unknown',
17
+ region: 'europe-west1',
18
+ skipActions: [],
19
+ skipResourceTypes: [],
20
+ includeStackTraces: process.env.NODE_ENV !== 'production',
21
+ };
22
+ //# sourceMappingURL=audit.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.models.js","sourceRoot":"","sources":["../../../src/modules/audit/audit.models.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiOH;;GAEG;AACU,QAAA,oBAAoB,GAA0B;IACzD,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,SAAS;IAC9B,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE,EAAE;IACf,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;CAC1D,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Server-Side Audit Service
3
+ *
4
+ * Provides audit logging for Firebase Cloud Functions.
5
+ * Writes audit logs to Firestore with server-specific metadata.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * const auditor = new ServerAuditService({ functionName: 'onBookingCreated' });
10
+ *
11
+ * // Log a successful operation
12
+ * await auditor.logSuccess({
13
+ * action: 'booking.created',
14
+ * resource: { type: 'booking', id: bookingId },
15
+ * userId: userId,
16
+ * });
17
+ *
18
+ * // Log a failed operation
19
+ * await auditor.logFailure({
20
+ * action: 'email.send',
21
+ * resource: { type: 'email', id: emailId },
22
+ * error: new Error('SMTP connection failed'),
23
+ * });
24
+ * ```
25
+ */
26
+ import { ServerAuditMetadata, AuditConfig, AuditLogOptions } from './audit.models';
27
+ /**
28
+ * Server-side audit service for Cloud Functions
29
+ */
30
+ export declare class ServerAuditService {
31
+ private config;
32
+ private db;
33
+ private metadata;
34
+ constructor(options: {
35
+ functionName: string;
36
+ triggerType?: ServerAuditMetadata['triggerType'];
37
+ documentPath?: string;
38
+ eventType?: string;
39
+ config?: Partial<AuditConfig>;
40
+ });
41
+ /**
42
+ * Log a successful operation
43
+ */
44
+ logSuccess(options: Omit<AuditLogOptions, 'success'>): Promise<string | null>;
45
+ /**
46
+ * Log a failed operation
47
+ */
48
+ logFailure(options: Omit<AuditLogOptions, 'success'> & {
49
+ error: Error;
50
+ }): Promise<string | null>;
51
+ /**
52
+ * Log an audit entry
53
+ */
54
+ log(options: AuditLogOptions): Promise<string | null>;
55
+ /**
56
+ * Log with HTTP request context
57
+ */
58
+ withRequest(request: {
59
+ method?: string;
60
+ url?: string;
61
+ ip?: string;
62
+ userAgent?: string;
63
+ origin?: string;
64
+ }): ServerAuditService;
65
+ /**
66
+ * Add performance timing
67
+ */
68
+ withPerformance(performance: {
69
+ durationMs?: number;
70
+ memoryMb?: number;
71
+ }): ServerAuditService;
72
+ /**
73
+ * Create the audit log object
74
+ */
75
+ private createAuditLog;
76
+ }
77
+ /**
78
+ * Create an audit service for a specific function
79
+ *
80
+ * @param functionName - Name of the Cloud Function
81
+ * @param options - Additional options
82
+ * @returns ServerAuditService instance
83
+ */
84
+ export declare function createAuditService(functionName: string, options?: {
85
+ triggerType?: ServerAuditMetadata['triggerType'];
86
+ documentPath?: string;
87
+ eventType?: string;
88
+ config?: Partial<AuditConfig>;
89
+ }): ServerAuditService;
90
+ /**
91
+ * Wrap an async function with automatic audit logging
92
+ *
93
+ * @param functionName - Name of the Cloud Function
94
+ * @param action - The action being performed
95
+ * @param resource - The resource being acted upon
96
+ * @param fn - The async function to wrap
97
+ * @returns Wrapped function with automatic audit logging
98
+ */
99
+ export declare function withAuditLogging<T extends (...args: unknown[]) => Promise<unknown>>(functionName: string, action: AuditLogOptions['action'], resource: AuditLogOptions['resource'], fn: T, options?: {
100
+ userId?: string;
101
+ config?: Partial<AuditConfig>;
102
+ }): T;
103
+ /**
104
+ * Audit decorator for Firestore triggers
105
+ *
106
+ * Helper to create audit context from Firestore event data
107
+ */
108
+ export declare function createFirestoreAuditContext(event: {
109
+ params: Record<string, string>;
110
+ data?: {
111
+ before?: {
112
+ data(): Record<string, unknown> | undefined;
113
+ };
114
+ after?: {
115
+ data(): Record<string, unknown> | undefined;
116
+ };
117
+ data(): Record<string, unknown> | undefined;
118
+ };
119
+ }): {
120
+ documentPath: string;
121
+ changes?: {
122
+ before?: Record<string, unknown>;
123
+ after?: Record<string, unknown>;
124
+ };
125
+ };
126
+ //# sourceMappingURL=audit.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.service.d.ts","sourceRoot":"","sources":["../../../src/modules/audit/audit.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ /**
3
+ * Server-Side Audit Service
4
+ *
5
+ * Provides audit logging for Firebase Cloud Functions.
6
+ * Writes audit logs to Firestore with server-specific metadata.
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * const auditor = new ServerAuditService({ functionName: 'onBookingCreated' });
11
+ *
12
+ * // Log a successful operation
13
+ * await auditor.logSuccess({
14
+ * action: 'booking.created',
15
+ * resource: { type: 'booking', id: bookingId },
16
+ * userId: userId,
17
+ * });
18
+ *
19
+ * // Log a failed operation
20
+ * await auditor.logFailure({
21
+ * action: 'email.send',
22
+ * resource: { type: 'email', id: emailId },
23
+ * error: new Error('SMTP connection failed'),
24
+ * });
25
+ * ```
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.ServerAuditService = void 0;
29
+ exports.createAuditService = createAuditService;
30
+ exports.withAuditLogging = withAuditLogging;
31
+ exports.createFirestoreAuditContext = createFirestoreAuditContext;
32
+ const firestore_1 = require("firebase-admin/firestore");
33
+ const firebase_functions_1 = require("firebase-functions");
34
+ const audit_models_1 = require("./audit.models");
35
+ /**
36
+ * Server-side audit service for Cloud Functions
37
+ */
38
+ class ServerAuditService {
39
+ constructor(options) {
40
+ this.config = Object.assign(Object.assign({}, audit_models_1.DEFAULT_AUDIT_CONFIG), options.config);
41
+ this.db = (0, firestore_1.getFirestore)();
42
+ // Build base metadata from Cloud Functions environment
43
+ this.metadata = {
44
+ functionName: options.functionName,
45
+ executionId: process.env.FUNCTION_SIGNATURE_TYPE
46
+ ? `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
47
+ : undefined,
48
+ region: this.config.region || process.env.FUNCTION_REGION,
49
+ revision: process.env.K_REVISION,
50
+ triggerType: options.triggerType,
51
+ documentPath: options.documentPath,
52
+ eventType: options.eventType,
53
+ };
54
+ }
55
+ /**
56
+ * Log a successful operation
57
+ */
58
+ async logSuccess(options) {
59
+ return this.log(Object.assign(Object.assign({}, options), { success: true }));
60
+ }
61
+ /**
62
+ * Log a failed operation
63
+ */
64
+ async logFailure(options) {
65
+ return this.log(Object.assign(Object.assign({}, options), { success: false }));
66
+ }
67
+ /**
68
+ * Log an audit entry
69
+ */
70
+ async log(options) {
71
+ if (!this.config.enabled) {
72
+ return null;
73
+ }
74
+ // Check if action or resource type should be skipped
75
+ if (this.config.skipActions.includes(options.action)) {
76
+ return null;
77
+ }
78
+ if (this.config.skipResourceTypes.includes(options.resource.type)) {
79
+ return null;
80
+ }
81
+ try {
82
+ const auditLog = this.createAuditLog(options);
83
+ const docRef = await this.db.collection(this.config.collection).add(Object.assign(Object.assign({}, auditLog), { createdAt: firestore_1.FieldValue.serverTimestamp() }));
84
+ firebase_functions_1.logger.debug(`[Audit] Logged ${options.action} for ${options.resource.type}`, {
85
+ auditId: docRef.id,
86
+ action: options.action,
87
+ resourceType: options.resource.type,
88
+ resourceId: options.resource.id,
89
+ success: options.success,
90
+ });
91
+ return docRef.id;
92
+ }
93
+ catch (error) {
94
+ // Don't let audit failures break the main operation
95
+ firebase_functions_1.logger.error('[Audit] Failed to write audit log', {
96
+ error: error instanceof Error ? error.message : String(error),
97
+ action: options.action,
98
+ resource: options.resource,
99
+ });
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Log with HTTP request context
105
+ */
106
+ withRequest(request) {
107
+ this.metadata.request = request;
108
+ return this;
109
+ }
110
+ /**
111
+ * Add performance timing
112
+ */
113
+ withPerformance(performance) {
114
+ this.metadata.performance = performance;
115
+ return this;
116
+ }
117
+ /**
118
+ * Create the audit log object
119
+ */
120
+ createAuditLog(options) {
121
+ const now = new Date().toISOString();
122
+ const auditLog = {
123
+ userId: options.userId || 'system',
124
+ action: options.action,
125
+ resource: options.resource,
126
+ timestamp: now,
127
+ metadata: Object.assign(Object.assign({}, this.metadata), (options.durationMs && {
128
+ performance: Object.assign(Object.assign({}, this.metadata.performance), { durationMs: options.durationMs }),
129
+ })),
130
+ result: {
131
+ success: options.success,
132
+ message: options.message,
133
+ },
134
+ };
135
+ // Add error details if present
136
+ if (options.error) {
137
+ auditLog.result.error = Object.assign({ type: options.error.name || 'Error', message: options.error.message }, (this.config.includeStackTraces && { stack: options.error.stack }));
138
+ }
139
+ // Add changes if present
140
+ if (options.changes) {
141
+ auditLog.result.changes = options.changes;
142
+ }
143
+ // Add context if present
144
+ if (options.context) {
145
+ auditLog.context = options.context;
146
+ }
147
+ return auditLog;
148
+ }
149
+ }
150
+ exports.ServerAuditService = ServerAuditService;
151
+ /**
152
+ * Create an audit service for a specific function
153
+ *
154
+ * @param functionName - Name of the Cloud Function
155
+ * @param options - Additional options
156
+ * @returns ServerAuditService instance
157
+ */
158
+ function createAuditService(functionName, options) {
159
+ return new ServerAuditService(Object.assign({ functionName }, options));
160
+ }
161
+ /**
162
+ * Wrap an async function with automatic audit logging
163
+ *
164
+ * @param functionName - Name of the Cloud Function
165
+ * @param action - The action being performed
166
+ * @param resource - The resource being acted upon
167
+ * @param fn - The async function to wrap
168
+ * @returns Wrapped function with automatic audit logging
169
+ */
170
+ function withAuditLogging(functionName, action, resource, fn, options) {
171
+ const auditor = createAuditService(functionName, { config: options === null || options === void 0 ? void 0 : options.config });
172
+ return (async (...args) => {
173
+ const startTime = Date.now();
174
+ try {
175
+ const result = await fn(...args);
176
+ const durationMs = Date.now() - startTime;
177
+ await auditor.logSuccess({
178
+ action,
179
+ resource,
180
+ userId: options === null || options === void 0 ? void 0 : options.userId,
181
+ durationMs,
182
+ context: { resultType: typeof result },
183
+ });
184
+ return result;
185
+ }
186
+ catch (error) {
187
+ const durationMs = Date.now() - startTime;
188
+ await auditor.logFailure({
189
+ action,
190
+ resource,
191
+ userId: options === null || options === void 0 ? void 0 : options.userId,
192
+ error: error instanceof Error ? error : new Error(String(error)),
193
+ durationMs,
194
+ });
195
+ throw error;
196
+ }
197
+ });
198
+ }
199
+ /**
200
+ * Audit decorator for Firestore triggers
201
+ *
202
+ * Helper to create audit context from Firestore event data
203
+ */
204
+ function createFirestoreAuditContext(event) {
205
+ var _a, _b;
206
+ const pathParts = Object.entries(event.params)
207
+ .map(([key, value]) => `${key}/${value}`)
208
+ .join('/');
209
+ const context = {
210
+ documentPath: pathParts,
211
+ };
212
+ // Extract before/after for update events
213
+ if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.before) && ((_b = event.data) === null || _b === void 0 ? void 0 : _b.after)) {
214
+ context.changes = {
215
+ before: event.data.before.data(),
216
+ after: event.data.after.data(),
217
+ };
218
+ }
219
+ return context;
220
+ }
221
+ //# sourceMappingURL=audit.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../../src/modules/audit/audit.service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAqLH,gDAaC;AAWD,4CA0CC;AAOD,kEA+BC;AA3RD,wDAA+E;AAC/E,2DAA4C;AAC5C,iDAMwB;AAExB;;GAEG;AACH,MAAa,kBAAkB;IAK7B,YAAY,OAMX;QACC,IAAI,CAAC,MAAM,mCAAQ,mCAAoB,GAAK,OAAO,CAAC,MAAM,CAAE,CAAC;QAC7D,IAAI,CAAC,EAAE,GAAG,IAAA,wBAAY,GAAE,CAAC;QAEzB,uDAAuD;QACvD,IAAI,CAAC,QAAQ,GAAG;YACd,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;gBAC9C,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAC5D,CAAC,CAAC,SAAS;YACb,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;YACzD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAyC;QACxD,OAAO,IAAI,CAAC,GAAG,iCAAM,OAAO,KAAE,OAAO,EAAE,IAAI,IAAG,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,OAA4D;QAE5D,OAAO,IAAI,CAAC,GAAG,iCAAM,OAAO,KAAE,OAAO,EAAE,KAAK,IAAG,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAwB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,iCAC9D,QAAQ,KACX,SAAS,EAAE,sBAAU,CAAC,eAAe,EAAE,IACvC,CAAC;YAEH,2BAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;gBAC5E,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBACnC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oDAAoD;YACpD,2BAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;gBAChD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAMX;QACC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,WAAuD;QACrE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAwB;QAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,QAAQ,GAAmB;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,GAAG;YACd,QAAQ,kCACH,IAAI,CAAC,QAAQ,GACb,CAAC,OAAO,CAAC,UAAU,IAAI;gBACxB,WAAW,kCACN,IAAI,CAAC,QAAQ,CAAC,WAAW,KAC5B,UAAU,EAAE,OAAO,CAAC,UAAU,GAC/B;aACF,CAAC,CACH;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB;SACF,CAAC;QAEF,+BAA+B;QAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,QAAQ,CAAC,MAAM,CAAC,KAAK,mBACnB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,EACnC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAC3B,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CACtE,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5C,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACrC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA7JD,gDA6JC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,YAAoB,EACpB,OAKC;IAED,OAAO,IAAI,kBAAkB,iBAC3B,YAAY,IACT,OAAO,EACV,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,YAAoB,EACpB,MAAiC,EACjC,QAAqC,EACrC,EAAK,EACL,OAGC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAC,CAAC;IAE9E,OAAO,CAAC,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,MAAM,OAAO,CAAC,UAAU,CAAC;gBACvB,MAAM;gBACN,QAAQ;gBACR,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;gBACvB,UAAU;gBACV,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,MAAM,EAAE;aACvC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,MAAM,OAAO,CAAC,UAAU,CAAC;gBACvB,MAAM;gBACN,QAAQ;gBACR,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;gBACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,UAAU;aACX,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAM,CAAC;AACV,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,KAO3C;;IAOC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,OAAO,GAAmD;QAC9D,YAAY,EAAE,SAAS;KACxB,CAAC;IAEF,yCAAyC;IACzC,IAAI,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,MAAM,MAAI,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,CAAA,EAAE,CAAC;QAC5C,OAAO,CAAC,OAAO,GAAG;YAChB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAChC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Server-Side Audit Module
3
+ *
4
+ * Provides audit logging capabilities for Firebase Cloud Functions.
5
+ * Tracks operations, errors, and user actions in Firestore.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * import { createAuditService, withAuditLogging } from '@zssz-soft/firebase-functions-shared';
10
+ *
11
+ * // Create an audit service for a function
12
+ * const auditor = createAuditService('onBookingCreated', {
13
+ * triggerType: 'firestore',
14
+ * documentPath: 'booking/{bookingId}',
15
+ * });
16
+ *
17
+ * // Log operations
18
+ * await auditor.logSuccess({
19
+ * action: 'booking.created',
20
+ * resource: { type: 'booking', id: bookingId },
21
+ * userId: userId,
22
+ * });
23
+ *
24
+ * // Or use the wrapper for automatic logging
25
+ * const wrappedFn = withAuditLogging('processBooking', 'booking.created', { type: 'booking' }, myAsyncFn);
26
+ * ```
27
+ */
28
+ export * from './audit.models';
29
+ export * from './audit.service';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/audit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Server-Side Audit Module
4
+ *
5
+ * Provides audit logging capabilities for Firebase Cloud Functions.
6
+ * Tracks operations, errors, and user actions in Firestore.
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * import { createAuditService, withAuditLogging } from '@zssz-soft/firebase-functions-shared';
11
+ *
12
+ * // Create an audit service for a function
13
+ * const auditor = createAuditService('onBookingCreated', {
14
+ * triggerType: 'firestore',
15
+ * documentPath: 'booking/{bookingId}',
16
+ * });
17
+ *
18
+ * // Log operations
19
+ * await auditor.logSuccess({
20
+ * action: 'booking.created',
21
+ * resource: { type: 'booking', id: bookingId },
22
+ * userId: userId,
23
+ * });
24
+ *
25
+ * // Or use the wrapper for automatic logging
26
+ * const wrappedFn = withAuditLogging('processBooking', 'booking.created', { type: 'booking' }, myAsyncFn);
27
+ * ```
28
+ */
29
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ var desc = Object.getOwnPropertyDescriptor(m, k);
32
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
33
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
+ }
35
+ Object.defineProperty(o, k2, desc);
36
+ }) : (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ o[k2] = m[k];
39
+ }));
40
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
41
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ __exportStar(require("./audit.models"), exports);
45
+ __exportStar(require("./audit.service"), exports);
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/audit/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,kDAAgC"}
@@ -1 +1 @@
1
- {"version":3,"file":"booking-event.handlers.d.ts","sourceRoot":"","sources":["../../../src/modules/events/booking-event.handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,OAAO,EACL,kBAAkB,EAKnB,MAAM,wBAAwB,CAAC;AAwGhC;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAwH/E;;;;;OAKG;;IAqBH;;;OAGG;;;;;;;EAmEN"}
1
+ {"version":3,"file":"booking-event.handlers.d.ts","sourceRoot":"","sources":["../../../src/modules/events/booking-event.handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,OAAO,EACL,kBAAkB,EAKnB,MAAM,wBAAwB,CAAC;AAwGhC;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAqK/E;;;;;OAKG;;IAqBH;;;OAGG;;;;;;;EAmEN"}
@@ -17,6 +17,7 @@ const eventarc_1 = require("firebase-functions/v2/eventarc");
17
17
  const email_service_1 = require("../email/email.service");
18
18
  const email_validator_1 = require("../email/email.validator");
19
19
  const error_reporting_1 = require("../error-reporting");
20
+ const audit_1 = require("../audit");
20
21
  const booking_email_templates_1 = require("../booking/booking-email.templates");
21
22
  const booking_event_models_1 = require("./booking-event.models");
22
23
  /**
@@ -110,6 +111,10 @@ function getAdminEmail(booking, cfg) {
110
111
  function createBookingEmailHandlers(config = {}) {
111
112
  const cfg = Object.assign(Object.assign({}, booking_event_models_1.DEFAULT_BOOKING_EVENT_CONFIG), config);
112
113
  const errorReporter = (0, error_reporting_1.createErrorReporter)('BookingEmailHandler');
114
+ const auditor = (0, audit_1.createAuditService)('BookingEmailHandler', {
115
+ triggerType: 'eventarc',
116
+ config: { region: cfg.region },
117
+ });
113
118
  /**
114
119
  * Send email using the email service
115
120
  */
@@ -133,7 +138,7 @@ function createBookingEmailHandlers(config = {}) {
133
138
  * Handle a booking event and send appropriate notifications
134
139
  */
135
140
  async function handleBookingEvent(eventType, payload) {
136
- var _a, _b;
141
+ var _a, _b, _c;
137
142
  const notificationConfig = NotificationMatrix[eventType];
138
143
  if (!notificationConfig) {
139
144
  firebase_functions_1.logger.info(`[EmailHandler] No notification config for event: ${eventType}`);
@@ -145,16 +150,33 @@ function createBookingEmailHandlers(config = {}) {
145
150
  sendToGuest: notificationConfig.sendToGuest,
146
151
  sendToAdmin: notificationConfig.sendToAdmin,
147
152
  });
153
+ // Audit: Event received
154
+ await auditor.logSuccess({
155
+ action: 'event.received',
156
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
157
+ context: { eventType, transitionId: (_b = payload.transition) === null || _b === void 0 ? void 0 : _b.transitionId },
158
+ });
148
159
  // Send guest email
149
160
  if (notificationConfig.sendToGuest && notificationConfig.guestTemplate) {
150
- const guestEmail = (_b = booking.guest) === null || _b === void 0 ? void 0 : _b.email;
161
+ const guestEmail = (_c = booking.guest) === null || _c === void 0 ? void 0 : _c.email;
151
162
  if (guestEmail && (0, email_validator_1.validateEmail)(guestEmail)) {
152
163
  try {
153
164
  const success = await sendEmail(guestEmail, notificationConfig.guestTemplate, booking, context);
154
165
  if (success) {
155
166
  firebase_functions_1.logger.info(`[EmailHandler] Guest email sent for ${eventType}: ${bookingId}`);
167
+ await auditor.logSuccess({
168
+ action: 'email.send',
169
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
170
+ context: { eventType, recipient: 'guest', email: guestEmail },
171
+ });
156
172
  }
157
173
  else {
174
+ await auditor.logFailure({
175
+ action: 'email.send',
176
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
177
+ error: new Error('Email send returned false'),
178
+ context: { eventType, recipient: 'guest', email: guestEmail },
179
+ });
158
180
  errorReporter.warn(new Error('Guest email send returned false'), {
159
181
  requestId: bookingId,
160
182
  metadata: { type: 'guest_email_failed', eventType, email: guestEmail },
@@ -162,6 +184,12 @@ function createBookingEmailHandlers(config = {}) {
162
184
  }
163
185
  }
164
186
  catch (error) {
187
+ await auditor.logFailure({
188
+ action: 'email.send',
189
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
190
+ error: error instanceof Error ? error : new Error(String(error)),
191
+ context: { eventType, recipient: 'guest', email: guestEmail },
192
+ });
165
193
  errorReporter.report(error, {
166
194
  requestId: bookingId,
167
195
  metadata: { type: 'guest_email_error', eventType, email: guestEmail },
@@ -182,8 +210,19 @@ function createBookingEmailHandlers(config = {}) {
182
210
  const success = await sendEmail(adminEmail, notificationConfig.adminTemplate, booking, context);
183
211
  if (success) {
184
212
  firebase_functions_1.logger.info(`[EmailHandler] Admin email sent for ${eventType}: ${bookingId}`);
213
+ await auditor.logSuccess({
214
+ action: 'email.send',
215
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
216
+ context: { eventType, recipient: 'admin', email: adminEmail },
217
+ });
185
218
  }
186
219
  else {
220
+ await auditor.logFailure({
221
+ action: 'email.send',
222
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
223
+ error: new Error('Email send returned false'),
224
+ context: { eventType, recipient: 'admin', email: adminEmail },
225
+ });
187
226
  errorReporter.warn(new Error('Admin email send returned false'), {
188
227
  requestId: bookingId,
189
228
  metadata: { type: 'admin_email_failed', eventType, email: adminEmail },
@@ -191,6 +230,12 @@ function createBookingEmailHandlers(config = {}) {
191
230
  }
192
231
  }
193
232
  catch (error) {
233
+ await auditor.logFailure({
234
+ action: 'email.send',
235
+ resource: { type: 'booking', id: bookingId, collection: cfg.bookingCollection },
236
+ error: error instanceof Error ? error : new Error(String(error)),
237
+ context: { eventType, recipient: 'admin', email: adminEmail },
238
+ });
194
239
  errorReporter.report(error, {
195
240
  requestId: bookingId,
196
241
  metadata: { type: 'admin_email_error', eventType, email: adminEmail },
@@ -1 +1 @@
1
- {"version":3,"file":"booking-event.handlers.js","sourceRoot":"","sources":["../../../src/modules/events/booking-event.handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"booking-event.handlers.js","sourceRoot":"","sources":["../../../src/modules/events/booking-event.handlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"booking-event.triggers.d.ts","sourceRoot":"","sources":["../../../src/modules/events/booking-event.triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EACL,kBAAkB,EAOnB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAkE/E;;;;;;OAMG;;;;IA4CH;;;;;OAKG;;;;EA0DN"}
1
+ {"version":3,"file":"booking-event.triggers.d.ts","sourceRoot":"","sources":["../../../src/modules/events/booking-event.triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EACL,kBAAkB,EAOnB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IA+F/E;;;;;;OAMG;;;;IA4CH;;;;;OAKG;;;;EA0DN"}
@@ -15,6 +15,7 @@ const firebase_functions_1 = require("firebase-functions");
15
15
  const firestore_1 = require("firebase-functions/v2/firestore");
16
16
  const eventarc_1 = require("firebase-admin/eventarc");
17
17
  const error_reporting_1 = require("../error-reporting");
18
+ const audit_1 = require("../audit");
18
19
  const booking_event_models_1 = require("./booking-event.models");
19
20
  /**
20
21
  * Create booking event publisher triggers
@@ -32,6 +33,10 @@ const booking_event_models_1 = require("./booking-event.models");
32
33
  function createBookingEventTriggers(config = {}) {
33
34
  const cfg = Object.assign(Object.assign({}, booking_event_models_1.DEFAULT_BOOKING_EVENT_CONFIG), config);
34
35
  const errorReporter = (0, error_reporting_1.createErrorReporter)('BookingEventPublisher');
36
+ const auditor = (0, audit_1.createAuditService)('BookingEventPublisher', {
37
+ triggerType: 'firestore',
38
+ config: { region: cfg.region },
39
+ });
35
40
  /**
36
41
  * Publish a booking event to Eventarc
37
42
  */
@@ -48,8 +53,31 @@ function createBookingEventTriggers(config = {}) {
48
53
  from: payload.transition.from,
49
54
  to: payload.transition.to,
50
55
  });
56
+ // Audit: Event published successfully
57
+ await auditor.logSuccess({
58
+ action: 'event.published',
59
+ resource: { type: 'booking', id: payload.bookingId, collection: cfg.bookingCollection },
60
+ userId: payload.transition.triggeredBy,
61
+ context: {
62
+ eventType,
63
+ transitionId: payload.transition.transitionId,
64
+ from: payload.transition.from,
65
+ to: payload.transition.to,
66
+ },
67
+ });
51
68
  }
52
69
  catch (error) {
70
+ // Audit: Event publish failed
71
+ await auditor.logFailure({
72
+ action: 'event.published',
73
+ resource: { type: 'booking', id: payload.bookingId, collection: cfg.bookingCollection },
74
+ userId: payload.transition.triggeredBy,
75
+ error: error instanceof Error ? error : new Error(String(error)),
76
+ context: {
77
+ eventType,
78
+ transitionId: payload.transition.transitionId,
79
+ },
80
+ });
53
81
  // Log but don't throw - we don't want to fail the Firestore operation
54
82
  errorReporter.report(error, {
55
83
  requestId: payload.bookingId,
@@ -1 +1 @@
1
- {"version":3,"file":"booking-event.triggers.js","sourceRoot":"","sources":["../../../src/modules/events/booking-event.triggers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"booking-event.triggers.js","sourceRoot":"","sources":["../../../src/modules/events/booking-event.triggers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zssz-soft/firebase-functions-shared",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "Shared Firebase Cloud Functions modules for LodgeFlow applications",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -29,7 +29,9 @@
29
29
  "authentication",
30
30
  "permissions",
31
31
  "security",
32
- "rbac"
32
+ "rbac",
33
+ "audit",
34
+ "logging"
33
35
  ],
34
36
  "author": "ZS-Soft <contact@zs-soft.hu>",
35
37
  "license": "UNLICENSED",