@upstash/workflow 0.1.1 → 0.1.2-omit-errors
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/README.md +4 -4
- package/astro.d.mts +9 -0
- package/astro.d.ts +9 -0
- package/astro.js +2160 -0
- package/astro.mjs +18 -0
- package/{chunk-XPMFG3Q4.mjs → chunk-ZPVH5ACW.mjs} +70 -24
- package/cloudflare.d.mts +1 -1
- package/cloudflare.d.ts +1 -1
- package/cloudflare.js +76 -30
- package/cloudflare.mjs +1 -1
- package/h3.d.mts +1 -1
- package/h3.d.ts +1 -1
- package/h3.js +79 -30
- package/h3.mjs +4 -1
- package/hono.d.mts +1 -1
- package/hono.d.ts +1 -1
- package/hono.js +76 -30
- package/hono.mjs +1 -1
- package/index.d.mts +2 -2
- package/index.d.ts +2 -2
- package/index.js +77 -31
- package/index.mjs +1 -1
- package/nextjs.d.mts +1 -1
- package/nextjs.d.ts +1 -1
- package/nextjs.js +76 -30
- package/nextjs.mjs +1 -1
- package/package.json +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +76 -30
- package/solidjs.mjs +1 -1
- package/svelte.d.mts +1 -1
- package/svelte.d.ts +1 -1
- package/svelte.js +76 -30
- package/svelte.mjs +1 -1
- package/{types-p7sxktVE.d.mts → types-CI-2skYU.d.mts} +5 -4
- package/{types-p7sxktVE.d.ts → types-CI-2skYU.d.ts} +5 -4
package/solidjs.js
CHANGED
|
@@ -493,6 +493,7 @@ var StepTypes = [
|
|
|
493
493
|
];
|
|
494
494
|
|
|
495
495
|
// src/workflow-requests.ts
|
|
496
|
+
var import_qstash2 = require("@upstash/qstash");
|
|
496
497
|
var triggerFirstInvocation = async (workflowContext, retries, debug) => {
|
|
497
498
|
const { headers } = getHeaders(
|
|
498
499
|
"true",
|
|
@@ -503,27 +504,37 @@ var triggerFirstInvocation = async (workflowContext, retries, debug) => {
|
|
|
503
504
|
workflowContext.failureUrl,
|
|
504
505
|
retries
|
|
505
506
|
);
|
|
506
|
-
await debug?.log("SUBMIT", "SUBMIT_FIRST_INVOCATION", {
|
|
507
|
-
headers,
|
|
508
|
-
requestPayload: workflowContext.requestPayload,
|
|
509
|
-
url: workflowContext.url
|
|
510
|
-
});
|
|
511
507
|
try {
|
|
512
|
-
await workflowContext.qstashClient.publishJSON({
|
|
508
|
+
const result = await workflowContext.qstashClient.publishJSON({
|
|
513
509
|
headers,
|
|
514
510
|
method: "POST",
|
|
515
511
|
body: workflowContext.requestPayload,
|
|
516
512
|
url: workflowContext.url
|
|
517
513
|
});
|
|
514
|
+
await debug?.log("SUBMIT", "SUBMIT_FIRST_INVOCATION", {
|
|
515
|
+
headers,
|
|
516
|
+
requestPayload: workflowContext.requestPayload,
|
|
517
|
+
url: workflowContext.url,
|
|
518
|
+
messageId: result.messageId
|
|
519
|
+
});
|
|
518
520
|
return ok("success");
|
|
519
521
|
} catch (error) {
|
|
520
522
|
const error_ = error;
|
|
523
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes("a workflow already exists, can not initialize a new one with same id")) {
|
|
524
|
+
await debug?.log("WARN", "SUBMIT_FIRST_INVOCATION", {
|
|
525
|
+
message: `Workflow run ${workflowContext.workflowRunId} already exists.`,
|
|
526
|
+
name: error.name,
|
|
527
|
+
originalMessage: error.message
|
|
528
|
+
});
|
|
529
|
+
return ok("workflow-run-already-exists");
|
|
530
|
+
}
|
|
521
531
|
return err(error_);
|
|
522
532
|
}
|
|
523
533
|
};
|
|
524
534
|
var triggerRouteFunction = async ({
|
|
525
535
|
onCleanup,
|
|
526
|
-
onStep
|
|
536
|
+
onStep,
|
|
537
|
+
debug
|
|
527
538
|
}) => {
|
|
528
539
|
try {
|
|
529
540
|
await onStep();
|
|
@@ -531,6 +542,14 @@ var triggerRouteFunction = async ({
|
|
|
531
542
|
return ok("workflow-finished");
|
|
532
543
|
} catch (error) {
|
|
533
544
|
const error_ = error;
|
|
545
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes("can not append to a a cancelled workflow")) {
|
|
546
|
+
await debug?.log("WARN", "RESPONSE_WORKFLOW", {
|
|
547
|
+
message: `tried to append to a cancelled workflow. exiting without publishing.`,
|
|
548
|
+
name: error.name,
|
|
549
|
+
originalMessage: error.message
|
|
550
|
+
});
|
|
551
|
+
return ok("workflow-was-finished");
|
|
552
|
+
}
|
|
534
553
|
return error_ instanceof QStashWorkflowAbort ? ok("step-finished") : err(error_);
|
|
535
554
|
}
|
|
536
555
|
};
|
|
@@ -538,12 +557,29 @@ var triggerWorkflowDelete = async (workflowContext, debug, cancel = false) => {
|
|
|
538
557
|
await debug?.log("SUBMIT", "SUBMIT_CLEANUP", {
|
|
539
558
|
deletedWorkflowRunId: workflowContext.workflowRunId
|
|
540
559
|
});
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
560
|
+
try {
|
|
561
|
+
await workflowContext.qstashClient.http.request({
|
|
562
|
+
path: ["v2", "workflows", "runs", `${workflowContext.workflowRunId}?cancel=${cancel}`],
|
|
563
|
+
method: "DELETE",
|
|
564
|
+
parseResponseAsJson: false
|
|
565
|
+
});
|
|
566
|
+
await debug?.log(
|
|
567
|
+
"SUBMIT",
|
|
568
|
+
"SUBMIT_CLEANUP",
|
|
569
|
+
`workflow run ${workflowContext.workflowRunId} deleted.`
|
|
570
|
+
);
|
|
571
|
+
return { deleted: true };
|
|
572
|
+
} catch (error) {
|
|
573
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes(`workflowRun ${workflowContext.workflowRunId} not found`)) {
|
|
574
|
+
await debug?.log("WARN", "SUBMIT_CLEANUP", {
|
|
575
|
+
message: `Failed to remove workflow run ${workflowContext.workflowRunId} as it doesn't exist.`,
|
|
576
|
+
name: error.name,
|
|
577
|
+
originalMessage: error.message
|
|
578
|
+
});
|
|
579
|
+
return { deleted: false };
|
|
580
|
+
}
|
|
581
|
+
throw error;
|
|
582
|
+
}
|
|
547
583
|
};
|
|
548
584
|
var recreateUserHeaders = (headers) => {
|
|
549
585
|
const filteredHeaders = new Headers();
|
|
@@ -599,15 +635,16 @@ ${atob(callbackMessage.body)}`
|
|
|
599
635
|
failureUrl,
|
|
600
636
|
retries
|
|
601
637
|
);
|
|
638
|
+
const callResponse = {
|
|
639
|
+
status: callbackMessage.status,
|
|
640
|
+
body: atob(callbackMessage.body),
|
|
641
|
+
header: callbackMessage.header
|
|
642
|
+
};
|
|
602
643
|
const callResultStep = {
|
|
603
644
|
stepId: Number(stepIdString),
|
|
604
645
|
stepName,
|
|
605
646
|
stepType,
|
|
606
|
-
out:
|
|
607
|
-
status: callbackMessage.status,
|
|
608
|
-
body: atob(callbackMessage.body),
|
|
609
|
-
header: callbackMessage.header
|
|
610
|
-
},
|
|
647
|
+
out: JSON.stringify(callResponse),
|
|
611
648
|
concurrent: Number(concurrentString)
|
|
612
649
|
};
|
|
613
650
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -641,10 +678,11 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
641
678
|
const baseHeaders = {
|
|
642
679
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
643
680
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
644
|
-
[WORKFLOW_URL_HEADER]: workflowUrl
|
|
645
|
-
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
646
|
-
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
681
|
+
[WORKFLOW_URL_HEADER]: workflowUrl
|
|
647
682
|
};
|
|
683
|
+
if (!step?.callUrl) {
|
|
684
|
+
baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
|
|
685
|
+
}
|
|
648
686
|
if (failureUrl) {
|
|
649
687
|
if (!step?.callUrl) {
|
|
650
688
|
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
@@ -653,6 +691,7 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
653
691
|
}
|
|
654
692
|
if (step?.callUrl) {
|
|
655
693
|
baseHeaders["Upstash-Retries"] = "0";
|
|
694
|
+
baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete";
|
|
656
695
|
if (retries) {
|
|
657
696
|
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
658
697
|
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
@@ -1016,6 +1055,7 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1016
1055
|
this.context.retries
|
|
1017
1056
|
);
|
|
1018
1057
|
const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
|
|
1058
|
+
singleStep.out = JSON.stringify(singleStep.out);
|
|
1019
1059
|
return singleStep.callUrl ? (
|
|
1020
1060
|
// if the step is a third party call, we call the third party
|
|
1021
1061
|
// url (singleStep.callUrl) and pass information about the workflow
|
|
@@ -1677,7 +1717,8 @@ var WorkflowLogger = class _WorkflowLogger {
|
|
|
1677
1717
|
}
|
|
1678
1718
|
writeToConsole(logEntry) {
|
|
1679
1719
|
const JSON_SPACING = 2;
|
|
1680
|
-
console.
|
|
1720
|
+
const logMethod = logEntry.logLevel === "ERROR" ? console.error : logEntry.logLevel === "WARN" ? console.warn : console.log;
|
|
1721
|
+
logMethod(JSON.stringify(logEntry, void 0, JSON_SPACING));
|
|
1681
1722
|
}
|
|
1682
1723
|
shouldLog(level) {
|
|
1683
1724
|
return LOG_LEVELS.indexOf(level) >= LOG_LEVELS.indexOf(this.options.logLevel);
|
|
@@ -1734,9 +1775,13 @@ var parsePayload = (rawPayload) => {
|
|
|
1734
1775
|
const stepsToDecode = encodedSteps.filter((step) => step.callType === "step");
|
|
1735
1776
|
const otherSteps = stepsToDecode.map((rawStep) => {
|
|
1736
1777
|
const step = JSON.parse(decodeBase64(rawStep.body));
|
|
1778
|
+
try {
|
|
1779
|
+
step.out = JSON.parse(step.out);
|
|
1780
|
+
} catch {
|
|
1781
|
+
}
|
|
1737
1782
|
if (step.waitEventId) {
|
|
1738
1783
|
const newOut = {
|
|
1739
|
-
eventData: step.out,
|
|
1784
|
+
eventData: step.out ? decodeBase64(step.out) : void 0,
|
|
1740
1785
|
timeout: step.waitTimeout ?? false
|
|
1741
1786
|
};
|
|
1742
1787
|
step.out = newOut;
|
|
@@ -1866,7 +1911,7 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
1866
1911
|
};
|
|
1867
1912
|
|
|
1868
1913
|
// src/serve/authorization.ts
|
|
1869
|
-
var
|
|
1914
|
+
var import_qstash3 = require("@upstash/qstash");
|
|
1870
1915
|
var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
|
|
1871
1916
|
static disabledMessage = "disabled-qstash-worklfow-run";
|
|
1872
1917
|
/**
|
|
@@ -1891,7 +1936,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
1891
1936
|
*/
|
|
1892
1937
|
static async tryAuthentication(routeFunction, context) {
|
|
1893
1938
|
const disabledContext = new _DisabledWorkflowContext({
|
|
1894
|
-
qstashClient: new
|
|
1939
|
+
qstashClient: new import_qstash3.Client({
|
|
1895
1940
|
baseUrl: "disabled-client",
|
|
1896
1941
|
token: "disabled-client"
|
|
1897
1942
|
}),
|
|
@@ -1918,15 +1963,15 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
1918
1963
|
};
|
|
1919
1964
|
|
|
1920
1965
|
// src/serve/options.ts
|
|
1921
|
-
var import_qstash3 = require("@upstash/qstash");
|
|
1922
1966
|
var import_qstash4 = require("@upstash/qstash");
|
|
1967
|
+
var import_qstash5 = require("@upstash/qstash");
|
|
1923
1968
|
var processOptions = (options) => {
|
|
1924
1969
|
const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
|
|
1925
1970
|
const receiverEnvironmentVariablesSet = Boolean(
|
|
1926
1971
|
environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
|
|
1927
1972
|
);
|
|
1928
1973
|
return {
|
|
1929
|
-
qstashClient: new
|
|
1974
|
+
qstashClient: new import_qstash5.Client({
|
|
1930
1975
|
baseUrl: environment.QSTASH_URL,
|
|
1931
1976
|
token: environment.QSTASH_TOKEN
|
|
1932
1977
|
}),
|
|
@@ -1947,7 +1992,7 @@ var processOptions = (options) => {
|
|
|
1947
1992
|
throw error;
|
|
1948
1993
|
}
|
|
1949
1994
|
},
|
|
1950
|
-
receiver: receiverEnvironmentVariablesSet ? new
|
|
1995
|
+
receiver: receiverEnvironmentVariablesSet ? new import_qstash4.Receiver({
|
|
1951
1996
|
currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
|
|
1952
1997
|
nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
|
|
1953
1998
|
}) : void 0,
|
|
@@ -2069,7 +2114,8 @@ var serve = (routeFunction, options) => {
|
|
|
2069
2114
|
onStep: async () => routeFunction(workflowContext),
|
|
2070
2115
|
onCleanup: async () => {
|
|
2071
2116
|
await triggerWorkflowDelete(workflowContext, debug);
|
|
2072
|
-
}
|
|
2117
|
+
},
|
|
2118
|
+
debug
|
|
2073
2119
|
});
|
|
2074
2120
|
if (result.isErr()) {
|
|
2075
2121
|
await debug?.log("ERROR", "ERROR", { error: result.error.message });
|
|
@@ -2095,7 +2141,7 @@ var serve = (routeFunction, options) => {
|
|
|
2095
2141
|
};
|
|
2096
2142
|
|
|
2097
2143
|
// src/client/index.ts
|
|
2098
|
-
var
|
|
2144
|
+
var import_qstash6 = require("@upstash/qstash");
|
|
2099
2145
|
|
|
2100
2146
|
// platforms/solidjs.ts
|
|
2101
2147
|
var serve2 = (routeFunction, options) => {
|
package/solidjs.mjs
CHANGED
package/svelte.d.mts
CHANGED
package/svelte.d.ts
CHANGED
package/svelte.js
CHANGED
|
@@ -493,6 +493,7 @@ var StepTypes = [
|
|
|
493
493
|
];
|
|
494
494
|
|
|
495
495
|
// src/workflow-requests.ts
|
|
496
|
+
var import_qstash2 = require("@upstash/qstash");
|
|
496
497
|
var triggerFirstInvocation = async (workflowContext, retries, debug) => {
|
|
497
498
|
const { headers } = getHeaders(
|
|
498
499
|
"true",
|
|
@@ -503,27 +504,37 @@ var triggerFirstInvocation = async (workflowContext, retries, debug) => {
|
|
|
503
504
|
workflowContext.failureUrl,
|
|
504
505
|
retries
|
|
505
506
|
);
|
|
506
|
-
await debug?.log("SUBMIT", "SUBMIT_FIRST_INVOCATION", {
|
|
507
|
-
headers,
|
|
508
|
-
requestPayload: workflowContext.requestPayload,
|
|
509
|
-
url: workflowContext.url
|
|
510
|
-
});
|
|
511
507
|
try {
|
|
512
|
-
await workflowContext.qstashClient.publishJSON({
|
|
508
|
+
const result = await workflowContext.qstashClient.publishJSON({
|
|
513
509
|
headers,
|
|
514
510
|
method: "POST",
|
|
515
511
|
body: workflowContext.requestPayload,
|
|
516
512
|
url: workflowContext.url
|
|
517
513
|
});
|
|
514
|
+
await debug?.log("SUBMIT", "SUBMIT_FIRST_INVOCATION", {
|
|
515
|
+
headers,
|
|
516
|
+
requestPayload: workflowContext.requestPayload,
|
|
517
|
+
url: workflowContext.url,
|
|
518
|
+
messageId: result.messageId
|
|
519
|
+
});
|
|
518
520
|
return ok("success");
|
|
519
521
|
} catch (error) {
|
|
520
522
|
const error_ = error;
|
|
523
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes("a workflow already exists, can not initialize a new one with same id")) {
|
|
524
|
+
await debug?.log("WARN", "SUBMIT_FIRST_INVOCATION", {
|
|
525
|
+
message: `Workflow run ${workflowContext.workflowRunId} already exists.`,
|
|
526
|
+
name: error.name,
|
|
527
|
+
originalMessage: error.message
|
|
528
|
+
});
|
|
529
|
+
return ok("workflow-run-already-exists");
|
|
530
|
+
}
|
|
521
531
|
return err(error_);
|
|
522
532
|
}
|
|
523
533
|
};
|
|
524
534
|
var triggerRouteFunction = async ({
|
|
525
535
|
onCleanup,
|
|
526
|
-
onStep
|
|
536
|
+
onStep,
|
|
537
|
+
debug
|
|
527
538
|
}) => {
|
|
528
539
|
try {
|
|
529
540
|
await onStep();
|
|
@@ -531,6 +542,14 @@ var triggerRouteFunction = async ({
|
|
|
531
542
|
return ok("workflow-finished");
|
|
532
543
|
} catch (error) {
|
|
533
544
|
const error_ = error;
|
|
545
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes("can not append to a a cancelled workflow")) {
|
|
546
|
+
await debug?.log("WARN", "RESPONSE_WORKFLOW", {
|
|
547
|
+
message: `tried to append to a cancelled workflow. exiting without publishing.`,
|
|
548
|
+
name: error.name,
|
|
549
|
+
originalMessage: error.message
|
|
550
|
+
});
|
|
551
|
+
return ok("workflow-was-finished");
|
|
552
|
+
}
|
|
534
553
|
return error_ instanceof QStashWorkflowAbort ? ok("step-finished") : err(error_);
|
|
535
554
|
}
|
|
536
555
|
};
|
|
@@ -538,12 +557,29 @@ var triggerWorkflowDelete = async (workflowContext, debug, cancel = false) => {
|
|
|
538
557
|
await debug?.log("SUBMIT", "SUBMIT_CLEANUP", {
|
|
539
558
|
deletedWorkflowRunId: workflowContext.workflowRunId
|
|
540
559
|
});
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
560
|
+
try {
|
|
561
|
+
await workflowContext.qstashClient.http.request({
|
|
562
|
+
path: ["v2", "workflows", "runs", `${workflowContext.workflowRunId}?cancel=${cancel}`],
|
|
563
|
+
method: "DELETE",
|
|
564
|
+
parseResponseAsJson: false
|
|
565
|
+
});
|
|
566
|
+
await debug?.log(
|
|
567
|
+
"SUBMIT",
|
|
568
|
+
"SUBMIT_CLEANUP",
|
|
569
|
+
`workflow run ${workflowContext.workflowRunId} deleted.`
|
|
570
|
+
);
|
|
571
|
+
return { deleted: true };
|
|
572
|
+
} catch (error) {
|
|
573
|
+
if (error instanceof import_qstash2.QstashError && error.message.includes(`workflowRun ${workflowContext.workflowRunId} not found`)) {
|
|
574
|
+
await debug?.log("WARN", "SUBMIT_CLEANUP", {
|
|
575
|
+
message: `Failed to remove workflow run ${workflowContext.workflowRunId} as it doesn't exist.`,
|
|
576
|
+
name: error.name,
|
|
577
|
+
originalMessage: error.message
|
|
578
|
+
});
|
|
579
|
+
return { deleted: false };
|
|
580
|
+
}
|
|
581
|
+
throw error;
|
|
582
|
+
}
|
|
547
583
|
};
|
|
548
584
|
var recreateUserHeaders = (headers) => {
|
|
549
585
|
const filteredHeaders = new Headers();
|
|
@@ -599,15 +635,16 @@ ${atob(callbackMessage.body)}`
|
|
|
599
635
|
failureUrl,
|
|
600
636
|
retries
|
|
601
637
|
);
|
|
638
|
+
const callResponse = {
|
|
639
|
+
status: callbackMessage.status,
|
|
640
|
+
body: atob(callbackMessage.body),
|
|
641
|
+
header: callbackMessage.header
|
|
642
|
+
};
|
|
602
643
|
const callResultStep = {
|
|
603
644
|
stepId: Number(stepIdString),
|
|
604
645
|
stepName,
|
|
605
646
|
stepType,
|
|
606
|
-
out:
|
|
607
|
-
status: callbackMessage.status,
|
|
608
|
-
body: atob(callbackMessage.body),
|
|
609
|
-
header: callbackMessage.header
|
|
610
|
-
},
|
|
647
|
+
out: JSON.stringify(callResponse),
|
|
611
648
|
concurrent: Number(concurrentString)
|
|
612
649
|
};
|
|
613
650
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -641,10 +678,11 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
641
678
|
const baseHeaders = {
|
|
642
679
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
643
680
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
644
|
-
[WORKFLOW_URL_HEADER]: workflowUrl
|
|
645
|
-
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
646
|
-
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
681
|
+
[WORKFLOW_URL_HEADER]: workflowUrl
|
|
647
682
|
};
|
|
683
|
+
if (!step?.callUrl) {
|
|
684
|
+
baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
|
|
685
|
+
}
|
|
648
686
|
if (failureUrl) {
|
|
649
687
|
if (!step?.callUrl) {
|
|
650
688
|
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
@@ -653,6 +691,7 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
653
691
|
}
|
|
654
692
|
if (step?.callUrl) {
|
|
655
693
|
baseHeaders["Upstash-Retries"] = "0";
|
|
694
|
+
baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete";
|
|
656
695
|
if (retries) {
|
|
657
696
|
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
658
697
|
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
@@ -1016,6 +1055,7 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1016
1055
|
this.context.retries
|
|
1017
1056
|
);
|
|
1018
1057
|
const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
|
|
1058
|
+
singleStep.out = JSON.stringify(singleStep.out);
|
|
1019
1059
|
return singleStep.callUrl ? (
|
|
1020
1060
|
// if the step is a third party call, we call the third party
|
|
1021
1061
|
// url (singleStep.callUrl) and pass information about the workflow
|
|
@@ -1677,7 +1717,8 @@ var WorkflowLogger = class _WorkflowLogger {
|
|
|
1677
1717
|
}
|
|
1678
1718
|
writeToConsole(logEntry) {
|
|
1679
1719
|
const JSON_SPACING = 2;
|
|
1680
|
-
console.
|
|
1720
|
+
const logMethod = logEntry.logLevel === "ERROR" ? console.error : logEntry.logLevel === "WARN" ? console.warn : console.log;
|
|
1721
|
+
logMethod(JSON.stringify(logEntry, void 0, JSON_SPACING));
|
|
1681
1722
|
}
|
|
1682
1723
|
shouldLog(level) {
|
|
1683
1724
|
return LOG_LEVELS.indexOf(level) >= LOG_LEVELS.indexOf(this.options.logLevel);
|
|
@@ -1734,9 +1775,13 @@ var parsePayload = (rawPayload) => {
|
|
|
1734
1775
|
const stepsToDecode = encodedSteps.filter((step) => step.callType === "step");
|
|
1735
1776
|
const otherSteps = stepsToDecode.map((rawStep) => {
|
|
1736
1777
|
const step = JSON.parse(decodeBase64(rawStep.body));
|
|
1778
|
+
try {
|
|
1779
|
+
step.out = JSON.parse(step.out);
|
|
1780
|
+
} catch {
|
|
1781
|
+
}
|
|
1737
1782
|
if (step.waitEventId) {
|
|
1738
1783
|
const newOut = {
|
|
1739
|
-
eventData: step.out,
|
|
1784
|
+
eventData: step.out ? decodeBase64(step.out) : void 0,
|
|
1740
1785
|
timeout: step.waitTimeout ?? false
|
|
1741
1786
|
};
|
|
1742
1787
|
step.out = newOut;
|
|
@@ -1866,7 +1911,7 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
1866
1911
|
};
|
|
1867
1912
|
|
|
1868
1913
|
// src/serve/authorization.ts
|
|
1869
|
-
var
|
|
1914
|
+
var import_qstash3 = require("@upstash/qstash");
|
|
1870
1915
|
var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
|
|
1871
1916
|
static disabledMessage = "disabled-qstash-worklfow-run";
|
|
1872
1917
|
/**
|
|
@@ -1891,7 +1936,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
1891
1936
|
*/
|
|
1892
1937
|
static async tryAuthentication(routeFunction, context) {
|
|
1893
1938
|
const disabledContext = new _DisabledWorkflowContext({
|
|
1894
|
-
qstashClient: new
|
|
1939
|
+
qstashClient: new import_qstash3.Client({
|
|
1895
1940
|
baseUrl: "disabled-client",
|
|
1896
1941
|
token: "disabled-client"
|
|
1897
1942
|
}),
|
|
@@ -1918,15 +1963,15 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
1918
1963
|
};
|
|
1919
1964
|
|
|
1920
1965
|
// src/serve/options.ts
|
|
1921
|
-
var import_qstash3 = require("@upstash/qstash");
|
|
1922
1966
|
var import_qstash4 = require("@upstash/qstash");
|
|
1967
|
+
var import_qstash5 = require("@upstash/qstash");
|
|
1923
1968
|
var processOptions = (options) => {
|
|
1924
1969
|
const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
|
|
1925
1970
|
const receiverEnvironmentVariablesSet = Boolean(
|
|
1926
1971
|
environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
|
|
1927
1972
|
);
|
|
1928
1973
|
return {
|
|
1929
|
-
qstashClient: new
|
|
1974
|
+
qstashClient: new import_qstash5.Client({
|
|
1930
1975
|
baseUrl: environment.QSTASH_URL,
|
|
1931
1976
|
token: environment.QSTASH_TOKEN
|
|
1932
1977
|
}),
|
|
@@ -1947,7 +1992,7 @@ var processOptions = (options) => {
|
|
|
1947
1992
|
throw error;
|
|
1948
1993
|
}
|
|
1949
1994
|
},
|
|
1950
|
-
receiver: receiverEnvironmentVariablesSet ? new
|
|
1995
|
+
receiver: receiverEnvironmentVariablesSet ? new import_qstash4.Receiver({
|
|
1951
1996
|
currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
|
|
1952
1997
|
nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
|
|
1953
1998
|
}) : void 0,
|
|
@@ -2069,7 +2114,8 @@ var serve = (routeFunction, options) => {
|
|
|
2069
2114
|
onStep: async () => routeFunction(workflowContext),
|
|
2070
2115
|
onCleanup: async () => {
|
|
2071
2116
|
await triggerWorkflowDelete(workflowContext, debug);
|
|
2072
|
-
}
|
|
2117
|
+
},
|
|
2118
|
+
debug
|
|
2073
2119
|
});
|
|
2074
2120
|
if (result.isErr()) {
|
|
2075
2121
|
await debug?.log("ERROR", "ERROR", { error: result.error.message });
|
|
@@ -2095,7 +2141,7 @@ var serve = (routeFunction, options) => {
|
|
|
2095
2141
|
};
|
|
2096
2142
|
|
|
2097
2143
|
// src/client/index.ts
|
|
2098
|
-
var
|
|
2144
|
+
var import_qstash6 = require("@upstash/qstash");
|
|
2099
2145
|
|
|
2100
2146
|
// platforms/svelte.ts
|
|
2101
2147
|
var serve2 = (routeFunction, options) => {
|
package/svelte.mjs
CHANGED
|
@@ -340,7 +340,7 @@ declare class WorkflowContext<TInitialPayload = unknown> {
|
|
|
340
340
|
* @param duration sleep duration in seconds
|
|
341
341
|
* @returns undefined
|
|
342
342
|
*/
|
|
343
|
-
sleep(stepName: string, duration: number): Promise<void>;
|
|
343
|
+
sleep(stepName: string, duration: number | Duration): Promise<void>;
|
|
344
344
|
/**
|
|
345
345
|
* Stops the execution until the date time provided.
|
|
346
346
|
*
|
|
@@ -416,7 +416,7 @@ declare class WorkflowContext<TInitialPayload = unknown> {
|
|
|
416
416
|
* timeout is true if the wait times out, if notified it is false. eventData
|
|
417
417
|
* is the value passed to `client.notify`.
|
|
418
418
|
*/
|
|
419
|
-
waitForEvent(stepName: string, eventId: string, timeout: number): Promise<WaitStepResponse>;
|
|
419
|
+
waitForEvent(stepName: string, eventId: string, timeout: number | Duration): Promise<WaitStepResponse>;
|
|
420
420
|
notify(stepName: string, eventId: string, eventData: unknown): Promise<NotifyStepResponse>;
|
|
421
421
|
/**
|
|
422
422
|
* Adds steps to the executor. Needed so that it can be overwritten in
|
|
@@ -492,7 +492,7 @@ type Step<TResult = unknown, TBody = unknown> = {
|
|
|
492
492
|
/**
|
|
493
493
|
* sleep duration in seconds. Set when context.sleep is used.
|
|
494
494
|
*/
|
|
495
|
-
sleepFor?: number;
|
|
495
|
+
sleepFor?: number | Duration;
|
|
496
496
|
/**
|
|
497
497
|
* unix timestamp (in seconds) to wait until. Set when context.sleepUntil is used.
|
|
498
498
|
*/
|
|
@@ -675,5 +675,6 @@ type CallResponse = {
|
|
|
675
675
|
body: unknown;
|
|
676
676
|
header: Record<string, string[]>;
|
|
677
677
|
};
|
|
678
|
+
type Duration = `${bigint}s` | `${bigint}m` | `${bigint}h` | `${bigint}d`;
|
|
678
679
|
|
|
679
|
-
export { type AsyncStepFunction as A, type CallResponse as C, type FinishCondition as F, type LogLevel as L, type NotifyResponse as N, type ParallelCallState as P, type RouteFunction as R, type Step as S, type WorkflowServeOptions as W, type Waiter as a, WorkflowContext as b, type WorkflowClient as c, type WorkflowReceiver as d, StepTypes as e, type StepType as f, type RawStep as g, type SyncStepFunction as h, type StepFunction as i, type FailureFunctionPayload as j, type RequiredExceptFields as k, type WaitRequest as l, type WaitStepResponse as m, type NotifyStepResponse as n, type WorkflowLoggerOptions as o, WorkflowLogger as p };
|
|
680
|
+
export { type AsyncStepFunction as A, type CallResponse as C, type Duration as D, type FinishCondition as F, type LogLevel as L, type NotifyResponse as N, type ParallelCallState as P, type RouteFunction as R, type Step as S, type WorkflowServeOptions as W, type Waiter as a, WorkflowContext as b, type WorkflowClient as c, type WorkflowReceiver as d, StepTypes as e, type StepType as f, type RawStep as g, type SyncStepFunction as h, type StepFunction as i, type FailureFunctionPayload as j, type RequiredExceptFields as k, type WaitRequest as l, type WaitStepResponse as m, type NotifyStepResponse as n, type WorkflowLoggerOptions as o, WorkflowLogger as p };
|
|
@@ -340,7 +340,7 @@ declare class WorkflowContext<TInitialPayload = unknown> {
|
|
|
340
340
|
* @param duration sleep duration in seconds
|
|
341
341
|
* @returns undefined
|
|
342
342
|
*/
|
|
343
|
-
sleep(stepName: string, duration: number): Promise<void>;
|
|
343
|
+
sleep(stepName: string, duration: number | Duration): Promise<void>;
|
|
344
344
|
/**
|
|
345
345
|
* Stops the execution until the date time provided.
|
|
346
346
|
*
|
|
@@ -416,7 +416,7 @@ declare class WorkflowContext<TInitialPayload = unknown> {
|
|
|
416
416
|
* timeout is true if the wait times out, if notified it is false. eventData
|
|
417
417
|
* is the value passed to `client.notify`.
|
|
418
418
|
*/
|
|
419
|
-
waitForEvent(stepName: string, eventId: string, timeout: number): Promise<WaitStepResponse>;
|
|
419
|
+
waitForEvent(stepName: string, eventId: string, timeout: number | Duration): Promise<WaitStepResponse>;
|
|
420
420
|
notify(stepName: string, eventId: string, eventData: unknown): Promise<NotifyStepResponse>;
|
|
421
421
|
/**
|
|
422
422
|
* Adds steps to the executor. Needed so that it can be overwritten in
|
|
@@ -492,7 +492,7 @@ type Step<TResult = unknown, TBody = unknown> = {
|
|
|
492
492
|
/**
|
|
493
493
|
* sleep duration in seconds. Set when context.sleep is used.
|
|
494
494
|
*/
|
|
495
|
-
sleepFor?: number;
|
|
495
|
+
sleepFor?: number | Duration;
|
|
496
496
|
/**
|
|
497
497
|
* unix timestamp (in seconds) to wait until. Set when context.sleepUntil is used.
|
|
498
498
|
*/
|
|
@@ -675,5 +675,6 @@ type CallResponse = {
|
|
|
675
675
|
body: unknown;
|
|
676
676
|
header: Record<string, string[]>;
|
|
677
677
|
};
|
|
678
|
+
type Duration = `${bigint}s` | `${bigint}m` | `${bigint}h` | `${bigint}d`;
|
|
678
679
|
|
|
679
|
-
export { type AsyncStepFunction as A, type CallResponse as C, type FinishCondition as F, type LogLevel as L, type NotifyResponse as N, type ParallelCallState as P, type RouteFunction as R, type Step as S, type WorkflowServeOptions as W, type Waiter as a, WorkflowContext as b, type WorkflowClient as c, type WorkflowReceiver as d, StepTypes as e, type StepType as f, type RawStep as g, type SyncStepFunction as h, type StepFunction as i, type FailureFunctionPayload as j, type RequiredExceptFields as k, type WaitRequest as l, type WaitStepResponse as m, type NotifyStepResponse as n, type WorkflowLoggerOptions as o, WorkflowLogger as p };
|
|
680
|
+
export { type AsyncStepFunction as A, type CallResponse as C, type Duration as D, type FinishCondition as F, type LogLevel as L, type NotifyResponse as N, type ParallelCallState as P, type RouteFunction as R, type Step as S, type WorkflowServeOptions as W, type Waiter as a, WorkflowContext as b, type WorkflowClient as c, type WorkflowReceiver as d, StepTypes as e, type StepType as f, type RawStep as g, type SyncStepFunction as h, type StepFunction as i, type FailureFunctionPayload as j, type RequiredExceptFields as k, type WaitRequest as l, type WaitStepResponse as m, type NotifyStepResponse as n, type WorkflowLoggerOptions as o, WorkflowLogger as p };
|