hazo_notify 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +1 -5
  2. package/data/templates/email_signature.html +11 -0
  3. package/data/templates/email_signature.txt +4 -0
  4. package/data/templates/email_verification.html +64 -0
  5. package/data/templates/email_verification.txt +11 -0
  6. package/data/templates/forgot_password.html +64 -0
  7. package/data/templates/forgot_password.txt +11 -0
  8. package/data/templates/manifest.json +86 -0
  9. package/data/templates/welcome_email.html +54 -0
  10. package/data/templates/welcome_email.txt +8 -0
  11. package/dist/{lib/emailer → emailer}/emailer.d.ts +2 -2
  12. package/dist/emailer/emailer.d.ts.map +1 -0
  13. package/dist/{lib/emailer → emailer}/emailer.js +38 -24
  14. package/dist/emailer/emailer.js.map +1 -0
  15. package/dist/{lib/emailer → emailer}/index.d.ts +1 -0
  16. package/dist/emailer/index.d.ts.map +1 -0
  17. package/dist/{lib/emailer → emailer}/index.js +5 -1
  18. package/dist/emailer/index.js.map +1 -0
  19. package/dist/{lib/emailer → emailer}/providers/index.d.ts +1 -1
  20. package/dist/emailer/providers/index.d.ts.map +1 -0
  21. package/dist/emailer/providers/index.js.map +1 -0
  22. package/dist/{lib/emailer → emailer}/providers/pop3_provider.d.ts +3 -2
  23. package/dist/emailer/providers/pop3_provider.d.ts.map +1 -0
  24. package/dist/{lib/emailer → emailer}/providers/pop3_provider.js +2 -1
  25. package/dist/emailer/providers/pop3_provider.js.map +1 -0
  26. package/dist/{lib/emailer → emailer}/providers/smtp_provider.d.ts +3 -2
  27. package/dist/emailer/providers/smtp_provider.d.ts.map +1 -0
  28. package/dist/{lib/emailer → emailer}/providers/smtp_provider.js +2 -1
  29. package/dist/emailer/providers/smtp_provider.js.map +1 -0
  30. package/dist/{lib/emailer → emailer}/providers/zeptomail_provider.d.ts +3 -2
  31. package/dist/emailer/providers/zeptomail_provider.d.ts.map +1 -0
  32. package/dist/{lib/emailer → emailer}/providers/zeptomail_provider.js +56 -38
  33. package/dist/emailer/providers/zeptomail_provider.js.map +1 -0
  34. package/dist/{lib/emailer → emailer}/types.d.ts +13 -1
  35. package/dist/emailer/types.d.ts.map +1 -0
  36. package/dist/emailer/types.js.map +1 -0
  37. package/dist/{lib/emailer → emailer}/utils/constants.d.ts +1 -0
  38. package/dist/emailer/utils/constants.d.ts.map +1 -0
  39. package/dist/emailer/utils/constants.js.map +1 -0
  40. package/dist/emailer/utils/index.d.ts.map +1 -0
  41. package/dist/emailer/utils/index.js.map +1 -0
  42. package/dist/emailer/utils/logger.d.ts +48 -0
  43. package/dist/emailer/utils/logger.d.ts.map +1 -0
  44. package/dist/emailer/utils/logger.js +98 -0
  45. package/dist/emailer/utils/logger.js.map +1 -0
  46. package/dist/emailer/utils/validation.d.ts.map +1 -0
  47. package/dist/emailer/utils/validation.js.map +1 -0
  48. package/dist/index.d.ts +7 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/{lib/index.js → index.js} +2 -1
  51. package/dist/index.js.map +1 -0
  52. package/dist/template_manager/config/config_loader.d.ts +48 -0
  53. package/dist/template_manager/config/config_loader.d.ts.map +1 -0
  54. package/dist/template_manager/config/config_loader.js +161 -0
  55. package/dist/template_manager/config/config_loader.js.map +1 -0
  56. package/dist/template_manager/config/constants.d.ts +101 -0
  57. package/dist/template_manager/config/constants.d.ts.map +1 -0
  58. package/dist/template_manager/config/constants.js +163 -0
  59. package/dist/template_manager/config/constants.js.map +1 -0
  60. package/dist/template_manager/config/index.d.ts +6 -0
  61. package/dist/template_manager/config/index.d.ts.map +1 -0
  62. package/dist/template_manager/config/index.js +24 -0
  63. package/dist/template_manager/config/index.js.map +1 -0
  64. package/dist/template_manager/db/category_repository.d.ts +57 -0
  65. package/dist/template_manager/db/category_repository.d.ts.map +1 -0
  66. package/dist/template_manager/db/category_repository.js +326 -0
  67. package/dist/template_manager/db/category_repository.js.map +1 -0
  68. package/dist/template_manager/db/index.d.ts +6 -0
  69. package/dist/template_manager/db/index.d.ts.map +1 -0
  70. package/dist/template_manager/db/index.js +23 -0
  71. package/dist/template_manager/db/index.js.map +1 -0
  72. package/dist/template_manager/db/template_repository.d.ts +76 -0
  73. package/dist/template_manager/db/template_repository.d.ts.map +1 -0
  74. package/dist/template_manager/db/template_repository.js +684 -0
  75. package/dist/template_manager/db/template_repository.js.map +1 -0
  76. package/dist/template_manager/engine/handlebars_engine.d.ts +52 -0
  77. package/dist/template_manager/engine/handlebars_engine.d.ts.map +1 -0
  78. package/dist/template_manager/engine/handlebars_engine.js +175 -0
  79. package/dist/template_manager/engine/handlebars_engine.js.map +1 -0
  80. package/dist/template_manager/engine/index.d.ts +6 -0
  81. package/dist/template_manager/engine/index.d.ts.map +1 -0
  82. package/dist/template_manager/engine/index.js +19 -0
  83. package/dist/template_manager/engine/index.js.map +1 -0
  84. package/dist/template_manager/engine/variable_resolver.d.ts +48 -0
  85. package/dist/template_manager/engine/variable_resolver.d.ts.map +1 -0
  86. package/dist/template_manager/engine/variable_resolver.js +223 -0
  87. package/dist/template_manager/engine/variable_resolver.js.map +1 -0
  88. package/dist/template_manager/index.d.ts +32 -0
  89. package/dist/template_manager/index.d.ts.map +1 -0
  90. package/dist/template_manager/index.js +88 -0
  91. package/dist/template_manager/index.js.map +1 -0
  92. package/dist/template_manager/template_manager.d.ts +69 -0
  93. package/dist/template_manager/template_manager.d.ts.map +1 -0
  94. package/dist/template_manager/template_manager.js +335 -0
  95. package/dist/template_manager/template_manager.js.map +1 -0
  96. package/dist/template_manager/types.d.ts +255 -0
  97. package/dist/template_manager/types.d.ts.map +1 -0
  98. package/dist/template_manager/types.js +12 -0
  99. package/dist/template_manager/types.js.map +1 -0
  100. package/dist/template_manager/utils/index.d.ts +6 -0
  101. package/dist/template_manager/utils/index.d.ts.map +1 -0
  102. package/dist/template_manager/utils/index.js +21 -0
  103. package/dist/template_manager/utils/index.js.map +1 -0
  104. package/dist/template_manager/utils/system_variables.d.ts +28 -0
  105. package/dist/template_manager/utils/system_variables.d.ts.map +1 -0
  106. package/dist/template_manager/utils/system_variables.js +209 -0
  107. package/dist/template_manager/utils/system_variables.js.map +1 -0
  108. package/dist/template_manager/utils/validation.d.ts +74 -0
  109. package/dist/template_manager/utils/validation.d.ts.map +1 -0
  110. package/dist/template_manager/utils/validation.js +163 -0
  111. package/dist/template_manager/utils/validation.js.map +1 -0
  112. package/dist/utils.d.ts +12 -0
  113. package/dist/utils.d.ts.map +1 -0
  114. package/dist/utils.js +18 -0
  115. package/dist/utils.js.map +1 -0
  116. package/hazo_notify_config.ini +39 -0
  117. package/package.json +71 -21
  118. package/dist/lib/emailer/emailer.d.ts.map +0 -1
  119. package/dist/lib/emailer/emailer.js.map +0 -1
  120. package/dist/lib/emailer/index.d.ts.map +0 -1
  121. package/dist/lib/emailer/index.js.map +0 -1
  122. package/dist/lib/emailer/providers/index.d.ts.map +0 -1
  123. package/dist/lib/emailer/providers/index.js.map +0 -1
  124. package/dist/lib/emailer/providers/pop3_provider.d.ts.map +0 -1
  125. package/dist/lib/emailer/providers/pop3_provider.js.map +0 -1
  126. package/dist/lib/emailer/providers/smtp_provider.d.ts.map +0 -1
  127. package/dist/lib/emailer/providers/smtp_provider.js.map +0 -1
  128. package/dist/lib/emailer/providers/zeptomail_provider.d.ts.map +0 -1
  129. package/dist/lib/emailer/providers/zeptomail_provider.js.map +0 -1
  130. package/dist/lib/emailer/types.d.ts.map +0 -1
  131. package/dist/lib/emailer/types.js.map +0 -1
  132. package/dist/lib/emailer/utils/constants.d.ts.map +0 -1
  133. package/dist/lib/emailer/utils/constants.js.map +0 -1
  134. package/dist/lib/emailer/utils/index.d.ts.map +0 -1
  135. package/dist/lib/emailer/utils/index.js.map +0 -1
  136. package/dist/lib/emailer/utils/logger.d.ts +0 -37
  137. package/dist/lib/emailer/utils/logger.d.ts.map +0 -1
  138. package/dist/lib/emailer/utils/logger.js +0 -60
  139. package/dist/lib/emailer/utils/logger.js.map +0 -1
  140. package/dist/lib/emailer/utils/validation.d.ts.map +0 -1
  141. package/dist/lib/emailer/utils/validation.js.map +0 -1
  142. package/dist/lib/index.d.ts +0 -6
  143. package/dist/lib/index.d.ts.map +0 -1
  144. package/dist/lib/index.js.map +0 -1
  145. package/dist/lib/utils.d.ts +0 -3
  146. package/dist/lib/utils.d.ts.map +0 -1
  147. package/dist/lib/utils.js +0 -9
  148. package/dist/lib/utils.js.map +0 -1
  149. /package/dist/{lib/emailer → emailer}/providers/index.js +0 -0
  150. /package/dist/{lib/emailer → emailer}/types.js +0 -0
  151. /package/dist/{lib/emailer → emailer}/utils/constants.js +0 -0
  152. /package/dist/{lib/emailer → emailer}/utils/index.d.ts +0 -0
  153. /package/dist/{lib/emailer → emailer}/utils/index.js +0 -0
  154. /package/dist/{lib/emailer → emailer}/utils/validation.d.ts +0 -0
  155. /package/dist/{lib/emailer → emailer}/utils/validation.js +0 -0
@@ -10,9 +10,10 @@ class SmtpProvider {
10
10
  * Send email using SMTP (not implemented)
11
11
  * @param options - Email send options
12
12
  * @param config - Emailer configuration
13
+ * @param logger - Optional logger instance
13
14
  * @returns Promise with error response
14
15
  */
15
- async send_email(options, config) {
16
+ async send_email(options, config, logger) {
16
17
  return {
17
18
  success: false,
18
19
  error: 'SMTP provider is not yet implemented',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smtp_provider.js","sourceRoot":"","sources":["../../../src/lib/emailer/providers/smtp_provider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAUH,MAAa,YAAY;IACvB;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CACd,OAAyB,EACzB,MAAqB,EACrB,MAAe;QAEf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,sCAAsC;YAC7C,OAAO,EAAE,sEAAsE;YAC/E,YAAY,EAAE;gBACZ,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,4EAA4E;aACtF;SACF,CAAC;IACJ,CAAC;CACF;AAxBD,oCAwBC"}
@@ -2,14 +2,15 @@
2
2
  * Zeptomail API provider implementation
3
3
  * Sends emails using the Zeptomail API
4
4
  */
5
- import { EmailProvider, SendEmailOptions, EmailerConfig, EmailSendResponse } from '../types';
5
+ import type { EmailProvider, SendEmailOptions, EmailerConfig, EmailSendResponse, Logger } from '../types';
6
6
  export declare class ZeptomailProvider implements EmailProvider {
7
7
  /**
8
8
  * Send email using Zeptomail API
9
9
  * @param options - Email send options
10
10
  * @param config - Emailer configuration
11
+ * @param logger - Optional logger instance (compatible with hazo_logs)
11
12
  * @returns Promise with email send response
12
13
  */
13
- send_email(options: SendEmailOptions, config: EmailerConfig): Promise<EmailSendResponse>;
14
+ send_email(options: SendEmailOptions, config: EmailerConfig, logger?: Logger): Promise<EmailSendResponse>;
14
15
  }
15
16
  //# sourceMappingURL=zeptomail_provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zeptomail_provider.d.ts","sourceRoot":"","sources":["../../../src/lib/emailer/providers/zeptomail_provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAEjB,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,qBAAa,iBAAkB,YAAW,aAAa;IACrD;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC;CA8Q9B"}
@@ -17,9 +17,12 @@ class ZeptomailProvider {
17
17
  * Send email using Zeptomail API
18
18
  * @param options - Email send options
19
19
  * @param config - Emailer configuration
20
+ * @param logger - Optional logger instance (compatible with hazo_logs)
20
21
  * @returns Promise with email send response
21
22
  */
22
- async send_email(options, config) {
23
+ async send_email(options, config, logger) {
24
+ // Get logger (use provided, options.logger, or fallback)
25
+ const log = (0, logger_1.get_logger)(logger || options.logger);
23
26
  const filename = 'zeptomail_provider.ts';
24
27
  const function_name = 'send_email';
25
28
  try {
@@ -32,8 +35,16 @@ class ZeptomailProvider {
32
35
  }
33
36
  // Prepare recipient array
34
37
  const to_emails = Array.isArray(options.to) ? options.to : [options.to];
35
- const cc_emails = options.cc ? (Array.isArray(options.cc) ? options.cc : [options.cc]) : [];
36
- const bcc_emails = options.bcc ? (Array.isArray(options.bcc) ? options.bcc : [options.bcc]) : [];
38
+ const cc_emails = options.cc
39
+ ? Array.isArray(options.cc)
40
+ ? options.cc
41
+ : [options.cc]
42
+ : [];
43
+ const bcc_emails = options.bcc
44
+ ? Array.isArray(options.bcc)
45
+ ? options.bcc
46
+ : [options.bcc]
47
+ : [];
37
48
  // Prepare email data according to Zeptomail API format
38
49
  const email_data = {
39
50
  from: {
@@ -88,23 +99,24 @@ class ZeptomailProvider {
88
99
  }));
89
100
  }
90
101
  // Prepare request headers
91
- // Handle API key - it may already include the "Zoho-enczapikey" prefix or just be the key
92
102
  const api_key = config.zeptomail_api_key.trim();
93
103
  const auth_header = api_key.startsWith('Zoho-enczapikey')
94
104
  ? api_key
95
105
  : `Zoho-enczapikey ${api_key}`;
96
106
  const headers = {
97
- 'Accept': 'application/json',
107
+ Accept: 'application/json',
98
108
  'Content-Type': 'application/json',
99
- 'Authorization': auth_header,
109
+ Authorization: auth_header,
100
110
  };
101
111
  // Log request for debugging (mask API key in logs)
102
- (0, logger_1.log_info)((0, logger_1.create_log_entry)(filename, function_name, 'Sending email via Zeptomail API', {
112
+ log.info('Sending email via Zeptomail API', {
113
+ filename,
114
+ function_name,
103
115
  endpoint: config.zeptomail_api_endpoint,
104
116
  method: 'POST',
105
117
  headers: {
106
118
  ...headers,
107
- Authorization: headers.Authorization ? 'Zoho-enczapikey ***' : undefined, // Mask API key
119
+ Authorization: headers.Authorization ? 'Zoho-enczapikey ***' : undefined,
108
120
  },
109
121
  body: {
110
122
  from: email_data.from,
@@ -114,7 +126,7 @@ class ZeptomailProvider {
114
126
  has_html: !!email_data.htmlbody,
115
127
  attachments_count: email_data.attachments?.length || 0,
116
128
  },
117
- }));
129
+ });
118
130
  // Set up request timeout
119
131
  const timeout = config.request_timeout || constants_1.DEFAULT_REQUEST_TIMEOUT;
120
132
  const controller = new AbortController();
@@ -128,33 +140,31 @@ class ZeptomailProvider {
128
140
  signal: controller.signal,
129
141
  });
130
142
  clearTimeout(timeout_id);
131
- // Parse response (handle both JSON and text responses)
143
+ // Parse response
132
144
  let response_data;
133
145
  const content_type = response.headers.get('content-type') || '';
134
- // Get response text first for better error handling
135
146
  const response_text = await response.text();
136
147
  if (content_type.includes('application/json')) {
137
148
  try {
138
149
  response_data = JSON.parse(response_text);
139
150
  }
140
- catch (e) {
151
+ catch {
141
152
  response_data = { error: 'Failed to parse JSON response', raw: response_text };
142
153
  }
143
154
  }
144
155
  else {
145
- // For HTML/text responses, try to extract error information
146
156
  response_data = {
147
157
  text: response_text,
148
- error: response_text.trim() || 'Unknown error from server'
158
+ error: response_text.trim() || 'Unknown error from server',
149
159
  };
150
- // Log the full response for debugging
151
- (0, logger_1.log_error)((0, logger_1.create_log_entry)(filename, function_name, 'Zeptomail API returned non-JSON response', {
160
+ log.error('Zeptomail API returned non-JSON response', {
161
+ filename,
162
+ function_name,
152
163
  status: response.status,
153
164
  statusText: response.statusText,
154
165
  contentType: content_type,
155
166
  body: response_text,
156
- headers: Object.fromEntries(response.headers.entries()),
157
- }));
167
+ });
158
168
  }
159
169
  const raw_response = {
160
170
  status: response.status,
@@ -164,31 +174,34 @@ class ZeptomailProvider {
164
174
  };
165
175
  // Check if request was successful
166
176
  if (!response.ok) {
167
- const response_obj = typeof response_data === 'object' ? response_data : {};
168
- const error_message = response_obj.message ||
169
- response_obj.error ||
170
- (typeof response_data === 'string' ? response_data : '') ||
177
+ const error_message = response_data.message ||
178
+ response_data.error ||
171
179
  `HTTP ${response.status}: ${response.statusText}`;
172
- // Enhanced error logging
173
- (0, logger_1.log_error)((0, logger_1.create_log_entry)(filename, function_name, 'Zeptomail API error', {
180
+ log.error('Zeptomail API error', {
181
+ filename,
182
+ function_name,
174
183
  status: response.status,
175
184
  error_message,
176
185
  response_body: response_data,
177
- }));
186
+ });
178
187
  const is_production = process.env.NODE_ENV === 'production';
179
188
  return {
180
189
  success: false,
181
190
  error: error_message,
182
- raw_response: is_production ? { status: response.status, status_text: response.statusText } : raw_response,
191
+ raw_response: is_production
192
+ ? { status: response.status, status_text: response.statusText }
193
+ : raw_response,
183
194
  message: error_message,
184
195
  };
185
196
  }
186
197
  // Return successful response
187
- const response_obj = typeof response_data === 'object' ? response_data : {};
188
- const data = response_obj.data;
198
+ const data = response_data
199
+ .data;
189
200
  return {
190
201
  success: true,
191
- message_id: data?.message_id || response_obj.message_id || undefined,
202
+ message_id: data?.message_id ||
203
+ response_data.message_id ||
204
+ undefined,
192
205
  message: 'Email sent successfully',
193
206
  raw_response: raw_response,
194
207
  };
@@ -198,7 +211,9 @@ class ZeptomailProvider {
198
211
  // Handle timeout errors
199
212
  if (fetch_error instanceof Error && fetch_error.name === 'AbortError') {
200
213
  const timeout_error = `Request timeout after ${timeout}ms`;
201
- (0, logger_1.log_error)((0, logger_1.create_log_entry)(filename, function_name, timeout_error, {
214
+ log.error(timeout_error, {
215
+ filename,
216
+ function_name,
202
217
  options: {
203
218
  to: options.to,
204
219
  subject: options.subject,
@@ -206,7 +221,7 @@ class ZeptomailProvider {
206
221
  has_html: !!options.content.html,
207
222
  attachments_count: options.attachments?.length || 0,
208
223
  },
209
- }));
224
+ });
210
225
  return {
211
226
  success: false,
212
227
  error: timeout_error,
@@ -214,7 +229,6 @@ class ZeptomailProvider {
214
229
  raw_response: undefined,
215
230
  };
216
231
  }
217
- // Re-throw to be caught by outer catch
218
232
  throw fetch_error;
219
233
  }
220
234
  }
@@ -223,7 +237,9 @@ class ZeptomailProvider {
223
237
  const error_string = error instanceof Error ? error.toString() : String(error);
224
238
  const stack = error instanceof Error ? error.stack : undefined;
225
239
  const is_production = process.env.NODE_ENV === 'production';
226
- (0, logger_1.log_error)((0, logger_1.create_log_entry)(filename, function_name, error_message, {
240
+ log.error(error_message, {
241
+ filename,
242
+ function_name,
227
243
  line_number: stack || 'unknown',
228
244
  error: error_string,
229
245
  options: {
@@ -233,15 +249,17 @@ class ZeptomailProvider {
233
249
  has_html: !!options.content.html,
234
250
  attachments_count: options.attachments?.length || 0,
235
251
  },
236
- }));
252
+ });
237
253
  return {
238
254
  success: false,
239
255
  error: error_message,
240
256
  message: error_message,
241
- raw_response: is_production ? undefined : {
242
- error: error_string,
243
- stack: stack,
244
- },
257
+ raw_response: is_production
258
+ ? undefined
259
+ : {
260
+ error: error_string,
261
+ stack: stack,
262
+ },
245
263
  };
246
264
  }
247
265
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zeptomail_provider.js","sourceRoot":"","sources":["../../../src/lib/emailer/providers/zeptomail_provider.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@
2
2
  * Type definitions for the emailer service
3
3
  */
4
4
  export type EmailerModule = 'zeptoemail_api' | 'smtp' | 'pop3';
5
+ /**
6
+ * Logger interface compatible with hazo_logs
7
+ * Used for optional structured logging
8
+ */
9
+ export interface Logger {
10
+ error(message: string, data?: Record<string, unknown>): void;
11
+ warn(message: string, data?: Record<string, unknown>): void;
12
+ info(message: string, data?: Record<string, unknown>): void;
13
+ debug(message: string, data?: Record<string, unknown>): void;
14
+ }
5
15
  export interface EmailContent {
6
16
  text?: string;
7
17
  html?: string;
@@ -21,6 +31,8 @@ export interface SendEmailOptions {
21
31
  reply_to?: string;
22
32
  cc?: string | string[];
23
33
  bcc?: string | string[];
34
+ /** Optional logger instance (compatible with hazo_logs) */
35
+ logger?: Logger;
24
36
  }
25
37
  export interface EmailerConfig {
26
38
  emailer_module: EmailerModule;
@@ -89,6 +101,6 @@ export interface ZeptomailEmailData {
89
101
  attachments?: ZeptomailAttachment[];
90
102
  }
91
103
  export interface EmailProvider {
92
- send_email(options: SendEmailOptions, config: EmailerConfig): Promise<EmailSendResponse>;
104
+ send_email(options: SendEmailOptions, config: EmailerConfig, logger?: Logger): Promise<EmailSendResponse>;
93
105
  }
94
106
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/emailer/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/emailer/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -11,4 +11,5 @@ export declare const MAX_SUBJECT_LENGTH = 255;
11
11
  export declare const MAX_BODY_LENGTH: number;
12
12
  export declare const MAX_EMAIL_LENGTH = 254;
13
13
  export declare const VALID_EMAILER_MODULES: readonly ["zeptoemail_api", "smtp", "pop3"];
14
+ export type EmailerModule = typeof VALID_EMAILER_MODULES[number];
14
15
  //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/emailer/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAG5C,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAC5D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAG7C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,eAAe,QAAc,CAAC;AAC3C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAGpC,eAAO,MAAM,qBAAqB,6CAA8C,CAAC;AACjF,MAAM,MAAM,aAAa,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/emailer/utils/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,0BAA0B;AACb,QAAA,2BAA2B,GAAG,EAAE,CAAC,CAAC,sBAAsB;AACxD,QAAA,yBAAyB,GAAG,EAAE,CAAC,CAAC,UAAU;AAEvD,oBAAoB;AACP,QAAA,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB;AAChE,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,kBAAkB;AACL,QAAA,uBAAuB,GAAG,KAAK,CAAC,CAAC,6BAA6B;AAE3E,sBAAsB;AACT,QAAA,kBAAkB,GAAG,GAAG,CAAC,CAAC,aAAa;AACvC,QAAA,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,eAAe;AAC9C,QAAA,gBAAgB,GAAG,GAAG,CAAC,CAAC,wBAAwB;AAE7D,wBAAwB;AACX,QAAA,qBAAqB,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/emailer/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/emailer/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,+CAA6B;AAC7B,2CAAyB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Centralized logging utility for emailer service
3
+ * Provides a fallback console logger compatible with hazo_logs interface
4
+ */
5
+ import type { Logger } from '../types';
6
+ /**
7
+ * Create a fallback console logger with hazo_logs-compatible interface
8
+ * Used when no external logger is provided
9
+ *
10
+ * @param package_name - Name of the package for log identification
11
+ * @returns Logger instance with error, warn, info, debug methods
12
+ */
13
+ export declare function create_fallback_logger(package_name?: string): Logger;
14
+ /**
15
+ * Get logger instance - returns provided logger or creates fallback
16
+ *
17
+ * @param logger - Optional external logger (from hazo_logs)
18
+ * @returns Logger instance
19
+ */
20
+ export declare function get_logger(logger?: Logger): Logger;
21
+ /**
22
+ * @deprecated Use get_logger() instead
23
+ */
24
+ interface LogEntry {
25
+ filename: string;
26
+ function_name: string;
27
+ line_number?: string | number;
28
+ message: string;
29
+ [key: string]: unknown;
30
+ }
31
+ /**
32
+ * @deprecated Use get_logger().error() instead
33
+ */
34
+ export declare function log_error(entry: LogEntry): void;
35
+ /**
36
+ * @deprecated Use get_logger().info() instead
37
+ */
38
+ export declare function log_info(entry: LogEntry): void;
39
+ /**
40
+ * @deprecated Use get_logger().warn() instead
41
+ */
42
+ export declare function log_warning(entry: LogEntry): void;
43
+ /**
44
+ * @deprecated Use structured logging with get_logger() instead
45
+ */
46
+ export declare function create_log_entry(filename: string, function_name: string, message: string, additional_data?: Record<string, unknown>): LogEntry;
47
+ export {};
48
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/lib/emailer/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,GAAE,MAAsB,GAAG,MAAM,CAgCnF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAOD;;GAEG;AACH,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAQ/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAQ9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAQjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,QAAQ,CAOV"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * Centralized logging utility for emailer service
4
+ * Provides a fallback console logger compatible with hazo_logs interface
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.create_fallback_logger = create_fallback_logger;
8
+ exports.get_logger = get_logger;
9
+ exports.log_error = log_error;
10
+ exports.log_info = log_info;
11
+ exports.log_warning = log_warning;
12
+ exports.create_log_entry = create_log_entry;
13
+ /**
14
+ * Create a fallback console logger with hazo_logs-compatible interface
15
+ * Used when no external logger is provided
16
+ *
17
+ * @param package_name - Name of the package for log identification
18
+ * @returns Logger instance with error, warn, info, debug methods
19
+ */
20
+ function create_fallback_logger(package_name = 'hazo_notify') {
21
+ const format_log_entry = (level, message, data) => {
22
+ return JSON.stringify({
23
+ level,
24
+ timestamp: new Date().toISOString(),
25
+ package: package_name,
26
+ message,
27
+ ...(data || {}),
28
+ });
29
+ };
30
+ return {
31
+ error(message, data) {
32
+ console.error(format_log_entry('error', message, data));
33
+ },
34
+ warn(message, data) {
35
+ console.warn(format_log_entry('warn', message, data));
36
+ },
37
+ info(message, data) {
38
+ console.log(format_log_entry('info', message, data));
39
+ },
40
+ debug(message, data) {
41
+ // Only log debug in non-production environments
42
+ if (process.env.NODE_ENV !== 'production') {
43
+ console.log(format_log_entry('debug', message, data));
44
+ }
45
+ },
46
+ };
47
+ }
48
+ /**
49
+ * Get logger instance - returns provided logger or creates fallback
50
+ *
51
+ * @param logger - Optional external logger (from hazo_logs)
52
+ * @returns Logger instance
53
+ */
54
+ function get_logger(logger) {
55
+ return logger || create_fallback_logger();
56
+ }
57
+ /**
58
+ * @deprecated Use get_logger().error() instead
59
+ */
60
+ function log_error(entry) {
61
+ console.error(JSON.stringify({
62
+ level: 'error',
63
+ timestamp: new Date().toISOString(),
64
+ ...entry,
65
+ }));
66
+ }
67
+ /**
68
+ * @deprecated Use get_logger().info() instead
69
+ */
70
+ function log_info(entry) {
71
+ console.log(JSON.stringify({
72
+ level: 'info',
73
+ timestamp: new Date().toISOString(),
74
+ ...entry,
75
+ }));
76
+ }
77
+ /**
78
+ * @deprecated Use get_logger().warn() instead
79
+ */
80
+ function log_warning(entry) {
81
+ console.warn(JSON.stringify({
82
+ level: 'warning',
83
+ timestamp: new Date().toISOString(),
84
+ ...entry,
85
+ }));
86
+ }
87
+ /**
88
+ * @deprecated Use structured logging with get_logger() instead
89
+ */
90
+ function create_log_entry(filename, function_name, message, additional_data) {
91
+ return {
92
+ filename,
93
+ function_name,
94
+ message,
95
+ ...(additional_data || {}),
96
+ };
97
+ }
98
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/lib/emailer/utils/logger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,wDAgCC;AAQD,gCAEC;AAqBD,8BAQC;AAKD,4BAQC;AAKD,kCAQC;AAKD,4CAYC;AAzHD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,eAAuB,aAAa;IACzE,MAAM,gBAAgB,GAAG,CACvB,KAAa,EACb,OAAe,EACf,IAA8B,EACtB,EAAE;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,YAAY;YACrB,OAAO;YACP,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,OAAe,EAAE,IAA8B;YACnD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,OAAe,EAAE,IAA8B;YAClD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,OAAe,EAAE,IAA8B;YAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,OAAe,EAAE,IAA8B;YACnD,gDAAgD;YAChD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,MAAe;IACxC,OAAO,MAAM,IAAI,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAkBD;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAe;IACvC,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAe;IACtC,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAe;IACzC,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,aAAqB,EACrB,OAAe,EACf,eAAyC;IAEzC,OAAO;QACL,QAAQ;QACR,aAAa;QACb,OAAO;QACP,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/emailer/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUnF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/emailer/utils/validation.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,wDAOC;AAQD,sDAMC;AAOD,0DAKC;AAOD,oDAOC;AAQD,4DAUC;AAxED,2CAAoF;AAEpF;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,KAAa;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wCAAwC;IACxC,MAAM,WAAW,GAAG,sIAAsI,CAAC;IAC3J,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,4BAAgB,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,kEAAkE;IAClE,OAAO,KAAK,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,IAAI,8BAAkB,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yCAAyC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;IACrD,OAAO,WAAW,IAAI,2BAAe,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,OAAe,EAAE,QAAgB;IACxE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC;QACnD,OAAO,IAAI,IAAI,QAAQ,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Main library exports
3
+ * Entry point for the hazo_notify library
4
+ */
5
+ export * from './emailer/index.js';
6
+ export * from './template_manager/index.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
@@ -18,5 +18,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- __exportStar(require("./emailer"), exports);
21
+ __exportStar(require("./emailer/index.js"), exports);
22
+ __exportStar(require("./template_manager/index.js"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,8DAA4C"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Configuration loader for template manager
3
+ *
4
+ * Loads template configuration from hazo_notify_config.ini
5
+ */
6
+ import type { TemplateManagerConfig, TemplateVariableDefinition } from '../types';
7
+ /**
8
+ * Load template manager configuration from hazo_notify_config.ini
9
+ *
10
+ * Configuration is cached after first load
11
+ *
12
+ * @param force_reload - Force reload from file (bypass cache)
13
+ * @returns Template manager configuration
14
+ * @throws Error if configuration is invalid
15
+ */
16
+ export declare function load_template_config(force_reload?: boolean): TemplateManagerConfig;
17
+ /**
18
+ * Get template variable definitions for a specific template type
19
+ *
20
+ * @param template_name - Name of the template type
21
+ * @param config - Optional config (loads if not provided)
22
+ * @returns Variable definitions for the template, or empty array if not found
23
+ */
24
+ export declare function get_template_variables(template_name: string, config?: TemplateManagerConfig): TemplateVariableDefinition[];
25
+ /**
26
+ * Get all available variable names (user + system) for a template type
27
+ *
28
+ * @param template_name - Name of the template type
29
+ * @param config - Optional config (loads if not provided)
30
+ * @returns Object with user and system variable names
31
+ */
32
+ export declare function get_all_variable_names(template_name: string, config?: TemplateManagerConfig): {
33
+ user: string[];
34
+ system: string[];
35
+ };
36
+ /**
37
+ * Clear the cached configuration
38
+ *
39
+ * Useful for testing or when config file has been updated
40
+ */
41
+ export declare function clear_config_cache(): void;
42
+ /**
43
+ * Check if configuration is loaded and cached
44
+ *
45
+ * @returns true if config is cached
46
+ */
47
+ export declare function is_config_cached(): boolean;
48
+ //# sourceMappingURL=config_loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_loader.d.ts","sourceRoot":"","sources":["../../../src/lib/template_manager/config/config_loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,qBAAqB,EAErB,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AA0FlB;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,GAAE,OAAe,GAC5B,qBAAqB,CA+CvB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,0BAA0B,EAAE,CAQ9B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAStC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}