@plyaz/config 1.7.5 → 1.7.6

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.
@@ -0,0 +1,464 @@
1
+ /**
2
+ * Notification Configuration Constants
3
+ *
4
+ * Default configuration values for the notifications system.
5
+ * These can be overridden at runtime through configuration objects.
6
+ *
7
+ * @module src/notifications/constants
8
+ */
9
+ /**
10
+ * Default notification category
11
+ * Safest default for compliance - transactional emails must always be sent
12
+ */
13
+ export declare const DEFAULT_NOTIFICATION_CATEGORY: "transactional";
14
+ /**
15
+ * Retry Configuration
16
+ */
17
+ export declare const RETRY_CONFIG: {
18
+ /**
19
+ * Default maximum number of retry attempts
20
+ * Used when no specific retry count is provided
21
+ */
22
+ readonly DEFAULT_MAX_ATTEMPTS: 3;
23
+ /**
24
+ * Default initial delay between retries (milliseconds)
25
+ * Used for exponential backoff calculation
26
+ */
27
+ readonly DEFAULT_INITIAL_DELAY_MS: 1000;
28
+ /**
29
+ * Maximum delay between retries (milliseconds)
30
+ * Prevents exponential backoff from growing too large
31
+ */
32
+ readonly MAX_DELAY_MS: 30000;
33
+ /**
34
+ * Backoff multiplier for exponential backoff
35
+ * Each retry delay = previous delay * multiplier
36
+ */
37
+ readonly BACKOFF_MULTIPLIER: 2;
38
+ };
39
+ /**
40
+ * Attachment Configuration
41
+ */
42
+ export declare const ATTACHMENT_CONFIG: {
43
+ /**
44
+ * Default maximum number of attachments per notification
45
+ */
46
+ readonly DEFAULT_MAX_ATTACHMENTS: 10;
47
+ /**
48
+ * Default maximum size per attachment (bytes)
49
+ * 25MB - Common limit across providers
50
+ */
51
+ readonly DEFAULT_MAX_SIZE_PER_ATTACHMENT: number;
52
+ /**
53
+ * Default maximum total size of all attachments (bytes)
54
+ * 25MB - Ensures we don't exceed provider limits
55
+ */
56
+ readonly DEFAULT_MAX_TOTAL_SIZE: number;
57
+ /**
58
+ * Maximum attachment size for SendGrid (bytes)
59
+ * 30MB per SendGrid documentation
60
+ */
61
+ readonly SENDGRID_MAX_SIZE: number;
62
+ /**
63
+ * Maximum total attachment size for SendGrid (bytes)
64
+ * 30MB per SendGrid documentation
65
+ */
66
+ readonly SENDGRID_MAX_TOTAL_SIZE: number;
67
+ /**
68
+ * Maximum attachment size for Infobip (bytes)
69
+ * 30MB - matching SendGrid for consistency
70
+ */
71
+ readonly INFOBIP_MAX_SIZE: number;
72
+ /**
73
+ * Maximum total attachment size for Infobip (bytes)
74
+ * 30MB - matching SendGrid for consistency
75
+ */
76
+ readonly INFOBIP_MAX_TOTAL_SIZE: number;
77
+ /**
78
+ * Default timeout for URL attachment fetching (milliseconds)
79
+ */
80
+ readonly URL_FETCH_TIMEOUT_MS: 30000;
81
+ /**
82
+ * Maximum number of retry attempts for failed URL fetches
83
+ */
84
+ readonly URL_FETCH_MAX_RETRIES: 3;
85
+ };
86
+ /**
87
+ * Circuit Breaker Configuration
88
+ */
89
+ export declare const CIRCUIT_BREAKER_CONFIG: {
90
+ /**
91
+ * Default failure threshold before opening circuit
92
+ * Circuit opens after this many consecutive failures
93
+ */
94
+ readonly DEFAULT_FAILURE_THRESHOLD: 5;
95
+ /**
96
+ * Default timeout before attempting half-open state (milliseconds)
97
+ * How long to wait before testing if provider has recovered
98
+ */
99
+ readonly DEFAULT_TIMEOUT_MS: 60000;
100
+ /**
101
+ * Default success threshold in half-open state
102
+ * Number of successful requests needed to close circuit
103
+ */
104
+ readonly DEFAULT_SUCCESS_THRESHOLD: 2;
105
+ };
106
+ /**
107
+ * Queue Configuration
108
+ */
109
+ export declare const QUEUE_CONFIG: {
110
+ /**
111
+ * Default maximum queue size
112
+ */
113
+ readonly DEFAULT_MAX_SIZE: 10000;
114
+ /**
115
+ * Default number of concurrent workers
116
+ */
117
+ readonly DEFAULT_CONCURRENCY: 5;
118
+ /**
119
+ * Default queue processing interval (milliseconds)
120
+ */
121
+ readonly DEFAULT_PROCESSING_INTERVAL_MS: 100;
122
+ };
123
+ /**
124
+ * Rate Limiting Configuration
125
+ */
126
+ export declare const RATE_LIMIT_CONFIG: {
127
+ /**
128
+ * Default requests per second per provider
129
+ */
130
+ readonly DEFAULT_REQUESTS_PER_SECOND: 10;
131
+ /**
132
+ * Default burst allowance
133
+ * Number of requests that can be sent in a burst
134
+ */
135
+ readonly DEFAULT_BURST_ALLOWANCE: 20;
136
+ /**
137
+ * Default window size for rate limiting (milliseconds)
138
+ */
139
+ readonly DEFAULT_WINDOW_MS: 1000;
140
+ };
141
+ /**
142
+ * Template Configuration
143
+ */
144
+ export declare const TEMPLATE_CONFIG: {
145
+ /**
146
+ * Default locale for templates
147
+ */
148
+ readonly DEFAULT_LOCALE: "en";
149
+ /**
150
+ * Fallback locale when requested locale not found
151
+ */
152
+ readonly FALLBACK_LOCALE: "en";
153
+ /**
154
+ * Template cache TTL (milliseconds)
155
+ * How long to cache compiled templates
156
+ */
157
+ readonly CACHE_TTL_MS: 300000;
158
+ /**
159
+ * Maximum template size (bytes)
160
+ */
161
+ readonly MAX_TEMPLATE_SIZE: 1048576;
162
+ };
163
+ /**
164
+ * SMS Character Limits and Encoding
165
+ * Based on GSM-7 and UCS-2 encoding standards
166
+ */
167
+ export declare const SMS_CONFIG: {
168
+ /**
169
+ * Single SMS message limit for GSM-7 encoding (standard characters)
170
+ * Includes: A-Z, a-z, 0-9, and basic punctuation
171
+ */
172
+ readonly GSM7_SINGLE_MESSAGE_LIMIT: 160;
173
+ /**
174
+ * Multi-part SMS message segment limit for GSM-7 encoding
175
+ * Each segment in a concatenated message is limited to 153 characters (7 chars for UDH)
176
+ */
177
+ readonly GSM7_MULTI_PART_SEGMENT_LIMIT: 153;
178
+ /**
179
+ * Single SMS message limit for UCS-2 encoding (unicode characters)
180
+ * Used when message contains emoji, non-Latin characters, etc.
181
+ */
182
+ readonly UCS2_SINGLE_MESSAGE_LIMIT: 70;
183
+ /**
184
+ * Multi-part SMS message segment limit for UCS-2 encoding
185
+ * Each segment in a concatenated message is limited to 67 characters
186
+ */
187
+ readonly UCS2_MULTI_PART_SEGMENT_LIMIT: 67;
188
+ /**
189
+ * Maximum number of SMS segments to allow
190
+ * Prevents accidentally sending very expensive multi-part messages
191
+ */
192
+ readonly DEFAULT_MAX_SEGMENTS: 10;
193
+ /**
194
+ * Warning threshold (percentage of limit)
195
+ * Emit warning when message reaches this percentage of the limit
196
+ */
197
+ readonly WARNING_THRESHOLD_PERCENTAGE: 90;
198
+ };
199
+ /**
200
+ * Notification Configuration
201
+ */
202
+ export declare const NOTIFICATION_CONFIG: {
203
+ /**
204
+ * Default notification priority
205
+ */
206
+ readonly DEFAULT_PRIORITY: "normal";
207
+ /**
208
+ * Maximum subject line length
209
+ */
210
+ readonly MAX_SUBJECT_LENGTH: 255;
211
+ /**
212
+ * Maximum push notification title length
213
+ */
214
+ readonly MAX_PUSH_TITLE_LENGTH: 100;
215
+ /**
216
+ * Maximum push notification body length
217
+ */
218
+ readonly MAX_PUSH_BODY_LENGTH: 500;
219
+ };
220
+ /**
221
+ * Logging Configuration
222
+ */
223
+ export declare const LOGGING_CONFIG: {
224
+ /**
225
+ * Default log level
226
+ */
227
+ readonly DEFAULT_LEVEL: "info";
228
+ /**
229
+ * Maximum log message size (bytes)
230
+ * Prevents excessive log sizes
231
+ */
232
+ readonly MAX_LOG_SIZE: 10000;
233
+ };
234
+ /**
235
+ * Health Check Configuration
236
+ */
237
+ export declare const HEALTH_CHECK_CONFIG: {
238
+ /**
239
+ * Default health check interval (milliseconds)
240
+ */
241
+ readonly DEFAULT_INTERVAL_MS: 30000;
242
+ /**
243
+ * Default health check timeout (milliseconds)
244
+ */
245
+ readonly DEFAULT_TIMEOUT_MS: 5000;
246
+ /**
247
+ * Maximum acceptable latency (milliseconds)
248
+ * Health check fails if latency exceeds this
249
+ */
250
+ readonly MAX_ACCEPTABLE_LATENCY_MS: 2000;
251
+ };
252
+ /**
253
+ * Export all configuration as a single object for convenience
254
+ */
255
+ export declare const NOTIFICATION_PACKAGE_CONFIG: {
256
+ readonly RETRY: {
257
+ /**
258
+ * Default maximum number of retry attempts
259
+ * Used when no specific retry count is provided
260
+ */
261
+ readonly DEFAULT_MAX_ATTEMPTS: 3;
262
+ /**
263
+ * Default initial delay between retries (milliseconds)
264
+ * Used for exponential backoff calculation
265
+ */
266
+ readonly DEFAULT_INITIAL_DELAY_MS: 1000;
267
+ /**
268
+ * Maximum delay between retries (milliseconds)
269
+ * Prevents exponential backoff from growing too large
270
+ */
271
+ readonly MAX_DELAY_MS: 30000;
272
+ /**
273
+ * Backoff multiplier for exponential backoff
274
+ * Each retry delay = previous delay * multiplier
275
+ */
276
+ readonly BACKOFF_MULTIPLIER: 2;
277
+ };
278
+ readonly ATTACHMENT: {
279
+ /**
280
+ * Default maximum number of attachments per notification
281
+ */
282
+ readonly DEFAULT_MAX_ATTACHMENTS: 10;
283
+ /**
284
+ * Default maximum size per attachment (bytes)
285
+ * 25MB - Common limit across providers
286
+ */
287
+ readonly DEFAULT_MAX_SIZE_PER_ATTACHMENT: number;
288
+ /**
289
+ * Default maximum total size of all attachments (bytes)
290
+ * 25MB - Ensures we don't exceed provider limits
291
+ */
292
+ readonly DEFAULT_MAX_TOTAL_SIZE: number;
293
+ /**
294
+ * Maximum attachment size for SendGrid (bytes)
295
+ * 30MB per SendGrid documentation
296
+ */
297
+ readonly SENDGRID_MAX_SIZE: number;
298
+ /**
299
+ * Maximum total attachment size for SendGrid (bytes)
300
+ * 30MB per SendGrid documentation
301
+ */
302
+ readonly SENDGRID_MAX_TOTAL_SIZE: number;
303
+ /**
304
+ * Maximum attachment size for Infobip (bytes)
305
+ * 30MB - matching SendGrid for consistency
306
+ */
307
+ readonly INFOBIP_MAX_SIZE: number;
308
+ /**
309
+ * Maximum total attachment size for Infobip (bytes)
310
+ * 30MB - matching SendGrid for consistency
311
+ */
312
+ readonly INFOBIP_MAX_TOTAL_SIZE: number;
313
+ /**
314
+ * Default timeout for URL attachment fetching (milliseconds)
315
+ */
316
+ readonly URL_FETCH_TIMEOUT_MS: 30000;
317
+ /**
318
+ * Maximum number of retry attempts for failed URL fetches
319
+ */
320
+ readonly URL_FETCH_MAX_RETRIES: 3;
321
+ };
322
+ readonly CIRCUIT_BREAKER: {
323
+ /**
324
+ * Default failure threshold before opening circuit
325
+ * Circuit opens after this many consecutive failures
326
+ */
327
+ readonly DEFAULT_FAILURE_THRESHOLD: 5;
328
+ /**
329
+ * Default timeout before attempting half-open state (milliseconds)
330
+ * How long to wait before testing if provider has recovered
331
+ */
332
+ readonly DEFAULT_TIMEOUT_MS: 60000;
333
+ /**
334
+ * Default success threshold in half-open state
335
+ * Number of successful requests needed to close circuit
336
+ */
337
+ readonly DEFAULT_SUCCESS_THRESHOLD: 2;
338
+ };
339
+ readonly QUEUE: {
340
+ /**
341
+ * Default maximum queue size
342
+ */
343
+ readonly DEFAULT_MAX_SIZE: 10000;
344
+ /**
345
+ * Default number of concurrent workers
346
+ */
347
+ readonly DEFAULT_CONCURRENCY: 5;
348
+ /**
349
+ * Default queue processing interval (milliseconds)
350
+ */
351
+ readonly DEFAULT_PROCESSING_INTERVAL_MS: 100;
352
+ };
353
+ readonly RATE_LIMIT: {
354
+ /**
355
+ * Default requests per second per provider
356
+ */
357
+ readonly DEFAULT_REQUESTS_PER_SECOND: 10;
358
+ /**
359
+ * Default burst allowance
360
+ * Number of requests that can be sent in a burst
361
+ */
362
+ readonly DEFAULT_BURST_ALLOWANCE: 20;
363
+ /**
364
+ * Default window size for rate limiting (milliseconds)
365
+ */
366
+ readonly DEFAULT_WINDOW_MS: 1000;
367
+ };
368
+ readonly TEMPLATE: {
369
+ /**
370
+ * Default locale for templates
371
+ */
372
+ readonly DEFAULT_LOCALE: "en";
373
+ /**
374
+ * Fallback locale when requested locale not found
375
+ */
376
+ readonly FALLBACK_LOCALE: "en";
377
+ /**
378
+ * Template cache TTL (milliseconds)
379
+ * How long to cache compiled templates
380
+ */
381
+ readonly CACHE_TTL_MS: 300000;
382
+ /**
383
+ * Maximum template size (bytes)
384
+ */
385
+ readonly MAX_TEMPLATE_SIZE: 1048576;
386
+ };
387
+ readonly SMS: {
388
+ /**
389
+ * Single SMS message limit for GSM-7 encoding (standard characters)
390
+ * Includes: A-Z, a-z, 0-9, and basic punctuation
391
+ */
392
+ readonly GSM7_SINGLE_MESSAGE_LIMIT: 160;
393
+ /**
394
+ * Multi-part SMS message segment limit for GSM-7 encoding
395
+ * Each segment in a concatenated message is limited to 153 characters (7 chars for UDH)
396
+ */
397
+ readonly GSM7_MULTI_PART_SEGMENT_LIMIT: 153;
398
+ /**
399
+ * Single SMS message limit for UCS-2 encoding (unicode characters)
400
+ * Used when message contains emoji, non-Latin characters, etc.
401
+ */
402
+ readonly UCS2_SINGLE_MESSAGE_LIMIT: 70;
403
+ /**
404
+ * Multi-part SMS message segment limit for UCS-2 encoding
405
+ * Each segment in a concatenated message is limited to 67 characters
406
+ */
407
+ readonly UCS2_MULTI_PART_SEGMENT_LIMIT: 67;
408
+ /**
409
+ * Maximum number of SMS segments to allow
410
+ * Prevents accidentally sending very expensive multi-part messages
411
+ */
412
+ readonly DEFAULT_MAX_SEGMENTS: 10;
413
+ /**
414
+ * Warning threshold (percentage of limit)
415
+ * Emit warning when message reaches this percentage of the limit
416
+ */
417
+ readonly WARNING_THRESHOLD_PERCENTAGE: 90;
418
+ };
419
+ readonly NOTIFICATION: {
420
+ /**
421
+ * Default notification priority
422
+ */
423
+ readonly DEFAULT_PRIORITY: "normal";
424
+ /**
425
+ * Maximum subject line length
426
+ */
427
+ readonly MAX_SUBJECT_LENGTH: 255;
428
+ /**
429
+ * Maximum push notification title length
430
+ */
431
+ readonly MAX_PUSH_TITLE_LENGTH: 100;
432
+ /**
433
+ * Maximum push notification body length
434
+ */
435
+ readonly MAX_PUSH_BODY_LENGTH: 500;
436
+ };
437
+ readonly LOGGING: {
438
+ /**
439
+ * Default log level
440
+ */
441
+ readonly DEFAULT_LEVEL: "info";
442
+ /**
443
+ * Maximum log message size (bytes)
444
+ * Prevents excessive log sizes
445
+ */
446
+ readonly MAX_LOG_SIZE: 10000;
447
+ };
448
+ readonly HEALTH_CHECK: {
449
+ /**
450
+ * Default health check interval (milliseconds)
451
+ */
452
+ readonly DEFAULT_INTERVAL_MS: 30000;
453
+ /**
454
+ * Default health check timeout (milliseconds)
455
+ */
456
+ readonly DEFAULT_TIMEOUT_MS: 5000;
457
+ /**
458
+ * Maximum acceptable latency (milliseconds)
459
+ * Health check fails if latency exceeds this
460
+ */
461
+ readonly MAX_ACCEPTABLE_LATENCY_MS: 2000;
462
+ };
463
+ };
464
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/notifications/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;;GAGG;AACH,eAAO,MAAM,6BAA6B,iBAAwC,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,sBAAsB;IACjC;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;IAGH;;;OAGG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B;;OAEG;;IAGH;;OAEG;;IAGH;;;OAGG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,UAAU;IACrB;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,2BAA2B;;QAtRtC;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;QAQH;;WAEG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;WAEG;;QAGH;;WAEG;;;;QAQH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;QAQH;;WAEG;;QAGH;;WAEG;;QAGH;;WAEG;;;;QAQH;;WAEG;;QAGH;;;WAGG;;QAGH;;WAEG;;;;QAQH;;WAEG;;QAGH;;WAEG;;QAGH;;;WAGG;;QAGH;;WAEG;;;;QASH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;QAQH;;WAEG;;QAGH;;WAEG;;QAGH;;WAEG;;QAGH;;WAEG;;;;QAQH;;WAEG;;QAGH;;;WAGG;;;;QAQH;;WAEG;;QAGH;;WAEG;;QAGH;;;WAGG;;;CAkBK,CAAC"}
@@ -1,3 +1,3 @@
1
1
  'use strict';var types=require('@plyaz/types');// @plyaz package - Built with tsup
2
- var E={BYTES_PER_MB:1048576};var T=25,_=30,U=types.NOTIFICATION_CATEGORIES.TRANSACTIONAL,A={DEFAULT_MAX_ATTEMPTS:3,DEFAULT_INITIAL_DELAY_MS:1e3,MAX_DELAY_MS:3e4,BACKOFF_MULTIPLIER:2},I={DEFAULT_MAX_ATTACHMENTS:10,DEFAULT_MAX_SIZE_PER_ATTACHMENT:T*E.BYTES_PER_MB,DEFAULT_MAX_TOTAL_SIZE:T*E.BYTES_PER_MB,SENDGRID_MAX_SIZE:_*E.BYTES_PER_MB,SENDGRID_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,URL_FETCH_TIMEOUT_MS:3e4,URL_FETCH_MAX_RETRIES:3},N={DEFAULT_FAILURE_THRESHOLD:5,DEFAULT_TIMEOUT_MS:6e4,DEFAULT_SUCCESS_THRESHOLD:2},S={DEFAULT_MAX_SIZE:1e4,DEFAULT_CONCURRENCY:5,DEFAULT_PROCESSING_INTERVAL_MS:100},L={DEFAULT_REQUESTS_PER_SECOND:10,DEFAULT_BURST_ALLOWANCE:20,DEFAULT_WINDOW_MS:1e3},C={DEFAULT_LOCALE:"en",FALLBACK_LOCALE:"en",CACHE_TTL_MS:3e5,MAX_TEMPLATE_SIZE:E.BYTES_PER_MB},R={GSM7_SINGLE_MESSAGE_LIMIT:160,GSM7_MULTI_PART_SEGMENT_LIMIT:153,UCS2_SINGLE_MESSAGE_LIMIT:70,UCS2_MULTI_PART_SEGMENT_LIMIT:67,DEFAULT_MAX_SEGMENTS:10,WARNING_THRESHOLD_PERCENTAGE:90},M={DEFAULT_PRIORITY:"normal",MAX_SUBJECT_LENGTH:255,MAX_PUSH_TITLE_LENGTH:100,MAX_PUSH_BODY_LENGTH:500},O={DEFAULT_LEVEL:"info",MAX_LOG_SIZE:1e4},o={DEFAULT_INTERVAL_MS:3e4,DEFAULT_TIMEOUT_MS:5e3,MAX_ACCEPTABLE_LATENCY_MS:2e3},G={RETRY:A,ATTACHMENT:I,CIRCUIT_BREAKER:N,QUEUE:S,RATE_LIMIT:L,TEMPLATE:C,SMS:R,NOTIFICATION:M,LOGGING:O,HEALTH_CHECK:o};exports.ATTACHMENT_CONFIG=I;exports.CIRCUIT_BREAKER_CONFIG=N;exports.DEFAULT_NOTIFICATION_CATEGORY=U;exports.HEALTH_CHECK_CONFIG=o;exports.LOGGING_CONFIG=O;exports.NOTIFICATION_CONFIG=M;exports.NOTIFICATION_PACKAGE_CONFIG=G;exports.QUEUE_CONFIG=S;exports.RATE_LIMIT_CONFIG=L;exports.RETRY_CONFIG=A;exports.SMS_CONFIG=R;exports.TEMPLATE_CONFIG=C;//# sourceMappingURL=index.cjs.map
2
+ var E={BYTES_PER_MB:1048576};var T=25,_=30,s=types.NOTIFICATION_CATEGORIES.TRANSACTIONAL,I={DEFAULT_MAX_ATTEMPTS:3,DEFAULT_INITIAL_DELAY_MS:1e3,MAX_DELAY_MS:3e4,BACKOFF_MULTIPLIER:2},S={DEFAULT_MAX_ATTACHMENTS:10,DEFAULT_MAX_SIZE_PER_ATTACHMENT:T*E.BYTES_PER_MB,DEFAULT_MAX_TOTAL_SIZE:T*E.BYTES_PER_MB,SENDGRID_MAX_SIZE:_*E.BYTES_PER_MB,SENDGRID_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,URL_FETCH_TIMEOUT_MS:3e4,URL_FETCH_MAX_RETRIES:3},L={DEFAULT_FAILURE_THRESHOLD:5,DEFAULT_TIMEOUT_MS:6e4,DEFAULT_SUCCESS_THRESHOLD:2},N={DEFAULT_MAX_SIZE:1e4,DEFAULT_CONCURRENCY:5,DEFAULT_PROCESSING_INTERVAL_MS:100},R={DEFAULT_REQUESTS_PER_SECOND:10,DEFAULT_BURST_ALLOWANCE:20,DEFAULT_WINDOW_MS:1e3},M={DEFAULT_LOCALE:"en",FALLBACK_LOCALE:"en",CACHE_TTL_MS:3e5,MAX_TEMPLATE_SIZE:E.BYTES_PER_MB},C={GSM7_SINGLE_MESSAGE_LIMIT:160,GSM7_MULTI_PART_SEGMENT_LIMIT:153,UCS2_SINGLE_MESSAGE_LIMIT:70,UCS2_MULTI_PART_SEGMENT_LIMIT:67,DEFAULT_MAX_SEGMENTS:10,WARNING_THRESHOLD_PERCENTAGE:90},O={DEFAULT_PRIORITY:"normal",MAX_SUBJECT_LENGTH:255,MAX_PUSH_TITLE_LENGTH:100,MAX_PUSH_BODY_LENGTH:500},o={DEFAULT_LEVEL:"info",MAX_LOG_SIZE:1e4},t={DEFAULT_INTERVAL_MS:3e4,DEFAULT_TIMEOUT_MS:5e3,MAX_ACCEPTABLE_LATENCY_MS:2e3},P={RETRY:I,ATTACHMENT:S,CIRCUIT_BREAKER:L,QUEUE:N,RATE_LIMIT:R,TEMPLATE:M,SMS:C,NOTIFICATION:O,LOGGING:o,HEALTH_CHECK:t};exports.ATTACHMENT_CONFIG=S;exports.CIRCUIT_BREAKER_CONFIG=L;exports.DEFAULT_NOTIFICATION_CATEGORY=s;exports.HEALTH_CHECK_CONFIG=t;exports.LOGGING_CONFIG=o;exports.NOTIFICATION_CONFIG=O;exports.NOTIFICATION_PACKAGE_CONFIG=P;exports.QUEUE_CONFIG=N;exports.RATE_LIMIT_CONFIG=R;exports.RETRY_CONFIG=I;exports.SMS_CONFIG=C;exports.TEMPLATE_CONFIG=M;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Notification Configuration Module
3
+ *
4
+ * Exports all configuration constants for the notifications system.
5
+ *
6
+ * @module src/notifications
7
+ */
8
+ export * from './constants';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,aAAa,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import {NOTIFICATION_CATEGORIES}from'@plyaz/types';// @plyaz package - Built with tsup
2
- var E={BYTES_PER_MB:1048576};var T=25,_=30,U=NOTIFICATION_CATEGORIES.TRANSACTIONAL,A={DEFAULT_MAX_ATTEMPTS:3,DEFAULT_INITIAL_DELAY_MS:1e3,MAX_DELAY_MS:3e4,BACKOFF_MULTIPLIER:2},I={DEFAULT_MAX_ATTACHMENTS:10,DEFAULT_MAX_SIZE_PER_ATTACHMENT:T*E.BYTES_PER_MB,DEFAULT_MAX_TOTAL_SIZE:T*E.BYTES_PER_MB,SENDGRID_MAX_SIZE:_*E.BYTES_PER_MB,SENDGRID_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,URL_FETCH_TIMEOUT_MS:3e4,URL_FETCH_MAX_RETRIES:3},N={DEFAULT_FAILURE_THRESHOLD:5,DEFAULT_TIMEOUT_MS:6e4,DEFAULT_SUCCESS_THRESHOLD:2},S={DEFAULT_MAX_SIZE:1e4,DEFAULT_CONCURRENCY:5,DEFAULT_PROCESSING_INTERVAL_MS:100},L={DEFAULT_REQUESTS_PER_SECOND:10,DEFAULT_BURST_ALLOWANCE:20,DEFAULT_WINDOW_MS:1e3},C={DEFAULT_LOCALE:"en",FALLBACK_LOCALE:"en",CACHE_TTL_MS:3e5,MAX_TEMPLATE_SIZE:E.BYTES_PER_MB},R={GSM7_SINGLE_MESSAGE_LIMIT:160,GSM7_MULTI_PART_SEGMENT_LIMIT:153,UCS2_SINGLE_MESSAGE_LIMIT:70,UCS2_MULTI_PART_SEGMENT_LIMIT:67,DEFAULT_MAX_SEGMENTS:10,WARNING_THRESHOLD_PERCENTAGE:90},M={DEFAULT_PRIORITY:"normal",MAX_SUBJECT_LENGTH:255,MAX_PUSH_TITLE_LENGTH:100,MAX_PUSH_BODY_LENGTH:500},O={DEFAULT_LEVEL:"info",MAX_LOG_SIZE:1e4},o={DEFAULT_INTERVAL_MS:3e4,DEFAULT_TIMEOUT_MS:5e3,MAX_ACCEPTABLE_LATENCY_MS:2e3},G={RETRY:A,ATTACHMENT:I,CIRCUIT_BREAKER:N,QUEUE:S,RATE_LIMIT:L,TEMPLATE:C,SMS:R,NOTIFICATION:M,LOGGING:O,HEALTH_CHECK:o};export{I as ATTACHMENT_CONFIG,N as CIRCUIT_BREAKER_CONFIG,U as DEFAULT_NOTIFICATION_CATEGORY,o as HEALTH_CHECK_CONFIG,O as LOGGING_CONFIG,M as NOTIFICATION_CONFIG,G as NOTIFICATION_PACKAGE_CONFIG,S as QUEUE_CONFIG,L as RATE_LIMIT_CONFIG,A as RETRY_CONFIG,R as SMS_CONFIG,C as TEMPLATE_CONFIG};//# sourceMappingURL=index.mjs.map
2
+ var E={BYTES_PER_MB:1048576};var T=25,_=30,s=NOTIFICATION_CATEGORIES.TRANSACTIONAL,I={DEFAULT_MAX_ATTEMPTS:3,DEFAULT_INITIAL_DELAY_MS:1e3,MAX_DELAY_MS:3e4,BACKOFF_MULTIPLIER:2},S={DEFAULT_MAX_ATTACHMENTS:10,DEFAULT_MAX_SIZE_PER_ATTACHMENT:T*E.BYTES_PER_MB,DEFAULT_MAX_TOTAL_SIZE:T*E.BYTES_PER_MB,SENDGRID_MAX_SIZE:_*E.BYTES_PER_MB,SENDGRID_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_SIZE:_*E.BYTES_PER_MB,INFOBIP_MAX_TOTAL_SIZE:_*E.BYTES_PER_MB,URL_FETCH_TIMEOUT_MS:3e4,URL_FETCH_MAX_RETRIES:3},L={DEFAULT_FAILURE_THRESHOLD:5,DEFAULT_TIMEOUT_MS:6e4,DEFAULT_SUCCESS_THRESHOLD:2},N={DEFAULT_MAX_SIZE:1e4,DEFAULT_CONCURRENCY:5,DEFAULT_PROCESSING_INTERVAL_MS:100},R={DEFAULT_REQUESTS_PER_SECOND:10,DEFAULT_BURST_ALLOWANCE:20,DEFAULT_WINDOW_MS:1e3},M={DEFAULT_LOCALE:"en",FALLBACK_LOCALE:"en",CACHE_TTL_MS:3e5,MAX_TEMPLATE_SIZE:E.BYTES_PER_MB},C={GSM7_SINGLE_MESSAGE_LIMIT:160,GSM7_MULTI_PART_SEGMENT_LIMIT:153,UCS2_SINGLE_MESSAGE_LIMIT:70,UCS2_MULTI_PART_SEGMENT_LIMIT:67,DEFAULT_MAX_SEGMENTS:10,WARNING_THRESHOLD_PERCENTAGE:90},O={DEFAULT_PRIORITY:"normal",MAX_SUBJECT_LENGTH:255,MAX_PUSH_TITLE_LENGTH:100,MAX_PUSH_BODY_LENGTH:500},o={DEFAULT_LEVEL:"info",MAX_LOG_SIZE:1e4},t={DEFAULT_INTERVAL_MS:3e4,DEFAULT_TIMEOUT_MS:5e3,MAX_ACCEPTABLE_LATENCY_MS:2e3},P={RETRY:I,ATTACHMENT:S,CIRCUIT_BREAKER:L,QUEUE:N,RATE_LIMIT:R,TEMPLATE:M,SMS:C,NOTIFICATION:O,LOGGING:o,HEALTH_CHECK:t};export{S as ATTACHMENT_CONFIG,L as CIRCUIT_BREAKER_CONFIG,s as DEFAULT_NOTIFICATION_CATEGORY,t as HEALTH_CHECK_CONFIG,o as LOGGING_CONFIG,O as NOTIFICATION_CONFIG,P as NOTIFICATION_PACKAGE_CONFIG,N as QUEUE_CONFIG,R as RATE_LIMIT_CONFIG,I as RETRY_CONFIG,C as SMS_CONFIG,M as TEMPLATE_CONFIG};//# sourceMappingURL=index.mjs.map
3
3
  //# sourceMappingURL=index.mjs.map
@@ -1,3 +1,3 @@
1
1
  'use strict';var types=require('@plyaz/types');// @plyaz package - Built with tsup
2
- var T=Object.defineProperty;var o=(e,n)=>T(e,"name",{value:n,configurable:true});var l="sha256",O="unknown",D={AdapterInitFailed:"ADAPTER_INIT_FAILED",MissingProviderType:"MISSING_PROVIDER_TYPE",MissingEnvironment:"MISSING_ENVIRONMENT",MissingCredentials:"MISSING_CREDENTIALS",MissingWebhookUrl:"MISSING_WEBHOOK_URL",MissingUnregisterEndpoint:"MISSING_UNREGISTER_ENDPOINT",HmacComputationFailed:"HMAC_COMPUTATION_FAILED",AdapterShutdownError:"ADAPTER_SHUTDOWN_ERROR"},C={InitSuccess:"Adapter initialized successfully",InitFail:"Adapter initialization failed:",ShutdownStart:"Shutdown started",ShutdownComplete:"Shutdown completed",ShutdownError:"Error during shutdown:",NotInitialized:"Adapter is not initialized",HealthFail:"Health check failed: missing config/credentials",HealthError:"quickHealthCheck error:",WebhookNoopRegister:"(noop) register webhook at",WebhookNoopUnregister:"(noop) unregister webhook:",ReadinessError:"Error during readiness check:"},p={RETRYABLE_ERROR_RATIO:.5,USER_FACING_ERROR_RATIO:.3},y=["token","secret","signature"],L={MIN_SCORE:100},d={CRITICAL:"critical",ERROR:"error",WARN:"warn"},M={PROVIDER_RESTRICTION:"ProviderRestriction",GENERIC:"An unexpected error occurred while processing refund"},P={RAW_BODY:"[REDACTED_RAW_BODY]",SENSITIVE:"[REDACTED]"},U={PAYMENTS:"payments",VALIDATION:"validation",FRAUD:"fraud-detector",WEBHOOK_PROCESSOR:"webhook-processor",FRAUD_DETECTED_ERROR:"FraudDetectedError",ROUTER_STRATEGY:"RouterStrategy",PAYMENT_GATEWAY:"PaymentGateway",PAYMENT_PROCESSOR:"PaymentProcessor",CAPTURE_PROCESSOR:"CaptureProcessor",CANCEL_PROCESSOR:"CancelProcessor",STATUS_PROCESSOR:"StatusProcessor"},A={PAYMENTS_PACKAGE_ERROR:"PAYMENTS_PACKAGE_ERROR",VALIDATION_ERROR:"VALIDATION_ERROR",AUTH_ERROR:"AUTH_ERROR",PROVIDER_ERROR:"PROVIDER_ERROR",REFUND_AUTHORIZATION_ERROR:"REFUND_AUTHORIZATION_ERROR",REFUND_PROCESSING_ERROR:"REFUND_PROCESSING_ERROR",WEBHOOK_ERROR:"WEBHOOK_ERROR",FRAUD_DETECTED:"FRAUD_DETECTED"},c={GENERIC_SYSTEM_ERROR:"An unexpected error occurred while processing payment.",USER_FRIENDLY_SYSTEM_ERROR:"A payment system error occurred. Please try again later.",USER_FRIENDLY_ALT:"Payment error. Please try again.",SYSTEM:"An internal payment error occurred. Our team has been notified.",VALIDATION:"Some payment information is invalid. Please review your details.",AUTHENTICATION:"Your session has expired. Please log in again.",AUTHORIZATION:"You are not authorized to perform this payment action.",PROVIDER:"There was an issue communicating with the payment provider.",NETWORK:"Network error. Please try again later.",FRAUD:"Suspicious activity detected. Please contact support.",REFUND:"Refund could not be processed. Please try again later.",WEBHOOK:"Payment notification failed. We are investigating.",PROCESSING:"Payment is currently being processed. Please wait a moment.",COMPLIANCE:"This transaction violates compliance rules. Please contact support.",LIMITS:"The payment exceeds your transaction limit.",CONFIGURATION:"Payment configuration error. Please contact your administrator.",DEFAULT:"An unexpected error occurred while processing your payment.",INVALID_VALUE:"Invalid value provided",PROVIDER_GENERIC:"Provider error occurred",REFUND_NOT_ALLOWED:"Refund not allowed",REFUND_AUTHORIZATION:"Refund authorization failed",REFUND_PROCESSING:"Refund processing failed",STRIPE_GENERIC:"An unexpected error occurred while communicating with Stripe"},G={CONFIG_VERIFICATION:"Verify payment configuration settings.",CREDENTIALS_CHECK:"Check payment provider API credentials.",DEPLOYMENT_REVIEW:"Review recent deployment or configuration changes.",RETRY_OPERATION:"Retry the operation after a short delay."},H={[types.ERROR_SEVERITY.Low]:true,[types.ERROR_SEVERITY.Medium]:false,[types.ERROR_SEVERITY.High]:true,[types.ERROR_SEVERITY.Critical]:true},m={GENERIC:"There was an error processing your payment. Please try again.",RESOLUTION_STEPS:["Check the payment provider status.","Retry the operation if appropriate."],API_RESPONSE_GENERIC:"A processing error occurred."},Y={DEFAULT_MESSAGE:"An error occurred while processing the webhook.",DEFAULT_CATEGORY:types.PAYMENT_ERROR_CATEGORY.Webhook,DEFAULT_CODE:A.WEBHOOK_ERROR,DEFAULT_USER_MESSAGE:"An error occurred while handling the webhook.",DEFAULT_RESOLUTION_STEPS:["Verify webhook configuration and endpoint URL.","Check webhook payload and signature.","Ensure retry logic handles transient errors."]},F={RETRY_LOGIC:"Review retry logic — too many retryable errors.",CHECK_PROVIDER:"Check payment provider connectivity or credentials.",CRITICAL_ALERT:"Trigger alert — critical payment errors detected.",USER_FACING:"Improve user-facing error handling for better UX.",SYSTEM_STABLE:"System stable — continue monitoring."},f={RETRY:"Retry transaction after delay.",NOTIFY_USER:"Notify user and suggest contacting support.",LOG_ONLY:"Log and continue monitoring."},b={NOT_ALLOWED:"Refund not allowed",AUTHORIZATION:"Refund authorization failed",PROCESSING:"Refund processing failed",DEFAULT_API_MESSAGE:"An error occurred during the refund process.",DEFAULT_USER_MESSAGE:"Refund could not be processed. Please try again or contact support.",RESOLUTION_STEPS:["Verify refund eligibility.","Check transaction status and history.","Ensure sufficient balance for refunds.","Retry after resolving any issues."]},B={NOT_ALLOWED:"REFUND_NOT_ALLOWED",AUTHORIZATION:"REFUND_AUTHORIZATION_ERROR",PROCESSING:"REFUND_PROCESSING_ERROR",WEBHOOK_ERROR:"WEBHOOK_ERROR"},h={REQUIRED:"manager",CURRENT:"user"},x={API_MESSAGE:"A compliance error occurred.",USER_MESSAGE:"A compliance or regulatory restriction prevented this action.",KYC_REQUIRED:"KYC verification is required to proceed.",GEO_RESTRICTED:"This transaction is not permitted in your region.",RESOLUTION_STEPS:["Review regulatory and compliance requirements.","Ensure KYC/AML verification is completed.","Verify geographic and provider restrictions."]},K={PROVIDER_ERROR_PREFIX:"Provider {provider} error",STRIPE_GENERIC:"An unexpected error occurred while communicating with Stripe.",WEBHOOK_SANITIZE_FAIL:"Failed to sanitize webhook payload",UNKNOWN_REFUND_TYPE:"Unknown refund error type: {type}",REDACTION_FAIL:"Failed to sanitize object."},V={PROVIDER:"provider",EVENT:"event"},v={API_CONNECTION:"api_connection_error",RATE_LIMIT:"rate_limit_error",INVALID_REQUEST:"invalid_request_error",CARD_ERROR:"card_error",AUTHENTICATION:"authentication_error",CARD_DECLINED:"card_declined"},X={DEFAULT_API_MESSAGE:"An error occurred with the payment provider.",DEFAULT_USER_MESSAGE:"A payment provider error occurred. Please try again later.",RESOLUTION_STEPS:["Check the payment provider status and logs.","Verify network connectivity.","Retry the operation if safe to do so."]},Z={DEFAULT_API_MESSAGE:"A security error occurred while processing the payment.",DEFAULT_USER_MESSAGE:"A security issue was detected with the payment. Please contact support.",RESOLUTION_STEPS:["Verify fraud detection rules and thresholds.","Review flagged transactions.","Ensure user identity and payment method verification."],FRAUD_DETECTED:{CODE:"FRAUD_DETECTED",DEFAULT_COMPONENT:"fraud-detector",USER_MESSAGE:"This transaction appears to be suspicious and has been blocked for your safety.",RESOLUTION_STEPS:["Review fraud detection logs for triggered rules.","Verify customer identity and payment method legitimacy.","If false positive, adjust fraud rule thresholds.","Escalate to manual fraud review team if necessary."],RISK_THRESHOLDS:{HIGH:70,CRITICAL:90}}},k={DEFAULT_MESSAGE:c.VALIDATION,DEFAULT_CODE:A.VALIDATION_ERROR,DEFAULT_CATEGORY:types.PAYMENT_ERROR_CATEGORY.Validation,DEFAULT_USER_MESSAGE:"Invalid payment input. Please check your data.",DEFAULT_RESOLUTION_STEPS:["Review the input values and retry the operation."]};var w=1,J=0,$=10,Q=1e4,j=0,z=1,q=.9,ee={PRIORITY:1,URGENT:0,MAX_LISTENERS:10,HANDLER_TIMEOUT_MS:1e4,SUCCESS_THRESHOLD:1,PARTIAL_SUCCESS_THRESHOLD:.9,EVENT_COUNT:0},oe={EMITTER:"event-emitter",PAYMENT_GATEWAY:"payment-gateway",SUBSCRIPTION_MANAGER:"subscription-manager",PROVIDER_ADAPTER:"provider-adapter"},re={HANDLER_FAILED:"HANDLER_FAILED",HANDLER_CRASHED:"HANDLER_CRASHED",HANDLER_TIMEOUT:"HANDLER_TIMEOUT"},te={HANDLER_FAILED:"Handler execution failed",HANDLER_TIMEOUT:"Handler execution timed out"},ne={DEVELOPMENT:"development",PRODUCTION:"production",TEST:"test"},_=0,s=1,S=2,u=3,Ee={NONE:_,CAPTURING_PHASE:s,AT_TARGET:S,BUBBLING_PHASE:u},ie={PRIORITY:"priority",URGENT:"urgent",CATEGORY:"category",TAGS:"tags",SOURCE:"source"},ae={COMPONENT:"component",ENVIRONMENT:"environment"},Ae={ERROR:"error",INFO:"info",WARNING:"warning",CRITICAL:"critical"},Re=o(()=>[],"EmptyArray"),Te=o(()=>Date.now(),"CurrentTimestamp"),ce={FULFILLED:"fulfilled",REJECTED:"rejected"},_e={NORMALIZATION_FAILED:"Event normalization failed.",MAPPING_MISSING:"No mapping configuration found for provider.",MAPPING_RETRIEVE_FAILED:"Failed to retrieve provider mapping.",BUILD_NORMALIZED_DATA_FAILED:"Failed to build normalized payment data.",BUILD_UNIFIED_EVENT_FAILED:"Failed to build unified event.",EVENT_TYPE_MAPPING_FAILED:"Event type mapping failed.",STATUS_MAPPING_FAILED:"Status mapping failed.",PAYLOAD_EXTRACTION_FAILED:"Payload extraction failed.",requiredFileMissing:o(e=>`Required field "${e}" is missing.`,"requiredFileMissing")};var ue=1e3,Ne=6e4,ge=3,Ie={NO_PROVIDER:"NO_PROVIDER_SELECTED",PROVIDER_FAILURE:"PROVIDER_FAILURE",CIRCUIT_OPEN:"CIRCUIT_OPEN",UNKNOWN_ERROR:"UNKNOWN_ERROR"},le={USER_ACTION:"contact_support",SYSTEM_ACTION:"manual_review"},Oe={LOW:"low",MEDIUM:"medium",HIGH:"high"},De={FALLBACK_USED:"fallback_used"},Ce={AMOUNT:"request.amount",CURRENCY:"request.currency",USER_TYPE:"request.userType",REGION:"request.metadata.geoInfo.region"},N=(E=>(E.ASSIGNMENT="assignment",E.LOGICAL="logical",E.COMPARISON="comparison",E.ARITHMETIC="arithmetic",E.CONDITIONAL="conditional",E.CONCATENATE="concatenate",E))(N||{});var ye="2022-11-15",Le="v1.0.0",de=0,Me=.029,Pe=0,Ue=.01,Ge=100,He={CREDIT_CARD:30,BANK_TRANSFER:500,BOLETO_BANCARIO:200,SEPA_DIRECT_DEBIT:50,IDEAL_BANK:50},me={REDIRECT:10},Ye=1,Fe=100,fe=.9,be=80,Be=2,he=100,xe=1e3,Ke=0,Ve={REDIRECT:"redirect",WAIT:"wait",RETRY:"retry",CONTACT_SUPPORT:"contact_support"},ve={WEBHOOK_PENDING:"webhook_pending",MANUAL_REVIEW:"manual_review",AUTO_RETRY:"auto_retry"},Xe={PAYMENT_INTENT_CREATED:"payment_intent.created",PAYMENT_INTENT_PROCESSING:"payment_intent.processing",PAYMENT_INTENT_REQUIRES_ACTION:"payment_intent.requires_action",PAYMENT_INTENT_SUCCEEDED:"payment_intent.succeeded",PAYMENT_INTENT_FAILED:"payment_intent.payment_failed",PAYMENT_INTENT_CANCELED:"payment_intent.canceled",PAYMENT_INTENT_EXPIRED:"payment_intent.expired",PAYMENT_INTENT_AUTHORIZED:"payment_intent.authorized",PAYMENT_INTENT_CAPTURED:"payment_intent.captured",PAYMENT_INTENT_HELD:"payment_intent.held",PAYMENT_INTENT_RELEASED:"payment_intent.released",CHARGE_REFUND_CREATED:"charge.refund.created",REFUND_UPDATED:"refund.updated",CHARGE_REFUND_SUCCEEDED:"charge.refund.succeeded",CHARGE_REFUND_FAILED:"charge.refund.failed",CHARGE_REFUND_CANCELED:"charge.refund.canceled",CHARGE_DISPUTE_CREATED:"charge.dispute.created",CHARGE_DISPUTE_UPDATED:"charge.dispute.updated",CHARGE_DISPUTE_CLOSED:"charge.dispute.closed",CHARGEBACK_RECEIVED:"chargeback.received",CHARGEBACK_RESPONDED:"chargeback.responded",CHARGE_DISPUTE_WON:"charge.dispute.won",CHARGE_DISPUTE_LOST:"charge.dispute.lost",PAYMENT_METHOD_ATTACHED:"payment_method.attached",PAYMENT_METHOD_UPDATED:"payment_method.updated",PAYMENT_METHOD_DETACHED:"payment_method.detached",PAYMENT_METHOD_EXPIRED:"payment_method.expired",SUBSCRIPTION_CREATED:"customer.subscription.created",SUBSCRIPTION_UPDATED:"customer.subscription.updated",SUBSCRIPTION_DELETED:"customer.subscription.deleted",INVOICE_PAYMENT_SUCCEEDED:"invoice.payment_succeeded",INVOICE_PAYMENT_FAILED:"invoice.payment_failed"},Ze={MINIMUM_MINUTES:1,MAXIMUM_MINUTES:60,TYPICAL_MINUTES:10,FACTORS:["default estimate"]},ke={MINIMUM_DAYS:1,MAXIMUM_DAYS:7,TYPICAL_DAYS:3,AFFECTED_BY_HOLIDAYS:true},We={SUCCEEDED:"succeeded",PROCESSING:"processing",REQUIRES_ACTION:"requires_action",REQUIRES_CONFIRMATION:"requires_confirmation",REQUIRES_PAYMENT_METHOD:"requires_payment_method",CANCELED:"canceled",FAILED:"failed",DECLINED:"declined",EXPIRED:"expired",AUTHORIZED:"authorized",CAPTURED:"captured",HELD:"held",REFUNDED:"refunded",PARTIALLY_REFUNDED:"partially_refunded",DISPUTED:"disputed",CHARGEBACK:"chargeback",CHARGEBACK_RESOLVED:"chargeback_resolved"},we={TRANSACTION_ID:"data.object.id",AMOUNT:"data.object.amount",CURRENCY:"data.object.currency",STATUS:"data.object.status",PAYMENT_METHOD:"data.object.payment_method",METADATA:"data.object.metadata"},Je={INITIALIZE:"initialize",CREATE_PAYMENT:"createPayment",CAPTURE_PAYMENT:"capturePayment",CANCEL_PAYMENT:"cancelPayment",PROCESS_REFUND:"processRefund",GET_REFUND_STATUS:"getRefundStatus",GET_PAYMENT_STATUS:"getPaymentStatus",PROCESS_WEBHOOK:"processWebhook",VERIFY_WEBHOOK_SIGNATURE:"verifyWebhookSignature",CALCULATE_FEES:"calculateFees",GET_FEE_STRUCTURE:"getFeeStructure",GET_TRANSACTION:"getTransaction",WEBHOOK_PROCESS:"webhookProcess"},$e={MISSING_API_KEY:"Missing Stripe API key",UNKNOWN_EVENT:"unknown",MISSING_EVENT:"missing"};var t={REGISTRY:"ProviderRegistry",FACTORY:"ProviderFactory",FALLBACK:"FallbackHandler",AB_TESTING:"ABTesting"},eo={REGISTRY_GET_FACTORY:`${t.REGISTRY}.getFactory`,FACTORY_CREATE_ADAPTER:`${t.FACTORY}.createAdapter`,FACTORY_GET_CONFIG:`${t.FALLBACK}.getProviderConfig`,FACTORY_GET_OPTIMAL_ADAPTER:`${t.AB_TESTING}.getOptimalAdapter`},oo={providerAlreadyRegistered:o(e=>`[${t.REGISTRY}] Provider '${e}' is already registered. Overwriting.`,"providerAlreadyRegistered"),providerRegistered:o(e=>`[${t.FACTORY}] Registered provider: ${e}`,"providerRegistered"),providerNotRegistered:o(e=>`[${t.REGISTRY}] Provider '${e}' is not registered.`,"providerNotRegistered"),adapterInitFailed:o(e=>`[${t.FACTORY}] Failed to initialize adapter for ${e}`,"adapterInitFailed"),optimalAdapterFailed:o(e=>`[${t.FACTORY}] Failed to get optimal adapter for: ${e}`,"optimalAdapterFailed")};var R={USD:"USD",EUR:"EUR",GBP:"GBP",JPY:"JPY",CHF:"CHF",CAD:"CAD",AUD:"AUD",CNY:"CNY",INR:"INR",KRW:"KRW",SGD:"SGD",HKD:"HKD",TWD:"TWD",THB:"THB",IDR:"IDR",MYR:"MYR",PHP:"PHP",VND:"VND",BDT:"BDT",PKR:"PKR",LKR:"LKR",SEK:"SEK",NOK:"NOK",DKK:"DKK",PLN:"PLN",CZK:"CZK",HUF:"HUF",RON:"RON",BGN:"BGN",HRK:"HRK",RSD:"RSD",ISK:"ISK",BRL:"BRL",MXN:"MXN",ARS:"ARS",CLP:"CLP",COP:"COP",PEN:"PEN",UYU:"UYU",VES:"VES",BOB:"BOB",PYG:"PYG",CRC:"CRC",GTQ:"GTQ",HNL:"HNL",NIO:"NIO",PAB:"PAB",DOP:"DOP",JMD:"JMD",TTD:"TTD",BBD:"BBD",AED:"AED",SAR:"SAR",QAR:"QAR",KWD:"KWD",BHD:"BHD",OMR:"OMR",JOD:"JOD",ILS:"ILS",TRY:"TRY",IQD:"IQD",IRR:"IRR",LBP:"LBP",SYP:"SYP",ZAR:"ZAR",NGN:"NGN",EGP:"EGP",KES:"KES",GHS:"GHS",MAD:"MAD",TND:"TND",DZD:"DZD",ETB:"ETB",TZS:"TZS",UGX:"UGX",ZMW:"ZMW",BWP:"BWP",MUR:"MUR",NZD:"NZD",FJD:"FJD",PGK:"PGK",RUB:"RUB",UAH:"UAH",BYN:"BYN",KZT:"KZT",UZS:"UZS",AZN:"AZN",GEL:"GEL",AMD:"AMD",BTC:"BTC",ETH:"ETH",USDT:"USDT",USDC:"USDC"};var Lo=Object.values(R),Mo={AMOUNT:"Amount must be a positive number with valid currency format.",CORE_FIELDS:"Missing required core fields: amount, paymentMethod, userId, userType, productId, productType.",CURRENCY:"Unsupported or missing currency code.",METADATA:"Invalid metadata structure or missing required metadata fields.",RISK_ASSESSMENT:"Invalid or inconsistent risk assessment fields.",SCHEDULING:"Invalid scheduling configuration.",REFUND_TRANSACTION_ID:"Transaction ID is required.",REFUND_PROVIDER:"Provider is required.",REFUND_AMOUNT:"Refund amount must be positive."},Po={AMOUNT:"AmountValidator",CORE_FIELDS:"CoreFieldValidator",CURRENCY:"CurrencyValidator",METADATA:"MetadataValidator",RISK_ASSESSMENT:"RiskAssessmentValidator",SCHEDULING:"SchedulingValidator"},Uo=["amount","paymentMethod","userId","userType","productId","productType"],Go=["monthly","quarterly","yearly"],Ho=["low","medium","high"],mo=["daily","weekly","monthly","quarterly","yearly"],Yo=0,Fo=3;var r={core:"RouterStrategy",rules:"RuleEvaluator",config:"RoutingConfig",factory:"AdapterFactory",cache:"AdapterCache",provider:"ProviderSelector",region:"RegionResolver",compliance:"ComplianceChecker",abtest:"ABTestingModule",default:"DefaultProviderSelector"},bo={invalidProvider:o(()=>`[${r.core}] No valid provider found during routing.`,"invalidProvider"),providerSelected:o(e=>`[${r.provider}] Selected provider: ${e}`,"providerSelected"),fallbackToDefault:o(()=>`[${r.default}] Falling back to default provider.`,"fallbackToDefault"),adapterCached:o(e=>`[${r.cache}] Using cached adapter for ${e}`,"adapterCached"),adapterCreated:o(e=>`[${r.factory}] Created new adapter for ${e}`,"adapterCreated"),adapterCreationFailed:o(e=>`[${r.factory}] Failed to create adapter: ${String(e)}`,"adapterCreationFailed"),providerSelectionFailed:o(e=>`[${r.provider}] Provider selection failed: ${String(e)}`,"providerSelectionFailed"),invalidRuleExpression:o((e,n)=>`[${r.rules}] Custom rule '${e}' evaluation failed: ${String(n)}`,"invalidRuleExpression"),ruleFailed:o((e,n)=>`[${r.rules}] Rule '${e}' evaluation failed: ${String(n)}`,"ruleFailed"),invalidRoutingConfig:o(e=>`[${r.config}] Invalid routing configuration detected: ${String(e)}`,"invalidRoutingConfig"),missingRegionConfig:o(e=>`[${r.region}] Missing region configuration for '${e??"unknown"}'.`,"missingRegionConfig"),complianceCheckFailed:o((e,n)=>`[${r.compliance}] Compliance check failed for region '${e??"unknown"}': ${String(n)}`,"complianceCheckFailed")};var xo={validationFailedPrefix:"refund-validation-failed"},Ko={invalidInput:"Invalid provider or transaction ID",unknownError:"Unknown reconciliation error",descriptionFailed:"Reconciliation failed"},Vo={validationErrorPattern:/^\[(.*?)\]\s(.*)$/},vo={cancelProcessor:"Invalid input for cancellation",captureProcessor:"Invalid input for capture",statusProcessor:"Invalid input for payment status"};exports.ADAPTER_ERROR_CODE=D;exports.ADAPTER_LOG_MESSAGE=C;exports.AMOUNT_DECIMALS=Be;exports.AMOUNT_DIVISOR=he;exports.COMPLIANCE_ERROR_MESSAGES=x;exports.COMPONENTS=U;exports.CORE_FIELDS=Uo;exports.CURRENCY_CODE_LENGTH=Fo;exports.CUSTOM_RULE_FIELD=Ce;exports.CUSTOM_RULE_OPERATER=N;exports.CurrentTimestamp=Te;exports.DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD=ge;exports.DEFAULT_CROSS_BORDER_RATE=Ue;exports.DEFAULT_ENVIRONMENT=O;exports.DEFAULT_EVENT_COUNT=j;exports.DEFAULT_HANDLER_TIMEOUT_MS=Q;exports.DEFAULT_HMAC_ALGORITHM=l;exports.DEFAULT_MAX_LISTENERS=$;exports.DEFAULT_PARTIAL_SUCCESS_THRESHOLD=q;exports.DEFAULT_PAYEMNT_PRIORITY=w;exports.DEFAULT_PLATFORM_RATE=Pe;exports.DEFAULT_PRIORITY=Ge;exports.DEFAULT_PROCESSING_RATE=Me;exports.DEFAULT_PROCESSING_TIME=Ze;exports.DEFAULT_REFUND_LEVELS=h;exports.DEFAULT_RETRY_DELAY_MS=ue;exports.DEFAULT_SETTLEMENT_TIME=ke;exports.DEFAULT_SUCCESS_THRESHOLD=z;exports.DEFAULT_URGENT=J;exports.EVENT_COMPONENT=oe;exports.EVENT_DEFAULTS=ee;exports.EVENT_ENVIRONMENT=ne;exports.EVENT_ERROR_CODE=re;exports.EVENT_ERROR_MESSAGE=te;exports.EVENT_META_KEY=ie;exports.EVENT_NORMALIZER_MESSAGES=_e;exports.EVENT_PHASE=Ee;exports.EVENT_RESULT_STATUS=Ae;exports.EVENT_SOURCE_FIELD=ae;exports.EmptyArray=Re;exports.FACTORY_MESSAGES=K;exports.FALLBACK_NEXT_STEPS=le;exports.FALLBACK_REASON=Ie;exports.FIXED_FEES=He;exports.LOG_LEVELS=d;exports.MAX_CIRCUIT_OPEN_MS=Ne;exports.MIN_POSITIVE_AMOUNT=Yo;exports.NEXT_STEP_EXPECTED_UPDATE_IN=me;exports.NEXT_STEP_SYSTEM_ACTION=ve;exports.NEXT_STEP_USER_ACTION=Ve;exports.PAYLOAD_KEYS=V;exports.PAYMENT_ALERT_SEVERITY=H;exports.PAYMENT_ERROR_CODES=A;exports.PAYMENT_ERROR_MESSAGES=c;exports.PAYMENT_OPERATION=Je;exports.PAYMENT_PROCESSOR_PATTERN=Vo;exports.PAYMENT_RESOLUTION_STEPS=G;exports.PHASE_AT_TARGET=S;exports.PHASE_BUBBLING=u;exports.PHASE_CAPTURING=s;exports.PHASE_NONE=_;exports.PROCESSING_ERROR_MESSAGES=m;exports.PROCESSOR_MESSAGES=vo;exports.PROVIDER_CONTEXT=t;exports.PROVIDER_ENDPOINTS=eo;exports.PROVIDER_ERROR_MESSAGES=X;exports.PROVIDER_MESSAGES=oo;exports.RECOMMENDATION_MESSAGES=F;exports.RECONCILIATION_MESSAGES=Ko;exports.RECOVERY_STEPS=f;exports.REDACTED=P;exports.REFUND_DEFAULT_REASONS=M;exports.REFUND_ERROR_CODES=B;exports.REFUND_ERROR_MESSAGES=b;exports.REFUND_MESSAGES=xo;exports.RISK_LEVEL=Oe;exports.RISK_SCORE=L;exports.ROUTER_CONTEXT=r;exports.SECURITY_ERROR_MESSAGES=Z;exports.SECURITY_FLAGS=De;exports.SENSITIVE_KEYS=y;exports.SETTLED_PROMISE_STATUS=ce;exports.STRIPE_API_VERSION=ye;exports.STRIPE_CONFIDENCE_HIGH=Ye;exports.STRIPE_CONFIDENCE_MEDIUM=fe;exports.STRIPE_DATA_PATHS=we;exports.STRIPE_ERROR_TYPES=v;exports.STRIPE_EVENT_TYPE=Xe;exports.STRIPE_MAPPING_VERSION=Le;exports.STRIPE_MESSAGES=$e;exports.STRIPE_PAYMENT_INTENT_STATUS=We;exports.STRIPE_PRIORITY_HIGH=Fe;exports.STRIPE_PRIORITY_MEDIUM=be;exports.SUPPORTED_CURRENCIES=Lo;exports.THRESHOLDS=p;exports.TIMESTAMP_FALLBACK=Ke;exports.UNIX_TIMESTAMP_MULTIPLIER=xe;exports.VALIDATION_CONSTANTS=k;exports.VALIDATION_MESSAGES=Mo;exports.VALIDATOR_NAMES=Po;exports.VALID_BILLING_CYCLES=Go;exports.VALID_RECURRENCE_FREQUENCIES=mo;exports.VALID_RISK_LEVELS=Ho;exports.WEBHOOK_CONSTANTS=Y;exports.ZERO_AMOUNT=de;exports.routerMessages=bo;//# sourceMappingURL=index.cjs.map
2
+ var T=Object.defineProperty;var o=(e,n)=>T(e,"name",{value:n,configurable:true});var l="sha256",O="unknown",D={AdapterInitFailed:"ADAPTER_INIT_FAILED",MissingProviderType:"MISSING_PROVIDER_TYPE",MissingEnvironment:"MISSING_ENVIRONMENT",MissingCredentials:"MISSING_CREDENTIALS",MissingWebhookUrl:"MISSING_WEBHOOK_URL",MissingUnregisterEndpoint:"MISSING_UNREGISTER_ENDPOINT",HmacComputationFailed:"HMAC_COMPUTATION_FAILED",AdapterShutdownError:"ADAPTER_SHUTDOWN_ERROR"},C={InitSuccess:"Adapter initialized successfully",InitFail:"Adapter initialization failed:",ShutdownStart:"Shutdown started",ShutdownComplete:"Shutdown completed",ShutdownError:"Error during shutdown:",NotInitialized:"Adapter is not initialized",HealthFail:"Health check failed: missing config/credentials",HealthError:"quickHealthCheck error:",WebhookNoopRegister:"(noop) register webhook at",WebhookNoopUnregister:"(noop) unregister webhook:",ReadinessError:"Error during readiness check:"},p={RETRYABLE_ERROR_RATIO:.5,USER_FACING_ERROR_RATIO:.3},y=["token","secret","signature"],L={MIN_SCORE:100},d={CRITICAL:"critical",ERROR:"error",WARN:"warn"},M={PROVIDER_RESTRICTION:"ProviderRestriction",GENERIC:"An unexpected error occurred while processing refund"},P={RAW_BODY:"[REDACTED_RAW_BODY]",SENSITIVE:"[REDACTED]"},U={PAYMENTS:"payments",VALIDATION:"validation",FRAUD:"fraud-detector",WEBHOOK_PROCESSOR:"webhook-processor",FRAUD_DETECTED_ERROR:"FraudDetectedError",ROUTER_STRATEGY:"RouterStrategy",PAYMENT_GATEWAY:"PaymentGateway",PAYMENT_PROCESSOR:"PaymentProcessor",CAPTURE_PROCESSOR:"CaptureProcessor",CANCEL_PROCESSOR:"CancelProcessor",STATUS_PROCESSOR:"StatusProcessor"},A={PAYMENTS_PACKAGE_ERROR:"PAYMENTS_PACKAGE_ERROR",VALIDATION_ERROR:"VALIDATION_ERROR",AUTH_ERROR:"AUTH_ERROR",PROVIDER_ERROR:"PROVIDER_ERROR",REFUND_AUTHORIZATION_ERROR:"REFUND_AUTHORIZATION_ERROR",REFUND_PROCESSING_ERROR:"REFUND_PROCESSING_ERROR",WEBHOOK_ERROR:"WEBHOOK_ERROR",FRAUD_DETECTED:"FRAUD_DETECTED"},c={GENERIC_SYSTEM_ERROR:"An unexpected error occurred while processing payment.",USER_FRIENDLY_SYSTEM_ERROR:"A payment system error occurred. Please try again later.",USER_FRIENDLY_ALT:"Payment error. Please try again.",SYSTEM:"An internal payment error occurred. Our team has been notified.",VALIDATION:"Some payment information is invalid. Please review your details.",AUTHENTICATION:"Your session has expired. Please log in again.",AUTHORIZATION:"You are not authorized to perform this payment action.",PROVIDER:"There was an issue communicating with the payment provider.",NETWORK:"Network error. Please try again later.",FRAUD:"Suspicious activity detected. Please contact support.",REFUND:"Refund could not be processed. Please try again later.",WEBHOOK:"Payment notification failed. We are investigating.",PROCESSING:"Payment is currently being processed. Please wait a moment.",COMPLIANCE:"This transaction violates compliance rules. Please contact support.",LIMITS:"The payment exceeds your transaction limit.",CONFIGURATION:"Payment configuration error. Please contact your administrator.",DEFAULT:"An unexpected error occurred while processing your payment.",INVALID_VALUE:"Invalid value provided",PROVIDER_GENERIC:"Provider error occurred",REFUND_NOT_ALLOWED:"Refund not allowed",REFUND_AUTHORIZATION:"Refund authorization failed",REFUND_PROCESSING:"Refund processing failed",STRIPE_GENERIC:"An unexpected error occurred while communicating with Stripe"},G={CONFIG_VERIFICATION:"Verify payment configuration settings.",CREDENTIALS_CHECK:"Check payment provider API credentials.",DEPLOYMENT_REVIEW:"Review recent deployment or configuration changes.",RETRY_OPERATION:"Retry the operation after a short delay."},H={[types.ERROR_SEVERITY.Low]:true,[types.ERROR_SEVERITY.Medium]:false,[types.ERROR_SEVERITY.High]:true,[types.ERROR_SEVERITY.Critical]:true},m={GENERIC:"There was an error processing your payment. Please try again.",RESOLUTION_STEPS:["Check the payment provider status.","Retry the operation if appropriate."],API_RESPONSE_GENERIC:"A processing error occurred."},Y={DEFAULT_MESSAGE:"An error occurred while processing the webhook.",DEFAULT_CATEGORY:types.PAYMENT_ERROR_CATEGORY.Webhook,DEFAULT_CODE:A.WEBHOOK_ERROR,DEFAULT_USER_MESSAGE:"An error occurred while handling the webhook.",DEFAULT_RESOLUTION_STEPS:["Verify webhook configuration and endpoint URL.","Check webhook payload and signature.","Ensure retry logic handles transient errors."]},F={RETRY_LOGIC:"Review retry logic — too many retryable errors.",CHECK_PROVIDER:"Check payment provider connectivity or credentials.",CRITICAL_ALERT:"Trigger alert — critical payment errors detected.",USER_FACING:"Improve user-facing error handling for better UX.",SYSTEM_STABLE:"System stable — continue monitoring."},f={RETRY:"Retry transaction after delay.",NOTIFY_USER:"Notify user and suggest contacting support.",LOG_ONLY:"Log and continue monitoring."},b={NOT_ALLOWED:"Refund not allowed",AUTHORIZATION:"Refund authorization failed",PROCESSING:"Refund processing failed",DEFAULT_API_MESSAGE:"An error occurred during the refund process.",DEFAULT_USER_MESSAGE:"Refund could not be processed. Please try again or contact support.",RESOLUTION_STEPS:["Verify refund eligibility.","Check transaction status and history.","Ensure sufficient balance for refunds.","Retry after resolving any issues."]},B={NOT_ALLOWED:"REFUND_NOT_ALLOWED",AUTHORIZATION:"REFUND_AUTHORIZATION_ERROR",PROCESSING:"REFUND_PROCESSING_ERROR",WEBHOOK_ERROR:"WEBHOOK_ERROR"},h={REQUIRED:"manager",CURRENT:"user"},x={API_MESSAGE:"A compliance error occurred.",USER_MESSAGE:"A compliance or regulatory restriction prevented this action.",KYC_REQUIRED:"KYC verification is required to proceed.",GEO_RESTRICTED:"This transaction is not permitted in your region.",RESOLUTION_STEPS:["Review regulatory and compliance requirements.","Ensure KYC/AML verification is completed.","Verify geographic and provider restrictions."]},K={PROVIDER_ERROR_PREFIX:"Provider {provider} error",STRIPE_GENERIC:"An unexpected error occurred while communicating with Stripe.",WEBHOOK_SANITIZE_FAIL:"Failed to sanitize webhook payload",UNKNOWN_REFUND_TYPE:"Unknown refund error type: {type}",REDACTION_FAIL:"Failed to sanitize object."},V={PROVIDER:"provider",EVENT:"event"},v={API_CONNECTION:"api_connection_error",RATE_LIMIT:"rate_limit_error",INVALID_REQUEST:"invalid_request_error",CARD_ERROR:"card_error",AUTHENTICATION:"authentication_error",CARD_DECLINED:"card_declined"},X={DEFAULT_API_MESSAGE:"An error occurred with the payment provider.",DEFAULT_USER_MESSAGE:"A payment provider error occurred. Please try again later.",RESOLUTION_STEPS:["Check the payment provider status and logs.","Verify network connectivity.","Retry the operation if safe to do so."]},Z={DEFAULT_API_MESSAGE:"A security error occurred while processing the payment.",DEFAULT_USER_MESSAGE:"A security issue was detected with the payment. Please contact support.",RESOLUTION_STEPS:["Verify fraud detection rules and thresholds.","Review flagged transactions.","Ensure user identity and payment method verification."],FRAUD_DETECTED:{CODE:"FRAUD_DETECTED",DEFAULT_COMPONENT:"fraud-detector",USER_MESSAGE:"This transaction appears to be suspicious and has been blocked for your safety.",RESOLUTION_STEPS:["Review fraud detection logs for triggered rules.","Verify customer identity and payment method legitimacy.","If false positive, adjust fraud rule thresholds.","Escalate to manual fraud review team if necessary."],RISK_THRESHOLDS:{HIGH:70,CRITICAL:90}}},k={DEFAULT_MESSAGE:c.VALIDATION,DEFAULT_CODE:A.VALIDATION_ERROR,DEFAULT_CATEGORY:types.PAYMENT_ERROR_CATEGORY.Validation,DEFAULT_USER_MESSAGE:"Invalid payment input. Please check your data.",DEFAULT_RESOLUTION_STEPS:["Review the input values and retry the operation."]};var w=1,J=0,$=10,Q=1e4,j=0,z=1,q=.9,ee={PRIORITY:1,URGENT:0,MAX_LISTENERS:10,HANDLER_TIMEOUT_MS:1e4,SUCCESS_THRESHOLD:1,PARTIAL_SUCCESS_THRESHOLD:.9,EVENT_COUNT:0},oe={EMITTER:"event-emitter",PAYMENT_GATEWAY:"payment-gateway",SUBSCRIPTION_MANAGER:"subscription-manager",PROVIDER_ADAPTER:"provider-adapter"},re={HANDLER_FAILED:"HANDLER_FAILED",HANDLER_CRASHED:"HANDLER_CRASHED",HANDLER_TIMEOUT:"HANDLER_TIMEOUT"},te={HANDLER_FAILED:"Handler execution failed",HANDLER_TIMEOUT:"Handler execution timed out"},ne={DEVELOPMENT:"development",PRODUCTION:"production",TEST:"test"},_=0,s=1,S=2,u=3,Ee={NONE:_,CAPTURING_PHASE:s,AT_TARGET:S,BUBBLING_PHASE:u},ie={PRIORITY:"priority",URGENT:"urgent",CATEGORY:"category",TAGS:"tags",SOURCE:"source"},ae={COMPONENT:"component",ENVIRONMENT:"environment"},Ae={ERROR:"error",INFO:"info",WARNING:"warning",CRITICAL:"critical"},Re=o(()=>[],"EmptyArray"),Te=o(()=>Date.now(),"CurrentTimestamp"),ce={FULFILLED:"fulfilled",REJECTED:"rejected"},_e={NORMALIZATION_FAILED:"Event normalization failed.",MAPPING_MISSING:"No mapping configuration found for provider.",MAPPING_RETRIEVE_FAILED:"Failed to retrieve provider mapping.",BUILD_NORMALIZED_DATA_FAILED:"Failed to build normalized payment data.",BUILD_UNIFIED_EVENT_FAILED:"Failed to build unified event.",EVENT_TYPE_MAPPING_FAILED:"Event type mapping failed.",STATUS_MAPPING_FAILED:"Status mapping failed.",PAYLOAD_EXTRACTION_FAILED:"Payload extraction failed.",requiredFileMissing:o(e=>`Required field "${e}" is missing.`,"requiredFileMissing")};var ue=1e3,Ne=6e4,ge=3,Ie={NO_PROVIDER:"NO_PROVIDER_SELECTED",PROVIDER_FAILURE:"PROVIDER_FAILURE",CIRCUIT_OPEN:"CIRCUIT_OPEN",UNKNOWN_ERROR:"UNKNOWN_ERROR"},le={USER_ACTION:"contact_support",SYSTEM_ACTION:"manual_review"},Oe={LOW:"low",MEDIUM:"medium",HIGH:"high"},De={FALLBACK_USED:"fallback_used"},Ce={AMOUNT:"request.amount",CURRENCY:"request.currency",USER_TYPE:"request.userType",REGION:"request.metadata.geoInfo.region"},N=(E=>(E.ASSIGNMENT="assignment",E.LOGICAL="logical",E.COMPARISON="comparison",E.ARITHMETIC="arithmetic",E.CONDITIONAL="conditional",E.CONCATENATE="concatenate",E))(N||{});var ye="2022-11-15",Le="v1.0.0",de=0,Me=.029,Pe=0,Ue=.01,Ge=100,He={CREDIT_CARD:30,BANK_TRANSFER:500,BOLETO_BANCARIO:200,SEPA_DIRECT_DEBIT:50,IDEAL_BANK:50},me={REDIRECT:10},Ye=1,Fe=100,fe=.9,be=80,Be=2,he=100,xe=1e3,Ke=0,Ve={REDIRECT:"redirect",WAIT:"wait",RETRY:"retry",CONTACT_SUPPORT:"contact_support"},ve={WEBHOOK_PENDING:"webhook_pending",MANUAL_REVIEW:"manual_review",AUTO_RETRY:"auto_retry"},Xe={PAYMENT_INTENT_CREATED:"payment_intent.created",PAYMENT_INTENT_PROCESSING:"payment_intent.processing",PAYMENT_INTENT_REQUIRES_ACTION:"payment_intent.requires_action",PAYMENT_INTENT_SUCCEEDED:"payment_intent.succeeded",PAYMENT_INTENT_FAILED:"payment_intent.payment_failed",PAYMENT_INTENT_CANCELED:"payment_intent.canceled",PAYMENT_INTENT_EXPIRED:"payment_intent.expired",PAYMENT_INTENT_AUTHORIZED:"payment_intent.authorized",PAYMENT_INTENT_CAPTURED:"payment_intent.captured",PAYMENT_INTENT_HELD:"payment_intent.held",PAYMENT_INTENT_RELEASED:"payment_intent.released",CHARGE_REFUND_CREATED:"charge.refund.created",REFUND_UPDATED:"refund.updated",CHARGE_REFUND_SUCCEEDED:"charge.refund.succeeded",CHARGE_REFUND_FAILED:"charge.refund.failed",CHARGE_REFUND_CANCELED:"charge.refund.canceled",CHARGE_DISPUTE_CREATED:"charge.dispute.created",CHARGE_DISPUTE_UPDATED:"charge.dispute.updated",CHARGE_DISPUTE_CLOSED:"charge.dispute.closed",CHARGEBACK_RECEIVED:"chargeback.received",CHARGEBACK_RESPONDED:"chargeback.responded",CHARGE_DISPUTE_WON:"charge.dispute.won",CHARGE_DISPUTE_LOST:"charge.dispute.lost",PAYMENT_METHOD_ATTACHED:"payment_method.attached",PAYMENT_METHOD_UPDATED:"payment_method.updated",PAYMENT_METHOD_DETACHED:"payment_method.detached",PAYMENT_METHOD_EXPIRED:"payment_method.expired",SUBSCRIPTION_CREATED:"customer.subscription.created",SUBSCRIPTION_UPDATED:"customer.subscription.updated",SUBSCRIPTION_DELETED:"customer.subscription.deleted",INVOICE_PAYMENT_SUCCEEDED:"invoice.payment_succeeded",INVOICE_PAYMENT_FAILED:"invoice.payment_failed"},Ze={MINIMUM_MINUTES:1,MAXIMUM_MINUTES:60,TYPICAL_MINUTES:10,FACTORS:["default estimate"]},ke={MINIMUM_DAYS:1,MAXIMUM_DAYS:7,TYPICAL_DAYS:3,AFFECTED_BY_HOLIDAYS:true},We={SUCCEEDED:"succeeded",PROCESSING:"processing",REQUIRES_ACTION:"requires_action",REQUIRES_CONFIRMATION:"requires_confirmation",REQUIRES_PAYMENT_METHOD:"requires_payment_method",CANCELED:"canceled",FAILED:"failed",DECLINED:"declined",EXPIRED:"expired",AUTHORIZED:"authorized",CAPTURED:"captured",HELD:"held",REFUNDED:"refunded",PARTIALLY_REFUNDED:"partially_refunded",DISPUTED:"disputed",CHARGEBACK:"chargeback",CHARGEBACK_RESOLVED:"chargeback_resolved"},we={TRANSACTION_ID:"data.object.id",AMOUNT:"data.object.amount",CURRENCY:"data.object.currency",STATUS:"data.object.status",PAYMENT_METHOD:"data.object.payment_method",METADATA:"data.object.metadata"},Je={INITIALIZE:"initialize",CREATE_PAYMENT:"createPayment",CAPTURE_PAYMENT:"capturePayment",CANCEL_PAYMENT:"cancelPayment",PROCESS_REFUND:"processRefund",GET_REFUND_STATUS:"getRefundStatus",GET_PAYMENT_STATUS:"getPaymentStatus",PROCESS_WEBHOOK:"processWebhook",VERIFY_WEBHOOK_SIGNATURE:"verifyWebhookSignature",CALCULATE_FEES:"calculateFees",GET_FEE_STRUCTURE:"getFeeStructure",GET_TRANSACTION:"getTransaction",WEBHOOK_PROCESS:"webhookProcess"},$e={MISSING_API_KEY:"Missing Stripe API key",UNKNOWN_EVENT:"unknown",MISSING_EVENT:"missing"};var t={REGISTRY:"ProviderRegistry",FACTORY:"ProviderFactory",FALLBACK:"FallbackHandler",AB_TESTING:"ABTesting"},qe={REGISTRY_GET_FACTORY:`${t.REGISTRY}.getFactory`,FACTORY_CREATE_ADAPTER:`${t.FACTORY}.createAdapter`,FACTORY_GET_CONFIG:`${t.FALLBACK}.getProviderConfig`,FACTORY_GET_OPTIMAL_ADAPTER:`${t.AB_TESTING}.getOptimalAdapter`},eo={providerAlreadyRegistered:o(e=>`[${t.REGISTRY}] Provider '${e}' is already registered. Overwriting.`,"providerAlreadyRegistered"),providerRegistered:o(e=>`[${t.FACTORY}] Registered provider: ${e}`,"providerRegistered"),providerNotRegistered:o(e=>`[${t.REGISTRY}] Provider '${e}' is not registered.`,"providerNotRegistered"),adapterInitFailed:o(e=>`[${t.FACTORY}] Failed to initialize adapter for ${e}`,"adapterInitFailed"),optimalAdapterFailed:o(e=>`[${t.FACTORY}] Failed to get optimal adapter for: ${e}`,"optimalAdapterFailed")};var R={USD:"USD",EUR:"EUR",GBP:"GBP",JPY:"JPY",CHF:"CHF",CAD:"CAD",AUD:"AUD",CNY:"CNY",INR:"INR",KRW:"KRW",SGD:"SGD",HKD:"HKD",TWD:"TWD",THB:"THB",IDR:"IDR",MYR:"MYR",PHP:"PHP",VND:"VND",BDT:"BDT",PKR:"PKR",LKR:"LKR",SEK:"SEK",NOK:"NOK",DKK:"DKK",PLN:"PLN",CZK:"CZK",HUF:"HUF",RON:"RON",BGN:"BGN",HRK:"HRK",RSD:"RSD",ISK:"ISK",BRL:"BRL",MXN:"MXN",ARS:"ARS",CLP:"CLP",COP:"COP",PEN:"PEN",UYU:"UYU",VES:"VES",BOB:"BOB",PYG:"PYG",CRC:"CRC",GTQ:"GTQ",HNL:"HNL",NIO:"NIO",PAB:"PAB",DOP:"DOP",JMD:"JMD",TTD:"TTD",BBD:"BBD",AED:"AED",SAR:"SAR",QAR:"QAR",KWD:"KWD",BHD:"BHD",OMR:"OMR",JOD:"JOD",ILS:"ILS",TRY:"TRY",IQD:"IQD",IRR:"IRR",LBP:"LBP",SYP:"SYP",ZAR:"ZAR",NGN:"NGN",EGP:"EGP",KES:"KES",GHS:"GHS",MAD:"MAD",TND:"TND",DZD:"DZD",ETB:"ETB",TZS:"TZS",UGX:"UGX",ZMW:"ZMW",BWP:"BWP",MUR:"MUR",NZD:"NZD",FJD:"FJD",PGK:"PGK",RUB:"RUB",UAH:"UAH",BYN:"BYN",KZT:"KZT",UZS:"UZS",AZN:"AZN",GEL:"GEL",AMD:"AMD",BTC:"BTC",ETH:"ETH",USDT:"USDT",USDC:"USDC"};var yo=Object.values(R),Lo={AMOUNT:"Amount must be a positive number with valid currency format.",CORE_FIELDS:"Missing required core fields: amount, paymentMethod, userId, userType, productId, productType.",CURRENCY:"Unsupported or missing currency code.",METADATA:"Invalid metadata structure or missing required metadata fields.",RISK_ASSESSMENT:"Invalid or inconsistent risk assessment fields.",SCHEDULING:"Invalid scheduling configuration.",REFUND_TRANSACTION_ID:"Transaction ID is required.",REFUND_PROVIDER:"Provider is required.",REFUND_AMOUNT:"Refund amount must be positive."},Mo={AMOUNT:"AmountValidator",CORE_FIELDS:"CoreFieldValidator",CURRENCY:"CurrencyValidator",METADATA:"MetadataValidator",RISK_ASSESSMENT:"RiskAssessmentValidator",SCHEDULING:"SchedulingValidator"},Po=["amount","paymentMethod","userId","userType","productId","productType"],Uo=["monthly","quarterly","yearly"],Go=["low","medium","high"],Ho=["daily","weekly","monthly","quarterly","yearly"],mo=0,Yo=3;var r={core:"RouterStrategy",rules:"RuleEvaluator",config:"RoutingConfig",factory:"AdapterFactory",cache:"AdapterCache",provider:"ProviderSelector",region:"RegionResolver",compliance:"ComplianceChecker",abtest:"ABTestingModule",default:"DefaultProviderSelector"},fo={invalidProvider:o(()=>`[${r.core}] No valid provider found during routing.`,"invalidProvider"),providerSelected:o(e=>`[${r.provider}] Selected provider: ${e}`,"providerSelected"),fallbackToDefault:o(()=>`[${r.default}] Falling back to default provider.`,"fallbackToDefault"),adapterCached:o(e=>`[${r.cache}] Using cached adapter for ${e}`,"adapterCached"),adapterCreated:o(e=>`[${r.factory}] Created new adapter for ${e}`,"adapterCreated"),adapterCreationFailed:o(e=>`[${r.factory}] Failed to create adapter: ${String(e)}`,"adapterCreationFailed"),providerSelectionFailed:o(e=>`[${r.provider}] Provider selection failed: ${String(e)}`,"providerSelectionFailed"),invalidRuleExpression:o((e,n)=>`[${r.rules}] Custom rule '${e}' evaluation failed: ${String(n)}`,"invalidRuleExpression"),ruleFailed:o((e,n)=>`[${r.rules}] Rule '${e}' evaluation failed: ${String(n)}`,"ruleFailed"),invalidRoutingConfig:o(e=>`[${r.config}] Invalid routing configuration detected: ${String(e)}`,"invalidRoutingConfig"),missingRegionConfig:o(e=>`[${r.region}] Missing region configuration for '${e??"unknown"}'.`,"missingRegionConfig"),complianceCheckFailed:o((e,n)=>`[${r.compliance}] Compliance check failed for region '${e??"unknown"}': ${String(n)}`,"complianceCheckFailed")};var ho={validationFailedPrefix:"refund-validation-failed"},xo={invalidInput:"Invalid provider or transaction ID",unknownError:"Unknown reconciliation error",descriptionFailed:"Reconciliation failed"},Ko={validationErrorPattern:/^\[(.*?)\]\s(.*)$/},Vo={cancelProcessor:"Invalid input for cancellation",captureProcessor:"Invalid input for capture",statusProcessor:"Invalid input for payment status"};exports.ADAPTER_ERROR_CODE=D;exports.ADAPTER_LOG_MESSAGE=C;exports.AMOUNT_DECIMALS=Be;exports.AMOUNT_DIVISOR=he;exports.COMPLIANCE_ERROR_MESSAGES=x;exports.COMPONENTS=U;exports.CORE_FIELDS=Po;exports.CURRENCY_CODE_LENGTH=Yo;exports.CUSTOM_RULE_FIELD=Ce;exports.CUSTOM_RULE_OPERATER=N;exports.CurrentTimestamp=Te;exports.DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD=ge;exports.DEFAULT_CROSS_BORDER_RATE=Ue;exports.DEFAULT_ENVIRONMENT=O;exports.DEFAULT_EVENT_COUNT=j;exports.DEFAULT_HANDLER_TIMEOUT_MS=Q;exports.DEFAULT_HMAC_ALGORITHM=l;exports.DEFAULT_MAX_LISTENERS=$;exports.DEFAULT_PARTIAL_SUCCESS_THRESHOLD=q;exports.DEFAULT_PAYEMNT_PRIORITY=w;exports.DEFAULT_PLATFORM_RATE=Pe;exports.DEFAULT_PRIORITY=Ge;exports.DEFAULT_PROCESSING_RATE=Me;exports.DEFAULT_PROCESSING_TIME=Ze;exports.DEFAULT_REFUND_LEVELS=h;exports.DEFAULT_RETRY_DELAY_MS=ue;exports.DEFAULT_SETTLEMENT_TIME=ke;exports.DEFAULT_SUCCESS_THRESHOLD=z;exports.DEFAULT_URGENT=J;exports.EVENT_COMPONENT=oe;exports.EVENT_DEFAULTS=ee;exports.EVENT_ENVIRONMENT=ne;exports.EVENT_ERROR_CODE=re;exports.EVENT_ERROR_MESSAGE=te;exports.EVENT_META_KEY=ie;exports.EVENT_NORMALIZER_MESSAGES=_e;exports.EVENT_PHASE=Ee;exports.EVENT_RESULT_STATUS=Ae;exports.EVENT_SOURCE_FIELD=ae;exports.EmptyArray=Re;exports.FACTORY_MESSAGES=K;exports.FALLBACK_NEXT_STEPS=le;exports.FALLBACK_REASON=Ie;exports.FIXED_FEES=He;exports.LOG_LEVELS=d;exports.MAX_CIRCUIT_OPEN_MS=Ne;exports.MIN_POSITIVE_AMOUNT=mo;exports.NEXT_STEP_EXPECTED_UPDATE_IN=me;exports.NEXT_STEP_SYSTEM_ACTION=ve;exports.NEXT_STEP_USER_ACTION=Ve;exports.PAYLOAD_KEYS=V;exports.PAYMENT_ALERT_SEVERITY=H;exports.PAYMENT_ERROR_CODES=A;exports.PAYMENT_ERROR_MESSAGES=c;exports.PAYMENT_OPERATION=Je;exports.PAYMENT_PROCESSOR_PATTERN=Ko;exports.PAYMENT_RESOLUTION_STEPS=G;exports.PHASE_AT_TARGET=S;exports.PHASE_BUBBLING=u;exports.PHASE_CAPTURING=s;exports.PHASE_NONE=_;exports.PROCESSING_ERROR_MESSAGES=m;exports.PROCESSOR_MESSAGES=Vo;exports.PROVIDER_CONTEXT=t;exports.PROVIDER_ENDPOINTS=qe;exports.PROVIDER_ERROR_MESSAGES=X;exports.PROVIDER_MESSAGES=eo;exports.RECOMMENDATION_MESSAGES=F;exports.RECONCILIATION_MESSAGES=xo;exports.RECOVERY_STEPS=f;exports.REDACTED=P;exports.REFUND_DEFAULT_REASONS=M;exports.REFUND_ERROR_CODES=B;exports.REFUND_ERROR_MESSAGES=b;exports.REFUND_MESSAGES=ho;exports.RISK_LEVEL=Oe;exports.RISK_SCORE=L;exports.ROUTER_CONTEXT=r;exports.SECURITY_ERROR_MESSAGES=Z;exports.SECURITY_FLAGS=De;exports.SENSITIVE_KEYS=y;exports.SETTLED_PROMISE_STATUS=ce;exports.STRIPE_API_VERSION=ye;exports.STRIPE_CONFIDENCE_HIGH=Ye;exports.STRIPE_CONFIDENCE_MEDIUM=fe;exports.STRIPE_DATA_PATHS=we;exports.STRIPE_ERROR_TYPES=v;exports.STRIPE_EVENT_TYPE=Xe;exports.STRIPE_MAPPING_VERSION=Le;exports.STRIPE_MESSAGES=$e;exports.STRIPE_PAYMENT_INTENT_STATUS=We;exports.STRIPE_PRIORITY_HIGH=Fe;exports.STRIPE_PRIORITY_MEDIUM=be;exports.SUPPORTED_CURRENCIES=yo;exports.THRESHOLDS=p;exports.TIMESTAMP_FALLBACK=Ke;exports.UNIX_TIMESTAMP_MULTIPLIER=xe;exports.VALIDATION_CONSTANTS=k;exports.VALIDATION_MESSAGES=Lo;exports.VALIDATOR_NAMES=Mo;exports.VALID_BILLING_CYCLES=Uo;exports.VALID_RECURRENCE_FREQUENCIES=Ho;exports.VALID_RISK_LEVELS=Go;exports.WEBHOOK_CONSTANTS=Y;exports.ZERO_AMOUNT=de;exports.routerMessages=fo;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map