@upstash/workflow 1.3.1 → 1.3.2-rc
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.js +31 -4
- package/astro.mjs +1 -1
- package/{chunk-CWCCIOXR.mjs → chunk-ICDNN4UW.mjs} +31 -4
- package/cloudflare.js +31 -4
- package/cloudflare.mjs +1 -1
- package/express.js +31 -4
- package/express.mjs +1 -1
- package/h3.js +31 -4
- package/h3.mjs +1 -1
- package/hono.js +31 -4
- package/hono.mjs +1 -1
- package/index.d.mts +19 -2
- package/index.d.ts +19 -2
- package/index.js +31 -4
- package/index.mjs +1 -1
- package/nextjs.js +31 -4
- package/nextjs.mjs +1 -1
- package/package.json +1 -1
- package/react-router.js +31 -4
- package/react-router.mjs +1 -1
- package/solidjs.js +31 -4
- package/solidjs.mjs +1 -1
- package/svelte.js +31 -4
- package/svelte.mjs +1 -1
- package/tanstack.js +31 -4
- package/tanstack.mjs +1 -1
package/astro.js
CHANGED
|
@@ -103,6 +103,22 @@ var formatWorkflowError = (error) => {
|
|
|
103
103
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
+
var attachStepNameToError = (error, stepName) => {
|
|
107
|
+
if (typeof error !== "object" || error === null) return;
|
|
108
|
+
if ("errorStepName" in error) return;
|
|
109
|
+
if (!Object.isExtensible(error)) return;
|
|
110
|
+
try {
|
|
111
|
+
error.errorStepName = stepName;
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var getStepNameFromError = (error) => {
|
|
116
|
+
if (typeof error === "object" && error !== null) {
|
|
117
|
+
const stepName = error.errorStepName;
|
|
118
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
119
|
+
}
|
|
120
|
+
return void 0;
|
|
121
|
+
};
|
|
106
122
|
function getConstructorName(obj) {
|
|
107
123
|
if (obj === null || obj === void 0) {
|
|
108
124
|
return null;
|
|
@@ -196,12 +212,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
196
212
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
197
213
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
198
214
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
215
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
199
216
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
200
217
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
201
218
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
202
219
|
var NO_CONCURRENCY = 1;
|
|
203
220
|
var DEFAULT_RETRIES = 3;
|
|
204
|
-
var VERSION = "v1.2
|
|
221
|
+
var VERSION = "v1.3.2";
|
|
205
222
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
206
223
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
207
224
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/astro.mjs
CHANGED
|
@@ -72,6 +72,22 @@ var formatWorkflowError = (error) => {
|
|
|
72
72
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
73
73
|
};
|
|
74
74
|
};
|
|
75
|
+
var attachStepNameToError = (error, stepName) => {
|
|
76
|
+
if (typeof error !== "object" || error === null) return;
|
|
77
|
+
if ("errorStepName" in error) return;
|
|
78
|
+
if (!Object.isExtensible(error)) return;
|
|
79
|
+
try {
|
|
80
|
+
error.errorStepName = stepName;
|
|
81
|
+
} catch {
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
var getStepNameFromError = (error) => {
|
|
85
|
+
if (typeof error === "object" && error !== null) {
|
|
86
|
+
const stepName = error.errorStepName;
|
|
87
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
88
|
+
}
|
|
89
|
+
return void 0;
|
|
90
|
+
};
|
|
75
91
|
function getConstructorName(obj) {
|
|
76
92
|
if (obj === null || obj === void 0) {
|
|
77
93
|
return null;
|
|
@@ -107,12 +123,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
107
123
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
108
124
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
109
125
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
126
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
110
127
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
111
128
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
112
129
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
113
130
|
var NO_CONCURRENCY = 1;
|
|
114
131
|
var DEFAULT_RETRIES = 3;
|
|
115
|
-
var VERSION = "v1.2
|
|
132
|
+
var VERSION = "v1.3.2";
|
|
116
133
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
117
134
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
118
135
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -2036,7 +2053,13 @@ var submitSingleStep = async ({
|
|
|
2036
2053
|
await dispatchLifecycle("beforeExecution", {
|
|
2037
2054
|
stepName: lazyStep.stepName
|
|
2038
2055
|
});
|
|
2039
|
-
|
|
2056
|
+
let resultStep;
|
|
2057
|
+
try {
|
|
2058
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
2059
|
+
} catch (error) {
|
|
2060
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
2061
|
+
throw error;
|
|
2062
|
+
}
|
|
2040
2063
|
const { headers } = lazyStep.getHeaders({
|
|
2041
2064
|
context,
|
|
2042
2065
|
step: resultStep,
|
|
@@ -2259,9 +2282,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2259
2282
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, QstashError5) && error.status === 400 || isInstanceOf(error, QstashError5) && error.status === 412) {
|
|
2260
2283
|
throw error;
|
|
2261
2284
|
}
|
|
2262
|
-
|
|
2285
|
+
const wrappedError = new WorkflowError(
|
|
2263
2286
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2264
2287
|
);
|
|
2288
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2289
|
+
throw wrappedError;
|
|
2265
2290
|
}
|
|
2266
2291
|
break;
|
|
2267
2292
|
}
|
|
@@ -3931,10 +3956,12 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3931
3956
|
await middlewareManager.dispatchDebug("onError", {
|
|
3932
3957
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3933
3958
|
});
|
|
3959
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3934
3960
|
return new Response(JSON.stringify(formattedError), {
|
|
3935
3961
|
status: 500,
|
|
3936
3962
|
headers: {
|
|
3937
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3963
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3964
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3938
3965
|
}
|
|
3939
3966
|
});
|
|
3940
3967
|
}
|
package/cloudflare.js
CHANGED
|
@@ -39,12 +39,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
39
39
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
40
40
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
41
41
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
42
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
42
43
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
43
44
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
44
45
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
45
46
|
var NO_CONCURRENCY = 1;
|
|
46
47
|
var DEFAULT_RETRIES = 3;
|
|
47
|
-
var VERSION = "v1.2
|
|
48
|
+
var VERSION = "v1.3.2";
|
|
48
49
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
49
50
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
50
51
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -127,6 +128,22 @@ var formatWorkflowError = (error) => {
|
|
|
127
128
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
128
129
|
};
|
|
129
130
|
};
|
|
131
|
+
var attachStepNameToError = (error, stepName) => {
|
|
132
|
+
if (typeof error !== "object" || error === null) return;
|
|
133
|
+
if ("errorStepName" in error) return;
|
|
134
|
+
if (!Object.isExtensible(error)) return;
|
|
135
|
+
try {
|
|
136
|
+
error.errorStepName = stepName;
|
|
137
|
+
} catch {
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
var getStepNameFromError = (error) => {
|
|
141
|
+
if (typeof error === "object" && error !== null) {
|
|
142
|
+
const stepName = error.errorStepName;
|
|
143
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
144
|
+
}
|
|
145
|
+
return void 0;
|
|
146
|
+
};
|
|
130
147
|
function getConstructorName(obj) {
|
|
131
148
|
if (obj === null || obj === void 0) {
|
|
132
149
|
return null;
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/cloudflare.mjs
CHANGED
package/express.js
CHANGED
|
@@ -39,12 +39,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
39
39
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
40
40
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
41
41
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
42
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
42
43
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
43
44
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
44
45
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
45
46
|
var NO_CONCURRENCY = 1;
|
|
46
47
|
var DEFAULT_RETRIES = 3;
|
|
47
|
-
var VERSION = "v1.2
|
|
48
|
+
var VERSION = "v1.3.2";
|
|
48
49
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
49
50
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
50
51
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -127,6 +128,22 @@ var formatWorkflowError = (error) => {
|
|
|
127
128
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
128
129
|
};
|
|
129
130
|
};
|
|
131
|
+
var attachStepNameToError = (error, stepName) => {
|
|
132
|
+
if (typeof error !== "object" || error === null) return;
|
|
133
|
+
if ("errorStepName" in error) return;
|
|
134
|
+
if (!Object.isExtensible(error)) return;
|
|
135
|
+
try {
|
|
136
|
+
error.errorStepName = stepName;
|
|
137
|
+
} catch {
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
var getStepNameFromError = (error) => {
|
|
141
|
+
if (typeof error === "object" && error !== null) {
|
|
142
|
+
const stepName = error.errorStepName;
|
|
143
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
144
|
+
}
|
|
145
|
+
return void 0;
|
|
146
|
+
};
|
|
130
147
|
function getConstructorName(obj) {
|
|
131
148
|
if (obj === null || obj === void 0) {
|
|
132
149
|
return null;
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/express.mjs
CHANGED
package/h3.js
CHANGED
|
@@ -412,6 +412,22 @@ var formatWorkflowError = (error) => {
|
|
|
412
412
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
413
413
|
};
|
|
414
414
|
};
|
|
415
|
+
var attachStepNameToError = (error, stepName) => {
|
|
416
|
+
if (typeof error !== "object" || error === null) return;
|
|
417
|
+
if ("errorStepName" in error) return;
|
|
418
|
+
if (!Object.isExtensible(error)) return;
|
|
419
|
+
try {
|
|
420
|
+
error.errorStepName = stepName;
|
|
421
|
+
} catch {
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
var getStepNameFromError = (error) => {
|
|
425
|
+
if (typeof error === "object" && error !== null) {
|
|
426
|
+
const stepName = error.errorStepName;
|
|
427
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
428
|
+
}
|
|
429
|
+
return void 0;
|
|
430
|
+
};
|
|
415
431
|
function getConstructorName(obj) {
|
|
416
432
|
if (obj === null || obj === void 0) {
|
|
417
433
|
return null;
|
|
@@ -505,12 +521,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
505
521
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
506
522
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
507
523
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
524
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
508
525
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
509
526
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
510
527
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
511
528
|
var NO_CONCURRENCY = 1;
|
|
512
529
|
var DEFAULT_RETRIES = 3;
|
|
513
|
-
var VERSION = "v1.2
|
|
530
|
+
var VERSION = "v1.3.2";
|
|
514
531
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
515
532
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
516
533
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -2233,7 +2250,13 @@ var submitSingleStep = async ({
|
|
|
2233
2250
|
await dispatchLifecycle("beforeExecution", {
|
|
2234
2251
|
stepName: lazyStep.stepName
|
|
2235
2252
|
});
|
|
2236
|
-
|
|
2253
|
+
let resultStep;
|
|
2254
|
+
try {
|
|
2255
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
2256
|
+
} catch (error) {
|
|
2257
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
2258
|
+
throw error;
|
|
2259
|
+
}
|
|
2237
2260
|
const { headers } = lazyStep.getHeaders({
|
|
2238
2261
|
context,
|
|
2239
2262
|
step: resultStep,
|
|
@@ -2456,9 +2479,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2456
2479
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2457
2480
|
throw error;
|
|
2458
2481
|
}
|
|
2459
|
-
|
|
2482
|
+
const wrappedError = new WorkflowError(
|
|
2460
2483
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2461
2484
|
);
|
|
2485
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2486
|
+
throw wrappedError;
|
|
2462
2487
|
}
|
|
2463
2488
|
break;
|
|
2464
2489
|
}
|
|
@@ -4203,10 +4228,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
4203
4228
|
await middlewareManager.dispatchDebug("onError", {
|
|
4204
4229
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
4205
4230
|
});
|
|
4231
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
4206
4232
|
return new Response(JSON.stringify(formattedError), {
|
|
4207
4233
|
status: 500,
|
|
4208
4234
|
headers: {
|
|
4209
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
4235
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
4236
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
4210
4237
|
}
|
|
4211
4238
|
});
|
|
4212
4239
|
}
|
package/h3.mjs
CHANGED
package/hono.js
CHANGED
|
@@ -103,6 +103,22 @@ var formatWorkflowError = (error) => {
|
|
|
103
103
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
+
var attachStepNameToError = (error, stepName) => {
|
|
107
|
+
if (typeof error !== "object" || error === null) return;
|
|
108
|
+
if ("errorStepName" in error) return;
|
|
109
|
+
if (!Object.isExtensible(error)) return;
|
|
110
|
+
try {
|
|
111
|
+
error.errorStepName = stepName;
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var getStepNameFromError = (error) => {
|
|
116
|
+
if (typeof error === "object" && error !== null) {
|
|
117
|
+
const stepName = error.errorStepName;
|
|
118
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
119
|
+
}
|
|
120
|
+
return void 0;
|
|
121
|
+
};
|
|
106
122
|
function getConstructorName(obj) {
|
|
107
123
|
if (obj === null || obj === void 0) {
|
|
108
124
|
return null;
|
|
@@ -196,12 +212,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
196
212
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
197
213
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
198
214
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
215
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
199
216
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
200
217
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
201
218
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
202
219
|
var NO_CONCURRENCY = 1;
|
|
203
220
|
var DEFAULT_RETRIES = 3;
|
|
204
|
-
var VERSION = "v1.2
|
|
221
|
+
var VERSION = "v1.3.2";
|
|
205
222
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
206
223
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
207
224
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/hono.mjs
CHANGED
package/index.d.mts
CHANGED
|
@@ -183,6 +183,13 @@ type StepLogGroup = {
|
|
|
183
183
|
*/
|
|
184
184
|
steps: {
|
|
185
185
|
messageId: string;
|
|
186
|
+
/**
|
|
187
|
+
* name of the step being run.
|
|
188
|
+
*
|
|
189
|
+
* only available when the SDK reported it while the step was failing
|
|
190
|
+
* (via the `Upstash-Error-Step-Name` response header).
|
|
191
|
+
*/
|
|
192
|
+
stepName?: string;
|
|
186
193
|
state: "STEP_PROGRESS" | "STEP_RETRY" | "STEP_FAILED" | "STEP_CANCELED";
|
|
187
194
|
/**
|
|
188
195
|
* retries
|
|
@@ -247,6 +254,7 @@ type FailureFunctionLog = {
|
|
|
247
254
|
* Status code of the response from the failure function
|
|
248
255
|
*/
|
|
249
256
|
responseStatus?: number;
|
|
257
|
+
nextDeliveryTime?: number;
|
|
250
258
|
};
|
|
251
259
|
type WorkflowRunLog = {
|
|
252
260
|
/**
|
|
@@ -683,11 +691,20 @@ type DLQMessage = {
|
|
|
683
691
|
*/
|
|
684
692
|
failureCallbackInfo?: FailureCallbackInfo;
|
|
685
693
|
/**
|
|
686
|
-
*
|
|
694
|
+
* Label passed when triggering the workflow run.
|
|
695
|
+
*
|
|
696
|
+
* @deprecated Use `labels` instead. When a run has multiple labels, this
|
|
697
|
+
* field only contains the first one.
|
|
687
698
|
*/
|
|
688
699
|
label?: string;
|
|
700
|
+
/**
|
|
701
|
+
* Labels attached to the workflow run.
|
|
702
|
+
*
|
|
703
|
+
* A run can have multiple labels when triggered with `label: string[]`.
|
|
704
|
+
*/
|
|
705
|
+
labels?: string[];
|
|
689
706
|
};
|
|
690
|
-
type PublicDLQMessage = Pick<DLQMessage, "header" | "body" | "maxRetries" | "notBefore" | "createdAt" | "callerIP" | "workflowRunId" | "workflowCreatedAt" | "workflowUrl" | "responseStatus" | "responseHeader" | "responseBody" | "dlqId" | "failureCallback" | "failureCallbackInfo" | "label">;
|
|
707
|
+
type PublicDLQMessage = Pick<DLQMessage, "header" | "body" | "maxRetries" | "notBefore" | "createdAt" | "callerIP" | "workflowRunId" | "workflowCreatedAt" | "workflowUrl" | "responseStatus" | "responseHeader" | "responseBody" | "dlqId" | "failureCallback" | "failureCallbackInfo" | "label" | "labels">;
|
|
691
708
|
declare class DLQ {
|
|
692
709
|
private client;
|
|
693
710
|
constructor(client: Client$1);
|
package/index.d.ts
CHANGED
|
@@ -183,6 +183,13 @@ type StepLogGroup = {
|
|
|
183
183
|
*/
|
|
184
184
|
steps: {
|
|
185
185
|
messageId: string;
|
|
186
|
+
/**
|
|
187
|
+
* name of the step being run.
|
|
188
|
+
*
|
|
189
|
+
* only available when the SDK reported it while the step was failing
|
|
190
|
+
* (via the `Upstash-Error-Step-Name` response header).
|
|
191
|
+
*/
|
|
192
|
+
stepName?: string;
|
|
186
193
|
state: "STEP_PROGRESS" | "STEP_RETRY" | "STEP_FAILED" | "STEP_CANCELED";
|
|
187
194
|
/**
|
|
188
195
|
* retries
|
|
@@ -247,6 +254,7 @@ type FailureFunctionLog = {
|
|
|
247
254
|
* Status code of the response from the failure function
|
|
248
255
|
*/
|
|
249
256
|
responseStatus?: number;
|
|
257
|
+
nextDeliveryTime?: number;
|
|
250
258
|
};
|
|
251
259
|
type WorkflowRunLog = {
|
|
252
260
|
/**
|
|
@@ -683,11 +691,20 @@ type DLQMessage = {
|
|
|
683
691
|
*/
|
|
684
692
|
failureCallbackInfo?: FailureCallbackInfo;
|
|
685
693
|
/**
|
|
686
|
-
*
|
|
694
|
+
* Label passed when triggering the workflow run.
|
|
695
|
+
*
|
|
696
|
+
* @deprecated Use `labels` instead. When a run has multiple labels, this
|
|
697
|
+
* field only contains the first one.
|
|
687
698
|
*/
|
|
688
699
|
label?: string;
|
|
700
|
+
/**
|
|
701
|
+
* Labels attached to the workflow run.
|
|
702
|
+
*
|
|
703
|
+
* A run can have multiple labels when triggered with `label: string[]`.
|
|
704
|
+
*/
|
|
705
|
+
labels?: string[];
|
|
689
706
|
};
|
|
690
|
-
type PublicDLQMessage = Pick<DLQMessage, "header" | "body" | "maxRetries" | "notBefore" | "createdAt" | "callerIP" | "workflowRunId" | "workflowCreatedAt" | "workflowUrl" | "responseStatus" | "responseHeader" | "responseBody" | "dlqId" | "failureCallback" | "failureCallbackInfo" | "label">;
|
|
707
|
+
type PublicDLQMessage = Pick<DLQMessage, "header" | "body" | "maxRetries" | "notBefore" | "createdAt" | "callerIP" | "workflowRunId" | "workflowCreatedAt" | "workflowUrl" | "responseStatus" | "responseHeader" | "responseBody" | "dlqId" | "failureCallback" | "failureCallbackInfo" | "label" | "labels">;
|
|
691
708
|
declare class DLQ {
|
|
692
709
|
private client;
|
|
693
710
|
constructor(client: Client$1);
|
package/index.js
CHANGED
|
@@ -110,6 +110,22 @@ var formatWorkflowError = (error) => {
|
|
|
110
110
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
111
111
|
};
|
|
112
112
|
};
|
|
113
|
+
var attachStepNameToError = (error, stepName) => {
|
|
114
|
+
if (typeof error !== "object" || error === null) return;
|
|
115
|
+
if ("errorStepName" in error) return;
|
|
116
|
+
if (!Object.isExtensible(error)) return;
|
|
117
|
+
try {
|
|
118
|
+
error.errorStepName = stepName;
|
|
119
|
+
} catch {
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
var getStepNameFromError = (error) => {
|
|
123
|
+
if (typeof error === "object" && error !== null) {
|
|
124
|
+
const stepName = error.errorStepName;
|
|
125
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
126
|
+
}
|
|
127
|
+
return void 0;
|
|
128
|
+
};
|
|
113
129
|
function getConstructorName(obj) {
|
|
114
130
|
if (obj === null || obj === void 0) {
|
|
115
131
|
return null;
|
|
@@ -270,12 +286,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
270
286
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
271
287
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
272
288
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
289
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
273
290
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
274
291
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
275
292
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
276
293
|
var NO_CONCURRENCY = 1;
|
|
277
294
|
var DEFAULT_RETRIES = 3;
|
|
278
|
-
var VERSION = "v1.2
|
|
295
|
+
var VERSION = "v1.3.2";
|
|
279
296
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
280
297
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
281
298
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1998,7 +2015,13 @@ var submitSingleStep = async ({
|
|
|
1998
2015
|
await dispatchLifecycle("beforeExecution", {
|
|
1999
2016
|
stepName: lazyStep.stepName
|
|
2000
2017
|
});
|
|
2001
|
-
|
|
2018
|
+
let resultStep;
|
|
2019
|
+
try {
|
|
2020
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
2021
|
+
} catch (error) {
|
|
2022
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
2023
|
+
throw error;
|
|
2024
|
+
}
|
|
2002
2025
|
const { headers } = lazyStep.getHeaders({
|
|
2003
2026
|
context,
|
|
2004
2027
|
step: resultStep,
|
|
@@ -2221,9 +2244,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2221
2244
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2222
2245
|
throw error;
|
|
2223
2246
|
}
|
|
2224
|
-
|
|
2247
|
+
const wrappedError = new WorkflowError(
|
|
2225
2248
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2226
2249
|
);
|
|
2250
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2251
|
+
throw wrappedError;
|
|
2227
2252
|
}
|
|
2228
2253
|
break;
|
|
2229
2254
|
}
|
|
@@ -3901,10 +3926,12 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3901
3926
|
await middlewareManager.dispatchDebug("onError", {
|
|
3902
3927
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3903
3928
|
});
|
|
3929
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3904
3930
|
return new Response(JSON.stringify(formattedError), {
|
|
3905
3931
|
status: 500,
|
|
3906
3932
|
headers: {
|
|
3907
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3933
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3934
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3908
3935
|
}
|
|
3909
3936
|
});
|
|
3910
3937
|
}
|
package/index.mjs
CHANGED
package/nextjs.js
CHANGED
|
@@ -106,6 +106,22 @@ var formatWorkflowError = (error) => {
|
|
|
106
106
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
107
107
|
};
|
|
108
108
|
};
|
|
109
|
+
var attachStepNameToError = (error, stepName) => {
|
|
110
|
+
if (typeof error !== "object" || error === null) return;
|
|
111
|
+
if ("errorStepName" in error) return;
|
|
112
|
+
if (!Object.isExtensible(error)) return;
|
|
113
|
+
try {
|
|
114
|
+
error.errorStepName = stepName;
|
|
115
|
+
} catch {
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
var getStepNameFromError = (error) => {
|
|
119
|
+
if (typeof error === "object" && error !== null) {
|
|
120
|
+
const stepName = error.errorStepName;
|
|
121
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
122
|
+
}
|
|
123
|
+
return void 0;
|
|
124
|
+
};
|
|
109
125
|
function getConstructorName(obj) {
|
|
110
126
|
if (obj === null || obj === void 0) {
|
|
111
127
|
return null;
|
|
@@ -199,12 +215,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
199
215
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
200
216
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
201
217
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
218
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
202
219
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
203
220
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
204
221
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
205
222
|
var NO_CONCURRENCY = 1;
|
|
206
223
|
var DEFAULT_RETRIES = 3;
|
|
207
|
-
var VERSION = "v1.2
|
|
224
|
+
var VERSION = "v1.3.2";
|
|
208
225
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
209
226
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
210
227
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1927,7 +1944,13 @@ var submitSingleStep = async ({
|
|
|
1927
1944
|
await dispatchLifecycle("beforeExecution", {
|
|
1928
1945
|
stepName: lazyStep.stepName
|
|
1929
1946
|
});
|
|
1930
|
-
|
|
1947
|
+
let resultStep;
|
|
1948
|
+
try {
|
|
1949
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1950
|
+
} catch (error) {
|
|
1951
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1952
|
+
throw error;
|
|
1953
|
+
}
|
|
1931
1954
|
const { headers } = lazyStep.getHeaders({
|
|
1932
1955
|
context,
|
|
1933
1956
|
step: resultStep,
|
|
@@ -2150,9 +2173,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2150
2173
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2151
2174
|
throw error;
|
|
2152
2175
|
}
|
|
2153
|
-
|
|
2176
|
+
const wrappedError = new WorkflowError(
|
|
2154
2177
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2155
2178
|
);
|
|
2179
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2180
|
+
throw wrappedError;
|
|
2156
2181
|
}
|
|
2157
2182
|
break;
|
|
2158
2183
|
}
|
|
@@ -3897,10 +3922,12 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3897
3922
|
await middlewareManager.dispatchDebug("onError", {
|
|
3898
3923
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3899
3924
|
});
|
|
3925
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3900
3926
|
return new Response(JSON.stringify(formattedError), {
|
|
3901
3927
|
status: 500,
|
|
3902
3928
|
headers: {
|
|
3903
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3929
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3930
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3904
3931
|
}
|
|
3905
3932
|
});
|
|
3906
3933
|
}
|
package/nextjs.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@upstash/workflow","version":"1.3.
|
|
1
|
+
{"name":"@upstash/workflow","version":"1.3.2-rc","description":"Durable, Reliable and Performant Serverless Functions","main":"./index.js","module":"./index.mjs","types":"./index.d.ts","files":["./*"],"exports":{".":{"import":"./index.mjs","require":"./index.js"},"./dist/nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./h3":{"import":"./h3.mjs","require":"./h3.js"},"./svelte":{"import":"./svelte.mjs","require":"./svelte.js"},"./solidjs":{"import":"./solidjs.mjs","require":"./solidjs.js"},"./workflow":{"import":"./workflow.mjs","require":"./workflow.js"},"./hono":{"import":"./hono.mjs","require":"./hono.js"},"./cloudflare":{"import":"./cloudflare.mjs","require":"./cloudflare.js"},"./astro":{"import":"./astro.mjs","require":"./astro.js"},"./express":{"import":"./express.mjs","require":"./express.js"},"./tanstack":{"import":"./tanstack.mjs","require":"./tanstack.js"},"./react-router":{"import":"./react-router.mjs","require":"./react-router.js"}},"scripts":{"build":"tsup && cp README.md ./dist/ && cp package.json ./dist/ && cp LICENSE ./dist/","test":"bun test src","fmt":"prettier --write .","lint":"tsc && eslint \"{src,platforms}/**/*.{js,ts,tsx}\" --quiet --fix","check-exports":"bun run build && cd dist && attw -P"},"repository":{"type":"git","url":"git@github.com:upstash/workflow-js.git"},"keywords":["upstash","qstash","workflow","serverless"],"author":"Cahid Arda Oz","license":"MIT","bugs":{"url":"https://github.com/upstash/workflow-ts/issues"},"homepage":"https://github.com/upstash/workflow-ts#readme","devDependencies":{"@commitlint/cli":"^19.5.0","@commitlint/config-conventional":"^19.5.0","@eslint/js":"^9.11.1","@solidjs/start":"^1.0.8","@sveltejs/kit":"^2.6.1","@types/bun":"^1.1.10","@types/express":"^5.0.6","astro":"^4.16.7","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","express":"^5.1.0","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.20","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsup":"^8.3.0","typescript":"^5.7.2","typescript-eslint":"^8.18.0"},"dependencies":{"@upstash/qstash":"^2.11.0"},"directories":{"example":"examples"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"}}
|
package/react-router.js
CHANGED
|
@@ -39,12 +39,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
39
39
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
40
40
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
41
41
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
42
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
42
43
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
43
44
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
44
45
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
45
46
|
var NO_CONCURRENCY = 1;
|
|
46
47
|
var DEFAULT_RETRIES = 3;
|
|
47
|
-
var VERSION = "v1.2
|
|
48
|
+
var VERSION = "v1.3.2";
|
|
48
49
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
49
50
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
50
51
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -127,6 +128,22 @@ var formatWorkflowError = (error) => {
|
|
|
127
128
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
128
129
|
};
|
|
129
130
|
};
|
|
131
|
+
var attachStepNameToError = (error, stepName) => {
|
|
132
|
+
if (typeof error !== "object" || error === null) return;
|
|
133
|
+
if ("errorStepName" in error) return;
|
|
134
|
+
if (!Object.isExtensible(error)) return;
|
|
135
|
+
try {
|
|
136
|
+
error.errorStepName = stepName;
|
|
137
|
+
} catch {
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
var getStepNameFromError = (error) => {
|
|
141
|
+
if (typeof error === "object" && error !== null) {
|
|
142
|
+
const stepName = error.errorStepName;
|
|
143
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
144
|
+
}
|
|
145
|
+
return void 0;
|
|
146
|
+
};
|
|
130
147
|
function getConstructorName(obj) {
|
|
131
148
|
if (obj === null || obj === void 0) {
|
|
132
149
|
return null;
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/react-router.mjs
CHANGED
package/solidjs.js
CHANGED
|
@@ -101,6 +101,22 @@ var formatWorkflowError = (error) => {
|
|
|
101
101
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
|
+
var attachStepNameToError = (error, stepName) => {
|
|
105
|
+
if (typeof error !== "object" || error === null) return;
|
|
106
|
+
if ("errorStepName" in error) return;
|
|
107
|
+
if (!Object.isExtensible(error)) return;
|
|
108
|
+
try {
|
|
109
|
+
error.errorStepName = stepName;
|
|
110
|
+
} catch {
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var getStepNameFromError = (error) => {
|
|
114
|
+
if (typeof error === "object" && error !== null) {
|
|
115
|
+
const stepName = error.errorStepName;
|
|
116
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
117
|
+
}
|
|
118
|
+
return void 0;
|
|
119
|
+
};
|
|
104
120
|
function getConstructorName(obj) {
|
|
105
121
|
if (obj === null || obj === void 0) {
|
|
106
122
|
return null;
|
|
@@ -194,12 +210,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
194
210
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
195
211
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
196
212
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
213
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
197
214
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
198
215
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
199
216
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
200
217
|
var NO_CONCURRENCY = 1;
|
|
201
218
|
var DEFAULT_RETRIES = 3;
|
|
202
|
-
var VERSION = "v1.2
|
|
219
|
+
var VERSION = "v1.3.2";
|
|
203
220
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
204
221
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
205
222
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1922,7 +1939,13 @@ var submitSingleStep = async ({
|
|
|
1922
1939
|
await dispatchLifecycle("beforeExecution", {
|
|
1923
1940
|
stepName: lazyStep.stepName
|
|
1924
1941
|
});
|
|
1925
|
-
|
|
1942
|
+
let resultStep;
|
|
1943
|
+
try {
|
|
1944
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1945
|
+
} catch (error) {
|
|
1946
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1947
|
+
throw error;
|
|
1948
|
+
}
|
|
1926
1949
|
const { headers } = lazyStep.getHeaders({
|
|
1927
1950
|
context,
|
|
1928
1951
|
step: resultStep,
|
|
@@ -2145,9 +2168,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2145
2168
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2146
2169
|
throw error;
|
|
2147
2170
|
}
|
|
2148
|
-
|
|
2171
|
+
const wrappedError = new WorkflowError(
|
|
2149
2172
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2150
2173
|
);
|
|
2174
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2175
|
+
throw wrappedError;
|
|
2151
2176
|
}
|
|
2152
2177
|
break;
|
|
2153
2178
|
}
|
|
@@ -3825,10 +3850,12 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3825
3850
|
await middlewareManager.dispatchDebug("onError", {
|
|
3826
3851
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3827
3852
|
});
|
|
3853
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3828
3854
|
return new Response(JSON.stringify(formattedError), {
|
|
3829
3855
|
status: 500,
|
|
3830
3856
|
headers: {
|
|
3831
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3857
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3858
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3832
3859
|
}
|
|
3833
3860
|
});
|
|
3834
3861
|
}
|
package/solidjs.mjs
CHANGED
package/svelte.js
CHANGED
|
@@ -103,6 +103,22 @@ var formatWorkflowError = (error) => {
|
|
|
103
103
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
+
var attachStepNameToError = (error, stepName) => {
|
|
107
|
+
if (typeof error !== "object" || error === null) return;
|
|
108
|
+
if ("errorStepName" in error) return;
|
|
109
|
+
if (!Object.isExtensible(error)) return;
|
|
110
|
+
try {
|
|
111
|
+
error.errorStepName = stepName;
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var getStepNameFromError = (error) => {
|
|
116
|
+
if (typeof error === "object" && error !== null) {
|
|
117
|
+
const stepName = error.errorStepName;
|
|
118
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
119
|
+
}
|
|
120
|
+
return void 0;
|
|
121
|
+
};
|
|
106
122
|
function getConstructorName(obj) {
|
|
107
123
|
if (obj === null || obj === void 0) {
|
|
108
124
|
return null;
|
|
@@ -196,12 +212,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
196
212
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
197
213
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
198
214
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
215
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
199
216
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
200
217
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
201
218
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
202
219
|
var NO_CONCURRENCY = 1;
|
|
203
220
|
var DEFAULT_RETRIES = 3;
|
|
204
|
-
var VERSION = "v1.2
|
|
221
|
+
var VERSION = "v1.3.2";
|
|
205
222
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
206
223
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
207
224
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|
package/svelte.mjs
CHANGED
package/tanstack.js
CHANGED
|
@@ -103,6 +103,22 @@ var formatWorkflowError = (error) => {
|
|
|
103
103
|
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
+
var attachStepNameToError = (error, stepName) => {
|
|
107
|
+
if (typeof error !== "object" || error === null) return;
|
|
108
|
+
if ("errorStepName" in error) return;
|
|
109
|
+
if (!Object.isExtensible(error)) return;
|
|
110
|
+
try {
|
|
111
|
+
error.errorStepName = stepName;
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var getStepNameFromError = (error) => {
|
|
116
|
+
if (typeof error === "object" && error !== null) {
|
|
117
|
+
const stepName = error.errorStepName;
|
|
118
|
+
return typeof stepName === "string" ? stepName : void 0;
|
|
119
|
+
}
|
|
120
|
+
return void 0;
|
|
121
|
+
};
|
|
106
122
|
function getConstructorName(obj) {
|
|
107
123
|
if (obj === null || obj === void 0) {
|
|
108
124
|
return null;
|
|
@@ -196,12 +212,13 @@ var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
|
196
212
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
197
213
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
198
214
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
215
|
+
var WORKFLOW_ERROR_STEP_NAME_HEADER = "Upstash-Error-Step-Name";
|
|
199
216
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
200
217
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
201
218
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
202
219
|
var NO_CONCURRENCY = 1;
|
|
203
220
|
var DEFAULT_RETRIES = 3;
|
|
204
|
-
var VERSION = "v1.2
|
|
221
|
+
var VERSION = "v1.3.2";
|
|
205
222
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
206
223
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
207
224
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1924,7 +1941,13 @@ var submitSingleStep = async ({
|
|
|
1924
1941
|
await dispatchLifecycle("beforeExecution", {
|
|
1925
1942
|
stepName: lazyStep.stepName
|
|
1926
1943
|
});
|
|
1927
|
-
|
|
1944
|
+
let resultStep;
|
|
1945
|
+
try {
|
|
1946
|
+
resultStep = await lazyStep.getResultStep(concurrency, stepId);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
attachStepNameToError(error, lazyStep.stepName);
|
|
1949
|
+
throw error;
|
|
1950
|
+
}
|
|
1928
1951
|
const { headers } = lazyStep.getHeaders({
|
|
1929
1952
|
context,
|
|
1930
1953
|
step: resultStep,
|
|
@@ -2147,9 +2170,11 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2147
2170
|
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400 || isInstanceOf(error, import_qstash5.QstashError) && error.status === 412) {
|
|
2148
2171
|
throw error;
|
|
2149
2172
|
}
|
|
2150
|
-
|
|
2173
|
+
const wrappedError = new WorkflowError(
|
|
2151
2174
|
`Error submitting steps to QStash in partial parallel step execution: ${error}`
|
|
2152
2175
|
);
|
|
2176
|
+
attachStepNameToError(wrappedError, parallelSteps[stepIndex].stepName);
|
|
2177
|
+
throw wrappedError;
|
|
2153
2178
|
}
|
|
2154
2179
|
break;
|
|
2155
2180
|
}
|
|
@@ -3894,10 +3919,12 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3894
3919
|
await middlewareManager.dispatchDebug("onError", {
|
|
3895
3920
|
error: isInstanceOf(error, Error) ? error : new Error(formattedError.message)
|
|
3896
3921
|
});
|
|
3922
|
+
const stepName = getStepNameFromError(error)?.replace(/[\u0000-\u001F\u007F]+/g, " ").trim();
|
|
3897
3923
|
return new Response(JSON.stringify(formattedError), {
|
|
3898
3924
|
status: 500,
|
|
3899
3925
|
headers: {
|
|
3900
|
-
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3926
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
|
|
3927
|
+
...stepName ? { [WORKFLOW_ERROR_STEP_NAME_HEADER]: stepName } : {}
|
|
3901
3928
|
}
|
|
3902
3929
|
});
|
|
3903
3930
|
}
|