@zapier/zapier-sdk-cli 0.34.10 → 0.34.12
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 +18 -0
- package/dist/cli.cjs +142 -137
- package/dist/cli.mjs +143 -138
- package/dist/index.cjs +5 -4
- package/dist/index.mjs +5 -4
- package/dist/package.json +1 -1
- package/dist/src/plugins/login/index.js +1 -3
- package/dist/src/utils/parameter-resolver.d.ts +1 -1
- package/dist/src/utils/parameter-resolver.js +144 -140
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
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, injectCliLogin, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, buildApplicationLifecycleEvent, formatErrorMessage, isCredentialsObject, isPositional, getOsInfo, getPlatformVersions, getCiPlatform, isCi, getReleaseId, getCurrentTimestamp, generateEventId } from '@zapier/zapier-sdk';
|
|
4
|
+
import { createFunction, OutputPropertySchema, DEFAULT_CONFIG_PATH, injectCliLogin, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, buildApplicationLifecycleEvent, formatErrorMessage, isCredentialsObject, isPositional, runWithTelemetryContext, getOsInfo, getPlatformVersions, getCiPlatform, isCi, 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';
|
|
@@ -82,139 +82,105 @@ function getLocalResolutionOrderForParams(paramNames, resolvers) {
|
|
|
82
82
|
}
|
|
83
83
|
var SchemaParameterResolver = class {
|
|
84
84
|
async resolveParameters(schema, providedParams, sdk2, functionName) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const missingResolvable = resolvableParams.filter((param) => {
|
|
91
|
-
const hasValue = this.getNestedValue(providedParams, param.path) !== void 0;
|
|
92
|
-
return !hasValue;
|
|
93
|
-
});
|
|
94
|
-
const functionallyRequired = missingResolvable.filter((param) => {
|
|
95
|
-
if (param.isRequired) return true;
|
|
96
|
-
if (param.name === "inputs") {
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
return false;
|
|
100
|
-
});
|
|
101
|
-
const alwaysPrompt = missingResolvable.filter((param) => {
|
|
102
|
-
if (functionallyRequired.includes(param)) return false;
|
|
103
|
-
if (param.name === "connectionId") {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
});
|
|
108
|
-
const trulyOptional = missingResolvable.filter(
|
|
109
|
-
(param) => !functionallyRequired.includes(param) && !alwaysPrompt.includes(param)
|
|
110
|
-
);
|
|
111
|
-
if (parseResult.success && functionallyRequired.length === 0 && alwaysPrompt.length === 0) {
|
|
112
|
-
return parseResult.data;
|
|
113
|
-
}
|
|
114
|
-
if (functionallyRequired.length === 0 && alwaysPrompt.length === 0) {
|
|
115
|
-
if (!parseResult.success) {
|
|
116
|
-
throw parseResult.error;
|
|
117
|
-
}
|
|
118
|
-
return parseResult.data;
|
|
119
|
-
}
|
|
120
|
-
const resolvedParams = { ...providedParams };
|
|
121
|
-
const context = {
|
|
122
|
-
sdk: sdk2,
|
|
123
|
-
currentParams: providedParams,
|
|
124
|
-
resolvedParams,
|
|
125
|
-
functionName
|
|
126
|
-
};
|
|
127
|
-
const localResolvers = this.getLocalResolvers(sdk2, functionName);
|
|
128
|
-
if (functionallyRequired.length > 0) {
|
|
129
|
-
const requiredParamNames = functionallyRequired.map((p) => p.name);
|
|
130
|
-
const requiredResolutionOrder = getLocalResolutionOrderForParams(
|
|
131
|
-
requiredParamNames,
|
|
132
|
-
localResolvers
|
|
85
|
+
return runWithTelemetryContext(async () => {
|
|
86
|
+
const parseResult = schema.safeParse(providedParams);
|
|
87
|
+
const allParams = this.extractParametersFromSchema(schema);
|
|
88
|
+
const resolvableParams = allParams.filter(
|
|
89
|
+
(param) => this.hasResolver(param.name, sdk2, functionName)
|
|
133
90
|
);
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
91
|
+
const missingResolvable = resolvableParams.filter((param) => {
|
|
92
|
+
const hasValue = this.getNestedValue(providedParams, param.path) !== void 0;
|
|
93
|
+
return !hasValue;
|
|
94
|
+
});
|
|
95
|
+
const functionallyRequired = missingResolvable.filter((param) => {
|
|
96
|
+
if (param.isRequired) return true;
|
|
97
|
+
if (param.name === "inputs") {
|
|
98
|
+
return true;
|
|
138
99
|
}
|
|
139
|
-
|
|
140
|
-
|
|
100
|
+
return false;
|
|
101
|
+
});
|
|
102
|
+
const alwaysPrompt = missingResolvable.filter((param) => {
|
|
103
|
+
if (functionallyRequired.includes(param)) return false;
|
|
104
|
+
if (param.name === "connectionId") {
|
|
105
|
+
return true;
|
|
141
106
|
}
|
|
142
|
-
return
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
} catch (error) {
|
|
154
|
-
if (this.isUserCancellation(error)) {
|
|
155
|
-
console.log(chalk3.yellow("\n\nOperation cancelled by user"));
|
|
156
|
-
throw new ZapierCliUserCancellationError();
|
|
157
|
-
}
|
|
158
|
-
throw error;
|
|
107
|
+
return false;
|
|
108
|
+
});
|
|
109
|
+
const trulyOptional = missingResolvable.filter(
|
|
110
|
+
(param) => !functionallyRequired.includes(param) && !alwaysPrompt.includes(param)
|
|
111
|
+
);
|
|
112
|
+
if (parseResult.success && functionallyRequired.length === 0 && alwaysPrompt.length === 0) {
|
|
113
|
+
return parseResult.data;
|
|
114
|
+
}
|
|
115
|
+
if (functionallyRequired.length === 0 && alwaysPrompt.length === 0) {
|
|
116
|
+
if (!parseResult.success) {
|
|
117
|
+
throw parseResult.error;
|
|
159
118
|
}
|
|
119
|
+
return parseResult.data;
|
|
160
120
|
}
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
121
|
+
const resolvedParams = { ...providedParams };
|
|
122
|
+
const context = {
|
|
123
|
+
sdk: sdk2,
|
|
124
|
+
currentParams: providedParams,
|
|
125
|
+
resolvedParams,
|
|
126
|
+
functionName
|
|
127
|
+
};
|
|
128
|
+
const localResolvers = this.getLocalResolvers(sdk2, functionName);
|
|
129
|
+
if (functionallyRequired.length > 0) {
|
|
130
|
+
const requiredParamNames = functionallyRequired.map((p) => p.name);
|
|
131
|
+
const requiredResolutionOrder = getLocalResolutionOrderForParams(
|
|
132
|
+
requiredParamNames,
|
|
133
|
+
localResolvers
|
|
134
|
+
);
|
|
135
|
+
const orderedRequiredParams = requiredResolutionOrder.map((paramName) => {
|
|
136
|
+
let param = functionallyRequired.find((p) => p.name === paramName);
|
|
137
|
+
if (!param) {
|
|
138
|
+
param = alwaysPrompt.find((p) => p.name === paramName);
|
|
139
|
+
}
|
|
140
|
+
if (!param) {
|
|
141
|
+
param = trulyOptional.find((p) => p.name === paramName);
|
|
142
|
+
}
|
|
143
|
+
return param;
|
|
144
|
+
}).filter((param) => param !== void 0);
|
|
145
|
+
for (const param of orderedRequiredParams) {
|
|
146
|
+
try {
|
|
147
|
+
const value = await this.resolveParameter(
|
|
148
|
+
param,
|
|
149
|
+
context,
|
|
150
|
+
functionName
|
|
151
|
+
);
|
|
152
|
+
this.setNestedValue(resolvedParams, param.path, value);
|
|
153
|
+
context.resolvedParams = resolvedParams;
|
|
154
|
+
} catch (error) {
|
|
155
|
+
if (this.isUserCancellation(error)) {
|
|
156
|
+
console.log(chalk3.yellow("\n\nOperation cancelled by user"));
|
|
157
|
+
throw new ZapierCliUserCancellationError();
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
195
160
|
}
|
|
196
|
-
throw error;
|
|
197
161
|
}
|
|
162
|
+
const resolvedParamNames = new Set(
|
|
163
|
+
orderedRequiredParams.map((p) => p.name)
|
|
164
|
+
);
|
|
165
|
+
alwaysPrompt.splice(
|
|
166
|
+
0,
|
|
167
|
+
alwaysPrompt.length,
|
|
168
|
+
...alwaysPrompt.filter((p) => !resolvedParamNames.has(p.name))
|
|
169
|
+
);
|
|
170
|
+
trulyOptional.splice(
|
|
171
|
+
0,
|
|
172
|
+
trulyOptional.length,
|
|
173
|
+
...trulyOptional.filter((p) => !resolvedParamNames.has(p.name))
|
|
174
|
+
);
|
|
198
175
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
{
|
|
204
|
-
type: "confirm",
|
|
205
|
-
name: "resolveOptional",
|
|
206
|
-
message: `Would you like to be prompted for optional parameters (${optionalNames})?`,
|
|
207
|
-
default: false
|
|
208
|
-
}
|
|
209
|
-
]);
|
|
210
|
-
if (shouldResolveOptional.resolveOptional) {
|
|
211
|
-
const optionalParamNames = trulyOptional.map((p) => p.name);
|
|
212
|
-
const optionalResolutionOrder = getLocalResolutionOrderForParams(
|
|
213
|
-
optionalParamNames,
|
|
176
|
+
if (alwaysPrompt.length > 0) {
|
|
177
|
+
const alwaysPromptNames = alwaysPrompt.map((p) => p.name);
|
|
178
|
+
const alwaysPromptResolutionOrder = getLocalResolutionOrderForParams(
|
|
179
|
+
alwaysPromptNames,
|
|
214
180
|
localResolvers
|
|
215
181
|
);
|
|
216
|
-
const
|
|
217
|
-
for (const param of
|
|
182
|
+
const orderedAlwaysPromptParams = alwaysPromptResolutionOrder.map((paramName) => alwaysPrompt.find((p) => p.name === paramName)).filter((param) => param !== void 0);
|
|
183
|
+
for (const param of orderedAlwaysPromptParams) {
|
|
218
184
|
try {
|
|
219
185
|
const value = await this.resolveParameter(
|
|
220
186
|
param,
|
|
@@ -232,15 +198,53 @@ var SchemaParameterResolver = class {
|
|
|
232
198
|
}
|
|
233
199
|
}
|
|
234
200
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
201
|
+
if (trulyOptional.length > 0) {
|
|
202
|
+
const optionalNames = trulyOptional.map((p) => p.name).join(", ");
|
|
203
|
+
const shouldResolveOptional = await inquirer.prompt([
|
|
204
|
+
{
|
|
205
|
+
type: "confirm",
|
|
206
|
+
name: "resolveOptional",
|
|
207
|
+
message: `Would you like to be prompted for optional parameters (${optionalNames})?`,
|
|
208
|
+
default: false
|
|
209
|
+
}
|
|
210
|
+
]);
|
|
211
|
+
if (shouldResolveOptional.resolveOptional) {
|
|
212
|
+
const optionalParamNames = trulyOptional.map((p) => p.name);
|
|
213
|
+
const optionalResolutionOrder = getLocalResolutionOrderForParams(
|
|
214
|
+
optionalParamNames,
|
|
215
|
+
localResolvers
|
|
216
|
+
);
|
|
217
|
+
const orderedOptionalParams = optionalResolutionOrder.map((paramName) => trulyOptional.find((p) => p.name === paramName)).filter(
|
|
218
|
+
(param) => param !== void 0
|
|
219
|
+
);
|
|
220
|
+
for (const param of orderedOptionalParams) {
|
|
221
|
+
try {
|
|
222
|
+
const value = await this.resolveParameter(
|
|
223
|
+
param,
|
|
224
|
+
context,
|
|
225
|
+
functionName
|
|
226
|
+
);
|
|
227
|
+
this.setNestedValue(resolvedParams, param.path, value);
|
|
228
|
+
context.resolvedParams = resolvedParams;
|
|
229
|
+
} catch (error) {
|
|
230
|
+
if (this.isUserCancellation(error)) {
|
|
231
|
+
console.log(chalk3.yellow("\n\nOperation cancelled by user"));
|
|
232
|
+
throw new ZapierCliUserCancellationError();
|
|
233
|
+
}
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const finalResult = schema.safeParse(resolvedParams);
|
|
240
|
+
if (!finalResult.success) {
|
|
241
|
+
console.error(
|
|
242
|
+
chalk3.red("\u274C Parameter validation failed after resolution:")
|
|
243
|
+
);
|
|
244
|
+
throw finalResult.error;
|
|
245
|
+
}
|
|
246
|
+
return finalResult.data;
|
|
247
|
+
});
|
|
244
248
|
}
|
|
245
249
|
extractParametersFromSchema(schema) {
|
|
246
250
|
const parameters = [];
|
|
@@ -886,7 +890,7 @@ var SHARED_COMMAND_CLI_OPTIONS = [
|
|
|
886
890
|
|
|
887
891
|
// package.json
|
|
888
892
|
var package_default = {
|
|
889
|
-
version: "0.34.
|
|
893
|
+
version: "0.34.12"};
|
|
890
894
|
|
|
891
895
|
// src/telemetry/builders.ts
|
|
892
896
|
function createCliBaseEvent(context = {}) {
|
|
@@ -1998,9 +2002,10 @@ var loginPlugin = ({
|
|
|
1998
2002
|
const user = await getLoggedInUser();
|
|
1999
2003
|
context.eventEmission.emit(
|
|
2000
2004
|
"platform.sdk.ApplicationLifecycleEvent",
|
|
2001
|
-
buildApplicationLifecycleEvent(
|
|
2002
|
-
lifecycle_event_type: "login_success"
|
|
2003
|
-
|
|
2005
|
+
buildApplicationLifecycleEvent(
|
|
2006
|
+
{ lifecycle_event_type: "login_success" },
|
|
2007
|
+
{ customuser_id: user.customUserId, account_id: user.accountId }
|
|
2008
|
+
)
|
|
2004
2009
|
);
|
|
2005
2010
|
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
2006
2011
|
};
|
|
@@ -4162,7 +4167,7 @@ function createZapierCliSdk(options = {}) {
|
|
|
4162
4167
|
// package.json with { type: 'json' }
|
|
4163
4168
|
var package_default2 = {
|
|
4164
4169
|
name: "@zapier/zapier-sdk-cli",
|
|
4165
|
-
version: "0.34.
|
|
4170
|
+
version: "0.34.12"};
|
|
4166
4171
|
var ONE_DAY_MS = 24 * 60 * 60 * 1e3;
|
|
4167
4172
|
var CACHE_RESET_INTERVAL_MS = (() => {
|
|
4168
4173
|
const { ZAPIER_SDK_UPDATE_CHECK_INTERVAL_MS = `${ONE_DAY_MS}` } = process.env;
|
package/dist/index.cjs
CHANGED
|
@@ -371,9 +371,10 @@ var loginPlugin = ({
|
|
|
371
371
|
const user = await cliLogin.getLoggedInUser();
|
|
372
372
|
context.eventEmission.emit(
|
|
373
373
|
"platform.sdk.ApplicationLifecycleEvent",
|
|
374
|
-
zapierSdk.buildApplicationLifecycleEvent(
|
|
375
|
-
lifecycle_event_type: "login_success"
|
|
376
|
-
|
|
374
|
+
zapierSdk.buildApplicationLifecycleEvent(
|
|
375
|
+
{ lifecycle_event_type: "login_success" },
|
|
376
|
+
{ customuser_id: user.customUserId, account_id: user.accountId }
|
|
377
|
+
)
|
|
377
378
|
);
|
|
378
379
|
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
379
380
|
};
|
|
@@ -2507,7 +2508,7 @@ function createZapierCliSdk(options = {}) {
|
|
|
2507
2508
|
|
|
2508
2509
|
// package.json
|
|
2509
2510
|
var package_default = {
|
|
2510
|
-
version: "0.34.
|
|
2511
|
+
version: "0.34.12"};
|
|
2511
2512
|
|
|
2512
2513
|
// src/telemetry/builders.ts
|
|
2513
2514
|
function createCliBaseEvent(context = {}) {
|
package/dist/index.mjs
CHANGED
|
@@ -338,9 +338,10 @@ var loginPlugin = ({
|
|
|
338
338
|
const user = await getLoggedInUser();
|
|
339
339
|
context.eventEmission.emit(
|
|
340
340
|
"platform.sdk.ApplicationLifecycleEvent",
|
|
341
|
-
buildApplicationLifecycleEvent(
|
|
342
|
-
lifecycle_event_type: "login_success"
|
|
343
|
-
|
|
341
|
+
buildApplicationLifecycleEvent(
|
|
342
|
+
{ lifecycle_event_type: "login_success" },
|
|
343
|
+
{ customuser_id: user.customUserId, account_id: user.accountId }
|
|
344
|
+
)
|
|
344
345
|
);
|
|
345
346
|
console.log(`\u2705 Successfully logged in as ${user.email}`);
|
|
346
347
|
};
|
|
@@ -2474,7 +2475,7 @@ function createZapierCliSdk(options = {}) {
|
|
|
2474
2475
|
|
|
2475
2476
|
// package.json
|
|
2476
2477
|
var package_default = {
|
|
2477
|
-
version: "0.34.
|
|
2478
|
+
version: "0.34.12"};
|
|
2478
2479
|
|
|
2479
2480
|
// src/telemetry/builders.ts
|
|
2480
2481
|
function createCliBaseEvent(context = {}) {
|
package/dist/package.json
CHANGED
|
@@ -30,9 +30,7 @@ export const loginPlugin = ({ context, }) => {
|
|
|
30
30
|
credentials: pkceCredentials,
|
|
31
31
|
});
|
|
32
32
|
const user = await getLoggedInUser();
|
|
33
|
-
context.eventEmission.emit("platform.sdk.ApplicationLifecycleEvent", buildApplicationLifecycleEvent({
|
|
34
|
-
lifecycle_event_type: "login_success",
|
|
35
|
-
}));
|
|
33
|
+
context.eventEmission.emit("platform.sdk.ApplicationLifecycleEvent", buildApplicationLifecycleEvent({ lifecycle_event_type: "login_success" }, { customuser_id: user.customUserId, account_id: user.accountId }));
|
|
36
34
|
console.log(`✅ Successfully logged in as ${user.email}`);
|
|
37
35
|
};
|
|
38
36
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type
|
|
2
|
+
import { type ZapierSdk } from "@zapier/zapier-sdk";
|
|
3
3
|
export declare class SchemaParameterResolver {
|
|
4
4
|
resolveParameters(schema: z.ZodSchema, providedParams: unknown, sdk: ZapierSdk, functionName?: string): Promise<unknown>;
|
|
5
5
|
private extractParametersFromSchema;
|