@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/h3.js
CHANGED
|
@@ -716,6 +716,43 @@ function decodeBase64(base64) {
|
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
|
+
function buildBulkActionFilterPayload(request, options) {
|
|
720
|
+
const hasDlqIds = "dlqIds" in request && request.dlqIds !== void 0;
|
|
721
|
+
const hasAll = "all" in request && Boolean(request.all);
|
|
722
|
+
const filterKeys = Object.keys(request).filter((k) => k !== "dlqIds" && k !== "all");
|
|
723
|
+
const hasFilters = filterKeys.length > 0;
|
|
724
|
+
if (hasDlqIds && hasAll) {
|
|
725
|
+
throw new QstashError("dlqIds and all: true are mutually exclusive.");
|
|
726
|
+
}
|
|
727
|
+
if (hasDlqIds && hasFilters) {
|
|
728
|
+
throw new QstashError(
|
|
729
|
+
`dlqIds cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
730
|
+
);
|
|
731
|
+
}
|
|
732
|
+
if (hasAll && hasFilters) {
|
|
733
|
+
throw new QstashError(
|
|
734
|
+
`all: true cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
if (hasAll)
|
|
738
|
+
return {};
|
|
739
|
+
const { urlGroup, callerIp, ...rest } = request;
|
|
740
|
+
const payload = {
|
|
741
|
+
...rest,
|
|
742
|
+
...urlGroup === void 0 || typeof urlGroup !== "string" ? {} : { topicName: urlGroup },
|
|
743
|
+
...callerIp === void 0 || typeof callerIp !== "string" ? {} : options?.callerIpCasing ? { callerIP: callerIp } : { callerIp }
|
|
744
|
+
};
|
|
745
|
+
if (Object.keys(payload).length === 0) {
|
|
746
|
+
throw new QstashError(
|
|
747
|
+
"No filters provided. Pass { all: true } to explicitly target all messages."
|
|
748
|
+
);
|
|
749
|
+
}
|
|
750
|
+
return payload;
|
|
751
|
+
}
|
|
752
|
+
function normalizeCursor(response) {
|
|
753
|
+
const cursor = response.cursor;
|
|
754
|
+
return { ...response, cursor: cursor || void 0 };
|
|
755
|
+
}
|
|
719
756
|
function getRuntime() {
|
|
720
757
|
if (typeof process === "object" && typeof process.versions == "object" && process.versions.bun)
|
|
721
758
|
return `bun@${process.versions.bun}`;
|
|
@@ -945,17 +982,20 @@ var DLQ = class {
|
|
|
945
982
|
/**
|
|
946
983
|
* List messages in the dlq
|
|
947
984
|
*/
|
|
948
|
-
async listMessages(options) {
|
|
985
|
+
async listMessages(options = {}) {
|
|
986
|
+
const { urlGroup, ...restFilter } = options.filter ?? {};
|
|
949
987
|
const filterPayload = {
|
|
950
|
-
...
|
|
951
|
-
topicName:
|
|
988
|
+
...restFilter,
|
|
989
|
+
...urlGroup === void 0 ? {} : { topicName: urlGroup }
|
|
952
990
|
};
|
|
953
991
|
const messagesPayload = await this.http.request({
|
|
954
992
|
method: "GET",
|
|
955
993
|
path: ["v2", "dlq"],
|
|
956
994
|
query: {
|
|
957
|
-
cursor: options
|
|
958
|
-
count: options
|
|
995
|
+
cursor: options.cursor,
|
|
996
|
+
count: options.count,
|
|
997
|
+
order: options.order,
|
|
998
|
+
trimBody: options.trimBody,
|
|
959
999
|
...filterPayload
|
|
960
1000
|
}
|
|
961
1001
|
});
|
|
@@ -971,26 +1011,70 @@ var DLQ = class {
|
|
|
971
1011
|
};
|
|
972
1012
|
}
|
|
973
1013
|
/**
|
|
974
|
-
* Remove
|
|
1014
|
+
* Remove messages from the dlq.
|
|
1015
|
+
*
|
|
1016
|
+
* Can be called with:
|
|
1017
|
+
* - A single dlqId: `delete("id")`
|
|
1018
|
+
* - An array of dlqIds: `delete(["id1", "id2"])`
|
|
1019
|
+
* - An object with dlqIds: `delete({ dlqIds: ["id1", "id2"] })`
|
|
1020
|
+
* - A filter object: `delete({ url: "https://example.com", label: "label" })`
|
|
1021
|
+
* - All messages: `delete({ all: true })`
|
|
1022
|
+
*
|
|
1023
|
+
* Note: passing an empty array returns `{ deleted: 0 }` without making a request.
|
|
975
1024
|
*/
|
|
976
|
-
async delete(
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
1025
|
+
async delete(request) {
|
|
1026
|
+
if (typeof request === "string") {
|
|
1027
|
+
await this.http.request({
|
|
1028
|
+
method: "DELETE",
|
|
1029
|
+
path: ["v2", "dlq", request],
|
|
1030
|
+
parseResponseAsJson: false
|
|
1031
|
+
});
|
|
1032
|
+
return { deleted: 1 };
|
|
1033
|
+
}
|
|
1034
|
+
if (Array.isArray(request) && request.length === 0)
|
|
1035
|
+
return { deleted: 0 };
|
|
1036
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
1037
|
+
return normalizeCursor(
|
|
1038
|
+
await this.http.request({
|
|
1039
|
+
method: "DELETE",
|
|
1040
|
+
path: ["v2", "dlq"],
|
|
1041
|
+
query: buildBulkActionFilterPayload(filters)
|
|
1042
|
+
})
|
|
1043
|
+
);
|
|
983
1044
|
}
|
|
984
1045
|
/**
|
|
985
1046
|
* Remove multiple messages from the dlq using their `dlqId`s
|
|
1047
|
+
*
|
|
1048
|
+
* @deprecated Use `delete` instead
|
|
986
1049
|
*/
|
|
987
1050
|
async deleteMany(request) {
|
|
988
|
-
return await this.
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1051
|
+
return await this.delete(request);
|
|
1052
|
+
}
|
|
1053
|
+
/**
|
|
1054
|
+
* Retry messages from the dlq.
|
|
1055
|
+
*
|
|
1056
|
+
* Can be called with:
|
|
1057
|
+
* - A single dlqId: `retry("id")`
|
|
1058
|
+
* - An array of dlqIds: `retry(["id1", "id2"])`
|
|
1059
|
+
* - An object with dlqIds: `retry({ dlqIds: ["id1", "id2"] })`
|
|
1060
|
+
* - A filter object: `retry({ url: "https://example.com", label: "label" })`
|
|
1061
|
+
* - All messages: `retry({ all: true })`
|
|
1062
|
+
*
|
|
1063
|
+
* Note: passing an empty array returns `{ responses: [] }` without making a request.
|
|
1064
|
+
*/
|
|
1065
|
+
async retry(request) {
|
|
1066
|
+
if (typeof request === "string")
|
|
1067
|
+
request = [request];
|
|
1068
|
+
if (Array.isArray(request) && request.length === 0)
|
|
1069
|
+
return { responses: [] };
|
|
1070
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
1071
|
+
return normalizeCursor(
|
|
1072
|
+
await this.http.request({
|
|
1073
|
+
method: "POST",
|
|
1074
|
+
path: ["v2", "dlq", "retry"],
|
|
1075
|
+
query: buildBulkActionFilterPayload(filters)
|
|
1076
|
+
})
|
|
1077
|
+
);
|
|
994
1078
|
}
|
|
995
1079
|
};
|
|
996
1080
|
|
|
@@ -1091,7 +1175,15 @@ var HttpClient = class {
|
|
|
1091
1175
|
const url = new URL([request.baseUrl ?? this.baseUrl, ...request.path].join("/"));
|
|
1092
1176
|
if (request.query) {
|
|
1093
1177
|
for (const [key, value] of Object.entries(request.query)) {
|
|
1094
|
-
if (value
|
|
1178
|
+
if (value === void 0)
|
|
1179
|
+
continue;
|
|
1180
|
+
if (Array.isArray(value)) {
|
|
1181
|
+
for (const item of value) {
|
|
1182
|
+
url.searchParams.append(key, item);
|
|
1183
|
+
}
|
|
1184
|
+
} else if (value instanceof Date) {
|
|
1185
|
+
url.searchParams.set(key, value.getTime().toString());
|
|
1186
|
+
} else {
|
|
1095
1187
|
url.searchParams.set(key, value.toString());
|
|
1096
1188
|
}
|
|
1097
1189
|
}
|
|
@@ -1322,29 +1414,57 @@ var Messages = class {
|
|
|
1322
1414
|
return message;
|
|
1323
1415
|
}
|
|
1324
1416
|
/**
|
|
1325
|
-
* Cancel
|
|
1417
|
+
* Cancel messages.
|
|
1418
|
+
*
|
|
1419
|
+
* Can be called with:
|
|
1420
|
+
* - A single messageId: `cancel("id")`
|
|
1421
|
+
* - An array of messageIds: `cancel(["id1", "id2"])`
|
|
1422
|
+
* - A filter object: `cancel({ flowControlKey: "key", label: "label" })`
|
|
1423
|
+
* - All messages: `cancel({ all: true })`
|
|
1326
1424
|
*/
|
|
1327
|
-
async
|
|
1425
|
+
async cancel(request) {
|
|
1426
|
+
if (typeof request === "string") {
|
|
1427
|
+
return await this.http.request({
|
|
1428
|
+
method: "DELETE",
|
|
1429
|
+
path: ["v2", "messages", request]
|
|
1430
|
+
});
|
|
1431
|
+
}
|
|
1432
|
+
if (Array.isArray(request) && request.length === 0)
|
|
1433
|
+
return { cancelled: 0 };
|
|
1434
|
+
const filters = Array.isArray(request) ? { messageIds: request } : request;
|
|
1328
1435
|
return await this.http.request({
|
|
1436
|
+
method: "DELETE",
|
|
1437
|
+
path: ["v2", "messages"],
|
|
1438
|
+
query: buildBulkActionFilterPayload(filters, { callerIpCasing: true })
|
|
1439
|
+
});
|
|
1440
|
+
}
|
|
1441
|
+
/**
|
|
1442
|
+
* Delete a message.
|
|
1443
|
+
*
|
|
1444
|
+
* @deprecated Use `cancel(messageId: string)` instead
|
|
1445
|
+
*/
|
|
1446
|
+
async delete(messageId) {
|
|
1447
|
+
await this.http.request({
|
|
1329
1448
|
method: "DELETE",
|
|
1330
1449
|
path: ["v2", "messages", messageId],
|
|
1331
1450
|
parseResponseAsJson: false
|
|
1332
1451
|
});
|
|
1333
1452
|
}
|
|
1453
|
+
/**
|
|
1454
|
+
* Cancel multiple messages by their messageIds.
|
|
1455
|
+
*
|
|
1456
|
+
* @deprecated Use `cancel(messageIds: string[])` instead
|
|
1457
|
+
*/
|
|
1334
1458
|
async deleteMany(messageIds) {
|
|
1335
|
-
const result = await this.
|
|
1336
|
-
method: "DELETE",
|
|
1337
|
-
path: ["v2", "messages"],
|
|
1338
|
-
headers: { "Content-Type": "application/json" },
|
|
1339
|
-
body: JSON.stringify({ messageIds })
|
|
1340
|
-
});
|
|
1459
|
+
const result = await this.cancel(messageIds);
|
|
1341
1460
|
return result.cancelled;
|
|
1342
1461
|
}
|
|
1462
|
+
/**
|
|
1463
|
+
* Cancel all messages
|
|
1464
|
+
* @deprecated Use `cancel({all: true})` to cancel all
|
|
1465
|
+
*/
|
|
1343
1466
|
async deleteAll() {
|
|
1344
|
-
const result = await this.
|
|
1345
|
-
method: "DELETE",
|
|
1346
|
-
path: ["v2", "messages"]
|
|
1347
|
-
});
|
|
1467
|
+
const result = await this.cancel({ all: true });
|
|
1348
1468
|
return result.cancelled;
|
|
1349
1469
|
}
|
|
1350
1470
|
};
|
|
@@ -3064,7 +3184,7 @@ var Workflow = class {
|
|
|
3064
3184
|
};
|
|
3065
3185
|
|
|
3066
3186
|
// version.ts
|
|
3067
|
-
var VERSION = "v2.9.
|
|
3187
|
+
var VERSION = "v2.9.1-rc.1";
|
|
3068
3188
|
|
|
3069
3189
|
// src/client/client.ts
|
|
3070
3190
|
var Client = class {
|
|
@@ -3259,39 +3379,47 @@ var Client = class {
|
|
|
3259
3379
|
* }
|
|
3260
3380
|
* ```
|
|
3261
3381
|
*/
|
|
3262
|
-
async logs(request) {
|
|
3263
|
-
const
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3382
|
+
async logs(request = {}) {
|
|
3383
|
+
const {
|
|
3384
|
+
urlGroup,
|
|
3385
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
3386
|
+
topicName,
|
|
3387
|
+
fromDate,
|
|
3388
|
+
toDate,
|
|
3389
|
+
callerIp,
|
|
3390
|
+
messageIds,
|
|
3391
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
3392
|
+
count: filterCount,
|
|
3393
|
+
...restFilter
|
|
3394
|
+
} = request.filter ?? {};
|
|
3395
|
+
const filterPayload = {
|
|
3396
|
+
...restFilter,
|
|
3397
|
+
topicName: urlGroup ?? topicName,
|
|
3398
|
+
fromDate,
|
|
3399
|
+
toDate,
|
|
3400
|
+
callerIp
|
|
3401
|
+
};
|
|
3402
|
+
let cursorString;
|
|
3403
|
+
if (typeof request.cursor === "number" && request.cursor > 0) {
|
|
3404
|
+
cursorString = request.cursor.toString();
|
|
3405
|
+
} else if (typeof request.cursor === "string" && request.cursor !== "") {
|
|
3406
|
+
cursorString = request.cursor;
|
|
3407
|
+
}
|
|
3408
|
+
const query = {
|
|
3409
|
+
cursor: cursorString,
|
|
3410
|
+
count: request.count ?? filterCount,
|
|
3411
|
+
order: request.order,
|
|
3412
|
+
trimBody: request.trimBody,
|
|
3413
|
+
messageIds,
|
|
3414
|
+
...filterPayload
|
|
3415
|
+
};
|
|
3279
3416
|
const responsePayload = await this.http.request({
|
|
3280
3417
|
path: ["v2", "events"],
|
|
3281
3418
|
method: "GET",
|
|
3282
3419
|
query
|
|
3283
3420
|
});
|
|
3284
|
-
const logs = responsePayload.events.map((event) => {
|
|
3285
|
-
|
|
3286
|
-
...event,
|
|
3287
|
-
urlGroup: event.topicName
|
|
3288
|
-
};
|
|
3289
|
-
});
|
|
3290
|
-
return {
|
|
3291
|
-
cursor: responsePayload.cursor,
|
|
3292
|
-
logs,
|
|
3293
|
-
events: logs
|
|
3294
|
-
};
|
|
3421
|
+
const logs = responsePayload.events.map((event) => ({ ...event, urlGroup: event.topicName }));
|
|
3422
|
+
return { cursor: responsePayload.cursor, logs, events: logs };
|
|
3295
3423
|
}
|
|
3296
3424
|
/**
|
|
3297
3425
|
* @deprecated Will be removed in the next major release. Use the `logs` method instead.
|
package/h3.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
serve,
|
|
3
3
|
verifySignatureH3
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-STWPT5EV.mjs";
|
|
5
|
+
import "./chunk-SN6OPGRS.mjs";
|
|
6
|
+
import "./chunk-RUCOF5QZ.mjs";
|
|
7
7
|
export {
|
|
8
8
|
serve,
|
|
9
9
|
verifySignatureH3
|
package/hono.d.mts
CHANGED
package/hono.d.ts
CHANGED
package/hono.js
CHANGED
|
@@ -392,6 +392,43 @@ function decodeBase64(base64) {
|
|
|
392
392
|
}
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
+
function buildBulkActionFilterPayload(request, options) {
|
|
396
|
+
const hasDlqIds = "dlqIds" in request && request.dlqIds !== void 0;
|
|
397
|
+
const hasAll = "all" in request && Boolean(request.all);
|
|
398
|
+
const filterKeys = Object.keys(request).filter((k) => k !== "dlqIds" && k !== "all");
|
|
399
|
+
const hasFilters = filterKeys.length > 0;
|
|
400
|
+
if (hasDlqIds && hasAll) {
|
|
401
|
+
throw new QstashError("dlqIds and all: true are mutually exclusive.");
|
|
402
|
+
}
|
|
403
|
+
if (hasDlqIds && hasFilters) {
|
|
404
|
+
throw new QstashError(
|
|
405
|
+
`dlqIds cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
406
|
+
);
|
|
407
|
+
}
|
|
408
|
+
if (hasAll && hasFilters) {
|
|
409
|
+
throw new QstashError(
|
|
410
|
+
`all: true cannot be combined with filter fields: ${filterKeys.join(", ")}.`
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
if (hasAll)
|
|
414
|
+
return {};
|
|
415
|
+
const { urlGroup, callerIp, ...rest } = request;
|
|
416
|
+
const payload = {
|
|
417
|
+
...rest,
|
|
418
|
+
...urlGroup === void 0 || typeof urlGroup !== "string" ? {} : { topicName: urlGroup },
|
|
419
|
+
...callerIp === void 0 || typeof callerIp !== "string" ? {} : options?.callerIpCasing ? { callerIP: callerIp } : { callerIp }
|
|
420
|
+
};
|
|
421
|
+
if (Object.keys(payload).length === 0) {
|
|
422
|
+
throw new QstashError(
|
|
423
|
+
"No filters provided. Pass { all: true } to explicitly target all messages."
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
return payload;
|
|
427
|
+
}
|
|
428
|
+
function normalizeCursor(response) {
|
|
429
|
+
const cursor = response.cursor;
|
|
430
|
+
return { ...response, cursor: cursor || void 0 };
|
|
431
|
+
}
|
|
395
432
|
function getRuntime() {
|
|
396
433
|
if (typeof process === "object" && typeof process.versions == "object" && process.versions.bun)
|
|
397
434
|
return `bun@${process.versions.bun}`;
|
|
@@ -621,17 +658,20 @@ var DLQ = class {
|
|
|
621
658
|
/**
|
|
622
659
|
* List messages in the dlq
|
|
623
660
|
*/
|
|
624
|
-
async listMessages(options) {
|
|
661
|
+
async listMessages(options = {}) {
|
|
662
|
+
const { urlGroup, ...restFilter } = options.filter ?? {};
|
|
625
663
|
const filterPayload = {
|
|
626
|
-
...
|
|
627
|
-
topicName:
|
|
664
|
+
...restFilter,
|
|
665
|
+
...urlGroup === void 0 ? {} : { topicName: urlGroup }
|
|
628
666
|
};
|
|
629
667
|
const messagesPayload = await this.http.request({
|
|
630
668
|
method: "GET",
|
|
631
669
|
path: ["v2", "dlq"],
|
|
632
670
|
query: {
|
|
633
|
-
cursor: options
|
|
634
|
-
count: options
|
|
671
|
+
cursor: options.cursor,
|
|
672
|
+
count: options.count,
|
|
673
|
+
order: options.order,
|
|
674
|
+
trimBody: options.trimBody,
|
|
635
675
|
...filterPayload
|
|
636
676
|
}
|
|
637
677
|
});
|
|
@@ -647,26 +687,70 @@ var DLQ = class {
|
|
|
647
687
|
};
|
|
648
688
|
}
|
|
649
689
|
/**
|
|
650
|
-
* Remove
|
|
690
|
+
* Remove messages from the dlq.
|
|
691
|
+
*
|
|
692
|
+
* Can be called with:
|
|
693
|
+
* - A single dlqId: `delete("id")`
|
|
694
|
+
* - An array of dlqIds: `delete(["id1", "id2"])`
|
|
695
|
+
* - An object with dlqIds: `delete({ dlqIds: ["id1", "id2"] })`
|
|
696
|
+
* - A filter object: `delete({ url: "https://example.com", label: "label" })`
|
|
697
|
+
* - All messages: `delete({ all: true })`
|
|
698
|
+
*
|
|
699
|
+
* Note: passing an empty array returns `{ deleted: 0 }` without making a request.
|
|
651
700
|
*/
|
|
652
|
-
async delete(
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
701
|
+
async delete(request) {
|
|
702
|
+
if (typeof request === "string") {
|
|
703
|
+
await this.http.request({
|
|
704
|
+
method: "DELETE",
|
|
705
|
+
path: ["v2", "dlq", request],
|
|
706
|
+
parseResponseAsJson: false
|
|
707
|
+
});
|
|
708
|
+
return { deleted: 1 };
|
|
709
|
+
}
|
|
710
|
+
if (Array.isArray(request) && request.length === 0)
|
|
711
|
+
return { deleted: 0 };
|
|
712
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
713
|
+
return normalizeCursor(
|
|
714
|
+
await this.http.request({
|
|
715
|
+
method: "DELETE",
|
|
716
|
+
path: ["v2", "dlq"],
|
|
717
|
+
query: buildBulkActionFilterPayload(filters)
|
|
718
|
+
})
|
|
719
|
+
);
|
|
659
720
|
}
|
|
660
721
|
/**
|
|
661
722
|
* Remove multiple messages from the dlq using their `dlqId`s
|
|
723
|
+
*
|
|
724
|
+
* @deprecated Use `delete` instead
|
|
662
725
|
*/
|
|
663
726
|
async deleteMany(request) {
|
|
664
|
-
return await this.
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
727
|
+
return await this.delete(request);
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Retry messages from the dlq.
|
|
731
|
+
*
|
|
732
|
+
* Can be called with:
|
|
733
|
+
* - A single dlqId: `retry("id")`
|
|
734
|
+
* - An array of dlqIds: `retry(["id1", "id2"])`
|
|
735
|
+
* - An object with dlqIds: `retry({ dlqIds: ["id1", "id2"] })`
|
|
736
|
+
* - A filter object: `retry({ url: "https://example.com", label: "label" })`
|
|
737
|
+
* - All messages: `retry({ all: true })`
|
|
738
|
+
*
|
|
739
|
+
* Note: passing an empty array returns `{ responses: [] }` without making a request.
|
|
740
|
+
*/
|
|
741
|
+
async retry(request) {
|
|
742
|
+
if (typeof request === "string")
|
|
743
|
+
request = [request];
|
|
744
|
+
if (Array.isArray(request) && request.length === 0)
|
|
745
|
+
return { responses: [] };
|
|
746
|
+
const filters = Array.isArray(request) ? { dlqIds: request } : request;
|
|
747
|
+
return normalizeCursor(
|
|
748
|
+
await this.http.request({
|
|
749
|
+
method: "POST",
|
|
750
|
+
path: ["v2", "dlq", "retry"],
|
|
751
|
+
query: buildBulkActionFilterPayload(filters)
|
|
752
|
+
})
|
|
753
|
+
);
|
|
670
754
|
}
|
|
671
755
|
};
|
|
672
756
|
|
|
@@ -767,7 +851,15 @@ var HttpClient = class {
|
|
|
767
851
|
const url = new URL([request.baseUrl ?? this.baseUrl, ...request.path].join("/"));
|
|
768
852
|
if (request.query) {
|
|
769
853
|
for (const [key, value] of Object.entries(request.query)) {
|
|
770
|
-
if (value
|
|
854
|
+
if (value === void 0)
|
|
855
|
+
continue;
|
|
856
|
+
if (Array.isArray(value)) {
|
|
857
|
+
for (const item of value) {
|
|
858
|
+
url.searchParams.append(key, item);
|
|
859
|
+
}
|
|
860
|
+
} else if (value instanceof Date) {
|
|
861
|
+
url.searchParams.set(key, value.getTime().toString());
|
|
862
|
+
} else {
|
|
771
863
|
url.searchParams.set(key, value.toString());
|
|
772
864
|
}
|
|
773
865
|
}
|
|
@@ -998,29 +1090,57 @@ var Messages = class {
|
|
|
998
1090
|
return message;
|
|
999
1091
|
}
|
|
1000
1092
|
/**
|
|
1001
|
-
* Cancel
|
|
1093
|
+
* Cancel messages.
|
|
1094
|
+
*
|
|
1095
|
+
* Can be called with:
|
|
1096
|
+
* - A single messageId: `cancel("id")`
|
|
1097
|
+
* - An array of messageIds: `cancel(["id1", "id2"])`
|
|
1098
|
+
* - A filter object: `cancel({ flowControlKey: "key", label: "label" })`
|
|
1099
|
+
* - All messages: `cancel({ all: true })`
|
|
1002
1100
|
*/
|
|
1003
|
-
async
|
|
1101
|
+
async cancel(request) {
|
|
1102
|
+
if (typeof request === "string") {
|
|
1103
|
+
return await this.http.request({
|
|
1104
|
+
method: "DELETE",
|
|
1105
|
+
path: ["v2", "messages", request]
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
if (Array.isArray(request) && request.length === 0)
|
|
1109
|
+
return { cancelled: 0 };
|
|
1110
|
+
const filters = Array.isArray(request) ? { messageIds: request } : request;
|
|
1004
1111
|
return await this.http.request({
|
|
1112
|
+
method: "DELETE",
|
|
1113
|
+
path: ["v2", "messages"],
|
|
1114
|
+
query: buildBulkActionFilterPayload(filters, { callerIpCasing: true })
|
|
1115
|
+
});
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Delete a message.
|
|
1119
|
+
*
|
|
1120
|
+
* @deprecated Use `cancel(messageId: string)` instead
|
|
1121
|
+
*/
|
|
1122
|
+
async delete(messageId) {
|
|
1123
|
+
await this.http.request({
|
|
1005
1124
|
method: "DELETE",
|
|
1006
1125
|
path: ["v2", "messages", messageId],
|
|
1007
1126
|
parseResponseAsJson: false
|
|
1008
1127
|
});
|
|
1009
1128
|
}
|
|
1129
|
+
/**
|
|
1130
|
+
* Cancel multiple messages by their messageIds.
|
|
1131
|
+
*
|
|
1132
|
+
* @deprecated Use `cancel(messageIds: string[])` instead
|
|
1133
|
+
*/
|
|
1010
1134
|
async deleteMany(messageIds) {
|
|
1011
|
-
const result = await this.
|
|
1012
|
-
method: "DELETE",
|
|
1013
|
-
path: ["v2", "messages"],
|
|
1014
|
-
headers: { "Content-Type": "application/json" },
|
|
1015
|
-
body: JSON.stringify({ messageIds })
|
|
1016
|
-
});
|
|
1135
|
+
const result = await this.cancel(messageIds);
|
|
1017
1136
|
return result.cancelled;
|
|
1018
1137
|
}
|
|
1138
|
+
/**
|
|
1139
|
+
* Cancel all messages
|
|
1140
|
+
* @deprecated Use `cancel({all: true})` to cancel all
|
|
1141
|
+
*/
|
|
1019
1142
|
async deleteAll() {
|
|
1020
|
-
const result = await this.
|
|
1021
|
-
method: "DELETE",
|
|
1022
|
-
path: ["v2", "messages"]
|
|
1023
|
-
});
|
|
1143
|
+
const result = await this.cancel({ all: true });
|
|
1024
1144
|
return result.cancelled;
|
|
1025
1145
|
}
|
|
1026
1146
|
};
|
|
@@ -1354,7 +1474,7 @@ var UrlGroups = class {
|
|
|
1354
1474
|
};
|
|
1355
1475
|
|
|
1356
1476
|
// version.ts
|
|
1357
|
-
var VERSION = "v2.9.
|
|
1477
|
+
var VERSION = "v2.9.1-rc.1";
|
|
1358
1478
|
|
|
1359
1479
|
// src/client/client.ts
|
|
1360
1480
|
var Client = class {
|
|
@@ -1549,39 +1669,47 @@ var Client = class {
|
|
|
1549
1669
|
* }
|
|
1550
1670
|
* ```
|
|
1551
1671
|
*/
|
|
1552
|
-
async logs(request) {
|
|
1553
|
-
const
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1672
|
+
async logs(request = {}) {
|
|
1673
|
+
const {
|
|
1674
|
+
urlGroup,
|
|
1675
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1676
|
+
topicName,
|
|
1677
|
+
fromDate,
|
|
1678
|
+
toDate,
|
|
1679
|
+
callerIp,
|
|
1680
|
+
messageIds,
|
|
1681
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1682
|
+
count: filterCount,
|
|
1683
|
+
...restFilter
|
|
1684
|
+
} = request.filter ?? {};
|
|
1685
|
+
const filterPayload = {
|
|
1686
|
+
...restFilter,
|
|
1687
|
+
topicName: urlGroup ?? topicName,
|
|
1688
|
+
fromDate,
|
|
1689
|
+
toDate,
|
|
1690
|
+
callerIp
|
|
1691
|
+
};
|
|
1692
|
+
let cursorString;
|
|
1693
|
+
if (typeof request.cursor === "number" && request.cursor > 0) {
|
|
1694
|
+
cursorString = request.cursor.toString();
|
|
1695
|
+
} else if (typeof request.cursor === "string" && request.cursor !== "") {
|
|
1696
|
+
cursorString = request.cursor;
|
|
1697
|
+
}
|
|
1698
|
+
const query = {
|
|
1699
|
+
cursor: cursorString,
|
|
1700
|
+
count: request.count ?? filterCount,
|
|
1701
|
+
order: request.order,
|
|
1702
|
+
trimBody: request.trimBody,
|
|
1703
|
+
messageIds,
|
|
1704
|
+
...filterPayload
|
|
1705
|
+
};
|
|
1569
1706
|
const responsePayload = await this.http.request({
|
|
1570
1707
|
path: ["v2", "events"],
|
|
1571
1708
|
method: "GET",
|
|
1572
1709
|
query
|
|
1573
1710
|
});
|
|
1574
|
-
const logs = responsePayload.events.map((event) => {
|
|
1575
|
-
|
|
1576
|
-
...event,
|
|
1577
|
-
urlGroup: event.topicName
|
|
1578
|
-
};
|
|
1579
|
-
});
|
|
1580
|
-
return {
|
|
1581
|
-
cursor: responsePayload.cursor,
|
|
1582
|
-
logs,
|
|
1583
|
-
events: logs
|
|
1584
|
-
};
|
|
1711
|
+
const logs = responsePayload.events.map((event) => ({ ...event, urlGroup: event.topicName }));
|
|
1712
|
+
return { cursor: responsePayload.cursor, logs, events: logs };
|
|
1585
1713
|
}
|
|
1586
1714
|
/**
|
|
1587
1715
|
* @deprecated Will be removed in the next major release. Use the `logs` method instead.
|