@zapier/zapier-sdk 0.13.6 → 0.13.8

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 (155) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +5 -5
  4. package/dist/api/client.test.d.ts +2 -0
  5. package/dist/api/client.test.d.ts.map +1 -0
  6. package/dist/api/client.test.js +80 -0
  7. package/dist/api/index.d.ts +1 -0
  8. package/dist/api/index.d.ts.map +1 -1
  9. package/dist/api/index.js +3 -1
  10. package/dist/api/schemas.d.ts +20 -20
  11. package/dist/api/types.d.ts +2 -0
  12. package/dist/api/types.d.ts.map +1 -1
  13. package/dist/auth.d.ts +3 -0
  14. package/dist/auth.d.ts.map +1 -1
  15. package/dist/auth.test.d.ts +2 -0
  16. package/dist/auth.test.d.ts.map +1 -0
  17. package/dist/auth.test.js +102 -0
  18. package/dist/constants.d.ts +4 -4
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +4 -4
  21. package/dist/index.cjs +89 -21
  22. package/dist/index.d.mts +21 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -0
  26. package/dist/index.mjs +88 -22
  27. package/dist/plugins/api/index.d.ts.map +1 -1
  28. package/dist/plugins/api/index.js +4 -1
  29. package/dist/plugins/eventEmission/index.d.ts +2 -0
  30. package/dist/plugins/eventEmission/index.d.ts.map +1 -1
  31. package/dist/plugins/eventEmission/index.js +35 -9
  32. package/dist/plugins/eventEmission/index.test.js +100 -0
  33. package/dist/schemas/Action.d.ts +2 -2
  34. package/dist/schemas/Auth.d.ts +4 -4
  35. package/dist/schemas/Field.d.ts +10 -10
  36. package/dist/sdk.test.js +121 -1
  37. package/dist/types/sdk.d.ts +3 -0
  38. package/dist/types/sdk.d.ts.map +1 -1
  39. package/dist/utils/url-utils.d.ts +19 -0
  40. package/dist/utils/url-utils.d.ts.map +1 -0
  41. package/dist/utils/url-utils.js +62 -0
  42. package/dist/utils/url-utils.test.d.ts +2 -0
  43. package/dist/utils/url-utils.test.d.ts.map +1 -0
  44. package/dist/utils/url-utils.test.js +103 -0
  45. package/package.json +8 -3
  46. package/src/api/auth.ts +0 -28
  47. package/src/api/client.ts +0 -491
  48. package/src/api/debug.test.ts +0 -76
  49. package/src/api/debug.ts +0 -154
  50. package/src/api/index.ts +0 -90
  51. package/src/api/polling.test.ts +0 -405
  52. package/src/api/polling.ts +0 -253
  53. package/src/api/schemas.ts +0 -465
  54. package/src/api/types.ts +0 -152
  55. package/src/auth.ts +0 -72
  56. package/src/constants.ts +0 -16
  57. package/src/index.ts +0 -111
  58. package/src/plugins/api/index.ts +0 -43
  59. package/src/plugins/apps/index.ts +0 -203
  60. package/src/plugins/apps/schemas.ts +0 -64
  61. package/src/plugins/eventEmission/builders.ts +0 -115
  62. package/src/plugins/eventEmission/index.test.ts +0 -169
  63. package/src/plugins/eventEmission/index.ts +0 -294
  64. package/src/plugins/eventEmission/transport.test.ts +0 -214
  65. package/src/plugins/eventEmission/transport.ts +0 -135
  66. package/src/plugins/eventEmission/types.ts +0 -58
  67. package/src/plugins/eventEmission/utils.ts +0 -121
  68. package/src/plugins/fetch/index.ts +0 -83
  69. package/src/plugins/fetch/schemas.ts +0 -37
  70. package/src/plugins/findFirstAuthentication/index.test.ts +0 -209
  71. package/src/plugins/findFirstAuthentication/index.ts +0 -68
  72. package/src/plugins/findFirstAuthentication/schemas.ts +0 -47
  73. package/src/plugins/findUniqueAuthentication/index.test.ts +0 -197
  74. package/src/plugins/findUniqueAuthentication/index.ts +0 -77
  75. package/src/plugins/findUniqueAuthentication/schemas.ts +0 -49
  76. package/src/plugins/getAction/index.test.ts +0 -239
  77. package/src/plugins/getAction/index.ts +0 -75
  78. package/src/plugins/getAction/schemas.ts +0 -41
  79. package/src/plugins/getApp/index.test.ts +0 -181
  80. package/src/plugins/getApp/index.ts +0 -60
  81. package/src/plugins/getApp/schemas.ts +0 -33
  82. package/src/plugins/getAuthentication/index.test.ts +0 -294
  83. package/src/plugins/getAuthentication/index.ts +0 -95
  84. package/src/plugins/getAuthentication/schemas.ts +0 -38
  85. package/src/plugins/getProfile/index.ts +0 -60
  86. package/src/plugins/getProfile/schemas.ts +0 -24
  87. package/src/plugins/listActions/index.test.ts +0 -526
  88. package/src/plugins/listActions/index.ts +0 -132
  89. package/src/plugins/listActions/schemas.ts +0 -55
  90. package/src/plugins/listApps/index.test.ts +0 -378
  91. package/src/plugins/listApps/index.ts +0 -159
  92. package/src/plugins/listApps/schemas.ts +0 -41
  93. package/src/plugins/listAuthentications/index.test.ts +0 -739
  94. package/src/plugins/listAuthentications/index.ts +0 -152
  95. package/src/plugins/listAuthentications/schemas.ts +0 -77
  96. package/src/plugins/listInputFieldChoices/index.test.ts +0 -653
  97. package/src/plugins/listInputFieldChoices/index.ts +0 -173
  98. package/src/plugins/listInputFieldChoices/schemas.ts +0 -125
  99. package/src/plugins/listInputFields/index.test.ts +0 -439
  100. package/src/plugins/listInputFields/index.ts +0 -294
  101. package/src/plugins/listInputFields/schemas.ts +0 -68
  102. package/src/plugins/manifest/index.test.ts +0 -776
  103. package/src/plugins/manifest/index.ts +0 -461
  104. package/src/plugins/manifest/schemas.ts +0 -60
  105. package/src/plugins/registry/index.ts +0 -160
  106. package/src/plugins/request/index.test.ts +0 -333
  107. package/src/plugins/request/index.ts +0 -105
  108. package/src/plugins/request/schemas.ts +0 -69
  109. package/src/plugins/runAction/index.test.ts +0 -388
  110. package/src/plugins/runAction/index.ts +0 -215
  111. package/src/plugins/runAction/schemas.ts +0 -60
  112. package/src/resolvers/actionKey.ts +0 -37
  113. package/src/resolvers/actionType.ts +0 -34
  114. package/src/resolvers/appKey.ts +0 -7
  115. package/src/resolvers/authenticationId.ts +0 -54
  116. package/src/resolvers/index.ts +0 -11
  117. package/src/resolvers/inputFieldKey.ts +0 -70
  118. package/src/resolvers/inputs.ts +0 -69
  119. package/src/schemas/Action.ts +0 -52
  120. package/src/schemas/App.ts +0 -45
  121. package/src/schemas/Auth.ts +0 -59
  122. package/src/schemas/Field.ts +0 -169
  123. package/src/schemas/Run.ts +0 -40
  124. package/src/schemas/UserProfile.ts +0 -60
  125. package/src/sdk.test.ts +0 -212
  126. package/src/sdk.ts +0 -178
  127. package/src/types/domain.test.ts +0 -50
  128. package/src/types/domain.ts +0 -66
  129. package/src/types/errors.ts +0 -278
  130. package/src/types/events.ts +0 -43
  131. package/src/types/functions.ts +0 -28
  132. package/src/types/optional-zapier-sdk-cli-login.d.ts +0 -37
  133. package/src/types/plugin.ts +0 -125
  134. package/src/types/properties.ts +0 -80
  135. package/src/types/sdk.ts +0 -111
  136. package/src/types/telemetry-events.ts +0 -85
  137. package/src/utils/array-utils.test.ts +0 -131
  138. package/src/utils/array-utils.ts +0 -41
  139. package/src/utils/domain-utils.test.ts +0 -433
  140. package/src/utils/domain-utils.ts +0 -267
  141. package/src/utils/file-utils.test.ts +0 -73
  142. package/src/utils/file-utils.ts +0 -94
  143. package/src/utils/function-utils.test.ts +0 -141
  144. package/src/utils/function-utils.ts +0 -245
  145. package/src/utils/pagination-utils.test.ts +0 -620
  146. package/src/utils/pagination-utils.ts +0 -242
  147. package/src/utils/schema-utils.ts +0 -207
  148. package/src/utils/string-utils.test.ts +0 -45
  149. package/src/utils/string-utils.ts +0 -54
  150. package/src/utils/validation.test.ts +0 -51
  151. package/src/utils/validation.ts +0 -44
  152. package/tsconfig.build.json +0 -18
  153. package/tsconfig.json +0 -20
  154. package/tsconfig.tsbuildinfo +0 -1
  155. package/tsup.config.ts +0 -23
@@ -1,245 +0,0 @@
1
- /**
2
- * Generic utility functions for creating paginated SDK functions
3
- */
4
-
5
- import type { z } from "zod";
6
- import { ZapierError, ZapierUnknownError } from "../types/errors";
7
- import { paginate } from "./pagination-utils";
8
- import { createValidator, validateOptions } from "./validation";
9
-
10
- /**
11
- * Helper function to extract cursor from pagination data
12
- */
13
- export function extractCursor(
14
- data: { next?: string | null } | null | undefined,
15
- ): string | undefined {
16
- if (!data?.next) {
17
- return undefined;
18
- }
19
-
20
- try {
21
- const urlObj = new URL(data.next);
22
- const offset = urlObj.searchParams.get("offset");
23
- return offset || undefined;
24
- } catch {
25
- return undefined;
26
- }
27
- }
28
-
29
- /**
30
- * Helper function to convert unknown errors to SDK errors
31
- */
32
- function normalizeError(error: unknown): ZapierError {
33
- if (error instanceof ZapierError) {
34
- return error;
35
- }
36
-
37
- const message = error instanceof Error ? error.message : String(error);
38
- return new ZapierUnknownError(`Unknown error: ${message}`, { cause: error });
39
- }
40
-
41
- /**
42
- * Higher-order function that creates a function from a core function
43
- *
44
- * @param coreFn - Function that returns T directly or throws errors
45
- * @param schema - Optional Zod schema for validation
46
- * @returns A function that normalizes and rethrows errors
47
- */
48
- export function createFunction<
49
- TOptions,
50
- TResult,
51
- TSchemaOptions extends TOptions = TOptions,
52
- >(
53
- coreFn: (options: TOptions) => Promise<TResult>,
54
- schema?: z.ZodSchema<TSchemaOptions>,
55
- ) {
56
- const functionName = coreFn.name;
57
-
58
- // Create a named function using dynamic property access
59
- const namedFunctions = {
60
- [functionName]: async function (options?: TOptions): Promise<TResult> {
61
- try {
62
- // Convert undefined options to empty object
63
- const normalizedOptions = (options ?? {}) as TOptions;
64
-
65
- if (schema) {
66
- const validatedOptions = validateOptions(schema, normalizedOptions);
67
- return await coreFn({
68
- ...normalizedOptions,
69
- ...validatedOptions,
70
- });
71
- }
72
- return await coreFn(normalizedOptions);
73
- } catch (error) {
74
- // Catch and normalize any errors, then rethrow
75
- throw normalizeError(error);
76
- }
77
- },
78
- };
79
-
80
- return namedFunctions[functionName];
81
- }
82
-
83
- /**
84
- * Higher-order function that creates a page function that wraps results in {data}
85
- * Internal utility used by createPaginatedFunction
86
- */
87
- function createPageFunction<TOptions, TResult>(
88
- coreFn: (options: TOptions) => Promise<TResult>,
89
- ) {
90
- const functionName = coreFn.name + "Page";
91
-
92
- // Create a named function using dynamic property access
93
- const namedFunctions = {
94
- [functionName]: async function (
95
- options: TOptions & {
96
- cursor?: string;
97
- maxItems?: number;
98
- pageSize?: number;
99
- },
100
- ): Promise<{ data: any[]; nextCursor?: string }> {
101
- try {
102
- const result = await coreFn(options);
103
-
104
- // If result already has a data property, ensure it's an array
105
- if (result && typeof result === "object" && "data" in result) {
106
- const data = (result as any).data;
107
- return {
108
- data: Array.isArray(data) ? data : [data],
109
- nextCursor: (result as any).nextCursor,
110
- };
111
- }
112
-
113
- // If result is an array, wrap in {data: result}
114
- if (Array.isArray(result)) {
115
- return { data: result };
116
- }
117
-
118
- // If result is non-array, wrap in {data: [result]}
119
- return { data: [result] };
120
- } catch (error) {
121
- // Catch and normalize any errors, then rethrow
122
- throw normalizeError(error);
123
- }
124
- },
125
- };
126
-
127
- return namedFunctions[functionName];
128
- }
129
-
130
- /**
131
- * Higher-order function that creates a paginated function that wraps results in {data}
132
- *
133
- * @param coreFn - Function that returns T directly or throws errors
134
- * @returns A function that normalizes errors and wraps results in {data}
135
- */
136
- type PaginatedResult<TResult> = TResult extends {
137
- data: any;
138
- nextCursor?: string;
139
- }
140
- ? TResult
141
- : { data: TResult; nextCursor?: string };
142
-
143
- type ItemType<TResult> = TResult extends { data: infer TData }
144
- ? TData extends readonly (infer TItem)[]
145
- ? TItem
146
- : TData
147
- : TResult extends readonly (infer TItem)[]
148
- ? TItem
149
- : TResult;
150
-
151
- export function createPaginatedFunction<
152
- TOptions,
153
- TResult,
154
- TSchemaOptions extends TOptions = TOptions,
155
- >(
156
- coreFn: (options: TOptions & { pageSize: number }) => Promise<TResult>,
157
- schema?: z.ZodSchema<TSchemaOptions>,
158
- ): (
159
- options?: TOptions & {
160
- cursor?: string;
161
- pageSize?: number;
162
- maxItems?: number;
163
- },
164
- ) => Promise<PaginatedResult<TResult>> &
165
- AsyncIterable<PaginatedResult<TResult>> & {
166
- items(): AsyncIterable<ItemType<TResult>>;
167
- } {
168
- const pageFunction = createPageFunction(coreFn);
169
- const functionName = coreFn.name;
170
- const validator = schema ? createValidator(schema) : null;
171
-
172
- // Create the main paginated function
173
- const namedFunctions = {
174
- [functionName]: function (
175
- options?: TOptions & {
176
- cursor?: string;
177
- pageSize?: number;
178
- maxItems?: number;
179
- },
180
- ) {
181
- // Convert undefined options to empty object
182
- const normalizedOptions = (options ?? {}) as TOptions & {
183
- cursor?: string;
184
- pageSize?: number;
185
- maxItems?: number;
186
- };
187
-
188
- // Validate options if schema provided (validated fields take precedence)
189
- const validatedOptions = {
190
- ...normalizedOptions,
191
- ...(validator ? validator(normalizedOptions) : normalizedOptions),
192
- };
193
-
194
- // Set default pageSize if not provided
195
- const pageSize = validatedOptions.pageSize || 100;
196
- const optimizedOptions = {
197
- ...validatedOptions,
198
- pageSize,
199
- };
200
-
201
- const iterator = paginate(pageFunction, optimizedOptions as any);
202
-
203
- // Get a promise for the first iteration
204
- const firstPagePromise = iterator.next().then((result) => {
205
- if (result.done) {
206
- throw new Error("Paginate should always iterate at least once");
207
- }
208
- return result.value;
209
- });
210
-
211
- // Add Symbol.asyncIterator to make the promise iterable
212
- return Object.assign(firstPagePromise, {
213
- [Symbol.asyncIterator]: async function* () {
214
- // Yield the first page (await the promise)
215
- yield await firstPagePromise;
216
-
217
- // Yield the rest of the pages
218
- for await (const page of iterator) {
219
- yield page;
220
- }
221
- },
222
- items: function () {
223
- return {
224
- [Symbol.asyncIterator]: async function* () {
225
- // Yield the first page items
226
- const firstPage = await firstPagePromise;
227
- for (const item of firstPage.data) {
228
- yield item;
229
- }
230
-
231
- // Yield items from the rest of the pages
232
- for await (const page of iterator) {
233
- for (const item of page.data) {
234
- yield item;
235
- }
236
- }
237
- },
238
- };
239
- },
240
- });
241
- },
242
- };
243
-
244
- return namedFunctions[functionName] as any;
245
- }