@upstash/workflow 0.3.0-rc1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/h3.js CHANGED
@@ -1150,7 +1150,7 @@ var recreateUserHeaders = (headers) => {
1150
1150
  const pairs = headers.entries();
1151
1151
  for (const [header, value] of pairs) {
1152
1152
  const headerLowerCase = header.toLowerCase();
1153
- const isUserHeader = headerLowerCase !== "upstash-region" && !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
1153
+ const isUserHeader = !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
1154
1154
  !headerLowerCase.startsWith("x-vercel-") && !headerLowerCase.startsWith("x-forwarded-") && // https://blog.cloudflare.com/preventing-request-loops-using-cdn-loop/
1155
1155
  headerLowerCase !== "cf-connecting-ip" && headerLowerCase !== "cdn-loop" && headerLowerCase !== "cf-ew-via" && headerLowerCase !== "cf-ray" && // For Render https://render.com
1156
1156
  headerLowerCase !== "render-proxy-ttl" || headerLowerCase === WORKFLOW_LABEL_HEADER.toLocaleLowerCase();
@@ -3522,154 +3522,9 @@ var handleFailure = async ({
3522
3522
  }
3523
3523
  };
3524
3524
 
3525
- // src/serve/multi-region/handlers.ts
3525
+ // src/serve/options.ts
3526
3526
  var import_qstash10 = require("@upstash/qstash");
3527
-
3528
- // src/serve/multi-region/utils.ts
3529
- var VALID_REGIONS = ["EU_CENTRAL_1", "US_EAST_1"];
3530
- var getRegionFromEnvironment = (environment) => {
3531
- const region = environment.QSTASH_REGION;
3532
- return normalizeRegionHeader(region);
3533
- };
3534
- function readEnvironmentVariables(environmentVariables, environment, region) {
3535
- const result = {};
3536
- for (const variable of environmentVariables) {
3537
- const key = region ? `${region}_${variable}` : variable;
3538
- result[variable] = environment[key];
3539
- }
3540
- return result;
3541
- }
3542
- function readClientEnvironmentVariables(environment, region) {
3543
- return readEnvironmentVariables(["QSTASH_URL", "QSTASH_TOKEN"], environment, region);
3544
- }
3545
- function readReceiverEnvironmentVariables(environment, region) {
3546
- return readEnvironmentVariables(
3547
- ["QSTASH_CURRENT_SIGNING_KEY", "QSTASH_NEXT_SIGNING_KEY"],
3548
- environment,
3549
- region
3550
- );
3551
- }
3552
- function normalizeRegionHeader(region) {
3553
- if (!region) {
3554
- return void 0;
3555
- }
3556
- region = region.replaceAll("-", "_").toUpperCase();
3557
- if (VALID_REGIONS.includes(region)) {
3558
- return region;
3559
- }
3560
- console.warn(
3561
- `[Upstash Workflow] Invalid UPSTASH-REGION header value: "${region}". Expected one of: ${VALID_REGIONS.join(
3562
- ", "
3563
- )}.`
3564
- );
3565
- return void 0;
3566
- }
3567
-
3568
- // src/serve/multi-region/handlers.ts
3569
- var getHandlersForRequest = (qstashHandlers, regionHeader, isFirstInvocation) => {
3570
- if (qstashHandlers.mode === "single-region") {
3571
- return qstashHandlers.handlers;
3572
- }
3573
- let targetRegion;
3574
- if (isFirstInvocation) {
3575
- targetRegion = qstashHandlers.defaultRegion;
3576
- } else {
3577
- const normalizedRegion = regionHeader ? normalizeRegionHeader(regionHeader) : void 0;
3578
- targetRegion = normalizedRegion ?? qstashHandlers.defaultRegion;
3579
- }
3580
- const handler = qstashHandlers.handlers[targetRegion];
3581
- if (!handler) {
3582
- console.warn(
3583
- `[Upstash Workflow] No handler found for region "${targetRegion}". Falling back to default region.`
3584
- );
3585
- return qstashHandlers.handlers[qstashHandlers.defaultRegion];
3586
- }
3587
- return handler;
3588
- };
3589
- var createRegionalHandler = (environment, receiverConfig, region, clientOptions) => {
3590
- const clientEnv = readClientEnvironmentVariables(environment, region);
3591
- const client = new import_qstash10.Client({
3592
- ...clientOptions,
3593
- baseUrl: clientEnv.QSTASH_URL,
3594
- token: clientEnv.QSTASH_TOKEN
3595
- });
3596
- const receiver = getReceiver(environment, receiverConfig, region);
3597
- return { client, receiver };
3598
- };
3599
- var shouldUseMultiRegionMode = (environment, qstashClientOption) => {
3600
- const hasRegionEnv = Boolean(getRegionFromEnvironment(environment));
3601
- if (hasRegionEnv && (!qstashClientOption || !("http" in qstashClientOption))) {
3602
- return {
3603
- isMultiRegion: true,
3604
- defaultRegion: getRegionFromEnvironment(environment),
3605
- clientOptions: qstashClientOption
3606
- };
3607
- } else {
3608
- return { isMultiRegion: false };
3609
- }
3610
- };
3611
- var getQStashHandlers = ({
3612
- environment,
3613
- qstashClientOption,
3614
- receiverConfig
3615
- }) => {
3616
- const multiRegion = shouldUseMultiRegionMode(environment, qstashClientOption);
3617
- if (multiRegion.isMultiRegion) {
3618
- const regions = ["US_EAST_1", "EU_CENTRAL_1"];
3619
- const handlers = {};
3620
- for (const region of regions) {
3621
- try {
3622
- handlers[region] = createRegionalHandler(
3623
- environment,
3624
- receiverConfig,
3625
- region,
3626
- multiRegion.clientOptions
3627
- );
3628
- } catch (error) {
3629
- console.warn(`[Upstash Workflow] Failed to create handler for region ${region}:`, error);
3630
- }
3631
- }
3632
- return {
3633
- mode: "multi-region",
3634
- handlers,
3635
- defaultRegion: multiRegion.defaultRegion
3636
- };
3637
- } else {
3638
- return {
3639
- mode: "single-region",
3640
- handlers: {
3641
- client: qstashClientOption && "http" in qstashClientOption ? qstashClientOption : new import_qstash10.Client({
3642
- ...qstashClientOption,
3643
- baseUrl: environment.QSTASH_URL,
3644
- token: environment.QSTASH_TOKEN
3645
- }),
3646
- receiver: getReceiver(environment, receiverConfig)
3647
- }
3648
- };
3649
- }
3650
- };
3651
- var getReceiver = (environment, receiverConfig, region) => {
3652
- if (typeof receiverConfig === "string") {
3653
- if (receiverConfig === "set-to-undefined") {
3654
- return void 0;
3655
- }
3656
- const receiverEnv = readReceiverEnvironmentVariables(environment, region);
3657
- return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new import_qstash10.Receiver({
3658
- currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
3659
- nextSigningKey: receiverEnv.QSTASH_NEXT_SIGNING_KEY
3660
- }) : void 0;
3661
- } else {
3662
- return receiverConfig;
3663
- }
3664
- };
3665
- var getQStashHandlerOptions = (...params) => {
3666
- const handlers = getQStashHandlers(...params);
3667
- return {
3668
- qstashHandlers: handlers,
3669
- defaultReceiver: handlers.mode === "single-region" ? handlers.handlers.receiver : handlers.handlers[handlers.defaultRegion].receiver,
3670
- defaultClient: handlers.mode === "single-region" ? handlers.handlers.client : handlers.handlers[handlers.defaultRegion].client
3671
- };
3672
- };
3527
+ var import_qstash11 = require("@upstash/qstash");
3673
3528
 
3674
3529
  // src/middleware/middleware.ts
3675
3530
  var WorkflowMiddleware = class {
@@ -3808,17 +3663,14 @@ var createResponseData = (workflowRunId, detailedFinishCondition) => {
3808
3663
  };
3809
3664
  var processOptions = (options, internalOptions) => {
3810
3665
  const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
3811
- const {
3812
- qstashHandlers,
3813
- defaultClient: qstashClient,
3814
- defaultReceiver: receiver
3815
- } = getQStashHandlerOptions({
3816
- environment,
3817
- qstashClientOption: options?.qstashClient,
3818
- receiverConfig: options && "receiver" in options ? options.receiver ? options.receiver : "set-to-undefined" : "not-set"
3819
- });
3666
+ const receiverEnvironmentVariablesSet = Boolean(
3667
+ environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
3668
+ );
3820
3669
  return {
3821
- qstashClient,
3670
+ qstashClient: options?.qstashClient ?? new import_qstash11.Client({
3671
+ baseUrl: environment.QSTASH_URL,
3672
+ token: environment.QSTASH_TOKEN
3673
+ }),
3822
3674
  initialPayloadParser: (initialRequest) => {
3823
3675
  if (!initialRequest) {
3824
3676
  return void 0;
@@ -3833,7 +3685,10 @@ var processOptions = (options, internalOptions) => {
3833
3685
  throw error;
3834
3686
  }
3835
3687
  },
3836
- receiver,
3688
+ receiver: receiverEnvironmentVariablesSet ? new import_qstash10.Receiver({
3689
+ currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
3690
+ nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
3691
+ }) : void 0,
3837
3692
  baseUrl: environment.UPSTASH_WORKFLOW_URL,
3838
3693
  env: environment,
3839
3694
  disableTelemetry: false,
@@ -3847,8 +3702,7 @@ var processOptions = (options, internalOptions) => {
3847
3702
  headers: responseData.headers
3848
3703
  });
3849
3704
  }),
3850
- useJSONContent: internalOptions?.useJSONContent ?? false,
3851
- qstashHandlers
3705
+ useJSONContent: internalOptions?.useJSONContent ?? false
3852
3706
  }
3853
3707
  };
3854
3708
  };
@@ -3881,8 +3735,10 @@ var AUTH_FAIL_MESSAGE = `Failed to authenticate Workflow request. If this is une
3881
3735
  // src/serve/index.ts
3882
3736
  var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3883
3737
  const {
3738
+ qstashClient,
3884
3739
  initialPayloadParser,
3885
3740
  url,
3741
+ receiver,
3886
3742
  failureFunction,
3887
3743
  baseUrl,
3888
3744
  env,
@@ -3902,15 +3758,9 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3902
3758
  baseUrl,
3903
3759
  middlewareManager.dispatchDebug.bind(middlewareManager)
3904
3760
  );
3905
- const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3906
- const regionHeader = request.headers.get("upstash-region");
3907
- const { client: regionalClient, receiver: regionalReceiver } = getHandlersForRequest(
3908
- internal.qstashHandlers,
3909
- regionHeader,
3910
- isFirstInvocation
3911
- );
3912
3761
  const requestPayload = await getPayload(request) ?? "";
3913
- await verifyRequest(requestPayload, request.headers.get("upstash-signature"), regionalReceiver);
3762
+ await verifyRequest(requestPayload, request.headers.get("upstash-signature"), receiver);
3763
+ const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3914
3764
  middlewareManager.assignWorkflowRunId(workflowRunId);
3915
3765
  await middlewareManager.dispatchDebug("onInfo", {
3916
3766
  info: `Run id identified. isFirstInvocation: ${isFirstInvocation}, unknownSdk: ${unknownSdk}`
@@ -3920,7 +3770,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3920
3770
  isFirstInvocation,
3921
3771
  unknownSdk,
3922
3772
  workflowRunId,
3923
- requester: regionalClient.http,
3773
+ requester: qstashClient.http,
3924
3774
  messageId: request.headers.get("upstash-message-id"),
3925
3775
  dispatchDebug: middlewareManager.dispatchDebug.bind(middlewareManager)
3926
3776
  });
@@ -3941,7 +3791,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3941
3791
  const failureCheck = await handleFailure({
3942
3792
  request,
3943
3793
  requestPayload,
3944
- qstashClient: regionalClient,
3794
+ qstashClient,
3945
3795
  initialPayloadParser,
3946
3796
  routeFunction,
3947
3797
  failureFunction,
@@ -3973,7 +3823,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3973
3823
  const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
3974
3824
  const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
3975
3825
  const workflowContext = new WorkflowContext({
3976
- qstashClient: regionalClient,
3826
+ qstashClient,
3977
3827
  workflowRunId,
3978
3828
  initialPayload: initialPayloadParser(rawInitialPayload),
3979
3829
  headers: recreateUserHeaders(request.headers),
@@ -4004,7 +3854,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
4004
3854
  const callReturnCheck = await handleThirdPartyCallResult({
4005
3855
  request,
4006
3856
  requestPayload: rawInitialPayload,
4007
- client: regionalClient,
3857
+ client: qstashClient,
4008
3858
  workflowUrl,
4009
3859
  telemetry: telemetry2,
4010
3860
  middlewareManager
package/h3.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  SDK_TELEMETRY,
3
3
  serveBase,
4
4
  serveManyBase
5
- } from "./chunk-2Z32SOYM.mjs";
5
+ } from "./chunk-5GWDM6XJ.mjs";
6
6
 
7
7
  // node_modules/defu/dist/defu.mjs
8
8
  function isPlainObject(value) {
package/hono.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Context } from 'hono';
2
- import { c as RouteFunction, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.mjs';
2
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.mjs';
3
3
  import { Variables } from 'hono/types';
4
- import { s as serveManyBase } from './serve-many-DhB8-zPD.mjs';
4
+ import { s as serveManyBase } from './serve-many-qpxb-yr-.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, x as InvokableWorkflow } from './types-pEje3VEB.js';
2
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.js';
3
3
  import { Variables } from 'hono/types';
4
- import { s as serveManyBase } from './serve-many-qnfynN1x.js';
4
+ import { s as serveManyBase } from './serve-many-CFlNO2Iq.js';
5
5
  import '@upstash/qstash';
6
6
  import 'zod';
7
7
 
package/hono.js CHANGED
@@ -841,7 +841,7 @@ var recreateUserHeaders = (headers) => {
841
841
  const pairs = headers.entries();
842
842
  for (const [header, value] of pairs) {
843
843
  const headerLowerCase = header.toLowerCase();
844
- const isUserHeader = headerLowerCase !== "upstash-region" && !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
844
+ const isUserHeader = !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
845
845
  !headerLowerCase.startsWith("x-vercel-") && !headerLowerCase.startsWith("x-forwarded-") && // https://blog.cloudflare.com/preventing-request-loops-using-cdn-loop/
846
846
  headerLowerCase !== "cf-connecting-ip" && headerLowerCase !== "cdn-loop" && headerLowerCase !== "cf-ew-via" && headerLowerCase !== "cf-ray" && // For Render https://render.com
847
847
  headerLowerCase !== "render-proxy-ttl" || headerLowerCase === WORKFLOW_LABEL_HEADER.toLocaleLowerCase();
@@ -3213,154 +3213,9 @@ var handleFailure = async ({
3213
3213
  }
3214
3214
  };
3215
3215
 
3216
- // src/serve/multi-region/handlers.ts
3216
+ // src/serve/options.ts
3217
3217
  var import_qstash10 = require("@upstash/qstash");
3218
-
3219
- // src/serve/multi-region/utils.ts
3220
- var VALID_REGIONS = ["EU_CENTRAL_1", "US_EAST_1"];
3221
- var getRegionFromEnvironment = (environment) => {
3222
- const region = environment.QSTASH_REGION;
3223
- return normalizeRegionHeader(region);
3224
- };
3225
- function readEnvironmentVariables(environmentVariables, environment, region) {
3226
- const result = {};
3227
- for (const variable of environmentVariables) {
3228
- const key = region ? `${region}_${variable}` : variable;
3229
- result[variable] = environment[key];
3230
- }
3231
- return result;
3232
- }
3233
- function readClientEnvironmentVariables(environment, region) {
3234
- return readEnvironmentVariables(["QSTASH_URL", "QSTASH_TOKEN"], environment, region);
3235
- }
3236
- function readReceiverEnvironmentVariables(environment, region) {
3237
- return readEnvironmentVariables(
3238
- ["QSTASH_CURRENT_SIGNING_KEY", "QSTASH_NEXT_SIGNING_KEY"],
3239
- environment,
3240
- region
3241
- );
3242
- }
3243
- function normalizeRegionHeader(region) {
3244
- if (!region) {
3245
- return void 0;
3246
- }
3247
- region = region.replaceAll("-", "_").toUpperCase();
3248
- if (VALID_REGIONS.includes(region)) {
3249
- return region;
3250
- }
3251
- console.warn(
3252
- `[Upstash Workflow] Invalid UPSTASH-REGION header value: "${region}". Expected one of: ${VALID_REGIONS.join(
3253
- ", "
3254
- )}.`
3255
- );
3256
- return void 0;
3257
- }
3258
-
3259
- // src/serve/multi-region/handlers.ts
3260
- var getHandlersForRequest = (qstashHandlers, regionHeader, isFirstInvocation) => {
3261
- if (qstashHandlers.mode === "single-region") {
3262
- return qstashHandlers.handlers;
3263
- }
3264
- let targetRegion;
3265
- if (isFirstInvocation) {
3266
- targetRegion = qstashHandlers.defaultRegion;
3267
- } else {
3268
- const normalizedRegion = regionHeader ? normalizeRegionHeader(regionHeader) : void 0;
3269
- targetRegion = normalizedRegion ?? qstashHandlers.defaultRegion;
3270
- }
3271
- const handler = qstashHandlers.handlers[targetRegion];
3272
- if (!handler) {
3273
- console.warn(
3274
- `[Upstash Workflow] No handler found for region "${targetRegion}". Falling back to default region.`
3275
- );
3276
- return qstashHandlers.handlers[qstashHandlers.defaultRegion];
3277
- }
3278
- return handler;
3279
- };
3280
- var createRegionalHandler = (environment, receiverConfig, region, clientOptions) => {
3281
- const clientEnv = readClientEnvironmentVariables(environment, region);
3282
- const client = new import_qstash10.Client({
3283
- ...clientOptions,
3284
- baseUrl: clientEnv.QSTASH_URL,
3285
- token: clientEnv.QSTASH_TOKEN
3286
- });
3287
- const receiver = getReceiver(environment, receiverConfig, region);
3288
- return { client, receiver };
3289
- };
3290
- var shouldUseMultiRegionMode = (environment, qstashClientOption) => {
3291
- const hasRegionEnv = Boolean(getRegionFromEnvironment(environment));
3292
- if (hasRegionEnv && (!qstashClientOption || !("http" in qstashClientOption))) {
3293
- return {
3294
- isMultiRegion: true,
3295
- defaultRegion: getRegionFromEnvironment(environment),
3296
- clientOptions: qstashClientOption
3297
- };
3298
- } else {
3299
- return { isMultiRegion: false };
3300
- }
3301
- };
3302
- var getQStashHandlers = ({
3303
- environment,
3304
- qstashClientOption,
3305
- receiverConfig
3306
- }) => {
3307
- const multiRegion = shouldUseMultiRegionMode(environment, qstashClientOption);
3308
- if (multiRegion.isMultiRegion) {
3309
- const regions = ["US_EAST_1", "EU_CENTRAL_1"];
3310
- const handlers = {};
3311
- for (const region of regions) {
3312
- try {
3313
- handlers[region] = createRegionalHandler(
3314
- environment,
3315
- receiverConfig,
3316
- region,
3317
- multiRegion.clientOptions
3318
- );
3319
- } catch (error) {
3320
- console.warn(`[Upstash Workflow] Failed to create handler for region ${region}:`, error);
3321
- }
3322
- }
3323
- return {
3324
- mode: "multi-region",
3325
- handlers,
3326
- defaultRegion: multiRegion.defaultRegion
3327
- };
3328
- } else {
3329
- return {
3330
- mode: "single-region",
3331
- handlers: {
3332
- client: qstashClientOption && "http" in qstashClientOption ? qstashClientOption : new import_qstash10.Client({
3333
- ...qstashClientOption,
3334
- baseUrl: environment.QSTASH_URL,
3335
- token: environment.QSTASH_TOKEN
3336
- }),
3337
- receiver: getReceiver(environment, receiverConfig)
3338
- }
3339
- };
3340
- }
3341
- };
3342
- var getReceiver = (environment, receiverConfig, region) => {
3343
- if (typeof receiverConfig === "string") {
3344
- if (receiverConfig === "set-to-undefined") {
3345
- return void 0;
3346
- }
3347
- const receiverEnv = readReceiverEnvironmentVariables(environment, region);
3348
- return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new import_qstash10.Receiver({
3349
- currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
3350
- nextSigningKey: receiverEnv.QSTASH_NEXT_SIGNING_KEY
3351
- }) : void 0;
3352
- } else {
3353
- return receiverConfig;
3354
- }
3355
- };
3356
- var getQStashHandlerOptions = (...params) => {
3357
- const handlers = getQStashHandlers(...params);
3358
- return {
3359
- qstashHandlers: handlers,
3360
- defaultReceiver: handlers.mode === "single-region" ? handlers.handlers.receiver : handlers.handlers[handlers.defaultRegion].receiver,
3361
- defaultClient: handlers.mode === "single-region" ? handlers.handlers.client : handlers.handlers[handlers.defaultRegion].client
3362
- };
3363
- };
3218
+ var import_qstash11 = require("@upstash/qstash");
3364
3219
 
3365
3220
  // src/middleware/middleware.ts
3366
3221
  var WorkflowMiddleware = class {
@@ -3499,17 +3354,14 @@ var createResponseData = (workflowRunId, detailedFinishCondition) => {
3499
3354
  };
3500
3355
  var processOptions = (options, internalOptions) => {
3501
3356
  const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
3502
- const {
3503
- qstashHandlers,
3504
- defaultClient: qstashClient,
3505
- defaultReceiver: receiver
3506
- } = getQStashHandlerOptions({
3507
- environment,
3508
- qstashClientOption: options?.qstashClient,
3509
- receiverConfig: options && "receiver" in options ? options.receiver ? options.receiver : "set-to-undefined" : "not-set"
3510
- });
3357
+ const receiverEnvironmentVariablesSet = Boolean(
3358
+ environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
3359
+ );
3511
3360
  return {
3512
- qstashClient,
3361
+ qstashClient: options?.qstashClient ?? new import_qstash11.Client({
3362
+ baseUrl: environment.QSTASH_URL,
3363
+ token: environment.QSTASH_TOKEN
3364
+ }),
3513
3365
  initialPayloadParser: (initialRequest) => {
3514
3366
  if (!initialRequest) {
3515
3367
  return void 0;
@@ -3524,7 +3376,10 @@ var processOptions = (options, internalOptions) => {
3524
3376
  throw error;
3525
3377
  }
3526
3378
  },
3527
- receiver,
3379
+ receiver: receiverEnvironmentVariablesSet ? new import_qstash10.Receiver({
3380
+ currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
3381
+ nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
3382
+ }) : void 0,
3528
3383
  baseUrl: environment.UPSTASH_WORKFLOW_URL,
3529
3384
  env: environment,
3530
3385
  disableTelemetry: false,
@@ -3538,8 +3393,7 @@ var processOptions = (options, internalOptions) => {
3538
3393
  headers: responseData.headers
3539
3394
  });
3540
3395
  }),
3541
- useJSONContent: internalOptions?.useJSONContent ?? false,
3542
- qstashHandlers
3396
+ useJSONContent: internalOptions?.useJSONContent ?? false
3543
3397
  }
3544
3398
  };
3545
3399
  };
@@ -3572,8 +3426,10 @@ var AUTH_FAIL_MESSAGE = `Failed to authenticate Workflow request. If this is une
3572
3426
  // src/serve/index.ts
3573
3427
  var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3574
3428
  const {
3429
+ qstashClient,
3575
3430
  initialPayloadParser,
3576
3431
  url,
3432
+ receiver,
3577
3433
  failureFunction,
3578
3434
  baseUrl,
3579
3435
  env,
@@ -3593,15 +3449,9 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3593
3449
  baseUrl,
3594
3450
  middlewareManager.dispatchDebug.bind(middlewareManager)
3595
3451
  );
3596
- const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3597
- const regionHeader = request.headers.get("upstash-region");
3598
- const { client: regionalClient, receiver: regionalReceiver } = getHandlersForRequest(
3599
- internal.qstashHandlers,
3600
- regionHeader,
3601
- isFirstInvocation
3602
- );
3603
3452
  const requestPayload = await getPayload(request) ?? "";
3604
- await verifyRequest(requestPayload, request.headers.get("upstash-signature"), regionalReceiver);
3453
+ await verifyRequest(requestPayload, request.headers.get("upstash-signature"), receiver);
3454
+ const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3605
3455
  middlewareManager.assignWorkflowRunId(workflowRunId);
3606
3456
  await middlewareManager.dispatchDebug("onInfo", {
3607
3457
  info: `Run id identified. isFirstInvocation: ${isFirstInvocation}, unknownSdk: ${unknownSdk}`
@@ -3611,7 +3461,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3611
3461
  isFirstInvocation,
3612
3462
  unknownSdk,
3613
3463
  workflowRunId,
3614
- requester: regionalClient.http,
3464
+ requester: qstashClient.http,
3615
3465
  messageId: request.headers.get("upstash-message-id"),
3616
3466
  dispatchDebug: middlewareManager.dispatchDebug.bind(middlewareManager)
3617
3467
  });
@@ -3632,7 +3482,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3632
3482
  const failureCheck = await handleFailure({
3633
3483
  request,
3634
3484
  requestPayload,
3635
- qstashClient: regionalClient,
3485
+ qstashClient,
3636
3486
  initialPayloadParser,
3637
3487
  routeFunction,
3638
3488
  failureFunction,
@@ -3664,7 +3514,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3664
3514
  const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
3665
3515
  const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
3666
3516
  const workflowContext = new WorkflowContext({
3667
- qstashClient: regionalClient,
3517
+ qstashClient,
3668
3518
  workflowRunId,
3669
3519
  initialPayload: initialPayloadParser(rawInitialPayload),
3670
3520
  headers: recreateUserHeaders(request.headers),
@@ -3695,7 +3545,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
3695
3545
  const callReturnCheck = await handleThirdPartyCallResult({
3696
3546
  request,
3697
3547
  requestPayload: rawInitialPayload,
3698
- client: regionalClient,
3548
+ client: qstashClient,
3699
3549
  workflowUrl,
3700
3550
  telemetry: telemetry2,
3701
3551
  middlewareManager
package/hono.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  SDK_TELEMETRY,
3
3
  serveBase,
4
4
  serveManyBase
5
- } from "./chunk-2Z32SOYM.mjs";
5
+ } from "./chunk-5GWDM6XJ.mjs";
6
6
 
7
7
  // platforms/hono.ts
8
8
  var telemetry = {
package/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as WorkflowClient, b as WorkflowReceiver, c as RouteFunction, d as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, e as Waiter } from './types-pEje3VEB.mjs';
2
- export { A as AsyncStepFunction, C as CallResponse, v as CallSettings, D as DetailedFinishCondition, t as Duration, E as ExclusiveValidationOptions, o as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, x as InvokableWorkflow, w as InvokeStepResponse, I as InvokeWorkflowRequest, L as LazyInvokeStepParams, s as NotifyStepResponse, P as ParallelCallState, Q as QStashClientExtraConfig, p as RequiredExceptFields, l as Step, n as StepFunction, k as StepTypes, m as SyncStepFunction, u as WaitEventOptions, q as WaitRequest, r as WaitStepResponse, g as WorkflowAbort, j as WorkflowContext, f as WorkflowError, h as WorkflowNonRetryableError, i as WorkflowRetryAfterError } from './types-pEje3VEB.mjs';
1
+ import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as RouteFunction, b as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, c as Waiter } from './types-ByzQdZjb.mjs';
2
+ export { A as AsyncStepFunction, C as CallResponse, v as CallSettings, D as DetailedFinishCondition, t as Duration, E as ExclusiveValidationOptions, o as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, x as InvokableWorkflow, w as InvokeStepResponse, I as InvokeWorkflowRequest, L as LazyInvokeStepParams, s as NotifyStepResponse, P as ParallelCallState, p as RequiredExceptFields, l as Step, n as StepFunction, k as StepTypes, m as SyncStepFunction, u as WaitEventOptions, q as WaitRequest, r as WaitStepResponse, e as WorkflowAbort, i as WorkflowClient, h as WorkflowContext, d as WorkflowError, f as WorkflowNonRetryableError, j as WorkflowReceiver, g as WorkflowRetryAfterError } from './types-ByzQdZjb.mjs';
3
3
  import { HTTPMethods, FlowControl, PublishRequest, Client as Client$1 } from '@upstash/qstash';
4
4
  import 'zod';
5
5
 
@@ -434,27 +434,6 @@ type DLQResumeRestartResponse = {
434
434
 
435
435
  declare const loggingMiddleware: WorkflowMiddleware<unknown, unknown>;
436
436
 
437
- declare const VALID_REGIONS: readonly ["EU_CENTRAL_1", "US_EAST_1"];
438
- type QStashRegion = (typeof VALID_REGIONS)[number];
439
- /**
440
- * Regional handler containing client and optional receiver
441
- */
442
- type RegionalHandler = {
443
- client: WorkflowClient;
444
- receiver?: WorkflowReceiver;
445
- };
446
- /**
447
- * QStash handlers for single or multi-region mode
448
- */
449
- type QStashHandlers = {
450
- mode: "single-region";
451
- handlers: RegionalHandler;
452
- } | {
453
- mode: "multi-region";
454
- handlers: Record<QStashRegion, RegionalHandler>;
455
- defaultRegion: QStashRegion;
456
- };
457
-
458
437
  type ResponseData = {
459
438
  text: string;
460
439
  status: number;
@@ -473,10 +452,6 @@ type InternalServeOptions<TResponse extends Response = Response> = {
473
452
  * in `triggerFirstInvocation`.
474
453
  */
475
454
  useJSONContent: boolean;
476
- /**
477
- * QStash handlers for single or multi-region mode
478
- */
479
- qstashHandlers: QStashHandlers;
480
455
  };
481
456
 
482
457
  /**
@@ -909,4 +884,4 @@ declare class Client {
909
884
  get dlq(): DLQ;
910
885
  }
911
886
 
912
- export { Client, type DLQResumeRestartOptions, type DLQResumeRestartResponse, NotifyResponse, RawStep, RouteFunction, type StepError, type StepLog, StepType, Telemetry, type TriggerOptions, Waiter, WorkflowClient, WorkflowMiddleware, WorkflowReceiver, type WorkflowRunLog, type WorkflowRunLogs, WorkflowServeOptions, loggingMiddleware, serve };
887
+ export { Client, type DLQResumeRestartOptions, type DLQResumeRestartResponse, NotifyResponse, RawStep, RouteFunction, type StepError, type StepLog, StepType, Telemetry, type TriggerOptions, Waiter, WorkflowMiddleware, type WorkflowRunLog, type WorkflowRunLogs, WorkflowServeOptions, loggingMiddleware, serve };