@emmvish/stable-request 2.8.5 → 3.0.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 (135) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1153 -2319
  3. package/dist/constants/index.d.ts +0 -10
  4. package/dist/constants/index.d.ts.map +1 -1
  5. package/dist/constants/index.js +0 -113
  6. package/dist/constants/index.js.map +1 -1
  7. package/dist/core/index.d.ts +0 -5
  8. package/dist/core/index.d.ts.map +1 -1
  9. package/dist/core/index.js +0 -5
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/enums/index.d.ts +0 -37
  12. package/dist/enums/index.d.ts.map +1 -1
  13. package/dist/enums/index.js +0 -43
  14. package/dist/enums/index.js.map +1 -1
  15. package/dist/index.d.ts +4 -4
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +18 -3
  18. package/dist/index.js.map +1 -1
  19. package/dist/types/index.d.ts +94 -1157
  20. package/dist/types/index.d.ts.map +1 -1
  21. package/dist/utilities/index.d.ts +0 -18
  22. package/dist/utilities/index.d.ts.map +1 -1
  23. package/dist/utilities/index.js +0 -18
  24. package/dist/utilities/index.js.map +1 -1
  25. package/dist/utilities/infrastructure-persistence.d.ts +0 -1
  26. package/dist/utilities/infrastructure-persistence.d.ts.map +1 -1
  27. package/dist/utilities/infrastructure-persistence.js +12 -15
  28. package/dist/utilities/infrastructure-persistence.js.map +1 -1
  29. package/dist/utilities/metrics-aggregator.d.ts +2 -13
  30. package/dist/utilities/metrics-aggregator.d.ts.map +1 -1
  31. package/dist/utilities/metrics-aggregator.js +9 -251
  32. package/dist/utilities/metrics-aggregator.js.map +1 -1
  33. package/dist/utilities/metrics-validator.d.ts +6 -76
  34. package/dist/utilities/metrics-validator.d.ts.map +1 -1
  35. package/dist/utilities/metrics-validator.js +12 -181
  36. package/dist/utilities/metrics-validator.js.map +1 -1
  37. package/dist/utilities/validate-trial-mode-probabilities.js +2 -2
  38. package/dist/utilities/validate-trial-mode-probabilities.js.map +1 -1
  39. package/package.json +20 -24
  40. package/dist/core/stable-api-gateway.d.ts +0 -4
  41. package/dist/core/stable-api-gateway.d.ts.map +0 -1
  42. package/dist/core/stable-api-gateway.js +0 -146
  43. package/dist/core/stable-api-gateway.js.map +0 -1
  44. package/dist/core/stable-function.d.ts +0 -11
  45. package/dist/core/stable-function.d.ts.map +0 -1
  46. package/dist/core/stable-function.js +0 -355
  47. package/dist/core/stable-function.js.map +0 -1
  48. package/dist/core/stable-scheduler.d.ts +0 -71
  49. package/dist/core/stable-scheduler.d.ts.map +0 -1
  50. package/dist/core/stable-scheduler.js +0 -782
  51. package/dist/core/stable-scheduler.js.map +0 -1
  52. package/dist/core/stable-workflow-graph.d.ts +0 -3
  53. package/dist/core/stable-workflow-graph.d.ts.map +0 -1
  54. package/dist/core/stable-workflow-graph.js +0 -5
  55. package/dist/core/stable-workflow-graph.js.map +0 -1
  56. package/dist/core/stable-workflow.d.ts +0 -3
  57. package/dist/core/stable-workflow.d.ts.map +0 -1
  58. package/dist/core/stable-workflow.js +0 -374
  59. package/dist/core/stable-workflow.js.map +0 -1
  60. package/dist/stable-runner/index.d.ts +0 -2
  61. package/dist/stable-runner/index.d.ts.map +0 -1
  62. package/dist/stable-runner/index.js +0 -324
  63. package/dist/stable-runner/index.js.map +0 -1
  64. package/dist/utilities/concurrency-limiter.d.ts +0 -46
  65. package/dist/utilities/concurrency-limiter.d.ts.map +0 -1
  66. package/dist/utilities/concurrency-limiter.js +0 -172
  67. package/dist/utilities/concurrency-limiter.js.map +0 -1
  68. package/dist/utilities/execute-branch-workflow.d.ts +0 -3
  69. package/dist/utilities/execute-branch-workflow.d.ts.map +0 -1
  70. package/dist/utilities/execute-branch-workflow.js +0 -736
  71. package/dist/utilities/execute-branch-workflow.js.map +0 -1
  72. package/dist/utilities/execute-concurrently.d.ts +0 -3
  73. package/dist/utilities/execute-concurrently.d.ts.map +0 -1
  74. package/dist/utilities/execute-concurrently.js +0 -258
  75. package/dist/utilities/execute-concurrently.js.map +0 -1
  76. package/dist/utilities/execute-gateway-item.d.ts +0 -6
  77. package/dist/utilities/execute-gateway-item.d.ts.map +0 -1
  78. package/dist/utilities/execute-gateway-item.js +0 -129
  79. package/dist/utilities/execute-gateway-item.js.map +0 -1
  80. package/dist/utilities/execute-non-linear-workflow.d.ts +0 -3
  81. package/dist/utilities/execute-non-linear-workflow.d.ts.map +0 -1
  82. package/dist/utilities/execute-non-linear-workflow.js +0 -486
  83. package/dist/utilities/execute-non-linear-workflow.js.map +0 -1
  84. package/dist/utilities/execute-phase.d.ts +0 -3
  85. package/dist/utilities/execute-phase.d.ts.map +0 -1
  86. package/dist/utilities/execute-phase.js +0 -132
  87. package/dist/utilities/execute-phase.js.map +0 -1
  88. package/dist/utilities/execute-sequentially.d.ts +0 -3
  89. package/dist/utilities/execute-sequentially.d.ts.map +0 -1
  90. package/dist/utilities/execute-sequentially.js +0 -49
  91. package/dist/utilities/execute-sequentially.js.map +0 -1
  92. package/dist/utilities/execute-with-timeout.d.ts +0 -6
  93. package/dist/utilities/execute-with-timeout.d.ts.map +0 -1
  94. package/dist/utilities/execute-with-timeout.js +0 -28
  95. package/dist/utilities/execute-with-timeout.js.map +0 -1
  96. package/dist/utilities/execute-workflow-graph.d.ts +0 -3
  97. package/dist/utilities/execute-workflow-graph.d.ts.map +0 -1
  98. package/dist/utilities/execute-workflow-graph.js +0 -439
  99. package/dist/utilities/execute-workflow-graph.js.map +0 -1
  100. package/dist/utilities/extract-common-request-config-options.d.ts +0 -3
  101. package/dist/utilities/extract-common-request-config-options.d.ts.map +0 -1
  102. package/dist/utilities/extract-common-request-config-options.js +0 -12
  103. package/dist/utilities/extract-common-request-config-options.js.map +0 -1
  104. package/dist/utilities/fn-exec.d.ts +0 -3
  105. package/dist/utilities/fn-exec.d.ts.map +0 -1
  106. package/dist/utilities/fn-exec.js +0 -66
  107. package/dist/utilities/fn-exec.js.map +0 -1
  108. package/dist/utilities/function-cache-manager.d.ts +0 -32
  109. package/dist/utilities/function-cache-manager.d.ts.map +0 -1
  110. package/dist/utilities/function-cache-manager.js +0 -172
  111. package/dist/utilities/function-cache-manager.js.map +0 -1
  112. package/dist/utilities/prepare-api-function-options.d.ts +0 -3
  113. package/dist/utilities/prepare-api-function-options.d.ts.map +0 -1
  114. package/dist/utilities/prepare-api-function-options.js +0 -51
  115. package/dist/utilities/prepare-api-function-options.js.map +0 -1
  116. package/dist/utilities/prepare-api-request-data.d.ts +0 -3
  117. package/dist/utilities/prepare-api-request-data.d.ts.map +0 -1
  118. package/dist/utilities/prepare-api-request-data.js +0 -15
  119. package/dist/utilities/prepare-api-request-data.js.map +0 -1
  120. package/dist/utilities/prepare-api-request-options.d.ts +0 -3
  121. package/dist/utilities/prepare-api-request-options.d.ts.map +0 -1
  122. package/dist/utilities/prepare-api-request-options.js +0 -22
  123. package/dist/utilities/prepare-api-request-options.js.map +0 -1
  124. package/dist/utilities/rate-limiter.d.ts +0 -49
  125. package/dist/utilities/rate-limiter.d.ts.map +0 -1
  126. package/dist/utilities/rate-limiter.js +0 -197
  127. package/dist/utilities/rate-limiter.js.map +0 -1
  128. package/dist/utilities/validate-workflow-graph.d.ts +0 -7
  129. package/dist/utilities/validate-workflow-graph.d.ts.map +0 -1
  130. package/dist/utilities/validate-workflow-graph.js +0 -235
  131. package/dist/utilities/validate-workflow-graph.js.map +0 -1
  132. package/dist/utilities/workflow-graph-builder.d.ts +0 -37
  133. package/dist/utilities/workflow-graph-builder.d.ts.map +0 -1
  134. package/dist/utilities/workflow-graph-builder.js +0 -225
  135. package/dist/utilities/workflow-graph-builder.js.map +0 -1
@@ -1,355 +0,0 @@
1
- import { RETRY_STRATEGIES, CircuitBreakerState } from '../enums/index.js';
2
- import { CircuitBreaker, CircuitBreakerOpenError, executeWithPersistence, executeWithTimeout, TimeoutError, formatLogContext, getGlobalFunctionCacheManager, getNewDelayTime, delay, fnExec, safelyStringify, validateTrialModeProbabilities, MetricsAggregator, MetricsValidator, RateLimiter, ConcurrencyLimiter } from '../utilities/index.js';
3
- export async function stableFunction(options) {
4
- const { preExecution = {
5
- preExecutionHook: ({ inputParams, commonBuffer }) => { },
6
- preExecutionHookParams: {},
7
- applyPreExecutionConfigOverride: false,
8
- continueOnPreExecutionHookFailure: false,
9
- }, commonBuffer = {}, executionContext, throwOnFailedErrorAnalysis = false, loadTransactionLogs, transactionLogs: preloadedTransactionLogs } = options;
10
- let transactionLogs = preloadedTransactionLogs;
11
- if (loadTransactionLogs) {
12
- try {
13
- transactionLogs = await loadTransactionLogs(executionContext || {});
14
- }
15
- catch (e) {
16
- console.error(`stable-request: Failed to load transaction logs: ${e.message}`);
17
- }
18
- }
19
- let preExecutionResult;
20
- try {
21
- preExecutionResult = await executeWithPersistence(preExecution?.preExecutionHook, {
22
- inputParams: preExecution?.preExecutionHookParams,
23
- commonBuffer,
24
- stableFunctionOptions: options,
25
- transactionLogs
26
- }, options.statePersistence, executionContext || {}, commonBuffer);
27
- if (preExecution?.applyPreExecutionConfigOverride) {
28
- const finalOptions = {
29
- ...options,
30
- ...preExecutionResult
31
- };
32
- Object.assign(options, finalOptions);
33
- }
34
- }
35
- catch (e) {
36
- if (!preExecution?.continueOnPreExecutionHookFailure) {
37
- if (throwOnFailedErrorAnalysis) {
38
- throw e;
39
- }
40
- return {
41
- success: false,
42
- error: e.message || 'Pre-execution hook failed',
43
- metrics: {
44
- totalAttempts: 0,
45
- successfulAttempts: 0,
46
- failedAttempts: 0,
47
- totalExecutionTime: 0,
48
- averageAttemptTime: 0
49
- }
50
- };
51
- }
52
- }
53
- const { fn, args, responseAnalyzer = ({ data, trialMode = { enabled: false } }) => true, returnResult = false, attempts: givenAttempts = 1, performAllAttempts = false, wait = 1000, maxAllowedWait = 60000, retryStrategy = RETRY_STRATEGIES.FIXED, logAllErrors = false, handleErrors = ({ fn, args, errorLog, maxSerializableChars = 1000, executionContext }) => console.error(`${formatLogContext(executionContext)}stable-request:\n`, `Function: ${fn.name || 'anonymous'}\n`, 'Args:\n', safelyStringify(args, maxSerializableChars), '\nError log:\n', safelyStringify(errorLog, maxSerializableChars)), logAllSuccessfulAttempts = false, handleSuccessfulAttemptData = ({ fn, args, successfulAttemptData, maxSerializableChars = 1000, executionContext }) => console.info(`${formatLogContext(executionContext)}stable-request:\n`, `Function: ${fn.name || 'anonymous'}\n`, 'Args:\n', safelyStringify(args, maxSerializableChars), '\nSuccessful attempt:\n', safelyStringify(successfulAttemptData, maxSerializableChars)), maxSerializableChars = 1000, finalErrorAnalyzer = ({ fn, args, error, trialMode = { enabled: false } }) => false, trialMode = { enabled: false }, hookParams = {}, cache, circuitBreaker, jitter = 0, statePersistence, rateLimit, maxConcurrentRequests, executionTimeout } = options;
54
- let attempts = givenAttempts;
55
- const functionStartTime = Date.now();
56
- const errorLogs = [];
57
- const successfulAttemptsList = [];
58
- let totalAttemptsMade = 0;
59
- let successfulAttemptsCount = 0;
60
- const buildResult = (success, data, error) => {
61
- const totalExecutionTime = Date.now() - functionStartTime;
62
- const failedAttemptsCount = totalAttemptsMade - successfulAttemptsCount;
63
- const result = {
64
- success,
65
- ...(data !== undefined && { data }),
66
- ...(error && { error }),
67
- ...(errorLogs.length > 0 && { errorLogs }),
68
- ...(successfulAttemptsList.length > 0 && { successfulAttempts: successfulAttemptsList }),
69
- metrics: {
70
- totalAttempts: totalAttemptsMade,
71
- successfulAttempts: successfulAttemptsCount,
72
- failedAttempts: failedAttemptsCount,
73
- totalExecutionTime,
74
- averageAttemptTime: totalAttemptsMade > 0 ? totalExecutionTime / totalAttemptsMade : 0,
75
- infrastructureMetrics: {
76
- ...(circuitBreakerInstance && { circuitBreaker: MetricsAggregator.extractCircuitBreakerMetrics(circuitBreakerInstance) }),
77
- ...(cache && getGlobalFunctionCacheManager() && { cache: MetricsAggregator.extractFunctionCacheMetrics(getGlobalFunctionCacheManager()) }),
78
- ...(rateLimiterInstance && { rateLimiter: MetricsAggregator.extractRateLimiterMetrics(rateLimiterInstance) }),
79
- ...(concurrencyLimiterInstance && { concurrencyLimiter: MetricsAggregator.extractConcurrencyLimiterMetrics(concurrencyLimiterInstance) })
80
- }
81
- }
82
- };
83
- if (options.metricsGuardrails && result.metrics) {
84
- result.metrics.validation = MetricsValidator.validateRequestMetrics(result.metrics, options.metricsGuardrails);
85
- }
86
- return result;
87
- };
88
- let circuitBreakerInstance = null;
89
- if (circuitBreaker) {
90
- circuitBreakerInstance = circuitBreaker instanceof CircuitBreaker
91
- ? circuitBreaker
92
- : new CircuitBreaker(circuitBreaker);
93
- }
94
- let rateLimiterInstance = null;
95
- if (rateLimit && rateLimit.maxRequests > 0 && rateLimit.windowMs > 0) {
96
- rateLimiterInstance = new RateLimiter(rateLimit.maxRequests, rateLimit.windowMs);
97
- }
98
- let concurrencyLimiterInstance = null;
99
- if (maxConcurrentRequests && maxConcurrentRequests > 0) {
100
- concurrencyLimiterInstance = new ConcurrencyLimiter(maxConcurrentRequests);
101
- }
102
- const executeFunction = async () => {
103
- try {
104
- validateTrialModeProbabilities(trialMode);
105
- let res = {
106
- ok: false,
107
- isRetryable: true,
108
- timestamp: new Date().toISOString(),
109
- executionTime: 0
110
- };
111
- const maxAttempts = attempts;
112
- let lastSuccessfulAttemptData = undefined;
113
- let hadAtLeastOneSuccess = false;
114
- do {
115
- attempts--;
116
- const currentAttempt = maxAttempts - attempts;
117
- totalAttemptsMade = currentAttempt;
118
- if (circuitBreakerInstance) {
119
- const cbConfig = circuitBreakerInstance.getState().config;
120
- if (cbConfig.trackIndividualAttempts || currentAttempt === 1) {
121
- const canExecute = await circuitBreakerInstance.canExecute();
122
- if (!canExecute) {
123
- throw new CircuitBreakerOpenError(`${formatLogContext(executionContext)}stable-request: Circuit breaker is ${circuitBreakerInstance.getState().state}. Function execution blocked at attempt ${currentAttempt}.`);
124
- }
125
- }
126
- }
127
- try {
128
- const executeAttempt = async () => {
129
- return await fnExec(fn, args, returnResult, maxSerializableChars, trialMode, cache, executionContext);
130
- };
131
- if (rateLimiterInstance && concurrencyLimiterInstance) {
132
- res = await rateLimiterInstance.execute(() => concurrencyLimiterInstance.execute(executeAttempt));
133
- }
134
- else if (rateLimiterInstance) {
135
- res = await rateLimiterInstance.execute(executeAttempt);
136
- }
137
- else if (concurrencyLimiterInstance) {
138
- res = await concurrencyLimiterInstance.execute(executeAttempt);
139
- }
140
- else {
141
- res = await executeAttempt();
142
- }
143
- if (res.fromCache && res.ok) {
144
- if (trialMode.enabled) {
145
- console.info(`${formatLogContext(executionContext)}stable-request: Response served from cache:\n`, safelyStringify(res?.data, maxSerializableChars));
146
- }
147
- return buildResult(true, returnResult ? res?.data : true);
148
- }
149
- }
150
- catch (attemptError) {
151
- if (attemptError instanceof CircuitBreakerOpenError) {
152
- throw attemptError;
153
- }
154
- if (circuitBreakerInstance && circuitBreakerInstance.getState().config.trackIndividualAttempts) {
155
- circuitBreakerInstance.recordAttemptFailure();
156
- if (circuitBreakerInstance.getState().state === CircuitBreakerState.OPEN) {
157
- throw new CircuitBreakerOpenError(`${formatLogContext(executionContext)}stable-request: Circuit breaker opened after attempt ${currentAttempt}. No further retries.`);
158
- }
159
- }
160
- throw attemptError;
161
- }
162
- const originalResOk = res.ok;
163
- let performNextAttempt = false;
164
- if (res.ok) {
165
- try {
166
- performNextAttempt = !(await executeWithPersistence(responseAnalyzer, {
167
- fn,
168
- args,
169
- data: res?.data,
170
- trialMode,
171
- params: hookParams?.responseAnalyzerParams,
172
- preExecutionResult,
173
- commonBuffer,
174
- executionContext,
175
- transactionLogs
176
- }, statePersistence, executionContext || {}, commonBuffer));
177
- }
178
- catch (e) {
179
- console.error(`${formatLogContext(executionContext)}stable-request: Unable to analyze the response returned on attempt #${currentAttempt}. Response: ${safelyStringify(res?.data, maxSerializableChars)}`);
180
- console.error(`${formatLogContext(executionContext)}stable-request: Error message provided by your responseAnalyzer: ${safelyStringify(e.message, maxSerializableChars)}`);
181
- performNextAttempt = true;
182
- }
183
- }
184
- if (circuitBreakerInstance && circuitBreakerInstance.getState().config.trackIndividualAttempts) {
185
- if (res.ok && !performNextAttempt) {
186
- circuitBreakerInstance.recordAttemptSuccess();
187
- }
188
- else if (!res.ok || performNextAttempt) {
189
- circuitBreakerInstance.recordAttemptFailure();
190
- if (circuitBreakerInstance.getState().state === CircuitBreakerState.OPEN) {
191
- throw new CircuitBreakerOpenError(`${formatLogContext(executionContext)}stable-request: Circuit breaker opened after attempt ${currentAttempt}/${maxAttempts}. Blocking further retries.`);
192
- }
193
- }
194
- }
195
- if ((!res.ok || (res.ok && performNextAttempt)) && logAllErrors) {
196
- const errorLog = {
197
- timestamp: res.timestamp,
198
- attempt: `${currentAttempt}/${maxAttempts}`,
199
- error: res?.error ??
200
- `${formatLogContext(executionContext)}stable-request: The response did not match your expectations! Response: ${safelyStringify(res?.data, maxSerializableChars)}`,
201
- isRetryable: res.isRetryable,
202
- executionTime: res.executionTime
203
- };
204
- errorLogs.push(errorLog);
205
- try {
206
- await executeWithPersistence(handleErrors, {
207
- fn,
208
- args,
209
- errorLog,
210
- maxSerializableChars,
211
- params: hookParams?.handleErrorsParams,
212
- preExecutionResult,
213
- commonBuffer,
214
- executionContext,
215
- transactionLogs
216
- }, statePersistence, executionContext || {}, commonBuffer);
217
- }
218
- catch (e) {
219
- console.error(`${formatLogContext(executionContext)}stable-request: Unable to report errors due to issues with error handler! Error message provided by your handleErrors: ${safelyStringify(e.message, maxSerializableChars)}`);
220
- }
221
- }
222
- if (res.ok && !performNextAttempt) {
223
- hadAtLeastOneSuccess = true;
224
- lastSuccessfulAttemptData = res?.data;
225
- successfulAttemptsCount++;
226
- if (logAllSuccessfulAttempts) {
227
- const successfulAttemptLog = {
228
- attempt: `${currentAttempt}/${maxAttempts}`,
229
- timestamp: res.timestamp,
230
- data: res?.data,
231
- executionTime: res.executionTime
232
- };
233
- successfulAttemptsList.push(successfulAttemptLog);
234
- try {
235
- await executeWithPersistence(handleSuccessfulAttemptData, {
236
- fn,
237
- args,
238
- successfulAttemptData: successfulAttemptLog,
239
- maxSerializableChars,
240
- params: hookParams?.handleSuccessfulAttemptDataParams,
241
- preExecutionResult,
242
- commonBuffer,
243
- executionContext,
244
- transactionLogs
245
- }, statePersistence, executionContext || {}, commonBuffer);
246
- }
247
- catch (e) {
248
- console.error(`${formatLogContext(executionContext)}stable-request: Unable to report successful attempts due to issues with successful attempt data handler! Error message provided by your handleSuccessfulAttemptData: ${safelyStringify(e.message, maxSerializableChars)}`);
249
- }
250
- }
251
- }
252
- if (performNextAttempt && res.isRetryable) {
253
- res.ok = false;
254
- }
255
- if (attempts > 0 &&
256
- ((!originalResOk && res.isRetryable) ||
257
- (originalResOk && performNextAttempt) ||
258
- performAllAttempts)) {
259
- await delay(getNewDelayTime(retryStrategy, wait, currentAttempt, jitter), maxAllowedWait);
260
- }
261
- } while (attempts > 0 &&
262
- ((res.isRetryable && !res.ok) || performAllAttempts));
263
- if (performAllAttempts && hadAtLeastOneSuccess) {
264
- if (trialMode.enabled) {
265
- console.info(`${formatLogContext(executionContext)}stable-request: Final response (performAllAttempts mode):\n`, safelyStringify(lastSuccessfulAttemptData, maxSerializableChars));
266
- }
267
- return buildResult(true, returnResult ? lastSuccessfulAttemptData : true);
268
- }
269
- else if (res.ok) {
270
- if (trialMode.enabled) {
271
- const finalResponse = res?.data ?? lastSuccessfulAttemptData;
272
- console.info(`${formatLogContext(executionContext)}stable-request: Final response:\n`, safelyStringify(finalResponse, maxSerializableChars));
273
- }
274
- return buildResult(true, returnResult ? (res?.data ?? lastSuccessfulAttemptData) : true);
275
- }
276
- else {
277
- const finalError = new Error(safelyStringify({
278
- error: res?.error,
279
- 'Function': fn.name || 'anonymous',
280
- 'Args': args,
281
- }, maxSerializableChars));
282
- let errorAnalysisResult = false;
283
- try {
284
- errorAnalysisResult = await executeWithPersistence(finalErrorAnalyzer, {
285
- fn,
286
- args,
287
- error: finalError,
288
- trialMode,
289
- params: hookParams?.finalErrorAnalyzerParams,
290
- preExecutionResult,
291
- commonBuffer,
292
- executionContext,
293
- transactionLogs
294
- }, statePersistence, executionContext || {}, commonBuffer);
295
- }
296
- catch (errorAnalysisError) {
297
- console.error(`${formatLogContext(executionContext)}stable-request: Unable to analyze the final error returned. Error message provided by your finalErrorAnalyzer: ${safelyStringify(errorAnalysisError.message, maxSerializableChars)}`);
298
- }
299
- if (throwOnFailedErrorAnalysis && !errorAnalysisResult) {
300
- throw finalError;
301
- }
302
- return buildResult(false, undefined, res?.error || 'Function execution failed');
303
- }
304
- }
305
- catch (e) {
306
- if (trialMode.enabled) {
307
- console.error(`${formatLogContext(executionContext)}stable-request: Final error:\n`, e.message);
308
- }
309
- let errorAnalysisResult = false;
310
- try {
311
- errorAnalysisResult = await executeWithPersistence(finalErrorAnalyzer, {
312
- fn,
313
- args,
314
- error: e,
315
- trialMode,
316
- params: hookParams?.finalErrorAnalyzerParams,
317
- preExecutionResult,
318
- commonBuffer,
319
- executionContext,
320
- transactionLogs
321
- }, statePersistence, executionContext || {}, commonBuffer);
322
- }
323
- catch (errorAnalysisError) {
324
- console.error(`${formatLogContext(executionContext)}stable-request: Unable to analyze the final error returned. Error message provided by your finalErrorAnalyzer: ${safelyStringify(errorAnalysisError.message, maxSerializableChars)}`);
325
- }
326
- if (!errorAnalysisResult) {
327
- if (throwOnFailedErrorAnalysis) {
328
- throw e;
329
- }
330
- return buildResult(false, undefined, e.message || 'Function execution failed');
331
- }
332
- else {
333
- return buildResult(false, undefined, e.message || 'Function execution failed');
334
- }
335
- }
336
- };
337
- try {
338
- if (executionTimeout && executionTimeout > 0) {
339
- return await executeWithTimeout(executeFunction(), executionTimeout, `${formatLogContext(executionContext)}stable-request: Function execution exceeded timeout of ${executionTimeout}ms`);
340
- }
341
- else {
342
- return await executeFunction();
343
- }
344
- }
345
- catch (e) {
346
- if (e instanceof TimeoutError) {
347
- return buildResult(false, undefined, e.message);
348
- }
349
- if (throwOnFailedErrorAnalysis) {
350
- throw e;
351
- }
352
- return buildResult(false, undefined, e.message || 'Function execution failed');
353
- }
354
- }
355
- //# sourceMappingURL=stable-function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stable-function.js","sourceRoot":"","sources":["../../src/core/stable-function.ts"],"names":[],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- import type { SchedulerConfig, SchedulerRetryConfig, SchedulerSchedule, SchedulerMetrics, MetricsValidationResult, SchedulerState, SchedulerJobHandler, SchedulerSharedInfrastructure } from '../types/index.js';
2
- import { CircuitBreaker, RateLimiter, ConcurrencyLimiter, CacheManager } from '../utilities/index.js';
3
- export declare class StableScheduler<TJob extends {
4
- id?: string;
5
- schedule?: SchedulerSchedule;
6
- retry?: SchedulerRetryConfig;
7
- executionTimeoutMs?: number;
8
- }> {
9
- private readonly config;
10
- private readonly handler;
11
- private readonly jobs;
12
- private readonly queue;
13
- private readonly queued;
14
- private timer;
15
- private persistTimer;
16
- private persistQueued;
17
- private runningCount;
18
- private completed;
19
- private failed;
20
- private dropped;
21
- private sequence;
22
- private schedulerStartTime;
23
- private totalExecutionTimeMs;
24
- private totalQueueDelayMs;
25
- constructor(config: SchedulerConfig, handler: SchedulerJobHandler<TJob>);
26
- addJobs(jobs: TJob[]): void;
27
- setJobs(jobs: TJob[]): void;
28
- addJob(job: TJob): string;
29
- start(): void;
30
- stop(): void;
31
- tick(): void;
32
- getStats(): {
33
- queued: number;
34
- running: number;
35
- completed: number;
36
- failed: number;
37
- dropped: number;
38
- totalJobs: number;
39
- };
40
- getSharedInfrastructure(): SchedulerSharedInfrastructure | undefined;
41
- getInfrastructureMetrics(): {
42
- circuitBreaker?: ReturnType<CircuitBreaker['getState']>;
43
- rateLimiter?: ReturnType<RateLimiter['getState']>;
44
- concurrencyLimiter?: ReturnType<ConcurrencyLimiter['getState']>;
45
- cacheManager?: ReturnType<CacheManager['getStats']>;
46
- };
47
- getMetrics(): {
48
- metrics: SchedulerMetrics;
49
- validation?: MetricsValidationResult;
50
- };
51
- private buildInfrastructureMetrics;
52
- private validateInfrastructureMetrics;
53
- getState(): SchedulerState<TJob>;
54
- restoreState(state?: SchedulerState<TJob>): Promise<boolean>;
55
- private dispatch;
56
- private getRetryConfig;
57
- private getExecutionTimeoutMs;
58
- private scheduleRetryIfEnabled;
59
- private withTimeout;
60
- private initializeSchedule;
61
- private updateNextRun;
62
- private parseTimestamp;
63
- private getNextCronTime;
64
- private parseCronField;
65
- private isValidInteger;
66
- private getCronDateParts;
67
- private createId;
68
- private generateUuid;
69
- private persistStateIfEnabled;
70
- }
71
- //# sourceMappingURL=stable-scheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stable-scheduler.d.ts","sourceRoot":"","sources":["../../src/core/stable-scheduler.ts"],"names":[],"mappings":"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"}