@upstash/workflow 0.2.19 → 0.2.21
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/astro.d.mts +2 -2
- package/astro.d.ts +2 -2
- package/astro.js +65 -16
- package/astro.mjs +2 -2
- package/{chunk-37XOXDLZ.mjs → chunk-NQDNC5P4.mjs} +64 -15
- package/cloudflare.d.mts +2 -2
- package/cloudflare.d.ts +2 -2
- package/cloudflare.js +64 -15
- package/cloudflare.mjs +1 -1
- package/express.d.mts +2 -2
- package/express.d.ts +2 -2
- package/express.js +64 -15
- package/express.mjs +1 -1
- package/h3.d.mts +2 -2
- package/h3.d.ts +2 -2
- package/h3.js +64 -15
- package/h3.mjs +1 -1
- package/hono.d.mts +2 -2
- package/hono.d.ts +2 -2
- package/hono.js +64 -15
- package/hono.mjs +1 -1
- package/index.d.mts +9 -2
- package/index.d.ts +9 -2
- package/index.js +66 -16
- package/index.mjs +3 -2
- package/nextjs.d.mts +2 -2
- package/nextjs.d.ts +2 -2
- package/nextjs.js +64 -15
- package/nextjs.mjs +1 -1
- package/package.json +1 -1
- package/{serve-many-CEUYWQvV.d.mts → serve-many-BNusWYgt.d.mts} +1 -1
- package/{serve-many-BObe3pdI.d.ts → serve-many-CXqQP3RI.d.ts} +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +64 -15
- package/solidjs.mjs +1 -1
- package/svelte.d.mts +2 -2
- package/svelte.d.ts +2 -2
- package/svelte.js +64 -15
- package/svelte.mjs +1 -1
- package/tanstack.d.mts +36 -0
- package/tanstack.d.ts +36 -0
- package/tanstack.js +3737 -0
- package/tanstack.mjs +48 -0
- package/{types-B7_5AkKQ.d.ts → types-Q3dM0UlR.d.mts} +21 -2
- package/{types-B7_5AkKQ.d.mts → types-Q3dM0UlR.d.ts} +21 -2
package/astro.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { APIContext, APIRoute } from 'astro';
|
|
2
|
-
import { g as WorkflowContext, n as PublicServeOptions,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { g as WorkflowContext, n as PublicServeOptions, y as InvokableWorkflow } from './types-Q3dM0UlR.mjs';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-BNusWYgt.mjs';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import 'ai';
|
package/astro.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { APIContext, APIRoute } from 'astro';
|
|
2
|
-
import { g as WorkflowContext, n as PublicServeOptions,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { g as WorkflowContext, n as PublicServeOptions, y as InvokableWorkflow } from './types-Q3dM0UlR.js';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-CXqQP3RI.js';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import 'ai';
|
package/astro.js
CHANGED
|
@@ -92,7 +92,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
92
92
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
93
93
|
var NO_CONCURRENCY = 1;
|
|
94
94
|
var DEFAULT_RETRIES = 3;
|
|
95
|
-
var VERSION = "v0.2.
|
|
95
|
+
var VERSION = "v0.2.21";
|
|
96
96
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
97
97
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
98
98
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -143,7 +143,8 @@ var WorkflowNonRetryableError = class extends WorkflowAbort {
|
|
|
143
143
|
var formatWorkflowError = (error) => {
|
|
144
144
|
return error instanceof Error ? {
|
|
145
145
|
error: error.name,
|
|
146
|
-
message: error.message
|
|
146
|
+
message: error.message,
|
|
147
|
+
stack: error.stack
|
|
147
148
|
} : {
|
|
148
149
|
error: "Error",
|
|
149
150
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
@@ -614,7 +615,15 @@ var triggerFirstInvocation = async (params) => {
|
|
|
614
615
|
const firstInvocationParams = Array.isArray(params) ? params : [params];
|
|
615
616
|
const workflowContextClient = firstInvocationParams[0].workflowContext.qstashClient;
|
|
616
617
|
const invocationBatch = firstInvocationParams.map(
|
|
617
|
-
({
|
|
618
|
+
({
|
|
619
|
+
workflowContext,
|
|
620
|
+
useJSONContent,
|
|
621
|
+
telemetry: telemetry2,
|
|
622
|
+
invokeCount,
|
|
623
|
+
delay,
|
|
624
|
+
notBefore,
|
|
625
|
+
keepTriggerConfig
|
|
626
|
+
}) => {
|
|
618
627
|
const { headers } = getHeaders({
|
|
619
628
|
initHeaderValue: "true",
|
|
620
629
|
workflowConfig: {
|
|
@@ -628,7 +637,8 @@ var triggerFirstInvocation = async (params) => {
|
|
|
628
637
|
useJSONContent: useJSONContent ?? false
|
|
629
638
|
},
|
|
630
639
|
invokeCount: invokeCount ?? 0,
|
|
631
|
-
userHeaders: workflowContext.headers
|
|
640
|
+
userHeaders: workflowContext.headers,
|
|
641
|
+
keepTriggerConfig
|
|
632
642
|
});
|
|
633
643
|
if (workflowContext.headers.get("content-type")) {
|
|
634
644
|
headers["content-type"] = workflowContext.headers.get("content-type");
|
|
@@ -1134,9 +1144,10 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1134
1144
|
retryDelay;
|
|
1135
1145
|
timeout;
|
|
1136
1146
|
flowControl;
|
|
1147
|
+
stringifyBody;
|
|
1137
1148
|
stepType = "Call";
|
|
1138
1149
|
allowUndefinedOut = false;
|
|
1139
|
-
constructor(stepName, url, method, body, headers, retries, retryDelay, timeout, flowControl) {
|
|
1150
|
+
constructor(stepName, url, method, body, headers, retries, retryDelay, timeout, flowControl, stringifyBody) {
|
|
1140
1151
|
super(stepName);
|
|
1141
1152
|
this.url = url;
|
|
1142
1153
|
this.method = method;
|
|
@@ -1146,6 +1157,7 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1146
1157
|
this.retryDelay = retryDelay;
|
|
1147
1158
|
this.timeout = timeout;
|
|
1148
1159
|
this.flowControl = flowControl;
|
|
1160
|
+
this.stringifyBody = stringifyBody;
|
|
1149
1161
|
}
|
|
1150
1162
|
getPlanStep(concurrent, targetStep) {
|
|
1151
1163
|
return {
|
|
@@ -1255,10 +1267,22 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1255
1267
|
};
|
|
1256
1268
|
}
|
|
1257
1269
|
async submitStep({ context, headers }) {
|
|
1270
|
+
let callBody;
|
|
1271
|
+
if (this.stringifyBody) {
|
|
1272
|
+
callBody = JSON.stringify(this.body);
|
|
1273
|
+
} else {
|
|
1274
|
+
if (typeof this.body === "string") {
|
|
1275
|
+
callBody = this.body;
|
|
1276
|
+
} else {
|
|
1277
|
+
throw new WorkflowError(
|
|
1278
|
+
"When stringifyBody is false, body must be a string. Please check the body type of your call step."
|
|
1279
|
+
);
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1258
1282
|
return await context.qstashClient.batch([
|
|
1259
1283
|
{
|
|
1260
1284
|
headers,
|
|
1261
|
-
body:
|
|
1285
|
+
body: callBody,
|
|
1262
1286
|
method: this.method,
|
|
1263
1287
|
url: this.url,
|
|
1264
1288
|
retries: DEFAULT_RETRIES === this.retries ? void 0 : this.retries,
|
|
@@ -1393,7 +1417,8 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1393
1417
|
workflowRunId,
|
|
1394
1418
|
retries,
|
|
1395
1419
|
retryDelay,
|
|
1396
|
-
flowControl
|
|
1420
|
+
flowControl,
|
|
1421
|
+
stringifyBody = true
|
|
1397
1422
|
}) {
|
|
1398
1423
|
super(stepName);
|
|
1399
1424
|
this.params = {
|
|
@@ -1403,7 +1428,8 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1403
1428
|
workflowRunId: getWorkflowRunId(workflowRunId),
|
|
1404
1429
|
retries,
|
|
1405
1430
|
retryDelay,
|
|
1406
|
-
flowControl
|
|
1431
|
+
flowControl,
|
|
1432
|
+
stringifyBody
|
|
1407
1433
|
};
|
|
1408
1434
|
const { workflowId } = workflow;
|
|
1409
1435
|
if (!workflowId) {
|
|
@@ -1456,8 +1482,20 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1456
1482
|
invokeCount
|
|
1457
1483
|
});
|
|
1458
1484
|
invokerHeaders["Upstash-Workflow-Runid"] = context.workflowRunId;
|
|
1485
|
+
let invokeBody;
|
|
1486
|
+
if (this.params.stringifyBody) {
|
|
1487
|
+
invokeBody = JSON.stringify(this.params.body);
|
|
1488
|
+
} else {
|
|
1489
|
+
if (typeof this.params.body === "string") {
|
|
1490
|
+
invokeBody = this.params.body;
|
|
1491
|
+
} else {
|
|
1492
|
+
throw new WorkflowError(
|
|
1493
|
+
"When stringifyBody is false, body must be a string. Please check the body type of your invoke step."
|
|
1494
|
+
);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1459
1497
|
const request = {
|
|
1460
|
-
body:
|
|
1498
|
+
body: invokeBody,
|
|
1461
1499
|
headers: Object.fromEntries(
|
|
1462
1500
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1463
1501
|
),
|
|
@@ -1537,12 +1575,14 @@ var WorkflowHeaders = class {
|
|
|
1537
1575
|
initHeaderValue;
|
|
1538
1576
|
stepInfo;
|
|
1539
1577
|
headers;
|
|
1578
|
+
keepTriggerConfig;
|
|
1540
1579
|
constructor({
|
|
1541
1580
|
userHeaders,
|
|
1542
1581
|
workflowConfig,
|
|
1543
1582
|
invokeCount,
|
|
1544
1583
|
initHeaderValue,
|
|
1545
|
-
stepInfo
|
|
1584
|
+
stepInfo,
|
|
1585
|
+
keepTriggerConfig
|
|
1546
1586
|
}) {
|
|
1547
1587
|
this.userHeaders = userHeaders;
|
|
1548
1588
|
this.workflowConfig = workflowConfig;
|
|
@@ -1554,6 +1594,7 @@ var WorkflowHeaders = class {
|
|
|
1554
1594
|
workflowHeaders: {},
|
|
1555
1595
|
failureHeaders: {}
|
|
1556
1596
|
};
|
|
1597
|
+
this.keepTriggerConfig = keepTriggerConfig;
|
|
1557
1598
|
}
|
|
1558
1599
|
getHeaders() {
|
|
1559
1600
|
this.addBaseHeaders();
|
|
@@ -1572,7 +1613,7 @@ var WorkflowHeaders = class {
|
|
|
1572
1613
|
[WORKFLOW_INIT_HEADER]: this.initHeaderValue,
|
|
1573
1614
|
[WORKFLOW_ID_HEADER]: this.workflowConfig.workflowRunId,
|
|
1574
1615
|
[WORKFLOW_URL_HEADER]: this.workflowConfig.workflowUrl,
|
|
1575
|
-
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody,WF_DetectTrigger",
|
|
1616
|
+
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody,WF_DetectTrigger" + (this.keepTriggerConfig ? ",WF_TriggerOnConfig" : ""),
|
|
1576
1617
|
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
1577
1618
|
...this.workflowConfig.telemetry ? getTelemetryHeaders(this.workflowConfig.telemetry) : {},
|
|
1578
1619
|
...this.workflowConfig.telemetry && this.stepInfo?.lazyStep instanceof LazyCallStep && this.stepInfo.lazyStep.headers[AGENT_NAME_HEADER] ? { [TELEMETRY_HEADER_AGENT]: "true" } : {}
|
|
@@ -2901,7 +2942,8 @@ var WorkflowContext = class {
|
|
|
2901
2942
|
settings.retries || 0,
|
|
2902
2943
|
settings.retryDelay,
|
|
2903
2944
|
settings.timeout,
|
|
2904
|
-
settings.flowControl ?? settings.workflow.options.flowControl
|
|
2945
|
+
settings.flowControl ?? settings.workflow.options.flowControl,
|
|
2946
|
+
settings.stringifyBody ?? true
|
|
2905
2947
|
);
|
|
2906
2948
|
} else {
|
|
2907
2949
|
const {
|
|
@@ -2912,7 +2954,8 @@ var WorkflowContext = class {
|
|
|
2912
2954
|
retries = 0,
|
|
2913
2955
|
retryDelay,
|
|
2914
2956
|
timeout,
|
|
2915
|
-
flowControl
|
|
2957
|
+
flowControl,
|
|
2958
|
+
stringifyBody = true
|
|
2916
2959
|
} = settings;
|
|
2917
2960
|
callStep = new LazyCallStep(
|
|
2918
2961
|
stepName,
|
|
@@ -2923,7 +2966,8 @@ var WorkflowContext = class {
|
|
|
2923
2966
|
retries,
|
|
2924
2967
|
retryDelay,
|
|
2925
2968
|
timeout,
|
|
2926
|
-
flowControl
|
|
2969
|
+
flowControl,
|
|
2970
|
+
stringifyBody
|
|
2927
2971
|
);
|
|
2928
2972
|
}
|
|
2929
2973
|
return await this.addStep(callStep);
|
|
@@ -3287,11 +3331,15 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
3287
3331
|
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(requestPayload);
|
|
3288
3332
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3289
3333
|
let errorMessage = "";
|
|
3334
|
+
let failStack = "";
|
|
3290
3335
|
try {
|
|
3291
3336
|
const errorPayload = JSON.parse(decodedBody);
|
|
3292
3337
|
if (errorPayload.message) {
|
|
3293
3338
|
errorMessage = errorPayload.message;
|
|
3294
3339
|
}
|
|
3340
|
+
if (errorPayload.stack) {
|
|
3341
|
+
failStack = errorPayload.stack;
|
|
3342
|
+
}
|
|
3295
3343
|
} catch {
|
|
3296
3344
|
}
|
|
3297
3345
|
if (!errorMessage) {
|
|
@@ -3329,7 +3377,8 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
3329
3377
|
context: workflowContext,
|
|
3330
3378
|
failStatus: status,
|
|
3331
3379
|
failResponse: errorMessage,
|
|
3332
|
-
failHeaders: header
|
|
3380
|
+
failHeaders: header,
|
|
3381
|
+
failStack
|
|
3333
3382
|
});
|
|
3334
3383
|
return ok({ result: "is-failure-callback", response: failureResponse });
|
|
3335
3384
|
} catch (error) {
|
|
@@ -3664,7 +3713,7 @@ var createWorkflow = (...params) => {
|
|
|
3664
3713
|
const [routeFunction, options = {}] = params;
|
|
3665
3714
|
return {
|
|
3666
3715
|
workflowId: void 0,
|
|
3667
|
-
// @ts-expect-error because astro route function has another
|
|
3716
|
+
// @ts-expect-error because astro route function has another parameter,
|
|
3668
3717
|
// the RouteFunction type can't cover this. We need to make RouteFunction
|
|
3669
3718
|
// accept more variables than simply the context. Until then, ignoring the
|
|
3670
3719
|
// error here. Tested the usage in astro project and it's fine. TODO.
|
package/astro.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SDK_TELEMETRY,
|
|
3
3
|
serveBase,
|
|
4
4
|
serveManyBase
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NQDNC5P4.mjs";
|
|
6
6
|
|
|
7
7
|
// platforms/astro.ts
|
|
8
8
|
var telemetry = {
|
|
@@ -25,7 +25,7 @@ var createWorkflow = (...params) => {
|
|
|
25
25
|
const [routeFunction, options = {}] = params;
|
|
26
26
|
return {
|
|
27
27
|
workflowId: void 0,
|
|
28
|
-
// @ts-expect-error because astro route function has another
|
|
28
|
+
// @ts-expect-error because astro route function has another parameter,
|
|
29
29
|
// the RouteFunction type can't cover this. We need to make RouteFunction
|
|
30
30
|
// accept more variables than simply the context. Until then, ignoring the
|
|
31
31
|
// error here. Tested the usage in astro project and it's fine. TODO.
|
|
@@ -43,7 +43,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
43
43
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
44
44
|
var NO_CONCURRENCY = 1;
|
|
45
45
|
var DEFAULT_RETRIES = 3;
|
|
46
|
-
var VERSION = "v0.2.
|
|
46
|
+
var VERSION = "v0.2.21";
|
|
47
47
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
48
48
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
49
49
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -94,7 +94,8 @@ var WorkflowNonRetryableError = class extends WorkflowAbort {
|
|
|
94
94
|
var formatWorkflowError = (error) => {
|
|
95
95
|
return error instanceof Error ? {
|
|
96
96
|
error: error.name,
|
|
97
|
-
message: error.message
|
|
97
|
+
message: error.message,
|
|
98
|
+
stack: error.stack
|
|
98
99
|
} : {
|
|
99
100
|
error: "Error",
|
|
100
101
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
@@ -831,7 +832,15 @@ var triggerFirstInvocation = async (params) => {
|
|
|
831
832
|
const firstInvocationParams = Array.isArray(params) ? params : [params];
|
|
832
833
|
const workflowContextClient = firstInvocationParams[0].workflowContext.qstashClient;
|
|
833
834
|
const invocationBatch = firstInvocationParams.map(
|
|
834
|
-
({
|
|
835
|
+
({
|
|
836
|
+
workflowContext,
|
|
837
|
+
useJSONContent,
|
|
838
|
+
telemetry,
|
|
839
|
+
invokeCount,
|
|
840
|
+
delay,
|
|
841
|
+
notBefore,
|
|
842
|
+
keepTriggerConfig
|
|
843
|
+
}) => {
|
|
835
844
|
const { headers } = getHeaders({
|
|
836
845
|
initHeaderValue: "true",
|
|
837
846
|
workflowConfig: {
|
|
@@ -845,7 +854,8 @@ var triggerFirstInvocation = async (params) => {
|
|
|
845
854
|
useJSONContent: useJSONContent ?? false
|
|
846
855
|
},
|
|
847
856
|
invokeCount: invokeCount ?? 0,
|
|
848
|
-
userHeaders: workflowContext.headers
|
|
857
|
+
userHeaders: workflowContext.headers,
|
|
858
|
+
keepTriggerConfig
|
|
849
859
|
});
|
|
850
860
|
if (workflowContext.headers.get("content-type")) {
|
|
851
861
|
headers["content-type"] = workflowContext.headers.get("content-type");
|
|
@@ -1351,9 +1361,10 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1351
1361
|
retryDelay;
|
|
1352
1362
|
timeout;
|
|
1353
1363
|
flowControl;
|
|
1364
|
+
stringifyBody;
|
|
1354
1365
|
stepType = "Call";
|
|
1355
1366
|
allowUndefinedOut = false;
|
|
1356
|
-
constructor(stepName, url, method, body, headers, retries, retryDelay, timeout, flowControl) {
|
|
1367
|
+
constructor(stepName, url, method, body, headers, retries, retryDelay, timeout, flowControl, stringifyBody) {
|
|
1357
1368
|
super(stepName);
|
|
1358
1369
|
this.url = url;
|
|
1359
1370
|
this.method = method;
|
|
@@ -1363,6 +1374,7 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1363
1374
|
this.retryDelay = retryDelay;
|
|
1364
1375
|
this.timeout = timeout;
|
|
1365
1376
|
this.flowControl = flowControl;
|
|
1377
|
+
this.stringifyBody = stringifyBody;
|
|
1366
1378
|
}
|
|
1367
1379
|
getPlanStep(concurrent, targetStep) {
|
|
1368
1380
|
return {
|
|
@@ -1472,10 +1484,22 @@ var LazyCallStep = class _LazyCallStep extends BaseLazyStep {
|
|
|
1472
1484
|
};
|
|
1473
1485
|
}
|
|
1474
1486
|
async submitStep({ context, headers }) {
|
|
1487
|
+
let callBody;
|
|
1488
|
+
if (this.stringifyBody) {
|
|
1489
|
+
callBody = JSON.stringify(this.body);
|
|
1490
|
+
} else {
|
|
1491
|
+
if (typeof this.body === "string") {
|
|
1492
|
+
callBody = this.body;
|
|
1493
|
+
} else {
|
|
1494
|
+
throw new WorkflowError(
|
|
1495
|
+
"When stringifyBody is false, body must be a string. Please check the body type of your call step."
|
|
1496
|
+
);
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1475
1499
|
return await context.qstashClient.batch([
|
|
1476
1500
|
{
|
|
1477
1501
|
headers,
|
|
1478
|
-
body:
|
|
1502
|
+
body: callBody,
|
|
1479
1503
|
method: this.method,
|
|
1480
1504
|
url: this.url,
|
|
1481
1505
|
retries: DEFAULT_RETRIES === this.retries ? void 0 : this.retries,
|
|
@@ -1610,7 +1634,8 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1610
1634
|
workflowRunId,
|
|
1611
1635
|
retries,
|
|
1612
1636
|
retryDelay,
|
|
1613
|
-
flowControl
|
|
1637
|
+
flowControl,
|
|
1638
|
+
stringifyBody = true
|
|
1614
1639
|
}) {
|
|
1615
1640
|
super(stepName);
|
|
1616
1641
|
this.params = {
|
|
@@ -1620,7 +1645,8 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1620
1645
|
workflowRunId: getWorkflowRunId(workflowRunId),
|
|
1621
1646
|
retries,
|
|
1622
1647
|
retryDelay,
|
|
1623
|
-
flowControl
|
|
1648
|
+
flowControl,
|
|
1649
|
+
stringifyBody
|
|
1624
1650
|
};
|
|
1625
1651
|
const { workflowId } = workflow;
|
|
1626
1652
|
if (!workflowId) {
|
|
@@ -1673,8 +1699,20 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1673
1699
|
invokeCount
|
|
1674
1700
|
});
|
|
1675
1701
|
invokerHeaders["Upstash-Workflow-Runid"] = context.workflowRunId;
|
|
1702
|
+
let invokeBody;
|
|
1703
|
+
if (this.params.stringifyBody) {
|
|
1704
|
+
invokeBody = JSON.stringify(this.params.body);
|
|
1705
|
+
} else {
|
|
1706
|
+
if (typeof this.params.body === "string") {
|
|
1707
|
+
invokeBody = this.params.body;
|
|
1708
|
+
} else {
|
|
1709
|
+
throw new WorkflowError(
|
|
1710
|
+
"When stringifyBody is false, body must be a string. Please check the body type of your invoke step."
|
|
1711
|
+
);
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1676
1714
|
const request = {
|
|
1677
|
-
body:
|
|
1715
|
+
body: invokeBody,
|
|
1678
1716
|
headers: Object.fromEntries(
|
|
1679
1717
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1680
1718
|
),
|
|
@@ -1740,12 +1778,14 @@ var WorkflowHeaders = class {
|
|
|
1740
1778
|
initHeaderValue;
|
|
1741
1779
|
stepInfo;
|
|
1742
1780
|
headers;
|
|
1781
|
+
keepTriggerConfig;
|
|
1743
1782
|
constructor({
|
|
1744
1783
|
userHeaders,
|
|
1745
1784
|
workflowConfig,
|
|
1746
1785
|
invokeCount,
|
|
1747
1786
|
initHeaderValue,
|
|
1748
|
-
stepInfo
|
|
1787
|
+
stepInfo,
|
|
1788
|
+
keepTriggerConfig
|
|
1749
1789
|
}) {
|
|
1750
1790
|
this.userHeaders = userHeaders;
|
|
1751
1791
|
this.workflowConfig = workflowConfig;
|
|
@@ -1757,6 +1797,7 @@ var WorkflowHeaders = class {
|
|
|
1757
1797
|
workflowHeaders: {},
|
|
1758
1798
|
failureHeaders: {}
|
|
1759
1799
|
};
|
|
1800
|
+
this.keepTriggerConfig = keepTriggerConfig;
|
|
1760
1801
|
}
|
|
1761
1802
|
getHeaders() {
|
|
1762
1803
|
this.addBaseHeaders();
|
|
@@ -1775,7 +1816,7 @@ var WorkflowHeaders = class {
|
|
|
1775
1816
|
[WORKFLOW_INIT_HEADER]: this.initHeaderValue,
|
|
1776
1817
|
[WORKFLOW_ID_HEADER]: this.workflowConfig.workflowRunId,
|
|
1777
1818
|
[WORKFLOW_URL_HEADER]: this.workflowConfig.workflowUrl,
|
|
1778
|
-
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody,WF_DetectTrigger",
|
|
1819
|
+
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody,WF_DetectTrigger" + (this.keepTriggerConfig ? ",WF_TriggerOnConfig" : ""),
|
|
1779
1820
|
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
1780
1821
|
...this.workflowConfig.telemetry ? getTelemetryHeaders(this.workflowConfig.telemetry) : {},
|
|
1781
1822
|
...this.workflowConfig.telemetry && this.stepInfo?.lazyStep instanceof LazyCallStep && this.stepInfo.lazyStep.headers[AGENT_NAME_HEADER] ? { [TELEMETRY_HEADER_AGENT]: "true" } : {}
|
|
@@ -2945,7 +2986,8 @@ var WorkflowContext = class {
|
|
|
2945
2986
|
settings.retries || 0,
|
|
2946
2987
|
settings.retryDelay,
|
|
2947
2988
|
settings.timeout,
|
|
2948
|
-
settings.flowControl ?? settings.workflow.options.flowControl
|
|
2989
|
+
settings.flowControl ?? settings.workflow.options.flowControl,
|
|
2990
|
+
settings.stringifyBody ?? true
|
|
2949
2991
|
);
|
|
2950
2992
|
} else {
|
|
2951
2993
|
const {
|
|
@@ -2956,7 +2998,8 @@ var WorkflowContext = class {
|
|
|
2956
2998
|
retries = 0,
|
|
2957
2999
|
retryDelay,
|
|
2958
3000
|
timeout,
|
|
2959
|
-
flowControl
|
|
3001
|
+
flowControl,
|
|
3002
|
+
stringifyBody = true
|
|
2960
3003
|
} = settings;
|
|
2961
3004
|
callStep = new LazyCallStep(
|
|
2962
3005
|
stepName,
|
|
@@ -2967,7 +3010,8 @@ var WorkflowContext = class {
|
|
|
2967
3010
|
retries,
|
|
2968
3011
|
retryDelay,
|
|
2969
3012
|
timeout,
|
|
2970
|
-
flowControl
|
|
3013
|
+
flowControl,
|
|
3014
|
+
stringifyBody
|
|
2971
3015
|
);
|
|
2972
3016
|
}
|
|
2973
3017
|
return await this.addStep(callStep);
|
|
@@ -3331,11 +3375,15 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
3331
3375
|
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(requestPayload);
|
|
3332
3376
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3333
3377
|
let errorMessage = "";
|
|
3378
|
+
let failStack = "";
|
|
3334
3379
|
try {
|
|
3335
3380
|
const errorPayload = JSON.parse(decodedBody);
|
|
3336
3381
|
if (errorPayload.message) {
|
|
3337
3382
|
errorMessage = errorPayload.message;
|
|
3338
3383
|
}
|
|
3384
|
+
if (errorPayload.stack) {
|
|
3385
|
+
failStack = errorPayload.stack;
|
|
3386
|
+
}
|
|
3339
3387
|
} catch {
|
|
3340
3388
|
}
|
|
3341
3389
|
if (!errorMessage) {
|
|
@@ -3373,7 +3421,8 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
3373
3421
|
context: workflowContext,
|
|
3374
3422
|
failStatus: status,
|
|
3375
3423
|
failResponse: errorMessage,
|
|
3376
|
-
failHeaders: header
|
|
3424
|
+
failHeaders: header,
|
|
3425
|
+
failStack
|
|
3377
3426
|
});
|
|
3378
3427
|
return ok({ result: "is-failure-callback", response: failureResponse });
|
|
3379
3428
|
} catch (error) {
|
package/cloudflare.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteFunction, n as PublicServeOptions,
|
|
2
|
-
import { s as serveManyBase } from './serve-many-
|
|
1
|
+
import { R as RouteFunction, n as PublicServeOptions, y as InvokableWorkflow } from './types-Q3dM0UlR.mjs';
|
|
2
|
+
import { s as serveManyBase } from './serve-many-BNusWYgt.mjs';
|
|
3
3
|
import '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import 'ai';
|
package/cloudflare.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteFunction, n as PublicServeOptions,
|
|
2
|
-
import { s as serveManyBase } from './serve-many-
|
|
1
|
+
import { R as RouteFunction, n as PublicServeOptions, y as InvokableWorkflow } from './types-Q3dM0UlR.js';
|
|
2
|
+
import { s as serveManyBase } from './serve-many-CXqQP3RI.js';
|
|
3
3
|
import '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import 'ai';
|