@upstash/workflow 0.2.3 → 0.2.4
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 +1 -1
- package/astro.d.ts +1 -1
- package/astro.js +146 -78
- package/astro.mjs +7 -1
- package/{chunk-QBJ3LQIO.mjs → chunk-ETDFMXER.mjs} +139 -69
- package/cloudflare.d.mts +1 -1
- package/cloudflare.d.ts +1 -1
- package/cloudflare.js +152 -82
- package/cloudflare.mjs +13 -5
- package/express.d.mts +1 -1
- package/express.d.ts +1 -1
- package/express.js +147 -79
- package/express.mjs +8 -2
- package/h3.d.mts +1 -1
- package/h3.d.ts +1 -1
- package/h3.js +150 -79
- package/h3.mjs +11 -2
- package/hono.d.mts +1 -1
- package/hono.d.ts +1 -1
- package/hono.js +154 -84
- package/hono.mjs +15 -7
- package/index.d.mts +2 -2
- package/index.d.ts +2 -2
- package/index.js +160 -83
- package/index.mjs +10 -4
- package/nextjs.d.mts +1 -1
- package/nextjs.d.ts +1 -1
- package/nextjs.js +155 -79
- package/nextjs.mjs +16 -2
- package/package.json +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +150 -79
- package/solidjs.mjs +11 -2
- package/svelte.d.mts +1 -1
- package/svelte.d.ts +1 -1
- package/svelte.js +152 -82
- package/svelte.mjs +13 -5
- package/{types-R9q4MUwl.d.mts → types-Bt4-paRy.d.mts} +89 -4
- package/{types-R9q4MUwl.d.ts → types-Bt4-paRy.d.ts} +89 -4
package/index.js
CHANGED
|
@@ -90,6 +90,23 @@ var getSteps = async (requester, workflowRunId, messageId, debug) => {
|
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
92
|
|
|
93
|
+
// src/constants.ts
|
|
94
|
+
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
95
|
+
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
96
|
+
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
97
|
+
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
98
|
+
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
99
|
+
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
100
|
+
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
101
|
+
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
102
|
+
var NO_CONCURRENCY = 1;
|
|
103
|
+
var DEFAULT_RETRIES = 3;
|
|
104
|
+
var VERSION = "v0.2.3";
|
|
105
|
+
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
106
|
+
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
107
|
+
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
108
|
+
var TELEMETRY_HEADER_RUNTIME = "Upstash-Telemetry-Runtime";
|
|
109
|
+
|
|
93
110
|
// src/error.ts
|
|
94
111
|
var import_qstash2 = require("@upstash/qstash");
|
|
95
112
|
var WorkflowError = class extends import_qstash2.QstashError {
|
|
@@ -727,18 +744,6 @@ var Err = class {
|
|
|
727
744
|
};
|
|
728
745
|
var fromThrowable = Result.fromThrowable;
|
|
729
746
|
|
|
730
|
-
// src/constants.ts
|
|
731
|
-
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
732
|
-
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
733
|
-
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
734
|
-
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
735
|
-
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
736
|
-
var WORKFLOW_PROTOCOL_VERSION = "1";
|
|
737
|
-
var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
738
|
-
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
739
|
-
var NO_CONCURRENCY = 1;
|
|
740
|
-
var DEFAULT_RETRIES = 3;
|
|
741
|
-
|
|
742
747
|
// src/types.ts
|
|
743
748
|
var StepTypes = [
|
|
744
749
|
"Initial",
|
|
@@ -752,16 +757,21 @@ var StepTypes = [
|
|
|
752
757
|
|
|
753
758
|
// src/workflow-requests.ts
|
|
754
759
|
var import_qstash3 = require("@upstash/qstash");
|
|
755
|
-
var triggerFirstInvocation = async (
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
760
|
+
var triggerFirstInvocation = async ({
|
|
761
|
+
workflowContext,
|
|
762
|
+
useJSONContent,
|
|
763
|
+
telemetry,
|
|
764
|
+
debug
|
|
765
|
+
}) => {
|
|
766
|
+
const { headers } = getHeaders({
|
|
767
|
+
initHeaderValue: "true",
|
|
768
|
+
workflowRunId: workflowContext.workflowRunId,
|
|
769
|
+
workflowUrl: workflowContext.url,
|
|
770
|
+
userHeaders: workflowContext.headers,
|
|
771
|
+
failureUrl: workflowContext.failureUrl,
|
|
772
|
+
retries: workflowContext.retries,
|
|
773
|
+
telemetry
|
|
774
|
+
});
|
|
765
775
|
if (useJSONContent) {
|
|
766
776
|
headers["content-type"] = "application/json";
|
|
767
777
|
}
|
|
@@ -867,7 +877,16 @@ var recreateUserHeaders = (headers) => {
|
|
|
867
877
|
}
|
|
868
878
|
return filteredHeaders;
|
|
869
879
|
};
|
|
870
|
-
var handleThirdPartyCallResult = async (
|
|
880
|
+
var handleThirdPartyCallResult = async ({
|
|
881
|
+
request,
|
|
882
|
+
requestPayload,
|
|
883
|
+
client,
|
|
884
|
+
workflowUrl,
|
|
885
|
+
failureUrl,
|
|
886
|
+
retries,
|
|
887
|
+
telemetry,
|
|
888
|
+
debug
|
|
889
|
+
}) => {
|
|
871
890
|
try {
|
|
872
891
|
if (request.headers.get("Upstash-Workflow-Callback")) {
|
|
873
892
|
let callbackPayload;
|
|
@@ -926,15 +945,15 @@ ${atob(callbackMessage.body ?? "")}`
|
|
|
926
945
|
);
|
|
927
946
|
}
|
|
928
947
|
const userHeaders = recreateUserHeaders(request.headers);
|
|
929
|
-
const { headers: requestHeaders } = getHeaders(
|
|
930
|
-
"false",
|
|
948
|
+
const { headers: requestHeaders } = getHeaders({
|
|
949
|
+
initHeaderValue: "false",
|
|
931
950
|
workflowRunId,
|
|
932
951
|
workflowUrl,
|
|
933
952
|
userHeaders,
|
|
934
|
-
void 0,
|
|
935
953
|
failureUrl,
|
|
936
|
-
retries
|
|
937
|
-
|
|
954
|
+
retries,
|
|
955
|
+
telemetry
|
|
956
|
+
});
|
|
938
957
|
const callResponse = {
|
|
939
958
|
status: callbackMessage.status,
|
|
940
959
|
body: atob(callbackMessage.body ?? ""),
|
|
@@ -972,12 +991,31 @@ ${atob(callbackMessage.body ?? "")}`
|
|
|
972
991
|
);
|
|
973
992
|
}
|
|
974
993
|
};
|
|
975
|
-
var
|
|
994
|
+
var getTelemetryHeaders = (telemetry) => {
|
|
995
|
+
return {
|
|
996
|
+
[TELEMETRY_HEADER_SDK]: telemetry.sdk,
|
|
997
|
+
[TELEMETRY_HEADER_FRAMEWORK]: telemetry.framework,
|
|
998
|
+
[TELEMETRY_HEADER_RUNTIME]: telemetry.runtime ?? "unknown"
|
|
999
|
+
};
|
|
1000
|
+
};
|
|
1001
|
+
var getHeaders = ({
|
|
1002
|
+
initHeaderValue,
|
|
1003
|
+
workflowRunId,
|
|
1004
|
+
workflowUrl,
|
|
1005
|
+
userHeaders,
|
|
1006
|
+
failureUrl,
|
|
1007
|
+
retries,
|
|
1008
|
+
step,
|
|
1009
|
+
callRetries,
|
|
1010
|
+
callTimeout,
|
|
1011
|
+
telemetry
|
|
1012
|
+
}) => {
|
|
976
1013
|
const baseHeaders = {
|
|
977
1014
|
[WORKFLOW_INIT_HEADER]: initHeaderValue,
|
|
978
1015
|
[WORKFLOW_ID_HEADER]: workflowRunId,
|
|
979
1016
|
[WORKFLOW_URL_HEADER]: workflowUrl,
|
|
980
|
-
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody"
|
|
1017
|
+
[WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody",
|
|
1018
|
+
...telemetry ? getTelemetryHeaders(telemetry) : {}
|
|
981
1019
|
};
|
|
982
1020
|
if (!step?.callUrl) {
|
|
983
1021
|
baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
|
|
@@ -1051,6 +1089,13 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
|
|
|
1051
1089
|
...Object.fromEntries(
|
|
1052
1090
|
Object.entries(baseHeaders).map(([header, value]) => [header, [value]])
|
|
1053
1091
|
),
|
|
1092
|
+
// to include telemetry headers:
|
|
1093
|
+
...telemetry ? Object.fromEntries(
|
|
1094
|
+
Object.entries(getTelemetryHeaders(telemetry)).map(([header, value]) => [
|
|
1095
|
+
header,
|
|
1096
|
+
[value]
|
|
1097
|
+
])
|
|
1098
|
+
) : {},
|
|
1054
1099
|
// note: using WORKFLOW_ID_HEADER doesn't work, because Runid -> RunId:
|
|
1055
1100
|
"Upstash-Workflow-Runid": [workflowRunId],
|
|
1056
1101
|
[WORKFLOW_INIT_HEADER]: ["false"],
|
|
@@ -1089,6 +1134,7 @@ If you want to disable QStash Verification, you should clear env variables QSTAS
|
|
|
1089
1134
|
};
|
|
1090
1135
|
|
|
1091
1136
|
// src/context/auto-executor.ts
|
|
1137
|
+
var import_qstash4 = require("@upstash/qstash");
|
|
1092
1138
|
var AutoExecutor = class _AutoExecutor {
|
|
1093
1139
|
context;
|
|
1094
1140
|
promises = /* @__PURE__ */ new WeakMap();
|
|
@@ -1097,13 +1143,15 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1097
1143
|
nonPlanStepCount;
|
|
1098
1144
|
steps;
|
|
1099
1145
|
indexInCurrentList = 0;
|
|
1146
|
+
telemetry;
|
|
1100
1147
|
stepCount = 0;
|
|
1101
1148
|
planStepCount = 0;
|
|
1102
1149
|
executingStep = false;
|
|
1103
|
-
constructor(context, steps, debug) {
|
|
1150
|
+
constructor(context, steps, telemetry, debug) {
|
|
1104
1151
|
this.context = context;
|
|
1105
|
-
this.debug = debug;
|
|
1106
1152
|
this.steps = steps;
|
|
1153
|
+
this.telemetry = telemetry;
|
|
1154
|
+
this.debug = debug;
|
|
1107
1155
|
this.nonPlanStepCount = this.steps.filter((step) => !step.targetStep).length;
|
|
1108
1156
|
}
|
|
1109
1157
|
/**
|
|
@@ -1246,7 +1294,7 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1246
1294
|
);
|
|
1247
1295
|
await this.submitStepsToQStash([resultStep], [parallelStep]);
|
|
1248
1296
|
} catch (error) {
|
|
1249
|
-
if (error instanceof WorkflowAbort) {
|
|
1297
|
+
if (error instanceof WorkflowAbort || error instanceof import_qstash4.QstashError && error.status === 400) {
|
|
1250
1298
|
throw error;
|
|
1251
1299
|
}
|
|
1252
1300
|
throw new WorkflowError(
|
|
@@ -1317,15 +1365,16 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1317
1365
|
});
|
|
1318
1366
|
if (steps[0].waitEventId && steps.length === 1) {
|
|
1319
1367
|
const waitStep = steps[0];
|
|
1320
|
-
const { headers, timeoutHeaders } = getHeaders(
|
|
1321
|
-
"false",
|
|
1322
|
-
this.context.workflowRunId,
|
|
1323
|
-
this.context.url,
|
|
1324
|
-
this.context.headers,
|
|
1325
|
-
waitStep,
|
|
1326
|
-
this.context.failureUrl,
|
|
1327
|
-
this.context.retries
|
|
1328
|
-
|
|
1368
|
+
const { headers, timeoutHeaders } = getHeaders({
|
|
1369
|
+
initHeaderValue: "false",
|
|
1370
|
+
workflowRunId: this.context.workflowRunId,
|
|
1371
|
+
workflowUrl: this.context.url,
|
|
1372
|
+
userHeaders: this.context.headers,
|
|
1373
|
+
step: waitStep,
|
|
1374
|
+
failureUrl: this.context.failureUrl,
|
|
1375
|
+
retries: this.context.retries,
|
|
1376
|
+
telemetry: this.telemetry
|
|
1377
|
+
});
|
|
1329
1378
|
const waitBody = {
|
|
1330
1379
|
url: this.context.url,
|
|
1331
1380
|
timeout: waitStep.timeout,
|
|
@@ -1352,17 +1401,18 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
1352
1401
|
const result = await this.context.qstashClient.batchJSON(
|
|
1353
1402
|
steps.map((singleStep, index) => {
|
|
1354
1403
|
const lazyStep = lazySteps[index];
|
|
1355
|
-
const { headers } = getHeaders(
|
|
1356
|
-
"false",
|
|
1357
|
-
this.context.workflowRunId,
|
|
1358
|
-
this.context.url,
|
|
1359
|
-
this.context.headers,
|
|
1360
|
-
singleStep,
|
|
1361
|
-
this.context.failureUrl,
|
|
1362
|
-
this.context.retries,
|
|
1363
|
-
lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
|
|
1364
|
-
lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0
|
|
1365
|
-
|
|
1404
|
+
const { headers } = getHeaders({
|
|
1405
|
+
initHeaderValue: "false",
|
|
1406
|
+
workflowRunId: this.context.workflowRunId,
|
|
1407
|
+
workflowUrl: this.context.url,
|
|
1408
|
+
userHeaders: this.context.headers,
|
|
1409
|
+
step: singleStep,
|
|
1410
|
+
failureUrl: this.context.failureUrl,
|
|
1411
|
+
retries: this.context.retries,
|
|
1412
|
+
callRetries: lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
|
|
1413
|
+
callTimeout: lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0,
|
|
1414
|
+
telemetry: this.telemetry
|
|
1415
|
+
});
|
|
1366
1416
|
const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
|
|
1367
1417
|
singleStep.out = JSON.stringify(singleStep.out);
|
|
1368
1418
|
return singleStep.callUrl ? (
|
|
@@ -1475,7 +1525,7 @@ var sortSteps = (steps) => {
|
|
|
1475
1525
|
};
|
|
1476
1526
|
|
|
1477
1527
|
// src/context/api/anthropic.ts
|
|
1478
|
-
var
|
|
1528
|
+
var import_qstash5 = require("@upstash/qstash");
|
|
1479
1529
|
|
|
1480
1530
|
// src/context/provider.ts
|
|
1481
1531
|
var getProviderInfo = (api) => {
|
|
@@ -1539,7 +1589,7 @@ var AnthropicAPI = class extends BaseWorkflowApi {
|
|
|
1539
1589
|
return await this.callApi(stepName, {
|
|
1540
1590
|
api: {
|
|
1541
1591
|
name: "llm",
|
|
1542
|
-
provider: (0,
|
|
1592
|
+
provider: (0, import_qstash5.anthropic)({ token })
|
|
1543
1593
|
},
|
|
1544
1594
|
...parameters
|
|
1545
1595
|
});
|
|
@@ -1547,14 +1597,14 @@ var AnthropicAPI = class extends BaseWorkflowApi {
|
|
|
1547
1597
|
};
|
|
1548
1598
|
|
|
1549
1599
|
// src/context/api/openai.ts
|
|
1550
|
-
var
|
|
1600
|
+
var import_qstash6 = require("@upstash/qstash");
|
|
1551
1601
|
var OpenAIAPI = class extends BaseWorkflowApi {
|
|
1552
1602
|
async call(stepName, settings) {
|
|
1553
1603
|
const { token, organization, operation, ...parameters } = settings;
|
|
1554
1604
|
return await this.callApi(stepName, {
|
|
1555
1605
|
api: {
|
|
1556
1606
|
name: "llm",
|
|
1557
|
-
provider: (0,
|
|
1607
|
+
provider: (0, import_qstash6.openai)({ token, organization })
|
|
1558
1608
|
},
|
|
1559
1609
|
...parameters
|
|
1560
1610
|
});
|
|
@@ -1562,14 +1612,14 @@ var OpenAIAPI = class extends BaseWorkflowApi {
|
|
|
1562
1612
|
};
|
|
1563
1613
|
|
|
1564
1614
|
// src/context/api/resend.ts
|
|
1565
|
-
var
|
|
1615
|
+
var import_qstash7 = require("@upstash/qstash");
|
|
1566
1616
|
var ResendAPI = class extends BaseWorkflowApi {
|
|
1567
1617
|
async call(stepName, settings) {
|
|
1568
1618
|
const { token, batch = false, ...parameters } = settings;
|
|
1569
1619
|
return await this.callApi(stepName, {
|
|
1570
1620
|
api: {
|
|
1571
1621
|
name: "email",
|
|
1572
|
-
provider: (0,
|
|
1622
|
+
provider: (0, import_qstash7.resend)({ token, batch })
|
|
1573
1623
|
},
|
|
1574
1624
|
...parameters
|
|
1575
1625
|
});
|
|
@@ -1727,7 +1777,8 @@ var WorkflowContext = class {
|
|
|
1727
1777
|
debug,
|
|
1728
1778
|
initialPayload,
|
|
1729
1779
|
env,
|
|
1730
|
-
retries
|
|
1780
|
+
retries,
|
|
1781
|
+
telemetry
|
|
1731
1782
|
}) {
|
|
1732
1783
|
this.qstashClient = qstashClient;
|
|
1733
1784
|
this.workflowRunId = workflowRunId;
|
|
@@ -1738,7 +1789,7 @@ var WorkflowContext = class {
|
|
|
1738
1789
|
this.requestPayload = initialPayload;
|
|
1739
1790
|
this.env = env ?? {};
|
|
1740
1791
|
this.retries = retries ?? DEFAULT_RETRIES;
|
|
1741
|
-
this.executor = new AutoExecutor(this, this.steps, debug);
|
|
1792
|
+
this.executor = new AutoExecutor(this, this.steps, telemetry, debug);
|
|
1742
1793
|
}
|
|
1743
1794
|
/**
|
|
1744
1795
|
* Executes a workflow step
|
|
@@ -2056,7 +2107,7 @@ function decodeBase64(base64) {
|
|
|
2056
2107
|
}
|
|
2057
2108
|
|
|
2058
2109
|
// src/serve/authorization.ts
|
|
2059
|
-
var
|
|
2110
|
+
var import_qstash8 = require("@upstash/qstash");
|
|
2060
2111
|
var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
|
|
2061
2112
|
static disabledMessage = "disabled-qstash-worklfow-run";
|
|
2062
2113
|
/**
|
|
@@ -2087,7 +2138,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2087
2138
|
*/
|
|
2088
2139
|
static async tryAuthentication(routeFunction, context) {
|
|
2089
2140
|
const disabledContext = new _DisabledWorkflowContext({
|
|
2090
|
-
qstashClient: new
|
|
2141
|
+
qstashClient: new import_qstash8.Client({
|
|
2091
2142
|
baseUrl: "disabled-client",
|
|
2092
2143
|
token: "disabled-client"
|
|
2093
2144
|
}),
|
|
@@ -2251,7 +2302,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, workflowRunId, requ
|
|
|
2251
2302
|
};
|
|
2252
2303
|
}
|
|
2253
2304
|
};
|
|
2254
|
-
var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, debug) => {
|
|
2305
|
+
var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, env, retries, debug) => {
|
|
2255
2306
|
if (request.headers.get(WORKFLOW_FAILURE_HEADER) !== "true") {
|
|
2256
2307
|
return ok("not-failure-callback");
|
|
2257
2308
|
}
|
|
@@ -2276,7 +2327,11 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
2276
2327
|
steps: [],
|
|
2277
2328
|
url,
|
|
2278
2329
|
failureUrl: url,
|
|
2279
|
-
debug
|
|
2330
|
+
debug,
|
|
2331
|
+
env,
|
|
2332
|
+
retries,
|
|
2333
|
+
telemetry: void 0
|
|
2334
|
+
// not going to make requests in authentication check
|
|
2280
2335
|
});
|
|
2281
2336
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
2282
2337
|
routeFunction,
|
|
@@ -2301,15 +2356,15 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
|
|
|
2301
2356
|
};
|
|
2302
2357
|
|
|
2303
2358
|
// src/serve/options.ts
|
|
2304
|
-
var import_qstash8 = require("@upstash/qstash");
|
|
2305
2359
|
var import_qstash9 = require("@upstash/qstash");
|
|
2360
|
+
var import_qstash10 = require("@upstash/qstash");
|
|
2306
2361
|
var processOptions = (options) => {
|
|
2307
2362
|
const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
|
|
2308
2363
|
const receiverEnvironmentVariablesSet = Boolean(
|
|
2309
2364
|
environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
|
|
2310
2365
|
);
|
|
2311
2366
|
return {
|
|
2312
|
-
qstashClient: new
|
|
2367
|
+
qstashClient: new import_qstash10.Client({
|
|
2313
2368
|
baseUrl: environment.QSTASH_URL,
|
|
2314
2369
|
token: environment.QSTASH_TOKEN
|
|
2315
2370
|
}),
|
|
@@ -2343,7 +2398,7 @@ var processOptions = (options) => {
|
|
|
2343
2398
|
throw error;
|
|
2344
2399
|
}
|
|
2345
2400
|
},
|
|
2346
|
-
receiver: receiverEnvironmentVariablesSet ? new
|
|
2401
|
+
receiver: receiverEnvironmentVariablesSet ? new import_qstash9.Receiver({
|
|
2347
2402
|
currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
|
|
2348
2403
|
nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
|
|
2349
2404
|
}) : void 0,
|
|
@@ -2351,6 +2406,7 @@ var processOptions = (options) => {
|
|
|
2351
2406
|
env: environment,
|
|
2352
2407
|
retries: DEFAULT_RETRIES,
|
|
2353
2408
|
useJSONContent: false,
|
|
2409
|
+
disableTelemetry: false,
|
|
2354
2410
|
...options
|
|
2355
2411
|
};
|
|
2356
2412
|
};
|
|
@@ -2385,7 +2441,7 @@ var determineUrls = async (request, url, baseUrl, failureFunction, failureUrl, d
|
|
|
2385
2441
|
var AUTH_FAIL_MESSAGE = `Failed to authenticate Workflow request. If this is unexpected, see the caveat https://upstash.com/docs/workflow/basics/caveats#avoid-non-deterministic-code-outside-context-run`;
|
|
2386
2442
|
|
|
2387
2443
|
// src/serve/index.ts
|
|
2388
|
-
var serveBase = (routeFunction, options) => {
|
|
2444
|
+
var serveBase = (routeFunction, telemetry, options) => {
|
|
2389
2445
|
const {
|
|
2390
2446
|
qstashClient,
|
|
2391
2447
|
onStepFinish,
|
|
@@ -2398,8 +2454,10 @@ var serveBase = (routeFunction, options) => {
|
|
|
2398
2454
|
baseUrl,
|
|
2399
2455
|
env,
|
|
2400
2456
|
retries,
|
|
2401
|
-
useJSONContent
|
|
2457
|
+
useJSONContent,
|
|
2458
|
+
disableTelemetry
|
|
2402
2459
|
} = processOptions(options);
|
|
2460
|
+
telemetry = disableTelemetry ? void 0 : telemetry;
|
|
2403
2461
|
const debug = WorkflowLogger.getLogger(verbose);
|
|
2404
2462
|
const handler = async (request) => {
|
|
2405
2463
|
await debug?.log("INFO", "ENDPOINT_START");
|
|
@@ -2435,7 +2493,10 @@ var serveBase = (routeFunction, options) => {
|
|
|
2435
2493
|
qstashClient,
|
|
2436
2494
|
initialPayloadParser,
|
|
2437
2495
|
routeFunction,
|
|
2438
|
-
failureFunction
|
|
2496
|
+
failureFunction,
|
|
2497
|
+
env,
|
|
2498
|
+
retries,
|
|
2499
|
+
debug
|
|
2439
2500
|
);
|
|
2440
2501
|
if (failureCheck.isErr()) {
|
|
2441
2502
|
throw failureCheck.error;
|
|
@@ -2453,7 +2514,8 @@ var serveBase = (routeFunction, options) => {
|
|
|
2453
2514
|
failureUrl: workflowFailureUrl,
|
|
2454
2515
|
debug,
|
|
2455
2516
|
env,
|
|
2456
|
-
retries
|
|
2517
|
+
retries,
|
|
2518
|
+
telemetry
|
|
2457
2519
|
});
|
|
2458
2520
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
2459
2521
|
routeFunction,
|
|
@@ -2469,22 +2531,23 @@ var serveBase = (routeFunction, options) => {
|
|
|
2469
2531
|
"auth-fail"
|
|
2470
2532
|
);
|
|
2471
2533
|
}
|
|
2472
|
-
const callReturnCheck = await handleThirdPartyCallResult(
|
|
2534
|
+
const callReturnCheck = await handleThirdPartyCallResult({
|
|
2473
2535
|
request,
|
|
2474
|
-
rawInitialPayload,
|
|
2475
|
-
qstashClient,
|
|
2536
|
+
requestPayload: rawInitialPayload,
|
|
2537
|
+
client: qstashClient,
|
|
2476
2538
|
workflowUrl,
|
|
2477
|
-
workflowFailureUrl,
|
|
2539
|
+
failureUrl: workflowFailureUrl,
|
|
2478
2540
|
retries,
|
|
2541
|
+
telemetry,
|
|
2479
2542
|
debug
|
|
2480
|
-
);
|
|
2543
|
+
});
|
|
2481
2544
|
if (callReturnCheck.isErr()) {
|
|
2482
2545
|
await debug?.log("ERROR", "SUBMIT_THIRD_PARTY_RESULT", {
|
|
2483
2546
|
error: callReturnCheck.error.message
|
|
2484
2547
|
});
|
|
2485
2548
|
throw callReturnCheck.error;
|
|
2486
2549
|
} else if (callReturnCheck.value === "continue-workflow") {
|
|
2487
|
-
const result = isFirstInvocation ? await triggerFirstInvocation(workflowContext,
|
|
2550
|
+
const result = isFirstInvocation ? await triggerFirstInvocation({ workflowContext, useJSONContent, telemetry, debug }) : await triggerRouteFunction({
|
|
2488
2551
|
onStep: async () => routeFunction(workflowContext),
|
|
2489
2552
|
onCleanup: async () => {
|
|
2490
2553
|
await triggerWorkflowDelete(workflowContext, debug);
|
|
@@ -2519,11 +2582,18 @@ var serveBase = (routeFunction, options) => {
|
|
|
2519
2582
|
return { handler: safeHandler };
|
|
2520
2583
|
};
|
|
2521
2584
|
var serve = (routeFunction, options) => {
|
|
2522
|
-
return serveBase(
|
|
2585
|
+
return serveBase(
|
|
2586
|
+
routeFunction,
|
|
2587
|
+
{
|
|
2588
|
+
sdk: SDK_TELEMETRY,
|
|
2589
|
+
framework: "unknown"
|
|
2590
|
+
},
|
|
2591
|
+
options
|
|
2592
|
+
);
|
|
2523
2593
|
};
|
|
2524
2594
|
|
|
2525
2595
|
// src/client/index.ts
|
|
2526
|
-
var
|
|
2596
|
+
var import_qstash11 = require("@upstash/qstash");
|
|
2527
2597
|
var Client4 = class {
|
|
2528
2598
|
client;
|
|
2529
2599
|
constructor(clientConfig) {
|
|
@@ -2532,7 +2602,7 @@ var Client4 = class {
|
|
|
2532
2602
|
"QStash token is required for Upstash Workflow!\n\nTo fix this:\n1. Get your token from the Upstash Console (https://console.upstash.com/qstash)\n2. Initialize the workflow client with:\n\n const client = new Client({\n token: '<YOUR_QSTASH_TOKEN>'\n });"
|
|
2533
2603
|
);
|
|
2534
2604
|
}
|
|
2535
|
-
this.client = new
|
|
2605
|
+
this.client = new import_qstash11.Client(clientConfig);
|
|
2536
2606
|
}
|
|
2537
2607
|
/**
|
|
2538
2608
|
* Cancel an ongoing workflow
|
|
@@ -2693,9 +2763,16 @@ var Client4 = class {
|
|
|
2693
2763
|
initialPayload: body,
|
|
2694
2764
|
steps: [],
|
|
2695
2765
|
url,
|
|
2696
|
-
workflowRunId: finalWorkflowRunId
|
|
2766
|
+
workflowRunId: finalWorkflowRunId,
|
|
2767
|
+
retries,
|
|
2768
|
+
telemetry: void 0
|
|
2769
|
+
// can't know workflow telemetry here
|
|
2770
|
+
});
|
|
2771
|
+
const result = await triggerFirstInvocation({
|
|
2772
|
+
workflowContext: context,
|
|
2773
|
+
telemetry: void 0
|
|
2774
|
+
// can't know workflow telemetry here
|
|
2697
2775
|
});
|
|
2698
|
-
const result = await triggerFirstInvocation(context, retries ?? DEFAULT_RETRIES);
|
|
2699
2776
|
if (result.isOk()) {
|
|
2700
2777
|
return { workflowRunId: finalWorkflowRunId };
|
|
2701
2778
|
} else {
|
package/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
DEFAULT_RETRIES,
|
|
3
2
|
StepTypes,
|
|
4
3
|
WorkflowAbort,
|
|
5
4
|
WorkflowContext,
|
|
@@ -10,7 +9,7 @@ import {
|
|
|
10
9
|
makeNotifyRequest,
|
|
11
10
|
serve,
|
|
12
11
|
triggerFirstInvocation
|
|
13
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ETDFMXER.mjs";
|
|
14
13
|
|
|
15
14
|
// src/client/index.ts
|
|
16
15
|
import { Client as QStashClient } from "@upstash/qstash";
|
|
@@ -183,9 +182,16 @@ var Client = class {
|
|
|
183
182
|
initialPayload: body,
|
|
184
183
|
steps: [],
|
|
185
184
|
url,
|
|
186
|
-
workflowRunId: finalWorkflowRunId
|
|
185
|
+
workflowRunId: finalWorkflowRunId,
|
|
186
|
+
retries,
|
|
187
|
+
telemetry: void 0
|
|
188
|
+
// can't know workflow telemetry here
|
|
189
|
+
});
|
|
190
|
+
const result = await triggerFirstInvocation({
|
|
191
|
+
workflowContext: context,
|
|
192
|
+
telemetry: void 0
|
|
193
|
+
// can't know workflow telemetry here
|
|
187
194
|
});
|
|
188
|
-
const result = await triggerFirstInvocation(context, retries ?? DEFAULT_RETRIES);
|
|
189
195
|
if (result.isOk()) {
|
|
190
196
|
return { workflowRunId: finalWorkflowRunId };
|
|
191
197
|
} else {
|
package/nextjs.d.mts
CHANGED
package/nextjs.d.ts
CHANGED