@upstash/qstash 2.9.0 → 2.9.1-rc.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/{chunk-QYBCXZKB.mjs → chunk-RUCOF5QZ.mjs} +189 -61
- package/{chunk-M7SEEFAC.mjs → chunk-SN6OPGRS.mjs} +1 -1
- package/{chunk-H5OAU75L.mjs → chunk-STWPT5EV.mjs} +1 -1
- package/{client-BVG9vt90.d.ts → client-Gv4WRTxB.d.mts} +147 -68
- package/{client-BVG9vt90.d.mts → client-Gv4WRTxB.d.ts} +147 -68
- package/cloudflare.d.mts +1 -1
- package/cloudflare.d.ts +1 -1
- package/cloudflare.js +189 -61
- package/cloudflare.mjs +1 -1
- package/h3.d.mts +1 -1
- package/h3.d.ts +1 -1
- package/h3.js +189 -61
- package/h3.mjs +3 -3
- package/hono.d.mts +1 -1
- package/hono.d.ts +1 -1
- package/hono.js +189 -61
- package/hono.mjs +1 -1
- package/index.d.mts +2 -2
- package/index.d.ts +2 -2
- package/index.js +188 -60
- package/index.mjs +2 -2
- package/nextjs.d.mts +1 -1
- package/nextjs.d.ts +1 -1
- package/nextjs.js +189 -61
- package/nextjs.mjs +1 -1
- package/nuxt.mjs +3 -3
- package/package.json +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +189 -61
- package/solidjs.mjs +2 -2
- package/svelte.d.mts +1 -1
- package/svelte.d.ts +1 -1
- package/svelte.js +189 -61
- package/svelte.mjs +2 -2
- package/workflow.d.mts +1 -1
- package/workflow.d.ts +1 -1
- package/workflow.js +189 -61
- package/workflow.mjs +1 -1
package/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RateLimit, C as ChatRateLimit, S as Step, F as FailureFunctionPayload, L as LLMOwner, B as BaseProvider, E as EmailOwner, P as ProviderInfo } from './client-
|
|
2
|
-
export { A as AddEndpointsRequest,
|
|
1
|
+
import { R as RateLimit, C as ChatRateLimit, S as Step, F as FailureFunctionPayload, L as LLMOwner, B as BaseProvider, E as EmailOwner, P as ProviderInfo } from './client-Gv4WRTxB.mjs';
|
|
2
|
+
export { A as AddEndpointsRequest, N as BodyInit, Y as Chat, _ as ChatCompletion, $ as ChatCompletionChunk, Z as ChatCompletionMessage, a5 as ChatRequest, j as Client, r as CreateScheduleRequest, t as Endpoint, z as Event, I as EventPayload, h as EventsRequest, X as FlowControl, K as GetEventsPayload, i as GetEventsResponse, J as GetLogsPayload, G as GetLogsResponse, H as HTTPMethods, O as HeadersInit, y as Log, D as LogPayload, g as LogsRequest, M as Message, o as MessagePayload, p as Messages, a3 as OpenAIChatModel, a4 as PromptChatRequest, d as PublishBatchRequest, f as PublishJsonRequest, e as PublishRequest, n as PublishResponse, k as PublishToApiResponse, m as PublishToUrlGroupsResponse, l as PublishToUrlResponse, Q as QueueRequest, c as Receiver, a as ReceiverConfig, u as RemoveEndpointsRequest, T as RequestOptions, q as Schedule, s as Schedules, b as SignatureError, x as State, a1 as StreamDisabled, a0 as StreamEnabled, a2 as StreamParameter, U as UniversalFilterFields, v as UrlGroup, w as UrlGroups, V as VerifyRequest, W as WithCursor, a8 as anthropic, a9 as custom, a7 as openai, a6 as upstash } from './client-Gv4WRTxB.mjs';
|
|
3
3
|
import 'neverthrow';
|
|
4
4
|
|
|
5
5
|
/**
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RateLimit, C as ChatRateLimit, S as Step, F as FailureFunctionPayload, L as LLMOwner, B as BaseProvider, E as EmailOwner, P as ProviderInfo } from './client-
|
|
2
|
-
export { A as AddEndpointsRequest,
|
|
1
|
+
import { R as RateLimit, C as ChatRateLimit, S as Step, F as FailureFunctionPayload, L as LLMOwner, B as BaseProvider, E as EmailOwner, P as ProviderInfo } from './client-Gv4WRTxB.js';
|
|
2
|
+
export { A as AddEndpointsRequest, N as BodyInit, Y as Chat, _ as ChatCompletion, $ as ChatCompletionChunk, Z as ChatCompletionMessage, a5 as ChatRequest, j as Client, r as CreateScheduleRequest, t as Endpoint, z as Event, I as EventPayload, h as EventsRequest, X as FlowControl, K as GetEventsPayload, i as GetEventsResponse, J as GetLogsPayload, G as GetLogsResponse, H as HTTPMethods, O as HeadersInit, y as Log, D as LogPayload, g as LogsRequest, M as Message, o as MessagePayload, p as Messages, a3 as OpenAIChatModel, a4 as PromptChatRequest, d as PublishBatchRequest, f as PublishJsonRequest, e as PublishRequest, n as PublishResponse, k as PublishToApiResponse, m as PublishToUrlGroupsResponse, l as PublishToUrlResponse, Q as QueueRequest, c as Receiver, a as ReceiverConfig, u as RemoveEndpointsRequest, T as RequestOptions, q as Schedule, s as Schedules, b as SignatureError, x as State, a1 as StreamDisabled, a0 as StreamEnabled, a2 as StreamParameter, U as UniversalFilterFields, v as UrlGroup, w as UrlGroups, V as VerifyRequest, W as WithCursor, a8 as anthropic, a9 as custom, a7 as openai, a6 as upstash } from './client-Gv4WRTxB.js';
|
|
3
3
|
import 'neverthrow';
|
|
4
4
|
|
|
5
5
|
/**
|
package/index.js
CHANGED
|
@@ -423,6 +423,43 @@ function decodeBase64(base64) {
|
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
|
+
function buildBulkActionFilterPayload(request, options) {
|
|
427
|
+
const hasDlqIds = "dlqIds" in request && request.dlqIds !== void 0;
|
|
428
|
+
const hasAll = "all" in request && Boolean(request.all);
|
|
429
|
+
const filterKeys = Object.keys(request).filter((k) => k !== "dlqIds" && k !== "all");
|
|
430
|
+
const hasFilters = filterKeys.length > 0;
|
|
431
|
+
if (hasDlqIds && hasAll) {
|
|
432
|
+
throw new QstashError("dlqIds and all: true are mutually exclusive.");
|
|
433
|
+
}
|
|
434
|
+
if (hasDlqIds && hasFilters) {
|
|
435
|
+
throw new QstashError(
|
|
436
|
+
`dlqIds cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
if (hasAll && hasFilters) {
|
|
440
|
+
throw new QstashError(
|
|
441
|
+
`all: true cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
if (hasAll)
|
|
445
|
+
return {};
|
|
446
|
+
const { urlGroup, callerIp, ...rest } = request;
|
|
447
|
+
const payload = {
|
|
448
|
+
...rest,
|
|
449
|
+
...urlGroup === void 0 || typeof urlGroup !== "string" ? {} : { topicName: urlGroup },
|
|
450
|
+
...callerIp === void 0 || typeof callerIp !== "string" ? {} : options?.callerIpCasing ? { callerIP: callerIp } : { callerIp }
|
|
451
|
+
};
|
|
452
|
+
if (Object.keys(payload).length === 0) {
|
|
453
|
+
throw new QstashError(
|
|
454
|
+
"No filters provided. Pass { all: true } to explicitly target all messages."
|
|
455
|
+
);
|
|
456
|
+
}
|
|
457
|
+
return payload;
|
|
458
|
+
}
|
|
459
|
+
function normalizeCursor(response) {
|
|
460
|
+
const cursor = response.cursor;
|
|
461
|
+
return { ...response, cursor: cursor || void 0 };
|
|
462
|
+
}
|
|
426
463
|
function getRuntime() {
|
|
427
464
|
if (typeof process === "object" && typeof process.versions == "object" && process.versions.bun)
|
|
428
465
|
return `bun@${process.versions.bun}`;
|
|
@@ -652,17 +689,20 @@ var DLQ = class {
|
|
|
652
689
|
/**
|
|
653
690
|
* List messages in the dlq
|
|
654
691
|
*/
|
|
655
|
-
async listMessages(options) {
|
|
692
|
+
async listMessages(options = {}) {
|
|
693
|
+
const { urlGroup, ...restFilter } = options.filter ?? {};
|
|
656
694
|
const filterPayload = {
|
|
657
|
-
...
|
|
658
|
-
topicName:
|
|
695
|
+
...restFilter,
|
|
696
|
+
...urlGroup === void 0 ? {} : { topicName: urlGroup }
|
|
659
697
|
};
|
|
660
698
|
const messagesPayload = await this.http.request({
|
|
661
699
|
method: "GET",
|
|
662
700
|
path: ["v2", "dlq"],
|
|
663
701
|
query: {
|
|
664
|
-
cursor: options
|
|
665
|
-
count: options
|
|
702
|
+
cursor: options.cursor,
|
|
703
|
+
count: options.count,
|
|
704
|
+
order: options.order,
|
|
705
|
+
trimBody: options.trimBody,
|
|
666
706
|
...filterPayload
|
|
667
707
|
}
|
|
668
708
|
});
|
|
@@ -678,26 +718,70 @@ var DLQ = class {
|
|
|
678
718
|
};
|
|
679
719
|
}
|
|
680
720
|
/**
|
|
681
|
-
* Remove
|
|
721
|
+
* Remove messages from the dlq.
|
|
722
|
+
*
|
|
723
|
+
* Can be called with:
|
|
724
|
+
* - A single dlqId: `delete("id")`
|
|
725
|
+
* - An array of dlqIds: `delete(["id1", "id2"])`
|
|
726
|
+
* - An object with dlqIds: `delete({ dlqIds: ["id1", "id2"] })`
|
|
727
|
+
* - A filter object: `delete({ url: "https://example.com", label: "label" })`
|
|
728
|
+
* - All messages: `delete({ all: true })`
|
|
729
|
+
*
|
|
730
|
+
* Note: passing an empty array returns `{ deleted: 0 }` without making a request.
|
|
682
731
|
*/
|
|
683
|
-
async delete(
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
732
|
+
async delete(request) {
|
|
733
|
+
if (typeof request === "string") {
|
|
734
|
+
await this.http.request({
|
|
735
|
+
method: "DELETE",
|
|
736
|
+
path: ["v2", "dlq", request],
|
|
737
|
+
parseResponseAsJson: false
|
|
738
|
+
});
|
|
739
|
+
return { deleted: 1 };
|
|
740
|
+
}
|
|
741
|
+
if (Array.isArray(request) && request.length === 0)
|
|
742
|
+
return { deleted: 0 };
|
|
743
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
744
|
+
return normalizeCursor(
|
|
745
|
+
await this.http.request({
|
|
746
|
+
method: "DELETE",
|
|
747
|
+
path: ["v2", "dlq"],
|
|
748
|
+
query: buildBulkActionFilterPayload(filters)
|
|
749
|
+
})
|
|
750
|
+
);
|
|
690
751
|
}
|
|
691
752
|
/**
|
|
692
753
|
* Remove multiple messages from the dlq using their `dlqId`s
|
|
754
|
+
*
|
|
755
|
+
* @deprecated Use `delete` instead
|
|
693
756
|
*/
|
|
694
757
|
async deleteMany(request) {
|
|
695
|
-
return await this.
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
758
|
+
return await this.delete(request);
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Retry messages from the dlq.
|
|
762
|
+
*
|
|
763
|
+
* Can be called with:
|
|
764
|
+
* - A single dlqId: `retry("id")`
|
|
765
|
+
* - An array of dlqIds: `retry(["id1", "id2"])`
|
|
766
|
+
* - An object with dlqIds: `retry({ dlqIds: ["id1", "id2"] })`
|
|
767
|
+
* - A filter object: `retry({ url: "https://example.com", label: "label" })`
|
|
768
|
+
* - All messages: `retry({ all: true })`
|
|
769
|
+
*
|
|
770
|
+
* Note: passing an empty array returns `{ responses: [] }` without making a request.
|
|
771
|
+
*/
|
|
772
|
+
async retry(request) {
|
|
773
|
+
if (typeof request === "string")
|
|
774
|
+
request = [request];
|
|
775
|
+
if (Array.isArray(request) && request.length === 0)
|
|
776
|
+
return { responses: [] };
|
|
777
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
778
|
+
return normalizeCursor(
|
|
779
|
+
await this.http.request({
|
|
780
|
+
method: "POST",
|
|
781
|
+
path: ["v2", "dlq", "retry"],
|
|
782
|
+
query: buildBulkActionFilterPayload(filters)
|
|
783
|
+
})
|
|
784
|
+
);
|
|
701
785
|
}
|
|
702
786
|
};
|
|
703
787
|
|
|
@@ -798,7 +882,15 @@ var HttpClient = class {
|
|
|
798
882
|
const url = new URL([request.baseUrl ?? this.baseUrl, ...request.path].join("/"));
|
|
799
883
|
if (request.query) {
|
|
800
884
|
for (const [key, value] of Object.entries(request.query)) {
|
|
801
|
-
if (value
|
|
885
|
+
if (value === void 0)
|
|
886
|
+
continue;
|
|
887
|
+
if (Array.isArray(value)) {
|
|
888
|
+
for (const item of value) {
|
|
889
|
+
url.searchParams.append(key, item);
|
|
890
|
+
}
|
|
891
|
+
} else if (value instanceof Date) {
|
|
892
|
+
url.searchParams.set(key, value.getTime().toString());
|
|
893
|
+
} else {
|
|
802
894
|
url.searchParams.set(key, value.toString());
|
|
803
895
|
}
|
|
804
896
|
}
|
|
@@ -1029,29 +1121,57 @@ var Messages = class {
|
|
|
1029
1121
|
return message;
|
|
1030
1122
|
}
|
|
1031
1123
|
/**
|
|
1032
|
-
* Cancel
|
|
1124
|
+
* Cancel messages.
|
|
1125
|
+
*
|
|
1126
|
+
* Can be called with:
|
|
1127
|
+
* - A single messageId: `cancel("id")`
|
|
1128
|
+
* - An array of messageIds: `cancel(["id1", "id2"])`
|
|
1129
|
+
* - A filter object: `cancel({ flowControlKey: "key", label: "label" })`
|
|
1130
|
+
* - All messages: `cancel({ all: true })`
|
|
1033
1131
|
*/
|
|
1034
|
-
async
|
|
1132
|
+
async cancel(request) {
|
|
1133
|
+
if (typeof request === "string") {
|
|
1134
|
+
return await this.http.request({
|
|
1135
|
+
method: "DELETE",
|
|
1136
|
+
path: ["v2", "messages", request]
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
if (Array.isArray(request) && request.length === 0)
|
|
1140
|
+
return { cancelled: 0 };
|
|
1141
|
+
const filters = Array.isArray(request) ? { messageIds: request } : request;
|
|
1035
1142
|
return await this.http.request({
|
|
1143
|
+
method: "DELETE",
|
|
1144
|
+
path: ["v2", "messages"],
|
|
1145
|
+
query: buildBulkActionFilterPayload(filters, { callerIpCasing: true })
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
1148
|
+
/**
|
|
1149
|
+
* Delete a message.
|
|
1150
|
+
*
|
|
1151
|
+
* @deprecated Use `cancel(messageId: string)` instead
|
|
1152
|
+
*/
|
|
1153
|
+
async delete(messageId) {
|
|
1154
|
+
await this.http.request({
|
|
1036
1155
|
method: "DELETE",
|
|
1037
1156
|
path: ["v2", "messages", messageId],
|
|
1038
1157
|
parseResponseAsJson: false
|
|
1039
1158
|
});
|
|
1040
1159
|
}
|
|
1160
|
+
/**
|
|
1161
|
+
* Cancel multiple messages by their messageIds.
|
|
1162
|
+
*
|
|
1163
|
+
* @deprecated Use `cancel(messageIds: string[])` instead
|
|
1164
|
+
*/
|
|
1041
1165
|
async deleteMany(messageIds) {
|
|
1042
|
-
const result = await this.
|
|
1043
|
-
method: "DELETE",
|
|
1044
|
-
path: ["v2", "messages"],
|
|
1045
|
-
headers: { "Content-Type": "application/json" },
|
|
1046
|
-
body: JSON.stringify({ messageIds })
|
|
1047
|
-
});
|
|
1166
|
+
const result = await this.cancel(messageIds);
|
|
1048
1167
|
return result.cancelled;
|
|
1049
1168
|
}
|
|
1169
|
+
/**
|
|
1170
|
+
* Cancel all messages
|
|
1171
|
+
* @deprecated Use `cancel({all: true})` to cancel all
|
|
1172
|
+
*/
|
|
1050
1173
|
async deleteAll() {
|
|
1051
|
-
const result = await this.
|
|
1052
|
-
method: "DELETE",
|
|
1053
|
-
path: ["v2", "messages"]
|
|
1054
|
-
});
|
|
1174
|
+
const result = await this.cancel({ all: true });
|
|
1055
1175
|
return result.cancelled;
|
|
1056
1176
|
}
|
|
1057
1177
|
};
|
|
@@ -1416,7 +1536,7 @@ var Workflow = class {
|
|
|
1416
1536
|
};
|
|
1417
1537
|
|
|
1418
1538
|
// version.ts
|
|
1419
|
-
var VERSION = "v2.9.
|
|
1539
|
+
var VERSION = "v2.9.1-rc.1";
|
|
1420
1540
|
|
|
1421
1541
|
// src/client/client.ts
|
|
1422
1542
|
var Client = class {
|
|
@@ -1611,39 +1731,47 @@ var Client = class {
|
|
|
1611
1731
|
* }
|
|
1612
1732
|
* ```
|
|
1613
1733
|
*/
|
|
1614
|
-
async logs(request) {
|
|
1615
|
-
const
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1734
|
+
async logs(request = {}) {
|
|
1735
|
+
const {
|
|
1736
|
+
urlGroup,
|
|
1737
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1738
|
+
topicName,
|
|
1739
|
+
fromDate,
|
|
1740
|
+
toDate,
|
|
1741
|
+
callerIp,
|
|
1742
|
+
messageIds,
|
|
1743
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1744
|
+
count: filterCount,
|
|
1745
|
+
...restFilter
|
|
1746
|
+
} = request.filter ?? {};
|
|
1747
|
+
const filterPayload = {
|
|
1748
|
+
...restFilter,
|
|
1749
|
+
topicName: urlGroup ?? topicName,
|
|
1750
|
+
fromDate,
|
|
1751
|
+
toDate,
|
|
1752
|
+
callerIp
|
|
1753
|
+
};
|
|
1754
|
+
let cursorString;
|
|
1755
|
+
if (typeof request.cursor === "number" && request.cursor > 0) {
|
|
1756
|
+
cursorString = request.cursor.toString();
|
|
1757
|
+
} else if (typeof request.cursor === "string" && request.cursor !== "") {
|
|
1758
|
+
cursorString = request.cursor;
|
|
1630
1759
|
}
|
|
1760
|
+
const query = {
|
|
1761
|
+
cursor: cursorString,
|
|
1762
|
+
count: request.count ?? filterCount,
|
|
1763
|
+
order: request.order,
|
|
1764
|
+
trimBody: request.trimBody,
|
|
1765
|
+
messageIds,
|
|
1766
|
+
...filterPayload
|
|
1767
|
+
};
|
|
1631
1768
|
const responsePayload = await this.http.request({
|
|
1632
1769
|
path: ["v2", "events"],
|
|
1633
1770
|
method: "GET",
|
|
1634
1771
|
query
|
|
1635
1772
|
});
|
|
1636
|
-
const logs = responsePayload.events.map((event) => {
|
|
1637
|
-
|
|
1638
|
-
...event,
|
|
1639
|
-
urlGroup: event.topicName
|
|
1640
|
-
};
|
|
1641
|
-
});
|
|
1642
|
-
return {
|
|
1643
|
-
cursor: responsePayload.cursor,
|
|
1644
|
-
logs,
|
|
1645
|
-
events: logs
|
|
1646
|
-
};
|
|
1773
|
+
const logs = responsePayload.events.map((event) => ({ ...event, urlGroup: event.topicName }));
|
|
1774
|
+
return { cursor: responsePayload.cursor, logs, events: logs };
|
|
1647
1775
|
}
|
|
1648
1776
|
/**
|
|
1649
1777
|
* @deprecated Will be removed in the next major release. Use the `logs` method instead.
|
package/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resend
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SN6OPGRS.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Chat,
|
|
6
6
|
Client,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
openai,
|
|
23
23
|
setupAnalytics,
|
|
24
24
|
upstash
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-RUCOF5QZ.mjs";
|
|
26
26
|
export {
|
|
27
27
|
Chat,
|
|
28
28
|
Client,
|
package/nextjs.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler } from 'next';
|
|
2
2
|
import { NextRequest, NextFetchEvent } from 'next/server';
|
|
3
|
-
import {
|
|
3
|
+
import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.mjs';
|
|
4
4
|
import 'neverthrow';
|
|
5
5
|
|
|
6
6
|
type VerifySignatureConfig = {
|
package/nextjs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler } from 'next';
|
|
2
2
|
import { NextRequest, NextFetchEvent } from 'next/server';
|
|
3
|
-
import {
|
|
3
|
+
import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.js';
|
|
4
4
|
import 'neverthrow';
|
|
5
5
|
|
|
6
6
|
type VerifySignatureConfig = {
|