apify-client 3.0.0-beta.5 → 3.0.0-beta.51

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 (115) hide show
  1. package/README.md +13 -3
  2. package/dist/apify_api_error.d.ts +62 -21
  3. package/dist/apify_api_error.js +96 -23
  4. package/dist/apify_client.d.ts +125 -10
  5. package/dist/apify_client.js +133 -48
  6. package/dist/base/api_client.d.ts +7 -7
  7. package/dist/base/api_client.js +36 -24
  8. package/dist/base/resource_client.d.ts +21 -8
  9. package/dist/base/resource_client.js +54 -26
  10. package/dist/base/resource_collection_client.d.ts +12 -4
  11. package/dist/base/resource_collection_client.js +34 -11
  12. package/dist/body_parser.d.ts +3 -4
  13. package/dist/body_parser.js +19 -26
  14. package/dist/bundle.js +27 -22
  15. package/dist/bundle.js.map +1 -1
  16. package/dist/generated/api.d.ts +610 -112
  17. package/dist/generated/schemas.d.ts +726 -703
  18. package/dist/generated/schemas.js +92 -85
  19. package/dist/http_clients/axios.d.ts +60 -0
  20. package/dist/http_clients/axios.js +117 -0
  21. package/dist/http_clients/base.d.ts +333 -0
  22. package/dist/http_clients/base.js +563 -0
  23. package/dist/http_clients/index.d.ts +4 -0
  24. package/dist/http_clients/index.js +2 -0
  25. package/dist/http_compressors/base.d.ts +40 -0
  26. package/dist/http_compressors/base.js +9 -0
  27. package/dist/http_compressors/brotli.d.ts +33 -0
  28. package/dist/http_compressors/brotli.js +39 -0
  29. package/dist/http_compressors/gzip.d.ts +33 -0
  30. package/dist/http_compressors/gzip.js +39 -0
  31. package/dist/http_compressors/index.d.ts +6 -0
  32. package/dist/http_compressors/index.js +2 -0
  33. package/dist/http_compressors/resolve.d.ts +23 -0
  34. package/dist/http_compressors/resolve.js +27 -0
  35. package/dist/index.d.ts +4 -1
  36. package/dist/index.js +3 -1
  37. package/dist/invalid_response_body_error.d.ts +13 -0
  38. package/dist/invalid_response_body_error.js +17 -0
  39. package/dist/models.d.ts +19 -22
  40. package/dist/resource_clients/actor.d.ts +72 -32
  41. package/dist/resource_clients/actor.js +87 -56
  42. package/dist/resource_clients/actor_collection.d.ts +9 -5
  43. package/dist/resource_clients/actor_collection.js +11 -3
  44. package/dist/resource_clients/actor_env_var.d.ts +10 -3
  45. package/dist/resource_clients/actor_env_var.js +16 -6
  46. package/dist/resource_clients/actor_env_var_collection.d.ts +14 -18
  47. package/dist/resource_clients/actor_env_var_collection.js +17 -11
  48. package/dist/resource_clients/actor_version.d.ts +18 -3
  49. package/dist/resource_clients/actor_version.js +19 -9
  50. package/dist/resource_clients/actor_version_collection.d.ts +16 -17
  51. package/dist/resource_clients/actor_version_collection.js +19 -11
  52. package/dist/resource_clients/build.d.ts +18 -6
  53. package/dist/resource_clients/build.js +34 -15
  54. package/dist/resource_clients/build_collection.d.ts +3 -1
  55. package/dist/resource_clients/build_collection.js +4 -1
  56. package/dist/resource_clients/dataset.d.ts +51 -33
  57. package/dist/resource_clients/dataset.js +105 -80
  58. package/dist/resource_clients/dataset_collection.d.ts +6 -2
  59. package/dist/resource_clients/dataset_collection.js +13 -2
  60. package/dist/resource_clients/key_value_store.d.ts +58 -16
  61. package/dist/resource_clients/key_value_store.js +78 -40
  62. package/dist/resource_clients/key_value_store_collection.d.ts +6 -2
  63. package/dist/resource_clients/key_value_store_collection.js +13 -2
  64. package/dist/resource_clients/log.d.ts +12 -20
  65. package/dist/resource_clients/log.js +93 -58
  66. package/dist/resource_clients/request_queue.d.ts +56 -26
  67. package/dist/resource_clients/request_queue.js +176 -103
  68. package/dist/resource_clients/request_queue_collection.d.ts +6 -2
  69. package/dist/resource_clients/request_queue_collection.js +9 -3
  70. package/dist/resource_clients/run.d.ts +108 -18
  71. package/dist/resource_clients/run.js +183 -43
  72. package/dist/resource_clients/run_collection.d.ts +3 -1
  73. package/dist/resource_clients/run_collection.js +4 -1
  74. package/dist/resource_clients/schedule.d.ts +14 -5
  75. package/dist/resource_clients/schedule.js +29 -21
  76. package/dist/resource_clients/schedule_collection.d.ts +6 -2
  77. package/dist/resource_clients/schedule_collection.js +9 -3
  78. package/dist/resource_clients/store_collection.d.ts +3 -1
  79. package/dist/resource_clients/store_collection.js +4 -1
  80. package/dist/resource_clients/task.d.ts +33 -10
  81. package/dist/resource_clients/task.js +79 -46
  82. package/dist/resource_clients/task_collection.d.ts +6 -2
  83. package/dist/resource_clients/task_collection.js +9 -3
  84. package/dist/resource_clients/user.d.ts +17 -8
  85. package/dist/resource_clients/user.js +42 -38
  86. package/dist/resource_clients/webhook.d.ts +14 -5
  87. package/dist/resource_clients/webhook.js +30 -22
  88. package/dist/resource_clients/webhook_collection.d.ts +6 -2
  89. package/dist/resource_clients/webhook_collection.js +9 -3
  90. package/dist/resource_clients/webhook_dispatch.d.ts +4 -1
  91. package/dist/resource_clients/webhook_dispatch.js +7 -2
  92. package/dist/resource_clients/webhook_dispatch_collection.d.ts +3 -1
  93. package/dist/resource_clients/webhook_dispatch_collection.js +4 -1
  94. package/dist/runtime/node.d.ts +6 -0
  95. package/dist/runtime/node.js +49 -0
  96. package/dist/runtime/types.d.ts +52 -0
  97. package/dist/runtime/types.js +1 -0
  98. package/dist/runtime/web.d.ts +5 -0
  99. package/dist/runtime/web.js +18 -0
  100. package/dist/schemas.d.ts +1 -1
  101. package/dist/schemas.js +1 -1
  102. package/dist/statistics.d.ts +1 -6
  103. package/dist/statistics.js +2 -2
  104. package/dist/timeouts.d.ts +84 -0
  105. package/dist/timeouts.js +37 -0
  106. package/dist/timezones.d.ts +1 -1
  107. package/dist/utils.d.ts +81 -52
  108. package/dist/utils.js +201 -170
  109. package/dist/wait_for_resources.d.ts +8 -0
  110. package/dist/wait_for_resources.js +39 -0
  111. package/package.json +32 -29
  112. package/dist/http_client.d.ts +0 -88
  113. package/dist/http_client.js +0 -255
  114. package/dist/interceptors.d.ts +0 -19
  115. package/dist/interceptors.js +0 -105
@@ -1,7 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { ResourceClient } from '../base/resource_client.js';
3
3
  import * as schemas from '../schemas.js';
4
- import { anyObjectSchema, catchNotFoundOrThrow, parseArgument, parseResponse } from '../utils.js';
4
+ import { timeoutOptionsSchema } from '../timeouts.js';
5
+ import { anyObjectSchema, parseArgument, parseResponse } from '../utils.js';
5
6
  export { ScheduleActions } from '../models.js';
6
7
  const scheduleLogSchema = z.array(schemas.ScheduleInvoked());
7
8
  /**
@@ -40,50 +41,57 @@ export class ScheduleClient extends ResourceClient {
40
41
  /**
41
42
  * Retrieves the schedule.
42
43
  *
44
+ * @param options - Request options
45
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
43
46
  * @returns The schedule object, or `undefined` if it does not exist.
44
47
  * @see https://docs.apify.com/api/v2/schedule-get
45
48
  */
46
- async get() {
47
- return this._get(schemas.Schedule());
49
+ async get(options = {}) {
50
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
51
+ return this.getResource(schemas.Schedule(), {}, timeoutSecs, signal);
48
52
  }
49
53
  /**
50
54
  * Updates the schedule with the specified fields.
51
55
  *
52
56
  * @param newFields - Fields to update.
57
+ * @param options - Request options
58
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
53
59
  * @returns The updated schedule object.
54
60
  * @see https://docs.apify.com/api/v2/schedule-put
55
61
  */
56
- async update(newFields) {
62
+ async update(newFields, options = {}) {
57
63
  parseArgument(newFields, anyObjectSchema);
58
- return this._update(schemas.Schedule(), newFields);
64
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
65
+ return this.updateResource(schemas.Schedule(), newFields, timeoutSecs, signal);
59
66
  }
60
67
  /**
61
68
  * Deletes the schedule.
62
69
  *
70
+ * @param options - Request options
71
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
63
72
  * @see https://docs.apify.com/api/v2/schedule-delete
64
73
  */
65
- async delete() {
66
- return this._delete();
74
+ async delete(options = {}) {
75
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
76
+ return this.deleteResource(timeoutSecs, signal);
67
77
  }
68
78
  /**
69
79
  * Retrieves the schedule's log.
70
80
  *
71
- * @returns The schedule log, one entry per invocation, or `undefined` if the schedule does not exist.
81
+ * @param options - Request options
82
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'medium'`.
83
+ * @returns The schedule log, one entry per invocation.
72
84
  * @see https://docs.apify.com/api/v2/schedule-log-get
73
85
  */
74
- async getLog() {
75
- const requestOpts = {
76
- url: this._url('log'),
86
+ async getLog(options = {}) {
87
+ const { timeoutSecs = 'medium', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
88
+ const response = await this.httpClient.call({
89
+ url: this.buildUrl('log'),
77
90
  method: 'GET',
78
- params: this._params(),
79
- };
80
- try {
81
- const response = await this.httpClient.call(requestOpts);
82
- return parseResponse(response, scheduleLogSchema);
83
- }
84
- catch (err) {
85
- catchNotFoundOrThrow(err);
86
- }
87
- return undefined;
91
+ params: this.buildParams(),
92
+ timeoutSecs,
93
+ signal,
94
+ });
95
+ return parseResponse(response, scheduleLogSchema);
88
96
  }
89
97
  }
@@ -1,5 +1,6 @@
1
1
  import type { ApiClientSubResourceOptions } from '../base/api_client.js';
2
2
  import { ResourceCollectionClient } from '../base/resource_collection_client.js';
3
+ import type { TimeoutOptions } from '../timeouts.js';
3
4
  import type { PaginatedIterator, PaginationOptions } from '../utils.js';
4
5
  import type { Schedule, ScheduleCreateOrUpdateData } from './schedule.js';
5
6
  /**
@@ -48,6 +49,7 @@ export declare class ScheduleCollectionClient extends ResourceCollectionClient {
48
49
  * ```
49
50
  *
50
51
  * @param options - Pagination and sorting options.
52
+ * @param options.timeoutSecs - Timeout for each API request. Default is `'medium'`.
51
53
  * @returns A paginated iterator of schedules.
52
54
  * @see https://docs.apify.com/api/v2/schedules-get
53
55
  */
@@ -56,11 +58,13 @@ export declare class ScheduleCollectionClient extends ResourceCollectionClient {
56
58
  * Creates a new schedule.
57
59
  *
58
60
  * @param schedule - The schedule data.
61
+ * @param options - Request options
62
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
59
63
  * @returns The created schedule object.
60
64
  * @see https://docs.apify.com/api/v2/schedules-post
61
65
  */
62
- create(schedule?: ScheduleCreateOrUpdateData): Promise<Schedule>;
66
+ create(schedule?: ScheduleCreateOrUpdateData, options?: TimeoutOptions): Promise<Schedule>;
63
67
  }
64
- export interface ScheduleCollectionListOptions extends PaginationOptions {
68
+ export interface ScheduleCollectionListOptions extends PaginationOptions, TimeoutOptions {
65
69
  desc?: boolean;
66
70
  }
@@ -1,10 +1,12 @@
1
1
  import { z } from 'zod';
2
2
  import { ResourceCollectionClient } from '../base/resource_collection_client.js';
3
3
  import * as schemas from '../schemas.js';
4
+ import { timeoutOptionsSchema, timeoutOptionsShape } from '../timeouts.js';
4
5
  import { anyObjectSchema, paginationOptionsShape, parseArgument } from '../utils.js';
5
6
  const listOptionsSchema = z.strictObject({
6
7
  ...paginationOptionsShape,
7
8
  desc: z.boolean().optional(),
9
+ ...timeoutOptionsShape,
8
10
  });
9
11
  const scheduleCreateSchema = anyObjectSchema.optional();
10
12
  /**
@@ -58,22 +60,26 @@ export class ScheduleCollectionClient extends ResourceCollectionClient {
58
60
  * ```
59
61
  *
60
62
  * @param options - Pagination and sorting options.
63
+ * @param options.timeoutSecs - Timeout for each API request. Default is `'medium'`.
61
64
  * @returns A paginated iterator of schedules.
62
65
  * @see https://docs.apify.com/api/v2/schedules-get
63
66
  */
64
67
  list(options = {}) {
65
68
  const parsed = parseArgument(options, listOptionsSchema, 'ScheduleCollectionListOptions');
66
- return this._listPaginated(schemas.ListOfSchedules(), parsed);
69
+ return this.listResourcesPaginated(schemas.ListOfSchedules(), parsed, 'medium');
67
70
  }
68
71
  /**
69
72
  * Creates a new schedule.
70
73
  *
71
74
  * @param schedule - The schedule data.
75
+ * @param options - Request options
76
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
72
77
  * @returns The created schedule object.
73
78
  * @see https://docs.apify.com/api/v2/schedules-post
74
79
  */
75
- async create(schedule) {
80
+ async create(schedule, options = {}) {
76
81
  parseArgument(schedule, scheduleCreateSchema);
77
- return this._create(schemas.Schedule(), schedule);
82
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
83
+ return this.createResource(schemas.Schedule(), schedule, timeoutSecs, signal);
78
84
  }
79
85
  }
@@ -1,6 +1,7 @@
1
1
  import type { ApiClientSubResourceOptions } from '../base/api_client.js';
2
2
  import { ResourceCollectionClient } from '../base/resource_collection_client.js';
3
3
  import type { ActorStoreList } from '../models.js';
4
+ import type { TimeoutOptions } from '../timeouts.js';
4
5
  import type { PaginatedIterator, PaginationOptions } from '../utils.js';
5
6
  export type { ActorStoreList, PricingInfo } from '../models.js';
6
7
  /**
@@ -46,6 +47,7 @@ export declare class StoreCollectionClient extends ResourceCollectionClient {
46
47
  * ```
47
48
  *
48
49
  * @param options - Search and pagination options.
50
+ * @param options.timeoutSecs - Timeout for each API request. Default is `'medium'`.
49
51
  * @returns A paginated iterator of store Actors.
50
52
  * @see https://docs.apify.com/api/v2/store-get
51
53
  */
@@ -54,7 +56,7 @@ export declare class StoreCollectionClient extends ResourceCollectionClient {
54
56
  /**
55
57
  * @since Added in 2.7.2
56
58
  */
57
- export interface StoreCollectionListOptions extends PaginationOptions {
59
+ export interface StoreCollectionListOptions extends PaginationOptions, TimeoutOptions {
58
60
  search?: string;
59
61
  sortBy?: string;
60
62
  category?: string;
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { ResourceCollectionClient } from '../base/resource_collection_client.js';
3
3
  import * as schemas from '../schemas.js';
4
+ import { timeoutOptionsShape } from '../timeouts.js';
4
5
  import { paginationOptionsShape, parseArgument } from '../utils.js';
5
6
  const listOptionsSchema = z.strictObject({
6
7
  ...paginationOptionsShape,
@@ -10,6 +11,7 @@ const listOptionsSchema = z.strictObject({
10
11
  username: z.string().optional(),
11
12
  pricingModel: z.string().optional(),
12
13
  includeUnrunnableActors: z.boolean().optional(),
14
+ ...timeoutOptionsShape,
13
15
  });
14
16
  /**
15
17
  * Client for browsing Actors in the Apify Store.
@@ -59,11 +61,12 @@ export class StoreCollectionClient extends ResourceCollectionClient {
59
61
  * ```
60
62
  *
61
63
  * @param options - Search and pagination options.
64
+ * @param options.timeoutSecs - Timeout for each API request. Default is `'medium'`.
62
65
  * @returns A paginated iterator of store Actors.
63
66
  * @see https://docs.apify.com/api/v2/store-get
64
67
  */
65
68
  list(options = {}) {
66
69
  const parsed = parseArgument(options, listOptionsSchema, 'StoreCollectionListOptions');
67
- return this._listPaginated(schemas.ListOfStoreActors(), parsed);
70
+ return this.listResourcesPaginated(schemas.ListOfStoreActors(), parsed, 'medium');
68
71
  }
69
72
  }
@@ -1,6 +1,7 @@
1
1
  import type { ApiClientSubResourceOptions } from '../base/api_client.js';
2
2
  import { ResourceClient } from '../base/resource_client.js';
3
3
  import type { Task, TaskPublicConfig } from '../models.js';
4
+ import type { TimeoutOptions } from '../timeouts.js';
4
5
  import type { Dictionary } from '../utils.js';
5
6
  import type { ActorLastRunOptions, ActorRun, ActorStartOptions } from './actor.js';
6
7
  import { RunClient } from './run.js';
@@ -35,18 +36,22 @@ export declare class TaskClient extends ResourceClient {
35
36
  /**
36
37
  * Retrieves the Actor task.
37
38
  *
39
+ * @param options - Request options
40
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
38
41
  * @returns The task object, or `undefined` if it does not exist.
39
42
  * @see https://docs.apify.com/api/v2/actor-task-get
40
43
  */
41
- get(): Promise<Task | undefined>;
44
+ get(options?: TimeoutOptions): Promise<Task | undefined>;
42
45
  /**
43
46
  * Updates the task with the specified fields.
44
47
  *
45
48
  * @param newFields - Fields to update.
49
+ * @param options - Request options
50
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
46
51
  * @returns The updated task object.
47
52
  * @see https://docs.apify.com/api/v2/actor-task-put
48
53
  */
49
- update(newFields: TaskUpdateData): Promise<Task>;
54
+ update(newFields: TaskUpdateData, options?: TimeoutOptions): Promise<Task>;
50
55
  /**
51
56
  * Publishes the task on its public landing page, by setting `isPublic` through
52
57
  * {@apilink TaskClient.update}.
@@ -55,11 +60,13 @@ export declare class TaskClient extends ResourceClient {
55
60
  * (`publicConfig`) set up first. Requires write permission to both the task and its Actor.
56
61
  * Publishing an already published task does nothing.
57
62
  *
63
+ * @param options - Request options
64
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
58
65
  * @returns The task object.
59
66
  * @see https://docs.apify.com/api/v2/actor-task-put
60
67
  * @since Added in 2.25.0
61
68
  */
62
- publish(): Promise<Task>;
69
+ publish(options?: TimeoutOptions): Promise<Task>;
63
70
  /**
64
71
  * Unpublishes the task from its public landing page, by setting `isPublic` through
65
72
  * {@apilink TaskClient.update}.
@@ -68,17 +75,21 @@ export declare class TaskClient extends ResourceClient {
68
75
  * published again without re-entering it. Requires write permission to both the task and its
69
76
  * Actor. Unpublishing a task that is not published does nothing.
70
77
  *
78
+ * @param options - Request options
79
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
71
80
  * @returns The task object.
72
81
  * @see https://docs.apify.com/api/v2/actor-task-put
73
82
  * @since Added in 2.25.0
74
83
  */
75
- unpublish(): Promise<Task>;
84
+ unpublish(options?: TimeoutOptions): Promise<Task>;
76
85
  /**
77
86
  * Deletes the Task.
78
87
  *
88
+ * @param options - Request options
89
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
79
90
  * @see https://docs.apify.com/api/v2/actor-task-delete
80
91
  */
81
- delete(): Promise<void>;
92
+ delete(options?: TimeoutOptions): Promise<void>;
82
93
  /**
83
94
  * Starts an Actor task and immediately returns the Run object.
84
95
  *
@@ -86,12 +97,16 @@ export declare class TaskClient extends ResourceClient {
86
97
  * @param options - Run options.
87
98
  * @param options.build - Tag or number of the Actor build to run (e.g., `'beta'` or `'1.2.345'`).
88
99
  * @param options.memory - Memory in megabytes allocated for the run.
89
- * @param options.timeout - Timeout for the run in seconds. Zero means no timeout.
100
+ * @param options.runTimeoutSecs - Timeout for the run in seconds. Zero means no timeout.
90
101
  * @param options.waitForFinish - Maximum time to wait (in seconds, max 60s) for the run to finish before returning.
91
102
  * @param options.webhooks - Webhooks to trigger for specific Actor run events.
92
103
  * @param options.maxItems - Maximum number of dataset items (for pay-per-result Actors).
93
104
  * @param options.maxTotalChargeUsd - Maximum cost in USD (for pay-per-event Actors).
94
105
  * @param options.restartOnError - Whether to restart the run on error.
106
+ * @param options.waitForResources - Retry the start while the account lacks the memory or a concurrent-run slot for
107
+ * the run. `true` retries until the run starts, a number stops retrying after that many seconds.
108
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'medium'`, extended to cover `waitForFinish`
109
+ * when the API is asked to hold the response.
95
110
  * @returns The Actor Run object.
96
111
  * @see https://docs.apify.com/api/v2/actor-task-runs-post
97
112
  */
@@ -104,12 +119,16 @@ export declare class TaskClient extends ResourceClient {
104
119
  * @param options - Run and wait options.
105
120
  * @param options.build - Tag or number of the Actor build to run.
106
121
  * @param options.memory - Memory in megabytes allocated for the run.
107
- * @param options.timeout - Timeout for the run in seconds.
122
+ * @param options.runTimeoutSecs - Timeout for the run in seconds.
108
123
  * @param options.waitSecs - Maximum time to wait for the run to finish, in seconds. If omitted, waits indefinitely.
109
124
  * @param options.webhooks - Webhooks to trigger for specific Actor run events.
110
125
  * @param options.maxItems - Maximum number of dataset items (for pay-per-result Actors).
111
126
  * @param options.maxTotalChargeUsd - Maximum cost in USD (for pay-per-event Actors).
112
127
  * @param options.restartOnError - Whether to restart the run on error.
128
+ * @param options.waitForResources - Retry the start while the account lacks the memory or a concurrent-run slot for
129
+ * the run. `true` retries until the run starts, a number stops retrying after that many seconds. The time spent
130
+ * retrying doesn't count toward `waitSecs`.
131
+ * @param options.timeoutSecs - Timeout for each API request, the start and every poll alike. Default is `'noTimeout'`.
113
132
  * @returns The Actor run object.
114
133
  * @see https://docs.apify.com/api/v2/actor-task-runs-post
115
134
  */
@@ -117,18 +136,22 @@ export declare class TaskClient extends ResourceClient {
117
136
  /**
118
137
  * Retrieves the Actor task's input object.
119
138
  *
120
- * @returns The Task's input, or `undefined` if it does not exist.
139
+ * @param options - Request options
140
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
141
+ * @returns The Task's input.
121
142
  * @see https://docs.apify.com/api/v2/actor-task-input-get
122
143
  */
123
- getInput(): Promise<Dictionary | Dictionary[] | undefined>;
144
+ getInput(options?: TimeoutOptions): Promise<Dictionary | Dictionary[]>;
124
145
  /**
125
146
  * Updates the Actor task's input object.
126
147
  *
127
148
  * @param newFields - New input data for the task.
149
+ * @param options - Request options
150
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
128
151
  * @returns The updated task input.
129
152
  * @see https://docs.apify.com/api/v2/actor-task-input-put
130
153
  */
131
- updateInput(newFields: Dictionary | Dictionary[]): Promise<Dictionary | Dictionary[]>;
154
+ updateInput(newFields: Dictionary | Dictionary[], options?: TimeoutOptions): Promise<Dictionary | Dictionary[]>;
132
155
  /**
133
156
  * Returns a client for the last run of this task.
134
157
  *
@@ -2,7 +2,9 @@ import { z } from 'zod';
2
2
  import { ACT_JOB_STATUSES, META_ORIGINS } from '@apify/consts';
3
3
  import { ResourceClient } from '../base/resource_client.js';
4
4
  import * as schemas from '../schemas.js';
5
- import { anyObjectSchema, cast, catchNotFoundOrThrow, parseArgument, parseResponse, stringifyWebhooksToBase64, } from '../utils.js';
5
+ import { timeoutOptionsSchema, timeoutOptionsShape } from '../timeouts.js';
6
+ import { anyObjectSchema, cast, isStream, parseArgument, parseResponse, stringifyWebhooksToBase64 } from '../utils.js';
7
+ import { startWaitingForResources } from '../wait_for_resources.js';
6
8
  import { RunClient } from './run.js';
7
9
  import { RunCollectionClient } from './run_collection.js';
8
10
  import { WebhookCollectionClient } from './webhook_collection.js';
@@ -10,22 +12,26 @@ const inputSchema = anyObjectSchema.optional();
10
12
  const startOptionsSchema = z.strictObject({
11
13
  build: z.string().optional(),
12
14
  memory: z.number().optional(),
13
- timeout: z.number().optional(),
15
+ runTimeoutSecs: z.number().min(0).optional(),
14
16
  waitForFinish: z.number().optional(),
15
17
  webhooks: z.array(anyObjectSchema).optional(),
16
18
  maxItems: z.number().min(0).optional(),
17
19
  maxTotalChargeUsd: z.number().min(0).optional(),
18
20
  restartOnError: z.boolean().optional(),
21
+ waitForResources: z.union([z.boolean(), z.number().min(0)]).optional(),
22
+ ...timeoutOptionsShape,
19
23
  });
20
24
  const callOptionsSchema = z.strictObject({
21
25
  build: z.string().optional(),
22
26
  memory: z.number().optional(),
23
- timeout: z.number().min(0).optional(),
27
+ runTimeoutSecs: z.number().min(0).optional(),
24
28
  waitSecs: z.number().min(0).optional(),
25
29
  webhooks: z.array(anyObjectSchema).optional(),
26
30
  maxItems: z.number().min(0).optional(),
27
31
  maxTotalChargeUsd: z.number().min(0).optional(),
28
32
  restartOnError: z.boolean().optional(),
33
+ waitForResources: z.union([z.boolean(), z.number().min(0)]).optional(),
34
+ ...timeoutOptionsShape,
29
35
  });
30
36
  const lastRunOptionsSchema = z.strictObject({
31
37
  status: z.enum(ACT_JOB_STATUSES).optional(),
@@ -64,22 +70,28 @@ export class TaskClient extends ResourceClient {
64
70
  /**
65
71
  * Retrieves the Actor task.
66
72
  *
73
+ * @param options - Request options
74
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
67
75
  * @returns The task object, or `undefined` if it does not exist.
68
76
  * @see https://docs.apify.com/api/v2/actor-task-get
69
77
  */
70
- async get() {
71
- return this._get(schemas.Task());
78
+ async get(options = {}) {
79
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
80
+ return this.getResource(schemas.Task(), {}, timeoutSecs, signal);
72
81
  }
73
82
  /**
74
83
  * Updates the task with the specified fields.
75
84
  *
76
85
  * @param newFields - Fields to update.
86
+ * @param options - Request options
87
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
77
88
  * @returns The updated task object.
78
89
  * @see https://docs.apify.com/api/v2/actor-task-put
79
90
  */
80
- async update(newFields) {
91
+ async update(newFields, options = {}) {
81
92
  parseArgument(newFields, anyObjectSchema);
82
- return this._update(schemas.Task(), newFields);
93
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
94
+ return this.updateResource(schemas.Task(), newFields, timeoutSecs, signal);
83
95
  }
84
96
  /**
85
97
  * Publishes the task on its public landing page, by setting `isPublic` through
@@ -89,12 +101,14 @@ export class TaskClient extends ResourceClient {
89
101
  * (`publicConfig`) set up first. Requires write permission to both the task and its Actor.
90
102
  * Publishing an already published task does nothing.
91
103
  *
104
+ * @param options - Request options
105
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
92
106
  * @returns The task object.
93
107
  * @see https://docs.apify.com/api/v2/actor-task-put
94
108
  * @since Added in 2.25.0
95
109
  */
96
- async publish() {
97
- return this.update({ isPublic: true });
110
+ async publish(options = {}) {
111
+ return this.update({ isPublic: true }, options);
98
112
  }
99
113
  /**
100
114
  * Unpublishes the task from its public landing page, by setting `isPublic` through
@@ -104,20 +118,25 @@ export class TaskClient extends ResourceClient {
104
118
  * published again without re-entering it. Requires write permission to both the task and its
105
119
  * Actor. Unpublishing a task that is not published does nothing.
106
120
  *
121
+ * @param options - Request options
122
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
107
123
  * @returns The task object.
108
124
  * @see https://docs.apify.com/api/v2/actor-task-put
109
125
  * @since Added in 2.25.0
110
126
  */
111
- async unpublish() {
112
- return this.update({ isPublic: false });
127
+ async unpublish(options = {}) {
128
+ return this.update({ isPublic: false }, options);
113
129
  }
114
130
  /**
115
131
  * Deletes the Task.
116
132
  *
133
+ * @param options - Request options
134
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
117
135
  * @see https://docs.apify.com/api/v2/actor-task-delete
118
136
  */
119
- async delete() {
120
- return this._delete();
137
+ async delete(options = {}) {
138
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
139
+ return this.deleteResource(timeoutSecs, signal);
121
140
  }
122
141
  /**
123
142
  * Starts an Actor task and immediately returns the Run object.
@@ -126,22 +145,27 @@ export class TaskClient extends ResourceClient {
126
145
  * @param options - Run options.
127
146
  * @param options.build - Tag or number of the Actor build to run (e.g., `'beta'` or `'1.2.345'`).
128
147
  * @param options.memory - Memory in megabytes allocated for the run.
129
- * @param options.timeout - Timeout for the run in seconds. Zero means no timeout.
148
+ * @param options.runTimeoutSecs - Timeout for the run in seconds. Zero means no timeout.
130
149
  * @param options.waitForFinish - Maximum time to wait (in seconds, max 60s) for the run to finish before returning.
131
150
  * @param options.webhooks - Webhooks to trigger for specific Actor run events.
132
151
  * @param options.maxItems - Maximum number of dataset items (for pay-per-result Actors).
133
152
  * @param options.maxTotalChargeUsd - Maximum cost in USD (for pay-per-event Actors).
134
153
  * @param options.restartOnError - Whether to restart the run on error.
154
+ * @param options.waitForResources - Retry the start while the account lacks the memory or a concurrent-run slot for
155
+ * the run. `true` retries until the run starts, a number stops retrying after that many seconds.
156
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'medium'`, extended to cover `waitForFinish`
157
+ * when the API is asked to hold the response.
135
158
  * @returns The Actor Run object.
136
159
  * @see https://docs.apify.com/api/v2/actor-task-runs-post
137
160
  */
138
161
  async start(input, options = {}) {
139
162
  parseArgument(input, inputSchema);
140
163
  const parsed = parseArgument(options, startOptionsSchema, 'TaskStartOptions');
141
- const { waitForFinish, timeout, memory, build, maxItems, maxTotalChargeUsd, restartOnError } = parsed;
164
+ const { waitForFinish, runTimeoutSecs, memory, build, maxItems, maxTotalChargeUsd, restartOnError, waitForResources, timeoutSecs, signal, } = parsed;
165
+ // The API's `timeout` parameter bounds the run, not the request.
142
166
  const params = {
143
167
  waitForFinish,
144
- timeout,
168
+ timeout: runTimeoutSecs,
145
169
  memory,
146
170
  build,
147
171
  webhooks: stringifyWebhooksToBase64(parsed.webhooks),
@@ -150,18 +174,20 @@ export class TaskClient extends ResourceClient {
150
174
  restartOnError,
151
175
  };
152
176
  const request = {
153
- url: this._url('runs'),
177
+ url: this.buildUrl('runs'),
154
178
  method: 'POST',
155
179
  data: input,
156
- params: this._params(params),
157
- // Apify internal property. Tells the request serialization interceptor
158
- // to stringify functions to JSON, instead of omitting them.
180
+ params: this.buildParams(params),
181
+ // Actor input may carry page functions, which plain JSON serialization would drop.
159
182
  stringifyFunctions: true,
160
183
  headers: {
161
184
  'Content-Type': 'application/json',
162
185
  },
186
+ timeoutSecs: this.timeoutForWaitForFinish(timeoutSecs, 'medium', waitForFinish),
187
+ signal,
163
188
  };
164
- const response = await this.httpClient.call(request);
189
+ // A `Readable` input is consumed by the first attempt, so a retry would start the run with an empty input.
190
+ const response = await startWaitingForResources(async () => this.httpClient.call(request), isStream(input) ? false : waitForResources, this.httpClient.logger, signal);
165
191
  return parseResponse(response, schemas.Run());
166
192
  }
167
193
  /**
@@ -172,59 +198,66 @@ export class TaskClient extends ResourceClient {
172
198
  * @param options - Run and wait options.
173
199
  * @param options.build - Tag or number of the Actor build to run.
174
200
  * @param options.memory - Memory in megabytes allocated for the run.
175
- * @param options.timeout - Timeout for the run in seconds.
201
+ * @param options.runTimeoutSecs - Timeout for the run in seconds.
176
202
  * @param options.waitSecs - Maximum time to wait for the run to finish, in seconds. If omitted, waits indefinitely.
177
203
  * @param options.webhooks - Webhooks to trigger for specific Actor run events.
178
204
  * @param options.maxItems - Maximum number of dataset items (for pay-per-result Actors).
179
205
  * @param options.maxTotalChargeUsd - Maximum cost in USD (for pay-per-event Actors).
180
206
  * @param options.restartOnError - Whether to restart the run on error.
207
+ * @param options.waitForResources - Retry the start while the account lacks the memory or a concurrent-run slot for
208
+ * the run. `true` retries until the run starts, a number stops retrying after that many seconds. The time spent
209
+ * retrying doesn't count toward `waitSecs`.
210
+ * @param options.timeoutSecs - Timeout for each API request, the start and every poll alike. Default is `'noTimeout'`.
181
211
  * @returns The Actor run object.
182
212
  * @see https://docs.apify.com/api/v2/actor-task-runs-post
183
213
  */
184
214
  async call(input, options = {}) {
185
215
  parseArgument(input, inputSchema);
186
216
  const parsed = parseArgument(options, callOptionsSchema, 'TaskCallOptions');
187
- const { waitSecs, ...startOptions } = parsed;
188
- const { id } = await this.start(input, startOptions);
217
+ const { waitSecs, timeoutSecs = 'noTimeout', signal, ...startOptions } = parsed;
218
+ const { id } = await this.start(input, { ...startOptions, timeoutSecs, signal });
189
219
  // Calling root client because we need access to top level API.
190
220
  // Creating a new instance of RunClient here would only allow
191
221
  // setting it up as a nested route under task API.
192
- return this.apifyClient.run(id).waitForFinish({ waitSecs });
222
+ return this.apifyClient.run(id).waitForFinish({ waitSecs, timeoutSecs, signal });
193
223
  }
194
224
  /**
195
225
  * Retrieves the Actor task's input object.
196
226
  *
197
- * @returns The Task's input, or `undefined` if it does not exist.
227
+ * @param options - Request options
228
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
229
+ * @returns The Task's input.
198
230
  * @see https://docs.apify.com/api/v2/actor-task-input-get
199
231
  */
200
- async getInput() {
201
- const requestOpts = {
202
- url: this._url('input'),
232
+ async getInput(options = {}) {
233
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
234
+ const response = await this.httpClient.call({
235
+ url: this.buildUrl('input'),
203
236
  method: 'GET',
204
- params: this._params(),
205
- };
206
- try {
207
- const response = await this.httpClient.call(requestOpts);
208
- return cast(response.data);
209
- }
210
- catch (err) {
211
- catchNotFoundOrThrow(err);
212
- }
213
- return undefined;
237
+ params: this.buildParams(),
238
+ timeoutSecs,
239
+ signal,
240
+ });
241
+ return cast(response.data);
214
242
  }
215
243
  /**
216
244
  * Updates the Actor task's input object.
217
245
  *
218
246
  * @param newFields - New input data for the task.
247
+ * @param options - Request options
248
+ * @param options.timeoutSecs - Timeout for the API request. Default is `'short'`.
219
249
  * @returns The updated task input.
220
250
  * @see https://docs.apify.com/api/v2/actor-task-input-put
221
251
  */
222
- async updateInput(newFields) {
252
+ async updateInput(newFields, options = {}) {
253
+ const { timeoutSecs = 'short', signal } = parseArgument(options, timeoutOptionsSchema, 'TimeoutOptions');
223
254
  const response = await this.httpClient.call({
224
- url: this._url('input'),
255
+ url: this.buildUrl('input'),
225
256
  method: 'PUT',
226
- params: this._params(),
257
+ params: this.buildParams(),
227
258
  data: newFields,
259
+ timeoutSecs,
260
+ signal,
228
261
  });
229
262
  return cast(response.data);
230
263
  }
@@ -239,9 +272,9 @@ export class TaskClient extends ResourceClient {
239
272
  */
240
273
  lastRun(options = {}) {
241
274
  const parsed = parseArgument(options, lastRunOptionsSchema, 'TaskLastRunOptions');
242
- return new RunClient(this._subResourceOptions({
275
+ return new RunClient(this.subResourceOptions({
243
276
  id: 'last',
244
- params: this._params(parsed),
277
+ params: this.buildParams(parsed),
245
278
  resourcePath: 'runs',
246
279
  }));
247
280
  }
@@ -252,7 +285,7 @@ export class TaskClient extends ResourceClient {
252
285
  * @see https://docs.apify.com/api/v2/actor-task-runs-get
253
286
  */
254
287
  runs() {
255
- return new RunCollectionClient(this._subResourceOptions({
288
+ return new RunCollectionClient(this.subResourceOptions({
256
289
  resourcePath: 'runs',
257
290
  }));
258
291
  }
@@ -263,6 +296,6 @@ export class TaskClient extends ResourceClient {
263
296
  * @see https://docs.apify.com/api/v2/actor-task-webhooks-get
264
297
  */
265
298
  webhooks() {
266
- return new WebhookCollectionClient(this._subResourceOptions());
299
+ return new WebhookCollectionClient(this.subResourceOptions());
267
300
  }
268
301
  }