@zapier/zapier-sdk 0.42.1 → 0.43.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 +6 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +309 -35
- package/dist/api/types.d.ts +29 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +32 -0
- package/dist/index.cjs +431 -38
- package/dist/index.d.mts +79 -1
- package/dist/index.mjs +427 -39
- package/dist/plugins/api/index.d.ts.map +1 -1
- package/dist/plugins/api/index.js +5 -1
- package/dist/plugins/createClientCredentials/index.d.ts.map +1 -1
- package/dist/plugins/createClientCredentials/index.js +1 -0
- package/dist/plugins/createClientCredentials/schemas.d.ts +1 -0
- package/dist/plugins/createClientCredentials/schemas.d.ts.map +1 -1
- package/dist/plugins/createClientCredentials/schemas.js +6 -0
- package/dist/plugins/fetch/index.d.ts.map +1 -1
- package/dist/plugins/fetch/index.js +15 -1
- package/dist/plugins/runAction/index.d.ts.map +1 -1
- package/dist/plugins/runAction/index.js +12 -1
- package/dist/types/errors.d.ts +37 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +18 -0
- package/dist/types/sdk.d.ts +7 -0
- package/dist/types/sdk.d.ts.map +1 -1
- package/dist/types/sdk.js +20 -0
- package/dist/utils/open-approval.d.ts +2 -0
- package/dist/utils/open-approval.d.ts.map +1 -0
- package/dist/utils/open-approval.js +13 -0
- package/dist/utils/open-url.d.ts +3 -0
- package/dist/utils/open-url.d.ts.map +1 -0
- package/dist/utils/open-url.js +72 -0
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAiB9D,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4GD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CACL,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,sBAAsB,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM,CAAC;gBACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;gBACnB,UAAU,EAAE,MAAM,EAAE,CAAC;gBACrB,UAAU,EAAE,MAAM,CAAC;gBACnB,eAAe,EAAE,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAA;iBAAE,CAAC,CAAC;aAC/D,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAQD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAC9B;IACE,OAAO,EAAE;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CACpE,GAAG,qBAAqB,EAAE,+EAA+E;AAC1G,mBAAmB,CAiKpB,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { z } from "zod";
|
|
|
4
4
|
import { resolveConnectionId } from "../../utils/domain-utils";
|
|
5
5
|
import { combineAbortSignals, createTimeoutAbortSignal, } from "../../utils/abort-utils";
|
|
6
6
|
import { isPlainObject } from "../../utils/type-guard-utils";
|
|
7
|
+
import { buildHttpRequestContext } from "@zapier/policy-context";
|
|
7
8
|
// fetch() doesn't use createFunction/createPaginatedFunction (its signature
|
|
8
9
|
// doesn't fit the single-options-object pattern), so we wire up telemetry
|
|
9
10
|
// context tracking manually.
|
|
@@ -132,18 +133,31 @@ export const fetchPlugin = (sdk) => {
|
|
|
132
133
|
if (maxTime !== undefined) {
|
|
133
134
|
headers["X-Zapier-Sdk-Max-Time"] = String(maxTime);
|
|
134
135
|
}
|
|
136
|
+
const upstreamUrl = new URL(url).toString();
|
|
137
|
+
const method = (fetchInit.method ?? "GET").toUpperCase();
|
|
135
138
|
const abortHandle = buildAbortHandle({
|
|
136
139
|
maxTimeSeconds: maxTime,
|
|
137
140
|
callerSignal: fetchInit.signal,
|
|
138
141
|
});
|
|
139
142
|
try {
|
|
140
143
|
const result = await api.fetch(relayPath, {
|
|
141
|
-
method
|
|
144
|
+
method,
|
|
142
145
|
body: fetchInit.body,
|
|
143
146
|
headers,
|
|
144
147
|
redirect: fetchInit.redirect,
|
|
145
148
|
signal: abortHandle?.signal,
|
|
146
149
|
authRequired: true,
|
|
150
|
+
approvalContext: () => buildHttpRequestContext({
|
|
151
|
+
method,
|
|
152
|
+
url: upstreamUrl,
|
|
153
|
+
headers,
|
|
154
|
+
body: typeof fetchInit.body === "string"
|
|
155
|
+
? fetchInit.body
|
|
156
|
+
: undefined,
|
|
157
|
+
connection_id: resolvedConnectionId
|
|
158
|
+
? String(resolvedConnectionId)
|
|
159
|
+
: undefined,
|
|
160
|
+
}),
|
|
147
161
|
});
|
|
148
162
|
const relayError = result.headers.get("x-relay-error");
|
|
149
163
|
if (relayError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/runAction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,eAAe,EAEf,KAAK,gBAAgB,EAEtB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAQtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/runAction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,eAAe,EAEf,KAAK,gBAAgB,EAEtB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAQtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAS9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,GACA,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QACpD,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;KAC7B,CAAC;IACJ,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,SAAS,EAAE;gBACT,WAAW,EAAE,OAAO,eAAe,CAAC;aACrC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAkGD,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,uBAAuB,GACrB,oBAAoB,GAAG;IACrB,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,CAAC;QACf,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CAC1C,GAAG,qBAAqB,EAAE,uFAAuF;AACpH,uBAAuB,CAyMxB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { resolveConnectionId } from "../../utils/domain-utils";
|
|
|
8
8
|
import { stripPageSuffix } from "../../utils/string-utils";
|
|
9
9
|
import { DEFAULT_ACTION_TIMEOUT_MS } from "../../constants";
|
|
10
10
|
import { setMethodMetadata } from "../../utils/telemetry-context";
|
|
11
|
+
import { buildActionRunContext } from "@zapier/policy-context";
|
|
11
12
|
async function executeAction(actionOptions) {
|
|
12
13
|
const { api, selectedApi, actionId, actionKey, actionType, executionOptions, cursor, connectionId, timeoutMs, } = actionOptions;
|
|
13
14
|
// Step 1: POST to /actions/v1/runs to start execution
|
|
@@ -28,7 +29,17 @@ async function executeAction(actionOptions) {
|
|
|
28
29
|
const runRequest = {
|
|
29
30
|
data: runRequestData,
|
|
30
31
|
};
|
|
31
|
-
const runData = await api.post("/zapier/api/actions/v1/runs", runRequest
|
|
32
|
+
const runData = await api.post("/zapier/api/actions/v1/runs", runRequest, {
|
|
33
|
+
approvalContext: () => buildActionRunContext({
|
|
34
|
+
selected_api: selectedApi,
|
|
35
|
+
action_type: actionType,
|
|
36
|
+
action_key: actionKey,
|
|
37
|
+
connection_id: connectionId != null ? String(connectionId) : undefined,
|
|
38
|
+
// Cast: inputs is Record<string, unknown> at the SDK surface, but
|
|
39
|
+
// buildActionRunContext coerces to JsonValue at runtime via zod.
|
|
40
|
+
inputs: (executionOptions.inputs ?? {}),
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
32
43
|
const runId = runData.data.id;
|
|
33
44
|
// Step 2: Poll GET /actions/v1/runs/{run_id} for results
|
|
34
45
|
return await api.poll(`/zapier/api/actions/v1/runs/${runId}`, {
|
package/dist/types/errors.d.ts
CHANGED
|
@@ -174,6 +174,43 @@ export declare class ZapierRateLimitError extends ZapierError {
|
|
|
174
174
|
retries?: number;
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Terminal status of an approval attempt, exposed on `ZapierApprovalError.approvalStatus`.
|
|
179
|
+
*
|
|
180
|
+
* - `pending`: The approval was created but not yet resolved. Only thrown in
|
|
181
|
+
* `approvalMode: "fail"` — the caller is expected to surface the approval URL
|
|
182
|
+
* to an end user (e.g. an LLM instructing its user to click the link).
|
|
183
|
+
* - `denied`: A human explicitly rejected the approval in the UI.
|
|
184
|
+
* - `policy_denied`: A policy rule blocked the request before (or instead of)
|
|
185
|
+
* creating an approval. Cannot be approved by a human.
|
|
186
|
+
* - `approval_required`: The backend requested approval, but the current
|
|
187
|
+
* session is non-interactive so the SDK cannot open the approval URL. Retry
|
|
188
|
+
* in an interactive session, or use `approvalMode: "fail"` to surface the
|
|
189
|
+
* approval URL to the caller.
|
|
190
|
+
* - `timeout`: Poll mode exceeded `approvalTimeoutMs` without the approval
|
|
191
|
+
* being resolved.
|
|
192
|
+
* - `max_retries_exceeded`: A single request triggered more sequential approval
|
|
193
|
+
* rounds than `maxApprovalRetries` allows (runaway-loop safeguard).
|
|
194
|
+
*/
|
|
195
|
+
export type ApprovalStatus = "denied" | "timeout" | "pending" | "policy_denied" | "approval_required" | "max_retries_exceeded";
|
|
196
|
+
/**
|
|
197
|
+
* Error thrown when a request requires approval and the approval is denied, times out,
|
|
198
|
+
* or the auth type doesn't support the approval flow.
|
|
199
|
+
*/
|
|
200
|
+
export declare class ZapierApprovalError extends ZapierError {
|
|
201
|
+
readonly name = "ZapierApprovalError";
|
|
202
|
+
readonly code: "ZAPIER_APPROVAL_ERROR";
|
|
203
|
+
approvalId?: string;
|
|
204
|
+
approvalStatus?: ApprovalStatus;
|
|
205
|
+
approvalUrl?: string;
|
|
206
|
+
pollUrl?: string;
|
|
207
|
+
constructor(message: string, options?: ErrorOptions & {
|
|
208
|
+
approvalId?: string;
|
|
209
|
+
status?: ApprovalStatus;
|
|
210
|
+
approvalUrl?: string;
|
|
211
|
+
pollUrl?: string;
|
|
212
|
+
});
|
|
213
|
+
}
|
|
177
214
|
/**
|
|
178
215
|
* Error thrown when Relay itself encounters an error (as opposed to the upstream partner API returning an error).
|
|
179
216
|
* Indicated by the presence of the X-Relay-Error response header.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/types/errors.js
CHANGED
|
@@ -150,6 +150,21 @@ export class ZapierRateLimitError extends ZapierError {
|
|
|
150
150
|
this.retries = options.retries ?? 0;
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Error thrown when a request requires approval and the approval is denied, times out,
|
|
155
|
+
* or the auth type doesn't support the approval flow.
|
|
156
|
+
*/
|
|
157
|
+
export class ZapierApprovalError extends ZapierError {
|
|
158
|
+
constructor(message, options = {}) {
|
|
159
|
+
super(message, options);
|
|
160
|
+
this.name = "ZapierApprovalError";
|
|
161
|
+
this.code = "ZAPIER_APPROVAL_ERROR";
|
|
162
|
+
this.approvalId = options.approvalId;
|
|
163
|
+
this.approvalStatus = options.status;
|
|
164
|
+
this.approvalUrl = options.approvalUrl;
|
|
165
|
+
this.pollUrl = options.pollUrl;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
153
168
|
/**
|
|
154
169
|
* Error thrown when Relay itself encounters an error (as opposed to the upstream partner API returning an error).
|
|
155
170
|
* Indicated by the presence of the X-Relay-Error response header.
|
|
@@ -213,6 +228,9 @@ export function formatErrorMessage(error) {
|
|
|
213
228
|
"\n\nBuild errors:\n" +
|
|
214
229
|
error.buildErrors.map((err) => ` • ${err}`).join("\n");
|
|
215
230
|
}
|
|
231
|
+
if (error instanceof ZapierApprovalError && error.approvalUrl) {
|
|
232
|
+
message += `\nApproval URL: ${error.approvalUrl}`;
|
|
233
|
+
}
|
|
216
234
|
if (error instanceof ZapierRateLimitError) {
|
|
217
235
|
const { limit, remaining, retryAfterMs } = error.rateLimit;
|
|
218
236
|
const parts = [];
|
package/dist/types/sdk.d.ts
CHANGED
|
@@ -58,6 +58,13 @@ export declare const BaseSdkOptionsSchema: z.ZodObject<{
|
|
|
58
58
|
trackingBaseUrl: z.ZodOptional<z.ZodString>;
|
|
59
59
|
maxNetworkRetries: z.ZodOptional<z.ZodNumber>;
|
|
60
60
|
maxNetworkRetryDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
isInteractive: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
63
|
+
maxApprovalRetries: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
approvalMode: z.ZodOptional<z.ZodEnum<{
|
|
65
|
+
poll: "poll";
|
|
66
|
+
fail: "fail";
|
|
67
|
+
}>>;
|
|
61
68
|
manifestPath: z.ZodOptional<z.ZodString>;
|
|
62
69
|
manifest: z.ZodOptional<z.ZodCustom<Manifest, Manifest>>;
|
|
63
70
|
onEvent: z.ZodOptional<z.ZodCustom<EventCallback, EventCallback>>;
|
package/dist/types/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/types/sdk.js
CHANGED
|
@@ -36,6 +36,26 @@ export const BaseSdkOptionsSchema = z.object({
|
|
|
36
36
|
.optional()
|
|
37
37
|
.describe("Max delay in ms to wait for retry (default: 60000).")
|
|
38
38
|
.meta({ valueHint: "ms" }),
|
|
39
|
+
isInteractive: z
|
|
40
|
+
.boolean()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Whether this session is interactive (user can visit approval URLs). Defaults to ZAPIER_IS_INTERACTIVE env var.")
|
|
43
|
+
.meta({ internal: true }),
|
|
44
|
+
approvalTimeoutMs: z
|
|
45
|
+
.number()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Timeout in ms for approval polling. Default: 600000 (10 min).")
|
|
48
|
+
.meta({ valueHint: "ms", internal: true }),
|
|
49
|
+
maxApprovalRetries: z
|
|
50
|
+
.number()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Maximum number of sequential approval rounds per request (one per gating policy) before giving up. Default: 2.")
|
|
53
|
+
.meta({ internal: true }),
|
|
54
|
+
approvalMode: z
|
|
55
|
+
.enum(["poll", "fail"])
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('Approval flow behavior. "poll" opens browser and polls (default). "fail" creates the approval and throws immediately with the approval URL.')
|
|
58
|
+
.meta({ internal: true }),
|
|
39
59
|
// Internal
|
|
40
60
|
manifestPath: z
|
|
41
61
|
.string()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-approval.d.ts","sourceRoot":"","sources":["../../src/utils/open-approval.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import openUrl from "./open-url";
|
|
2
|
+
export async function openApproval(url) {
|
|
3
|
+
// Always surface the URL so the user has a clickable fallback if openUrl
|
|
4
|
+
// silently no-ops (headless servers, WSL without a handler, misconfigured
|
|
5
|
+
// default browser, etc.).
|
|
6
|
+
console.error(`Approval required. Opening browser: ${url}`);
|
|
7
|
+
try {
|
|
8
|
+
await openUrl(url);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
// Best-effort — URL already printed to stderr above.
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-url.d.ts","sourceRoot":"","sources":["../../src/utils/open-url.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,OAAO,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAgEhD,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// String-literal `import("node:child_process")` is statically resolved by
|
|
2
|
+
// esbuild and ends up as `import('child_process')` in dist/index.mjs, which
|
|
3
|
+
// then fails when downstream consumers bundle the SDK with platform: "browser".
|
|
4
|
+
// Wrapping the specifier in a template literal makes esbuild (and every other
|
|
5
|
+
// modern bundler) treat the call as a truly dynamic import and leave it alone.
|
|
6
|
+
// At runtime the catch below handles the failure when the host has neither
|
|
7
|
+
// window.open nor node built-ins.
|
|
8
|
+
const nodePrefix = "node:";
|
|
9
|
+
async function loadChildProcess() {
|
|
10
|
+
return import(`${nodePrefix}child_process`);
|
|
11
|
+
}
|
|
12
|
+
async function loadProcess() {
|
|
13
|
+
return import(`${nodePrefix}process`);
|
|
14
|
+
}
|
|
15
|
+
const openUrl = async (url) => {
|
|
16
|
+
if (typeof url !== "string") {
|
|
17
|
+
throw new TypeError("Expected `url` to be a string");
|
|
18
|
+
}
|
|
19
|
+
let parsed;
|
|
20
|
+
try {
|
|
21
|
+
parsed = new URL(url);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw new Error(`Invalid URL: ${url}`);
|
|
25
|
+
}
|
|
26
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
27
|
+
throw new Error(`Refusing to open non-http(s) URL: ${parsed.protocol}`);
|
|
28
|
+
}
|
|
29
|
+
const target = parsed.toString();
|
|
30
|
+
// Browser: `noopener` prevents the opened page from touching window.opener.
|
|
31
|
+
if (typeof globalThis.window !== "undefined" &&
|
|
32
|
+
typeof globalThis.window.open === "function") {
|
|
33
|
+
globalThis.window.open(target, "_blank", "noopener");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
let spawn;
|
|
37
|
+
let platform;
|
|
38
|
+
try {
|
|
39
|
+
const [cp, proc] = await Promise.all([loadChildProcess(), loadProcess()]);
|
|
40
|
+
spawn = cp.spawn;
|
|
41
|
+
platform = proc.platform;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw new Error("openUrl: no supported runtime. window.open is unavailable and node:child_process could not be loaded.");
|
|
45
|
+
}
|
|
46
|
+
if (typeof spawn !== "function") {
|
|
47
|
+
throw new Error("openUrl: child_process.spawn is not available in this runtime");
|
|
48
|
+
}
|
|
49
|
+
let command;
|
|
50
|
+
let args;
|
|
51
|
+
if (platform === "darwin") {
|
|
52
|
+
command = "open";
|
|
53
|
+
args = [target];
|
|
54
|
+
}
|
|
55
|
+
else if (platform === "win32") {
|
|
56
|
+
// rundll32 dispatches to the default URL handler without going through
|
|
57
|
+
// cmd.exe, avoiding `&`/`^`/`|` metacharacter pitfalls.
|
|
58
|
+
command = "rundll32";
|
|
59
|
+
args = ["url.dll,FileProtocolHandler", target];
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
63
|
+
}
|
|
64
|
+
const child = spawn(command, args, {
|
|
65
|
+
stdio: "ignore",
|
|
66
|
+
detached: true,
|
|
67
|
+
windowsHide: true,
|
|
68
|
+
});
|
|
69
|
+
child.once("error", () => { });
|
|
70
|
+
child.unref();
|
|
71
|
+
};
|
|
72
|
+
export default openUrl;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zapier/zapier-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.0",
|
|
4
4
|
"description": "Complete Zapier SDK - combines all Zapier SDK packages",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -69,6 +69,8 @@
|
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
+
"@zapier/policy-context": "0.7.0",
|
|
73
|
+
"@zapier/policy-schema": "0.11.0",
|
|
72
74
|
"@zapier/zapier-sdk-core": "^0.8.0",
|
|
73
75
|
"zod": "4.2.1"
|
|
74
76
|
},
|