@zapier/zapier-sdk 0.50.0 → 0.52.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 +16 -0
- package/README.md +2 -1
- package/dist/api/auth.d.ts +1 -6
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +34 -27
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +87 -9
- package/dist/api/concurrency.d.ts +28 -0
- package/dist/api/concurrency.d.ts.map +1 -0
- package/dist/api/concurrency.js +90 -0
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/schemas.d.ts +3 -3
- package/dist/api/types.d.ts +6 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/auth.d.ts +13 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +95 -11
- package/dist/constants.d.ts +16 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +29 -0
- package/dist/experimental.cjs +357 -34
- package/dist/experimental.d.mts +28 -28
- package/dist/experimental.d.ts +26 -26
- package/dist/experimental.mjs +353 -35
- package/dist/{index-BQ2ii0Bs.d.mts → index-DcdtPei-.d.mts} +132 -2
- package/dist/{index-BQ2ii0Bs.d.ts → index-DcdtPei-.d.ts} +132 -2
- package/dist/index.cjs +357 -34
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.mjs +353 -35
- package/dist/plugins/api/index.d.ts.map +1 -1
- package/dist/plugins/api/index.js +3 -2
- package/dist/plugins/apps/index.d.ts +2 -2
- package/dist/plugins/deprecated/inputFields.d.ts +18 -18
- package/dist/plugins/getAction/index.d.ts +6 -6
- package/dist/plugins/getAction/schemas.d.ts +4 -4
- package/dist/plugins/getActionInputFieldsSchema/index.d.ts +5 -5
- package/dist/plugins/getActionInputFieldsSchema/schemas.d.ts +4 -4
- package/dist/plugins/listActionInputFieldChoices/index.d.ts +5 -5
- package/dist/plugins/listActionInputFieldChoices/schemas.d.ts +4 -4
- package/dist/plugins/listActionInputFields/index.d.ts +5 -5
- package/dist/plugins/listActionInputFields/schemas.d.ts +4 -4
- package/dist/plugins/listActions/index.d.ts +3 -3
- package/dist/plugins/listActions/schemas.d.ts +4 -4
- package/dist/plugins/runAction/index.d.ts +5 -5
- package/dist/plugins/runAction/schemas.d.ts +4 -4
- package/dist/plugins/triggers/getTriggerInputFieldsSchema/index.d.ts +2 -2
- package/dist/plugins/triggers/listTriggerInputFieldChoices/index.d.ts +2 -2
- package/dist/plugins/triggers/listTriggerInputFields/index.d.ts +2 -2
- package/dist/schemas/Action.d.ts +1 -1
- package/dist/sdk.d.ts +52 -52
- package/dist/types/properties.d.ts +1 -1
- package/dist/types/sdk.d.ts +1 -0
- package/dist/types/sdk.d.ts.map +1 -1
- package/dist/types/sdk.js +25 -0
- package/dist/utils/telemetry.d.ts +11 -0
- package/dist/utils/telemetry.d.ts.map +1 -0
- package/dist/utils/telemetry.js +19 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @zapier/zapier-sdk
|
|
2
2
|
|
|
3
|
+
## 0.52.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7984fae: Add a configurable concurrency limit so the SDK queues requests beyond `maxConcurrentRequests` (FIFO) instead of firing them all at once. Default is 200. Configurable via the `createZapierSdk({ maxConcurrentRequests })` option or the `ZAPIER_MAX_CONCURRENT_REQUESTS` env var (the option wins). Pass `Infinity` to disable. Slots are held across 429 retries (so server backoff isn't undermined by extra parallelism) but released as soon as response headers arrive — streaming responses (SSE, long-running chunked reads) do not pin a permit for the lifetime of the body. Queued acquires respect `AbortSignal`. Queued requests emit `api:concurrency_wait_start` / `api:concurrency_wait_end` events for diagnostics.
|
|
8
|
+
|
|
9
|
+
## 0.51.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- ef1c97d: Default SDK auth to client credentials
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- f5a734d: Updated the experimental Triggers notice in all three package READMEs to clarify that the feature is in closed beta, with a link to contact us for access.
|
|
18
|
+
|
|
3
19
|
## 0.50.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -337,6 +337,7 @@ The `createZapierSdk(...)` factory function is the main entry point for the SDK.
|
|
|
337
337
|
| `trackingBaseUrl` | `string` | ❌ | — | — | Base URL for Zapier tracking endpoints. |
|
|
338
338
|
| `maxNetworkRetries` | `number` | ❌ | — | — | Max retries for rate-limited requests (default: 3). |
|
|
339
339
|
| `maxNetworkRetryDelayMs` | `number` | ❌ | — | — | Max delay in ms to wait for retry (default: 60000). |
|
|
340
|
+
| `maxConcurrentRequests` | `number, literal` | ❌ | — | — | Max concurrent in-flight HTTP requests (default: 200, max: 10000). |
|
|
340
341
|
| `approvalTimeoutMs` | `number` | ❌ | — | — | Timeout in ms for approval polling. Default: 600000 (10 min). |
|
|
341
342
|
| `maxApprovalRetries` | `number` | ❌ | — | — | Maximum number of sequential approval rounds per request (one per gating policy) before giving up. Default: 2. |
|
|
342
343
|
| `approvalMode` | `string` | ❌ | — | `disabled`, `poll`, `throw` | Approval flow behavior. "disabled" (default) throws a ZapierApprovalError on approval-required responses without creating an approval. "poll" creates the approval, opens it in a browser, polls until resolved, and retries the original request. "throw" creates the approval and throws a ZapierApprovalError with the approval URL so the caller can surface it. Defaults to the ZAPIER_APPROVAL_MODE env var, then "disabled". |
|
|
@@ -1792,7 +1793,7 @@ const result = await zapier.updateTableRecords({
|
|
|
1792
1793
|
|
|
1793
1794
|
### Triggers (Experimental)
|
|
1794
1795
|
|
|
1795
|
-
>
|
|
1796
|
+
> ⚠️ **Closed beta.** Import from `"@zapier/zapier-sdk/experimental"` to use these methods. Methods and behavior may change. [Contact us](https://npsup.zapier.app/contact-us?product=Zapier%20SDK) to request access.
|
|
1796
1797
|
|
|
1797
1798
|
#### `ackTriggerInboxMessages` 🧪 _experimental_
|
|
1798
1799
|
|
package/dist/api/auth.d.ts
CHANGED
|
@@ -6,12 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function isJwt(token: string): boolean;
|
|
8
8
|
export declare function getAuthorizationHeader(token: string): string;
|
|
9
|
-
/**
|
|
10
|
-
* Extract user IDs from JWT token
|
|
11
|
-
* Decodes the JWT payload and extracts customuser_id and account_id
|
|
12
|
-
* Handles nested JWTs for service tokens
|
|
13
|
-
* Returns null values on any failure (silent-by-design)
|
|
14
|
-
*/
|
|
9
|
+
/** Never throws — an auth decode error must not take down request telemetry. */
|
|
15
10
|
export declare function extractUserIdsFromJwt(token: string): {
|
|
16
11
|
customuser_id: number | null;
|
|
17
12
|
account_id: number | null;
|
package/dist/api/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW5C;AAaD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW5C;AAaD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;AA8BD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IACpD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAmBA"}
|
package/dist/api/auth.js
CHANGED
|
@@ -33,38 +33,45 @@ export function getAuthorizationHeader(token) {
|
|
|
33
33
|
// Default to Bearer for other token types
|
|
34
34
|
return `Bearer ${token}`;
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* Decodes the JWT payload and extracts customuser_id and account_id
|
|
39
|
-
* Handles nested JWTs for service tokens
|
|
40
|
-
* Returns null values on any failure (silent-by-design)
|
|
41
|
-
*/
|
|
42
|
-
export function extractUserIdsFromJwt(token) {
|
|
36
|
+
// Handles nested service-JWT shape (`sub_type: "service"` with `njwt`). Lenient — falls back to outer payload on nested parse failure.
|
|
37
|
+
function readJwtPayload(token) {
|
|
43
38
|
const parts = parseJwt(token);
|
|
44
|
-
if (!parts)
|
|
45
|
-
return
|
|
46
|
-
|
|
39
|
+
if (!parts)
|
|
40
|
+
return null;
|
|
41
|
+
let payload;
|
|
47
42
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
43
|
+
payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf-8"));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
if (payload["sub_type"] === "service" &&
|
|
49
|
+
typeof payload["njwt"] === "string") {
|
|
50
|
+
const nestedParts = parseJwt(payload["njwt"]);
|
|
51
|
+
if (nestedParts) {
|
|
52
|
+
try {
|
|
53
|
+
return JSON.parse(Buffer.from(nestedParts[1], "base64url").toString("utf-8"));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Fall through to outer payload.
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
|
-
const accountId = actualPayload["zap:acc"] != null
|
|
57
|
-
? parseInt(String(actualPayload["zap:acc"]), 10)
|
|
58
|
-
: null;
|
|
59
|
-
const customUserId = actualPayload.sub_type === "customuser" && actualPayload.sub != null
|
|
60
|
-
? parseInt(String(actualPayload.sub), 10)
|
|
61
|
-
: null;
|
|
62
|
-
return {
|
|
63
|
-
customuser_id: customUserId !== null && !isNaN(customUserId) ? customUserId : null,
|
|
64
|
-
account_id: accountId !== null && !isNaN(accountId) ? accountId : null,
|
|
65
|
-
};
|
|
66
59
|
}
|
|
67
|
-
|
|
60
|
+
return payload;
|
|
61
|
+
}
|
|
62
|
+
/** Never throws — an auth decode error must not take down request telemetry. */
|
|
63
|
+
export function extractUserIdsFromJwt(token) {
|
|
64
|
+
const payload = readJwtPayload(token);
|
|
65
|
+
if (!payload) {
|
|
68
66
|
return { customuser_id: null, account_id: null };
|
|
69
67
|
}
|
|
68
|
+
const accRaw = payload["zap:acc"];
|
|
69
|
+
const accountId = accRaw != null ? parseInt(String(accRaw), 10) : null;
|
|
70
|
+
const customUserId = payload["sub_type"] === "customuser" && payload["sub"] != null
|
|
71
|
+
? parseInt(String(payload["sub"]), 10)
|
|
72
|
+
: null;
|
|
73
|
+
return {
|
|
74
|
+
customuser_id: customUserId !== null && !isNaN(customUserId) ? customUserId : null,
|
|
75
|
+
account_id: accountId !== null && !isNaN(accountId) ? accountId : null,
|
|
76
|
+
};
|
|
70
77
|
}
|
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;AA+pCjB,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,SAW3D,CAAC"}
|
package/dist/api/client.js
CHANGED
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* HTTP method handlers, response processing, and client factory functions.
|
|
6
6
|
*/
|
|
7
7
|
import { getAuthorizationHeader } from "./auth";
|
|
8
|
+
import { createSemaphore } from "./concurrency";
|
|
8
9
|
import { createDebugLogger, createDebugFetch } from "./debug";
|
|
9
10
|
import { pollUntilComplete } from "./polling";
|
|
10
11
|
import { resolveAuthToken, invalidateCredentialsToken, isCliLoginAvailable, } from "../auth";
|
|
11
12
|
import { getZapierBaseUrl, isLocalhostBaseUrl } from "../utils/url-utils";
|
|
12
13
|
import { sleep, calculateExponentialBackoffMs } from "../utils/retry-utils";
|
|
13
14
|
import { isPlainObject } from "../utils/type-guard-utils";
|
|
14
|
-
import { ZapierApiError, ZapierApprovalError, ZapierAuthenticationError, ZapierTimeoutError, ZapierValidationError, ZapierResourceNotFoundError, ZapierRateLimitError, } from "../types/errors";
|
|
15
|
-
import { ZAPIER_MAX_NETWORK_RETRIES, ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, getZapierApprovalMode, getZapierSdkService, DEFAULT_APPROVAL_TIMEOUT_MS, DEFAULT_MAX_APPROVAL_RETRIES, } from "../constants";
|
|
15
|
+
import { ZapierApiError, ZapierApprovalError, ZapierAuthenticationError, ZapierConfigurationError, ZapierTimeoutError, ZapierValidationError, ZapierResourceNotFoundError, ZapierRateLimitError, } from "../types/errors";
|
|
16
|
+
import { MAX_CONCURRENCY_LIMIT, ZAPIER_MAX_CONCURRENT_REQUESTS, ZAPIER_MAX_NETWORK_RETRIES, ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, getZapierApprovalMode, getZapierSdkService, DEFAULT_APPROVAL_TIMEOUT_MS, DEFAULT_MAX_APPROVAL_RETRIES, } from "../constants";
|
|
16
17
|
import { SDK_VERSION } from "../sdk-version";
|
|
17
18
|
import { openApproval } from "../utils/open-approval";
|
|
18
19
|
import { z } from "zod";
|
|
@@ -164,21 +165,78 @@ class ZapierApiClient {
|
|
|
164
165
|
method: init?.method ?? "GET",
|
|
165
166
|
rateLimit: rateLimitInfo,
|
|
166
167
|
});
|
|
167
|
-
//
|
|
168
|
-
//
|
|
168
|
+
// Pass the caller's signal into sleep so an abort during the
|
|
169
|
+
// backoff stops the wait — the next fetch in the loop then
|
|
170
|
+
// surfaces the abort, and `withSemaphore`'s finally releases the
|
|
171
|
+
// permit. Without this, an aborted request keeps holding its
|
|
172
|
+
// slot for the full Retry-After interval and blocks every queued
|
|
173
|
+
// waiter behind it.
|
|
169
174
|
await sleep(delayMs, init?.signal ?? undefined);
|
|
170
175
|
}
|
|
171
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Wrap an outbound HTTP call with the concurrency semaphore. Used by both
|
|
179
|
+
* `rawFetch` (path-based) and the approval-poll path (absolute URL); each
|
|
180
|
+
* caller acquires per-attempt, so 429 retry sleep is held but the gap
|
|
181
|
+
* between approval polls and the human-approval wait are not.
|
|
182
|
+
*
|
|
183
|
+
* The release is registered in a finally that wraps the entire post-
|
|
184
|
+
* acquire flow — including the `wait_end` event emission — so a throwing
|
|
185
|
+
* `onEvent` handler can never leak a permit.
|
|
186
|
+
*
|
|
187
|
+
* Slot lifetime is intentionally tied to "fetch resolves" (headers
|
|
188
|
+
* received), NOT to "response body fully consumed". WHATWG `fetch()`
|
|
189
|
+
* resolves once headers are in; the body is still streaming. We rely on
|
|
190
|
+
* that boundary so streaming responses (SSE, long-running chunked reads)
|
|
191
|
+
* don't pin a permit for the lifetime of the stream — a single SSE
|
|
192
|
+
* consumer would otherwise hold one of N slots for as long as the
|
|
193
|
+
* connection stays open. Do not move the release into a path that awaits
|
|
194
|
+
* body consumption (e.g. `parseResult` / `response.text()`); doing so
|
|
195
|
+
* would silently break streaming consumers without failing any of the
|
|
196
|
+
* short-request tests.
|
|
197
|
+
*/
|
|
198
|
+
this.withSemaphore = async (context, fn) => {
|
|
199
|
+
const fastRelease = this.semaphore.tryAcquire();
|
|
200
|
+
let waitStart = null;
|
|
201
|
+
let release = fastRelease;
|
|
202
|
+
if (release === null) {
|
|
203
|
+
waitStart = Date.now();
|
|
204
|
+
this.emitEvent("api:concurrency_wait_start", {
|
|
205
|
+
url: context.url,
|
|
206
|
+
method: context.method,
|
|
207
|
+
});
|
|
208
|
+
release = await this.semaphore.acquire(context.signal ?? undefined);
|
|
209
|
+
}
|
|
210
|
+
const acquiredRelease = release;
|
|
211
|
+
try {
|
|
212
|
+
if (waitStart !== null) {
|
|
213
|
+
this.emitEvent("api:concurrency_wait_end", {
|
|
214
|
+
url: context.url,
|
|
215
|
+
method: context.method,
|
|
216
|
+
waitedMs: Date.now() - waitStart,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return await fn();
|
|
220
|
+
}
|
|
221
|
+
finally {
|
|
222
|
+
acquiredRelease();
|
|
223
|
+
}
|
|
224
|
+
};
|
|
172
225
|
/**
|
|
173
226
|
* Perform a request with auth, header merging, and rate-limit (429) retries.
|
|
174
227
|
* Does NOT handle 403 approval_required — that's routed by `fetch`.
|
|
228
|
+
*
|
|
229
|
+
* Concurrency: a semaphore slot is held across the entire call, including
|
|
230
|
+
* the 429 retry sleep inside `rawFetchUrl`. That keeps backpressure
|
|
231
|
+
* coherent — when the server is rate-limiting us, we don't dump more
|
|
232
|
+
* parallelism into the queue.
|
|
175
233
|
*/
|
|
176
234
|
this.rawFetch = async (path, init) => {
|
|
177
235
|
if (!path.startsWith("/")) {
|
|
178
236
|
throw new ZapierValidationError(`fetch expects a path starting with '/', got: ${path}`);
|
|
179
237
|
}
|
|
180
238
|
const { url, pathConfig } = this.buildUrl(path, init?.searchParams);
|
|
181
|
-
return this.rawFetchUrl(url, init, pathConfig);
|
|
239
|
+
return this.withSemaphore({ url, method: init?.method ?? "GET", signal: init?.signal }, () => this.rawFetchUrl(url, init, pathConfig));
|
|
182
240
|
};
|
|
183
241
|
/**
|
|
184
242
|
* Approval-aware HTTP fetch.
|
|
@@ -311,6 +369,22 @@ class ZapierApiClient {
|
|
|
311
369
|
options.maxNetworkRetries ?? ZAPIER_MAX_NETWORK_RETRIES;
|
|
312
370
|
this.maxNetworkRetryDelayMs =
|
|
313
371
|
options.maxNetworkRetryDelayMs ?? ZAPIER_MAX_NETWORK_RETRY_DELAY_MS;
|
|
372
|
+
// NaN coerces to the default rather than throwing so a CLI flag with a
|
|
373
|
+
// garbage value (parseInt produces NaN) falls back instead of crashing
|
|
374
|
+
// SDK construction. Other invalid values (0, negatives, non-integers,
|
|
375
|
+
// over-cap) still throw so a misconfigured programmatic caller gets a
|
|
376
|
+
// clear error. Peer numeric options like maxNetworkRetries don't coerce
|
|
377
|
+
// NaN — they let it flow into comparisons that misbehave silently. The
|
|
378
|
+
// asymmetry is deliberate.
|
|
379
|
+
const requested = options.maxConcurrentRequests;
|
|
380
|
+
const limit = requested === undefined || Number.isNaN(requested)
|
|
381
|
+
? ZAPIER_MAX_CONCURRENT_REQUESTS
|
|
382
|
+
: requested;
|
|
383
|
+
if (limit !== Infinity &&
|
|
384
|
+
(!Number.isInteger(limit) || limit < 1 || limit > MAX_CONCURRENCY_LIMIT)) {
|
|
385
|
+
throw new ZapierConfigurationError(`Invalid maxConcurrentRequests: ${limit} (expected positive integer 1-${MAX_CONCURRENCY_LIMIT} or Infinity)`, { configType: "maxConcurrentRequests" });
|
|
386
|
+
}
|
|
387
|
+
this.semaphore = createSemaphore(limit);
|
|
314
388
|
}
|
|
315
389
|
// Emit an event if onEvent handler is configured
|
|
316
390
|
emitEvent(type, payload) {
|
|
@@ -625,8 +699,9 @@ class ZapierApiClient {
|
|
|
625
699
|
}
|
|
626
700
|
// Check if we have an auth token available
|
|
627
701
|
const wasMissingAuthToken = options.authRequired &&
|
|
628
|
-
(await this.getAuthToken({
|
|
629
|
-
|
|
702
|
+
(await this.getAuthToken({
|
|
703
|
+
requiredScopes: options.requiredScopes,
|
|
704
|
+
})) == null;
|
|
630
705
|
const response = await this.fetch(path, {
|
|
631
706
|
...options,
|
|
632
707
|
method,
|
|
@@ -753,10 +828,13 @@ class ZapierApiClient {
|
|
|
753
828
|
// poll_url is an absolute URL supplied by the server, so we use
|
|
754
829
|
// rawFetchUrl directly (skipping path resolution) but still share
|
|
755
830
|
// auth + interactive-header + 429-retry with the rest of the SDK.
|
|
756
|
-
|
|
831
|
+
// Each individual poll request goes through the concurrency
|
|
832
|
+
// semaphore — but we deliberately do not hold a slot across the
|
|
833
|
+
// sleep between polls or across the human-approval wait.
|
|
834
|
+
fetchPoll: () => this.withSemaphore({ url: approval.poll_url, method: "GET" }, () => this.rawFetchUrl(approval.poll_url, {
|
|
757
835
|
method: "GET",
|
|
758
836
|
headers: { Accept: "application/json" },
|
|
759
|
-
}),
|
|
837
|
+
})),
|
|
760
838
|
timeoutMs,
|
|
761
839
|
isPending: (body) => {
|
|
762
840
|
const parsed = PollApprovalResponseSchema.safeParse(body);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FIFO semaphore.
|
|
3
|
+
*
|
|
4
|
+
* Bounds the number of concurrent holders to `maxPermits`. Callers `acquire`
|
|
5
|
+
* a slot and invoke the returned function to release it. Slots are granted
|
|
6
|
+
* to waiters in arrival order. `Infinity` short-circuits to a no-op so
|
|
7
|
+
* callers can disable throttling without branching at every call site.
|
|
8
|
+
*
|
|
9
|
+
* The release function is idempotent: calling it more than once does
|
|
10
|
+
* nothing. This makes try/finally bookkeeping safe even if cleanup paths
|
|
11
|
+
* overlap.
|
|
12
|
+
*
|
|
13
|
+
* AbortSignal: a queued `acquire` that observes its signal aborting will
|
|
14
|
+
* remove itself from the queue and reject. A signal that aborts after
|
|
15
|
+
* `acquire` has resolved is the caller's responsibility — they already hold
|
|
16
|
+
* the slot and must call release.
|
|
17
|
+
*/
|
|
18
|
+
export interface Semaphore {
|
|
19
|
+
acquire(signal?: AbortSignal): Promise<() => void>;
|
|
20
|
+
/**
|
|
21
|
+
* Synchronously claim a slot if one is available. Returns the release
|
|
22
|
+
* function on success and null when the caller would have to queue.
|
|
23
|
+
* Useful for emitting telemetry only when an `acquire` actually waits.
|
|
24
|
+
*/
|
|
25
|
+
tryAcquire(): (() => void) | null;
|
|
26
|
+
}
|
|
27
|
+
export declare function createSemaphore(maxPermits: number): Semaphore;
|
|
28
|
+
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/api/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnD;;;;OAIG;IACH,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC;AAaD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAyE7D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FIFO semaphore.
|
|
3
|
+
*
|
|
4
|
+
* Bounds the number of concurrent holders to `maxPermits`. Callers `acquire`
|
|
5
|
+
* a slot and invoke the returned function to release it. Slots are granted
|
|
6
|
+
* to waiters in arrival order. `Infinity` short-circuits to a no-op so
|
|
7
|
+
* callers can disable throttling without branching at every call site.
|
|
8
|
+
*
|
|
9
|
+
* The release function is idempotent: calling it more than once does
|
|
10
|
+
* nothing. This makes try/finally bookkeeping safe even if cleanup paths
|
|
11
|
+
* overlap.
|
|
12
|
+
*
|
|
13
|
+
* AbortSignal: a queued `acquire` that observes its signal aborting will
|
|
14
|
+
* remove itself from the queue and reject. A signal that aborts after
|
|
15
|
+
* `acquire` has resolved is the caller's responsibility — they already hold
|
|
16
|
+
* the slot and must call release.
|
|
17
|
+
*/
|
|
18
|
+
const NO_OP_RELEASE = () => { };
|
|
19
|
+
const NO_OP_SEMAPHORE = {
|
|
20
|
+
acquire: async () => NO_OP_RELEASE,
|
|
21
|
+
tryAcquire: () => NO_OP_RELEASE,
|
|
22
|
+
};
|
|
23
|
+
export function createSemaphore(maxPermits) {
|
|
24
|
+
if (maxPermits === Infinity) {
|
|
25
|
+
return NO_OP_SEMAPHORE;
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isInteger(maxPermits) || maxPermits <= 0) {
|
|
28
|
+
throw new Error(`maxPermits must be a positive integer or Infinity, got: ${maxPermits}`);
|
|
29
|
+
}
|
|
30
|
+
let permits = maxPermits;
|
|
31
|
+
const waiters = [];
|
|
32
|
+
const release = () => {
|
|
33
|
+
const next = waiters.shift();
|
|
34
|
+
if (next) {
|
|
35
|
+
// Hand the slot directly to the next waiter — permits stays the same.
|
|
36
|
+
next.grant();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
permits++;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const makeReleaseOnce = () => {
|
|
43
|
+
let released = false;
|
|
44
|
+
return () => {
|
|
45
|
+
if (released)
|
|
46
|
+
return;
|
|
47
|
+
released = true;
|
|
48
|
+
release();
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
tryAcquire() {
|
|
53
|
+
if (permits > 0) {
|
|
54
|
+
permits--;
|
|
55
|
+
return makeReleaseOnce();
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
},
|
|
59
|
+
async acquire(signal) {
|
|
60
|
+
if (signal?.aborted) {
|
|
61
|
+
throw signal.reason ?? new DOMException("Aborted", "AbortError");
|
|
62
|
+
}
|
|
63
|
+
if (permits > 0) {
|
|
64
|
+
permits--;
|
|
65
|
+
return makeReleaseOnce();
|
|
66
|
+
}
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
const onAbort = () => {
|
|
69
|
+
const idx = waiters.indexOf(waiter);
|
|
70
|
+
if (idx !== -1) {
|
|
71
|
+
waiters.splice(idx, 1);
|
|
72
|
+
waiter.cancel(signal?.reason ?? new DOMException("Aborted", "AbortError"));
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const waiter = {
|
|
76
|
+
grant: () => {
|
|
77
|
+
signal?.removeEventListener("abort", onAbort);
|
|
78
|
+
resolve(makeReleaseOnce());
|
|
79
|
+
},
|
|
80
|
+
cancel: (reason) => {
|
|
81
|
+
signal?.removeEventListener("abort", onAbort);
|
|
82
|
+
reject(reason);
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
signal?.addEventListener("abort", onAbort);
|
|
86
|
+
waiters.push(waiter);
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
export type { ApiClient, ApiClientOptions, RequestOptions, PollOptions, DebugLogger, Action, Field, Choice, ActionExecutionResult, ActionField, ActionFieldChoice, NeedsRequest, NeedsResponse, Connection, ConnectionsResponse, Implementation, ImplementationsResponse, } from "./types";
|
|
9
9
|
import type { ApiClient } from "./types";
|
|
10
10
|
import type { Credentials } from "../types/credentials";
|
|
11
|
-
export { isJwt, getAuthorizationHeader } from "./auth";
|
|
11
|
+
export { isJwt, getAuthorizationHeader, extractUserIdsFromJwt } from "./auth";
|
|
12
12
|
export { createDebugLogger, createDebugFetch } from "./debug";
|
|
13
13
|
export { pollUntilComplete } from "./polling";
|
|
14
14
|
export { createZapierApi } from "./client";
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAEV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EAEX,MAAM,EACN,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAEV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EAEX,MAAM,EACN,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAM3C,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC,GAAG,SAAS,CAsBZ"}
|
package/dist/api/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { ZAPIER_BASE_URL } from "../constants";
|
|
9
9
|
// Re-export authentication utilities
|
|
10
|
-
export { isJwt, getAuthorizationHeader } from "./auth";
|
|
10
|
+
export { isJwt, getAuthorizationHeader, extractUserIdsFromJwt } from "./auth";
|
|
11
11
|
// Re-export debug utilities
|
|
12
12
|
export { createDebugLogger, createDebugFetch } from "./debug";
|
|
13
13
|
// Re-export polling utilities
|
package/dist/api/schemas.d.ts
CHANGED
|
@@ -66,13 +66,13 @@ export declare const ActionSchema: z.ZodObject<{
|
|
|
66
66
|
id: z.ZodOptional<z.ZodString>;
|
|
67
67
|
type: z.ZodEnum<{
|
|
68
68
|
filter: "filter";
|
|
69
|
+
write: "write";
|
|
69
70
|
read: "read";
|
|
70
71
|
read_bulk: "read_bulk";
|
|
71
72
|
run: "run";
|
|
72
73
|
search: "search";
|
|
73
74
|
search_and_write: "search_and_write";
|
|
74
75
|
search_or_write: "search_or_write";
|
|
75
|
-
write: "write";
|
|
76
76
|
}>;
|
|
77
77
|
key: z.ZodString;
|
|
78
78
|
name: z.ZodString;
|
|
@@ -314,13 +314,13 @@ export declare const ImplementationSchema: z.ZodObject<{
|
|
|
314
314
|
id: z.ZodOptional<z.ZodString>;
|
|
315
315
|
type: z.ZodEnum<{
|
|
316
316
|
filter: "filter";
|
|
317
|
+
write: "write";
|
|
317
318
|
read: "read";
|
|
318
319
|
read_bulk: "read_bulk";
|
|
319
320
|
run: "run";
|
|
320
321
|
search: "search";
|
|
321
322
|
search_and_write: "search_and_write";
|
|
322
323
|
search_or_write: "search_or_write";
|
|
323
|
-
write: "write";
|
|
324
324
|
}>;
|
|
325
325
|
key: z.ZodString;
|
|
326
326
|
name: z.ZodString;
|
|
@@ -356,13 +356,13 @@ export declare const ImplementationsResponseSchema: z.ZodObject<{
|
|
|
356
356
|
id: z.ZodOptional<z.ZodString>;
|
|
357
357
|
type: z.ZodEnum<{
|
|
358
358
|
filter: "filter";
|
|
359
|
+
write: "write";
|
|
359
360
|
read: "read";
|
|
360
361
|
read_bulk: "read_bulk";
|
|
361
362
|
run: "run";
|
|
362
363
|
search: "search";
|
|
363
364
|
search_and_write: "search_and_write";
|
|
364
365
|
search_or_write: "search_or_write";
|
|
365
|
-
write: "write";
|
|
366
366
|
}>;
|
|
367
367
|
key: z.ZodString;
|
|
368
368
|
name: z.ZodString;
|
package/dist/api/types.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export interface ApiClientOptions {
|
|
|
40
40
|
* Default is 60000 (60 seconds).
|
|
41
41
|
*/
|
|
42
42
|
maxNetworkRetryDelayMs?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Maximum number of concurrent in-flight HTTP requests per client.
|
|
45
|
+
* Requests beyond this limit queue in FIFO order until a slot frees.
|
|
46
|
+
* Pass `Infinity` to disable. Default: 200.
|
|
47
|
+
*/
|
|
48
|
+
maxConcurrentRequests?: number;
|
|
43
49
|
/**
|
|
44
50
|
* Controls how the approval flow is handled.
|
|
45
51
|
* - "disabled": (default when env var is unset) Throw a ZapierApprovalError
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @zapier/zapier-sdk-cli package (imported via its `./login` subpath).
|
|
10
10
|
*/
|
|
11
11
|
import type { EventCallback } from "./types/events";
|
|
12
|
-
import type { Credentials } from "./types/credentials";
|
|
12
|
+
import type { Credentials, ClientCredentialsObject } from "./types/credentials";
|
|
13
13
|
import { type ZapierCache } from "./cache";
|
|
14
14
|
export type { ZapierCache, ZapierCacheEntry, ZapierCacheSetOptions, } from "./cache";
|
|
15
15
|
export { createMemoryCache } from "./cache";
|
|
@@ -74,7 +74,18 @@ interface CliLoginOptions {
|
|
|
74
74
|
};
|
|
75
75
|
debug?: boolean;
|
|
76
76
|
}
|
|
77
|
-
type CliLoginModule = typeof import("@zapier/zapier-sdk-cli/login")
|
|
77
|
+
type CliLoginModule = typeof import("@zapier/zapier-sdk-cli/login") & {
|
|
78
|
+
getActiveCredentials?: (options?: {
|
|
79
|
+
baseUrl?: string;
|
|
80
|
+
}) => {
|
|
81
|
+
clientId: string;
|
|
82
|
+
scopes: string[];
|
|
83
|
+
baseUrl?: string;
|
|
84
|
+
} | undefined;
|
|
85
|
+
getStoredClientCredentials?: (options?: {
|
|
86
|
+
baseUrl?: string;
|
|
87
|
+
}) => Promise<ClientCredentialsObject | undefined>;
|
|
88
|
+
};
|
|
78
89
|
/**
|
|
79
90
|
* Inject an already-loaded CLI login module so the SDK skips its dynamic import.
|
|
80
91
|
* This guarantees CLI and SDK share the same module instance in the same process.
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|