@zapier/zapier-sdk 0.48.1 → 0.50.0
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/CHANGELOG.md +21 -0
- package/README.md +832 -81
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +27 -16
- package/dist/api/polling.d.ts +7 -0
- package/dist/api/polling.d.ts.map +1 -1
- package/dist/api/polling.js +29 -4
- package/dist/api/types.d.ts +15 -7
- package/dist/api/types.d.ts.map +1 -1
- package/dist/constants.d.ts +8 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -11
- package/dist/experimental.cjs +10383 -0
- package/dist/experimental.d.mts +2292 -0
- package/dist/experimental.d.ts +2308 -0
- package/dist/experimental.d.ts.map +1 -0
- package/dist/experimental.js +155 -0
- package/dist/experimental.mjs +10202 -0
- package/dist/index-BQ2ii0Bs.d.mts +9538 -0
- package/dist/index-BQ2ii0Bs.d.ts +9538 -0
- package/dist/index.cjs +718 -513
- package/dist/index.d.mts +6 -8562
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.mjs +706 -512
- package/dist/plugins/api/index.d.ts.map +1 -1
- package/dist/plugins/api/index.js +1 -2
- package/dist/plugins/apps/index.d.ts +1 -1
- package/dist/plugins/deprecated/inputFields.d.ts +468 -0
- package/dist/plugins/deprecated/inputFields.d.ts.map +1 -0
- package/dist/plugins/deprecated/inputFields.js +73 -0
- package/dist/plugins/fetch/index.d.ts +1 -1
- package/dist/plugins/fetch/schemas.d.ts +1 -1
- package/dist/plugins/{getInputFieldsSchema → getActionInputFieldsSchema}/index.d.ts +4 -4
- package/dist/plugins/getActionInputFieldsSchema/index.d.ts.map +1 -0
- package/dist/plugins/{getInputFieldsSchema → getActionInputFieldsSchema}/index.js +4 -4
- package/dist/plugins/{getInputFieldsSchema → getActionInputFieldsSchema}/schemas.d.ts +8 -8
- package/dist/plugins/getActionInputFieldsSchema/schemas.d.ts.map +1 -0
- package/dist/plugins/{getInputFieldsSchema → getActionInputFieldsSchema}/schemas.js +13 -10
- package/dist/plugins/{listInputFieldChoices → listActionInputFieldChoices}/index.d.ts +4 -4
- package/dist/plugins/listActionInputFieldChoices/index.d.ts.map +1 -0
- package/dist/plugins/{listInputFieldChoices → listActionInputFieldChoices}/index.js +4 -4
- package/dist/plugins/{listInputFieldChoices → listActionInputFieldChoices}/schemas.d.ts +10 -10
- package/dist/plugins/listActionInputFieldChoices/schemas.d.ts.map +1 -0
- package/dist/plugins/{listInputFieldChoices → listActionInputFieldChoices}/schemas.js +13 -10
- package/dist/plugins/{listInputFields → listActionInputFields}/index.d.ts +4 -4
- package/dist/plugins/listActionInputFields/index.d.ts.map +1 -0
- package/dist/plugins/{listInputFields → listActionInputFields}/index.js +4 -4
- package/dist/plugins/{listInputFields → listActionInputFields}/schemas.d.ts +9 -9
- package/dist/plugins/listActionInputFields/schemas.d.ts.map +1 -0
- package/dist/plugins/{listInputFields → listActionInputFields}/schemas.js +7 -7
- package/dist/plugins/request/index.d.ts +2 -2
- package/dist/plugins/request/schemas.d.ts +2 -2
- package/dist/plugins/triggers/ackTriggerInboxMessages/index.d.ts +51 -0
- package/dist/plugins/triggers/ackTriggerInboxMessages/index.d.ts.map +1 -0
- package/dist/plugins/triggers/ackTriggerInboxMessages/index.js +35 -0
- package/dist/plugins/triggers/ackTriggerInboxMessages/schemas.d.ts +34 -0
- package/dist/plugins/triggers/ackTriggerInboxMessages/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/ackTriggerInboxMessages/schemas.js +17 -0
- package/dist/plugins/triggers/createTriggerInbox/index.d.ts +62 -0
- package/dist/plugins/triggers/createTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/createTriggerInbox/index.js +54 -0
- package/dist/plugins/triggers/createTriggerInbox/schemas.d.ts +20 -0
- package/dist/plugins/triggers/createTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/createTriggerInbox/schemas.js +20 -0
- package/dist/plugins/triggers/deleteTriggerInbox/index.d.ts +50 -0
- package/dist/plugins/triggers/deleteTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/deleteTriggerInbox/index.js +27 -0
- package/dist/plugins/triggers/deleteTriggerInbox/schemas.d.ts +14 -0
- package/dist/plugins/triggers/deleteTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/deleteTriggerInbox/schemas.js +9 -0
- package/dist/plugins/triggers/drainTriggerInbox/index.d.ts +213 -0
- package/dist/plugins/triggers/drainTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/drainTriggerInbox/index.js +227 -0
- package/dist/plugins/triggers/drainTriggerInbox/pipeline.d.ts +56 -0
- package/dist/plugins/triggers/drainTriggerInbox/pipeline.d.ts.map +1 -0
- package/dist/plugins/triggers/drainTriggerInbox/pipeline.js +225 -0
- package/dist/plugins/triggers/drainTriggerInbox/schemas.d.ts +104 -0
- package/dist/plugins/triggers/drainTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/drainTriggerInbox/schemas.js +102 -0
- package/dist/plugins/triggers/ensureTriggerInbox/index.d.ts +63 -0
- package/dist/plugins/triggers/ensureTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/ensureTriggerInbox/index.js +77 -0
- package/dist/plugins/triggers/ensureTriggerInbox/schemas.d.ts +21 -0
- package/dist/plugins/triggers/ensureTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/ensureTriggerInbox/schemas.js +21 -0
- package/dist/plugins/triggers/getTriggerInbox/index.d.ts +50 -0
- package/dist/plugins/triggers/getTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/getTriggerInbox/index.js +26 -0
- package/dist/plugins/triggers/getTriggerInbox/schemas.d.ts +14 -0
- package/dist/plugins/triggers/getTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/getTriggerInbox/schemas.js +9 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/index.d.ts +48 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/index.d.ts.map +1 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/index.js +23 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/schemas.d.ts +13 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/schemas.js +10 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/index.d.ts +58 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/index.d.ts.map +1 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/index.js +70 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/schemas.d.ts +57 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/leaseTriggerInboxMessages/schemas.js +25 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/index.d.ts +51 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/index.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/index.js +48 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/schemas.d.ts +37 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInboxMessages/schemas.js +27 -0
- package/dist/plugins/triggers/listTriggerInboxes/index.d.ts +56 -0
- package/dist/plugins/triggers/listTriggerInboxes/index.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInboxes/index.js +51 -0
- package/dist/plugins/triggers/listTriggerInboxes/schemas.d.ts +58 -0
- package/dist/plugins/triggers/listTriggerInboxes/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInboxes/schemas.js +35 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/index.d.ts +77 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/index.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/index.js +30 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/schemas.d.ts +20 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInputFieldChoices/schemas.js +28 -0
- package/dist/plugins/triggers/listTriggerInputFields/index.d.ts +101 -0
- package/dist/plugins/triggers/listTriggerInputFields/index.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInputFields/index.js +33 -0
- package/dist/plugins/triggers/listTriggerInputFields/schemas.d.ts +16 -0
- package/dist/plugins/triggers/listTriggerInputFields/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggerInputFields/schemas.js +21 -0
- package/dist/plugins/triggers/pauseTriggerInbox/index.d.ts +50 -0
- package/dist/plugins/triggers/pauseTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/pauseTriggerInbox/index.js +26 -0
- package/dist/plugins/triggers/pauseTriggerInbox/schemas.d.ts +14 -0
- package/dist/plugins/triggers/pauseTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/pauseTriggerInbox/schemas.js +9 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/index.d.ts +51 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/index.d.ts.map +1 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/index.js +37 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/schemas.d.ts +34 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/schemas.js +17 -0
- package/dist/plugins/triggers/resumeTriggerInbox/index.d.ts +50 -0
- package/dist/plugins/triggers/resumeTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/resumeTriggerInbox/index.js +26 -0
- package/dist/plugins/triggers/resumeTriggerInbox/schemas.d.ts +14 -0
- package/dist/plugins/triggers/resumeTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/resumeTriggerInbox/schemas.js +9 -0
- package/dist/plugins/triggers/shared.d.ts +17 -0
- package/dist/plugins/triggers/shared.d.ts.map +1 -0
- package/dist/plugins/triggers/shared.js +16 -0
- package/dist/plugins/triggers/updateTriggerInbox/index.d.ts +51 -0
- package/dist/plugins/triggers/updateTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/updateTriggerInbox/index.js +30 -0
- package/dist/plugins/triggers/updateTriggerInbox/schemas.d.ts +15 -0
- package/dist/plugins/triggers/updateTriggerInbox/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/updateTriggerInbox/schemas.js +15 -0
- package/dist/plugins/triggers/utils.d.ts +17 -0
- package/dist/plugins/triggers/utils.d.ts.map +1 -0
- package/dist/plugins/triggers/utils.js +28 -0
- package/dist/plugins/triggers/watchTriggerInbox/index.d.ts +163 -0
- package/dist/plugins/triggers/watchTriggerInbox/index.d.ts.map +1 -0
- package/dist/plugins/triggers/watchTriggerInbox/index.js +111 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -0
- package/dist/resolvers/actionKey.d.ts +1 -0
- package/dist/resolvers/actionKey.d.ts.map +1 -1
- package/dist/resolvers/actionKey.js +1 -1
- package/dist/resolvers/index.d.ts +2 -2
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -2
- package/dist/resolvers/triggerInbox.d.ts +4 -0
- package/dist/resolvers/triggerInbox.d.ts.map +1 -0
- package/dist/resolvers/triggerInbox.js +18 -0
- package/dist/schemas/TriggerInbox.d.ts +59 -0
- package/dist/schemas/TriggerInbox.d.ts.map +1 -0
- package/dist/schemas/TriggerInbox.js +81 -0
- package/dist/schemas/TriggerMessage.d.ts +48 -0
- package/dist/schemas/TriggerMessage.d.ts.map +1 -0
- package/dist/schemas/TriggerMessage.js +79 -0
- package/dist/sdk.d.ts +621 -17
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +26 -9
- package/dist/types/errors.d.ts +18 -5
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +16 -0
- package/dist/types/plugin.d.ts +12 -1
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/properties.d.ts +12 -0
- package/dist/types/properties.d.ts.map +1 -1
- package/dist/types/properties.js +25 -0
- package/dist/types/registry.d.ts +5 -0
- package/dist/types/registry.d.ts.map +1 -1
- package/dist/types/sdk.d.ts +4 -4
- package/dist/types/sdk.d.ts.map +1 -1
- package/dist/types/sdk.js +4 -11
- package/dist/types/signals.d.ts +20 -0
- package/dist/types/signals.d.ts.map +1 -0
- package/dist/types/signals.js +21 -0
- package/dist/utils/abort-utils.d.ts +13 -0
- package/dist/utils/abort-utils.d.ts.map +1 -1
- package/dist/utils/abort-utils.js +15 -0
- package/dist/utils/retry-utils.d.ts +6 -2
- package/dist/utils/retry-utils.d.ts.map +1 -1
- package/dist/utils/retry-utils.js +22 -3
- package/dist/utils/schema-utils.d.ts +19 -1
- package/dist/utils/schema-utils.d.ts.map +1 -1
- package/package.json +12 -1
- package/dist/plugins/getInputFieldsSchema/index.d.ts.map +0 -1
- package/dist/plugins/getInputFieldsSchema/schemas.d.ts.map +0 -1
- package/dist/plugins/listInputFieldChoices/index.d.ts.map +0 -1
- package/dist/plugins/listInputFieldChoices/schemas.d.ts.map +0 -1
- package/dist/plugins/listInputFields/index.d.ts.map +0 -1
- package/dist/plugins/listInputFields/schemas.d.ts.map +0 -1
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAGjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AA2jCjB,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,SAW3D,CAAC"}
|
package/dist/api/client.js
CHANGED
|
@@ -12,7 +12,7 @@ import { getZapierBaseUrl, isLocalhostBaseUrl } from "../utils/url-utils";
|
|
|
12
12
|
import { sleep, calculateExponentialBackoffMs } from "../utils/retry-utils";
|
|
13
13
|
import { isPlainObject } from "../utils/type-guard-utils";
|
|
14
14
|
import { ZapierApiError, ZapierApprovalError, ZapierAuthenticationError, ZapierTimeoutError, ZapierValidationError, ZapierResourceNotFoundError, ZapierRateLimitError, } from "../types/errors";
|
|
15
|
-
import { ZAPIER_MAX_NETWORK_RETRIES, ZAPIER_MAX_NETWORK_RETRY_DELAY_MS,
|
|
15
|
+
import { ZAPIER_MAX_NETWORK_RETRIES, ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, getZapierApprovalMode, getZapierSdkService, DEFAULT_APPROVAL_TIMEOUT_MS, DEFAULT_MAX_APPROVAL_RETRIES, } from "../constants";
|
|
16
16
|
import { SDK_VERSION } from "../sdk-version";
|
|
17
17
|
import { openApproval } from "../utils/open-approval";
|
|
18
18
|
import { z } from "zod";
|
|
@@ -95,6 +95,11 @@ const pathConfig = {
|
|
|
95
95
|
authHeader: "Authorization",
|
|
96
96
|
pathPrefix: "/api/v0/sdk/tables",
|
|
97
97
|
},
|
|
98
|
+
// e.g. /trigger-inbox -> https://sdkapi.zapier.com/api/v0/sdk/trigger-inbox/...
|
|
99
|
+
"/trigger-inbox": {
|
|
100
|
+
authHeader: "Authorization",
|
|
101
|
+
pathPrefix: "/api/v0/sdk/trigger-inbox",
|
|
102
|
+
},
|
|
98
103
|
};
|
|
99
104
|
class ZapierApiClient {
|
|
100
105
|
constructor(options) {
|
|
@@ -159,7 +164,9 @@ class ZapierApiClient {
|
|
|
159
164
|
method: init?.method ?? "GET",
|
|
160
165
|
rateLimit: rateLimitInfo,
|
|
161
166
|
});
|
|
162
|
-
|
|
167
|
+
// Forward the request's signal so a long retry-after wait aborts
|
|
168
|
+
// promptly instead of hanging until the timer elapses.
|
|
169
|
+
await sleep(delayMs, init?.signal ?? undefined);
|
|
163
170
|
}
|
|
164
171
|
};
|
|
165
172
|
/**
|
|
@@ -242,13 +249,13 @@ class ZapierApiClient {
|
|
|
242
249
|
// and throw `max_retries_exceeded` below.
|
|
243
250
|
if (attempt === maxRetries)
|
|
244
251
|
break;
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
// status so callers can branch on "
|
|
248
|
-
//
|
|
249
|
-
const
|
|
250
|
-
if (
|
|
251
|
-
throw new ZapierApprovalError("
|
|
252
|
+
// Resolve the mode: explicit option > env var > "disabled" (conservative
|
|
253
|
+
// default while the approval flow is alpha + opt-in). When disabled,
|
|
254
|
+
// surface a distinct status so callers can branch on "enable approvals
|
|
255
|
+
// explicitly" vs. a real policy denial.
|
|
256
|
+
const mode = this.options.approvalMode ?? getZapierApprovalMode() ?? "disabled";
|
|
257
|
+
if (mode === "disabled") {
|
|
258
|
+
throw new ZapierApprovalError("Approvals are disabled. Set approvalMode to 'poll' or 'throw' (or ZAPIER_APPROVAL_MODE) to enable.", { status: "approval_required" });
|
|
252
259
|
}
|
|
253
260
|
// `approvalContext` is a builder, not a value, because the SDK may
|
|
254
261
|
// retry the same request across multiple approval rounds and each POST
|
|
@@ -259,10 +266,10 @@ class ZapierApiClient {
|
|
|
259
266
|
throw new ZapierApiError(`Received 403 approval_required for ${path}, but the caller did not provide an approvalContext builder. Every approval-capable request must pass approvalContext so the SDK can create the approval with the correct policy context.`, { statusCode: 403 });
|
|
260
267
|
}
|
|
261
268
|
// Create the approval, open the URL (poll mode) or throw with the URL
|
|
262
|
-
// attached (
|
|
269
|
+
// attached (throw mode), and wait for terminal resolution. Returns only
|
|
263
270
|
// on "approved" — every other outcome throws from inside the helper.
|
|
264
271
|
// On return, loop back to retry the original request.
|
|
265
|
-
await this.runOneApprovalRound(init.approvalContext);
|
|
272
|
+
await this.runOneApprovalRound(init.approvalContext, mode);
|
|
266
273
|
}
|
|
267
274
|
// Only reachable when the final attempt returned `approval_required`
|
|
268
275
|
// (see the `break` above). Every other terminal outcome throws inline.
|
|
@@ -289,6 +296,7 @@ class ZapierApiClient {
|
|
|
289
296
|
method: "GET",
|
|
290
297
|
searchParams: options.searchParams,
|
|
291
298
|
authRequired: options.authRequired,
|
|
299
|
+
signal: options.signal,
|
|
292
300
|
}),
|
|
293
301
|
initialDelay: options.initialDelay,
|
|
294
302
|
timeoutMs: options.timeoutMs,
|
|
@@ -296,6 +304,7 @@ class ZapierApiClient {
|
|
|
296
304
|
pendingStatus: options.pendingStatus,
|
|
297
305
|
isPending: options.isPending,
|
|
298
306
|
resultExtractor: options.resultExtractor,
|
|
307
|
+
signal: options.signal,
|
|
299
308
|
});
|
|
300
309
|
};
|
|
301
310
|
this.maxNetworkRetries =
|
|
@@ -642,10 +651,13 @@ class ZapierApiClient {
|
|
|
642
651
|
}
|
|
643
652
|
/**
|
|
644
653
|
* Run a single approval round: create the approval, open the URL (poll mode)
|
|
645
|
-
* or throw (
|
|
654
|
+
* or throw (throw mode), poll until resolved, and emit events. Throws on
|
|
646
655
|
* denied/timeout/unexpected status. Returns on approved.
|
|
656
|
+
*
|
|
657
|
+
* Caller is responsible for passing a non-"disabled" mode; this method
|
|
658
|
+
* unconditionally creates an approval.
|
|
647
659
|
*/
|
|
648
|
-
async runOneApprovalRound(buildContext) {
|
|
660
|
+
async runOneApprovalRound(buildContext, mode) {
|
|
649
661
|
const context = buildContext();
|
|
650
662
|
// Route through rawFetch so the approval POST shares auth + 429 retry.
|
|
651
663
|
let approvalResponse;
|
|
@@ -724,8 +736,7 @@ class ZapierApiClient {
|
|
|
724
736
|
approvalId: approval.approval_id,
|
|
725
737
|
approvalUrl: approval.approval_url,
|
|
726
738
|
});
|
|
727
|
-
|
|
728
|
-
if (approvalMode === "fail") {
|
|
739
|
+
if (mode === "throw") {
|
|
729
740
|
throw new ZapierApprovalError("This request requires approval.", {
|
|
730
741
|
approvalId: approval.approval_id,
|
|
731
742
|
approvalUrl: approval.approval_url,
|
|
@@ -733,7 +744,7 @@ class ZapierApiClient {
|
|
|
733
744
|
status: "pending",
|
|
734
745
|
});
|
|
735
746
|
}
|
|
736
|
-
//
|
|
747
|
+
// mode === "poll" — open browser and poll
|
|
737
748
|
await openApproval(approval.approval_url);
|
|
738
749
|
const timeoutMs = this.options.approvalTimeoutMs ?? DEFAULT_APPROVAL_TIMEOUT_MS;
|
|
739
750
|
let rawPollResult;
|
package/dist/api/polling.d.ts
CHANGED
|
@@ -29,6 +29,13 @@ export interface PollOptions<TResult = unknown> {
|
|
|
29
29
|
resultExtractor?: (response: unknown) => TResult;
|
|
30
30
|
/** Initial delay before the first poll attempt (in milliseconds) */
|
|
31
31
|
initialDelay?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Abort signal observed by the initial delay, the inter-poll sleep,
|
|
34
|
+
* and (when forwarded into `fetchPoll`) the in-flight HTTP request.
|
|
35
|
+
* On abort, this function throws `AbortError` rather than continuing
|
|
36
|
+
* to poll or treating it as a transient failure.
|
|
37
|
+
*/
|
|
38
|
+
signal?: AbortSignal;
|
|
32
39
|
}
|
|
33
40
|
declare const enum PollStatus {
|
|
34
41
|
Success = "success",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/api/polling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/api/polling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiCH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,OAAO;IAC5C,8CAA8C;IAC9C,SAAS,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAC3C,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAWD,mBAAW,UAAU;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,OAAO,GAAG,OAAO,IAAI;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAgEF;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAG,OAAO,EACvD,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CA8GlB"}
|
package/dist/api/polling.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { ZapierTimeoutError, ZapierApiError, ZapierValidationError, } from "../types/errors";
|
|
8
8
|
import { sleep, calculateErrorBackoffMs, MAX_CONSECUTIVE_ERRORS, } from "../utils/retry-utils";
|
|
9
|
+
import { isAbortError } from "../utils/abort-utils";
|
|
9
10
|
// Constants
|
|
10
11
|
const DEFAULT_TIMEOUT_MS = 180000;
|
|
11
12
|
const DEFAULT_SUCCESS_STATUS = 200;
|
|
@@ -33,6 +34,14 @@ export function getPollingInterval(elapsedMs) {
|
|
|
33
34
|
const stage = POLLING_STAGES.find(([threshold]) => elapsedMs < threshold);
|
|
34
35
|
return stage ? stage[1] : DEFAULT_MAX_POLLING_INTERVAL_MS;
|
|
35
36
|
}
|
|
37
|
+
function makeAbortError() {
|
|
38
|
+
if (typeof DOMException !== "undefined") {
|
|
39
|
+
return new DOMException("Polling was aborted", "AbortError");
|
|
40
|
+
}
|
|
41
|
+
const err = new Error("Polling was aborted");
|
|
42
|
+
err.name = "AbortError";
|
|
43
|
+
return err;
|
|
44
|
+
}
|
|
36
45
|
const processResponse = async (response, successStatus, pendingStatus, isPending, resultExtractor, errorCount) => {
|
|
37
46
|
// Handle other error responses
|
|
38
47
|
if (!response.ok) {
|
|
@@ -87,7 +96,7 @@ const processResponse = async (response, successStatus, pendingStatus, isPending
|
|
|
87
96
|
* @throws {ZapierApiError} When the API returns consecutive errors
|
|
88
97
|
*/
|
|
89
98
|
export async function pollUntilComplete(options) {
|
|
90
|
-
const { fetchPoll, timeoutMs = DEFAULT_TIMEOUT_MS, initialDelay = DEFAULT_INITIAL_DELAY_MS, successStatus = DEFAULT_SUCCESS_STATUS, pendingStatus = DEFAULT_PENDING_STATUS, isPending, resultExtractor = (response) => response, } = options;
|
|
99
|
+
const { fetchPoll, timeoutMs = DEFAULT_TIMEOUT_MS, initialDelay = DEFAULT_INITIAL_DELAY_MS, successStatus = DEFAULT_SUCCESS_STATUS, pendingStatus = DEFAULT_PENDING_STATUS, isPending, resultExtractor = (response) => response, signal, } = options;
|
|
91
100
|
// Validate input parameters
|
|
92
101
|
if (timeoutMs <= 0) {
|
|
93
102
|
throw new ZapierValidationError("Timeout must be greater than 0", {
|
|
@@ -99,14 +108,23 @@ export async function pollUntilComplete(options) {
|
|
|
99
108
|
details: { initialDelay },
|
|
100
109
|
});
|
|
101
110
|
}
|
|
111
|
+
if (signal?.aborted)
|
|
112
|
+
throw makeAbortError();
|
|
102
113
|
const startTime = Date.now();
|
|
103
114
|
let attempts = 0;
|
|
104
115
|
let errorCount = 0;
|
|
105
|
-
// Apply initial delay if specified
|
|
116
|
+
// Apply initial delay if specified. `sleep(..., signal)` resolves
|
|
117
|
+
// early on abort; the explicit re-check below converts that into a
|
|
118
|
+
// proper AbortError throw so the loop doesn't issue a request after
|
|
119
|
+
// the caller cancelled.
|
|
106
120
|
if (initialDelay > 0) {
|
|
107
|
-
await sleep(initialDelay);
|
|
121
|
+
await sleep(initialDelay, signal);
|
|
122
|
+
if (signal?.aborted)
|
|
123
|
+
throw makeAbortError();
|
|
108
124
|
}
|
|
109
125
|
while (true) {
|
|
126
|
+
if (signal?.aborted)
|
|
127
|
+
throw makeAbortError();
|
|
110
128
|
const elapsedTime = Date.now() - startTime;
|
|
111
129
|
// Check if we've exceeded the timeout
|
|
112
130
|
if (elapsedTime >= timeoutMs) {
|
|
@@ -118,7 +136,9 @@ export async function pollUntilComplete(options) {
|
|
|
118
136
|
if (attempts > 0) {
|
|
119
137
|
const interval = getPollingInterval(elapsedTime);
|
|
120
138
|
const waitTime = calculateErrorBackoffMs(interval, errorCount);
|
|
121
|
-
await sleep(waitTime);
|
|
139
|
+
await sleep(waitTime, signal);
|
|
140
|
+
if (signal?.aborted)
|
|
141
|
+
throw makeAbortError();
|
|
122
142
|
}
|
|
123
143
|
attempts++;
|
|
124
144
|
// Perform the poll request
|
|
@@ -135,6 +155,11 @@ export async function pollUntilComplete(options) {
|
|
|
135
155
|
}
|
|
136
156
|
}
|
|
137
157
|
catch (error) {
|
|
158
|
+
// Abort is intent, not failure. Surface immediately rather than
|
|
159
|
+
// counting it toward MAX_CONSECUTIVE_ERRORS and wrapping in
|
|
160
|
+
// ZapierApiError.
|
|
161
|
+
if (isAbortError(error))
|
|
162
|
+
throw error;
|
|
138
163
|
errorCount++;
|
|
139
164
|
if (errorCount >= MAX_CONSECUTIVE_ERRORS) {
|
|
140
165
|
throw new ZapierApiError(`Failed to poll after ${errorCount} consecutive errors: ${error instanceof Error ? error.message : String(error)}`, {
|
package/dist/api/types.d.ts
CHANGED
|
@@ -40,16 +40,17 @@ export interface ApiClientOptions {
|
|
|
40
40
|
* Default is 60000 (60 seconds).
|
|
41
41
|
*/
|
|
42
42
|
maxNetworkRetryDelayMs?: number;
|
|
43
|
-
/**
|
|
44
|
-
* Whether this session is interactive (user can visit approval URLs).
|
|
45
|
-
*/
|
|
46
|
-
isInteractive?: boolean;
|
|
47
43
|
/**
|
|
48
44
|
* Controls how the approval flow is handled.
|
|
49
|
-
* - "
|
|
50
|
-
* -
|
|
45
|
+
* - "disabled": (default when env var is unset) Throw a ZapierApprovalError
|
|
46
|
+
* on approval-required responses without creating an approval.
|
|
47
|
+
* - "poll": Create the approval, open the URL in a browser, poll until
|
|
48
|
+
* resolved, and retry the original request on success.
|
|
49
|
+
* - "throw": Create the approval and throw a ZapierApprovalError immediately
|
|
50
|
+
* with the approval URL so the caller can surface it.
|
|
51
|
+
* Defaults to the ZAPIER_APPROVAL_MODE env var, then "disabled".
|
|
51
52
|
*/
|
|
52
|
-
approvalMode?: "poll" | "
|
|
53
|
+
approvalMode?: "disabled" | "poll" | "throw";
|
|
53
54
|
/**
|
|
54
55
|
* Timeout in ms for approval polling. Default: 600000 (10 minutes).
|
|
55
56
|
*/
|
|
@@ -123,6 +124,13 @@ export interface RequestOptions {
|
|
|
123
124
|
* provide this so the SDK can create an approval with the correct context.
|
|
124
125
|
*/
|
|
125
126
|
approvalContext?: () => RequestContext;
|
|
127
|
+
/**
|
|
128
|
+
* Abort signal forwarded to the underlying `fetch`. Aborting cancels
|
|
129
|
+
* the in-flight request and any rate-limit retry sleep before the
|
|
130
|
+
* next attempt; the resulting `AbortError` is the caller's
|
|
131
|
+
* responsibility to handle.
|
|
132
|
+
*/
|
|
133
|
+
signal?: AbortSignal;
|
|
126
134
|
}
|
|
127
135
|
export interface PollOptions extends RequestOptions {
|
|
128
136
|
initialDelay?: number;
|
package/dist/api/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EACV,wBAAwB,EACxB,iCAAiC,EAClC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,6BAA6B,EAC7B,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -30,20 +30,19 @@ export declare const DEFAULT_ACTION_TIMEOUT_MS = 180000;
|
|
|
30
30
|
*/
|
|
31
31
|
export declare const ZAPIER_MAX_NETWORK_RETRIES: number;
|
|
32
32
|
export declare const ZAPIER_MAX_NETWORK_RETRY_DELAY_MS: number;
|
|
33
|
-
/**
|
|
34
|
-
* Whether this session is interactive (user can visit approval URLs).
|
|
35
|
-
*
|
|
36
|
-
* Read lazily so tests can set the env var after module import.
|
|
37
|
-
*/
|
|
38
|
-
export declare function getZapierIsInteractive(): boolean;
|
|
39
33
|
/**
|
|
40
34
|
* Approval flow behavior from environment variable.
|
|
41
|
-
* - "
|
|
42
|
-
*
|
|
35
|
+
* - "disabled": (default when env var is unset) Throw a ZapierApprovalError on
|
|
36
|
+
* approval-required responses without creating an approval. Callers must
|
|
37
|
+
* explicitly opt in to approvals via "poll" or "throw".
|
|
38
|
+
* - "poll": Create the approval, open the URL in a browser, poll until
|
|
39
|
+
* resolved, and retry the original request on success.
|
|
40
|
+
* - "throw": Create the approval and throw a ZapierApprovalError immediately
|
|
41
|
+
* with the approval URL so the caller can surface it.
|
|
43
42
|
*
|
|
44
43
|
* Read lazily so tests can set the env var after module import.
|
|
45
44
|
*/
|
|
46
|
-
export declare function getZapierApprovalMode(): "poll" | "
|
|
45
|
+
export declare function getZapierApprovalMode(): "disabled" | "poll" | "throw" | undefined;
|
|
47
46
|
/**
|
|
48
47
|
* Default timeout for approval polling (10 minutes)
|
|
49
48
|
*/
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,QACsC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAejD;;GAEG;AACH,eAAO,MAAM,0BAA0B,QACY,CAAC;AACpD,eAAO,MAAM,iCAAiC,QACiB,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,QACsC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAejD;;GAEG;AACH,eAAO,MAAM,0BAA0B,QACY,CAAC;AACpD,eAAO,MAAM,iCAAiC,QACiB,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IACjC,UAAU,GACV,MAAM,GACN,OAAO,GACP,SAAS,CAKZ;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -43,24 +43,21 @@ function parseIntEnvVar(name) {
|
|
|
43
43
|
*/
|
|
44
44
|
export const ZAPIER_MAX_NETWORK_RETRIES = parseIntEnvVar("ZAPIER_MAX_NETWORK_RETRIES") ?? 3;
|
|
45
45
|
export const ZAPIER_MAX_NETWORK_RETRY_DELAY_MS = parseIntEnvVar("ZAPIER_MAX_NETWORK_RETRY_DELAY_MS") ?? 60000;
|
|
46
|
-
/**
|
|
47
|
-
* Whether this session is interactive (user can visit approval URLs).
|
|
48
|
-
*
|
|
49
|
-
* Read lazily so tests can set the env var after module import.
|
|
50
|
-
*/
|
|
51
|
-
export function getZapierIsInteractive() {
|
|
52
|
-
return globalThis.process?.env?.ZAPIER_IS_INTERACTIVE === "true";
|
|
53
|
-
}
|
|
54
46
|
/**
|
|
55
47
|
* Approval flow behavior from environment variable.
|
|
56
|
-
* - "
|
|
57
|
-
*
|
|
48
|
+
* - "disabled": (default when env var is unset) Throw a ZapierApprovalError on
|
|
49
|
+
* approval-required responses without creating an approval. Callers must
|
|
50
|
+
* explicitly opt in to approvals via "poll" or "throw".
|
|
51
|
+
* - "poll": Create the approval, open the URL in a browser, poll until
|
|
52
|
+
* resolved, and retry the original request on success.
|
|
53
|
+
* - "throw": Create the approval and throw a ZapierApprovalError immediately
|
|
54
|
+
* with the approval URL so the caller can surface it.
|
|
58
55
|
*
|
|
59
56
|
* Read lazily so tests can set the env var after module import.
|
|
60
57
|
*/
|
|
61
58
|
export function getZapierApprovalMode() {
|
|
62
59
|
const value = globalThis.process?.env?.ZAPIER_APPROVAL_MODE;
|
|
63
|
-
if (value === "poll" || value === "
|
|
60
|
+
if (value === "disabled" || value === "poll" || value === "throw")
|
|
64
61
|
return value;
|
|
65
62
|
return undefined;
|
|
66
63
|
}
|