@bernierllc/backoff-retry 0.1.1 → 0.3.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 (137) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +110 -0
  3. package/dist/enhancement-manager.d.ts +205 -0
  4. package/dist/enhancement-manager.d.ts.map +1 -0
  5. package/dist/enhancement-manager.js +533 -0
  6. package/dist/enhancement-manager.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/memory-protection.js +1 -1
  12. package/dist/memory-protection.js.map +1 -1
  13. package/dist/neveradmin/components/RetryAnalyticsPage.d.ts +15 -0
  14. package/dist/neveradmin/components/RetryAnalyticsPage.d.ts.map +1 -0
  15. package/dist/neveradmin/components/RetryAnalyticsPage.js +28 -0
  16. package/dist/neveradmin/components/RetryAnalyticsPage.js.map +1 -0
  17. package/dist/neveradmin/components/RetryConfigurationPage.d.ts +15 -0
  18. package/dist/neveradmin/components/RetryConfigurationPage.d.ts.map +1 -0
  19. package/dist/neveradmin/components/RetryConfigurationPage.js +28 -0
  20. package/dist/neveradmin/components/RetryConfigurationPage.js.map +1 -0
  21. package/dist/neveradmin/components/RetryEnhancementsPage.d.ts +15 -0
  22. package/dist/neveradmin/components/RetryEnhancementsPage.d.ts.map +1 -0
  23. package/dist/neveradmin/components/RetryEnhancementsPage.js +28 -0
  24. package/dist/neveradmin/components/RetryEnhancementsPage.js.map +1 -0
  25. package/dist/neveradmin/components/RetryOperationsPage.d.ts +15 -0
  26. package/dist/neveradmin/components/RetryOperationsPage.d.ts.map +1 -0
  27. package/dist/neveradmin/components/RetryOperationsPage.js +28 -0
  28. package/dist/neveradmin/components/RetryOperationsPage.js.map +1 -0
  29. package/dist/neveradmin/components/RetryOverviewPage.d.ts +15 -0
  30. package/dist/neveradmin/components/RetryOverviewPage.d.ts.map +1 -0
  31. package/dist/neveradmin/components/RetryOverviewPage.js +28 -0
  32. package/dist/neveradmin/components/RetryOverviewPage.js.map +1 -0
  33. package/dist/neveradmin/components/index.d.ts +7 -0
  34. package/dist/neveradmin/components/index.d.ts.map +1 -0
  35. package/dist/neveradmin/components/index.js +32 -0
  36. package/dist/neveradmin/components/index.js.map +1 -0
  37. package/dist/neveradmin/components/types.d.ts +64 -0
  38. package/dist/neveradmin/components/types.d.ts.map +1 -0
  39. package/dist/neveradmin/components/types.js +10 -0
  40. package/dist/neveradmin/components/types.js.map +1 -0
  41. package/dist/neveradmin/hooks/index.d.ts +5 -0
  42. package/dist/neveradmin/hooks/index.d.ts.map +1 -0
  43. package/dist/neveradmin/hooks/index.js +28 -0
  44. package/dist/neveradmin/hooks/index.js.map +1 -0
  45. package/dist/neveradmin/hooks/useRetryConfiguration.d.ts +23 -0
  46. package/dist/neveradmin/hooks/useRetryConfiguration.d.ts.map +1 -0
  47. package/dist/neveradmin/hooks/useRetryConfiguration.js +162 -0
  48. package/dist/neveradmin/hooks/useRetryConfiguration.js.map +1 -0
  49. package/dist/neveradmin/hooks/useRetryEnhancements.d.ts +39 -0
  50. package/dist/neveradmin/hooks/useRetryEnhancements.d.ts.map +1 -0
  51. package/dist/neveradmin/hooks/useRetryEnhancements.js +197 -0
  52. package/dist/neveradmin/hooks/useRetryEnhancements.js.map +1 -0
  53. package/dist/neveradmin/hooks/useRetryOperations.d.ts +28 -0
  54. package/dist/neveradmin/hooks/useRetryOperations.d.ts.map +1 -0
  55. package/dist/neveradmin/hooks/useRetryOperations.js +166 -0
  56. package/dist/neveradmin/hooks/useRetryOperations.js.map +1 -0
  57. package/dist/neveradmin/hooks/useRetryStats.d.ts +19 -0
  58. package/dist/neveradmin/hooks/useRetryStats.d.ts.map +1 -0
  59. package/dist/neveradmin/hooks/useRetryStats.js +81 -0
  60. package/dist/neveradmin/hooks/useRetryStats.js.map +1 -0
  61. package/dist/neveradmin/index.d.ts +6 -0
  62. package/dist/neveradmin/index.d.ts.map +1 -0
  63. package/dist/neveradmin/index.js +29 -0
  64. package/dist/neveradmin/index.js.map +1 -0
  65. package/dist/neveradmin/registration.d.ts +33 -0
  66. package/dist/neveradmin/registration.d.ts.map +1 -0
  67. package/dist/neveradmin/registration.js +96 -0
  68. package/dist/neveradmin/registration.js.map +1 -0
  69. package/dist/neveradmin/types.d.ts +88 -0
  70. package/dist/neveradmin/types.d.ts.map +1 -0
  71. package/dist/neveradmin/types.js +10 -0
  72. package/dist/neveradmin/types.js.map +1 -0
  73. package/dist/neveradmin/utils/formatting.d.ts +41 -0
  74. package/dist/neveradmin/utils/formatting.d.ts.map +1 -0
  75. package/dist/neveradmin/utils/formatting.js +142 -0
  76. package/dist/neveradmin/utils/formatting.js.map +1 -0
  77. package/dist/neveradmin/utils/index.d.ts +4 -0
  78. package/dist/neveradmin/utils/index.d.ts.map +1 -0
  79. package/dist/neveradmin/utils/index.js +27 -0
  80. package/dist/neveradmin/utils/index.js.map +1 -0
  81. package/dist/neveradmin/utils/permissions.d.ts +74 -0
  82. package/dist/neveradmin/utils/permissions.d.ts.map +1 -0
  83. package/dist/neveradmin/utils/permissions.js +152 -0
  84. package/dist/neveradmin/utils/permissions.js.map +1 -0
  85. package/dist/neveradmin/utils/validation.d.ts +38 -0
  86. package/dist/neveradmin/utils/validation.d.ts.map +1 -0
  87. package/dist/neveradmin/utils/validation.js +142 -0
  88. package/dist/neveradmin/utils/validation.js.map +1 -0
  89. package/dist/retry-manager.d.ts +32 -11
  90. package/dist/retry-manager.d.ts.map +1 -1
  91. package/dist/retry-manager.js +128 -82
  92. package/dist/retry-manager.js.map +1 -1
  93. package/dist/security/index.d.ts +3 -0
  94. package/dist/security/index.d.ts.map +1 -0
  95. package/dist/security/index.js +26 -0
  96. package/dist/security/index.js.map +1 -0
  97. package/dist/security/secure-storage.d.ts +61 -0
  98. package/dist/security/secure-storage.d.ts.map +1 -0
  99. package/dist/security/secure-storage.js +418 -0
  100. package/dist/security/secure-storage.js.map +1 -0
  101. package/dist/security/security-manager.d.ts +172 -0
  102. package/dist/security/security-manager.d.ts.map +1 -0
  103. package/dist/security/security-manager.js +417 -0
  104. package/dist/security/security-manager.js.map +1 -0
  105. package/dist/storage/backend-selector.d.ts +96 -0
  106. package/dist/storage/backend-selector.d.ts.map +1 -0
  107. package/dist/storage/backend-selector.js +466 -0
  108. package/dist/storage/backend-selector.js.map +1 -0
  109. package/dist/storage/index.d.ts +7 -0
  110. package/dist/storage/index.d.ts.map +1 -0
  111. package/dist/storage/index.js +30 -0
  112. package/dist/storage/index.js.map +1 -0
  113. package/dist/storage/memory-storage.d.ts +55 -0
  114. package/dist/storage/memory-storage.d.ts.map +1 -0
  115. package/dist/storage/memory-storage.js +106 -0
  116. package/dist/storage/memory-storage.js.map +1 -0
  117. package/dist/storage/postgresql-storage.d.ts +77 -0
  118. package/dist/storage/postgresql-storage.d.ts.map +1 -0
  119. package/dist/storage/postgresql-storage.js +314 -0
  120. package/dist/storage/postgresql-storage.js.map +1 -0
  121. package/dist/storage/redis-cluster-storage.d.ts +88 -0
  122. package/dist/storage/redis-cluster-storage.d.ts.map +1 -0
  123. package/dist/storage/redis-cluster-storage.js +414 -0
  124. package/dist/storage/redis-cluster-storage.js.map +1 -0
  125. package/dist/storage/redis-storage.d.ts +67 -0
  126. package/dist/storage/redis-storage.d.ts.map +1 -0
  127. package/dist/storage/redis-storage.js +236 -0
  128. package/dist/storage/redis-storage.js.map +1 -0
  129. package/dist/storage/types.d.ts +55 -0
  130. package/dist/storage/types.d.ts.map +1 -0
  131. package/dist/storage/types.js +10 -0
  132. package/dist/storage/types.js.map +1 -0
  133. package/dist/types.d.ts +7 -32
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +1 -0
  136. package/dist/types.js.map +1 -1
  137. package/package.json +15 -2
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (c) 2025 Bernier LLC
4
+
5
+ This file is licensed to the client under a limited-use license.
6
+ The client may use and modify this code *only within the scope of the project it was delivered for*.
7
+ Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.hasRetryPermission = hasRetryPermission;
11
+ exports.hasAnyRetryPermission = hasAnyRetryPermission;
12
+ exports.hasAllRetryPermissions = hasAllRetryPermissions;
13
+ exports.canReadRetryData = canReadRetryData;
14
+ exports.canWriteRetryData = canWriteRetryData;
15
+ exports.canAdminRetrySystem = canAdminRetrySystem;
16
+ exports.canModerateRetryOperations = canModerateRetryOperations;
17
+ exports.canConfigureRetrySettings = canConfigureRetrySettings;
18
+ exports.canCancelRetryOperations = canCancelRetryOperations;
19
+ exports.canRetryFailedOperations = canRetryFailedOperations;
20
+ exports.canManageEnhancements = canManageEnhancements;
21
+ exports.hasExceededRetryQuota = hasExceededRetryQuota;
22
+ exports.getRemainingRetryQuota = getRemainingRetryQuota;
23
+ exports.hasRetryQuotaReset = hasRetryQuotaReset;
24
+ exports.getRetryPermissionLevel = getRetryPermissionLevel;
25
+ exports.hasSufficientPermissions = hasSufficientPermissions;
26
+ exports.getAllUserPermissions = getAllUserPermissions;
27
+ exports.belongsToTenant = belongsToTenant;
28
+ /**
29
+ * Check if user has specific retry permission
30
+ */
31
+ function hasRetryPermission(user, permission) {
32
+ return user.permissions[permission] === true;
33
+ }
34
+ /**
35
+ * Check if user has any of the specified permissions
36
+ */
37
+ function hasAnyRetryPermission(user, permissions) {
38
+ return permissions.some(permission => hasRetryPermission(user, permission));
39
+ }
40
+ /**
41
+ * Check if user has all of the specified permissions
42
+ */
43
+ function hasAllRetryPermissions(user, permissions) {
44
+ return permissions.every(permission => hasRetryPermission(user, permission));
45
+ }
46
+ /**
47
+ * Check if user can read retry data
48
+ */
49
+ function canReadRetryData(user) {
50
+ return hasRetryPermission(user, 'retry:read');
51
+ }
52
+ /**
53
+ * Check if user can write retry data
54
+ */
55
+ function canWriteRetryData(user) {
56
+ return hasRetryPermission(user, 'retry:write');
57
+ }
58
+ /**
59
+ * Check if user can administer retry system
60
+ */
61
+ function canAdminRetrySystem(user) {
62
+ return hasRetryPermission(user, 'retry:admin');
63
+ }
64
+ /**
65
+ * Check if user can moderate retry operations
66
+ */
67
+ function canModerateRetryOperations(user) {
68
+ return hasRetryPermission(user, 'retry:moderate');
69
+ }
70
+ /**
71
+ * Check if user can configure retry settings
72
+ */
73
+ function canConfigureRetrySettings(user) {
74
+ return hasRetryPermission(user, 'retry:configure');
75
+ }
76
+ /**
77
+ * Check if user can cancel retry operations
78
+ */
79
+ function canCancelRetryOperations(user) {
80
+ return hasAnyRetryPermission(user, ['retry:moderate', 'retry:admin']);
81
+ }
82
+ /**
83
+ * Check if user can retry failed operations
84
+ */
85
+ function canRetryFailedOperations(user) {
86
+ return hasAnyRetryPermission(user, ['retry:write', 'retry:moderate', 'retry:admin']);
87
+ }
88
+ /**
89
+ * Check if user can manage enhancements
90
+ */
91
+ function canManageEnhancements(user) {
92
+ return hasRetryPermission(user, 'retry:admin');
93
+ }
94
+ /**
95
+ * Check if user has exceeded their retry quota
96
+ */
97
+ function hasExceededRetryQuota(user) {
98
+ if (!user.retryQuota)
99
+ return false;
100
+ return user.retryQuota.usedRetries >= user.retryQuota.maxRetries;
101
+ }
102
+ /**
103
+ * Get remaining retry quota for user
104
+ */
105
+ function getRemainingRetryQuota(user) {
106
+ if (!user.retryQuota)
107
+ return Infinity;
108
+ return Math.max(0, user.retryQuota.maxRetries - user.retryQuota.usedRetries);
109
+ }
110
+ /**
111
+ * Check if user's retry quota has reset
112
+ */
113
+ function hasRetryQuotaReset(user) {
114
+ if (!user.retryQuota)
115
+ return false;
116
+ return new Date() > user.retryQuota.resetDate;
117
+ }
118
+ /**
119
+ * Get permission level for user (0-4, where 4 is highest)
120
+ */
121
+ function getRetryPermissionLevel(user) {
122
+ if (hasRetryPermission(user, 'retry:admin'))
123
+ return 4;
124
+ if (hasRetryPermission(user, 'retry:moderate'))
125
+ return 3;
126
+ if (hasRetryPermission(user, 'retry:write'))
127
+ return 2;
128
+ if (hasRetryPermission(user, 'retry:read'))
129
+ return 1;
130
+ return 0;
131
+ }
132
+ /**
133
+ * Check if user has sufficient permissions for an action
134
+ */
135
+ function hasSufficientPermissions(user, requiredLevel) {
136
+ return getRetryPermissionLevel(user) >= requiredLevel;
137
+ }
138
+ /**
139
+ * Get all permissions for a user
140
+ */
141
+ function getAllUserPermissions(user) {
142
+ return Object.entries(user.permissions)
143
+ .filter(([_, hasPermission]) => hasPermission)
144
+ .map(([permission]) => permission);
145
+ }
146
+ /**
147
+ * Check if user belongs to specific tenant
148
+ */
149
+ function belongsToTenant(user, tenantId) {
150
+ return user.tenantId === tenantId;
151
+ }
152
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/neveradmin/utils/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { RetryConfiguration } from '../types';
2
+ /**
3
+ * Validate retry configuration
4
+ */
5
+ export declare function validateRetryConfiguration(config: Partial<RetryConfiguration>): {
6
+ isValid: boolean;
7
+ errors: string[];
8
+ };
9
+ /**
10
+ * Validate retry operation ID
11
+ */
12
+ export declare function validateRetryId(id: string): boolean;
13
+ /**
14
+ * Validate retry status
15
+ */
16
+ export declare function validateRetryStatus(status: string): boolean;
17
+ /**
18
+ * Validate date range
19
+ */
20
+ export declare function validateDateRange(start: Date, end: Date): {
21
+ isValid: boolean;
22
+ errors: string[];
23
+ };
24
+ /**
25
+ * Validate pagination parameters
26
+ */
27
+ export declare function validatePagination(limit?: number, offset?: number): {
28
+ isValid: boolean;
29
+ errors: string[];
30
+ };
31
+ /**
32
+ * Validate enhancement configuration
33
+ */
34
+ export declare function validateEnhancementConfig(config: Record<string, any>): {
35
+ isValid: boolean;
36
+ errors: string[];
37
+ };
38
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/neveradmin/utils/validation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;IAC/E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA+CA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAmBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAeA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (c) 2025 Bernier LLC
4
+
5
+ This file is licensed to the client under a limited-use license.
6
+ The client may use and modify this code *only within the scope of the project it was delivered for*.
7
+ Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.validateRetryConfiguration = validateRetryConfiguration;
11
+ exports.validateRetryId = validateRetryId;
12
+ exports.validateRetryStatus = validateRetryStatus;
13
+ exports.validateDateRange = validateDateRange;
14
+ exports.validatePagination = validatePagination;
15
+ exports.validateEnhancementConfig = validateEnhancementConfig;
16
+ /**
17
+ * Validate retry configuration
18
+ */
19
+ function validateRetryConfiguration(config) {
20
+ const errors = [];
21
+ // Validate storage configuration
22
+ if (config.storage) {
23
+ if (config.storage.memoryThreshold && (config.storage.memoryThreshold < 0 || config.storage.memoryThreshold > 100)) {
24
+ errors.push('Memory threshold must be between 0 and 100');
25
+ }
26
+ }
27
+ // Validate memory protection configuration
28
+ if (config.memoryProtection) {
29
+ if (config.memoryProtection.maxMemoryUsage && config.memoryProtection.maxMemoryUsage <= 0) {
30
+ errors.push('Max memory usage must be greater than 0');
31
+ }
32
+ if (config.memoryProtection.maxRetryStates && config.memoryProtection.maxRetryStates <= 0) {
33
+ errors.push('Max retry states must be greater than 0');
34
+ }
35
+ if (config.memoryProtection.cleanupInterval && config.memoryProtection.cleanupInterval <= 0) {
36
+ errors.push('Cleanup interval must be greater than 0');
37
+ }
38
+ if (config.memoryProtection.evictionPolicy &&
39
+ !['lru', 'fifo', 'random'].includes(config.memoryProtection.evictionPolicy)) {
40
+ errors.push('Eviction policy must be one of: lru, fifo, random');
41
+ }
42
+ }
43
+ // Validate default options
44
+ if (config.defaultOptions) {
45
+ if (config.defaultOptions.maxRetries && config.defaultOptions.maxRetries < 0) {
46
+ errors.push('Max retries must be greater than or equal to 0');
47
+ }
48
+ if (config.defaultOptions.initialDelayMs && config.defaultOptions.initialDelayMs < 0) {
49
+ errors.push('Initial delay must be greater than or equal to 0');
50
+ }
51
+ if (config.defaultOptions.maxDelayMs && config.defaultOptions.maxDelayMs < 0) {
52
+ errors.push('Max delay must be greater than or equal to 0');
53
+ }
54
+ if (config.defaultOptions.backoffMultiplier && config.defaultOptions.backoffMultiplier <= 0) {
55
+ errors.push('Backoff multiplier must be greater than 0');
56
+ }
57
+ }
58
+ return {
59
+ isValid: errors.length === 0,
60
+ errors
61
+ };
62
+ }
63
+ /**
64
+ * Validate retry operation ID
65
+ */
66
+ function validateRetryId(id) {
67
+ return typeof id === 'string' && id.length > 0 && /^[a-zA-Z0-9-_]+$/.test(id);
68
+ }
69
+ /**
70
+ * Validate retry status
71
+ */
72
+ function validateRetryStatus(status) {
73
+ const validStatuses = ['pending', 'retrying', 'completed', 'failed', 'cancelled'];
74
+ return validStatuses.includes(status);
75
+ }
76
+ /**
77
+ * Validate date range
78
+ */
79
+ function validateDateRange(start, end) {
80
+ const errors = [];
81
+ if (!(start instanceof Date) || isNaN(start.getTime())) {
82
+ errors.push('Start date is invalid');
83
+ }
84
+ if (!(end instanceof Date) || isNaN(end.getTime())) {
85
+ errors.push('End date is invalid');
86
+ }
87
+ if (start && end && start > end) {
88
+ errors.push('Start date must be before end date');
89
+ }
90
+ return {
91
+ isValid: errors.length === 0,
92
+ errors
93
+ };
94
+ }
95
+ /**
96
+ * Validate pagination parameters
97
+ */
98
+ function validatePagination(limit, offset) {
99
+ const errors = [];
100
+ if (limit !== undefined && (limit < 1 || limit > 1000)) {
101
+ errors.push('Limit must be between 1 and 1000');
102
+ }
103
+ if (offset !== undefined && offset < 0) {
104
+ errors.push('Offset must be greater than or equal to 0');
105
+ }
106
+ return {
107
+ isValid: errors.length === 0,
108
+ errors
109
+ };
110
+ }
111
+ /**
112
+ * Validate enhancement configuration
113
+ */
114
+ function validateEnhancementConfig(config) {
115
+ const errors = [];
116
+ // Validate storage enhancement config
117
+ if (config.storage) {
118
+ if (config.storage.type && !['memory', 'redis', 'postgresql', 'mongodb'].includes(config.storage.type)) {
119
+ errors.push('Storage type must be one of: memory, redis, postgresql, mongodb');
120
+ }
121
+ }
122
+ // Validate notification enhancement config
123
+ if (config.notifications) {
124
+ if (config.notifications.email && typeof config.notifications.email !== 'boolean') {
125
+ errors.push('Email notification must be a boolean');
126
+ }
127
+ if (config.notifications.webhook && typeof config.notifications.webhook !== 'boolean') {
128
+ errors.push('Webhook notification must be a boolean');
129
+ }
130
+ if (config.notifications.slack && typeof config.notifications.slack !== 'boolean') {
131
+ errors.push('Slack notification must be a boolean');
132
+ }
133
+ if (config.notifications.pagerduty && typeof config.notifications.pagerduty !== 'boolean') {
134
+ errors.push('PagerDuty notification must be a boolean');
135
+ }
136
+ }
137
+ return {
138
+ isValid: errors.length === 0,
139
+ errors
140
+ };
141
+ }
142
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/neveradmin/utils/validation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import { RetryOptions, RetryState, RetryManagerConfig, RetryResult, RetryMetrics } from './types';
1
+ import { RetryManagerConfig, RetryResult } from './types';
2
+ import type { RetryState } from '@bernierllc/retry-state';
3
+ import type { RetryPolicyOptions as RetryOptions } from '@bernierllc/retry-policy';
4
+ import { EnhancementManager, EnhancementConfig } from './enhancement-manager';
2
5
  /**
3
6
  * Main retry manager with storage and memory protection
4
7
  */
@@ -6,7 +9,9 @@ export declare class RetryManager {
6
9
  private config;
7
10
  private storage;
8
11
  private memoryProtection;
9
- private metrics;
12
+ private enhancementManager;
13
+ private retryPolicy;
14
+ private metricsCollector;
10
15
  constructor(config?: Partial<RetryManagerConfig>);
11
16
  /**
12
17
  * Execute a function with retry logic and persistent state
@@ -35,7 +40,7 @@ export declare class RetryManager {
35
40
  /**
36
41
  * Get retry metrics
37
42
  */
38
- getMetrics(): RetryMetrics;
43
+ getMetrics(): import("@bernierllc/retry-metrics").RetryMetrics;
39
44
  /**
40
45
  * Get memory protection stats
41
46
  */
@@ -47,21 +52,37 @@ export declare class RetryManager {
47
52
  historySize: number;
48
53
  };
49
54
  /**
50
- * Cleanup resources
55
+ * Get enhancement manager
51
56
  */
52
- destroy(): void;
57
+ getEnhancementManager(): EnhancementManager;
58
+ /**
59
+ * Check if enhancement is available
60
+ */
61
+ isEnhancementAvailable(type: keyof EnhancementConfig): boolean;
62
+ /**
63
+ * Enable enhancement
64
+ */
65
+ enableEnhancement(type: keyof EnhancementConfig, config?: any): void;
53
66
  /**
54
- * Create initial retry state
67
+ * Disable enhancement
55
68
  */
56
- private createInitialState;
69
+ disableEnhancement(type: keyof EnhancementConfig): void;
70
+ /**
71
+ * Get enhancement recommendations
72
+ */
73
+ getEnhancementRecommendations(): string[];
74
+ /**
75
+ * Cleanup resources
76
+ */
77
+ destroy(): void;
57
78
  /**
58
- * Calculate delay for next retry
79
+ * Set up enhancement manager event listeners
59
80
  */
60
- private calculateDelay;
81
+ private setupEnhancementListeners;
61
82
  /**
62
- * Update metrics
83
+ * Calculate performance score based on metrics
63
84
  */
64
- private updateMetrics;
85
+ private calculatePerformanceScore;
65
86
  /**
66
87
  * Sleep utility
67
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"retry-manager.d.ts","sourceRoot":"","sources":["../src/retry-manager.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EAEb,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,OAAO,CAMb;gBAEU,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAiBhD;;OAEG;IACG,gBAAgB,CAAC,CAAC,EACtB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA4F1B;;OAEG;IACG,gBAAgB,CAAC,CAAC,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,CAAC,CAAC;IAuCb;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI3D;;OAEG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7D;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACH,cAAc;;;;;;;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAErF"}
1
+ {"version":3,"file":"retry-manager.d.ts","sourceRoot":"","sources":["../src/retry-manager.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,WAAW,EAEZ,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGnF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA4B9E;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAuBhD;;OAEG;IACG,gBAAgB,CAAC,CAAC,EACtB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAmH1B;;OAEG;IACG,gBAAgB,CAAC,CAAC,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,CAAC,CAAC;IAuCb;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI3D;;OAEG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7D;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACH,UAAU;IAIV;;OAEG;IACH,cAAc;;;;;;;IAId;;OAEG;IACH,qBAAqB,IAAI,kBAAkB;IAI3C;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,iBAAiB,GAAG,OAAO;IAI9D;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,iBAAiB,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI;IAIpE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,iBAAiB,GAAG,IAAI;IAIvD;;OAEG;IACH,6BAA6B,IAAI,MAAM,EAAE;IAIzC;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkCjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAErF"}