@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/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
- const parseResult = schema.safeParse(providedParams);
86
- const allParams = this.extractParametersFromSchema(schema);
87
- const resolvableParams = allParams.filter(
88
- (param) => this.hasResolver(param.name, sdk2, functionName)
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 orderedRequiredParams = requiredResolutionOrder.map((paramName) => {
135
- let param = functionallyRequired.find((p) => p.name === paramName);
136
- if (!param) {
137
- param = alwaysPrompt.find((p) => p.name === paramName);
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
- if (!param) {
140
- param = trulyOptional.find((p) => p.name === paramName);
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 param;
143
- }).filter((param) => param !== void 0);
144
- for (const param of orderedRequiredParams) {
145
- try {
146
- const value = await this.resolveParameter(
147
- param,
148
- context,
149
- functionName
150
- );
151
- this.setNestedValue(resolvedParams, param.path, value);
152
- context.resolvedParams = resolvedParams;
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 resolvedParamNames = new Set(
162
- orderedRequiredParams.map((p) => p.name)
163
- );
164
- alwaysPrompt.splice(
165
- 0,
166
- alwaysPrompt.length,
167
- ...alwaysPrompt.filter((p) => !resolvedParamNames.has(p.name))
168
- );
169
- trulyOptional.splice(
170
- 0,
171
- trulyOptional.length,
172
- ...trulyOptional.filter((p) => !resolvedParamNames.has(p.name))
173
- );
174
- }
175
- if (alwaysPrompt.length > 0) {
176
- const alwaysPromptNames = alwaysPrompt.map((p) => p.name);
177
- const alwaysPromptResolutionOrder = getLocalResolutionOrderForParams(
178
- alwaysPromptNames,
179
- localResolvers
180
- );
181
- const orderedAlwaysPromptParams = alwaysPromptResolutionOrder.map((paramName) => alwaysPrompt.find((p) => p.name === paramName)).filter((param) => param !== void 0);
182
- for (const param of orderedAlwaysPromptParams) {
183
- try {
184
- const value = await this.resolveParameter(
185
- param,
186
- context,
187
- functionName
188
- );
189
- this.setNestedValue(resolvedParams, param.path, value);
190
- context.resolvedParams = resolvedParams;
191
- } catch (error) {
192
- if (this.isUserCancellation(error)) {
193
- console.log(chalk3.yellow("\n\nOperation cancelled by user"));
194
- throw new ZapierCliUserCancellationError();
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
- if (trulyOptional.length > 0) {
201
- const optionalNames = trulyOptional.map((p) => p.name).join(", ");
202
- const shouldResolveOptional = await inquirer.prompt([
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 orderedOptionalParams = optionalResolutionOrder.map((paramName) => trulyOptional.find((p) => p.name === paramName)).filter((param) => param !== void 0);
217
- for (const param of orderedOptionalParams) {
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
- const finalResult = schema.safeParse(resolvedParams);
237
- if (!finalResult.success) {
238
- console.error(
239
- chalk3.red("\u274C Parameter validation failed after resolution:")
240
- );
241
- throw finalResult.error;
242
- }
243
- return finalResult.data;
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.10"};
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.10"};
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.10"};
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.10"};
2478
+ version: "0.34.12"};
2478
2479
 
2479
2480
  // src/telemetry/builders.ts
2480
2481
  function createCliBaseEvent(context = {}) {
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zapier/zapier-sdk-cli",
3
- "version": "0.34.10",
3
+ "version": "0.34.12",
4
4
  "description": "Command line interface for Zapier SDK",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -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 { ZapierSdk } from "@zapier/zapier-sdk";
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;