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