@upstash/workflow 1.2.0 → 1.3.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 +10 -0
- package/astro.d.mts +2 -2
- package/astro.d.ts +2 -2
- package/astro.js +31 -5
- package/astro.mjs +1 -1
- package/{chunk-V5ZUHMAF.mjs → chunk-G24J5PCC.mjs} +93 -5
- package/cloudflare.d.mts +2 -2
- package/cloudflare.d.ts +2 -2
- package/cloudflare.js +31 -5
- package/cloudflare.mjs +1 -1
- package/express.d.mts +2 -2
- package/express.d.ts +2 -2
- package/express.js +31 -5
- package/express.mjs +1 -1
- package/h3.d.mts +2 -2
- package/h3.d.ts +2 -2
- package/h3.js +31 -5
- package/h3.mjs +1 -1
- package/hono.d.mts +2 -2
- package/hono.d.ts +2 -2
- package/hono.js +31 -5
- package/hono.mjs +1 -1
- package/index.d.mts +201 -128
- package/index.d.ts +201 -128
- package/index.js +212 -160
- package/index.mjs +124 -156
- package/nextjs.d.mts +2 -2
- package/nextjs.d.ts +2 -2
- package/nextjs.js +31 -5
- package/nextjs.mjs +1 -1
- package/package.json +1 -1
- package/react-router.d.mts +2 -2
- package/react-router.d.ts +2 -2
- package/react-router.js +31 -5
- package/react-router.mjs +1 -1
- package/{serve-many-C6sa_DxN.d.mts → serve-many-D3D9uE4u.d.mts} +1 -1
- package/{serve-many-B-fe7bh7.d.ts → serve-many-kPOasiyb.d.ts} +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +31 -5
- package/solidjs.mjs +1 -1
- package/svelte.d.mts +2 -2
- package/svelte.d.ts +2 -2
- package/svelte.js +31 -5
- package/svelte.mjs +1 -1
- package/tanstack.d.mts +2 -2
- package/tanstack.d.ts +2 -2
- package/tanstack.js +31 -5
- package/tanstack.mjs +1 -1
- package/{types-B2S08hRU.d.ts → types-B_E1VAK6.d.mts} +9 -1
- package/{types-B2S08hRU.d.mts → types-B_E1VAK6.d.ts} +9 -1
package/express.js
CHANGED
|
@@ -35,6 +35,7 @@ var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
|
35
35
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
36
36
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
37
37
|
var WORKFLOW_INVOKE_COUNT_HEADER = "Upstash-Workflow-Invoke-Count";
|
|
38
|
+
var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
38
39
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
39
40
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
40
41
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
@@ -43,7 +44,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
43
44
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
44
45
|
var NO_CONCURRENCY = 1;
|
|
45
46
|
var DEFAULT_RETRIES = 3;
|
|
46
|
-
var VERSION = "v1.
|
|
47
|
+
var VERSION = "v1.2.1";
|
|
47
48
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
48
49
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
49
50
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -855,6 +856,9 @@ var recreateUserHeaders = (headers) => {
|
|
|
855
856
|
}
|
|
856
857
|
return filteredHeaders;
|
|
857
858
|
};
|
|
859
|
+
var isThirdPartyCallResult = (request) => {
|
|
860
|
+
return request.headers.get("Upstash-Workflow-Callback") !== null;
|
|
861
|
+
};
|
|
858
862
|
var handleThirdPartyCallResult = async ({
|
|
859
863
|
request,
|
|
860
864
|
requestPayload,
|
|
@@ -864,7 +868,7 @@ var handleThirdPartyCallResult = async ({
|
|
|
864
868
|
middlewareManager
|
|
865
869
|
}) => {
|
|
866
870
|
try {
|
|
867
|
-
if (request
|
|
871
|
+
if (isThirdPartyCallResult(request)) {
|
|
868
872
|
let callbackPayload;
|
|
869
873
|
if (requestPayload) {
|
|
870
874
|
callbackPayload = requestPayload;
|
|
@@ -2707,6 +2711,13 @@ var WorkflowContext = class {
|
|
|
2707
2711
|
* ```
|
|
2708
2712
|
*/
|
|
2709
2713
|
label;
|
|
2714
|
+
/**
|
|
2715
|
+
* Number of times QStash has retried delivering the current request.
|
|
2716
|
+
*
|
|
2717
|
+
* Sourced from the `Upstash-Retried` header. `0` on the first delivery,
|
|
2718
|
+
* `1` on the first retry, `2` on the second, and so on.
|
|
2719
|
+
*/
|
|
2720
|
+
retried;
|
|
2710
2721
|
constructor({
|
|
2711
2722
|
qstashClient,
|
|
2712
2723
|
workflowRunId,
|
|
@@ -2719,6 +2730,7 @@ var WorkflowContext = class {
|
|
|
2719
2730
|
telemetry: telemetry2,
|
|
2720
2731
|
invokeCount,
|
|
2721
2732
|
label,
|
|
2733
|
+
retried,
|
|
2722
2734
|
middlewareManager
|
|
2723
2735
|
}) {
|
|
2724
2736
|
this.qstashClient = qstashClient;
|
|
@@ -2730,6 +2742,7 @@ var WorkflowContext = class {
|
|
|
2730
2742
|
this.requestPayload = initialPayload;
|
|
2731
2743
|
this.env = env ?? {};
|
|
2732
2744
|
this.label = label;
|
|
2745
|
+
this.retried = retried ?? 0;
|
|
2733
2746
|
const middlewareManagerInstance = middlewareManager ?? new MiddlewareManager([]);
|
|
2734
2747
|
middlewareManagerInstance.assignContext(this);
|
|
2735
2748
|
this.executor = new AutoExecutor(
|
|
@@ -2993,7 +3006,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2993
3006
|
const disabledContext = new _DisabledWorkflowContext({
|
|
2994
3007
|
qstashClient: new import_qstash10.Client({
|
|
2995
3008
|
baseUrl: "disabled-client",
|
|
2996
|
-
token: "disabled-client"
|
|
3009
|
+
token: "disabled-client",
|
|
3010
|
+
devMode: false
|
|
2997
3011
|
}),
|
|
2998
3012
|
workflowRunId: context.workflowRunId,
|
|
2999
3013
|
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
@@ -3002,7 +3016,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3002
3016
|
url: context.url,
|
|
3003
3017
|
initialPayload: context.requestPayload,
|
|
3004
3018
|
env: context.env,
|
|
3005
|
-
label: context.label
|
|
3019
|
+
label: context.label,
|
|
3020
|
+
retried: context.retried
|
|
3006
3021
|
});
|
|
3007
3022
|
try {
|
|
3008
3023
|
await routeFunction(disabledContext);
|
|
@@ -3218,6 +3233,7 @@ var handleFailure = async ({
|
|
|
3218
3233
|
errorMessage = `Couldn't parse 'failResponse' in 'failureFunction', received: '${decodedBody}'`;
|
|
3219
3234
|
}
|
|
3220
3235
|
const userHeaders = recreateUserHeaders(request.headers);
|
|
3236
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
3221
3237
|
const workflowContext = new WorkflowContext({
|
|
3222
3238
|
qstashClient,
|
|
3223
3239
|
workflowRunId,
|
|
@@ -3229,6 +3245,7 @@ var handleFailure = async ({
|
|
|
3229
3245
|
telemetry: void 0,
|
|
3230
3246
|
// not going to make requests in authentication check
|
|
3231
3247
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3248
|
+
retried,
|
|
3232
3249
|
workflowRunCreatedAt: workflowCreatedAt,
|
|
3233
3250
|
middlewareManager: void 0
|
|
3234
3251
|
});
|
|
@@ -3388,6 +3405,9 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3388
3405
|
if (receiverConfig === "set-to-undefined") {
|
|
3389
3406
|
return void 0;
|
|
3390
3407
|
}
|
|
3408
|
+
if (isQStashDevModeEnabled(environment)) {
|
|
3409
|
+
return new import_qstash11.Receiver({ devMode: true });
|
|
3410
|
+
}
|
|
3391
3411
|
const receiverEnv = readReceiverEnvironmentVariables(environment, region);
|
|
3392
3412
|
return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new import_qstash11.Receiver({
|
|
3393
3413
|
currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
|
|
@@ -3397,6 +3417,10 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3397
3417
|
return receiverConfig;
|
|
3398
3418
|
}
|
|
3399
3419
|
};
|
|
3420
|
+
var isQStashDevModeEnabled = (env) => {
|
|
3421
|
+
const value = env.QSTASH_DEV;
|
|
3422
|
+
return value === "true" || value === "1";
|
|
3423
|
+
};
|
|
3400
3424
|
var getQStashHandlerOptions = (...params) => {
|
|
3401
3425
|
const handlers = getQStashHandlers(...params);
|
|
3402
3426
|
return {
|
|
@@ -3706,12 +3730,13 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3706
3730
|
);
|
|
3707
3731
|
}
|
|
3708
3732
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3733
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
3709
3734
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3710
3735
|
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3711
3736
|
const workflowContext = new WorkflowContext({
|
|
3712
3737
|
qstashClient: regionalClient,
|
|
3713
3738
|
workflowRunId,
|
|
3714
|
-
initialPayload: initialPayloadParser(rawInitialPayload),
|
|
3739
|
+
initialPayload: isThirdPartyCallResult(request) ? JSON.parse(rawInitialPayload) : initialPayloadParser(rawInitialPayload),
|
|
3715
3740
|
headers: recreateUserHeaders(request.headers),
|
|
3716
3741
|
steps,
|
|
3717
3742
|
url: workflowUrl,
|
|
@@ -3719,6 +3744,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3719
3744
|
telemetry: telemetry2,
|
|
3720
3745
|
invokeCount,
|
|
3721
3746
|
label,
|
|
3747
|
+
retried,
|
|
3722
3748
|
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3723
3749
|
middlewareManager
|
|
3724
3750
|
});
|
package/express.mjs
CHANGED
package/h3.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as h3 from 'h3';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B_E1VAK6.mjs';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-D3D9uE4u.mjs';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
package/h3.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as h3 from 'h3';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B_E1VAK6.js';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-kPOasiyb.js';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
package/h3.js
CHANGED
|
@@ -501,6 +501,7 @@ var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
|
501
501
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
502
502
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
503
503
|
var WORKFLOW_INVOKE_COUNT_HEADER = "Upstash-Workflow-Invoke-Count";
|
|
504
|
+
var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
504
505
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
505
506
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
506
507
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
@@ -509,7 +510,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
509
510
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
510
511
|
var NO_CONCURRENCY = 1;
|
|
511
512
|
var DEFAULT_RETRIES = 3;
|
|
512
|
-
var VERSION = "v1.
|
|
513
|
+
var VERSION = "v1.2.1";
|
|
513
514
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
514
515
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
515
516
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -1164,6 +1165,9 @@ var recreateUserHeaders = (headers) => {
|
|
|
1164
1165
|
}
|
|
1165
1166
|
return filteredHeaders;
|
|
1166
1167
|
};
|
|
1168
|
+
var isThirdPartyCallResult = (request) => {
|
|
1169
|
+
return request.headers.get("Upstash-Workflow-Callback") !== null;
|
|
1170
|
+
};
|
|
1167
1171
|
var handleThirdPartyCallResult = async ({
|
|
1168
1172
|
request,
|
|
1169
1173
|
requestPayload,
|
|
@@ -1173,7 +1177,7 @@ var handleThirdPartyCallResult = async ({
|
|
|
1173
1177
|
middlewareManager
|
|
1174
1178
|
}) => {
|
|
1175
1179
|
try {
|
|
1176
|
-
if (request
|
|
1180
|
+
if (isThirdPartyCallResult(request)) {
|
|
1177
1181
|
let callbackPayload;
|
|
1178
1182
|
if (requestPayload) {
|
|
1179
1183
|
callbackPayload = requestPayload;
|
|
@@ -3016,6 +3020,13 @@ var WorkflowContext = class {
|
|
|
3016
3020
|
* ```
|
|
3017
3021
|
*/
|
|
3018
3022
|
label;
|
|
3023
|
+
/**
|
|
3024
|
+
* Number of times QStash has retried delivering the current request.
|
|
3025
|
+
*
|
|
3026
|
+
* Sourced from the `Upstash-Retried` header. `0` on the first delivery,
|
|
3027
|
+
* `1` on the first retry, `2` on the second, and so on.
|
|
3028
|
+
*/
|
|
3029
|
+
retried;
|
|
3019
3030
|
constructor({
|
|
3020
3031
|
qstashClient,
|
|
3021
3032
|
workflowRunId,
|
|
@@ -3028,6 +3039,7 @@ var WorkflowContext = class {
|
|
|
3028
3039
|
telemetry: telemetry2,
|
|
3029
3040
|
invokeCount,
|
|
3030
3041
|
label,
|
|
3042
|
+
retried,
|
|
3031
3043
|
middlewareManager
|
|
3032
3044
|
}) {
|
|
3033
3045
|
this.qstashClient = qstashClient;
|
|
@@ -3039,6 +3051,7 @@ var WorkflowContext = class {
|
|
|
3039
3051
|
this.requestPayload = initialPayload;
|
|
3040
3052
|
this.env = env ?? {};
|
|
3041
3053
|
this.label = label;
|
|
3054
|
+
this.retried = retried ?? 0;
|
|
3042
3055
|
const middlewareManagerInstance = middlewareManager ?? new MiddlewareManager([]);
|
|
3043
3056
|
middlewareManagerInstance.assignContext(this);
|
|
3044
3057
|
this.executor = new AutoExecutor(
|
|
@@ -3302,7 +3315,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3302
3315
|
const disabledContext = new _DisabledWorkflowContext({
|
|
3303
3316
|
qstashClient: new import_qstash10.Client({
|
|
3304
3317
|
baseUrl: "disabled-client",
|
|
3305
|
-
token: "disabled-client"
|
|
3318
|
+
token: "disabled-client",
|
|
3319
|
+
devMode: false
|
|
3306
3320
|
}),
|
|
3307
3321
|
workflowRunId: context.workflowRunId,
|
|
3308
3322
|
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
@@ -3311,7 +3325,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3311
3325
|
url: context.url,
|
|
3312
3326
|
initialPayload: context.requestPayload,
|
|
3313
3327
|
env: context.env,
|
|
3314
|
-
label: context.label
|
|
3328
|
+
label: context.label,
|
|
3329
|
+
retried: context.retried
|
|
3315
3330
|
});
|
|
3316
3331
|
try {
|
|
3317
3332
|
await routeFunction(disabledContext);
|
|
@@ -3527,6 +3542,7 @@ var handleFailure = async ({
|
|
|
3527
3542
|
errorMessage = `Couldn't parse 'failResponse' in 'failureFunction', received: '${decodedBody}'`;
|
|
3528
3543
|
}
|
|
3529
3544
|
const userHeaders = recreateUserHeaders(request.headers);
|
|
3545
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
3530
3546
|
const workflowContext = new WorkflowContext({
|
|
3531
3547
|
qstashClient,
|
|
3532
3548
|
workflowRunId,
|
|
@@ -3538,6 +3554,7 @@ var handleFailure = async ({
|
|
|
3538
3554
|
telemetry: void 0,
|
|
3539
3555
|
// not going to make requests in authentication check
|
|
3540
3556
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3557
|
+
retried,
|
|
3541
3558
|
workflowRunCreatedAt: workflowCreatedAt,
|
|
3542
3559
|
middlewareManager: void 0
|
|
3543
3560
|
});
|
|
@@ -3697,6 +3714,9 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3697
3714
|
if (receiverConfig === "set-to-undefined") {
|
|
3698
3715
|
return void 0;
|
|
3699
3716
|
}
|
|
3717
|
+
if (isQStashDevModeEnabled(environment)) {
|
|
3718
|
+
return new import_qstash11.Receiver({ devMode: true });
|
|
3719
|
+
}
|
|
3700
3720
|
const receiverEnv = readReceiverEnvironmentVariables(environment, region);
|
|
3701
3721
|
return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new import_qstash11.Receiver({
|
|
3702
3722
|
currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
|
|
@@ -3706,6 +3726,10 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3706
3726
|
return receiverConfig;
|
|
3707
3727
|
}
|
|
3708
3728
|
};
|
|
3729
|
+
var isQStashDevModeEnabled = (env) => {
|
|
3730
|
+
const value = env.QSTASH_DEV;
|
|
3731
|
+
return value === "true" || value === "1";
|
|
3732
|
+
};
|
|
3709
3733
|
var getQStashHandlerOptions = (...params) => {
|
|
3710
3734
|
const handlers = getQStashHandlers(...params);
|
|
3711
3735
|
return {
|
|
@@ -4015,12 +4039,13 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
4015
4039
|
);
|
|
4016
4040
|
}
|
|
4017
4041
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
4042
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
4018
4043
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
4019
4044
|
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
4020
4045
|
const workflowContext = new WorkflowContext({
|
|
4021
4046
|
qstashClient: regionalClient,
|
|
4022
4047
|
workflowRunId,
|
|
4023
|
-
initialPayload: initialPayloadParser(rawInitialPayload),
|
|
4048
|
+
initialPayload: isThirdPartyCallResult(request) ? JSON.parse(rawInitialPayload) : initialPayloadParser(rawInitialPayload),
|
|
4024
4049
|
headers: recreateUserHeaders(request.headers),
|
|
4025
4050
|
steps,
|
|
4026
4051
|
url: workflowUrl,
|
|
@@ -4028,6 +4053,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
4028
4053
|
telemetry: telemetry2,
|
|
4029
4054
|
invokeCount,
|
|
4030
4055
|
label,
|
|
4056
|
+
retried,
|
|
4031
4057
|
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
4032
4058
|
middlewareManager
|
|
4033
4059
|
});
|
package/h3.mjs
CHANGED
package/hono.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context } from 'hono';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B_E1VAK6.mjs';
|
|
3
3
|
import { Variables } from 'hono/types';
|
|
4
|
-
import { s as serveManyBase } from './serve-many-
|
|
4
|
+
import { s as serveManyBase } from './serve-many-D3D9uE4u.mjs';
|
|
5
5
|
import '@upstash/qstash';
|
|
6
6
|
import 'zod';
|
|
7
7
|
|
package/hono.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context } from 'hono';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B_E1VAK6.js';
|
|
3
3
|
import { Variables } from 'hono/types';
|
|
4
|
-
import { s as serveManyBase } from './serve-many-
|
|
4
|
+
import { s as serveManyBase } from './serve-many-kPOasiyb.js';
|
|
5
5
|
import '@upstash/qstash';
|
|
6
6
|
import 'zod';
|
|
7
7
|
|
package/hono.js
CHANGED
|
@@ -192,6 +192,7 @@ var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
|
192
192
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
193
193
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
194
194
|
var WORKFLOW_INVOKE_COUNT_HEADER = "Upstash-Workflow-Invoke-Count";
|
|
195
|
+
var WORKFLOW_RETRIED_HEADER = "Upstash-Retried";
|
|
195
196
|
var WORKFLOW_LABEL_HEADER = "Upstash-Label";
|
|
196
197
|
var WORKFLOW_UNKOWN_SDK_VERSION_HEADER = "Upstash-Workflow-Unknown-Sdk";
|
|
197
198
|
var WORKFLOW_UNKOWN_SDK_TRIGGER_HEADER = "upstash-workflow-trigger-by-sdk";
|
|
@@ -200,7 +201,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
200
201
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
201
202
|
var NO_CONCURRENCY = 1;
|
|
202
203
|
var DEFAULT_RETRIES = 3;
|
|
203
|
-
var VERSION = "v1.
|
|
204
|
+
var VERSION = "v1.2.1";
|
|
204
205
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
205
206
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
206
207
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
@@ -855,6 +856,9 @@ var recreateUserHeaders = (headers) => {
|
|
|
855
856
|
}
|
|
856
857
|
return filteredHeaders;
|
|
857
858
|
};
|
|
859
|
+
var isThirdPartyCallResult = (request) => {
|
|
860
|
+
return request.headers.get("Upstash-Workflow-Callback") !== null;
|
|
861
|
+
};
|
|
858
862
|
var handleThirdPartyCallResult = async ({
|
|
859
863
|
request,
|
|
860
864
|
requestPayload,
|
|
@@ -864,7 +868,7 @@ var handleThirdPartyCallResult = async ({
|
|
|
864
868
|
middlewareManager
|
|
865
869
|
}) => {
|
|
866
870
|
try {
|
|
867
|
-
if (request
|
|
871
|
+
if (isThirdPartyCallResult(request)) {
|
|
868
872
|
let callbackPayload;
|
|
869
873
|
if (requestPayload) {
|
|
870
874
|
callbackPayload = requestPayload;
|
|
@@ -2707,6 +2711,13 @@ var WorkflowContext = class {
|
|
|
2707
2711
|
* ```
|
|
2708
2712
|
*/
|
|
2709
2713
|
label;
|
|
2714
|
+
/**
|
|
2715
|
+
* Number of times QStash has retried delivering the current request.
|
|
2716
|
+
*
|
|
2717
|
+
* Sourced from the `Upstash-Retried` header. `0` on the first delivery,
|
|
2718
|
+
* `1` on the first retry, `2` on the second, and so on.
|
|
2719
|
+
*/
|
|
2720
|
+
retried;
|
|
2710
2721
|
constructor({
|
|
2711
2722
|
qstashClient,
|
|
2712
2723
|
workflowRunId,
|
|
@@ -2719,6 +2730,7 @@ var WorkflowContext = class {
|
|
|
2719
2730
|
telemetry: telemetry2,
|
|
2720
2731
|
invokeCount,
|
|
2721
2732
|
label,
|
|
2733
|
+
retried,
|
|
2722
2734
|
middlewareManager
|
|
2723
2735
|
}) {
|
|
2724
2736
|
this.qstashClient = qstashClient;
|
|
@@ -2730,6 +2742,7 @@ var WorkflowContext = class {
|
|
|
2730
2742
|
this.requestPayload = initialPayload;
|
|
2731
2743
|
this.env = env ?? {};
|
|
2732
2744
|
this.label = label;
|
|
2745
|
+
this.retried = retried ?? 0;
|
|
2733
2746
|
const middlewareManagerInstance = middlewareManager ?? new MiddlewareManager([]);
|
|
2734
2747
|
middlewareManagerInstance.assignContext(this);
|
|
2735
2748
|
this.executor = new AutoExecutor(
|
|
@@ -2993,7 +3006,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2993
3006
|
const disabledContext = new _DisabledWorkflowContext({
|
|
2994
3007
|
qstashClient: new import_qstash10.Client({
|
|
2995
3008
|
baseUrl: "disabled-client",
|
|
2996
|
-
token: "disabled-client"
|
|
3009
|
+
token: "disabled-client",
|
|
3010
|
+
devMode: false
|
|
2997
3011
|
}),
|
|
2998
3012
|
workflowRunId: context.workflowRunId,
|
|
2999
3013
|
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
@@ -3002,7 +3016,8 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3002
3016
|
url: context.url,
|
|
3003
3017
|
initialPayload: context.requestPayload,
|
|
3004
3018
|
env: context.env,
|
|
3005
|
-
label: context.label
|
|
3019
|
+
label: context.label,
|
|
3020
|
+
retried: context.retried
|
|
3006
3021
|
});
|
|
3007
3022
|
try {
|
|
3008
3023
|
await routeFunction(disabledContext);
|
|
@@ -3218,6 +3233,7 @@ var handleFailure = async ({
|
|
|
3218
3233
|
errorMessage = `Couldn't parse 'failResponse' in 'failureFunction', received: '${decodedBody}'`;
|
|
3219
3234
|
}
|
|
3220
3235
|
const userHeaders = recreateUserHeaders(request.headers);
|
|
3236
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
3221
3237
|
const workflowContext = new WorkflowContext({
|
|
3222
3238
|
qstashClient,
|
|
3223
3239
|
workflowRunId,
|
|
@@ -3229,6 +3245,7 @@ var handleFailure = async ({
|
|
|
3229
3245
|
telemetry: void 0,
|
|
3230
3246
|
// not going to make requests in authentication check
|
|
3231
3247
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3248
|
+
retried,
|
|
3232
3249
|
workflowRunCreatedAt: workflowCreatedAt,
|
|
3233
3250
|
middlewareManager: void 0
|
|
3234
3251
|
});
|
|
@@ -3388,6 +3405,9 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3388
3405
|
if (receiverConfig === "set-to-undefined") {
|
|
3389
3406
|
return void 0;
|
|
3390
3407
|
}
|
|
3408
|
+
if (isQStashDevModeEnabled(environment)) {
|
|
3409
|
+
return new import_qstash11.Receiver({ devMode: true });
|
|
3410
|
+
}
|
|
3391
3411
|
const receiverEnv = readReceiverEnvironmentVariables(environment, region);
|
|
3392
3412
|
return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new import_qstash11.Receiver({
|
|
3393
3413
|
currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
|
|
@@ -3397,6 +3417,10 @@ var getReceiver = (environment, receiverConfig, region) => {
|
|
|
3397
3417
|
return receiverConfig;
|
|
3398
3418
|
}
|
|
3399
3419
|
};
|
|
3420
|
+
var isQStashDevModeEnabled = (env) => {
|
|
3421
|
+
const value = env.QSTASH_DEV;
|
|
3422
|
+
return value === "true" || value === "1";
|
|
3423
|
+
};
|
|
3400
3424
|
var getQStashHandlerOptions = (...params) => {
|
|
3401
3425
|
const handlers = getQStashHandlers(...params);
|
|
3402
3426
|
return {
|
|
@@ -3706,12 +3730,13 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3706
3730
|
);
|
|
3707
3731
|
}
|
|
3708
3732
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3733
|
+
const retried = Number(request.headers.get(WORKFLOW_RETRIED_HEADER) ?? "0");
|
|
3709
3734
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3710
3735
|
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3711
3736
|
const workflowContext = new WorkflowContext({
|
|
3712
3737
|
qstashClient: regionalClient,
|
|
3713
3738
|
workflowRunId,
|
|
3714
|
-
initialPayload: initialPayloadParser(rawInitialPayload),
|
|
3739
|
+
initialPayload: isThirdPartyCallResult(request) ? JSON.parse(rawInitialPayload) : initialPayloadParser(rawInitialPayload),
|
|
3715
3740
|
headers: recreateUserHeaders(request.headers),
|
|
3716
3741
|
steps,
|
|
3717
3742
|
url: workflowUrl,
|
|
@@ -3719,6 +3744,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3719
3744
|
telemetry: telemetry2,
|
|
3720
3745
|
invokeCount,
|
|
3721
3746
|
label,
|
|
3747
|
+
retried,
|
|
3722
3748
|
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3723
3749
|
middlewareManager
|
|
3724
3750
|
});
|