@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/astro.d.mts +3 -8
- package/astro.d.ts +3 -8
- package/astro.js +75 -239
- package/astro.mjs +7 -33
- package/{chunk-IWAW7GIG.mjs → chunk-BPUSHNSD.mjs} +171 -195
- package/cloudflare.d.mts +4 -9
- package/cloudflare.d.ts +4 -9
- package/cloudflare.js +81 -242
- package/cloudflare.mjs +13 -36
- package/express.d.mts +3 -7
- package/express.d.ts +3 -7
- package/express.js +78 -249
- package/express.mjs +10 -41
- package/h3.d.mts +7 -9
- package/h3.d.ts +7 -9
- package/h3.js +88 -250
- package/h3.mjs +20 -44
- package/hono.d.mts +4 -10
- package/hono.d.ts +4 -10
- package/hono.js +83 -241
- package/hono.mjs +15 -35
- package/index.d.mts +267 -18
- package/index.d.ts +267 -18
- package/index.js +133 -102
- package/index.mjs +56 -1
- package/nextjs.d.mts +5 -14
- package/nextjs.d.ts +5 -14
- package/nextjs.js +62 -250
- package/nextjs.mjs +16 -64
- package/package.json +1 -1
- package/solidjs.d.mts +3 -3
- package/solidjs.d.ts +3 -3
- package/solidjs.js +56 -108
- package/solidjs.mjs +10 -7
- package/svelte.d.mts +4 -12
- package/svelte.d.ts +4 -12
- package/svelte.js +81 -241
- package/svelte.mjs +13 -35
- package/{types-C7Y7WUQd.d.mts → types-B62AnIU3.d.mts} +59 -33
- package/{types-C7Y7WUQd.d.ts → types-B62AnIU3.d.ts} +59 -33
- package/chunk-LCZMBGEM.mjs +0 -95
- package/serve-many-BlBvXfBS.d.mts +0 -10
- package/serve-many-Dw-UUnH6.d.ts +0 -10
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.
|
|
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
|
-
|
|
873
|
-
await onCleanup(
|
|
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,
|
|
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(
|
|
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 (
|
|
2910
|
-
await triggerWorkflowDelete(workflowContext,
|
|
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
|
-
|
|
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(
|
|
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-
|
|
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
|
-
|
|
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(
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
17
|
+
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
|
|
18
18
|
POST: (event: APIEvent) => Promise<Response>;
|
|
19
19
|
};
|
|
20
20
|
|