@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/astro.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { APIContext, APIRoute } from 'astro';
2
- import { j as WorkflowContext, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.mjs';
3
- import { s as serveManyBase } from './serve-many-DhB8-zPD.mjs';
2
+ import { h as WorkflowContext, 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/astro.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { APIContext, APIRoute } from 'astro';
2
- import { j as WorkflowContext, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.js';
3
- import { s as serveManyBase } from './serve-many-qnfynN1x.js';
2
+ import { h as WorkflowContext, 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
 
package/astro.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/astro.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/astro.ts
8
8
  var telemetry = {
@@ -893,7 +893,7 @@ var recreateUserHeaders = (headers) => {
893
893
  const pairs = headers.entries();
894
894
  for (const [header, value] of pairs) {
895
895
  const headerLowerCase = header.toLowerCase();
896
- const isUserHeader = headerLowerCase !== "upstash-region" && !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
896
+ const isUserHeader = !headerLowerCase.startsWith("upstash-workflow-") && // https://vercel.com/docs/edge-network/headers/request-headers#x-vercel-id
897
897
  !headerLowerCase.startsWith("x-vercel-") && !headerLowerCase.startsWith("x-forwarded-") && // https://blog.cloudflare.com/preventing-request-loops-using-cdn-loop/
898
898
  headerLowerCase !== "cf-connecting-ip" && headerLowerCase !== "cdn-loop" && headerLowerCase !== "cf-ew-via" && headerLowerCase !== "cf-ray" && // For Render https://render.com
899
899
  headerLowerCase !== "render-proxy-ttl" || headerLowerCase === WORKFLOW_LABEL_HEADER.toLocaleLowerCase();
@@ -3264,156 +3264,9 @@ var handleFailure = async ({
3264
3264
  }
3265
3265
  };
3266
3266
 
3267
- // src/serve/multi-region/handlers.ts
3268
- import { Client as Client3, Receiver } from "@upstash/qstash";
3269
-
3270
- // src/serve/multi-region/utils.ts
3271
- var VALID_REGIONS = ["EU_CENTRAL_1", "US_EAST_1"];
3272
- var getRegionFromEnvironment = (environment) => {
3273
- const region = environment.QSTASH_REGION;
3274
- return normalizeRegionHeader(region);
3275
- };
3276
- function readEnvironmentVariables(environmentVariables, environment, region) {
3277
- const result = {};
3278
- for (const variable of environmentVariables) {
3279
- const key = region ? `${region}_${variable}` : variable;
3280
- result[variable] = environment[key];
3281
- }
3282
- return result;
3283
- }
3284
- function readClientEnvironmentVariables(environment, region) {
3285
- return readEnvironmentVariables(["QSTASH_URL", "QSTASH_TOKEN"], environment, region);
3286
- }
3287
- function readReceiverEnvironmentVariables(environment, region) {
3288
- return readEnvironmentVariables(
3289
- ["QSTASH_CURRENT_SIGNING_KEY", "QSTASH_NEXT_SIGNING_KEY"],
3290
- environment,
3291
- region
3292
- );
3293
- }
3294
- function normalizeRegionHeader(region) {
3295
- if (!region) {
3296
- return void 0;
3297
- }
3298
- region = region.replaceAll("-", "_").toUpperCase();
3299
- if (VALID_REGIONS.includes(region)) {
3300
- return region;
3301
- }
3302
- console.warn(
3303
- `[Upstash Workflow] Invalid UPSTASH-REGION header value: "${region}". Expected one of: ${VALID_REGIONS.join(
3304
- ", "
3305
- )}.`
3306
- );
3307
- return void 0;
3308
- }
3309
-
3310
- // src/serve/multi-region/handlers.ts
3311
- var getHandlersForRequest = (qstashHandlers, regionHeader, isFirstInvocation) => {
3312
- if (qstashHandlers.mode === "single-region") {
3313
- return qstashHandlers.handlers;
3314
- }
3315
- let targetRegion;
3316
- if (isFirstInvocation) {
3317
- targetRegion = qstashHandlers.defaultRegion;
3318
- } else {
3319
- const normalizedRegion = regionHeader ? normalizeRegionHeader(regionHeader) : void 0;
3320
- targetRegion = normalizedRegion ?? qstashHandlers.defaultRegion;
3321
- }
3322
- const handler = qstashHandlers.handlers[targetRegion];
3323
- if (!handler) {
3324
- console.warn(
3325
- `[Upstash Workflow] No handler found for region "${targetRegion}". Falling back to default region.`
3326
- );
3327
- return qstashHandlers.handlers[qstashHandlers.defaultRegion];
3328
- }
3329
- return handler;
3330
- };
3331
- var createRegionalHandler = (environment, receiverConfig, region, clientOptions) => {
3332
- const clientEnv = readClientEnvironmentVariables(environment, region);
3333
- const client = new Client3({
3334
- ...clientOptions,
3335
- baseUrl: clientEnv.QSTASH_URL,
3336
- token: clientEnv.QSTASH_TOKEN
3337
- });
3338
- const receiver = getReceiver(environment, receiverConfig, region);
3339
- return { client, receiver };
3340
- };
3341
- var shouldUseMultiRegionMode = (environment, qstashClientOption) => {
3342
- const hasRegionEnv = Boolean(getRegionFromEnvironment(environment));
3343
- if (hasRegionEnv && (!qstashClientOption || !("http" in qstashClientOption))) {
3344
- return {
3345
- isMultiRegion: true,
3346
- defaultRegion: getRegionFromEnvironment(environment),
3347
- clientOptions: qstashClientOption
3348
- };
3349
- } else {
3350
- return { isMultiRegion: false };
3351
- }
3352
- };
3353
- var getQStashHandlers = ({
3354
- environment,
3355
- qstashClientOption,
3356
- receiverConfig
3357
- }) => {
3358
- const multiRegion = shouldUseMultiRegionMode(environment, qstashClientOption);
3359
- if (multiRegion.isMultiRegion) {
3360
- const regions = ["US_EAST_1", "EU_CENTRAL_1"];
3361
- const handlers = {};
3362
- for (const region of regions) {
3363
- try {
3364
- handlers[region] = createRegionalHandler(
3365
- environment,
3366
- receiverConfig,
3367
- region,
3368
- multiRegion.clientOptions
3369
- );
3370
- } catch (error) {
3371
- console.warn(`[Upstash Workflow] Failed to create handler for region ${region}:`, error);
3372
- }
3373
- }
3374
- return {
3375
- mode: "multi-region",
3376
- handlers,
3377
- defaultRegion: multiRegion.defaultRegion
3378
- };
3379
- } else {
3380
- return {
3381
- mode: "single-region",
3382
- handlers: {
3383
- client: qstashClientOption && "http" in qstashClientOption ? qstashClientOption : new Client3({
3384
- ...qstashClientOption,
3385
- baseUrl: environment.QSTASH_URL,
3386
- token: environment.QSTASH_TOKEN
3387
- }),
3388
- receiver: getReceiver(environment, receiverConfig)
3389
- }
3390
- };
3391
- }
3392
- };
3393
- var getReceiver = (environment, receiverConfig, region) => {
3394
- if (typeof receiverConfig === "string") {
3395
- if (receiverConfig === "set-to-undefined") {
3396
- return void 0;
3397
- }
3398
- const receiverEnv = readReceiverEnvironmentVariables(environment, region);
3399
- return receiverEnv.QSTASH_CURRENT_SIGNING_KEY && receiverEnv.QSTASH_NEXT_SIGNING_KEY ? new Receiver({
3400
- currentSigningKey: receiverEnv.QSTASH_CURRENT_SIGNING_KEY,
3401
- nextSigningKey: receiverEnv.QSTASH_NEXT_SIGNING_KEY
3402
- }) : void 0;
3403
- } else {
3404
- return receiverConfig;
3405
- }
3406
- };
3407
- var getQStashHandlerOptions = (...params) => {
3408
- const handlers = getQStashHandlers(...params);
3409
- return {
3410
- qstashHandlers: handlers,
3411
- defaultReceiver: handlers.mode === "single-region" ? handlers.handlers.receiver : handlers.handlers[handlers.defaultRegion].receiver,
3412
- defaultClient: handlers.mode === "single-region" ? handlers.handlers.client : handlers.handlers[handlers.defaultRegion].client
3413
- };
3414
- };
3415
-
3416
3267
  // src/serve/options.ts
3268
+ import { Receiver } from "@upstash/qstash";
3269
+ import { Client as Client3 } from "@upstash/qstash";
3417
3270
  var createResponseData = (workflowRunId, detailedFinishCondition) => {
3418
3271
  const baseHeaders = {
3419
3272
  [WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
@@ -3476,17 +3329,14 @@ var createResponseData = (workflowRunId, detailedFinishCondition) => {
3476
3329
  };
3477
3330
  var processOptions = (options, internalOptions) => {
3478
3331
  const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
3479
- const {
3480
- qstashHandlers,
3481
- defaultClient: qstashClient,
3482
- defaultReceiver: receiver
3483
- } = getQStashHandlerOptions({
3484
- environment,
3485
- qstashClientOption: options?.qstashClient,
3486
- receiverConfig: options && "receiver" in options ? options.receiver ? options.receiver : "set-to-undefined" : "not-set"
3487
- });
3332
+ const receiverEnvironmentVariablesSet = Boolean(
3333
+ environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
3334
+ );
3488
3335
  return {
3489
- qstashClient,
3336
+ qstashClient: options?.qstashClient ?? new Client3({
3337
+ baseUrl: environment.QSTASH_URL,
3338
+ token: environment.QSTASH_TOKEN
3339
+ }),
3490
3340
  initialPayloadParser: (initialRequest) => {
3491
3341
  if (!initialRequest) {
3492
3342
  return void 0;
@@ -3501,7 +3351,10 @@ var processOptions = (options, internalOptions) => {
3501
3351
  throw error;
3502
3352
  }
3503
3353
  },
3504
- receiver,
3354
+ receiver: receiverEnvironmentVariablesSet ? new Receiver({
3355
+ currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
3356
+ nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
3357
+ }) : void 0,
3505
3358
  baseUrl: environment.UPSTASH_WORKFLOW_URL,
3506
3359
  env: environment,
3507
3360
  disableTelemetry: false,
@@ -3515,8 +3368,7 @@ var processOptions = (options, internalOptions) => {
3515
3368
  headers: responseData.headers
3516
3369
  });
3517
3370
  }),
3518
- useJSONContent: internalOptions?.useJSONContent ?? false,
3519
- qstashHandlers
3371
+ useJSONContent: internalOptions?.useJSONContent ?? false
3520
3372
  }
3521
3373
  };
3522
3374
  };
@@ -3549,8 +3401,10 @@ var AUTH_FAIL_MESSAGE = `Failed to authenticate Workflow request. If this is une
3549
3401
  // src/serve/index.ts
3550
3402
  var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3551
3403
  const {
3404
+ qstashClient,
3552
3405
  initialPayloadParser,
3553
3406
  url,
3407
+ receiver,
3554
3408
  failureFunction,
3555
3409
  baseUrl,
3556
3410
  env,
@@ -3570,15 +3424,9 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3570
3424
  baseUrl,
3571
3425
  middlewareManager.dispatchDebug.bind(middlewareManager)
3572
3426
  );
3573
- const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3574
- const regionHeader = request.headers.get("upstash-region");
3575
- const { client: regionalClient, receiver: regionalReceiver } = getHandlersForRequest(
3576
- internal.qstashHandlers,
3577
- regionHeader,
3578
- isFirstInvocation
3579
- );
3580
3427
  const requestPayload = await getPayload(request) ?? "";
3581
- await verifyRequest(requestPayload, request.headers.get("upstash-signature"), regionalReceiver);
3428
+ await verifyRequest(requestPayload, request.headers.get("upstash-signature"), receiver);
3429
+ const { isFirstInvocation, workflowRunId, unknownSdk } = validateRequest(request);
3582
3430
  middlewareManager.assignWorkflowRunId(workflowRunId);
3583
3431
  await middlewareManager.dispatchDebug("onInfo", {
3584
3432
  info: `Run id identified. isFirstInvocation: ${isFirstInvocation}, unknownSdk: ${unknownSdk}`
@@ -3588,7 +3436,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3588
3436
  isFirstInvocation,
3589
3437
  unknownSdk,
3590
3438
  workflowRunId,
3591
- requester: regionalClient.http,
3439
+ requester: qstashClient.http,
3592
3440
  messageId: request.headers.get("upstash-message-id"),
3593
3441
  dispatchDebug: middlewareManager.dispatchDebug.bind(middlewareManager)
3594
3442
  });
@@ -3609,7 +3457,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3609
3457
  const failureCheck = await handleFailure({
3610
3458
  request,
3611
3459
  requestPayload,
3612
- qstashClient: regionalClient,
3460
+ qstashClient,
3613
3461
  initialPayloadParser,
3614
3462
  routeFunction,
3615
3463
  failureFunction,
@@ -3641,7 +3489,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3641
3489
  const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
3642
3490
  const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
3643
3491
  const workflowContext = new WorkflowContext({
3644
- qstashClient: regionalClient,
3492
+ qstashClient,
3645
3493
  workflowRunId,
3646
3494
  initialPayload: initialPayloadParser(rawInitialPayload),
3647
3495
  headers: recreateUserHeaders(request.headers),
@@ -3672,7 +3520,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
3672
3520
  const callReturnCheck = await handleThirdPartyCallResult({
3673
3521
  request,
3674
3522
  requestPayload: rawInitialPayload,
3675
- client: regionalClient,
3523
+ client: qstashClient,
3676
3524
  workflowUrl,
3677
3525
  telemetry,
3678
3526
  middlewareManager
package/cloudflare.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as RouteFunction, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.mjs';
2
- import { s as serveManyBase } from './serve-many-DhB8-zPD.mjs';
1
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.mjs';
2
+ import { s as serveManyBase } from './serve-many-qpxb-yr-.mjs';
3
3
  import '@upstash/qstash';
4
4
  import 'zod';
5
5
 
package/cloudflare.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as RouteFunction, d as WorkflowServeOptions, x as InvokableWorkflow } from './types-pEje3VEB.js';
2
- import { s as serveManyBase } from './serve-many-qnfynN1x.js';
1
+ import { a as RouteFunction, b as WorkflowServeOptions, x as InvokableWorkflow } from './types-ByzQdZjb.js';
2
+ import { s as serveManyBase } from './serve-many-CFlNO2Iq.js';
3
3
  import '@upstash/qstash';
4
4
  import 'zod';
5
5