@upstash/workflow 1.1.0 → 1.1.1
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 +2 -2
- package/astro.d.ts +2 -2
- package/astro.js +28 -2
- package/astro.mjs +1 -1
- package/{chunk-C5HFGF7Q.mjs → chunk-QRCGBBFJ.mjs} +28 -2
- package/cloudflare.d.mts +2 -2
- package/cloudflare.d.ts +2 -2
- package/cloudflare.js +28 -2
- package/cloudflare.mjs +1 -1
- package/express.d.mts +2 -2
- package/express.d.ts +2 -2
- package/express.js +28 -2
- package/express.mjs +1 -1
- package/h3.d.mts +2 -2
- package/h3.d.ts +2 -2
- package/h3.js +32 -6
- package/h3.mjs +5 -5
- package/hono.d.mts +2 -2
- package/hono.d.ts +2 -2
- package/hono.js +28 -2
- package/hono.mjs +1 -1
- package/index.d.mts +3 -3
- package/index.d.ts +3 -3
- package/index.js +31 -3
- package/index.mjs +4 -2
- package/nextjs.d.mts +2 -2
- package/nextjs.d.ts +2 -2
- package/nextjs.js +28 -2
- package/nextjs.mjs +1 -1
- package/package.json +1 -1
- package/react-router.d.mts +38 -0
- package/react-router.d.ts +38 -0
- package/react-router.js +3861 -0
- package/react-router.mjs +45 -0
- package/{serve-many-qnfynN1x.d.ts → serve-many-BP-8Ytbc.d.ts} +1 -1
- package/{serve-many-DhB8-zPD.d.mts → serve-many-BsycEL_d.d.mts} +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +28 -2
- package/solidjs.mjs +1 -1
- package/svelte.d.mts +2 -2
- package/svelte.d.ts +2 -2
- package/svelte.js +28 -2
- package/svelte.mjs +1 -1
- package/tanstack.d.mts +2 -2
- package/tanstack.d.ts +2 -2
- package/tanstack.js +28 -2
- package/tanstack.mjs +1 -1
- package/{types-pEje3VEB.d.ts → types-B90SJYZV.d.mts} +9 -2
- package/{types-pEje3VEB.d.mts → types-B90SJYZV.d.ts} +9 -2
package/h3.js
CHANGED
|
@@ -208,8 +208,7 @@ function assertMethod(event, expected, allowHead) {
|
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
var RawBodySymbol = Symbol.for("h3RawBody");
|
|
212
|
-
var ParsedBodySymbol = Symbol.for("h3ParsedBody");
|
|
211
|
+
var RawBodySymbol = /* @__PURE__ */ Symbol.for("h3RawBody");
|
|
213
212
|
var PayloadMethods$1 = ["PATCH", "POST", "PUT", "DELETE"];
|
|
214
213
|
function readRawBody(event, encoding = "utf8") {
|
|
215
214
|
assertMethod(event, PayloadMethods$1);
|
|
@@ -259,7 +258,9 @@ function readRawBody(event, encoding = "utf8") {
|
|
|
259
258
|
});
|
|
260
259
|
return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
|
|
261
260
|
}
|
|
262
|
-
if (!Number.parseInt(event.node.req.headers["content-length"] || "") &&
|
|
261
|
+
if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !/\bchunked\b/i.test(
|
|
262
|
+
String(event.node.req.headers["transfer-encoding"] ?? "")
|
|
263
|
+
)) {
|
|
263
264
|
return Promise.resolve(void 0);
|
|
264
265
|
}
|
|
265
266
|
const promise = event.node.req[RawBodySymbol] = new Promise(
|
|
@@ -293,7 +294,6 @@ function sanitizeStatusCode(statusCode, defaultStatusCode = 200) {
|
|
|
293
294
|
}
|
|
294
295
|
return statusCode;
|
|
295
296
|
}
|
|
296
|
-
var getSessionPromise = Symbol("getSession");
|
|
297
297
|
function defineEventHandler(handler) {
|
|
298
298
|
if (typeof handler === "function") {
|
|
299
299
|
handler.__is_handler__ = true;
|
|
@@ -495,6 +495,7 @@ var getSteps = async (requester, workflowRunId, messageId, dispatchDebug) => {
|
|
|
495
495
|
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
496
496
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
497
497
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
498
|
+
var WORKFLOW_CREATED_AT_HEADER = "Upstash-Workflow-CreatedAt";
|
|
498
499
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
499
500
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
500
501
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
@@ -1825,13 +1826,22 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1825
1826
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1826
1827
|
),
|
|
1827
1828
|
workflowRunId: context.workflowRunId,
|
|
1829
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
1828
1830
|
workflowUrl: context.url,
|
|
1829
1831
|
step
|
|
1830
1832
|
};
|
|
1831
1833
|
return JSON.stringify(request);
|
|
1832
1834
|
}
|
|
1833
1835
|
getHeaders({ context, telemetry: telemetry2, invokeCount }) {
|
|
1834
|
-
const {
|
|
1836
|
+
const {
|
|
1837
|
+
workflow,
|
|
1838
|
+
headers = {},
|
|
1839
|
+
workflowRunId,
|
|
1840
|
+
retries,
|
|
1841
|
+
retryDelay,
|
|
1842
|
+
flowControl,
|
|
1843
|
+
label
|
|
1844
|
+
} = this.params;
|
|
1835
1845
|
const newUrl = context.url.replace(/[^/]+$/, this.workflowId);
|
|
1836
1846
|
const { headers: triggerHeaders, contentType } = getHeaders({
|
|
1837
1847
|
initHeaderValue: "true",
|
|
@@ -1849,6 +1859,10 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1849
1859
|
userHeaders: new Headers(headers)
|
|
1850
1860
|
});
|
|
1851
1861
|
triggerHeaders["Upstash-Workflow-Invoke"] = "true";
|
|
1862
|
+
if (label) {
|
|
1863
|
+
triggerHeaders[WORKFLOW_LABEL_HEADER] = label;
|
|
1864
|
+
triggerHeaders[`upstash-forward-${WORKFLOW_LABEL_HEADER}`] = label;
|
|
1865
|
+
}
|
|
1852
1866
|
return { headers: triggerHeaders, contentType };
|
|
1853
1867
|
}
|
|
1854
1868
|
async submitStep({ context, body, headers }) {
|
|
@@ -2906,6 +2920,10 @@ var WorkflowContext = class {
|
|
|
2906
2920
|
* Run id of the workflow
|
|
2907
2921
|
*/
|
|
2908
2922
|
workflowRunId;
|
|
2923
|
+
/**
|
|
2924
|
+
* Creation time of the workflow run
|
|
2925
|
+
*/
|
|
2926
|
+
workflowRunCreatedAt;
|
|
2909
2927
|
/**
|
|
2910
2928
|
* URL of the workflow
|
|
2911
2929
|
*
|
|
@@ -2997,6 +3015,7 @@ var WorkflowContext = class {
|
|
|
2997
3015
|
constructor({
|
|
2998
3016
|
qstashClient,
|
|
2999
3017
|
workflowRunId,
|
|
3018
|
+
workflowRunCreatedAt,
|
|
3000
3019
|
headers,
|
|
3001
3020
|
steps,
|
|
3002
3021
|
url,
|
|
@@ -3009,6 +3028,7 @@ var WorkflowContext = class {
|
|
|
3009
3028
|
}) {
|
|
3010
3029
|
this.qstashClient = qstashClient;
|
|
3011
3030
|
this.workflowRunId = workflowRunId;
|
|
3031
|
+
this.workflowRunCreatedAt = workflowRunCreatedAt;
|
|
3012
3032
|
this.steps = steps;
|
|
3013
3033
|
this.url = url;
|
|
3014
3034
|
this.headers = headers;
|
|
@@ -3265,6 +3285,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3265
3285
|
token: "disabled-client"
|
|
3266
3286
|
}),
|
|
3267
3287
|
workflowRunId: context.workflowRunId,
|
|
3288
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
3268
3289
|
headers: context.headers,
|
|
3269
3290
|
steps: [],
|
|
3270
3291
|
url: context.url,
|
|
@@ -3466,7 +3487,9 @@ var handleFailure = async ({
|
|
|
3466
3487
|
return ok({ result: "failure-function-undefined" });
|
|
3467
3488
|
}
|
|
3468
3489
|
try {
|
|
3469
|
-
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(
|
|
3490
|
+
const { status, header, body, url, sourceBody, workflowRunId, workflowCreatedAt } = JSON.parse(
|
|
3491
|
+
requestPayload
|
|
3492
|
+
);
|
|
3470
3493
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3471
3494
|
let errorMessage = "";
|
|
3472
3495
|
let failStack = "";
|
|
@@ -3495,6 +3518,7 @@ var handleFailure = async ({
|
|
|
3495
3518
|
telemetry: void 0,
|
|
3496
3519
|
// not going to make requests in authentication check
|
|
3497
3520
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3521
|
+
workflowRunCreatedAt: workflowCreatedAt,
|
|
3498
3522
|
middlewareManager: void 0
|
|
3499
3523
|
});
|
|
3500
3524
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
@@ -3972,6 +3996,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3972
3996
|
}
|
|
3973
3997
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3974
3998
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3999
|
+
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3975
4000
|
const workflowContext = new WorkflowContext({
|
|
3976
4001
|
qstashClient: regionalClient,
|
|
3977
4002
|
workflowRunId,
|
|
@@ -3983,6 +4008,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3983
4008
|
telemetry: telemetry2,
|
|
3984
4009
|
invokeCount,
|
|
3985
4010
|
label,
|
|
4011
|
+
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3986
4012
|
middlewareManager
|
|
3987
4013
|
});
|
|
3988
4014
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
package/h3.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SDK_TELEMETRY,
|
|
3
3
|
serveBase,
|
|
4
4
|
serveManyBase
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QRCGBBFJ.mjs";
|
|
6
6
|
|
|
7
7
|
// node_modules/defu/dist/defu.mjs
|
|
8
8
|
function isPlainObject(value) {
|
|
@@ -186,8 +186,7 @@ function assertMethod(event, expected, allowHead) {
|
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
var RawBodySymbol = Symbol.for("h3RawBody");
|
|
190
|
-
var ParsedBodySymbol = Symbol.for("h3ParsedBody");
|
|
189
|
+
var RawBodySymbol = /* @__PURE__ */ Symbol.for("h3RawBody");
|
|
191
190
|
var PayloadMethods$1 = ["PATCH", "POST", "PUT", "DELETE"];
|
|
192
191
|
function readRawBody(event, encoding = "utf8") {
|
|
193
192
|
assertMethod(event, PayloadMethods$1);
|
|
@@ -237,7 +236,9 @@ function readRawBody(event, encoding = "utf8") {
|
|
|
237
236
|
});
|
|
238
237
|
return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
|
|
239
238
|
}
|
|
240
|
-
if (!Number.parseInt(event.node.req.headers["content-length"] || "") &&
|
|
239
|
+
if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !/\bchunked\b/i.test(
|
|
240
|
+
String(event.node.req.headers["transfer-encoding"] ?? "")
|
|
241
|
+
)) {
|
|
241
242
|
return Promise.resolve(void 0);
|
|
242
243
|
}
|
|
243
244
|
const promise = event.node.req[RawBodySymbol] = new Promise(
|
|
@@ -271,7 +272,6 @@ function sanitizeStatusCode(statusCode, defaultStatusCode = 200) {
|
|
|
271
272
|
}
|
|
272
273
|
return statusCode;
|
|
273
274
|
}
|
|
274
|
-
var getSessionPromise = Symbol("getSession");
|
|
275
275
|
function defineEventHandler(handler) {
|
|
276
276
|
if (typeof handler === "function") {
|
|
277
277
|
handler.__is_handler__ = true;
|
package/hono.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context } from 'hono';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions,
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B90SJYZV.mjs';
|
|
3
3
|
import { Variables } from 'hono/types';
|
|
4
|
-
import { s as serveManyBase } from './serve-many-
|
|
4
|
+
import { s as serveManyBase } from './serve-many-BsycEL_d.mjs';
|
|
5
5
|
import '@upstash/qstash';
|
|
6
6
|
import 'zod';
|
|
7
7
|
|
package/hono.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context } from 'hono';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions,
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B90SJYZV.js';
|
|
3
3
|
import { Variables } from 'hono/types';
|
|
4
|
-
import { s as serveManyBase } from './serve-many-
|
|
4
|
+
import { s as serveManyBase } from './serve-many-BP-8Ytbc.js';
|
|
5
5
|
import '@upstash/qstash';
|
|
6
6
|
import 'zod';
|
|
7
7
|
|
package/hono.js
CHANGED
|
@@ -186,6 +186,7 @@ var getSteps = async (requester, workflowRunId, messageId, dispatchDebug) => {
|
|
|
186
186
|
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
187
187
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
188
188
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
189
|
+
var WORKFLOW_CREATED_AT_HEADER = "Upstash-Workflow-CreatedAt";
|
|
189
190
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
190
191
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
191
192
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
@@ -1516,13 +1517,22 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1516
1517
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1517
1518
|
),
|
|
1518
1519
|
workflowRunId: context.workflowRunId,
|
|
1520
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
1519
1521
|
workflowUrl: context.url,
|
|
1520
1522
|
step
|
|
1521
1523
|
};
|
|
1522
1524
|
return JSON.stringify(request);
|
|
1523
1525
|
}
|
|
1524
1526
|
getHeaders({ context, telemetry: telemetry2, invokeCount }) {
|
|
1525
|
-
const {
|
|
1527
|
+
const {
|
|
1528
|
+
workflow,
|
|
1529
|
+
headers = {},
|
|
1530
|
+
workflowRunId,
|
|
1531
|
+
retries,
|
|
1532
|
+
retryDelay,
|
|
1533
|
+
flowControl,
|
|
1534
|
+
label
|
|
1535
|
+
} = this.params;
|
|
1526
1536
|
const newUrl = context.url.replace(/[^/]+$/, this.workflowId);
|
|
1527
1537
|
const { headers: triggerHeaders, contentType } = getHeaders({
|
|
1528
1538
|
initHeaderValue: "true",
|
|
@@ -1540,6 +1550,10 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1540
1550
|
userHeaders: new Headers(headers)
|
|
1541
1551
|
});
|
|
1542
1552
|
triggerHeaders["Upstash-Workflow-Invoke"] = "true";
|
|
1553
|
+
if (label) {
|
|
1554
|
+
triggerHeaders[WORKFLOW_LABEL_HEADER] = label;
|
|
1555
|
+
triggerHeaders[`upstash-forward-${WORKFLOW_LABEL_HEADER}`] = label;
|
|
1556
|
+
}
|
|
1543
1557
|
return { headers: triggerHeaders, contentType };
|
|
1544
1558
|
}
|
|
1545
1559
|
async submitStep({ context, body, headers }) {
|
|
@@ -2597,6 +2611,10 @@ var WorkflowContext = class {
|
|
|
2597
2611
|
* Run id of the workflow
|
|
2598
2612
|
*/
|
|
2599
2613
|
workflowRunId;
|
|
2614
|
+
/**
|
|
2615
|
+
* Creation time of the workflow run
|
|
2616
|
+
*/
|
|
2617
|
+
workflowRunCreatedAt;
|
|
2600
2618
|
/**
|
|
2601
2619
|
* URL of the workflow
|
|
2602
2620
|
*
|
|
@@ -2688,6 +2706,7 @@ var WorkflowContext = class {
|
|
|
2688
2706
|
constructor({
|
|
2689
2707
|
qstashClient,
|
|
2690
2708
|
workflowRunId,
|
|
2709
|
+
workflowRunCreatedAt,
|
|
2691
2710
|
headers,
|
|
2692
2711
|
steps,
|
|
2693
2712
|
url,
|
|
@@ -2700,6 +2719,7 @@ var WorkflowContext = class {
|
|
|
2700
2719
|
}) {
|
|
2701
2720
|
this.qstashClient = qstashClient;
|
|
2702
2721
|
this.workflowRunId = workflowRunId;
|
|
2722
|
+
this.workflowRunCreatedAt = workflowRunCreatedAt;
|
|
2703
2723
|
this.steps = steps;
|
|
2704
2724
|
this.url = url;
|
|
2705
2725
|
this.headers = headers;
|
|
@@ -2956,6 +2976,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2956
2976
|
token: "disabled-client"
|
|
2957
2977
|
}),
|
|
2958
2978
|
workflowRunId: context.workflowRunId,
|
|
2979
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
2959
2980
|
headers: context.headers,
|
|
2960
2981
|
steps: [],
|
|
2961
2982
|
url: context.url,
|
|
@@ -3157,7 +3178,9 @@ var handleFailure = async ({
|
|
|
3157
3178
|
return ok({ result: "failure-function-undefined" });
|
|
3158
3179
|
}
|
|
3159
3180
|
try {
|
|
3160
|
-
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(
|
|
3181
|
+
const { status, header, body, url, sourceBody, workflowRunId, workflowCreatedAt } = JSON.parse(
|
|
3182
|
+
requestPayload
|
|
3183
|
+
);
|
|
3161
3184
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3162
3185
|
let errorMessage = "";
|
|
3163
3186
|
let failStack = "";
|
|
@@ -3186,6 +3209,7 @@ var handleFailure = async ({
|
|
|
3186
3209
|
telemetry: void 0,
|
|
3187
3210
|
// not going to make requests in authentication check
|
|
3188
3211
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3212
|
+
workflowRunCreatedAt: workflowCreatedAt,
|
|
3189
3213
|
middlewareManager: void 0
|
|
3190
3214
|
});
|
|
3191
3215
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
@@ -3663,6 +3687,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3663
3687
|
}
|
|
3664
3688
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3665
3689
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3690
|
+
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3666
3691
|
const workflowContext = new WorkflowContext({
|
|
3667
3692
|
qstashClient: regionalClient,
|
|
3668
3693
|
workflowRunId,
|
|
@@ -3674,6 +3699,7 @@ var serveBase = (routeFunction, telemetry2, options, internalOptions) => {
|
|
|
3674
3699
|
telemetry: telemetry2,
|
|
3675
3700
|
invokeCount,
|
|
3676
3701
|
label,
|
|
3702
|
+
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3677
3703
|
middlewareManager
|
|
3678
3704
|
});
|
|
3679
3705
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
package/hono.mjs
CHANGED
package/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as WorkflowClient, b as WorkflowReceiver, c as RouteFunction, d as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, e as Waiter } from './types-
|
|
2
|
-
export { A as AsyncStepFunction, C as CallResponse,
|
|
3
|
-
import {
|
|
1
|
+
import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as WorkflowClient, b as WorkflowReceiver, c as RouteFunction, d as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, e as Waiter } from './types-B90SJYZV.mjs';
|
|
2
|
+
export { A as AsyncStepFunction, C as CallResponse, f as CallSettings, D as DetailedFinishCondition, g as Duration, E as ExclusiveValidationOptions, F as FailureFunctionPayload, h as FinishCondition, H as HeaderParams, I as InvokableWorkflow, i as InvokeStepResponse, j as InvokeWorkflowRequest, L as LazyInvokeStepParams, k as NotifyStepResponse, P as ParallelCallState, Q as QStashClientExtraConfig, l as RequiredExceptFields, m as Step, n as StepFunction, o as StepTypes, p as SyncStepFunction, q as WaitEventOptions, r as WaitRequest, s as WaitStepResponse, t as WorkflowAbort, u as WorkflowContext, v as WorkflowError, w as WorkflowNonRetryableError, x as WorkflowRetryAfterError } from './types-B90SJYZV.mjs';
|
|
3
|
+
import { FlowControl, PublishRequest, HTTPMethods, Client as Client$1 } from '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
|
|
6
6
|
type BaseStepLog = {
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as WorkflowClient, b as WorkflowReceiver, c as RouteFunction, d as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, e as Waiter } from './types-
|
|
2
|
-
export { A as AsyncStepFunction, C as CallResponse,
|
|
3
|
-
import {
|
|
1
|
+
import { S as StepType, R as RawStep, W as WorkflowMiddleware, a as WorkflowClient, b as WorkflowReceiver, c as RouteFunction, d as WorkflowServeOptions, T as Telemetry, N as NotifyResponse, e as Waiter } from './types-B90SJYZV.js';
|
|
2
|
+
export { A as AsyncStepFunction, C as CallResponse, f as CallSettings, D as DetailedFinishCondition, g as Duration, E as ExclusiveValidationOptions, F as FailureFunctionPayload, h as FinishCondition, H as HeaderParams, I as InvokableWorkflow, i as InvokeStepResponse, j as InvokeWorkflowRequest, L as LazyInvokeStepParams, k as NotifyStepResponse, P as ParallelCallState, Q as QStashClientExtraConfig, l as RequiredExceptFields, m as Step, n as StepFunction, o as StepTypes, p as SyncStepFunction, q as WaitEventOptions, r as WaitRequest, s as WaitStepResponse, t as WorkflowAbort, u as WorkflowContext, v as WorkflowError, w as WorkflowNonRetryableError, x as WorkflowRetryAfterError } from './types-B90SJYZV.js';
|
|
3
|
+
import { FlowControl, PublishRequest, HTTPMethods, Client as Client$1 } from '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
|
|
6
6
|
type BaseStepLog = {
|
package/index.js
CHANGED
|
@@ -200,6 +200,7 @@ var getSteps = async (requester, workflowRunId, messageId, dispatchDebug) => {
|
|
|
200
200
|
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
201
201
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
202
202
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
203
|
+
var WORKFLOW_CREATED_AT_HEADER = "Upstash-Workflow-CreatedAt";
|
|
203
204
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
204
205
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
205
206
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
@@ -1530,13 +1531,22 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1530
1531
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1531
1532
|
),
|
|
1532
1533
|
workflowRunId: context.workflowRunId,
|
|
1534
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
1533
1535
|
workflowUrl: context.url,
|
|
1534
1536
|
step
|
|
1535
1537
|
};
|
|
1536
1538
|
return JSON.stringify(request);
|
|
1537
1539
|
}
|
|
1538
1540
|
getHeaders({ context, telemetry, invokeCount }) {
|
|
1539
|
-
const {
|
|
1541
|
+
const {
|
|
1542
|
+
workflow,
|
|
1543
|
+
headers = {},
|
|
1544
|
+
workflowRunId,
|
|
1545
|
+
retries,
|
|
1546
|
+
retryDelay,
|
|
1547
|
+
flowControl,
|
|
1548
|
+
label
|
|
1549
|
+
} = this.params;
|
|
1540
1550
|
const newUrl = context.url.replace(/[^/]+$/, this.workflowId);
|
|
1541
1551
|
const { headers: triggerHeaders, contentType } = getHeaders({
|
|
1542
1552
|
initHeaderValue: "true",
|
|
@@ -1554,6 +1564,10 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1554
1564
|
userHeaders: new Headers(headers)
|
|
1555
1565
|
});
|
|
1556
1566
|
triggerHeaders["Upstash-Workflow-Invoke"] = "true";
|
|
1567
|
+
if (label) {
|
|
1568
|
+
triggerHeaders[WORKFLOW_LABEL_HEADER] = label;
|
|
1569
|
+
triggerHeaders[`upstash-forward-${WORKFLOW_LABEL_HEADER}`] = label;
|
|
1570
|
+
}
|
|
1557
1571
|
return { headers: triggerHeaders, contentType };
|
|
1558
1572
|
}
|
|
1559
1573
|
async submitStep({ context, body, headers }) {
|
|
@@ -2544,6 +2558,10 @@ var WorkflowContext = class {
|
|
|
2544
2558
|
* Run id of the workflow
|
|
2545
2559
|
*/
|
|
2546
2560
|
workflowRunId;
|
|
2561
|
+
/**
|
|
2562
|
+
* Creation time of the workflow run
|
|
2563
|
+
*/
|
|
2564
|
+
workflowRunCreatedAt;
|
|
2547
2565
|
/**
|
|
2548
2566
|
* URL of the workflow
|
|
2549
2567
|
*
|
|
@@ -2635,6 +2653,7 @@ var WorkflowContext = class {
|
|
|
2635
2653
|
constructor({
|
|
2636
2654
|
qstashClient,
|
|
2637
2655
|
workflowRunId,
|
|
2656
|
+
workflowRunCreatedAt,
|
|
2638
2657
|
headers,
|
|
2639
2658
|
steps,
|
|
2640
2659
|
url,
|
|
@@ -2647,6 +2666,7 @@ var WorkflowContext = class {
|
|
|
2647
2666
|
}) {
|
|
2648
2667
|
this.qstashClient = qstashClient;
|
|
2649
2668
|
this.workflowRunId = workflowRunId;
|
|
2669
|
+
this.workflowRunCreatedAt = workflowRunCreatedAt;
|
|
2650
2670
|
this.steps = steps;
|
|
2651
2671
|
this.url = url;
|
|
2652
2672
|
this.headers = headers;
|
|
@@ -2903,6 +2923,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2903
2923
|
token: "disabled-client"
|
|
2904
2924
|
}),
|
|
2905
2925
|
workflowRunId: context.workflowRunId,
|
|
2926
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
2906
2927
|
headers: context.headers,
|
|
2907
2928
|
steps: [],
|
|
2908
2929
|
url: context.url,
|
|
@@ -3104,7 +3125,9 @@ var handleFailure = async ({
|
|
|
3104
3125
|
return ok({ result: "failure-function-undefined" });
|
|
3105
3126
|
}
|
|
3106
3127
|
try {
|
|
3107
|
-
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(
|
|
3128
|
+
const { status, header, body, url, sourceBody, workflowRunId, workflowCreatedAt } = JSON.parse(
|
|
3129
|
+
requestPayload
|
|
3130
|
+
);
|
|
3108
3131
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3109
3132
|
let errorMessage = "";
|
|
3110
3133
|
let failStack = "";
|
|
@@ -3133,6 +3156,7 @@ var handleFailure = async ({
|
|
|
3133
3156
|
telemetry: void 0,
|
|
3134
3157
|
// not going to make requests in authentication check
|
|
3135
3158
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3159
|
+
workflowRunCreatedAt: workflowCreatedAt,
|
|
3136
3160
|
middlewareManager: void 0
|
|
3137
3161
|
});
|
|
3138
3162
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
@@ -3610,6 +3634,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3610
3634
|
}
|
|
3611
3635
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3612
3636
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3637
|
+
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3613
3638
|
const workflowContext = new WorkflowContext({
|
|
3614
3639
|
qstashClient: regionalClient,
|
|
3615
3640
|
workflowRunId,
|
|
@@ -3621,6 +3646,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3621
3646
|
telemetry,
|
|
3622
3647
|
invokeCount,
|
|
3623
3648
|
label,
|
|
3649
|
+
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3624
3650
|
middlewareManager
|
|
3625
3651
|
});
|
|
3626
3652
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
@@ -3998,7 +4024,9 @@ var Client4 = class {
|
|
|
3998
4024
|
url: option.url,
|
|
3999
4025
|
workflowRunId: finalWorkflowRunId,
|
|
4000
4026
|
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
4001
|
-
label: option.label
|
|
4027
|
+
label: option.label,
|
|
4028
|
+
workflowRunCreatedAt: Date.now()
|
|
4029
|
+
// pass a timestamp (server will override it)
|
|
4002
4030
|
});
|
|
4003
4031
|
return {
|
|
4004
4032
|
workflowContext: context,
|
package/index.mjs
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
prepareFlowControl,
|
|
16
16
|
serve,
|
|
17
17
|
triggerFirstInvocation
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-QRCGBBFJ.mjs";
|
|
19
19
|
|
|
20
20
|
// src/client/index.ts
|
|
21
21
|
import { Client as QStashClient } from "@upstash/qstash";
|
|
@@ -265,7 +265,9 @@ var Client = class {
|
|
|
265
265
|
url: option.url,
|
|
266
266
|
workflowRunId: finalWorkflowRunId,
|
|
267
267
|
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
268
|
-
label: option.label
|
|
268
|
+
label: option.label,
|
|
269
|
+
workflowRunCreatedAt: Date.now()
|
|
270
|
+
// pass a timestamp (server will override it)
|
|
269
271
|
});
|
|
270
272
|
return {
|
|
271
273
|
workflowContext: context,
|
package/nextjs.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B90SJYZV.mjs';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-BsycEL_d.mjs';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
package/nextjs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
-
import { c as RouteFunction, d as WorkflowServeOptions,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { c as RouteFunction, d as WorkflowServeOptions, I as InvokableWorkflow } from './types-B90SJYZV.js';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-BP-8Ytbc.js';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
package/nextjs.js
CHANGED
|
@@ -189,6 +189,7 @@ var getSteps = async (requester, workflowRunId, messageId, dispatchDebug) => {
|
|
|
189
189
|
var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
|
|
190
190
|
var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
|
|
191
191
|
var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
|
|
192
|
+
var WORKFLOW_CREATED_AT_HEADER = "Upstash-Workflow-CreatedAt";
|
|
192
193
|
var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
|
|
193
194
|
var WORKFLOW_FAILURE_CALLBACK_HEADER = "Upstash-Workflow-Failure-Callback";
|
|
194
195
|
var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
|
|
@@ -1519,13 +1520,22 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1519
1520
|
Object.entries(invokerHeaders).map((pairs) => [pairs[0], [pairs[1]]])
|
|
1520
1521
|
),
|
|
1521
1522
|
workflowRunId: context.workflowRunId,
|
|
1523
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
1522
1524
|
workflowUrl: context.url,
|
|
1523
1525
|
step
|
|
1524
1526
|
};
|
|
1525
1527
|
return JSON.stringify(request);
|
|
1526
1528
|
}
|
|
1527
1529
|
getHeaders({ context, telemetry, invokeCount }) {
|
|
1528
|
-
const {
|
|
1530
|
+
const {
|
|
1531
|
+
workflow,
|
|
1532
|
+
headers = {},
|
|
1533
|
+
workflowRunId,
|
|
1534
|
+
retries,
|
|
1535
|
+
retryDelay,
|
|
1536
|
+
flowControl,
|
|
1537
|
+
label
|
|
1538
|
+
} = this.params;
|
|
1529
1539
|
const newUrl = context.url.replace(/[^/]+$/, this.workflowId);
|
|
1530
1540
|
const { headers: triggerHeaders, contentType } = getHeaders({
|
|
1531
1541
|
initHeaderValue: "true",
|
|
@@ -1543,6 +1553,10 @@ var LazyInvokeStep = class extends BaseLazyStep {
|
|
|
1543
1553
|
userHeaders: new Headers(headers)
|
|
1544
1554
|
});
|
|
1545
1555
|
triggerHeaders["Upstash-Workflow-Invoke"] = "true";
|
|
1556
|
+
if (label) {
|
|
1557
|
+
triggerHeaders[WORKFLOW_LABEL_HEADER] = label;
|
|
1558
|
+
triggerHeaders[`upstash-forward-${WORKFLOW_LABEL_HEADER}`] = label;
|
|
1559
|
+
}
|
|
1546
1560
|
return { headers: triggerHeaders, contentType };
|
|
1547
1561
|
}
|
|
1548
1562
|
async submitStep({ context, body, headers }) {
|
|
@@ -2600,6 +2614,10 @@ var WorkflowContext = class {
|
|
|
2600
2614
|
* Run id of the workflow
|
|
2601
2615
|
*/
|
|
2602
2616
|
workflowRunId;
|
|
2617
|
+
/**
|
|
2618
|
+
* Creation time of the workflow run
|
|
2619
|
+
*/
|
|
2620
|
+
workflowRunCreatedAt;
|
|
2603
2621
|
/**
|
|
2604
2622
|
* URL of the workflow
|
|
2605
2623
|
*
|
|
@@ -2691,6 +2709,7 @@ var WorkflowContext = class {
|
|
|
2691
2709
|
constructor({
|
|
2692
2710
|
qstashClient,
|
|
2693
2711
|
workflowRunId,
|
|
2712
|
+
workflowRunCreatedAt,
|
|
2694
2713
|
headers,
|
|
2695
2714
|
steps,
|
|
2696
2715
|
url,
|
|
@@ -2703,6 +2722,7 @@ var WorkflowContext = class {
|
|
|
2703
2722
|
}) {
|
|
2704
2723
|
this.qstashClient = qstashClient;
|
|
2705
2724
|
this.workflowRunId = workflowRunId;
|
|
2725
|
+
this.workflowRunCreatedAt = workflowRunCreatedAt;
|
|
2706
2726
|
this.steps = steps;
|
|
2707
2727
|
this.url = url;
|
|
2708
2728
|
this.headers = headers;
|
|
@@ -2959,6 +2979,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
2959
2979
|
token: "disabled-client"
|
|
2960
2980
|
}),
|
|
2961
2981
|
workflowRunId: context.workflowRunId,
|
|
2982
|
+
workflowRunCreatedAt: context.workflowRunCreatedAt,
|
|
2962
2983
|
headers: context.headers,
|
|
2963
2984
|
steps: [],
|
|
2964
2985
|
url: context.url,
|
|
@@ -3160,7 +3181,9 @@ var handleFailure = async ({
|
|
|
3160
3181
|
return ok({ result: "failure-function-undefined" });
|
|
3161
3182
|
}
|
|
3162
3183
|
try {
|
|
3163
|
-
const { status, header, body, url, sourceBody, workflowRunId } = JSON.parse(
|
|
3184
|
+
const { status, header, body, url, sourceBody, workflowRunId, workflowCreatedAt } = JSON.parse(
|
|
3185
|
+
requestPayload
|
|
3186
|
+
);
|
|
3164
3187
|
const decodedBody = body ? decodeBase64(body) : "{}";
|
|
3165
3188
|
let errorMessage = "";
|
|
3166
3189
|
let failStack = "";
|
|
@@ -3189,6 +3212,7 @@ var handleFailure = async ({
|
|
|
3189
3212
|
telemetry: void 0,
|
|
3190
3213
|
// not going to make requests in authentication check
|
|
3191
3214
|
label: userHeaders.get(WORKFLOW_LABEL_HEADER) ?? void 0,
|
|
3215
|
+
workflowRunCreatedAt: workflowCreatedAt,
|
|
3192
3216
|
middlewareManager: void 0
|
|
3193
3217
|
});
|
|
3194
3218
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
|
@@ -3666,6 +3690,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3666
3690
|
}
|
|
3667
3691
|
const invokeCount = Number(request.headers.get(WORKFLOW_INVOKE_COUNT_HEADER) ?? "0");
|
|
3668
3692
|
const label = request.headers.get(WORKFLOW_LABEL_HEADER) ?? void 0;
|
|
3693
|
+
const workflowRunCreatedAt = request.headers.get(WORKFLOW_CREATED_AT_HEADER);
|
|
3669
3694
|
const workflowContext = new WorkflowContext({
|
|
3670
3695
|
qstashClient: regionalClient,
|
|
3671
3696
|
workflowRunId,
|
|
@@ -3677,6 +3702,7 @@ var serveBase = (routeFunction, telemetry, options, internalOptions) => {
|
|
|
3677
3702
|
telemetry,
|
|
3678
3703
|
invokeCount,
|
|
3679
3704
|
label,
|
|
3705
|
+
workflowRunCreatedAt: Number(workflowRunCreatedAt),
|
|
3680
3706
|
middlewareManager
|
|
3681
3707
|
});
|
|
3682
3708
|
const authCheck = await DisabledWorkflowContext.tryAuthentication(
|
package/nextjs.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@upstash/workflow","version":"v1.1.
|
|
1
|
+
{"name":"@upstash/workflow","version":"v1.1.1","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"},"./tanstack":{"import":"./tanstack.mjs","require":"./tanstack.js"},"./react-router":{"import":"./react-router.mjs","require":"./react-router.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@github.com:upstash/workflow-js.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.6","astro":"^4.16.7","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","express":"^5.1.0","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.20","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsup":"^8.3.0","typescript":"^5.7.2","typescript-eslint":"^8.18.0"},"dependencies":{"@upstash/qstash":"2.9.0-rc"},"directories":{"example":"examples"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"}}
|