@upstash/workflow 0.1.0 → 0.1.1-canary
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/{chunk-JDMP6KKR.mjs → chunk-YW5KUHA2.mjs} +34 -20
- package/cloudflare.d.mts +4 -2
- package/cloudflare.d.ts +4 -2
- package/cloudflare.js +37 -23
- package/cloudflare.mjs +4 -4
- package/h3.d.mts +7 -5
- package/h3.d.ts +7 -5
- package/h3.js +36 -22
- package/h3.mjs +3 -3
- package/hono.d.mts +1 -1
- package/hono.d.ts +1 -1
- package/hono.js +35 -21
- package/hono.mjs +2 -2
- package/index.d.mts +5 -3
- package/index.d.ts +5 -3
- package/index.js +34 -20
- package/index.mjs +1 -1
- package/nextjs.d.mts +7 -4
- package/nextjs.d.ts +7 -4
- package/nextjs.js +44 -28
- package/nextjs.mjs +11 -9
- package/package.json +1 -99
- package/solidjs.d.mts +4 -2
- package/solidjs.d.ts +4 -2
- package/solidjs.js +36 -22
- package/solidjs.mjs +3 -3
- package/svelte.d.mts +4 -2
- package/svelte.d.ts +4 -2
- package/svelte.js +37 -23
- package/svelte.mjs +4 -4
- package/{types-CfN1Epuj.d.mts → types-D8FBKkto.d.mts} +12 -2
- package/{types-CfN1Epuj.d.ts → types-D8FBKkto.d.ts} +12 -2
|
@@ -448,6 +448,7 @@ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
|
448
448
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
449
449
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
450
450
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
451
|
+
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
451
452
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
452
453
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
453
454
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
@@ -533,13 +534,13 @@ var handleThirdPartyCallResult = async (request, requestPayload, client, workflo
|
|
|
533
534
|
try {
|
|
534
535
|
if (request.headers.get("Upstash-Workflow-Callback")) {
|
|
535
536
|
const callbackMessage = JSON.parse(requestPayload);
|
|
536
|
-
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300)) {
|
|
537
|
+
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300) && callbackMessage.maxRetries && callbackMessage.retried !== callbackMessage.maxRetries) {
|
|
537
538
|
await debug?.log("WARN", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
538
539
|
status: callbackMessage.status,
|
|
539
540
|
body: atob(callbackMessage.body)
|
|
540
541
|
});
|
|
541
542
|
console.warn(
|
|
542
|
-
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (
|
|
543
|
+
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (retried ${callbackMessage.retried ?? 0} out of ${callbackMessage.maxRetries} times). Error Message:
|
|
543
544
|
${atob(callbackMessage.body)}`
|
|
544
545
|
);
|
|
545
546
|
return ok("call-will-retry");
|
|
@@ -576,7 +577,11 @@ ${atob(callbackMessage.body)}`
|
|
|
576
577
|
stepId: Number(stepIdString),
|
|
577
578
|
stepName,
|
|
578
579
|
stepType,
|
|
579
|
-
out:
|
|
580
|
+
out: {
|
|
581
|
+
status: callbackMessage.status,
|
|
582
|
+
body: atob(callbackMessage.body),
|
|
583
|
+
header: callbackMessage.header
|
|
584
|
+
},
|
|
580
585
|
concurrent: Number(concurrentString)
|
|
581
586
|
};
|
|
582
587
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -611,15 +616,24 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
611
616
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
612
617
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
613
618
|
[WORKFLOW_URL_HEADER]: workflowUrl,
|
|
614
|
-
[
|
|
615
|
-
|
|
616
|
-
[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`]: "true",
|
|
617
|
-
"Upstash-Failure-Callback": failureUrl
|
|
618
|
-
} : {},
|
|
619
|
-
...retries === void 0 ? {} : {
|
|
620
|
-
"Upstash-Retries": retries.toString()
|
|
621
|
-
}
|
|
619
|
+
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
620
|
+
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
622
621
|
};
|
|
622
|
+
if (failureUrl) {
|
|
623
|
+
if (!step?.callUrl) {
|
|
624
|
+
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
625
|
+
}
|
|
626
|
+
baseHeaders["Upstash-Failure-Callback"] = failureUrl;
|
|
627
|
+
}
|
|
628
|
+
if (step?.callUrl) {
|
|
629
|
+
baseHeaders["Upstash-Retries"] = "0";
|
|
630
|
+
if (retries) {
|
|
631
|
+
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
632
|
+
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
633
|
+
}
|
|
634
|
+
} else if (retries !== void 0) {
|
|
635
|
+
baseHeaders["Upstash-Retries"] = retries.toString();
|
|
636
|
+
}
|
|
623
637
|
if (userHeaders) {
|
|
624
638
|
for (const header of userHeaders.keys()) {
|
|
625
639
|
if (step?.callHeaders) {
|
|
@@ -1478,15 +1492,12 @@ var WorkflowContext = class {
|
|
|
1478
1492
|
* @returns call result (parsed as JSON if possible)
|
|
1479
1493
|
*/
|
|
1480
1494
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
|
|
1481
|
-
async call(stepName,
|
|
1495
|
+
async call(stepName, callSettings) {
|
|
1496
|
+
const { url, method = "GET", body, headers = {} } = callSettings;
|
|
1482
1497
|
const result = await this.addStep(
|
|
1483
|
-
new LazyCallStep(stepName, url, method, body, headers
|
|
1498
|
+
new LazyCallStep(stepName, url, method, body, headers)
|
|
1484
1499
|
);
|
|
1485
|
-
|
|
1486
|
-
return JSON.parse(result);
|
|
1487
|
-
} catch {
|
|
1488
|
-
return result;
|
|
1489
|
-
}
|
|
1500
|
+
return result;
|
|
1490
1501
|
}
|
|
1491
1502
|
async waitForEvent(stepName, eventId, timeout) {
|
|
1492
1503
|
const result = await this.addStep(
|
|
@@ -1854,6 +1865,7 @@ var serve = (routeFunction, options) => {
|
|
|
1854
1865
|
} = processOptions(options);
|
|
1855
1866
|
const debug = WorkflowLogger.getLogger(verbose);
|
|
1856
1867
|
const handler = async (request) => {
|
|
1868
|
+
await debug?.log("INFO", "ENDPOINT_START");
|
|
1857
1869
|
const { workflowUrl, workflowFailureUrl } = await determineUrls(
|
|
1858
1870
|
request,
|
|
1859
1871
|
url,
|
|
@@ -1897,7 +1909,8 @@ var serve = (routeFunction, options) => {
|
|
|
1897
1909
|
url: workflowUrl,
|
|
1898
1910
|
failureUrl: workflowFailureUrl,
|
|
1899
1911
|
debug,
|
|
1900
|
-
env
|
|
1912
|
+
env,
|
|
1913
|
+
retries
|
|
1901
1914
|
});
|
|
1902
1915
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
1903
1916
|
routeFunction,
|
|
@@ -1940,7 +1953,7 @@ var serve = (routeFunction, options) => {
|
|
|
1940
1953
|
await debug?.log("INFO", "RESPONSE_DEFAULT");
|
|
1941
1954
|
return onStepFinish("no-workflow-id", "fromCallback");
|
|
1942
1955
|
};
|
|
1943
|
-
|
|
1956
|
+
const safeHandler = async (request) => {
|
|
1944
1957
|
try {
|
|
1945
1958
|
return await handler(request);
|
|
1946
1959
|
} catch (error) {
|
|
@@ -1950,6 +1963,7 @@ var serve = (routeFunction, options) => {
|
|
|
1950
1963
|
});
|
|
1951
1964
|
}
|
|
1952
1965
|
};
|
|
1966
|
+
return { handler: safeHandler };
|
|
1953
1967
|
};
|
|
1954
1968
|
|
|
1955
1969
|
// src/client/index.ts
|
package/cloudflare.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RouteFunction, W as WorkflowServeOptions } from './types-
|
|
1
|
+
import { R as RouteFunction, W as WorkflowServeOptions } from './types-D8FBKkto.mjs';
|
|
2
2
|
import '@upstash/qstash';
|
|
3
3
|
|
|
4
4
|
type WorkflowBindings = {
|
|
@@ -28,6 +28,8 @@ type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
|
|
|
28
28
|
* @param options workflow options
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
|
-
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) =>
|
|
31
|
+
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) => {
|
|
32
|
+
fetch: (...args: PagesHandlerArgs | WorkersHandlerArgs) => Promise<Response>;
|
|
33
|
+
};
|
|
32
34
|
|
|
33
35
|
export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, serve };
|
package/cloudflare.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RouteFunction, W as WorkflowServeOptions } from './types-
|
|
1
|
+
import { R as RouteFunction, W as WorkflowServeOptions } from './types-D8FBKkto.js';
|
|
2
2
|
import '@upstash/qstash';
|
|
3
3
|
|
|
4
4
|
type WorkflowBindings = {
|
|
@@ -28,6 +28,8 @@ type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
|
|
|
28
28
|
* @param options workflow options
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
|
-
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) =>
|
|
31
|
+
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) => {
|
|
32
|
+
fetch: (...args: PagesHandlerArgs | WorkersHandlerArgs) => Promise<Response>;
|
|
33
|
+
};
|
|
32
34
|
|
|
33
35
|
export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, serve };
|
package/cloudflare.js
CHANGED
|
@@ -474,6 +474,7 @@ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
|
474
474
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
475
475
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
476
476
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
477
|
+
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
477
478
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
478
479
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
479
480
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
@@ -559,13 +560,13 @@ var handleThirdPartyCallResult = async (request, requestPayload, client, workflo
|
|
|
559
560
|
try {
|
|
560
561
|
if (request.headers.get("Upstash-Workflow-Callback")) {
|
|
561
562
|
const callbackMessage = JSON.parse(requestPayload);
|
|
562
|
-
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300)) {
|
|
563
|
+
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300) && callbackMessage.maxRetries && callbackMessage.retried !== callbackMessage.maxRetries) {
|
|
563
564
|
await debug?.log("WARN", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
564
565
|
status: callbackMessage.status,
|
|
565
566
|
body: atob(callbackMessage.body)
|
|
566
567
|
});
|
|
567
568
|
console.warn(
|
|
568
|
-
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (
|
|
569
|
+
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (retried ${callbackMessage.retried ?? 0} out of ${callbackMessage.maxRetries} times). Error Message:
|
|
569
570
|
${atob(callbackMessage.body)}`
|
|
570
571
|
);
|
|
571
572
|
return ok("call-will-retry");
|
|
@@ -602,7 +603,11 @@ ${atob(callbackMessage.body)}`
|
|
|
602
603
|
stepId: Number(stepIdString),
|
|
603
604
|
stepName,
|
|
604
605
|
stepType,
|
|
605
|
-
out:
|
|
606
|
+
out: {
|
|
607
|
+
status: callbackMessage.status,
|
|
608
|
+
body: atob(callbackMessage.body),
|
|
609
|
+
header: callbackMessage.header
|
|
610
|
+
},
|
|
606
611
|
concurrent: Number(concurrentString)
|
|
607
612
|
};
|
|
608
613
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -637,15 +642,24 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
637
642
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
638
643
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
639
644
|
[WORKFLOW_URL_HEADER]: workflowUrl,
|
|
640
|
-
[
|
|
641
|
-
|
|
642
|
-
[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`]: "true",
|
|
643
|
-
"Upstash-Failure-Callback": failureUrl
|
|
644
|
-
} : {},
|
|
645
|
-
...retries === void 0 ? {} : {
|
|
646
|
-
"Upstash-Retries": retries.toString()
|
|
647
|
-
}
|
|
645
|
+
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
646
|
+
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
648
647
|
};
|
|
648
|
+
if (failureUrl) {
|
|
649
|
+
if (!step?.callUrl) {
|
|
650
|
+
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
651
|
+
}
|
|
652
|
+
baseHeaders["Upstash-Failure-Callback"] = failureUrl;
|
|
653
|
+
}
|
|
654
|
+
if (step?.callUrl) {
|
|
655
|
+
baseHeaders["Upstash-Retries"] = "0";
|
|
656
|
+
if (retries) {
|
|
657
|
+
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
658
|
+
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
659
|
+
}
|
|
660
|
+
} else if (retries !== void 0) {
|
|
661
|
+
baseHeaders["Upstash-Retries"] = retries.toString();
|
|
662
|
+
}
|
|
649
663
|
if (userHeaders) {
|
|
650
664
|
for (const header of userHeaders.keys()) {
|
|
651
665
|
if (step?.callHeaders) {
|
|
@@ -1504,15 +1518,12 @@ var WorkflowContext = class {
|
|
|
1504
1518
|
* @returns call result (parsed as JSON if possible)
|
|
1505
1519
|
*/
|
|
1506
1520
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
|
|
1507
|
-
async call(stepName,
|
|
1521
|
+
async call(stepName, callSettings) {
|
|
1522
|
+
const { url, method = "GET", body, headers = {} } = callSettings;
|
|
1508
1523
|
const result = await this.addStep(
|
|
1509
|
-
new LazyCallStep(stepName, url, method, body, headers
|
|
1524
|
+
new LazyCallStep(stepName, url, method, body, headers)
|
|
1510
1525
|
);
|
|
1511
|
-
|
|
1512
|
-
return JSON.parse(result);
|
|
1513
|
-
} catch {
|
|
1514
|
-
return result;
|
|
1515
|
-
}
|
|
1526
|
+
return result;
|
|
1516
1527
|
}
|
|
1517
1528
|
async waitForEvent(stepName, eventId, timeout) {
|
|
1518
1529
|
const result = await this.addStep(
|
|
@@ -1880,6 +1891,7 @@ var serve = (routeFunction, options) => {
|
|
|
1880
1891
|
} = processOptions(options);
|
|
1881
1892
|
const debug = WorkflowLogger.getLogger(verbose);
|
|
1882
1893
|
const handler = async (request) => {
|
|
1894
|
+
await debug?.log("INFO", "ENDPOINT_START");
|
|
1883
1895
|
const { workflowUrl, workflowFailureUrl } = await determineUrls(
|
|
1884
1896
|
request,
|
|
1885
1897
|
url,
|
|
@@ -1923,7 +1935,8 @@ var serve = (routeFunction, options) => {
|
|
|
1923
1935
|
url: workflowUrl,
|
|
1924
1936
|
failureUrl: workflowFailureUrl,
|
|
1925
1937
|
debug,
|
|
1926
|
-
env
|
|
1938
|
+
env,
|
|
1939
|
+
retries
|
|
1927
1940
|
});
|
|
1928
1941
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
1929
1942
|
routeFunction,
|
|
@@ -1966,7 +1979,7 @@ var serve = (routeFunction, options) => {
|
|
|
1966
1979
|
await debug?.log("INFO", "RESPONSE_DEFAULT");
|
|
1967
1980
|
return onStepFinish("no-workflow-id", "fromCallback");
|
|
1968
1981
|
};
|
|
1969
|
-
|
|
1982
|
+
const safeHandler = async (request) => {
|
|
1970
1983
|
try {
|
|
1971
1984
|
return await handler(request);
|
|
1972
1985
|
} catch (error) {
|
|
@@ -1976,6 +1989,7 @@ var serve = (routeFunction, options) => {
|
|
|
1976
1989
|
});
|
|
1977
1990
|
}
|
|
1978
1991
|
};
|
|
1992
|
+
return { handler: safeHandler };
|
|
1979
1993
|
};
|
|
1980
1994
|
|
|
1981
1995
|
// src/client/index.ts
|
|
@@ -2001,15 +2015,15 @@ var getArgs = (args) => {
|
|
|
2001
2015
|
throw new Error("Could not derive handler arguments from input. Please check how serve is used.");
|
|
2002
2016
|
};
|
|
2003
2017
|
var serve2 = (routeFunction, options) => {
|
|
2004
|
-
const
|
|
2018
|
+
const fetch = async (...args) => {
|
|
2005
2019
|
const { request, env } = getArgs(args);
|
|
2006
|
-
const serveHandler = serve(routeFunction, {
|
|
2020
|
+
const { handler: serveHandler } = serve(routeFunction, {
|
|
2007
2021
|
env,
|
|
2008
2022
|
...options
|
|
2009
2023
|
});
|
|
2010
2024
|
return await serveHandler(request);
|
|
2011
2025
|
};
|
|
2012
|
-
return
|
|
2026
|
+
return { fetch };
|
|
2013
2027
|
};
|
|
2014
2028
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2015
2029
|
0 && (module.exports = {
|
package/cloudflare.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
serve
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YW5KUHA2.mjs";
|
|
4
4
|
|
|
5
5
|
// platforms/cloudflare.ts
|
|
6
6
|
var getArgs = (args) => {
|
|
@@ -22,15 +22,15 @@ var getArgs = (args) => {
|
|
|
22
22
|
throw new Error("Could not derive handler arguments from input. Please check how serve is used.");
|
|
23
23
|
};
|
|
24
24
|
var serve2 = (routeFunction, options) => {
|
|
25
|
-
const
|
|
25
|
+
const fetch = async (...args) => {
|
|
26
26
|
const { request, env } = getArgs(args);
|
|
27
|
-
const serveHandler = serve(routeFunction, {
|
|
27
|
+
const { handler: serveHandler } = serve(routeFunction, {
|
|
28
28
|
env,
|
|
29
29
|
...options
|
|
30
30
|
});
|
|
31
31
|
return await serveHandler(request);
|
|
32
32
|
};
|
|
33
|
-
return
|
|
33
|
+
return { fetch };
|
|
34
34
|
};
|
|
35
35
|
export {
|
|
36
36
|
serve2 as serve
|
package/h3.d.mts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as h3 from 'h3';
|
|
2
|
-
import { R as RouteFunction, W as WorkflowServeOptions } from './types-
|
|
2
|
+
import { R as RouteFunction, W as WorkflowServeOptions } from './types-D8FBKkto.mjs';
|
|
3
3
|
import '@upstash/qstash';
|
|
4
4
|
|
|
5
|
-
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) => {
|
|
6
|
+
handler: h3.EventHandler<h3.EventHandlerRequest, Promise<Response | {
|
|
7
|
+
status: number;
|
|
8
|
+
body: string;
|
|
9
|
+
}>>;
|
|
10
|
+
};
|
|
9
11
|
|
|
10
12
|
export { serve };
|
package/h3.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as h3 from 'h3';
|
|
2
|
-
import { R as RouteFunction, W as WorkflowServeOptions } from './types-
|
|
2
|
+
import { R as RouteFunction, W as WorkflowServeOptions } from './types-D8FBKkto.js';
|
|
3
3
|
import '@upstash/qstash';
|
|
4
4
|
|
|
5
|
-
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: Omit<WorkflowServeOptions<Response, TInitialPayload>, "onStepFinish">) => {
|
|
6
|
+
handler: h3.EventHandler<h3.EventHandlerRequest, Promise<Response | {
|
|
7
|
+
status: number;
|
|
8
|
+
body: string;
|
|
9
|
+
}>>;
|
|
10
|
+
};
|
|
9
11
|
|
|
10
12
|
export { serve };
|
package/h3.js
CHANGED
|
@@ -783,6 +783,7 @@ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
|
783
783
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
784
784
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
785
785
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
786
|
+
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
786
787
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
787
788
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
788
789
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
@@ -868,13 +869,13 @@ var handleThirdPartyCallResult = async (request, requestPayload, client, workflo
|
|
|
868
869
|
try {
|
|
869
870
|
if (request.headers.get("Upstash-Workflow-Callback")) {
|
|
870
871
|
const callbackMessage = JSON.parse(requestPayload);
|
|
871
|
-
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300)) {
|
|
872
|
+
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300) && callbackMessage.maxRetries && callbackMessage.retried !== callbackMessage.maxRetries) {
|
|
872
873
|
await debug?.log("WARN", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
873
874
|
status: callbackMessage.status,
|
|
874
875
|
body: atob(callbackMessage.body)
|
|
875
876
|
});
|
|
876
877
|
console.warn(
|
|
877
|
-
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (
|
|
878
|
+
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (retried ${callbackMessage.retried ?? 0} out of ${callbackMessage.maxRetries} times). Error Message:
|
|
878
879
|
${atob(callbackMessage.body)}`
|
|
879
880
|
);
|
|
880
881
|
return ok("call-will-retry");
|
|
@@ -911,7 +912,11 @@ ${atob(callbackMessage.body)}`
|
|
|
911
912
|
stepId: Number(stepIdString),
|
|
912
913
|
stepName,
|
|
913
914
|
stepType,
|
|
914
|
-
out:
|
|
915
|
+
out: {
|
|
916
|
+
status: callbackMessage.status,
|
|
917
|
+
body: atob(callbackMessage.body),
|
|
918
|
+
header: callbackMessage.header
|
|
919
|
+
},
|
|
915
920
|
concurrent: Number(concurrentString)
|
|
916
921
|
};
|
|
917
922
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -946,15 +951,24 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
946
951
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
947
952
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
948
953
|
[WORKFLOW_URL_HEADER]: workflowUrl,
|
|
949
|
-
[
|
|
950
|
-
|
|
951
|
-
[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`]: "true",
|
|
952
|
-
"Upstash-Failure-Callback": failureUrl
|
|
953
|
-
} : {},
|
|
954
|
-
...retries === void 0 ? {} : {
|
|
955
|
-
"Upstash-Retries": retries.toString()
|
|
956
|
-
}
|
|
954
|
+
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
955
|
+
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
957
956
|
};
|
|
957
|
+
if (failureUrl) {
|
|
958
|
+
if (!step?.callUrl) {
|
|
959
|
+
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
960
|
+
}
|
|
961
|
+
baseHeaders["Upstash-Failure-Callback"] = failureUrl;
|
|
962
|
+
}
|
|
963
|
+
if (step?.callUrl) {
|
|
964
|
+
baseHeaders["Upstash-Retries"] = "0";
|
|
965
|
+
if (retries) {
|
|
966
|
+
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
967
|
+
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
968
|
+
}
|
|
969
|
+
} else if (retries !== void 0) {
|
|
970
|
+
baseHeaders["Upstash-Retries"] = retries.toString();
|
|
971
|
+
}
|
|
958
972
|
if (userHeaders) {
|
|
959
973
|
for (const header of userHeaders.keys()) {
|
|
960
974
|
if (step?.callHeaders) {
|
|
@@ -1813,15 +1827,12 @@ var WorkflowContext = class {
|
|
|
1813
1827
|
* @returns call result (parsed as JSON if possible)
|
|
1814
1828
|
*/
|
|
1815
1829
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
|
|
1816
|
-
async call(stepName,
|
|
1830
|
+
async call(stepName, callSettings) {
|
|
1831
|
+
const { url, method = "GET", body, headers = {} } = callSettings;
|
|
1817
1832
|
const result = await this.addStep(
|
|
1818
|
-
new LazyCallStep(stepName, url, method, body, headers
|
|
1833
|
+
new LazyCallStep(stepName, url, method, body, headers)
|
|
1819
1834
|
);
|
|
1820
|
-
|
|
1821
|
-
return JSON.parse(result);
|
|
1822
|
-
} catch {
|
|
1823
|
-
return result;
|
|
1824
|
-
}
|
|
1835
|
+
return result;
|
|
1825
1836
|
}
|
|
1826
1837
|
async waitForEvent(stepName, eventId, timeout) {
|
|
1827
1838
|
const result = await this.addStep(
|
|
@@ -2189,6 +2200,7 @@ var serve = (routeFunction, options) => {
|
|
|
2189
2200
|
} = processOptions(options);
|
|
2190
2201
|
const debug = WorkflowLogger.getLogger(verbose);
|
|
2191
2202
|
const handler = async (request) => {
|
|
2203
|
+
await debug?.log("INFO", "ENDPOINT_START");
|
|
2192
2204
|
const { workflowUrl, workflowFailureUrl } = await determineUrls(
|
|
2193
2205
|
request,
|
|
2194
2206
|
url,
|
|
@@ -2232,7 +2244,8 @@ var serve = (routeFunction, options) => {
|
|
|
2232
2244
|
url: workflowUrl,
|
|
2233
2245
|
failureUrl: workflowFailureUrl,
|
|
2234
2246
|
debug,
|
|
2235
|
-
env
|
|
2247
|
+
env,
|
|
2248
|
+
retries
|
|
2236
2249
|
});
|
|
2237
2250
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
2238
2251
|
routeFunction,
|
|
@@ -2275,7 +2288,7 @@ var serve = (routeFunction, options) => {
|
|
|
2275
2288
|
await debug?.log("INFO", "RESPONSE_DEFAULT");
|
|
2276
2289
|
return onStepFinish("no-workflow-id", "fromCallback");
|
|
2277
2290
|
};
|
|
2278
|
-
|
|
2291
|
+
const safeHandler = async (request) => {
|
|
2279
2292
|
try {
|
|
2280
2293
|
return await handler(request);
|
|
2281
2294
|
} catch (error) {
|
|
@@ -2285,6 +2298,7 @@ var serve = (routeFunction, options) => {
|
|
|
2285
2298
|
});
|
|
2286
2299
|
}
|
|
2287
2300
|
};
|
|
2301
|
+
return { handler: safeHandler };
|
|
2288
2302
|
};
|
|
2289
2303
|
|
|
2290
2304
|
// src/client/index.ts
|
|
@@ -2317,10 +2331,10 @@ var serve2 = (routeFunction, options) => {
|
|
|
2317
2331
|
body: await readRawBody(event),
|
|
2318
2332
|
method: "POST"
|
|
2319
2333
|
});
|
|
2320
|
-
const serveHandler = serve(routeFunction, options);
|
|
2334
|
+
const { handler: serveHandler } = serve(routeFunction, options);
|
|
2321
2335
|
return await serveHandler(request);
|
|
2322
2336
|
});
|
|
2323
|
-
return handler;
|
|
2337
|
+
return { handler };
|
|
2324
2338
|
};
|
|
2325
2339
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2326
2340
|
0 && (module.exports = {
|
package/h3.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
serve
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YW5KUHA2.mjs";
|
|
4
4
|
|
|
5
5
|
// node_modules/defu/dist/defu.mjs
|
|
6
6
|
function isPlainObject(value) {
|
|
@@ -338,10 +338,10 @@ var serve2 = (routeFunction, options) => {
|
|
|
338
338
|
body: await readRawBody(event),
|
|
339
339
|
method: "POST"
|
|
340
340
|
});
|
|
341
|
-
const serveHandler = serve(routeFunction, options);
|
|
341
|
+
const { handler: serveHandler } = serve(routeFunction, options);
|
|
342
342
|
return await serveHandler(request);
|
|
343
343
|
});
|
|
344
|
-
return handler;
|
|
344
|
+
return { handler };
|
|
345
345
|
};
|
|
346
346
|
export {
|
|
347
347
|
serve2 as serve
|
package/hono.d.mts
CHANGED
package/hono.d.ts
CHANGED
package/hono.js
CHANGED
|
@@ -474,6 +474,7 @@ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
|
474
474
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
475
475
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
476
476
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
477
|
+
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
477
478
|
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
478
479
|
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
479
480
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
@@ -559,13 +560,13 @@ var handleThirdPartyCallResult = async (request, requestPayload, client, workflo
|
|
|
559
560
|
try {
|
|
560
561
|
if (request.headers.get("Upstash-Workflow-Callback")) {
|
|
561
562
|
const callbackMessage = JSON.parse(requestPayload);
|
|
562
|
-
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300)) {
|
|
563
|
+
if (!(callbackMessage.status >= 200 && callbackMessage.status < 300) && callbackMessage.maxRetries && callbackMessage.retried !== callbackMessage.maxRetries) {
|
|
563
564
|
await debug?.log("WARN", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
564
565
|
status: callbackMessage.status,
|
|
565
566
|
body: atob(callbackMessage.body)
|
|
566
567
|
});
|
|
567
568
|
console.warn(
|
|
568
|
-
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (
|
|
569
|
+
`Workflow Warning: "context.call" failed with status ${callbackMessage.status} and will retry (retried ${callbackMessage.retried ?? 0} out of ${callbackMessage.maxRetries} times). Error Message:
|
|
569
570
|
${atob(callbackMessage.body)}`
|
|
570
571
|
);
|
|
571
572
|
return ok("call-will-retry");
|
|
@@ -602,7 +603,11 @@ ${atob(callbackMessage.body)}`
|
|
|
602
603
|
stepId: Number(stepIdString),
|
|
603
604
|
stepName,
|
|
604
605
|
stepType,
|
|
605
|
-
out:
|
|
606
|
+
out: {
|
|
607
|
+
status: callbackMessage.status,
|
|
608
|
+
body: atob(callbackMessage.body),
|
|
609
|
+
header: callbackMessage.header
|
|
610
|
+
},
|
|
606
611
|
concurrent: Number(concurrentString)
|
|
607
612
|
};
|
|
608
613
|
await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
@@ -637,15 +642,24 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
637
642
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
638
643
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
639
644
|
[WORKFLOW_URL_HEADER]: workflowUrl,
|
|
640
|
-
[
|
|
641
|
-
|
|
642
|
-
[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`]: "true",
|
|
643
|
-
"Upstash-Failure-Callback": failureUrl
|
|
644
|
-
} : {},
|
|
645
|
-
...retries === void 0 ? {} : {
|
|
646
|
-
"Upstash-Retries": retries.toString()
|
|
647
|
-
}
|
|
645
|
+
[WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
|
|
646
|
+
[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
|
|
648
647
|
};
|
|
648
|
+
if (failureUrl) {
|
|
649
|
+
if (!step?.callUrl) {
|
|
650
|
+
baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
|
|
651
|
+
}
|
|
652
|
+
baseHeaders["Upstash-Failure-Callback"] = failureUrl;
|
|
653
|
+
}
|
|
654
|
+
if (step?.callUrl) {
|
|
655
|
+
baseHeaders["Upstash-Retries"] = "0";
|
|
656
|
+
if (retries) {
|
|
657
|
+
baseHeaders["Upstash-Callback-Retries"] = retries.toString();
|
|
658
|
+
baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
|
|
659
|
+
}
|
|
660
|
+
} else if (retries !== void 0) {
|
|
661
|
+
baseHeaders["Upstash-Retries"] = retries.toString();
|
|
662
|
+
}
|
|
649
663
|
if (userHeaders) {
|
|
650
664
|
for (const header of userHeaders.keys()) {
|
|
651
665
|
if (step?.callHeaders) {
|
|
@@ -1504,15 +1518,12 @@ var WorkflowContext = class {
|
|
|
1504
1518
|
* @returns call result (parsed as JSON if possible)
|
|
1505
1519
|
*/
|
|
1506
1520
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
|
|
1507
|
-
async call(stepName,
|
|
1521
|
+
async call(stepName, callSettings) {
|
|
1522
|
+
const { url, method = "GET", body, headers = {} } = callSettings;
|
|
1508
1523
|
const result = await this.addStep(
|
|
1509
|
-
new LazyCallStep(stepName, url, method, body, headers
|
|
1524
|
+
new LazyCallStep(stepName, url, method, body, headers)
|
|
1510
1525
|
);
|
|
1511
|
-
|
|
1512
|
-
return JSON.parse(result);
|
|
1513
|
-
} catch {
|
|
1514
|
-
return result;
|
|
1515
|
-
}
|
|
1526
|
+
return result;
|
|
1516
1527
|
}
|
|
1517
1528
|
async waitForEvent(stepName, eventId, timeout) {
|
|
1518
1529
|
const result = await this.addStep(
|
|
@@ -1880,6 +1891,7 @@ var serve = (routeFunction, options) => {
|
|
|
1880
1891
|
} = processOptions(options);
|
|
1881
1892
|
const debug = WorkflowLogger.getLogger(verbose);
|
|
1882
1893
|
const handler = async (request) => {
|
|
1894
|
+
await debug?.log("INFO", "ENDPOINT_START");
|
|
1883
1895
|
const { workflowUrl, workflowFailureUrl } = await determineUrls(
|
|
1884
1896
|
request,
|
|
1885
1897
|
url,
|
|
@@ -1923,7 +1935,8 @@ var serve = (routeFunction, options) => {
|
|
|
1923
1935
|
url: workflowUrl,
|
|
1924
1936
|
failureUrl: workflowFailureUrl,
|
|
1925
1937
|
debug,
|
|
1926
|
-
env
|
|
1938
|
+
env,
|
|
1939
|
+
retries
|
|
1927
1940
|
});
|
|
1928
1941
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
1929
1942
|
routeFunction,
|
|
@@ -1966,7 +1979,7 @@ var serve = (routeFunction, options) => {
|
|
|
1966
1979
|
await debug?.log("INFO", "RESPONSE_DEFAULT");
|
|
1967
1980
|
return onStepFinish("no-workflow-id", "fromCallback");
|
|
1968
1981
|
};
|
|
1969
|
-
|
|
1982
|
+
const safeHandler = async (request) => {
|
|
1970
1983
|
try {
|
|
1971
1984
|
return await handler(request);
|
|
1972
1985
|
} catch (error) {
|
|
@@ -1976,6 +1989,7 @@ var serve = (routeFunction, options) => {
|
|
|
1976
1989
|
});
|
|
1977
1990
|
}
|
|
1978
1991
|
};
|
|
1992
|
+
return { handler: safeHandler };
|
|
1979
1993
|
};
|
|
1980
1994
|
|
|
1981
1995
|
// src/client/index.ts
|
|
@@ -1986,7 +2000,7 @@ var serve2 = (routeFunction, options) => {
|
|
|
1986
2000
|
const handler = async (context) => {
|
|
1987
2001
|
const environment = context.env;
|
|
1988
2002
|
const request = context.req.raw;
|
|
1989
|
-
const serveHandler = serve(routeFunction, {
|
|
2003
|
+
const { handler: serveHandler } = serve(routeFunction, {
|
|
1990
2004
|
// when hono is used without cf workers, it sends a DebugHTTPServer
|
|
1991
2005
|
// object in `context.env`. don't pass env if this is the case:
|
|
1992
2006
|
env: "QSTASH_TOKEN" in environment ? environment : void 0,
|