@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,96 @@
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.registerBackoffRetryUtility = registerBackoffRetryUtility;
11
+ exports.createRetryAdminContext = createRetryAdminContext;
12
+ /**
13
+ * Registers the backoff-retry utility with NeverAdmin
14
+ */
15
+ function registerBackoffRetryUtility(retryManager, enhancementManager) {
16
+ return {
17
+ id: 'backoff-retry',
18
+ name: 'Backoff Retry Manager',
19
+ version: '1.0.0',
20
+ description: 'Manage retry operations, monitor performance, and configure retry policies',
21
+ icon: 'RefreshCw',
22
+ permissions: [
23
+ 'retry:read',
24
+ 'retry:write',
25
+ 'retry:admin',
26
+ 'retry:moderate',
27
+ 'retry:configure'
28
+ ],
29
+ pages: [
30
+ {
31
+ path: '/admin/retry',
32
+ title: 'Retry Overview',
33
+ component: 'RetryOverviewPage',
34
+ permissions: ['retry:read'],
35
+ icon: 'BarChart3',
36
+ description: 'View retry statistics and performance metrics'
37
+ },
38
+ {
39
+ path: '/admin/retry/operations',
40
+ title: 'Retry Operations',
41
+ component: 'RetryOperationsPage',
42
+ permissions: ['retry:read'],
43
+ icon: 'List',
44
+ description: 'List and manage active retry operations'
45
+ },
46
+ {
47
+ path: '/admin/retry/configuration',
48
+ title: 'Configuration',
49
+ component: 'RetryConfigurationPage',
50
+ permissions: ['retry:configure'],
51
+ icon: 'Settings',
52
+ description: 'Configure retry policies and storage settings'
53
+ },
54
+ {
55
+ path: '/admin/retry/enhancements',
56
+ title: 'Enhancements',
57
+ component: 'RetryEnhancementsPage',
58
+ permissions: ['retry:admin'],
59
+ icon: 'Zap',
60
+ description: 'Manage enhancement features and auto-upgrade settings'
61
+ },
62
+ {
63
+ path: '/admin/retry/analytics',
64
+ title: 'Analytics',
65
+ component: 'RetryAnalyticsPage',
66
+ permissions: ['retry:read'],
67
+ icon: 'TrendingUp',
68
+ description: 'Detailed analytics and performance insights'
69
+ }
70
+ ],
71
+ hooks: [
72
+ 'useRetryStats',
73
+ 'useRetryOperations',
74
+ 'useRetryConfiguration',
75
+ 'useRetryEnhancements'
76
+ ],
77
+ config: {
78
+ enableRealTimeUpdates: true,
79
+ enableBulkOperations: true,
80
+ enableAdvancedAnalytics: true,
81
+ enableEnhancementManagement: true,
82
+ defaultRefreshInterval: 5000
83
+ }
84
+ };
85
+ }
86
+ /**
87
+ * Creates the NeverAdmin context for backoff-retry
88
+ */
89
+ function createRetryAdminContext(retryManager, enhancementManager) {
90
+ return {
91
+ retryManager,
92
+ enhancementManager,
93
+ // Additional context methods will be added here
94
+ };
95
+ }
96
+ //# sourceMappingURL=registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/neveradmin/registration.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;AA6BF,kEAyEC;AAKD,0DASC;AA1FD;;GAEG;AACH,SAAgB,2BAA2B,CACzC,YAA0B,EAC1B,kBAAsC;IAEtC,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,4EAA4E;QACzF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE;YACX,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,iBAAiB;SAClB;QACD,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,mBAAmB;gBAC9B,WAAW,EAAE,CAAC,YAAY,CAAC;gBAC3B,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,+CAA+C;aAC7D;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,qBAAqB;gBAChC,WAAW,EAAE,CAAC,YAAY,CAAC;gBAC3B,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,yCAAyC;aACvD;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,wBAAwB;gBACnC,WAAW,EAAE,CAAC,iBAAiB,CAAC;gBAChC,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,+CAA+C;aAC7D;YACD;gBACE,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,cAAc;gBACrB,SAAS,EAAE,uBAAuB;gBAClC,WAAW,EAAE,CAAC,aAAa,CAAC;gBAC5B,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,uDAAuD;aACrE;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,CAAC,YAAY,CAAC;gBAC3B,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,6CAA6C;aAC3D;SACF;QACD,KAAK,EAAE;YACL,eAAe;YACf,oBAAoB;YACpB,uBAAuB;YACvB,sBAAsB;SACvB;QACD,MAAM,EAAE;YACN,qBAAqB,EAAE,IAAI;YAC3B,oBAAoB,EAAE,IAAI;YAC1B,uBAAuB,EAAE,IAAI;YAC7B,2BAA2B,EAAE,IAAI;YACjC,sBAAsB,EAAE,IAAI;SAC7B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,YAA0B,EAC1B,kBAAsC;IAEtC,OAAO;QACL,YAAY;QACZ,kBAAkB;QAClB,gDAAgD;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { RetryManager } from '../retry-manager';
2
+ import { EnhancementManager } from '../enhancement-manager';
3
+ export interface RetryOverviewStats {
4
+ totalRetries: number;
5
+ successfulRetries: number;
6
+ failedRetries: number;
7
+ successRate: number;
8
+ averageRetryTime: number;
9
+ activeRetries: number;
10
+ memoryUsage: {
11
+ current: number;
12
+ max: number;
13
+ percentage: number;
14
+ };
15
+ performanceScore: number;
16
+ }
17
+ export interface RetryOperation {
18
+ id: string;
19
+ status: 'pending' | 'retrying' | 'completed' | 'failed' | 'cancelled';
20
+ operation: string;
21
+ attempts: number;
22
+ maxAttempts: number;
23
+ lastAttempt: Date;
24
+ nextRetry?: Date;
25
+ totalTime: number;
26
+ error?: string;
27
+ metadata?: Record<string, any>;
28
+ }
29
+ export interface RetryFilterOptions {
30
+ status?: string[];
31
+ operation?: string;
32
+ dateRange?: {
33
+ start: Date;
34
+ end: Date;
35
+ };
36
+ limit?: number;
37
+ offset?: number;
38
+ }
39
+ export interface RetryBulkAction {
40
+ action: 'cancel' | 'retry' | 'delete';
41
+ retryIds: string[];
42
+ }
43
+ export interface RetryConfiguration {
44
+ storage: {
45
+ type: 'memory' | 'redis';
46
+ enabled: boolean;
47
+ autoUpgrade: boolean;
48
+ thresholdNotifications: boolean;
49
+ memoryThreshold: number;
50
+ };
51
+ memoryProtection: {
52
+ maxMemoryUsage: number;
53
+ maxRetryStates: number;
54
+ cleanupInterval: number;
55
+ evictionPolicy: 'lru' | 'fifo' | 'random';
56
+ };
57
+ defaultOptions: {
58
+ maxRetries: number;
59
+ initialDelayMs: number;
60
+ maxDelayMs: number;
61
+ backoffMultiplier: number;
62
+ };
63
+ }
64
+ export interface NeverAdminRetryContext {
65
+ retryManager: RetryManager;
66
+ enhancementManager: EnhancementManager;
67
+ stats: RetryOverviewStats;
68
+ operations: RetryOperation[];
69
+ configuration: RetryConfiguration;
70
+ }
71
+ export interface RetryAdminPermissions {
72
+ 'retry:read': boolean;
73
+ 'retry:write': boolean;
74
+ 'retry:admin': boolean;
75
+ 'retry:moderate': boolean;
76
+ 'retry:configure': boolean;
77
+ }
78
+ export interface RetryAdminUser {
79
+ id: string;
80
+ tenantId: string;
81
+ permissions: RetryAdminPermissions;
82
+ retryQuota?: {
83
+ maxRetries: number;
84
+ usedRetries: number;
85
+ resetDate: Date;
86
+ };
87
+ }
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/neveradmin/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/neveradmin/types.ts"],"names":[],"mappings":";AAAA;;;;;;EAME"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Format bytes to human readable format
3
+ */
4
+ export declare function formatBytes(bytes: number, decimals?: number): string;
5
+ /**
6
+ * Format milliseconds to human readable duration
7
+ */
8
+ export declare function formatDuration(ms: number): string;
9
+ /**
10
+ * Format percentage with 1 decimal place
11
+ */
12
+ export declare function formatPercentage(value: number): string;
13
+ /**
14
+ * Format date to relative time (e.g., "2 minutes ago")
15
+ */
16
+ export declare function formatRelativeTime(date: Date): string;
17
+ /**
18
+ * Format retry status for display
19
+ */
20
+ export declare function formatRetryStatus(status: string): string;
21
+ /**
22
+ * Get color for retry status
23
+ */
24
+ export declare function getStatusColor(status: string): string;
25
+ /**
26
+ * Format memory usage for display
27
+ */
28
+ export declare function formatMemoryUsage(current: number, max: number): string;
29
+ /**
30
+ * Get memory usage color based on percentage
31
+ */
32
+ export declare function getMemoryUsageColor(percentage: number): string;
33
+ /**
34
+ * Format performance score for display
35
+ */
36
+ export declare function formatPerformanceScore(score: number): string;
37
+ /**
38
+ * Get performance score color
39
+ */
40
+ export declare function getPerformanceScoreColor(score: number): string;
41
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/neveradmin/utils/formatting.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAU/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D"}
@@ -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.formatBytes = formatBytes;
11
+ exports.formatDuration = formatDuration;
12
+ exports.formatPercentage = formatPercentage;
13
+ exports.formatRelativeTime = formatRelativeTime;
14
+ exports.formatRetryStatus = formatRetryStatus;
15
+ exports.getStatusColor = getStatusColor;
16
+ exports.formatMemoryUsage = formatMemoryUsage;
17
+ exports.getMemoryUsageColor = getMemoryUsageColor;
18
+ exports.formatPerformanceScore = formatPerformanceScore;
19
+ exports.getPerformanceScoreColor = getPerformanceScoreColor;
20
+ /**
21
+ * Format bytes to human readable format
22
+ */
23
+ function formatBytes(bytes, decimals = 2) {
24
+ if (bytes === 0)
25
+ return '0 Bytes';
26
+ const k = 1024;
27
+ const dm = decimals < 0 ? 0 : decimals;
28
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
29
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
30
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
31
+ }
32
+ /**
33
+ * Format milliseconds to human readable duration
34
+ */
35
+ function formatDuration(ms) {
36
+ if (ms < 1000)
37
+ return `${ms}ms`;
38
+ if (ms < 60000)
39
+ return `${(ms / 1000).toFixed(1)}s`;
40
+ if (ms < 3600000)
41
+ return `${(ms / 60000).toFixed(1)}m`;
42
+ return `${(ms / 3600000).toFixed(1)}h`;
43
+ }
44
+ /**
45
+ * Format percentage with 1 decimal place
46
+ */
47
+ function formatPercentage(value) {
48
+ return `${value.toFixed(1)}%`;
49
+ }
50
+ /**
51
+ * Format date to relative time (e.g., "2 minutes ago")
52
+ */
53
+ function formatRelativeTime(date) {
54
+ const now = new Date();
55
+ const diff = now.getTime() - date.getTime();
56
+ const seconds = Math.floor(diff / 1000);
57
+ const minutes = Math.floor(seconds / 60);
58
+ const hours = Math.floor(minutes / 60);
59
+ const days = Math.floor(hours / 24);
60
+ if (days > 0)
61
+ return `${days} day${days === 1 ? '' : 's'} ago`;
62
+ if (hours > 0)
63
+ return `${hours} hour${hours === 1 ? '' : 's'} ago`;
64
+ if (minutes > 0)
65
+ return `${minutes} minute${minutes === 1 ? '' : 's'} ago`;
66
+ if (seconds > 0)
67
+ return `${seconds} second${seconds === 1 ? '' : 's'} ago`;
68
+ return 'just now';
69
+ }
70
+ /**
71
+ * Format retry status for display
72
+ */
73
+ function formatRetryStatus(status) {
74
+ const statusMap = {
75
+ pending: 'Pending',
76
+ retrying: 'Retrying',
77
+ completed: 'Completed',
78
+ failed: 'Failed',
79
+ cancelled: 'Cancelled'
80
+ };
81
+ return statusMap[status] || status;
82
+ }
83
+ /**
84
+ * Get color for retry status
85
+ */
86
+ function getStatusColor(status) {
87
+ const colorMap = {
88
+ pending: 'text-yellow-600',
89
+ retrying: 'text-blue-600',
90
+ completed: 'text-green-600',
91
+ failed: 'text-red-600',
92
+ cancelled: 'text-gray-600'
93
+ };
94
+ return colorMap[status] || 'text-gray-600';
95
+ }
96
+ /**
97
+ * Format memory usage for display
98
+ */
99
+ function formatMemoryUsage(current, max) {
100
+ return `${formatBytes(current)} / ${formatBytes(max)}`;
101
+ }
102
+ /**
103
+ * Get memory usage color based on percentage
104
+ */
105
+ function getMemoryUsageColor(percentage) {
106
+ if (percentage >= 90)
107
+ return 'text-red-600';
108
+ if (percentage >= 75)
109
+ return 'text-yellow-600';
110
+ if (percentage >= 50)
111
+ return 'text-orange-600';
112
+ return 'text-green-600';
113
+ }
114
+ /**
115
+ * Format performance score for display
116
+ */
117
+ function formatPerformanceScore(score) {
118
+ if (score >= 0.9)
119
+ return 'Excellent';
120
+ if (score >= 0.7)
121
+ return 'Good';
122
+ if (score >= 0.5)
123
+ return 'Fair';
124
+ if (score >= 0.3)
125
+ return 'Poor';
126
+ return 'Critical';
127
+ }
128
+ /**
129
+ * Get performance score color
130
+ */
131
+ function getPerformanceScoreColor(score) {
132
+ if (score >= 0.9)
133
+ return 'text-green-600';
134
+ if (score >= 0.7)
135
+ return 'text-blue-600';
136
+ if (score >= 0.5)
137
+ return 'text-yellow-600';
138
+ if (score >= 0.3)
139
+ return 'text-orange-600';
140
+ return 'text-red-600';
141
+ }
142
+ //# sourceMappingURL=formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../src/neveradmin/utils/formatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './formatting';
2
+ export * from './validation';
3
+ export * from './permissions';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/neveradmin/utils/index.ts"],"names":[],"mappings":"AAQA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,27 @@
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
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./formatting"), exports);
25
+ __exportStar(require("./validation"), exports);
26
+ __exportStar(require("./permissions"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/neveradmin/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;;;;;;;;;;;;;;;AAEF,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B"}
@@ -0,0 +1,74 @@
1
+ import { RetryAdminPermissions, RetryAdminUser } from '../types';
2
+ /**
3
+ * Check if user has specific retry permission
4
+ */
5
+ export declare function hasRetryPermission(user: RetryAdminUser, permission: keyof RetryAdminPermissions): boolean;
6
+ /**
7
+ * Check if user has any of the specified permissions
8
+ */
9
+ export declare function hasAnyRetryPermission(user: RetryAdminUser, permissions: (keyof RetryAdminPermissions)[]): boolean;
10
+ /**
11
+ * Check if user has all of the specified permissions
12
+ */
13
+ export declare function hasAllRetryPermissions(user: RetryAdminUser, permissions: (keyof RetryAdminPermissions)[]): boolean;
14
+ /**
15
+ * Check if user can read retry data
16
+ */
17
+ export declare function canReadRetryData(user: RetryAdminUser): boolean;
18
+ /**
19
+ * Check if user can write retry data
20
+ */
21
+ export declare function canWriteRetryData(user: RetryAdminUser): boolean;
22
+ /**
23
+ * Check if user can administer retry system
24
+ */
25
+ export declare function canAdminRetrySystem(user: RetryAdminUser): boolean;
26
+ /**
27
+ * Check if user can moderate retry operations
28
+ */
29
+ export declare function canModerateRetryOperations(user: RetryAdminUser): boolean;
30
+ /**
31
+ * Check if user can configure retry settings
32
+ */
33
+ export declare function canConfigureRetrySettings(user: RetryAdminUser): boolean;
34
+ /**
35
+ * Check if user can cancel retry operations
36
+ */
37
+ export declare function canCancelRetryOperations(user: RetryAdminUser): boolean;
38
+ /**
39
+ * Check if user can retry failed operations
40
+ */
41
+ export declare function canRetryFailedOperations(user: RetryAdminUser): boolean;
42
+ /**
43
+ * Check if user can manage enhancements
44
+ */
45
+ export declare function canManageEnhancements(user: RetryAdminUser): boolean;
46
+ /**
47
+ * Check if user has exceeded their retry quota
48
+ */
49
+ export declare function hasExceededRetryQuota(user: RetryAdminUser): boolean;
50
+ /**
51
+ * Get remaining retry quota for user
52
+ */
53
+ export declare function getRemainingRetryQuota(user: RetryAdminUser): number;
54
+ /**
55
+ * Check if user's retry quota has reset
56
+ */
57
+ export declare function hasRetryQuotaReset(user: RetryAdminUser): boolean;
58
+ /**
59
+ * Get permission level for user (0-4, where 4 is highest)
60
+ */
61
+ export declare function getRetryPermissionLevel(user: RetryAdminUser): number;
62
+ /**
63
+ * Check if user has sufficient permissions for an action
64
+ */
65
+ export declare function hasSufficientPermissions(user: RetryAdminUser, requiredLevel: number): boolean;
66
+ /**
67
+ * Get all permissions for a user
68
+ */
69
+ export declare function getAllUserPermissions(user: RetryAdminUser): string[];
70
+ /**
71
+ * Check if user belongs to specific tenant
72
+ */
73
+ export declare function belongsToTenant(user: RetryAdminUser, tenantId: string): boolean;
74
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/neveradmin/utils/permissions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEjE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,qBAAqB,GACtC,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,MAAM,qBAAqB,CAAC,EAAE,GAC3C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,MAAM,qBAAqB,CAAC,EAAE,GAC3C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAGnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAGhE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAIpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/E"}