@emmvish/stable-request 1.9.0 → 2.1.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.
- package/README.md +1309 -1595
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/stable-api-gateway.d.ts +3 -2
- package/dist/core/stable-api-gateway.d.ts.map +1 -1
- package/dist/core/stable-api-gateway.js +33 -8
- package/dist/core/stable-api-gateway.js.map +1 -1
- package/dist/core/stable-function.d.ts +3 -0
- package/dist/core/stable-function.d.ts.map +1 -0
- package/dist/core/stable-function.js +280 -0
- package/dist/core/stable-function.js.map +1 -0
- package/dist/core/stable-request.d.ts.map +1 -1
- package/dist/core/stable-request.js +4 -4
- package/dist/core/stable-request.js.map +1 -1
- package/dist/core/stable-workflow.d.ts.map +1 -1
- package/dist/core/stable-workflow.js +3 -2
- package/dist/core/stable-workflow.js.map +1 -1
- package/dist/enums/index.d.ts +4 -0
- package/dist/enums/index.d.ts.map +1 -1
- package/dist/enums/index.js +5 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +154 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utilities/circuit-breaker.js +1 -1
- package/dist/utilities/circuit-breaker.js.map +1 -1
- package/dist/utilities/execute-concurrently.d.ts +2 -2
- package/dist/utilities/execute-concurrently.d.ts.map +1 -1
- package/dist/utilities/execute-concurrently.js +39 -62
- package/dist/utilities/execute-concurrently.js.map +1 -1
- package/dist/utilities/execute-gateway-item.d.ts +6 -0
- package/dist/utilities/execute-gateway-item.d.ts.map +1 -0
- package/dist/utilities/execute-gateway-item.js +117 -0
- package/dist/utilities/execute-gateway-item.js.map +1 -0
- package/dist/utilities/execute-non-linear-workflow.js +3 -3
- package/dist/utilities/execute-non-linear-workflow.js.map +1 -1
- package/dist/utilities/execute-phase.d.ts.map +1 -1
- package/dist/utilities/execute-phase.js +15 -1
- package/dist/utilities/execute-phase.js.map +1 -1
- package/dist/utilities/execute-sequentially.d.ts +2 -2
- package/dist/utilities/execute-sequentially.d.ts.map +1 -1
- package/dist/utilities/execute-sequentially.js +27 -42
- package/dist/utilities/execute-sequentially.js.map +1 -1
- package/dist/utilities/execute-workflow-graph.d.ts.map +1 -1
- package/dist/utilities/execute-workflow-graph.js +103 -63
- package/dist/utilities/execute-workflow-graph.js.map +1 -1
- package/dist/utilities/fn-exec.d.ts +3 -0
- package/dist/utilities/fn-exec.d.ts.map +1 -0
- package/dist/utilities/fn-exec.js +66 -0
- package/dist/utilities/fn-exec.js.map +1 -0
- package/dist/utilities/function-cache-manager.d.ts +30 -0
- package/dist/utilities/function-cache-manager.d.ts.map +1 -0
- package/dist/utilities/function-cache-manager.js +106 -0
- package/dist/utilities/function-cache-manager.js.map +1 -0
- package/dist/utilities/index.d.ts +4 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +4 -0
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/metrics-aggregator.d.ts +4 -0
- package/dist/utilities/metrics-aggregator.d.ts.map +1 -1
- package/dist/utilities/metrics-aggregator.js +29 -0
- package/dist/utilities/metrics-aggregator.js.map +1 -1
- package/dist/utilities/prepare-api-function-options.d.ts +3 -0
- package/dist/utilities/prepare-api-function-options.d.ts.map +1 -0
- package/dist/utilities/prepare-api-function-options.js +50 -0
- package/dist/utilities/prepare-api-function-options.js.map +1 -0
- package/dist/utilities/req-fn.js +2 -2
- package/dist/utilities/req-fn.js.map +1 -1
- package/dist/utilities/validate-workflow-graph.d.ts +0 -3
- package/dist/utilities/validate-workflow-graph.d.ts.map +1 -1
- package/dist/utilities/validate-workflow-graph.js +9 -7
- package/dist/utilities/validate-workflow-graph.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,61 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { prepareApiRequestOptions } from './prepare-api-request-options.js';
|
|
1
|
+
import { executeGatewayItem } from "./execute-gateway-item.js";
|
|
2
|
+
import { RequestOrFunction } from "../enums/index.js";
|
|
4
3
|
import { CircuitBreaker, CircuitBreakerOpenError } from "./circuit-breaker.js";
|
|
5
|
-
export async function executeSequentially(
|
|
4
|
+
export async function executeSequentially(items = [], requestExecutionOptions = {}) {
|
|
6
5
|
const responses = [];
|
|
7
6
|
const circuitBreaker = requestExecutionOptions.circuitBreaker
|
|
8
7
|
? (requestExecutionOptions.circuitBreaker instanceof CircuitBreaker
|
|
9
8
|
? requestExecutionOptions.circuitBreaker
|
|
10
9
|
: new CircuitBreaker(requestExecutionOptions.circuitBreaker))
|
|
11
10
|
: null;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const finalRequestOptions = {
|
|
22
|
-
reqData: prepareApiRequestData(req, requestExecutionOptions),
|
|
23
|
-
...prepareApiRequestOptions(req, requestExecutionOptions),
|
|
24
|
-
commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer,
|
|
25
|
-
...(circuitBreaker ? { circuitBreaker } : {}),
|
|
26
|
-
executionContext: {
|
|
27
|
-
...requestExecutionOptions.executionContext,
|
|
28
|
-
requestId: req.id
|
|
29
|
-
}
|
|
11
|
+
// Convert to unified format if needed
|
|
12
|
+
const unifiedItems = items.map(item => {
|
|
13
|
+
if ('type' in item) {
|
|
14
|
+
return item;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return {
|
|
18
|
+
type: RequestOrFunction.REQUEST,
|
|
19
|
+
request: item
|
|
30
20
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
for (let i = 0; i < unifiedItems.length; i++) {
|
|
24
|
+
const item = unifiedItems[i];
|
|
25
|
+
try {
|
|
26
|
+
const response = await executeGatewayItem(item, requestExecutionOptions, circuitBreaker);
|
|
27
|
+
responses.push(response);
|
|
28
|
+
if (!response.success && requestExecutionOptions.stopOnFirstError) {
|
|
29
|
+
break;
|
|
34
30
|
}
|
|
35
|
-
responses.push({
|
|
36
|
-
requestId: req.id,
|
|
37
|
-
...(req.groupId && { groupId: req.groupId }),
|
|
38
|
-
success: requestResult.success,
|
|
39
|
-
...(requestResult.data !== undefined && { data: requestResult.data }),
|
|
40
|
-
...(!requestResult.success && {
|
|
41
|
-
error: requestResult.error || 'Request was unsuccessful, but the error was analyzed successfully!'
|
|
42
|
-
})
|
|
43
|
-
});
|
|
44
31
|
}
|
|
45
32
|
catch (error) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
!circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
49
|
-
circuitBreaker.recordFailure();
|
|
50
|
-
}
|
|
33
|
+
const itemId = item.type === RequestOrFunction.REQUEST ? item.request.id : item.function.id;
|
|
34
|
+
const groupId = item.type === RequestOrFunction.REQUEST ? item.request.groupId : item.function.groupId;
|
|
51
35
|
const isCircuitBreakerError = error instanceof CircuitBreakerOpenError;
|
|
52
36
|
responses.push({
|
|
53
|
-
requestId:
|
|
54
|
-
...(
|
|
37
|
+
requestId: itemId,
|
|
38
|
+
...(groupId && { groupId }),
|
|
55
39
|
success: false,
|
|
56
40
|
error: isCircuitBreakerError
|
|
57
41
|
? `Circuit breaker open: ${error.message}`
|
|
58
|
-
: (error?.message || 'An error occurred! Error description is unavailable.')
|
|
42
|
+
: (error?.message || 'An error occurred! Error description is unavailable.'),
|
|
43
|
+
type: item.type
|
|
59
44
|
});
|
|
60
45
|
if (requestExecutionOptions.stopOnFirstError) {
|
|
61
46
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAsI,EAAE,EACxI,0BAAmG,EAAE;IAErG,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc;QACzD,CAAC,CAAC,CAAC,uBAAuB,CAAC,cAAc,YAAY,cAAc;YAC/D,CAAC,CAAC,uBAAuB,CAAC,cAAc;YACxC,CAAC,CAAC,IAAI,cAAc,CAAC,uBAAuB,CAAC,cAAqB,CAAC,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC;IAEX,sCAAsC;IACtC,MAAM,YAAY,GAAsE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrG,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,IAAuE,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,OAAO;gBACH,IAAI,EAAE,iBAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,IAA8D;aAC1E,CAAC;QACN,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;YACzF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;gBAChE,MAAM;YACV,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvG,MAAM,qBAAqB,GAAG,KAAK,YAAY,uBAAuB,CAAC;YAEvE,SAAS,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,MAAM;gBACjB,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB;oBACxB,CAAC,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,sDAAsD,CAAC;gBAChF,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;YAEH,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-workflow-graph.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAS3B,wBAAsB,oBAAoB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACtF,KAAK,EAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACvD,OAAO,EAAE,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC/D,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"execute-workflow-graph.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAS3B,wBAAsB,oBAAoB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACtF,KAAK,EAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACvD,OAAO,EAAE,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC/D,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAqZnD"}
|
|
@@ -37,7 +37,7 @@ export async function executeWorkflowGraph(graph, options) {
|
|
|
37
37
|
}
|
|
38
38
|
const node = graph.nodes.get(nodeId);
|
|
39
39
|
if (!node) {
|
|
40
|
-
throw new Error(
|
|
40
|
+
throw new Error(`${formatLogContext({ workflowId })}Node '${nodeId}' not found in graph`);
|
|
41
41
|
}
|
|
42
42
|
if (node.type === WorkflowNodeTypes.MERGE_POINT && node.waitForNodes) {
|
|
43
43
|
if (!areDependenciesSatisfied(nodeId, node.waitForNodes)) {
|
|
@@ -107,76 +107,116 @@ export async function executeWorkflowGraph(graph, options) {
|
|
|
107
107
|
};
|
|
108
108
|
const executePhaseNode = async (node, nodeId) => {
|
|
109
109
|
if (!node.phase) {
|
|
110
|
-
throw new Error(
|
|
110
|
+
throw new Error(`${formatLogContext({ workflowId })}Phase node '${nodeId}' has no phase configuration`);
|
|
111
111
|
}
|
|
112
112
|
const phaseIndex = phaseResults.length;
|
|
113
113
|
const phaseId = node.phase.id || nodeId;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
let executionNumber = 1;
|
|
115
|
+
let shouldReplay = false;
|
|
116
|
+
do {
|
|
117
|
+
try {
|
|
118
|
+
let phase = node.phase;
|
|
119
|
+
if (options.prePhaseExecutionHook) {
|
|
120
|
+
phase = await executeWithPersistence(options.prePhaseExecutionHook, {
|
|
121
|
+
phase,
|
|
122
|
+
phaseId,
|
|
123
|
+
phaseIndex,
|
|
124
|
+
workflowId,
|
|
125
|
+
sharedBuffer,
|
|
126
|
+
params: options.workflowHookParams?.prePhaseExecutionHookParams
|
|
127
|
+
}, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
|
|
128
|
+
}
|
|
129
|
+
const phaseResult = await executePhase(phase, phaseIndex, workflowId, options, options.requestGroups || [], options.logPhaseResults || false, options.handlePhaseCompletion || (async () => { }), options.maxSerializableChars || 1000, options.workflowHookParams || {}, sharedBuffer, undefined, options.prePhaseExecutionHook);
|
|
130
|
+
results.set(nodeId, phaseResult);
|
|
131
|
+
phaseResults.push(phaseResult);
|
|
132
|
+
totalRequests += phaseResult.totalRequests;
|
|
133
|
+
successfulRequests += phaseResult.successfulRequests;
|
|
134
|
+
failedRequests += phaseResult.failedRequests;
|
|
135
|
+
const executionRecord = {
|
|
119
136
|
phaseId,
|
|
120
137
|
phaseIndex,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
138
|
+
executionNumber,
|
|
139
|
+
timestamp: phaseResult.timestamp,
|
|
140
|
+
success: phaseResult.success,
|
|
141
|
+
executionTime: phaseResult.executionTime
|
|
142
|
+
};
|
|
143
|
+
shouldReplay = false;
|
|
144
|
+
if (node.phaseDecisionHook) {
|
|
145
|
+
const decision = await executeWithPersistence(node.phaseDecisionHook, {
|
|
146
|
+
workflowId,
|
|
147
|
+
phaseResult,
|
|
148
|
+
phaseId,
|
|
149
|
+
phaseIndex,
|
|
150
|
+
executionHistory,
|
|
151
|
+
sharedBuffer,
|
|
152
|
+
params: options.workflowHookParams?.handlePhaseDecisionParams
|
|
153
|
+
}, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
|
|
154
|
+
executionRecord.decision = decision;
|
|
155
|
+
if (decision.action === 'replay') {
|
|
156
|
+
shouldReplay = true;
|
|
157
|
+
executionNumber++;
|
|
158
|
+
if (options.logPhaseResults) {
|
|
159
|
+
console.info(`${formatLogContext({ workflowId, phaseId })}stable-request: Phase decision - REPLAY (execution ${executionNumber})`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else if (decision.action === 'terminate') {
|
|
163
|
+
terminatedEarly = true;
|
|
164
|
+
terminationReason = decision.reason || 'Phase decision hook requested termination';
|
|
165
|
+
if (options.logPhaseResults) {
|
|
166
|
+
console.info(`${formatLogContext({ workflowId, phaseId })}stable-request: Phase decision - TERMINATE: ${terminationReason}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
executionHistory.push(executionRecord);
|
|
171
|
+
if (options.logPhaseResults) {
|
|
172
|
+
const logContext = formatLogContext({
|
|
173
|
+
workflowId,
|
|
174
|
+
phaseId
|
|
175
|
+
});
|
|
176
|
+
console.info(`${logContext}stable-request: Phase completed - Success: ${phaseResult.success}, Requests: ${phaseResult.totalRequests}`);
|
|
177
|
+
console.info(`${logContext}stable-request: ${safelyStringify(phaseResult, options.maxSerializableChars || 1000)}`);
|
|
178
|
+
}
|
|
179
|
+
if (options.handlePhaseCompletion) {
|
|
180
|
+
await executeWithPersistence(options.handlePhaseCompletion, {
|
|
181
|
+
phaseResult,
|
|
182
|
+
phaseId,
|
|
183
|
+
phaseIndex,
|
|
184
|
+
workflowId,
|
|
185
|
+
sharedBuffer,
|
|
186
|
+
params: options.workflowHookParams?.handlePhaseCompletionParams
|
|
187
|
+
}, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
|
|
188
|
+
}
|
|
189
|
+
if (!phaseResult.success && options.stopOnFirstPhaseError) {
|
|
190
|
+
terminatedEarly = true;
|
|
191
|
+
terminationReason = `Phase '${phaseId}' failed`;
|
|
192
|
+
shouldReplay = false;
|
|
193
|
+
}
|
|
125
194
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
phaseResults.push(phaseResult);
|
|
129
|
-
totalRequests += phaseResult.totalRequests;
|
|
130
|
-
successfulRequests += phaseResult.successfulRequests;
|
|
131
|
-
failedRequests += phaseResult.failedRequests;
|
|
132
|
-
executionHistory.push({
|
|
133
|
-
phaseId,
|
|
134
|
-
phaseIndex,
|
|
135
|
-
executionNumber: 1,
|
|
136
|
-
timestamp: phaseResult.timestamp,
|
|
137
|
-
success: phaseResult.success,
|
|
138
|
-
executionTime: phaseResult.executionTime
|
|
139
|
-
});
|
|
140
|
-
if (options.logPhaseResults) {
|
|
141
|
-
const logContext = formatLogContext({
|
|
195
|
+
catch (error) {
|
|
196
|
+
const errorResult = {
|
|
142
197
|
workflowId,
|
|
143
|
-
phaseId
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
workflowId,
|
|
157
|
-
phaseId,
|
|
158
|
-
phaseIndex,
|
|
159
|
-
success: false,
|
|
160
|
-
executionTime: Date.now() - startTime,
|
|
161
|
-
timestamp: new Date().toISOString(),
|
|
162
|
-
totalRequests: 0,
|
|
163
|
-
successfulRequests: 0,
|
|
164
|
-
failedRequests: 0,
|
|
165
|
-
responses: [],
|
|
166
|
-
error: error.message || 'Unknown error'
|
|
167
|
-
};
|
|
168
|
-
results.set(nodeId, errorResult);
|
|
169
|
-
phaseResults.push(errorResult);
|
|
170
|
-
if (options.stopOnFirstPhaseError) {
|
|
198
|
+
phaseId,
|
|
199
|
+
phaseIndex,
|
|
200
|
+
success: false,
|
|
201
|
+
executionTime: Date.now() - startTime,
|
|
202
|
+
timestamp: new Date().toISOString(),
|
|
203
|
+
totalRequests: 0,
|
|
204
|
+
successfulRequests: 0,
|
|
205
|
+
failedRequests: 0,
|
|
206
|
+
responses: [],
|
|
207
|
+
error: error.message || 'Unknown error'
|
|
208
|
+
};
|
|
209
|
+
results.set(nodeId, errorResult);
|
|
210
|
+
phaseResults.push(errorResult);
|
|
171
211
|
terminatedEarly = true;
|
|
172
|
-
terminationReason =
|
|
173
|
-
|
|
212
|
+
terminationReason = error.message || `${formatLogContext({ workflowId })}stable-request: Unknown error during execution`;
|
|
213
|
+
shouldReplay = false;
|
|
174
214
|
}
|
|
175
|
-
}
|
|
215
|
+
} while (shouldReplay && !terminatedEarly);
|
|
176
216
|
};
|
|
177
217
|
const executeBranchNode = async (node, nodeId) => {
|
|
178
218
|
if (!node.branch) {
|
|
179
|
-
throw new Error(
|
|
219
|
+
throw new Error(`${formatLogContext({ workflowId })}Branch node '${nodeId}' has no branch configuration`);
|
|
180
220
|
}
|
|
181
221
|
const branchResult = await executeBranchWorkflow({
|
|
182
222
|
branches: [node.branch],
|
|
@@ -220,7 +260,7 @@ export async function executeWorkflowGraph(graph, options) {
|
|
|
220
260
|
};
|
|
221
261
|
const executeConditionalNode = async (node, nodeId) => {
|
|
222
262
|
if (!node.condition) {
|
|
223
|
-
throw new Error(
|
|
263
|
+
throw new Error(`${formatLogContext({ workflowId })}Conditional node '${nodeId}' has no condition`);
|
|
224
264
|
}
|
|
225
265
|
visited.add(nodeId);
|
|
226
266
|
const nextNodeId = await executeWithPersistence(node.condition.evaluate, {
|
|
@@ -236,12 +276,12 @@ export async function executeWorkflowGraph(graph, options) {
|
|
|
236
276
|
await executeNode(nextNodeId);
|
|
237
277
|
}
|
|
238
278
|
else {
|
|
239
|
-
throw new Error(
|
|
279
|
+
throw new Error(`${formatLogContext({ workflowId })}Conditional node '${nodeId}' evaluated to non-existent node '${nextNodeId}'`);
|
|
240
280
|
}
|
|
241
281
|
};
|
|
242
282
|
const executeParallelGroupNode = async (node, nodeId) => {
|
|
243
283
|
if (!node.parallelNodes || node.parallelNodes.length === 0) {
|
|
244
|
-
throw new Error(
|
|
284
|
+
throw new Error(`${formatLogContext({ workflowId })}Parallel group node '${nodeId}' has no parallel nodes`);
|
|
245
285
|
}
|
|
246
286
|
if (options.logPhaseResults) {
|
|
247
287
|
console.info(`${formatLogContext({ workflowId })}stable-request: Starting parallel execution of: ${node.parallelNodes.join(', ')}`);
|
|
@@ -257,7 +297,7 @@ export async function executeWorkflowGraph(graph, options) {
|
|
|
257
297
|
catch (error) {
|
|
258
298
|
if (!terminatedEarly) {
|
|
259
299
|
terminatedEarly = true;
|
|
260
|
-
terminationReason = error.message ||
|
|
300
|
+
terminationReason = error.message || `${formatLogContext({ workflowId })}stable-request: Unknown error during execution`;
|
|
261
301
|
}
|
|
262
302
|
}
|
|
263
303
|
const executionTime = Date.now() - startTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-workflow-graph.js","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execute-workflow-graph.js","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FnExecResponse, TRIAL_MODE_OPTIONS, FunctionCacheConfig, ExecutionContext } from '../types/index.js';
|
|
2
|
+
export declare function fnExec<TArgs extends any[] = any[], TReturn = any>(fn: (...args: TArgs) => TReturn | Promise<TReturn>, args: TArgs, returnResult?: boolean, maxSerializableChars?: number, trialMode?: TRIAL_MODE_OPTIONS, cacheConfig?: FunctionCacheConfig<TArgs, TReturn>, executionContext?: ExecutionContext): Promise<FnExecResponse<TReturn>>;
|
|
3
|
+
//# sourceMappingURL=fn-exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fn-exec.d.ts","sourceRoot":"","sources":["../../src/utilities/fn-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK9G,wBAAsB,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EACrE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAClD,IAAI,EAAE,KAAK,EACX,YAAY,UAAQ,EACpB,oBAAoB,SAAO,EAC3B,SAAS,GAAE,kBAAuC,EAClD,WAAW,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EACjD,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAsElC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { safelyStringify } from './safely-stringify.js';
|
|
2
|
+
import { getGlobalFunctionCacheManager } from './function-cache-manager.js';
|
|
3
|
+
import { formatLogContext } from './format-log-context.js';
|
|
4
|
+
export async function fnExec(fn, args, returnResult = false, maxSerializableChars = 1000, trialMode = { enabled: false }, cacheConfig, executionContext) {
|
|
5
|
+
const startTime = Date.now();
|
|
6
|
+
let stopTime = 0;
|
|
7
|
+
const timestamp = new Date(startTime).toISOString();
|
|
8
|
+
let cacheManager = null;
|
|
9
|
+
if (cacheConfig?.enabled) {
|
|
10
|
+
cacheManager = getGlobalFunctionCacheManager(cacheConfig);
|
|
11
|
+
const cached = cacheManager.get(fn, args);
|
|
12
|
+
if (cached) {
|
|
13
|
+
return {
|
|
14
|
+
ok: true,
|
|
15
|
+
isRetryable: true,
|
|
16
|
+
data: returnResult ? cached.data : undefined,
|
|
17
|
+
timestamp: new Date(cached.timestamp).toISOString(),
|
|
18
|
+
executionTime: 0,
|
|
19
|
+
fromCache: true
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
if (trialMode.enabled) {
|
|
25
|
+
const trialCondition = Math.random() <= (trialMode?.reqFailureProbability ?? 0);
|
|
26
|
+
if (trialCondition) {
|
|
27
|
+
console.error(`${formatLogContext(executionContext)}stable-request: Function execution failed in trial mode.\nFunction: ${fn.name || 'anonymous'}\nArgs:\n`, safelyStringify(args, maxSerializableChars));
|
|
28
|
+
throw new Error(`${formatLogContext(executionContext)}stable-request: Function execution failed in trial mode.`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
stopTime = Date.now();
|
|
32
|
+
return {
|
|
33
|
+
ok: true,
|
|
34
|
+
isRetryable: true,
|
|
35
|
+
data: returnResult ? { trialMode } : undefined,
|
|
36
|
+
timestamp,
|
|
37
|
+
executionTime: stopTime - startTime
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const result = await fn(...args);
|
|
42
|
+
stopTime = Date.now();
|
|
43
|
+
if (cacheManager) {
|
|
44
|
+
cacheManager.set(fn, args, result);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
ok: true,
|
|
48
|
+
isRetryable: true,
|
|
49
|
+
data: returnResult ? result : undefined,
|
|
50
|
+
timestamp,
|
|
51
|
+
executionTime: stopTime - startTime
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
stopTime = Date.now();
|
|
56
|
+
const executionTime = stopTime - startTime;
|
|
57
|
+
return {
|
|
58
|
+
ok: false,
|
|
59
|
+
isRetryable: true,
|
|
60
|
+
error: `${formatLogContext(executionContext)}stable-request: ${error.message || String(error)}`,
|
|
61
|
+
timestamp,
|
|
62
|
+
executionTime
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=fn-exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fn-exec.js","sourceRoot":"","sources":["../../src/utilities/fn-exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAwB,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAkD,EAClD,IAAW,EACX,YAAY,GAAG,KAAK,EACpB,oBAAoB,GAAG,IAAI,EAC3B,YAAgC,EAAE,OAAO,EAAE,KAAK,EAAE,EAClD,WAAiD,EACjD,gBAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,YAAY,GAAgC,IAAI,CAAC;IACrD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,YAAY,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;gBACnD,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CACX,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,uEAAuE,EAAE,CAAC,IAAI,IAAI,WAAW,WAAW,EAC7I,eAAe,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAC5C,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,0DAA0D,CAAC,CAAC;YACnH,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtB,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,WAAW,EAAE,IAAI;oBACjB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAS,CAAC,CAAC,CAAC,SAAS;oBACrD,SAAS;oBACT,aAAa,EAAE,QAAQ,GAAG,SAAS;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtB,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACvC,SAAS;YACT,aAAa,EAAE,QAAQ,GAAG,SAAS;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;QAE3C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,mBAAmB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YAC/F,SAAS;YACT,aAAa;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FunctionCacheConfig } from '../types/index.js';
|
|
2
|
+
export interface CachedFunctionResponse<T = any> {
|
|
3
|
+
data: T;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
expiresAt: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class FunctionCacheManager {
|
|
8
|
+
private cache;
|
|
9
|
+
private config;
|
|
10
|
+
private stats;
|
|
11
|
+
constructor(config: FunctionCacheConfig<any, any>);
|
|
12
|
+
private generateKey;
|
|
13
|
+
get<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs): CachedFunctionResponse<TReturn> | null;
|
|
14
|
+
set<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs, data: TReturn): void;
|
|
15
|
+
clear(): void;
|
|
16
|
+
getStats(): {
|
|
17
|
+
hits: number;
|
|
18
|
+
misses: number;
|
|
19
|
+
hitRate: number;
|
|
20
|
+
missRate: number;
|
|
21
|
+
sets: number;
|
|
22
|
+
evictions: number;
|
|
23
|
+
size: number;
|
|
24
|
+
maxSize: number;
|
|
25
|
+
averageGetTime: number;
|
|
26
|
+
averageSetTime: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function getGlobalFunctionCacheManager(config?: FunctionCacheConfig<any, any>): FunctionCacheManager;
|
|
30
|
+
//# sourceMappingURL=function-cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,GAAG;IAC7C,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAOX;gBAEU,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;IASjD,OAAO,CAAC,WAAW;IAWnB,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,GACV,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;IA0BzC,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,OAAO,GACZ,IAAI;IA4BP,KAAK,IAAI,IAAI;IAIb,QAAQ;;;;;;;;;;;;CAmBT;AAID,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAK1G"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
export class FunctionCacheManager {
|
|
3
|
+
cache;
|
|
4
|
+
config;
|
|
5
|
+
stats = {
|
|
6
|
+
hits: 0,
|
|
7
|
+
misses: 0,
|
|
8
|
+
sets: 0,
|
|
9
|
+
evictions: 0,
|
|
10
|
+
getTimes: [],
|
|
11
|
+
setTimes: []
|
|
12
|
+
};
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.cache = new Map();
|
|
15
|
+
this.config = {
|
|
16
|
+
ttl: 300000,
|
|
17
|
+
maxSize: 1000,
|
|
18
|
+
...config
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
generateKey(fn, args) {
|
|
22
|
+
if (this.config.keyGenerator) {
|
|
23
|
+
return this.config.keyGenerator(fn, args);
|
|
24
|
+
}
|
|
25
|
+
const fnName = fn.name || fn.toString();
|
|
26
|
+
const argsString = JSON.stringify(args);
|
|
27
|
+
const hash = crypto.createHash('md5').update(`${fnName}:${argsString}`).digest('hex');
|
|
28
|
+
return hash;
|
|
29
|
+
}
|
|
30
|
+
get(fn, args) {
|
|
31
|
+
const startTime = Date.now();
|
|
32
|
+
try {
|
|
33
|
+
const key = this.generateKey(fn, args);
|
|
34
|
+
const cached = this.cache.get(key);
|
|
35
|
+
if (!cached) {
|
|
36
|
+
this.stats.misses++;
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
if (now > cached.expiresAt) {
|
|
41
|
+
this.cache.delete(key);
|
|
42
|
+
this.stats.misses++;
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
this.stats.hits++;
|
|
46
|
+
return cached;
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
this.stats.getTimes.push(Date.now() - startTime);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
set(fn, args, data) {
|
|
53
|
+
const startTime = Date.now();
|
|
54
|
+
try {
|
|
55
|
+
const key = this.generateKey(fn, args);
|
|
56
|
+
const now = Date.now();
|
|
57
|
+
const ttl = this.config.ttl || 300000;
|
|
58
|
+
if (this.cache.size >= (this.config.maxSize || 1000) && !this.cache.has(key)) {
|
|
59
|
+
const firstKey = this.cache.keys().next().value;
|
|
60
|
+
if (firstKey) {
|
|
61
|
+
this.cache.delete(firstKey);
|
|
62
|
+
this.stats.evictions++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this.cache.set(key, {
|
|
66
|
+
data,
|
|
67
|
+
timestamp: now,
|
|
68
|
+
expiresAt: now + ttl
|
|
69
|
+
});
|
|
70
|
+
this.stats.sets++;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
this.stats.setTimes.push(Date.now() - startTime);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
clear() {
|
|
77
|
+
this.cache.clear();
|
|
78
|
+
}
|
|
79
|
+
getStats() {
|
|
80
|
+
const totalRequests = this.stats.hits + this.stats.misses;
|
|
81
|
+
return {
|
|
82
|
+
hits: this.stats.hits,
|
|
83
|
+
misses: this.stats.misses,
|
|
84
|
+
hitRate: totalRequests > 0 ? (this.stats.hits / totalRequests) * 100 : 0,
|
|
85
|
+
missRate: totalRequests > 0 ? (this.stats.misses / totalRequests) * 100 : 0,
|
|
86
|
+
sets: this.stats.sets,
|
|
87
|
+
evictions: this.stats.evictions,
|
|
88
|
+
size: this.cache.size,
|
|
89
|
+
maxSize: this.config.maxSize || 1000,
|
|
90
|
+
averageGetTime: this.stats.getTimes.length > 0
|
|
91
|
+
? this.stats.getTimes.reduce((a, b) => a + b, 0) / this.stats.getTimes.length
|
|
92
|
+
: 0,
|
|
93
|
+
averageSetTime: this.stats.setTimes.length > 0
|
|
94
|
+
? this.stats.setTimes.reduce((a, b) => a + b, 0) / this.stats.setTimes.length
|
|
95
|
+
: 0
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
let globalFunctionCacheManager = null;
|
|
100
|
+
export function getGlobalFunctionCacheManager(config) {
|
|
101
|
+
if (!globalFunctionCacheManager || config) {
|
|
102
|
+
globalFunctionCacheManager = new FunctionCacheManager(config || { enabled: true });
|
|
103
|
+
}
|
|
104
|
+
return globalFunctionCacheManager;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=function-cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-cache-manager.js","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
|
|
2
|
+
export { FunctionCacheManager, getGlobalFunctionCacheManager } from './function-cache-manager.js';
|
|
2
3
|
export { CircuitBreaker, CircuitBreakerOpenError, getGlobalCircuitBreaker, resetGlobalCircuitBreaker } from './circuit-breaker.js';
|
|
3
4
|
export { ConcurrencyLimiter, getGlobalConcurrencyLimiter, resetGlobalConcurrencyLimiter } from './concurrency-limiter.js';
|
|
4
5
|
export { delay } from './delay.js';
|
|
@@ -16,8 +17,11 @@ export { isRetryableError } from './is-retryable-error.js';
|
|
|
16
17
|
export { MetricsAggregator } from './metrics-aggregator.js';
|
|
17
18
|
export { prepareApiRequestData } from './prepare-api-request-data.js';
|
|
18
19
|
export { prepareApiRequestOptions } from './prepare-api-request-options.js';
|
|
20
|
+
export { prepareApiFunctionOptions } from './prepare-api-function-options.js';
|
|
21
|
+
export { executeGatewayItem, executeGatewayRequest, executeGatewayFunction } from './execute-gateway-item.js';
|
|
19
22
|
export { RateLimiter, getGlobalRateLimiter, resetGlobalRateLimiter } from './rate-limiter.js';
|
|
20
23
|
export { reqFn } from './req-fn.js';
|
|
24
|
+
export { fnExec } from './fn-exec.js';
|
|
21
25
|
export { safelyExecuteUnknownFunction } from './safely-execute-unknown-function.js';
|
|
22
26
|
export { safelyStringify } from './safely-stringify.js';
|
|
23
27
|
export { validateTrialModeProbabilities } from './validate-trial-mode-probabilities.js';
|