@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/cloudflare.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/cloudflare.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/cloudflare.ts
8
8
  var getArgs = (args) => {
package/express.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as express_serve_static_core from 'express-serve-static-core';
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 { Router } from 'express';
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/express.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as express_serve_static_core from 'express-serve-static-core';
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 { Router } from 'express';
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/express.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/express.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/express.ts
8
8
  import {
package/h3.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as h3 from 'h3';
2
- import { c as RouteFunction, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.mjs';
3
- import { s as serveManyBase } from './serve-many-DhB8-zPD.mjs';
2
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.mjs';
3
+ import { s as serveManyBase } from './serve-many-qpxb-yr-.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, x as InvokableWorkflow } from './types-pEje3VEB.js';
3
- import { s as serveManyBase } from './serve-many-qnfynN1x.js';
2
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.js';
3
+ import { s as serveManyBase } from './serve-many-CFlNO2Iq.js';
4
4
  import '@upstash/qstash';
5
5
  import 'zod';
6
6