@zapier/zapier-sdk 0.13.6 → 0.13.7

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.mjs +1 -1
  4. package/package.json +7 -2
  5. package/src/api/auth.ts +0 -28
  6. package/src/api/client.ts +0 -491
  7. package/src/api/debug.test.ts +0 -76
  8. package/src/api/debug.ts +0 -154
  9. package/src/api/index.ts +0 -90
  10. package/src/api/polling.test.ts +0 -405
  11. package/src/api/polling.ts +0 -253
  12. package/src/api/schemas.ts +0 -465
  13. package/src/api/types.ts +0 -152
  14. package/src/auth.ts +0 -72
  15. package/src/constants.ts +0 -16
  16. package/src/index.ts +0 -111
  17. package/src/plugins/api/index.ts +0 -43
  18. package/src/plugins/apps/index.ts +0 -203
  19. package/src/plugins/apps/schemas.ts +0 -64
  20. package/src/plugins/eventEmission/builders.ts +0 -115
  21. package/src/plugins/eventEmission/index.test.ts +0 -169
  22. package/src/plugins/eventEmission/index.ts +0 -294
  23. package/src/plugins/eventEmission/transport.test.ts +0 -214
  24. package/src/plugins/eventEmission/transport.ts +0 -135
  25. package/src/plugins/eventEmission/types.ts +0 -58
  26. package/src/plugins/eventEmission/utils.ts +0 -121
  27. package/src/plugins/fetch/index.ts +0 -83
  28. package/src/plugins/fetch/schemas.ts +0 -37
  29. package/src/plugins/findFirstAuthentication/index.test.ts +0 -209
  30. package/src/plugins/findFirstAuthentication/index.ts +0 -68
  31. package/src/plugins/findFirstAuthentication/schemas.ts +0 -47
  32. package/src/plugins/findUniqueAuthentication/index.test.ts +0 -197
  33. package/src/plugins/findUniqueAuthentication/index.ts +0 -77
  34. package/src/plugins/findUniqueAuthentication/schemas.ts +0 -49
  35. package/src/plugins/getAction/index.test.ts +0 -239
  36. package/src/plugins/getAction/index.ts +0 -75
  37. package/src/plugins/getAction/schemas.ts +0 -41
  38. package/src/plugins/getApp/index.test.ts +0 -181
  39. package/src/plugins/getApp/index.ts +0 -60
  40. package/src/plugins/getApp/schemas.ts +0 -33
  41. package/src/plugins/getAuthentication/index.test.ts +0 -294
  42. package/src/plugins/getAuthentication/index.ts +0 -95
  43. package/src/plugins/getAuthentication/schemas.ts +0 -38
  44. package/src/plugins/getProfile/index.ts +0 -60
  45. package/src/plugins/getProfile/schemas.ts +0 -24
  46. package/src/plugins/listActions/index.test.ts +0 -526
  47. package/src/plugins/listActions/index.ts +0 -132
  48. package/src/plugins/listActions/schemas.ts +0 -55
  49. package/src/plugins/listApps/index.test.ts +0 -378
  50. package/src/plugins/listApps/index.ts +0 -159
  51. package/src/plugins/listApps/schemas.ts +0 -41
  52. package/src/plugins/listAuthentications/index.test.ts +0 -739
  53. package/src/plugins/listAuthentications/index.ts +0 -152
  54. package/src/plugins/listAuthentications/schemas.ts +0 -77
  55. package/src/plugins/listInputFieldChoices/index.test.ts +0 -653
  56. package/src/plugins/listInputFieldChoices/index.ts +0 -173
  57. package/src/plugins/listInputFieldChoices/schemas.ts +0 -125
  58. package/src/plugins/listInputFields/index.test.ts +0 -439
  59. package/src/plugins/listInputFields/index.ts +0 -294
  60. package/src/plugins/listInputFields/schemas.ts +0 -68
  61. package/src/plugins/manifest/index.test.ts +0 -776
  62. package/src/plugins/manifest/index.ts +0 -461
  63. package/src/plugins/manifest/schemas.ts +0 -60
  64. package/src/plugins/registry/index.ts +0 -160
  65. package/src/plugins/request/index.test.ts +0 -333
  66. package/src/plugins/request/index.ts +0 -105
  67. package/src/plugins/request/schemas.ts +0 -69
  68. package/src/plugins/runAction/index.test.ts +0 -388
  69. package/src/plugins/runAction/index.ts +0 -215
  70. package/src/plugins/runAction/schemas.ts +0 -60
  71. package/src/resolvers/actionKey.ts +0 -37
  72. package/src/resolvers/actionType.ts +0 -34
  73. package/src/resolvers/appKey.ts +0 -7
  74. package/src/resolvers/authenticationId.ts +0 -54
  75. package/src/resolvers/index.ts +0 -11
  76. package/src/resolvers/inputFieldKey.ts +0 -70
  77. package/src/resolvers/inputs.ts +0 -69
  78. package/src/schemas/Action.ts +0 -52
  79. package/src/schemas/App.ts +0 -45
  80. package/src/schemas/Auth.ts +0 -59
  81. package/src/schemas/Field.ts +0 -169
  82. package/src/schemas/Run.ts +0 -40
  83. package/src/schemas/UserProfile.ts +0 -60
  84. package/src/sdk.test.ts +0 -212
  85. package/src/sdk.ts +0 -178
  86. package/src/types/domain.test.ts +0 -50
  87. package/src/types/domain.ts +0 -66
  88. package/src/types/errors.ts +0 -278
  89. package/src/types/events.ts +0 -43
  90. package/src/types/functions.ts +0 -28
  91. package/src/types/optional-zapier-sdk-cli-login.d.ts +0 -37
  92. package/src/types/plugin.ts +0 -125
  93. package/src/types/properties.ts +0 -80
  94. package/src/types/sdk.ts +0 -111
  95. package/src/types/telemetry-events.ts +0 -85
  96. package/src/utils/array-utils.test.ts +0 -131
  97. package/src/utils/array-utils.ts +0 -41
  98. package/src/utils/domain-utils.test.ts +0 -433
  99. package/src/utils/domain-utils.ts +0 -267
  100. package/src/utils/file-utils.test.ts +0 -73
  101. package/src/utils/file-utils.ts +0 -94
  102. package/src/utils/function-utils.test.ts +0 -141
  103. package/src/utils/function-utils.ts +0 -245
  104. package/src/utils/pagination-utils.test.ts +0 -620
  105. package/src/utils/pagination-utils.ts +0 -242
  106. package/src/utils/schema-utils.ts +0 -207
  107. package/src/utils/string-utils.test.ts +0 -45
  108. package/src/utils/string-utils.ts +0 -54
  109. package/src/utils/validation.test.ts +0 -51
  110. package/src/utils/validation.ts +0 -44
  111. package/tsconfig.build.json +0 -18
  112. package/tsconfig.json +0 -20
  113. package/tsconfig.tsbuildinfo +0 -1
  114. package/tsup.config.ts +0 -23
@@ -1,294 +0,0 @@
1
- import type { Plugin, GetSdkType } from "../../types/plugin";
2
- import type { ApiClient } from "../../api";
3
- import type { NeedsRequest, NeedsResponse, Need } from "../../api/types";
4
- import type {
5
- InputFieldItem,
6
- InfoFieldItem,
7
- FieldsetItem,
8
- RootFieldItem,
9
- } from "../../types/domain";
10
- import {
11
- ListInputFieldsSchema,
12
- type ListInputFieldsOptions,
13
- type ListInputFieldsPage,
14
- } from "./schemas";
15
- import { ZapierConfigurationError, ZapierApiError } from "../../types/errors";
16
- import { createPaginatedFunction } from "../../utils/function-utils";
17
- import type { GetAppPluginProvides } from "../getApp";
18
- import type { GetActionPluginProvides } from "../getAction";
19
- import type { GetVersionedImplementationId } from "../manifest/schemas";
20
- import {
21
- appKeyResolver,
22
- actionTypeResolver,
23
- actionKeyResolver,
24
- authenticationIdResolver,
25
- inputsAllOptionalResolver,
26
- } from "../../resolvers";
27
- import { RootFieldItemSchema } from "../../schemas/Field";
28
- import { toTitleCase } from "../../utils/string-utils";
29
-
30
- // Enums for input field transformation
31
- enum InputFieldType {
32
- STRING = "STRING",
33
- NUMBER = "NUMBER",
34
- INTEGER = "INTEGER",
35
- BOOLEAN = "BOOLEAN",
36
- OBJECT = "OBJECT",
37
- ARRAY = "ARRAY",
38
- }
39
-
40
- enum InputFieldFormat {
41
- DATETIME = "DATETIME",
42
- SELECT = "SELECT",
43
- MULTILINE = "MULTILINE",
44
- FILE = "FILE",
45
- PASSWORD = "PASSWORD",
46
- CODE = "CODE",
47
- }
48
-
49
- enum ItemsType {
50
- STRING = "STRING",
51
- NUMBER = "NUMBER",
52
- INTEGER = "INTEGER",
53
- BOOLEAN = "BOOLEAN",
54
- OBJECT = "OBJECT",
55
- }
56
-
57
- // Transformation helper functions
58
- function getInputFieldTypeFromNeed(need: Need): InputFieldType {
59
- if (need.list) {
60
- return InputFieldType.ARRAY;
61
- }
62
-
63
- const typeMap: Record<string, InputFieldType> = {
64
- string: InputFieldType.STRING,
65
- decimal: InputFieldType.NUMBER,
66
- integer: InputFieldType.INTEGER,
67
- boolean: InputFieldType.BOOLEAN,
68
- dict: InputFieldType.OBJECT,
69
- };
70
-
71
- return typeMap[need.type || ""] || InputFieldType.STRING;
72
- }
73
-
74
- function getInputFieldFormatFromNeed(need: Need): InputFieldFormat | undefined {
75
- if (need.prefill || need.choices) {
76
- return InputFieldFormat.SELECT;
77
- }
78
-
79
- const formatMap: Record<string, InputFieldFormat> = {
80
- text: InputFieldFormat.MULTILINE,
81
- datetime: InputFieldFormat.DATETIME,
82
- file: InputFieldFormat.FILE,
83
- password: InputFieldFormat.PASSWORD,
84
- code: InputFieldFormat.CODE,
85
- };
86
-
87
- return formatMap[need.type || ""];
88
- }
89
-
90
- function getItemsTypeFromNeed(need: Need): ItemsType | undefined {
91
- if (!need.list) {
92
- return undefined;
93
- }
94
-
95
- const typeMap: Record<string, ItemsType> = {
96
- string: ItemsType.STRING,
97
- decimal: ItemsType.NUMBER,
98
- integer: ItemsType.INTEGER,
99
- boolean: ItemsType.BOOLEAN,
100
- dict: ItemsType.OBJECT,
101
- };
102
-
103
- return typeMap[need.type || ""] || ItemsType.STRING;
104
- }
105
-
106
- // Transform Need to InputFieldItem
107
- function transformNeedToInputFieldItem(need: Need): InputFieldItem {
108
- const itemsType = getItemsTypeFromNeed(need);
109
-
110
- return {
111
- type: "input_field",
112
- key: need.key,
113
- default_value: need.default || "",
114
- depends_on: need.depends_on || [],
115
- description: need.help_text || "",
116
- invalidates_input_fields: need.alters_custom_fields || false,
117
- is_required: need.required || false,
118
- placeholder: need.placeholder || "",
119
- title: need.label || "",
120
- value_type: getInputFieldTypeFromNeed(need),
121
- format: getInputFieldFormatFromNeed(need),
122
- items: itemsType ? { type: itemsType } : undefined,
123
- };
124
- }
125
-
126
- // Transform Need to InfoFieldItem (for copy fields)
127
- function transformNeedToInfoFieldItem(need: Need): InfoFieldItem {
128
- return {
129
- type: "info_field",
130
- key: need.key,
131
- description: need.help_text || "",
132
- title: need.label,
133
- };
134
- }
135
-
136
- // Transform needs to fields (similar to partnerapi compute_root_fieldset_from_needs)
137
- function transformNeedsToFields(needs: Need[]): RootFieldItem[] {
138
- const rootFields: (InputFieldItem | InfoFieldItem | FieldsetItem)[] = [];
139
- const fieldsetMap = new Map<string, FieldsetItem>();
140
-
141
- for (const need of needs) {
142
- if (need.computed) {
143
- // Computed needs (i.e zap_id for CodeAPI steps) are not shown by the
144
- // editor, hide them here too.
145
- continue;
146
- }
147
-
148
- // If parent_key is set, we need to ensure that a corresponding
149
- // fieldset exists, since we'll be adding this need to that fieldset
150
- if (need.parent_key) {
151
- let fieldset = fieldsetMap.get(need.parent_key);
152
- if (!fieldset) {
153
- fieldset = {
154
- type: "fieldset",
155
- key: need.parent_key,
156
- title: toTitleCase(need.parent_key),
157
- fields: [],
158
- };
159
- fieldsetMap.set(need.parent_key, fieldset);
160
- rootFields.push(fieldset);
161
- }
162
-
163
- // Add field to fieldset
164
- if (need.type === "copy" && need.help_text) {
165
- fieldset.fields.push(transformNeedToInfoFieldItem(need));
166
- } else {
167
- fieldset.fields.push(transformNeedToInputFieldItem(need));
168
- }
169
- } else {
170
- // Add field to root
171
- if (need.type === "copy" && need.help_text) {
172
- rootFields.push(transformNeedToInfoFieldItem(need));
173
- } else {
174
- rootFields.push(transformNeedToInputFieldItem(need));
175
- }
176
- }
177
- }
178
-
179
- return rootFields;
180
- }
181
-
182
- export interface ListInputFieldsPluginProvides {
183
- listInputFields: (options?: ListInputFieldsOptions) => Promise<{
184
- data: RootFieldItem[];
185
- nextCursor?: string;
186
- }> &
187
- AsyncIterable<{ data: RootFieldItem[]; nextCursor?: string }> & {
188
- items(): AsyncIterable<InputFieldItem | InfoFieldItem | FieldsetItem>;
189
- };
190
- context: {
191
- meta: {
192
- listInputFields: {
193
- inputSchema: typeof ListInputFieldsSchema;
194
- };
195
- };
196
- };
197
- }
198
-
199
- export const listInputFieldsPlugin: Plugin<
200
- GetSdkType<GetAppPluginProvides & GetActionPluginProvides>, // requires getApp and getAction in SDK
201
- {
202
- api: ApiClient;
203
- getVersionedImplementationId: GetVersionedImplementationId;
204
- }, // requires api and getVersionedImplementationId in context
205
- ListInputFieldsPluginProvides
206
- > = ({ sdk, context }) => {
207
- const listInputFields = createPaginatedFunction(
208
- async function listInputFieldsPage(
209
- options: ListInputFieldsOptions & { cursor?: string } & {
210
- pageSize: number;
211
- },
212
- ): Promise<ListInputFieldsPage> {
213
- // Note: This function ignores pageSize and cursor since it's not actually paginated internally
214
- const { api, getVersionedImplementationId } = context;
215
-
216
- // Extract parameters
217
- const { appKey, actionKey, actionType, authenticationId, inputs } =
218
- options;
219
-
220
- // Use the manifest plugin
221
- const selectedApi = await getVersionedImplementationId(appKey);
222
-
223
- if (!selectedApi) {
224
- throw new ZapierConfigurationError(
225
- "No current_implementation_id found for app",
226
- { configType: "current_implementation_id" },
227
- );
228
- }
229
-
230
- const { data: action } = await sdk.getAction({
231
- appKey,
232
- actionType,
233
- actionKey,
234
- });
235
-
236
- // Build needs request
237
- const needsRequest: NeedsRequest = {
238
- selected_api: selectedApi,
239
- action: action.key,
240
- type_of: actionType,
241
- params: inputs || {},
242
- };
243
-
244
- // Only include authentication_id if it's not null (skip authentication when null)
245
- if (authenticationId !== null) {
246
- needsRequest.authentication_id = authenticationId;
247
- }
248
-
249
- const needsData: NeedsResponse = await api.post(
250
- "/api/v4/implementations/needs/",
251
- needsRequest,
252
- );
253
-
254
- if (!needsData.success) {
255
- throw new ZapierApiError(
256
- `Failed to get action fields: ${
257
- needsData.errors?.join(", ") || "Unknown error"
258
- }`,
259
- );
260
- }
261
-
262
- // Transform Need objects to Root Fieldset with proper nesting
263
- const rootFieldset = transformNeedsToFields(needsData.needs || []);
264
-
265
- return {
266
- data: rootFieldset,
267
- nextCursor: undefined, // No pagination needed since we return all input fields
268
- };
269
- },
270
- ListInputFieldsSchema,
271
- );
272
-
273
- return {
274
- listInputFields,
275
- context: {
276
- meta: {
277
- listInputFields: {
278
- categories: ["action"],
279
- type: "list",
280
- itemType: "RootFieldItem",
281
- inputSchema: ListInputFieldsSchema,
282
- outputSchema: RootFieldItemSchema,
283
- resolvers: {
284
- appKey: appKeyResolver,
285
- actionType: actionTypeResolver,
286
- actionKey: actionKeyResolver,
287
- authenticationId: authenticationIdResolver,
288
- inputs: inputsAllOptionalResolver,
289
- },
290
- },
291
- },
292
- },
293
- };
294
- };
@@ -1,68 +0,0 @@
1
- import { z } from "zod";
2
- import {
3
- AppKeyPropertySchema,
4
- ActionTypePropertySchema,
5
- ActionKeyPropertySchema,
6
- AuthenticationIdPropertySchema,
7
- InputsPropertySchema,
8
- } from "../../types/properties";
9
- import type { RootFieldItem } from "../../types/domain";
10
- import type { PaginatedSdkFunction } from "../../types/functions";
11
- import type {
12
- ZapierConfigurationError,
13
- ZapierApiError,
14
- ZapierAuthenticationError,
15
- ZapierAppNotFoundError,
16
- ZapierValidationError,
17
- ZapierUnknownError,
18
- } from "../../types/errors";
19
-
20
- // Pure Zod schema - no resolver metadata!
21
- export const ListInputFieldsSchema = z
22
- .object({
23
- appKey: AppKeyPropertySchema,
24
- actionType: ActionTypePropertySchema,
25
- actionKey: ActionKeyPropertySchema,
26
- authenticationId: AuthenticationIdPropertySchema.nullable().optional(),
27
- inputs: InputsPropertySchema.optional().describe(
28
- "Current input values that may affect available fields",
29
- ),
30
- pageSize: z
31
- .number()
32
- .min(1)
33
- .optional()
34
- .describe("Number of input fields per page"),
35
- maxItems: z
36
- .number()
37
- .min(1)
38
- .optional()
39
- .describe("Maximum total items to return across all pages"),
40
- cursor: z.string().optional().describe("Cursor to start from"),
41
- })
42
- .describe("Get the input fields required for a specific action");
43
-
44
- // Type inferred from schema
45
- export type ListInputFieldsOptions = z.infer<typeof ListInputFieldsSchema>;
46
-
47
- // Error union for this function
48
- export type ListInputFieldsError =
49
- | ZapierConfigurationError
50
- | ZapierApiError
51
- | ZapierAuthenticationError
52
- | ZapierAppNotFoundError
53
- | ZapierValidationError
54
- | ZapierUnknownError;
55
-
56
- // Page result structure
57
- export interface ListInputFieldsPage {
58
- data: RootFieldItem[];
59
- nextCursor?: string;
60
- }
61
-
62
- // SDK function interface
63
- export interface ListInputFieldsSdkFunction {
64
- listInputFields: PaginatedSdkFunction<
65
- ListInputFieldsOptions,
66
- RootFieldItem[]
67
- >;
68
- }