@trigger.dev/core 0.0.0-v3-prerelease-20240523152756 → 0.0.0-v3-prerelease-20240612084127

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.
Files changed (51) hide show
  1. package/dist/catalog-XTlJQaMn.d.mts +202 -0
  2. package/dist/catalog-dRKTgwQ7.d.ts +202 -0
  3. package/dist/{manager-WNMVbgHf.d.mts → manager-JkbddlcO.d.mts} +43 -42
  4. package/dist/{manager-WNMVbgHf.d.ts → manager-JkbddlcO.d.ts} +43 -42
  5. package/dist/{messages-vq7Bk4Ap.d.mts → messages-9lty-Du5.d.mts} +5320 -1444
  6. package/dist/{messages-vq7Bk4Ap.d.ts → messages-9lty-Du5.d.ts} +5320 -1444
  7. package/dist/{catalog-tX1P4jZQ.d.ts → schemas-r4ZP9S-F.d.mts} +22 -201
  8. package/dist/{catalog-Y8FyPWvh.d.mts → schemas-r4ZP9S-F.d.ts} +22 -201
  9. package/dist/v3/dev/index.d.mts +2 -2
  10. package/dist/v3/dev/index.d.ts +2 -2
  11. package/dist/v3/dev/index.js +4 -4
  12. package/dist/v3/dev/index.js.map +1 -1
  13. package/dist/v3/dev/index.mjs +4 -4
  14. package/dist/v3/dev/index.mjs.map +1 -1
  15. package/dist/v3/index.d.mts +592 -152
  16. package/dist/v3/index.d.ts +592 -152
  17. package/dist/v3/index.js +974 -381
  18. package/dist/v3/index.js.map +1 -1
  19. package/dist/v3/index.mjs +965 -381
  20. package/dist/v3/index.mjs.map +1 -1
  21. package/dist/v3/otel/index.js +1 -1
  22. package/dist/v3/otel/index.js.map +1 -1
  23. package/dist/v3/otel/index.mjs +1 -1
  24. package/dist/v3/otel/index.mjs.map +1 -1
  25. package/dist/v3/prod/index.d.mts +3 -3
  26. package/dist/v3/prod/index.d.ts +3 -3
  27. package/dist/v3/prod/index.js +90 -15
  28. package/dist/v3/prod/index.js.map +1 -1
  29. package/dist/v3/prod/index.mjs +90 -15
  30. package/dist/v3/prod/index.mjs.map +1 -1
  31. package/dist/v3/workers/index.d.mts +6 -5
  32. package/dist/v3/workers/index.d.ts +6 -5
  33. package/dist/v3/workers/index.js +478 -54
  34. package/dist/v3/workers/index.js.map +1 -1
  35. package/dist/v3/workers/index.mjs +479 -55
  36. package/dist/v3/workers/index.mjs.map +1 -1
  37. package/dist/v3/zodNamespace.js +16 -6
  38. package/dist/v3/zodNamespace.js.map +1 -1
  39. package/dist/v3/zodNamespace.mjs +17 -7
  40. package/dist/v3/zodNamespace.mjs.map +1 -1
  41. package/dist/v3/zodSocket.js +16 -6
  42. package/dist/v3/zodSocket.js.map +1 -1
  43. package/dist/v3/zodSocket.mjs +17 -7
  44. package/dist/v3/zodSocket.mjs.map +1 -1
  45. package/dist/v3/zodfetch.d.mts +262 -0
  46. package/dist/v3/zodfetch.d.ts +262 -0
  47. package/dist/v3/zodfetch.js +744 -0
  48. package/dist/v3/zodfetch.js.map +1 -0
  49. package/dist/v3/zodfetch.mjs +716 -0
  50. package/dist/v3/zodfetch.mjs.map +1 -0
  51. package/package.json +9 -1
@@ -1,4 +1,5 @@
1
1
  import { SpanStatusCode, DiagLogLevel, diag, DiagConsoleLogger, propagation, context, SpanKind } from '@opentelemetry/api';
2
+ import { z } from 'zod';
2
3
  import { logs, SeverityNumber } from '@opentelemetry/api-logs';
3
4
  import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
4
5
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
@@ -7,10 +8,9 @@ import { Resource, detectResourcesSync, processDetectorSync } from '@opentelemet
7
8
  import { LoggerProvider, BatchLogRecordProcessor, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
8
9
  import { NodeTracerProvider, BatchSpanProcessor, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node';
9
10
  import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
10
- import { z } from 'zod';
11
11
  import { fromZodError } from 'zod-validation-error';
12
12
  import { FormDataEncoder } from 'form-data-encoder';
13
- import { Readable } from 'stream';
13
+ import { Readable } from 'node:stream';
14
14
  import { PreciseDate } from '@google-cloud/precise-date';
15
15
  import util from 'node:util';
16
16
 
@@ -38,8 +38,6 @@ var __privateMethod = (obj, member, method) => {
38
38
  __accessCheck(obj, member, "access private method");
39
39
  return method;
40
40
  };
41
-
42
- // src/v3/errors.ts
43
41
  function parseError(error) {
44
42
  if (error instanceof Error) {
45
43
  return {
@@ -68,6 +66,11 @@ function parseError(error) {
68
66
  }
69
67
  }
70
68
  __name(parseError, "parseError");
69
+ var SerializedError = z.object({
70
+ message: z.string(),
71
+ name: z.string().optional(),
72
+ stackTrace: z.string().optional()
73
+ });
71
74
 
72
75
  // src/v3/limits.ts
73
76
  var OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = 256;
@@ -352,7 +355,7 @@ function getEnvVar(name) {
352
355
  __name(getEnvVar, "getEnvVar");
353
356
 
354
357
  // package.json
355
- var version = "0.0.0-v3-prerelease-20240523152756";
358
+ var version = "0.0.0-v3-prerelease-20240612084127";
356
359
 
357
360
  // src/v3/otel/tracingSDK.ts
358
361
  var _a;
@@ -522,6 +525,7 @@ var TaskRunErrorCodes = {
522
525
  TASK_EXECUTION_FAILED: "TASK_EXECUTION_FAILED",
523
526
  TASK_EXECUTION_ABORTED: "TASK_EXECUTION_ABORTED",
524
527
  TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE: "TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE",
528
+ TASK_PROCESS_SIGKILL_TIMEOUT: "TASK_PROCESS_SIGKILL_TIMEOUT",
525
529
  TASK_RUN_CANCELLED: "TASK_RUN_CANCELLED",
526
530
  TASK_OUTPUT_ERROR: "TASK_OUTPUT_ERROR",
527
531
  HANDLE_ERROR_ERROR: "HANDLE_ERROR_ERROR",
@@ -537,10 +541,12 @@ var TaskRunInternalError = z.object({
537
541
  "TASK_EXECUTION_FAILED",
538
542
  "TASK_EXECUTION_ABORTED",
539
543
  "TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE",
544
+ "TASK_PROCESS_SIGKILL_TIMEOUT",
540
545
  "TASK_RUN_CANCELLED",
541
546
  "TASK_OUTPUT_ERROR",
542
547
  "HANDLE_ERROR_ERROR",
543
- "GRACEFUL_EXIT_TIMEOUT"
548
+ "GRACEFUL_EXIT_TIMEOUT",
549
+ "TASK_RUN_HEARTBEAT_TIMEOUT"
544
550
  ]),
545
551
  message: z.string().optional()
546
552
  });
@@ -790,7 +796,7 @@ var QueueOptions = z.object({
790
796
  /** @deprecated This feature is coming soon */
791
797
  rateLimit: RateLimitOptions.optional()
792
798
  });
793
- var TaskMetadata = z.object({
799
+ z.object({
794
800
  id: z.string(),
795
801
  packageVersion: z.string(),
796
802
  queue: QueueOptions.optional(),
@@ -798,11 +804,20 @@ var TaskMetadata = z.object({
798
804
  machine: Machine.partial().optional(),
799
805
  triggerSource: z.string().optional()
800
806
  });
801
- var TaskFileMetadata = z.object({
807
+ z.object({
808
+ filePath: z.string(),
809
+ exportName: z.string()
810
+ });
811
+ z.object({
812
+ id: z.string(),
813
+ packageVersion: z.string(),
814
+ queue: QueueOptions.optional(),
815
+ retry: RetryOptions.optional(),
816
+ machine: Machine.partial().optional(),
817
+ triggerSource: z.string().optional(),
802
818
  filePath: z.string(),
803
819
  exportName: z.string()
804
820
  });
805
- TaskMetadata.merge(TaskFileMetadata);
806
821
  z.enum([
807
822
  "index",
808
823
  "create",
@@ -843,6 +858,13 @@ z.enum([
843
858
  "WAIT_FOR_TASK",
844
859
  "WAIT_FOR_BATCH"
845
860
  ]);
861
+ z.object({
862
+ runId: z.string(),
863
+ messageId: z.string(),
864
+ isTest: z.boolean(),
865
+ traceContext: z.record(z.unknown()),
866
+ environment: z.record(z.string()).optional()
867
+ });
846
868
 
847
869
  // src/v3/schemas/resources.ts
848
870
  var TaskResource = z.object({
@@ -892,7 +914,8 @@ z.object({
892
914
  });
893
915
  z.object({
894
916
  localOnly: z.boolean(),
895
- metadata: BackgroundWorkerMetadata
917
+ metadata: BackgroundWorkerMetadata,
918
+ supportsLazyAttempts: z.boolean().optional()
896
919
  });
897
920
  z.object({
898
921
  id: z.string(),
@@ -969,7 +992,8 @@ z.object({
969
992
  var DeploymentErrorData = z.object({
970
993
  name: z.string(),
971
994
  message: z.string(),
972
- stack: z.string().optional()
995
+ stack: z.string().optional(),
996
+ stderr: z.string().optional()
973
997
  });
974
998
  z.object({
975
999
  id: z.string(),
@@ -1005,7 +1029,7 @@ var ReplayRunResponse = z.object({
1005
1029
  id: z.string()
1006
1030
  });
1007
1031
  var CanceledRunResponse = z.object({
1008
- message: z.string()
1032
+ id: z.string()
1009
1033
  });
1010
1034
  z.object({
1011
1035
  /** The schedule id associated with this run (you can have many schedules for the same task).
@@ -1054,17 +1078,18 @@ z.object({
1054
1078
  */
1055
1079
  externalId: z.string().optional()
1056
1080
  });
1081
+ var ScheduleGenerator = z.object({
1082
+ type: z.literal("CRON"),
1083
+ expression: z.string(),
1084
+ description: z.string()
1085
+ });
1057
1086
  var ScheduleObject = z.object({
1058
1087
  id: z.string(),
1059
1088
  task: z.string(),
1060
1089
  active: z.boolean(),
1061
1090
  deduplicationKey: z.string().nullish(),
1062
1091
  externalId: z.string().nullish(),
1063
- generator: z.object({
1064
- type: z.literal("CRON"),
1065
- expression: z.string(),
1066
- description: z.string()
1067
- }),
1092
+ generator: ScheduleGenerator,
1068
1093
  nextRun: z.coerce.date().nullish(),
1069
1094
  environments: z.array(z.object({
1070
1095
  id: z.string(),
@@ -1075,7 +1100,7 @@ var ScheduleObject = z.object({
1075
1100
  var DeletedScheduleObject = z.object({
1076
1101
  id: z.string()
1077
1102
  });
1078
- var ListSchedulesResult = z.object({
1103
+ z.object({
1079
1104
  data: z.array(ScheduleObject),
1080
1105
  pagination: z.object({
1081
1106
  currentPage: z.number(),
@@ -1088,12 +1113,28 @@ z.object({
1088
1113
  perPage: z.number().optional()
1089
1114
  });
1090
1115
  var RunStatus = z.enum([
1091
- "PENDING",
1116
+ /// Task hasn't been deployed yet but is waiting to be executed
1117
+ "WAITING_FOR_DEPLOY",
1118
+ /// Task is waiting to be executed by a worker
1119
+ "QUEUED",
1120
+ /// Task is currently being executed by a worker
1092
1121
  "EXECUTING",
1093
- "PAUSED",
1122
+ /// Task has failed and is waiting to be retried
1123
+ "REATTEMPTING",
1124
+ /// Task has been paused by the system, and will be resumed by the system
1125
+ "FROZEN",
1126
+ /// Task has been completed successfully
1094
1127
  "COMPLETED",
1128
+ /// Task has been canceled by the user
1129
+ "CANCELED",
1130
+ /// Task has been completed with errors
1095
1131
  "FAILED",
1096
- "CANCELED"
1132
+ /// Task has crashed and won't be retried, most likely the worker ran out of resources, e.g. memory or storage
1133
+ "CRASHED",
1134
+ /// Task was interrupted during execution, mostly this happens in development environments
1135
+ "INTERRUPTED",
1136
+ /// Task has failed to complete, due to an error in the system
1137
+ "SYSTEM_FAILURE"
1097
1138
  ]);
1098
1139
  var AttemptStatus = z.enum([
1099
1140
  "PENDING",
@@ -1103,23 +1144,61 @@ var AttemptStatus = z.enum([
1103
1144
  "FAILED",
1104
1145
  "CANCELED"
1105
1146
  ]);
1106
- var RetrieveRunResponse = z.object({
1147
+ var RunEnvironmentDetails = z.object({
1148
+ id: z.string(),
1149
+ name: z.string(),
1150
+ user: z.string().optional()
1151
+ });
1152
+ var RunScheduleDetails = z.object({
1153
+ id: z.string(),
1154
+ externalId: z.string().optional(),
1155
+ deduplicationKey: z.string().optional(),
1156
+ generator: ScheduleGenerator
1157
+ });
1158
+ var CommonRunFields = {
1107
1159
  id: z.string(),
1108
1160
  status: RunStatus,
1109
1161
  taskIdentifier: z.string(),
1110
1162
  idempotencyKey: z.string().optional(),
1111
1163
  version: z.string().optional(),
1164
+ isQueued: z.boolean(),
1165
+ isExecuting: z.boolean(),
1166
+ isCompleted: z.boolean(),
1167
+ isSuccess: z.boolean(),
1168
+ isFailed: z.boolean(),
1169
+ isCancelled: z.boolean(),
1170
+ isTest: z.boolean(),
1112
1171
  createdAt: z.coerce.date(),
1113
1172
  updatedAt: z.coerce.date(),
1173
+ startedAt: z.coerce.date().optional(),
1174
+ finishedAt: z.coerce.date().optional()
1175
+ };
1176
+ var RetrieveRunResponse = z.object({
1177
+ ...CommonRunFields,
1178
+ payload: z.any().optional(),
1179
+ output: z.any().optional(),
1180
+ schedule: RunScheduleDetails.optional(),
1114
1181
  attempts: z.array(z.object({
1115
1182
  id: z.string(),
1116
1183
  status: AttemptStatus,
1117
1184
  createdAt: z.coerce.date(),
1118
1185
  updatedAt: z.coerce.date(),
1119
1186
  startedAt: z.coerce.date().optional(),
1120
- completedAt: z.coerce.date().optional()
1187
+ completedAt: z.coerce.date().optional(),
1188
+ error: SerializedError.optional()
1121
1189
  }).optional())
1122
1190
  });
1191
+ var ListRunResponseItem = z.object({
1192
+ ...CommonRunFields,
1193
+ env: RunEnvironmentDetails
1194
+ });
1195
+ z.object({
1196
+ data: z.array(ListRunResponseItem),
1197
+ pagination: z.object({
1198
+ next: z.string().optional(),
1199
+ previous: z.string().optional()
1200
+ })
1201
+ });
1123
1202
  z.object({
1124
1203
  name: z.string(),
1125
1204
  value: z.string()
@@ -1143,10 +1222,10 @@ var EnvironmentVariable = z.object({
1143
1222
  });
1144
1223
  var EnvironmentVariables = z.array(EnvironmentVariable);
1145
1224
 
1146
- // src/v3/apiErrors.ts
1147
- var _APIError = class _APIError extends Error {
1225
+ // src/v3/apiClient/errors.ts
1226
+ var _ApiError = class _ApiError extends Error {
1148
1227
  constructor(status, error, message, headers) {
1149
- super(`${_APIError.makeMessage(status, error, message)}`);
1228
+ super(`${_ApiError.makeMessage(status, error, message)}`);
1150
1229
  this.status = status;
1151
1230
  this.headers = headers;
1152
1231
  const data = error;
@@ -1170,7 +1249,7 @@ var _APIError = class _APIError extends Error {
1170
1249
  }
1171
1250
  static generate(status, errorResponse, message, headers) {
1172
1251
  if (!status) {
1173
- return new APIConnectionError({
1252
+ return new ApiConnectionError({
1174
1253
  cause: castToError(errorResponse)
1175
1254
  });
1176
1255
  }
@@ -1199,12 +1278,12 @@ var _APIError = class _APIError extends Error {
1199
1278
  if (status >= 500) {
1200
1279
  return new InternalServerError(status, error, message, headers);
1201
1280
  }
1202
- return new _APIError(status, error, message, headers);
1281
+ return new _ApiError(status, error, message, headers);
1203
1282
  }
1204
1283
  };
1205
- __name(_APIError, "APIError");
1206
- var APIError = _APIError;
1207
- var _APIConnectionError = class _APIConnectionError extends APIError {
1284
+ __name(_ApiError, "ApiError");
1285
+ var ApiError = _ApiError;
1286
+ var _ApiConnectionError = class _ApiConnectionError extends ApiError {
1208
1287
  constructor({ message, cause }) {
1209
1288
  super(void 0, void 0, message || "Connection error.", void 0);
1210
1289
  __publicField(this, "status");
@@ -1212,9 +1291,9 @@ var _APIConnectionError = class _APIConnectionError extends APIError {
1212
1291
  this.cause = cause;
1213
1292
  }
1214
1293
  };
1215
- __name(_APIConnectionError, "APIConnectionError");
1216
- var APIConnectionError = _APIConnectionError;
1217
- var _BadRequestError = class _BadRequestError extends APIError {
1294
+ __name(_ApiConnectionError, "ApiConnectionError");
1295
+ var ApiConnectionError = _ApiConnectionError;
1296
+ var _BadRequestError = class _BadRequestError extends ApiError {
1218
1297
  constructor() {
1219
1298
  super(...arguments);
1220
1299
  __publicField(this, "status", 400);
@@ -1222,7 +1301,7 @@ var _BadRequestError = class _BadRequestError extends APIError {
1222
1301
  };
1223
1302
  __name(_BadRequestError, "BadRequestError");
1224
1303
  var BadRequestError = _BadRequestError;
1225
- var _AuthenticationError = class _AuthenticationError extends APIError {
1304
+ var _AuthenticationError = class _AuthenticationError extends ApiError {
1226
1305
  constructor() {
1227
1306
  super(...arguments);
1228
1307
  __publicField(this, "status", 401);
@@ -1230,7 +1309,7 @@ var _AuthenticationError = class _AuthenticationError extends APIError {
1230
1309
  };
1231
1310
  __name(_AuthenticationError, "AuthenticationError");
1232
1311
  var AuthenticationError = _AuthenticationError;
1233
- var _PermissionDeniedError = class _PermissionDeniedError extends APIError {
1312
+ var _PermissionDeniedError = class _PermissionDeniedError extends ApiError {
1234
1313
  constructor() {
1235
1314
  super(...arguments);
1236
1315
  __publicField(this, "status", 403);
@@ -1238,7 +1317,7 @@ var _PermissionDeniedError = class _PermissionDeniedError extends APIError {
1238
1317
  };
1239
1318
  __name(_PermissionDeniedError, "PermissionDeniedError");
1240
1319
  var PermissionDeniedError = _PermissionDeniedError;
1241
- var _NotFoundError = class _NotFoundError extends APIError {
1320
+ var _NotFoundError = class _NotFoundError extends ApiError {
1242
1321
  constructor() {
1243
1322
  super(...arguments);
1244
1323
  __publicField(this, "status", 404);
@@ -1246,7 +1325,7 @@ var _NotFoundError = class _NotFoundError extends APIError {
1246
1325
  };
1247
1326
  __name(_NotFoundError, "NotFoundError");
1248
1327
  var NotFoundError = _NotFoundError;
1249
- var _ConflictError = class _ConflictError extends APIError {
1328
+ var _ConflictError = class _ConflictError extends ApiError {
1250
1329
  constructor() {
1251
1330
  super(...arguments);
1252
1331
  __publicField(this, "status", 409);
@@ -1254,7 +1333,7 @@ var _ConflictError = class _ConflictError extends APIError {
1254
1333
  };
1255
1334
  __name(_ConflictError, "ConflictError");
1256
1335
  var ConflictError = _ConflictError;
1257
- var _UnprocessableEntityError = class _UnprocessableEntityError extends APIError {
1336
+ var _UnprocessableEntityError = class _UnprocessableEntityError extends ApiError {
1258
1337
  constructor() {
1259
1338
  super(...arguments);
1260
1339
  __publicField(this, "status", 422);
@@ -1262,7 +1341,7 @@ var _UnprocessableEntityError = class _UnprocessableEntityError extends APIError
1262
1341
  };
1263
1342
  __name(_UnprocessableEntityError, "UnprocessableEntityError");
1264
1343
  var UnprocessableEntityError = _UnprocessableEntityError;
1265
- var _RateLimitError = class _RateLimitError extends APIError {
1344
+ var _RateLimitError = class _RateLimitError extends ApiError {
1266
1345
  constructor() {
1267
1346
  super(...arguments);
1268
1347
  __publicField(this, "status", 429);
@@ -1270,7 +1349,7 @@ var _RateLimitError = class _RateLimitError extends APIError {
1270
1349
  };
1271
1350
  __name(_RateLimitError, "RateLimitError");
1272
1351
  var RateLimitError = _RateLimitError;
1273
- var _InternalServerError = class _InternalServerError extends APIError {
1352
+ var _InternalServerError = class _InternalServerError extends ApiError {
1274
1353
  };
1275
1354
  __name(_InternalServerError, "InternalServerError");
1276
1355
  var InternalServerError = _InternalServerError;
@@ -1303,6 +1382,108 @@ function calculateNextRetryDelay(options, attempt) {
1303
1382
  return Math.round(timeout);
1304
1383
  }
1305
1384
  __name(calculateNextRetryDelay, "calculateNextRetryDelay");
1385
+
1386
+ // src/v3/apiClient/pagination.ts
1387
+ var _CursorPage = class _CursorPage {
1388
+ constructor(data, pagination, pageFetcher) {
1389
+ this.pageFetcher = pageFetcher;
1390
+ this.data = data;
1391
+ this.pagination = pagination;
1392
+ }
1393
+ getPaginatedItems() {
1394
+ return this.data ?? [];
1395
+ }
1396
+ hasNextPage() {
1397
+ return !!this.pagination.next;
1398
+ }
1399
+ hasPreviousPage() {
1400
+ return !!this.pagination.previous;
1401
+ }
1402
+ getNextPage() {
1403
+ if (!this.pagination.next) {
1404
+ throw new Error("No next page available");
1405
+ }
1406
+ return this.pageFetcher({
1407
+ after: this.pagination.next
1408
+ });
1409
+ }
1410
+ getPreviousPage() {
1411
+ if (!this.pagination.previous) {
1412
+ throw new Error("No previous page available");
1413
+ }
1414
+ return this.pageFetcher({
1415
+ before: this.pagination.previous
1416
+ });
1417
+ }
1418
+ async *iterPages() {
1419
+ let page = this;
1420
+ yield page;
1421
+ while (page.hasNextPage()) {
1422
+ page = await page.getNextPage();
1423
+ yield page;
1424
+ }
1425
+ }
1426
+ async *[Symbol.asyncIterator]() {
1427
+ for await (const page of this.iterPages()) {
1428
+ for (const item of page.getPaginatedItems()) {
1429
+ yield item;
1430
+ }
1431
+ }
1432
+ }
1433
+ };
1434
+ __name(_CursorPage, "CursorPage");
1435
+ var CursorPage = _CursorPage;
1436
+ var _OffsetLimitPage = class _OffsetLimitPage {
1437
+ constructor(data, pagination, pageFetcher) {
1438
+ this.pageFetcher = pageFetcher;
1439
+ this.data = data;
1440
+ this.pagination = pagination;
1441
+ }
1442
+ getPaginatedItems() {
1443
+ return this.data ?? [];
1444
+ }
1445
+ hasNextPage() {
1446
+ return this.pagination.currentPage < this.pagination.totalPages;
1447
+ }
1448
+ hasPreviousPage() {
1449
+ return this.pagination.currentPage > 1;
1450
+ }
1451
+ getNextPage() {
1452
+ if (!this.hasNextPage()) {
1453
+ throw new Error("No next page available");
1454
+ }
1455
+ return this.pageFetcher({
1456
+ page: this.pagination.currentPage + 1
1457
+ });
1458
+ }
1459
+ getPreviousPage() {
1460
+ if (!this.hasPreviousPage()) {
1461
+ throw new Error("No previous page available");
1462
+ }
1463
+ return this.pageFetcher({
1464
+ page: this.pagination.currentPage - 1
1465
+ });
1466
+ }
1467
+ async *iterPages() {
1468
+ let page = this;
1469
+ yield page;
1470
+ while (page.hasNextPage()) {
1471
+ page = await page.getNextPage();
1472
+ yield page;
1473
+ }
1474
+ }
1475
+ async *[Symbol.asyncIterator]() {
1476
+ for await (const page of this.iterPages()) {
1477
+ for (const item of page.getPaginatedItems()) {
1478
+ yield item;
1479
+ }
1480
+ }
1481
+ }
1482
+ };
1483
+ __name(_OffsetLimitPage, "OffsetLimitPage");
1484
+ var OffsetLimitPage = _OffsetLimitPage;
1485
+
1486
+ // src/v3/apiClient/core.ts
1306
1487
  var defaultRetryOptions2 = {
1307
1488
  maxAttempts: 3,
1308
1489
  factor: 2,
@@ -1310,11 +1491,62 @@ var defaultRetryOptions2 = {
1310
1491
  maxTimeoutInMs: 6e4,
1311
1492
  randomize: false
1312
1493
  };
1313
- async function zodfetch(schema, url, requestInit, options) {
1314
- return await _doZodFetch(schema, url, requestInit, options);
1494
+ function zodfetch(schema, url, requestInit, options) {
1495
+ return new ApiPromise(_doZodFetch(schema, url, requestInit, options));
1315
1496
  }
1316
1497
  __name(zodfetch, "zodfetch");
1317
- async function zodupload(schema, url, body, requestInit, options) {
1498
+ function zodfetchCursorPage(schema, url, params, requestInit, options) {
1499
+ const query = new URLSearchParams(params.query);
1500
+ if (params.limit) {
1501
+ query.set("page[size]", String(params.limit));
1502
+ }
1503
+ if (params.after) {
1504
+ query.set("page[after]", params.after);
1505
+ }
1506
+ if (params.before) {
1507
+ query.set("page[before]", params.before);
1508
+ }
1509
+ const cursorPageSchema = z.object({
1510
+ data: z.array(schema),
1511
+ pagination: z.object({
1512
+ next: z.string().optional(),
1513
+ previous: z.string().optional()
1514
+ })
1515
+ });
1516
+ const $url = new URL(url);
1517
+ $url.search = query.toString();
1518
+ const fetchResult = _doZodFetch(cursorPageSchema, $url.href, requestInit, options);
1519
+ return new CursorPagePromise(fetchResult, schema, url, params, requestInit, options);
1520
+ }
1521
+ __name(zodfetchCursorPage, "zodfetchCursorPage");
1522
+ function zodfetchOffsetLimitPage(schema, url, params, requestInit, options) {
1523
+ const query = new URLSearchParams(params.query);
1524
+ if (params.limit) {
1525
+ query.set("perPage", String(params.limit));
1526
+ }
1527
+ if (params.page) {
1528
+ query.set("page", String(params.page));
1529
+ }
1530
+ const offsetLimitPageSchema = z.object({
1531
+ data: z.array(schema),
1532
+ pagination: z.object({
1533
+ currentPage: z.coerce.number(),
1534
+ totalPages: z.coerce.number(),
1535
+ count: z.coerce.number()
1536
+ })
1537
+ });
1538
+ const $url = new URL(url);
1539
+ $url.search = query.toString();
1540
+ const fetchResult = _doZodFetch(offsetLimitPageSchema, $url.href, requestInit, options);
1541
+ return new OffsetLimitPagePromise(fetchResult, schema, url, params, requestInit, options);
1542
+ }
1543
+ __name(zodfetchOffsetLimitPage, "zodfetchOffsetLimitPage");
1544
+ function zodupload(schema, url, body, requestInit, options) {
1545
+ const finalRequestInit = createMultipartFormRequestInit(body, requestInit);
1546
+ return new ApiPromise(_doZodFetch(schema, url, finalRequestInit, options));
1547
+ }
1548
+ __name(zodupload, "zodupload");
1549
+ async function createMultipartFormRequestInit(body, requestInit) {
1318
1550
  const form = await createForm(body);
1319
1551
  const encoder = new FormDataEncoder(form);
1320
1552
  const finalHeaders = {};
@@ -1332,9 +1564,9 @@ async function zodupload(schema, url, body, requestInit, options) {
1332
1564
  // @ts-expect-error
1333
1565
  duplex: "half"
1334
1566
  };
1335
- return await _doZodFetch(schema, url, finalRequestInit, options);
1567
+ return finalRequestInit;
1336
1568
  }
1337
- __name(zodupload, "zodupload");
1569
+ __name(createMultipartFormRequestInit, "createMultipartFormRequestInit");
1338
1570
  var createForm = /* @__PURE__ */ __name(async (body) => {
1339
1571
  const form = new FormData();
1340
1572
  await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));
@@ -1342,7 +1574,8 @@ var createForm = /* @__PURE__ */ __name(async (body) => {
1342
1574
  }, "createForm");
1343
1575
  async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1344
1576
  try {
1345
- const response = await fetch(url, requestInitWithCache(requestInit));
1577
+ const $requestInit = await requestInit;
1578
+ const response = await fetch(url, requestInitWithCache($requestInit));
1346
1579
  const responseHeaders = createResponseHeaders(response.headers);
1347
1580
  if (!response.ok) {
1348
1581
  const retryResult = shouldRetry(response, attempt, options?.retry);
@@ -1353,17 +1586,20 @@ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1353
1586
  const errText = await response.text().catch((e) => castToError2(e).message);
1354
1587
  const errJSON = safeJsonParse(errText);
1355
1588
  const errMessage = errJSON ? void 0 : errText;
1356
- throw APIError.generate(response.status, errJSON, errMessage, responseHeaders);
1589
+ throw ApiError.generate(response.status, errJSON, errMessage, responseHeaders);
1357
1590
  }
1358
1591
  }
1359
1592
  const jsonBody = await response.json();
1360
1593
  const parsedResult = schema.safeParse(jsonBody);
1361
1594
  if (parsedResult.success) {
1362
- return parsedResult.data;
1595
+ return {
1596
+ data: parsedResult.data,
1597
+ response
1598
+ };
1363
1599
  }
1364
1600
  throw fromZodError(parsedResult.error);
1365
1601
  } catch (error) {
1366
- if (error instanceof APIError) {
1602
+ if (error instanceof ApiError) {
1367
1603
  throw error;
1368
1604
  }
1369
1605
  if (options?.retry) {
@@ -1377,7 +1613,7 @@ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1377
1613
  return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1378
1614
  }
1379
1615
  }
1380
- throw new APIConnectionError({
1616
+ throw new ApiConnectionError({
1381
1617
  cause: castToError2(error)
1382
1618
  });
1383
1619
  }
@@ -1550,6 +1786,128 @@ var isUploadable = /* @__PURE__ */ __name((value) => {
1550
1786
  return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);
1551
1787
  }, "isUploadable");
1552
1788
  var isRecordLike = /* @__PURE__ */ __name((value) => value != null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length > 0 && Object.keys(value).every((key) => typeof key === "string" && typeof value[key] === "string"), "isRecordLike");
1789
+ var _ApiPromise = class _ApiPromise extends Promise {
1790
+ constructor(responsePromise) {
1791
+ super((resolve) => {
1792
+ resolve(null);
1793
+ });
1794
+ this.responsePromise = responsePromise;
1795
+ }
1796
+ /**
1797
+ * Gets the raw `Response` instance instead of parsing the response
1798
+ * data.
1799
+ *
1800
+ * If you want to parse the response body but still get the `Response`
1801
+ * instance, you can use {@link withResponse()}.
1802
+ */
1803
+ asResponse() {
1804
+ return this.responsePromise.then((p) => p.response);
1805
+ }
1806
+ /**
1807
+ * Gets the parsed response data and the raw `Response` instance.
1808
+ *
1809
+ * If you just want to get the raw `Response` instance without parsing it,
1810
+ * you can use {@link asResponse()}.
1811
+ */
1812
+ async withResponse() {
1813
+ const [data, response] = await Promise.all([
1814
+ this.parse(),
1815
+ this.asResponse()
1816
+ ]);
1817
+ return {
1818
+ data,
1819
+ response
1820
+ };
1821
+ }
1822
+ parse() {
1823
+ return this.responsePromise.then((result) => result.data);
1824
+ }
1825
+ then(onfulfilled, onrejected) {
1826
+ return this.parse().then(onfulfilled, onrejected);
1827
+ }
1828
+ catch(onrejected) {
1829
+ return this.parse().catch(onrejected);
1830
+ }
1831
+ finally(onfinally) {
1832
+ return this.parse().finally(onfinally);
1833
+ }
1834
+ };
1835
+ __name(_ApiPromise, "ApiPromise");
1836
+ var ApiPromise = _ApiPromise;
1837
+ var _fetchPage, fetchPage_fn;
1838
+ var _CursorPagePromise = class _CursorPagePromise extends ApiPromise {
1839
+ constructor(result, schema, url, params, requestInit, options) {
1840
+ super(result.then((result2) => ({
1841
+ data: new CursorPage(result2.data.data, result2.data.pagination, __privateMethod(this, _fetchPage, fetchPage_fn).bind(this)),
1842
+ response: result2.response
1843
+ })));
1844
+ __privateAdd(this, _fetchPage);
1845
+ this.schema = schema;
1846
+ this.url = url;
1847
+ this.params = params;
1848
+ this.requestInit = requestInit;
1849
+ this.options = options;
1850
+ }
1851
+ /**
1852
+ * Allow auto-paginating iteration on an unawaited list call, eg:
1853
+ *
1854
+ * for await (const item of client.items.list()) {
1855
+ * console.log(item)
1856
+ * }
1857
+ */
1858
+ async *[Symbol.asyncIterator]() {
1859
+ const page = await this;
1860
+ for await (const item of page) {
1861
+ yield item;
1862
+ }
1863
+ }
1864
+ };
1865
+ _fetchPage = new WeakSet();
1866
+ fetchPage_fn = /* @__PURE__ */ __name(function(params) {
1867
+ return zodfetchCursorPage(this.schema, this.url, {
1868
+ ...this.params,
1869
+ ...params
1870
+ }, this.requestInit, this.options);
1871
+ }, "#fetchPage");
1872
+ __name(_CursorPagePromise, "CursorPagePromise");
1873
+ var CursorPagePromise = _CursorPagePromise;
1874
+ var _fetchPage2, fetchPage_fn2;
1875
+ var _OffsetLimitPagePromise = class _OffsetLimitPagePromise extends ApiPromise {
1876
+ constructor(result, schema, url, params, requestInit, options) {
1877
+ super(result.then((result2) => ({
1878
+ data: new OffsetLimitPage(result2.data.data, result2.data.pagination, __privateMethod(this, _fetchPage2, fetchPage_fn2).bind(this)),
1879
+ response: result2.response
1880
+ })));
1881
+ __privateAdd(this, _fetchPage2);
1882
+ this.schema = schema;
1883
+ this.url = url;
1884
+ this.params = params;
1885
+ this.requestInit = requestInit;
1886
+ this.options = options;
1887
+ }
1888
+ /**
1889
+ * Allow auto-paginating iteration on an unawaited list call, eg:
1890
+ *
1891
+ * for await (const item of client.items.list()) {
1892
+ * console.log(item)
1893
+ * }
1894
+ */
1895
+ async *[Symbol.asyncIterator]() {
1896
+ const page = await this;
1897
+ for await (const item of page) {
1898
+ yield item;
1899
+ }
1900
+ }
1901
+ };
1902
+ _fetchPage2 = new WeakSet();
1903
+ fetchPage_fn2 = /* @__PURE__ */ __name(function(params1) {
1904
+ return zodfetchOffsetLimitPage(this.schema, this.url, {
1905
+ ...this.params,
1906
+ ...params1
1907
+ }, this.requestInit, this.options);
1908
+ }, "#fetchPage");
1909
+ __name(_OffsetLimitPagePromise, "OffsetLimitPagePromise");
1910
+ var OffsetLimitPagePromise = _OffsetLimitPagePromise;
1553
1911
 
1554
1912
  // src/v3/apiClient/index.ts
1555
1913
  var zodFetchOptions = {
@@ -1575,7 +1933,7 @@ var _ApiClient = class _ApiClient {
1575
1933
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1576
1934
  }, zodFetchOptions);
1577
1935
  } catch (error) {
1578
- if (error instanceof APIError) {
1936
+ if (error instanceof ApiError) {
1579
1937
  if (error.status === 404) {
1580
1938
  return void 0;
1581
1939
  }
@@ -1590,14 +1948,16 @@ var _ApiClient = class _ApiClient {
1590
1948
  }, zodFetchOptions);
1591
1949
  }
1592
1950
  triggerTask(taskId, body, options) {
1593
- return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`, {
1951
+ const encodedTaskId = encodeURIComponent(taskId);
1952
+ return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/trigger`, {
1594
1953
  method: "POST",
1595
1954
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1596
1955
  body: JSON.stringify(body)
1597
1956
  }, zodFetchOptions);
1598
1957
  }
1599
1958
  batchTriggerTask(taskId, body, options) {
1600
- return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, {
1959
+ const encodedTaskId = encodeURIComponent(taskId);
1960
+ return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/batch`, {
1601
1961
  method: "POST",
1602
1962
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1603
1963
  body: JSON.stringify(body)
@@ -1621,6 +1981,33 @@ var _ApiClient = class _ApiClient {
1621
1981
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1622
1982
  }, zodFetchOptions);
1623
1983
  }
1984
+ listRuns(query) {
1985
+ const searchParams = createSearchQueryForListRuns(query);
1986
+ return zodfetchCursorPage(ListRunResponseItem, `${this.baseUrl}/api/v1/runs`, {
1987
+ query: searchParams,
1988
+ limit: query?.limit,
1989
+ after: query?.after,
1990
+ before: query?.before
1991
+ }, {
1992
+ method: "GET",
1993
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1994
+ }, zodFetchOptions);
1995
+ }
1996
+ listProjectRuns(projectRef, query) {
1997
+ const searchParams = createSearchQueryForListRuns(query);
1998
+ if (query?.env) {
1999
+ searchParams.append("filter[env]", Array.isArray(query.env) ? query.env.join(",") : query.env);
2000
+ }
2001
+ return zodfetchCursorPage(ListRunResponseItem, `${this.baseUrl}/api/v1/projects/${projectRef}/runs`, {
2002
+ query: searchParams,
2003
+ limit: query?.limit,
2004
+ after: query?.after,
2005
+ before: query?.before
2006
+ }, {
2007
+ method: "GET",
2008
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
2009
+ }, zodFetchOptions);
2010
+ }
1624
2011
  replayRun(runId) {
1625
2012
  return zodfetch(ReplayRunResponse, `${this.baseUrl}/api/v1/runs/${runId}/replay`, {
1626
2013
  method: "POST",
@@ -1648,7 +2035,10 @@ var _ApiClient = class _ApiClient {
1648
2035
  if (options?.perPage) {
1649
2036
  searchParams.append("perPage", options.perPage.toString());
1650
2037
  }
1651
- return zodfetch(ListSchedulesResult, `${this.baseUrl}/api/v1/schedules${searchParams.size > 0 ? `?${searchParams}` : ""}`, {
2038
+ return zodfetchOffsetLimitPage(ScheduleObject, `${this.baseUrl}/api/v1/schedules`, {
2039
+ page: options?.page,
2040
+ limit: options?.perPage
2041
+ }, {
1652
2042
  method: "GET",
1653
2043
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1654
2044
  });
@@ -1749,6 +2139,40 @@ getHeaders_fn = /* @__PURE__ */ __name(function(spanParentAsLink) {
1749
2139
  }, "#getHeaders");
1750
2140
  __name(_ApiClient, "ApiClient");
1751
2141
  var ApiClient = _ApiClient;
2142
+ function createSearchQueryForListRuns(query) {
2143
+ const searchParams = new URLSearchParams();
2144
+ if (query) {
2145
+ if (query.status) {
2146
+ searchParams.append("filter[status]", Array.isArray(query.status) ? query.status.join(",") : query.status);
2147
+ }
2148
+ if (query.taskIdentifier) {
2149
+ searchParams.append("filter[taskIdentifier]", Array.isArray(query.taskIdentifier) ? query.taskIdentifier.join(",") : query.taskIdentifier);
2150
+ }
2151
+ if (query.version) {
2152
+ searchParams.append("filter[version]", Array.isArray(query.version) ? query.version.join(",") : query.version);
2153
+ }
2154
+ if (query.bulkAction) {
2155
+ searchParams.append("filter[bulkAction]", query.bulkAction);
2156
+ }
2157
+ if (query.schedule) {
2158
+ searchParams.append("filter[schedule]", query.schedule);
2159
+ }
2160
+ if (typeof query.isTest === "boolean") {
2161
+ searchParams.append("filter[isTest]", String(query.isTest));
2162
+ }
2163
+ if (query.from) {
2164
+ searchParams.append("filter[createdAt][from]", query.from instanceof Date ? query.from.getTime().toString() : query.from.toString());
2165
+ }
2166
+ if (query.to) {
2167
+ searchParams.append("filter[createdAt][to]", query.to instanceof Date ? query.to.getTime().toString() : query.to.toString());
2168
+ }
2169
+ if (query.period) {
2170
+ searchParams.append("filter[createdAt][period]", query.period);
2171
+ }
2172
+ }
2173
+ return searchParams;
2174
+ }
2175
+ __name(createSearchQueryForListRuns, "createSearchQueryForListRuns");
1752
2176
 
1753
2177
  // src/v3/apiClientManager/index.ts
1754
2178
  var API_NAME2 = "api-client";