@upstash/workflow 0.2.8-rc-invoke → 0.2.8

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/nextjs.js CHANGED
@@ -20,11 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // platforms/nextjs.ts
21
21
  var nextjs_exports = {};
22
22
  __export(nextjs_exports, {
23
- createWorkflow: () => createWorkflow,
24
- createWorkflowPagesRouter: () => createWorkflowPagesRouter,
25
23
  serve: () => serve,
26
- serveMany: () => serveMany,
27
- serveManyPagesRouter: () => serveManyPagesRouter,
28
24
  servePagesRouter: () => servePagesRouter
29
25
  });
30
26
  module.exports = __toCommonJS(nextjs_exports);
@@ -93,7 +89,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
93
89
  var DEFAULT_CONTENT_TYPE = "application/json";
94
90
  var NO_CONCURRENCY = 1;
95
91
  var DEFAULT_RETRIES = 3;
96
- var VERSION = "v0.2.7";
92
+ var VERSION = "v0.2.3";
97
93
  var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
98
94
  var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
99
95
  var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
@@ -140,31 +136,6 @@ var formatWorkflowError = (error) => {
140
136
  };
141
137
  };
142
138
 
143
- // src/utils.ts
144
- var NANOID_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
145
- var NANOID_LENGTH = 21;
146
- function getRandomInt() {
147
- return Math.floor(Math.random() * NANOID_CHARS.length);
148
- }
149
- function nanoid() {
150
- return Array.from({ length: NANOID_LENGTH }).map(() => NANOID_CHARS[getRandomInt()]).join("");
151
- }
152
- function getWorkflowRunId(id) {
153
- return `wfr_${id ?? nanoid()}`;
154
- }
155
- function decodeBase64(base64) {
156
- try {
157
- const binString = atob(base64);
158
- const intArray = Uint8Array.from(binString, (m) => m.codePointAt(0));
159
- return new TextDecoder().decode(intArray);
160
- } catch (error) {
161
- console.warn(
162
- `Upstash Qstash: Failed while decoding base64 "${base64}". Decoding with atob and returning it instead. ${error}`
163
- );
164
- return atob(base64);
165
- }
166
- }
167
-
168
139
  // src/context/steps.ts
169
140
  var BaseLazyStep = class {
170
141
  stepName;
@@ -345,41 +316,6 @@ var LazyNotifyStep = class extends LazyFunctionStep {
345
316
  });
346
317
  }
347
318
  };
348
- var LazyInvokeStep = class extends BaseLazyStep {
349
- stepType = "Invoke";
350
- params;
351
- constructor(stepName, { workflow, body, headers = {}, workflowRunId, retries }) {
352
- super(stepName);
353
- this.params = {
354
- workflow,
355
- body,
356
- headers,
357
- workflowRunId: getWorkflowRunId(workflowRunId),
358
- retries
359
- };
360
- }
361
- getPlanStep(concurrent, targetStep) {
362
- return {
363
- stepId: 0,
364
- stepName: this.stepName,
365
- stepType: this.stepType,
366
- concurrent,
367
- targetStep
368
- };
369
- }
370
- /**
371
- * won't be used as it's the server who will add the result step
372
- * in Invoke step.
373
- */
374
- getResultStep(concurrent, stepId) {
375
- return Promise.resolve({
376
- stepId,
377
- stepName: this.stepName,
378
- stepType: this.stepType,
379
- concurrent
380
- });
381
- }
382
- };
383
319
 
384
320
  // node_modules/neverthrow/dist/index.es.js
385
321
  var defaultErrorConfig = {
@@ -804,8 +740,7 @@ var StepTypes = [
804
740
  "SleepUntil",
805
741
  "Call",
806
742
  "Wait",
807
- "Notify",
808
- "Invoke"
743
+ "Notify"
809
744
  ];
810
745
 
811
746
  // src/workflow-requests.ts
@@ -869,8 +804,8 @@ var triggerRouteFunction = async ({
869
804
  debug
870
805
  }) => {
871
806
  try {
872
- const result = await onStep();
873
- await onCleanup(result);
807
+ await onStep();
808
+ await onCleanup();
874
809
  return ok("workflow-finished");
875
810
  } catch (error) {
876
811
  const error_ = error;
@@ -891,15 +826,14 @@ var triggerRouteFunction = async ({
891
826
  }
892
827
  }
893
828
  };
894
- var triggerWorkflowDelete = async (workflowContext, result, debug, cancel = false) => {
829
+ var triggerWorkflowDelete = async (workflowContext, debug, cancel = false) => {
895
830
  await debug?.log("SUBMIT", "SUBMIT_CLEANUP", {
896
831
  deletedWorkflowRunId: workflowContext.workflowRunId
897
832
  });
898
833
  await workflowContext.qstashClient.http.request({
899
834
  path: ["v2", "workflows", "runs", `${workflowContext.workflowRunId}?cancel=${cancel}`],
900
835
  method: "DELETE",
901
- parseResponseAsJson: false,
902
- body: JSON.stringify(result)
836
+ parseResponseAsJson: false
903
837
  });
904
838
  await debug?.log(
905
839
  "SUBMIT",
@@ -1054,14 +988,11 @@ var getHeaders = ({
1054
988
  callTimeout,
1055
989
  telemetry
1056
990
  }) => {
1057
- const contentType = (userHeaders ? userHeaders.get("Content-Type") : void 0) ?? DEFAULT_CONTENT_TYPE;
1058
991
  const baseHeaders = {
1059
992
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
1060
993
  [WORKFLOW_ID_HEADER]: workflowRunId,
1061
994
  [WORKFLOW_URL_HEADER]: workflowUrl,
1062
995
  [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody",
1063
- [WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
1064
- "content-type": contentType,
1065
996
  ...telemetry ? getTelemetryHeaders(telemetry) : {}
1066
997
  };
1067
998
  if (!step?.callUrl) {
@@ -1072,13 +1003,18 @@ var getHeaders = ({
1072
1003
  }
1073
1004
  if (failureUrl) {
1074
1005
  baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
1006
+ baseHeaders[`Upstash-Failure-Callback-Forward-Upstash-Workflow-Failure-Callback`] = "true";
1007
+ baseHeaders["Upstash-Failure-Callback-Workflow-Runid"] = workflowRunId;
1008
+ baseHeaders["Upstash-Failure-Callback-Workflow-Init"] = "false";
1009
+ baseHeaders["Upstash-Failure-Callback-Workflow-Url"] = workflowUrl;
1010
+ baseHeaders["Upstash-Failure-Callback-Workflow-Calltype"] = "failureCall";
1011
+ if (retries !== void 0) {
1012
+ baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
1013
+ }
1075
1014
  if (!step?.callUrl) {
1076
1015
  baseHeaders["Upstash-Failure-Callback"] = failureUrl;
1077
1016
  }
1078
1017
  }
1079
- if (step?.stepType === "Invoke") {
1080
- baseHeaders["upstash-workflow-invoke"] = "true";
1081
- }
1082
1018
  if (step?.callUrl) {
1083
1019
  baseHeaders["Upstash-Retries"] = callRetries?.toString() ?? "0";
1084
1020
  baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete,InitialBody";
@@ -1100,6 +1036,7 @@ var getHeaders = ({
1100
1036
  baseHeaders[`Upstash-Failure-Callback-Forward-${header}`] = userHeaders.get(header);
1101
1037
  }
1102
1038
  }
1039
+ const contentType = (userHeaders ? userHeaders.get("Content-Type") : void 0) ?? DEFAULT_CONTENT_TYPE;
1103
1040
  if (step?.callHeaders) {
1104
1041
  const forwardedHeaders = Object.fromEntries(
1105
1042
  Object.entries(step.callHeaders).map(([header, value]) => [
@@ -1149,7 +1086,8 @@ var getHeaders = ({
1149
1086
  "Upstash-Workflow-Runid": [workflowRunId],
1150
1087
  [WORKFLOW_INIT_HEADER]: ["false"],
1151
1088
  [WORKFLOW_URL_HEADER]: [workflowUrl],
1152
- "Upstash-Workflow-CallType": ["step"]
1089
+ "Upstash-Workflow-CallType": ["step"],
1090
+ "Content-Type": [contentType]
1153
1091
  }
1154
1092
  };
1155
1093
  }
@@ -1444,23 +1382,7 @@ var AutoExecutor = class _AutoExecutor {
1444
1382
  method: "POST",
1445
1383
  parseResponseAsJson: false
1446
1384
  });
1447
- throw new WorkflowAbort(waitStep.stepName, waitStep);
1448
- }
1449
- if (steps.length === 1 && lazySteps[0] instanceof LazyInvokeStep) {
1450
- const invokeStep = steps[0];
1451
- const lazyInvokeStep = lazySteps[0];
1452
- await lazyInvokeStep.params.workflow.callback(
1453
- {
1454
- body: lazyInvokeStep.params.body,
1455
- headers: lazyInvokeStep.params.headers,
1456
- workflowRunId: lazyInvokeStep.params.workflowRunId,
1457
- workflow: lazyInvokeStep.params.workflow,
1458
- retries: lazyInvokeStep.params.retries
1459
- },
1460
- invokeStep,
1461
- this.context
1462
- );
1463
- throw new WorkflowAbort(invokeStep.stepName, invokeStep);
1385
+ throw new WorkflowAbort(steps[0].stepName, steps[0]);
1464
1386
  }
1465
1387
  const result = await this.context.qstashClient.batchJSON(
1466
1388
  steps.map((singleStep, index) => {
@@ -1779,9 +1701,10 @@ var wrapTools = ({
1779
1701
  return Object.fromEntries(
1780
1702
  Object.entries(tools).map((toolInfo) => {
1781
1703
  const [toolName, tool3] = toolInfo;
1704
+ const executeAsStep = "executeAsStep" in tool3 ? tool3.executeAsStep : true;
1782
1705
  const aiSDKTool = convertToAISDKTool(tool3);
1783
1706
  const execute = aiSDKTool.execute;
1784
- if (execute) {
1707
+ if (execute && executeAsStep) {
1785
1708
  const wrappedExecute = (...params) => {
1786
1709
  return context.run(`Run tool ${toolName}`, () => execute(...params));
1787
1710
  };
@@ -2377,13 +2300,6 @@ var WorkflowContext = class {
2377
2300
  return result;
2378
2301
  }
2379
2302
  }
2380
- async invoke(stepName, settings) {
2381
- const result = await this.addStep(new LazyInvokeStep(stepName, settings));
2382
- return {
2383
- ...result,
2384
- body: result.body ? JSON.parse(result.body) : void 0
2385
- };
2386
- }
2387
2303
  /**
2388
2304
  * Cancel the current workflow run
2389
2305
  *
@@ -2461,6 +2377,31 @@ var WorkflowLogger = class _WorkflowLogger {
2461
2377
  }
2462
2378
  };
2463
2379
 
2380
+ // src/utils.ts
2381
+ var NANOID_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
2382
+ var NANOID_LENGTH = 21;
2383
+ function getRandomInt() {
2384
+ return Math.floor(Math.random() * NANOID_CHARS.length);
2385
+ }
2386
+ function nanoid() {
2387
+ return Array.from({ length: NANOID_LENGTH }).map(() => NANOID_CHARS[getRandomInt()]).join("");
2388
+ }
2389
+ function getWorkflowRunId(id) {
2390
+ return `wfr_${id ?? nanoid()}`;
2391
+ }
2392
+ function decodeBase64(base64) {
2393
+ try {
2394
+ const binString = atob(base64);
2395
+ const intArray = Uint8Array.from(binString, (m) => m.codePointAt(0));
2396
+ return new TextDecoder().decode(intArray);
2397
+ } catch (error) {
2398
+ console.warn(
2399
+ `Upstash Qstash: Failed while decoding base64 "${base64}". Decoding with atob and returning it instead. ${error}`
2400
+ );
2401
+ return atob(base64);
2402
+ }
2403
+ }
2404
+
2464
2405
  // src/serve/authorization.ts
2465
2406
  var import_qstash8 = require("@upstash/qstash");
2466
2407
  var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
@@ -2906,8 +2847,8 @@ var serveBase = (routeFunction, telemetry, options) => {
2906
2847
  } else if (callReturnCheck.value === "continue-workflow") {
2907
2848
  const result = isFirstInvocation ? await triggerFirstInvocation({ workflowContext, useJSONContent, telemetry, debug }) : await triggerRouteFunction({
2908
2849
  onStep: async () => routeFunction(workflowContext),
2909
- onCleanup: async (result2) => {
2910
- await triggerWorkflowDelete(workflowContext, result2, debug);
2850
+ onCleanup: async () => {
2851
+ await triggerWorkflowDelete(workflowContext, debug);
2911
2852
  },
2912
2853
  onCancel: async () => {
2913
2854
  await makeCancelRequest(workflowContext.qstashClient.http, workflowRunId);
@@ -2939,106 +2880,15 @@ var serveBase = (routeFunction, telemetry, options) => {
2939
2880
  return { handler: safeHandler };
2940
2881
  };
2941
2882
 
2942
- // src/serve/serve-many.ts
2943
- var serveManyBase = ({
2944
- workflows,
2945
- getWorkflowId
2946
- }) => {
2947
- const workflowIds = [];
2948
- const workflowMap = Object.fromEntries(
2949
- Object.entries(workflows).map((workflow) => {
2950
- const workflowId = workflow[0];
2951
- if (workflowIds.includes(workflowId)) {
2952
- throw new WorkflowError(
2953
- `Duplicate workflow name found: '${workflowId}'. Please set different workflow names in serveMany.`
2954
- );
2955
- }
2956
- if (workflowId.includes("/")) {
2957
- throw new WorkflowError(
2958
- `Invalid workflow name found: '${workflowId}'. Workflow name cannot contain '/'.`
2959
- );
2960
- }
2961
- workflowIds.push(workflowId);
2962
- workflow[1].workflowId = workflowId;
2963
- return [workflowId, workflow[1].handler];
2964
- })
2965
- );
2966
- return {
2967
- handler: async (...params) => {
2968
- const pickedWorkflowId = getWorkflowId(...params);
2969
- if (!pickedWorkflowId) {
2970
- throw new WorkflowError(`Unexpected request in serveMany. workflowId not set. Please update the URL of your request.`);
2971
- }
2972
- const workflow = workflowMap[pickedWorkflowId];
2973
- if (!workflow) {
2974
- throw new WorkflowError(`No workflows in serveMany found for '${pickedWorkflowId}'. Please update the URL of your request.`);
2975
- }
2976
- return await workflow(...params);
2977
- }
2978
- };
2979
- };
2980
- var createInvokeCallback = (telemetry) => {
2981
- const invokeCallback = async (settings, invokeStep, context) => {
2982
- const { body, workflow, headers = {}, workflowRunId = getWorkflowRunId(), retries } = settings;
2983
- const { workflowId } = workflow;
2984
- if (!workflowId) {
2985
- throw new WorkflowError("You can only invoke workflow which has a workflowId");
2986
- }
2987
- const { headers: invokerHeaders } = getHeaders({
2988
- initHeaderValue: "false",
2989
- workflowRunId: context.workflowRunId,
2990
- workflowUrl: context.url,
2991
- userHeaders: context.headers,
2992
- failureUrl: context.failureUrl,
2993
- retries: context.retries,
2994
- telemetry
2995
- });
2996
- invokerHeaders["Upstash-Workflow-Runid"] = context.workflowRunId;
2997
- const newUrl = context.url.replace(/[^/]+$/, workflowId);
2998
- const { headers: triggerHeaders } = getHeaders({
2999
- initHeaderValue: "true",
3000
- workflowRunId,
3001
- workflowUrl: newUrl,
3002
- userHeaders: new Headers(headers),
3003
- retries,
3004
- telemetry
3005
- });
3006
- triggerHeaders["Upstash-Workflow-Invoke"] = "true";
3007
- const request = {
3008
- body: JSON.stringify(body),
3009
- headers: Object.fromEntries(
3010
- Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
3011
- ),
3012
- workflowRunId,
3013
- workflowUrl: context.url,
3014
- step: invokeStep
3015
- };
3016
- await context.qstashClient.publish({
3017
- headers: triggerHeaders,
3018
- method: "POST",
3019
- body: JSON.stringify(request),
3020
- url: newUrl
3021
- });
3022
- return void 0;
3023
- };
3024
- return invokeCallback;
3025
- };
3026
-
3027
2883
  // platforms/nextjs.ts
3028
- var appTelemetry = {
3029
- sdk: SDK_TELEMETRY,
3030
- framework: "nextjs",
3031
- runtime: `node@${process.version}`
3032
- };
3033
- var pagesTelemetry = {
3034
- sdk: SDK_TELEMETRY,
3035
- framework: "nextjs-pages",
3036
- runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
3037
- };
3038
2884
  var serve = (routeFunction, options) => {
3039
2885
  const { handler: serveHandler } = serveBase(
3040
2886
  routeFunction,
3041
- appTelemetry,
2887
+ {
2888
+ sdk: SDK_TELEMETRY,
2889
+ framework: "nextjs",
2890
+ runtime: `node@${process.version}`
2891
+ },
3042
2892
  options
3043
2893
  );
3044
2894
  return {
@@ -3047,27 +2897,16 @@ var serve = (routeFunction, options) => {
3047
2897
  }
3048
2898
  };
3049
2899
  };
3050
- var createWorkflow = (...params) => {
3051
- const { POST } = serve(...params);
3052
- return {
3053
- callback: createInvokeCallback(appTelemetry),
3054
- handler: POST,
3055
- workflowId: void 0
3056
- };
3057
- };
3058
- var serveMany = (workflows) => {
3059
- return {
3060
- POST: serveManyBase({
3061
- workflows,
3062
- getWorkflowId(params) {
3063
- const components = params.url.split("/");
3064
- return components[components.length - 1];
3065
- }
3066
- }).handler
3067
- };
3068
- };
3069
2900
  var servePagesRouter = (routeFunction, options) => {
3070
- const { handler: serveHandler } = serveBase(routeFunction, pagesTelemetry, options);
2901
+ const { handler: serveHandler } = serveBase(
2902
+ routeFunction,
2903
+ {
2904
+ sdk: SDK_TELEMETRY,
2905
+ framework: "nextjs-pages",
2906
+ runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
2907
+ },
2908
+ options
2909
+ );
3071
2910
  const handler = async (request_, res) => {
3072
2911
  if (request_.method?.toUpperCase() !== "POST") {
3073
2912
  res.status(405).json("Only POST requests are allowed in worklfows");
@@ -3086,37 +2925,10 @@ var servePagesRouter = (routeFunction, options) => {
3086
2925
  const response = await serveHandler(request);
3087
2926
  res.status(response.status).json(await response.json());
3088
2927
  };
3089
- return {
3090
- handler
3091
- };
3092
- };
3093
- var createWorkflowPagesRouter = (...params) => {
3094
- const { handler } = servePagesRouter(...params);
3095
- return {
3096
- callback: createInvokeCallback(pagesTelemetry),
3097
- handler,
3098
- workflowId: void 0
3099
- };
3100
- };
3101
- var serveManyPagesRouter = (workflows) => {
3102
- return serveManyBase({
3103
- workflows,
3104
- getWorkflowId(request_) {
3105
- const protocol = request_.headers["x-forwarded-proto"];
3106
- const host = request_.headers.host;
3107
- const baseUrl = `${protocol}://${host}`;
3108
- const url = `${baseUrl}${request_.url}`;
3109
- const components = url.split("/");
3110
- return components[components.length - 1];
3111
- }
3112
- });
2928
+ return { handler };
3113
2929
  };
3114
2930
  // Annotate the CommonJS export names for ESM import in node:
3115
2931
  0 && (module.exports = {
3116
- createWorkflow,
3117
- createWorkflowPagesRouter,
3118
2932
  serve,
3119
- serveMany,
3120
- serveManyPagesRouter,
3121
2933
  servePagesRouter
3122
2934
  });
package/nextjs.mjs CHANGED
@@ -1,27 +1,17 @@
1
- import {
2
- createInvokeCallback,
3
- serveManyBase
4
- } from "./chunk-LCZMBGEM.mjs";
5
1
  import {
6
2
  SDK_TELEMETRY,
7
3
  serveBase
8
- } from "./chunk-IWAW7GIG.mjs";
4
+ } from "./chunk-BPUSHNSD.mjs";
9
5
 
10
6
  // platforms/nextjs.ts
11
- var appTelemetry = {
12
- sdk: SDK_TELEMETRY,
13
- framework: "nextjs",
14
- runtime: `node@${process.version}`
15
- };
16
- var pagesTelemetry = {
17
- sdk: SDK_TELEMETRY,
18
- framework: "nextjs-pages",
19
- runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
20
- };
21
7
  var serve = (routeFunction, options) => {
22
8
  const { handler: serveHandler } = serveBase(
23
9
  routeFunction,
24
- appTelemetry,
10
+ {
11
+ sdk: SDK_TELEMETRY,
12
+ framework: "nextjs",
13
+ runtime: `node@${process.version}`
14
+ },
25
15
  options
26
16
  );
27
17
  return {
@@ -30,27 +20,16 @@ var serve = (routeFunction, options) => {
30
20
  }
31
21
  };
32
22
  };
33
- var createWorkflow = (...params) => {
34
- const { POST } = serve(...params);
35
- return {
36
- callback: createInvokeCallback(appTelemetry),
37
- handler: POST,
38
- workflowId: void 0
39
- };
40
- };
41
- var serveMany = (workflows) => {
42
- return {
43
- POST: serveManyBase({
44
- workflows,
45
- getWorkflowId(params) {
46
- const components = params.url.split("/");
47
- return components[components.length - 1];
48
- }
49
- }).handler
50
- };
51
- };
52
23
  var servePagesRouter = (routeFunction, options) => {
53
- const { handler: serveHandler } = serveBase(routeFunction, pagesTelemetry, options);
24
+ const { handler: serveHandler } = serveBase(
25
+ routeFunction,
26
+ {
27
+ sdk: SDK_TELEMETRY,
28
+ framework: "nextjs-pages",
29
+ runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
30
+ },
31
+ options
32
+ );
54
33
  const handler = async (request_, res) => {
55
34
  if (request_.method?.toUpperCase() !== "POST") {
56
35
  res.status(405).json("Only POST requests are allowed in worklfows");
@@ -69,36 +48,9 @@ var servePagesRouter = (routeFunction, options) => {
69
48
  const response = await serveHandler(request);
70
49
  res.status(response.status).json(await response.json());
71
50
  };
72
- return {
73
- handler
74
- };
75
- };
76
- var createWorkflowPagesRouter = (...params) => {
77
- const { handler } = servePagesRouter(...params);
78
- return {
79
- callback: createInvokeCallback(pagesTelemetry),
80
- handler,
81
- workflowId: void 0
82
- };
83
- };
84
- var serveManyPagesRouter = (workflows) => {
85
- return serveManyBase({
86
- workflows,
87
- getWorkflowId(request_) {
88
- const protocol = request_.headers["x-forwarded-proto"];
89
- const host = request_.headers.host;
90
- const baseUrl = `${protocol}://${host}`;
91
- const url = `${baseUrl}${request_.url}`;
92
- const components = url.split("/");
93
- return components[components.length - 1];
94
- }
95
- });
51
+ return { handler };
96
52
  };
97
53
  export {
98
- createWorkflow,
99
- createWorkflowPagesRouter,
100
54
  serve,
101
- serveMany,
102
- serveManyPagesRouter,
103
55
  servePagesRouter
104
56
  };
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@upstash/workflow","version":"v0.2.8-rc-invoke","description":"Durable, Reliable and Performant Serverless Functions","main":"./index.js","module":"./index.mjs","types":"./index.d.ts","files":["./*"],"exports":{".":{"import":"./index.mjs","require":"./index.js"},"./dist/nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./h3":{"import":"./h3.mjs","require":"./h3.js"},"./svelte":{"import":"./svelte.mjs","require":"./svelte.js"},"./solidjs":{"import":"./solidjs.mjs","require":"./solidjs.js"},"./workflow":{"import":"./workflow.mjs","require":"./workflow.js"},"./hono":{"import":"./hono.mjs","require":"./hono.js"},"./cloudflare":{"import":"./cloudflare.mjs","require":"./cloudflare.js"},"./astro":{"import":"./astro.mjs","require":"./astro.js"},"./express":{"import":"./express.mjs","require":"./express.js"}},"scripts":{"build":"tsup && cp README.md ./dist/ && cp package.json ./dist/ && cp LICENSE ./dist/","test":"bun test src","fmt":"prettier --write .","lint":"tsc && eslint \"{src,platforms}/**/*.{js,ts,tsx}\" --quiet --fix","check-exports":"bun run build && cd dist && attw -P"},"repository":{"type":"git","url":"git+https://github.com/upstash/workflow-ts.git"},"keywords":["upstash","qstash","workflow","serverless"],"author":"Cahid Arda Oz","license":"MIT","bugs":{"url":"https://github.com/upstash/workflow-ts/issues"},"homepage":"https://github.com/upstash/workflow-ts#readme","devDependencies":{"@commitlint/cli":"^19.5.0","@commitlint/config-conventional":"^19.5.0","@eslint/js":"^9.11.1","@solidjs/start":"^1.0.8","@sveltejs/kit":"^2.6.1","@types/bun":"^1.1.10","@types/express":"^5.0.0","astro":"^4.16.7","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","express":"^4.21.1","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.20","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsup":"^8.3.0","typescript":"^5.7.2","typescript-eslint":"^8.18.0"},"dependencies":{"@ai-sdk/openai":"^1.0.15","@upstash/qstash":"^2.7.20","ai":"^4.0.30","zod":"^3.24.1"},"directories":{"example":"examples"}}
1
+ {"name":"@upstash/workflow","version":"v0.2.8","description":"Durable, Reliable and Performant Serverless Functions","main":"./index.js","module":"./index.mjs","types":"./index.d.ts","files":["./*"],"exports":{".":{"import":"./index.mjs","require":"./index.js"},"./dist/nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./h3":{"import":"./h3.mjs","require":"./h3.js"},"./svelte":{"import":"./svelte.mjs","require":"./svelte.js"},"./solidjs":{"import":"./solidjs.mjs","require":"./solidjs.js"},"./workflow":{"import":"./workflow.mjs","require":"./workflow.js"},"./hono":{"import":"./hono.mjs","require":"./hono.js"},"./cloudflare":{"import":"./cloudflare.mjs","require":"./cloudflare.js"},"./astro":{"import":"./astro.mjs","require":"./astro.js"},"./express":{"import":"./express.mjs","require":"./express.js"}},"scripts":{"build":"tsup && cp README.md ./dist/ && cp package.json ./dist/ && cp LICENSE ./dist/","test":"bun test src","fmt":"prettier --write .","lint":"tsc && eslint \"{src,platforms}/**/*.{js,ts,tsx}\" --quiet --fix","check-exports":"bun run build && cd dist && attw -P"},"repository":{"type":"git","url":"git+https://github.com/upstash/workflow-ts.git"},"keywords":["upstash","qstash","workflow","serverless"],"author":"Cahid Arda Oz","license":"MIT","bugs":{"url":"https://github.com/upstash/workflow-ts/issues"},"homepage":"https://github.com/upstash/workflow-ts#readme","devDependencies":{"@commitlint/cli":"^19.5.0","@commitlint/config-conventional":"^19.5.0","@eslint/js":"^9.11.1","@solidjs/start":"^1.0.8","@sveltejs/kit":"^2.6.1","@types/bun":"^1.1.10","@types/express":"^5.0.0","astro":"^4.16.7","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","express":"^4.21.1","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.3","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsup":"^8.3.0","typescript":"^5.7.2","typescript-eslint":"^8.18.0"},"dependencies":{"@ai-sdk/openai":"^1.0.15","@upstash/qstash":"^2.7.20","ai":"^4.0.30","zod":"^3.24.1"},"directories":{"example":"examples"}}
package/solidjs.d.mts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { APIEvent } from '@solidjs/start/server';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-C7Y7WUQd.mjs';
2
+ import { R as RouteFunction, k as PublicServeOptions } from './types-B62AnIU3.mjs';
3
3
  import '@upstash/qstash';
4
4
  import 'zod';
5
5
  import 'ai';
6
6
  import '@ai-sdk/openai';
7
7
 
8
8
  /**
9
- * Serve method to serve a Upstash Workflow in a SolidJS project
9
+ * Serve method to serve a Upstash Workflow in a Nextjs project
10
10
  *
11
11
  * See for options https://upstash.com/docs/qstash/workflows/basics/serve
12
12
  *
@@ -14,7 +14,7 @@ import '@ai-sdk/openai';
14
14
  * @param options workflow options
15
15
  * @returns
16
16
  */
17
- declare const serve: <TInitialPayload = unknown, TResult = unknown>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload>) => {
17
+ declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
18
18
  POST: (event: APIEvent) => Promise<Response>;
19
19
  };
20
20
 
package/solidjs.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { APIEvent } from '@solidjs/start/server';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-C7Y7WUQd.js';
2
+ import { R as RouteFunction, k as PublicServeOptions } from './types-B62AnIU3.js';
3
3
  import '@upstash/qstash';
4
4
  import 'zod';
5
5
  import 'ai';
6
6
  import '@ai-sdk/openai';
7
7
 
8
8
  /**
9
- * Serve method to serve a Upstash Workflow in a SolidJS project
9
+ * Serve method to serve a Upstash Workflow in a Nextjs project
10
10
  *
11
11
  * See for options https://upstash.com/docs/qstash/workflows/basics/serve
12
12
  *
@@ -14,7 +14,7 @@ import '@ai-sdk/openai';
14
14
  * @param options workflow options
15
15
  * @returns
16
16
  */
17
- declare const serve: <TInitialPayload = unknown, TResult = unknown>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload>) => {
17
+ declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
18
18
  POST: (event: APIEvent) => Promise<Response>;
19
19
  };
20
20