@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/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
- ...options?.filter,
951
- topicName: options?.filter?.urlGroup
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?.cursor,
958
- count: options?.count,
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 a message from the dlq using it's `dlqId`
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(dlqMessageId) {
977
- return await this.http.request({
978
- method: "DELETE",
979
- path: ["v2", "dlq", dlqMessageId],
980
- parseResponseAsJson: false
981
- // there is no response
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.http.request({
989
- method: "DELETE",
990
- path: ["v2", "dlq"],
991
- headers: { "Content-Type": "application/json" },
992
- body: JSON.stringify({ dlqIds: request.dlqIds })
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 !== void 0) {
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 a message
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 delete(messageId) {
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.http.request({
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.http.request({
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.0";
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 query = {};
3264
- if (typeof request?.cursor === "number" && request.cursor > 0) {
3265
- query.cursor = request.cursor.toString();
3266
- } else if (typeof request?.cursor === "string" && request.cursor !== "") {
3267
- query.cursor = request.cursor;
3268
- }
3269
- for (const [key, value] of Object.entries(request?.filter ?? {})) {
3270
- if (typeof value === "number" && value < 0) {
3271
- continue;
3272
- }
3273
- if (key === "urlGroup") {
3274
- query.topicName = value.toString();
3275
- } else if (typeof value !== "undefined") {
3276
- query[key] = value.toString();
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
- return {
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-H5OAU75L.mjs";
5
- import "./chunk-M7SEEFAC.mjs";
6
- import "./chunk-QYBCXZKB.mjs";
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
@@ -1,5 +1,5 @@
1
1
  import { Context } from 'hono';
2
- import { a9 as RouteFunction, aa as WorkflowServeOptions } from './client-BVG9vt90.mjs';
2
+ import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.mjs';
3
3
  import 'neverthrow';
4
4
 
5
5
  type WorkflowBindings = {
package/hono.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Context } from 'hono';
2
- import { a9 as RouteFunction, aa as WorkflowServeOptions } from './client-BVG9vt90.js';
2
+ import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.js';
3
3
  import 'neverthrow';
4
4
 
5
5
  type WorkflowBindings = {
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
- ...options?.filter,
627
- topicName: options?.filter?.urlGroup
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?.cursor,
634
- count: options?.count,
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 a message from the dlq using it's `dlqId`
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(dlqMessageId) {
653
- return await this.http.request({
654
- method: "DELETE",
655
- path: ["v2", "dlq", dlqMessageId],
656
- parseResponseAsJson: false
657
- // there is no response
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.http.request({
665
- method: "DELETE",
666
- path: ["v2", "dlq"],
667
- headers: { "Content-Type": "application/json" },
668
- body: JSON.stringify({ dlqIds: request.dlqIds })
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 !== void 0) {
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 a message
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 delete(messageId) {
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.http.request({
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.http.request({
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.0";
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 query = {};
1554
- if (typeof request?.cursor === "number" && request.cursor > 0) {
1555
- query.cursor = request.cursor.toString();
1556
- } else if (typeof request?.cursor === "string" && request.cursor !== "") {
1557
- query.cursor = request.cursor;
1558
- }
1559
- for (const [key, value] of Object.entries(request?.filter ?? {})) {
1560
- if (typeof value === "number" && value < 0) {
1561
- continue;
1562
- }
1563
- if (key === "urlGroup") {
1564
- query.topicName = value.toString();
1565
- } else if (typeof value !== "undefined") {
1566
- query[key] = value.toString();
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
- return {
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.
package/hono.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serve
3
- } from "./chunk-QYBCXZKB.mjs";
3
+ } from "./chunk-RUCOF5QZ.mjs";
4
4
 
5
5
  // platforms/hono.ts
6
6
  var serve2 = (routeFunction, options) => {