@zapier/zapier-sdk-cli 0.17.4 → 0.18.2
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 +29 -0
- package/dist/cli.cjs +82 -49
- package/dist/cli.mjs +84 -51
- package/dist/index.cjs +40 -34
- package/dist/index.mjs +42 -36
- package/dist/package.json +1 -1
- package/dist/src/cli.js +47 -15
- package/dist/src/plugins/login/index.d.ts +2 -1
- package/dist/src/plugins/login/index.js +31 -29
- package/dist/src/utils/auth/login.d.ts +3 -4
- package/dist/src/utils/auth/login.js +17 -9
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @zapier/zapier-sdk-cli
|
|
2
2
|
|
|
3
|
+
## 0.18.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [00ef417]
|
|
8
|
+
- @zapier/zapier-sdk@1.0.2
|
|
9
|
+
- @zapier/zapier-sdk-mcp@0.4.13
|
|
10
|
+
|
|
11
|
+
## 0.18.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [aba842a]
|
|
16
|
+
- @zapier/zapier-sdk@1.0.1
|
|
17
|
+
- @zapier/zapier-sdk-mcp@0.4.12
|
|
18
|
+
|
|
19
|
+
## 0.18.0
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- 97ff6c0: Add support for client credentials.
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- Updated dependencies [97ff6c0]
|
|
28
|
+
- @zapier/zapier-sdk-cli-login@0.4.0
|
|
29
|
+
- @zapier/zapier-sdk@1.0.0
|
|
30
|
+
- @zapier/zapier-sdk-mcp@0.4.11
|
|
31
|
+
|
|
3
32
|
## 0.17.4
|
|
4
33
|
|
|
5
34
|
### Patch Changes
|
package/dist/cli.cjs
CHANGED
|
@@ -1536,15 +1536,22 @@ var generateRandomString = () => {
|
|
|
1536
1536
|
(dec) => ("0" + dec.toString(16)).substring(-2)
|
|
1537
1537
|
).join("");
|
|
1538
1538
|
};
|
|
1539
|
+
function ensureOfflineAccess(scope) {
|
|
1540
|
+
if (scope.includes("offline_access")) {
|
|
1541
|
+
return scope;
|
|
1542
|
+
}
|
|
1543
|
+
return `${scope} offline_access`;
|
|
1544
|
+
}
|
|
1539
1545
|
var login = async ({
|
|
1540
1546
|
timeoutMs = LOGIN_TIMEOUT_MS,
|
|
1541
|
-
|
|
1542
|
-
authBaseUrl: authBaseUrl2,
|
|
1543
|
-
authClientId: authClientId2
|
|
1547
|
+
credentials: credentials2
|
|
1544
1548
|
}) => {
|
|
1545
|
-
const
|
|
1546
|
-
|
|
1547
|
-
|
|
1549
|
+
const { clientId, tokenUrl, authorizeUrl } = zapierSdkCliLogin.getPkceLoginConfig({
|
|
1550
|
+
credentials: credentials2
|
|
1551
|
+
});
|
|
1552
|
+
const scope = ensureOfflineAccess(
|
|
1553
|
+
credentials2?.scope || "internal credentials"
|
|
1554
|
+
);
|
|
1548
1555
|
zapierSdkCliLogin.logout();
|
|
1549
1556
|
const availablePort = await findAvailablePort();
|
|
1550
1557
|
const redirectUri = `http://localhost:${availablePort}/oauth`;
|
|
@@ -1576,9 +1583,9 @@ var login = async ({
|
|
|
1576
1583
|
const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge__default.default();
|
|
1577
1584
|
const authUrl = `${authorizeUrl}?${new URLSearchParams({
|
|
1578
1585
|
response_type: "code",
|
|
1579
|
-
client_id:
|
|
1586
|
+
client_id: clientId,
|
|
1580
1587
|
redirect_uri: redirectUri,
|
|
1581
|
-
scope
|
|
1588
|
+
scope,
|
|
1582
1589
|
state: generateRandomString(),
|
|
1583
1590
|
code_challenge: codeChallenge,
|
|
1584
1591
|
code_challenge_method: "S256"
|
|
@@ -1628,7 +1635,7 @@ var login = async ({
|
|
|
1628
1635
|
grant_type: "authorization_code",
|
|
1629
1636
|
code: await promisedCode,
|
|
1630
1637
|
redirect_uri: redirectUri,
|
|
1631
|
-
client_id:
|
|
1638
|
+
client_id: clientId,
|
|
1632
1639
|
code_verifier: codeVerifier
|
|
1633
1640
|
},
|
|
1634
1641
|
{
|
|
@@ -1649,7 +1656,7 @@ var LoginSchema = zod.z.object({
|
|
|
1649
1656
|
|
|
1650
1657
|
// package.json
|
|
1651
1658
|
var package_default = {
|
|
1652
|
-
version: "0.
|
|
1659
|
+
version: "0.18.2"};
|
|
1653
1660
|
|
|
1654
1661
|
// src/telemetry/builders.ts
|
|
1655
1662
|
function createCliBaseEvent(context = {}) {
|
|
@@ -1706,22 +1713,17 @@ function buildCliCommandExecutedEvent({
|
|
|
1706
1713
|
|
|
1707
1714
|
// src/plugins/login/index.ts
|
|
1708
1715
|
var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
baseUrl: options.baseUrl,
|
|
1718
|
-
authBaseUrl: options.authBaseUrl,
|
|
1719
|
-
authClientId: options.authClientId
|
|
1720
|
-
});
|
|
1721
|
-
const user = await zapierSdkCliLogin.getLoggedInUser();
|
|
1722
|
-
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
1716
|
+
function toPkceCredentials(credentials2) {
|
|
1717
|
+
if (credentials2 && zapierSdk.isCredentialsObject(credentials2) && !("clientSecret" in credentials2)) {
|
|
1718
|
+
return {
|
|
1719
|
+
type: "pkce",
|
|
1720
|
+
clientId: credentials2.clientId,
|
|
1721
|
+
baseUrl: credentials2.baseUrl,
|
|
1722
|
+
scope: credentials2.scope
|
|
1723
|
+
};
|
|
1723
1724
|
}
|
|
1724
|
-
|
|
1725
|
+
return void 0;
|
|
1726
|
+
}
|
|
1725
1727
|
var loginPlugin = ({ context }) => {
|
|
1726
1728
|
const loginWithTelemetry = async (options) => {
|
|
1727
1729
|
const startTime = Date.now();
|
|
@@ -1730,17 +1732,21 @@ var loginPlugin = ({ context }) => {
|
|
|
1730
1732
|
let accountId = null;
|
|
1731
1733
|
let customUserId = null;
|
|
1732
1734
|
try {
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1735
|
+
const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
|
|
1736
|
+
if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
|
|
1737
|
+
throw new Error("Timeout must be a positive number");
|
|
1738
|
+
}
|
|
1739
|
+
const resolvedCredentials = await context.resolveCredentials();
|
|
1740
|
+
const pkceCredentials = toPkceCredentials(resolvedCredentials);
|
|
1741
|
+
await login_default({
|
|
1742
|
+
timeoutMs: timeoutSeconds * 1e3,
|
|
1743
|
+
credentials: pkceCredentials
|
|
1738
1744
|
});
|
|
1745
|
+
const user = await zapierSdkCliLogin.getLoggedInUser();
|
|
1746
|
+
accountId = user.accountId;
|
|
1747
|
+
customUserId = user.customUserId;
|
|
1748
|
+
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
1739
1749
|
success = true;
|
|
1740
|
-
try {
|
|
1741
|
-
({ accountId, customUserId } = await zapierSdkCliLogin.getLoggedInUser());
|
|
1742
|
-
} catch {
|
|
1743
|
-
}
|
|
1744
1750
|
} catch (error) {
|
|
1745
1751
|
success = false;
|
|
1746
1752
|
errorMessage = error instanceof Error ? error.message : "Login failed";
|
|
@@ -2931,7 +2937,7 @@ function createZapierCliSdk(options = {}) {
|
|
|
2931
2937
|
// package.json with { type: 'json' }
|
|
2932
2938
|
var package_default2 = {
|
|
2933
2939
|
name: "@zapier/zapier-sdk-cli",
|
|
2934
|
-
version: "0.
|
|
2940
|
+
version: "0.18.2"};
|
|
2935
2941
|
function detectPackageManager(cwd = process.cwd()) {
|
|
2936
2942
|
const ua = process.env.npm_config_user_agent;
|
|
2937
2943
|
if (ua) {
|
|
@@ -3138,27 +3144,54 @@ async function checkAndNotifyUpdates({
|
|
|
3138
3144
|
|
|
3139
3145
|
// src/cli.ts
|
|
3140
3146
|
var program = new commander.Command();
|
|
3141
|
-
program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option(
|
|
3142
|
-
"--
|
|
3143
|
-
"
|
|
3144
|
-
).option(
|
|
3147
|
+
program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option("--credentials <token>", "Authentication token").option("--credentials-client-id <id>", "OAuth client ID for authentication").option(
|
|
3148
|
+
"--credentials-client-secret <secret>",
|
|
3149
|
+
"OAuth client secret for authentication"
|
|
3150
|
+
).option(
|
|
3151
|
+
"--credentials-base-url <url>",
|
|
3152
|
+
"Base URL for authentication endpoints"
|
|
3153
|
+
).option(
|
|
3145
3154
|
"--tracking-base-url <url>",
|
|
3146
3155
|
"Base URL for Zapier tracking endpoints"
|
|
3147
3156
|
);
|
|
3148
3157
|
var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
var baseUrl =
|
|
3154
|
-
var
|
|
3155
|
-
var
|
|
3156
|
-
var
|
|
3158
|
+
function getFlagValue(flagName) {
|
|
3159
|
+
const index = process.argv.indexOf(flagName);
|
|
3160
|
+
return index !== -1 ? process.argv[index + 1] : void 0;
|
|
3161
|
+
}
|
|
3162
|
+
var baseUrl = getFlagValue("--base-url");
|
|
3163
|
+
var credentialsToken = getFlagValue("--credentials");
|
|
3164
|
+
var credentialsClientId = getFlagValue("--credentials-client-id");
|
|
3165
|
+
var credentialsClientSecret = getFlagValue("--credentials-client-secret");
|
|
3166
|
+
var credentialsBaseUrl = getFlagValue("--credentials-base-url");
|
|
3167
|
+
var trackingBaseUrl = getFlagValue("--tracking-base-url");
|
|
3168
|
+
function buildCredentialsFromFlags() {
|
|
3169
|
+
if (credentialsToken) {
|
|
3170
|
+
return credentialsToken;
|
|
3171
|
+
}
|
|
3172
|
+
if (credentialsClientId) {
|
|
3173
|
+
if (credentialsClientSecret) {
|
|
3174
|
+
return {
|
|
3175
|
+
type: "client_credentials",
|
|
3176
|
+
clientId: credentialsClientId,
|
|
3177
|
+
clientSecret: credentialsClientSecret,
|
|
3178
|
+
baseUrl: credentialsBaseUrl
|
|
3179
|
+
};
|
|
3180
|
+
} else {
|
|
3181
|
+
return {
|
|
3182
|
+
type: "pkce",
|
|
3183
|
+
clientId: credentialsClientId,
|
|
3184
|
+
baseUrl: credentialsBaseUrl
|
|
3185
|
+
};
|
|
3186
|
+
}
|
|
3187
|
+
}
|
|
3188
|
+
return void 0;
|
|
3189
|
+
}
|
|
3190
|
+
var credentials = buildCredentialsFromFlags();
|
|
3157
3191
|
var sdk = createZapierCliSdk({
|
|
3158
3192
|
debug: isDebugMode,
|
|
3193
|
+
credentials,
|
|
3159
3194
|
baseUrl,
|
|
3160
|
-
authBaseUrl,
|
|
3161
|
-
authClientId,
|
|
3162
3195
|
trackingBaseUrl
|
|
3163
3196
|
});
|
|
3164
3197
|
generateCliCommands(program, sdk);
|
package/dist/cli.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command, CommanderError } from 'commander';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { createFunction, OutputPropertySchema, DEFAULT_CONFIG_PATH, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, formatErrorMessage, getOsInfo, getPlatformVersions, getCiPlatform, isCi, isPositional, getReleaseId, getCurrentTimestamp, generateEventId } from '@zapier/zapier-sdk';
|
|
4
|
+
import { createFunction, OutputPropertySchema, DEFAULT_CONFIG_PATH, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, formatErrorMessage, isCredentialsObject, getOsInfo, getPlatformVersions, getCiPlatform, isCi, isPositional, getReleaseId, getCurrentTimestamp, generateEventId } from '@zapier/zapier-sdk';
|
|
5
5
|
import inquirer from 'inquirer';
|
|
6
6
|
import chalk3 from 'chalk';
|
|
7
7
|
import util from 'util';
|
|
@@ -9,7 +9,7 @@ import open from 'open';
|
|
|
9
9
|
import crypto from 'crypto';
|
|
10
10
|
import express from 'express';
|
|
11
11
|
import pkceChallenge from 'pkce-challenge';
|
|
12
|
-
import {
|
|
12
|
+
import { logout, getConfigPath, getLoggedInUser, getPkceLoginConfig, AUTH_MODE_HEADER, updateLogin } from '@zapier/zapier-sdk-cli-login';
|
|
13
13
|
import ora from 'ora';
|
|
14
14
|
import { startMcpServer } from '@zapier/zapier-sdk-mcp';
|
|
15
15
|
import { buildSync } from 'esbuild';
|
|
@@ -1500,15 +1500,22 @@ var generateRandomString = () => {
|
|
|
1500
1500
|
(dec) => ("0" + dec.toString(16)).substring(-2)
|
|
1501
1501
|
).join("");
|
|
1502
1502
|
};
|
|
1503
|
+
function ensureOfflineAccess(scope) {
|
|
1504
|
+
if (scope.includes("offline_access")) {
|
|
1505
|
+
return scope;
|
|
1506
|
+
}
|
|
1507
|
+
return `${scope} offline_access`;
|
|
1508
|
+
}
|
|
1503
1509
|
var login = async ({
|
|
1504
1510
|
timeoutMs = LOGIN_TIMEOUT_MS,
|
|
1505
|
-
|
|
1506
|
-
authBaseUrl: authBaseUrl2,
|
|
1507
|
-
authClientId: authClientId2
|
|
1511
|
+
credentials: credentials2
|
|
1508
1512
|
}) => {
|
|
1509
|
-
const
|
|
1510
|
-
|
|
1511
|
-
|
|
1513
|
+
const { clientId, tokenUrl, authorizeUrl } = getPkceLoginConfig({
|
|
1514
|
+
credentials: credentials2
|
|
1515
|
+
});
|
|
1516
|
+
const scope = ensureOfflineAccess(
|
|
1517
|
+
credentials2?.scope || "internal credentials"
|
|
1518
|
+
);
|
|
1512
1519
|
logout();
|
|
1513
1520
|
const availablePort = await findAvailablePort();
|
|
1514
1521
|
const redirectUri = `http://localhost:${availablePort}/oauth`;
|
|
@@ -1540,9 +1547,9 @@ var login = async ({
|
|
|
1540
1547
|
const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge();
|
|
1541
1548
|
const authUrl = `${authorizeUrl}?${new URLSearchParams({
|
|
1542
1549
|
response_type: "code",
|
|
1543
|
-
client_id:
|
|
1550
|
+
client_id: clientId,
|
|
1544
1551
|
redirect_uri: redirectUri,
|
|
1545
|
-
scope
|
|
1552
|
+
scope,
|
|
1546
1553
|
state: generateRandomString(),
|
|
1547
1554
|
code_challenge: codeChallenge,
|
|
1548
1555
|
code_challenge_method: "S256"
|
|
@@ -1592,7 +1599,7 @@ var login = async ({
|
|
|
1592
1599
|
grant_type: "authorization_code",
|
|
1593
1600
|
code: await promisedCode,
|
|
1594
1601
|
redirect_uri: redirectUri,
|
|
1595
|
-
client_id:
|
|
1602
|
+
client_id: clientId,
|
|
1596
1603
|
code_verifier: codeVerifier
|
|
1597
1604
|
},
|
|
1598
1605
|
{
|
|
@@ -1613,7 +1620,7 @@ var LoginSchema = z.object({
|
|
|
1613
1620
|
|
|
1614
1621
|
// package.json
|
|
1615
1622
|
var package_default = {
|
|
1616
|
-
version: "0.
|
|
1623
|
+
version: "0.18.2"};
|
|
1617
1624
|
|
|
1618
1625
|
// src/telemetry/builders.ts
|
|
1619
1626
|
function createCliBaseEvent(context = {}) {
|
|
@@ -1670,22 +1677,17 @@ function buildCliCommandExecutedEvent({
|
|
|
1670
1677
|
|
|
1671
1678
|
// src/plugins/login/index.ts
|
|
1672
1679
|
var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
baseUrl: options.baseUrl,
|
|
1682
|
-
authBaseUrl: options.authBaseUrl,
|
|
1683
|
-
authClientId: options.authClientId
|
|
1684
|
-
});
|
|
1685
|
-
const user = await getLoggedInUser();
|
|
1686
|
-
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
1680
|
+
function toPkceCredentials(credentials2) {
|
|
1681
|
+
if (credentials2 && isCredentialsObject(credentials2) && !("clientSecret" in credentials2)) {
|
|
1682
|
+
return {
|
|
1683
|
+
type: "pkce",
|
|
1684
|
+
clientId: credentials2.clientId,
|
|
1685
|
+
baseUrl: credentials2.baseUrl,
|
|
1686
|
+
scope: credentials2.scope
|
|
1687
|
+
};
|
|
1687
1688
|
}
|
|
1688
|
-
|
|
1689
|
+
return void 0;
|
|
1690
|
+
}
|
|
1689
1691
|
var loginPlugin = ({ context }) => {
|
|
1690
1692
|
const loginWithTelemetry = async (options) => {
|
|
1691
1693
|
const startTime = Date.now();
|
|
@@ -1694,17 +1696,21 @@ var loginPlugin = ({ context }) => {
|
|
|
1694
1696
|
let accountId = null;
|
|
1695
1697
|
let customUserId = null;
|
|
1696
1698
|
try {
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1699
|
+
const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
|
|
1700
|
+
if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
|
|
1701
|
+
throw new Error("Timeout must be a positive number");
|
|
1702
|
+
}
|
|
1703
|
+
const resolvedCredentials = await context.resolveCredentials();
|
|
1704
|
+
const pkceCredentials = toPkceCredentials(resolvedCredentials);
|
|
1705
|
+
await login_default({
|
|
1706
|
+
timeoutMs: timeoutSeconds * 1e3,
|
|
1707
|
+
credentials: pkceCredentials
|
|
1702
1708
|
});
|
|
1709
|
+
const user = await getLoggedInUser();
|
|
1710
|
+
accountId = user.accountId;
|
|
1711
|
+
customUserId = user.customUserId;
|
|
1712
|
+
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
1703
1713
|
success = true;
|
|
1704
|
-
try {
|
|
1705
|
-
({ accountId, customUserId } = await getLoggedInUser());
|
|
1706
|
-
} catch {
|
|
1707
|
-
}
|
|
1708
1714
|
} catch (error) {
|
|
1709
1715
|
success = false;
|
|
1710
1716
|
errorMessage = error instanceof Error ? error.message : "Login failed";
|
|
@@ -2895,7 +2901,7 @@ function createZapierCliSdk(options = {}) {
|
|
|
2895
2901
|
// package.json with { type: 'json' }
|
|
2896
2902
|
var package_default2 = {
|
|
2897
2903
|
name: "@zapier/zapier-sdk-cli",
|
|
2898
|
-
version: "0.
|
|
2904
|
+
version: "0.18.2"};
|
|
2899
2905
|
function detectPackageManager(cwd = process.cwd()) {
|
|
2900
2906
|
const ua = process.env.npm_config_user_agent;
|
|
2901
2907
|
if (ua) {
|
|
@@ -3102,27 +3108,54 @@ async function checkAndNotifyUpdates({
|
|
|
3102
3108
|
|
|
3103
3109
|
// src/cli.ts
|
|
3104
3110
|
var program = new Command();
|
|
3105
|
-
program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option(
|
|
3106
|
-
"--
|
|
3107
|
-
"
|
|
3108
|
-
).option(
|
|
3111
|
+
program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option("--credentials <token>", "Authentication token").option("--credentials-client-id <id>", "OAuth client ID for authentication").option(
|
|
3112
|
+
"--credentials-client-secret <secret>",
|
|
3113
|
+
"OAuth client secret for authentication"
|
|
3114
|
+
).option(
|
|
3115
|
+
"--credentials-base-url <url>",
|
|
3116
|
+
"Base URL for authentication endpoints"
|
|
3117
|
+
).option(
|
|
3109
3118
|
"--tracking-base-url <url>",
|
|
3110
3119
|
"Base URL for Zapier tracking endpoints"
|
|
3111
3120
|
);
|
|
3112
3121
|
var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
var baseUrl =
|
|
3118
|
-
var
|
|
3119
|
-
var
|
|
3120
|
-
var
|
|
3122
|
+
function getFlagValue(flagName) {
|
|
3123
|
+
const index = process.argv.indexOf(flagName);
|
|
3124
|
+
return index !== -1 ? process.argv[index + 1] : void 0;
|
|
3125
|
+
}
|
|
3126
|
+
var baseUrl = getFlagValue("--base-url");
|
|
3127
|
+
var credentialsToken = getFlagValue("--credentials");
|
|
3128
|
+
var credentialsClientId = getFlagValue("--credentials-client-id");
|
|
3129
|
+
var credentialsClientSecret = getFlagValue("--credentials-client-secret");
|
|
3130
|
+
var credentialsBaseUrl = getFlagValue("--credentials-base-url");
|
|
3131
|
+
var trackingBaseUrl = getFlagValue("--tracking-base-url");
|
|
3132
|
+
function buildCredentialsFromFlags() {
|
|
3133
|
+
if (credentialsToken) {
|
|
3134
|
+
return credentialsToken;
|
|
3135
|
+
}
|
|
3136
|
+
if (credentialsClientId) {
|
|
3137
|
+
if (credentialsClientSecret) {
|
|
3138
|
+
return {
|
|
3139
|
+
type: "client_credentials",
|
|
3140
|
+
clientId: credentialsClientId,
|
|
3141
|
+
clientSecret: credentialsClientSecret,
|
|
3142
|
+
baseUrl: credentialsBaseUrl
|
|
3143
|
+
};
|
|
3144
|
+
} else {
|
|
3145
|
+
return {
|
|
3146
|
+
type: "pkce",
|
|
3147
|
+
clientId: credentialsClientId,
|
|
3148
|
+
baseUrl: credentialsBaseUrl
|
|
3149
|
+
};
|
|
3150
|
+
}
|
|
3151
|
+
}
|
|
3152
|
+
return void 0;
|
|
3153
|
+
}
|
|
3154
|
+
var credentials = buildCredentialsFromFlags();
|
|
3121
3155
|
var sdk = createZapierCliSdk({
|
|
3122
3156
|
debug: isDebugMode,
|
|
3157
|
+
credentials,
|
|
3123
3158
|
baseUrl,
|
|
3124
|
-
authBaseUrl,
|
|
3125
|
-
authClientId,
|
|
3126
3159
|
trackingBaseUrl
|
|
3127
3160
|
});
|
|
3128
3161
|
generateCliCommands(program, sdk);
|
package/dist/index.cjs
CHANGED
|
@@ -182,15 +182,22 @@ var generateRandomString = () => {
|
|
|
182
182
|
(dec) => ("0" + dec.toString(16)).substring(-2)
|
|
183
183
|
).join("");
|
|
184
184
|
};
|
|
185
|
+
function ensureOfflineAccess(scope) {
|
|
186
|
+
if (scope.includes("offline_access")) {
|
|
187
|
+
return scope;
|
|
188
|
+
}
|
|
189
|
+
return `${scope} offline_access`;
|
|
190
|
+
}
|
|
185
191
|
var login = async ({
|
|
186
192
|
timeoutMs = LOGIN_TIMEOUT_MS,
|
|
187
|
-
|
|
188
|
-
authBaseUrl,
|
|
189
|
-
authClientId
|
|
193
|
+
credentials
|
|
190
194
|
}) => {
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
195
|
+
const { clientId, tokenUrl, authorizeUrl } = zapierSdkCliLogin.getPkceLoginConfig({
|
|
196
|
+
credentials
|
|
197
|
+
});
|
|
198
|
+
const scope = ensureOfflineAccess(
|
|
199
|
+
credentials?.scope || "internal credentials"
|
|
200
|
+
);
|
|
194
201
|
zapierSdkCliLogin.logout();
|
|
195
202
|
const availablePort = await findAvailablePort();
|
|
196
203
|
const redirectUri = `http://localhost:${availablePort}/oauth`;
|
|
@@ -222,9 +229,9 @@ var login = async ({
|
|
|
222
229
|
const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge__default.default();
|
|
223
230
|
const authUrl = `${authorizeUrl}?${new URLSearchParams({
|
|
224
231
|
response_type: "code",
|
|
225
|
-
client_id:
|
|
232
|
+
client_id: clientId,
|
|
226
233
|
redirect_uri: redirectUri,
|
|
227
|
-
scope
|
|
234
|
+
scope,
|
|
228
235
|
state: generateRandomString(),
|
|
229
236
|
code_challenge: codeChallenge,
|
|
230
237
|
code_challenge_method: "S256"
|
|
@@ -274,7 +281,7 @@ var login = async ({
|
|
|
274
281
|
grant_type: "authorization_code",
|
|
275
282
|
code: await promisedCode,
|
|
276
283
|
redirect_uri: redirectUri,
|
|
277
|
-
client_id:
|
|
284
|
+
client_id: clientId,
|
|
278
285
|
code_verifier: codeVerifier
|
|
279
286
|
},
|
|
280
287
|
{
|
|
@@ -295,7 +302,7 @@ var LoginSchema = zod.z.object({
|
|
|
295
302
|
|
|
296
303
|
// package.json
|
|
297
304
|
var package_default = {
|
|
298
|
-
version: "0.
|
|
305
|
+
version: "0.18.2"};
|
|
299
306
|
|
|
300
307
|
// src/telemetry/builders.ts
|
|
301
308
|
function createCliBaseEvent(context = {}) {
|
|
@@ -352,22 +359,17 @@ function buildCliCommandExecutedEvent({
|
|
|
352
359
|
|
|
353
360
|
// src/plugins/login/index.ts
|
|
354
361
|
var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
baseUrl: options.baseUrl,
|
|
364
|
-
authBaseUrl: options.authBaseUrl,
|
|
365
|
-
authClientId: options.authClientId
|
|
366
|
-
});
|
|
367
|
-
const user = await zapierSdkCliLogin.getLoggedInUser();
|
|
368
|
-
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
362
|
+
function toPkceCredentials(credentials) {
|
|
363
|
+
if (credentials && zapierSdk.isCredentialsObject(credentials) && !("clientSecret" in credentials)) {
|
|
364
|
+
return {
|
|
365
|
+
type: "pkce",
|
|
366
|
+
clientId: credentials.clientId,
|
|
367
|
+
baseUrl: credentials.baseUrl,
|
|
368
|
+
scope: credentials.scope
|
|
369
|
+
};
|
|
369
370
|
}
|
|
370
|
-
|
|
371
|
+
return void 0;
|
|
372
|
+
}
|
|
371
373
|
var loginPlugin = ({ context }) => {
|
|
372
374
|
const loginWithTelemetry = async (options) => {
|
|
373
375
|
const startTime = Date.now();
|
|
@@ -376,17 +378,21 @@ var loginPlugin = ({ context }) => {
|
|
|
376
378
|
let accountId = null;
|
|
377
379
|
let customUserId = null;
|
|
378
380
|
try {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
381
|
+
const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
|
|
382
|
+
if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
|
|
383
|
+
throw new Error("Timeout must be a positive number");
|
|
384
|
+
}
|
|
385
|
+
const resolvedCredentials = await context.resolveCredentials();
|
|
386
|
+
const pkceCredentials = toPkceCredentials(resolvedCredentials);
|
|
387
|
+
await login_default({
|
|
388
|
+
timeoutMs: timeoutSeconds * 1e3,
|
|
389
|
+
credentials: pkceCredentials
|
|
384
390
|
});
|
|
391
|
+
const user = await zapierSdkCliLogin.getLoggedInUser();
|
|
392
|
+
accountId = user.accountId;
|
|
393
|
+
customUserId = user.customUserId;
|
|
394
|
+
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
385
395
|
success = true;
|
|
386
|
-
try {
|
|
387
|
-
({ accountId, customUserId } = await zapierSdkCliLogin.getLoggedInUser());
|
|
388
|
-
} catch {
|
|
389
|
-
}
|
|
390
396
|
} catch (error) {
|
|
391
397
|
success = false;
|
|
392
398
|
errorMessage = error instanceof Error ? error.message : "Login failed";
|