@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.
- package/CHANGELOG.md +15 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +5 -5
- package/dist/api/client.test.d.ts +2 -0
- package/dist/api/client.test.d.ts.map +1 -0
- package/dist/api/client.test.js +80 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -1
- package/dist/api/schemas.d.ts +20 -20
- package/dist/api/types.d.ts +2 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/auth.d.ts +3 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.test.d.ts +2 -0
- package/dist/auth.test.d.ts.map +1 -0
- package/dist/auth.test.js +102 -0
- package/dist/constants.d.ts +4 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -4
- package/dist/index.cjs +89 -21
- package/dist/index.d.mts +21 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.mjs +88 -22
- package/dist/plugins/api/index.d.ts.map +1 -1
- package/dist/plugins/api/index.js +4 -1
- package/dist/plugins/eventEmission/index.d.ts +2 -0
- package/dist/plugins/eventEmission/index.d.ts.map +1 -1
- package/dist/plugins/eventEmission/index.js +35 -9
- package/dist/plugins/eventEmission/index.test.js +100 -0
- package/dist/schemas/Action.d.ts +2 -2
- package/dist/schemas/Auth.d.ts +4 -4
- package/dist/schemas/Field.d.ts +10 -10
- package/dist/sdk.test.js +121 -1
- package/dist/types/sdk.d.ts +3 -0
- package/dist/types/sdk.d.ts.map +1 -1
- package/dist/utils/url-utils.d.ts +19 -0
- package/dist/utils/url-utils.d.ts.map +1 -0
- package/dist/utils/url-utils.js +62 -0
- package/dist/utils/url-utils.test.d.ts +2 -0
- package/dist/utils/url-utils.test.d.ts.map +1 -0
- package/dist/utils/url-utils.test.js +103 -0
- package/package.json +8 -3
- package/src/api/auth.ts +0 -28
- package/src/api/client.ts +0 -491
- package/src/api/debug.test.ts +0 -76
- package/src/api/debug.ts +0 -154
- package/src/api/index.ts +0 -90
- package/src/api/polling.test.ts +0 -405
- package/src/api/polling.ts +0 -253
- package/src/api/schemas.ts +0 -465
- package/src/api/types.ts +0 -152
- package/src/auth.ts +0 -72
- package/src/constants.ts +0 -16
- package/src/index.ts +0 -111
- package/src/plugins/api/index.ts +0 -43
- package/src/plugins/apps/index.ts +0 -203
- package/src/plugins/apps/schemas.ts +0 -64
- package/src/plugins/eventEmission/builders.ts +0 -115
- package/src/plugins/eventEmission/index.test.ts +0 -169
- package/src/plugins/eventEmission/index.ts +0 -294
- package/src/plugins/eventEmission/transport.test.ts +0 -214
- package/src/plugins/eventEmission/transport.ts +0 -135
- package/src/plugins/eventEmission/types.ts +0 -58
- package/src/plugins/eventEmission/utils.ts +0 -121
- package/src/plugins/fetch/index.ts +0 -83
- package/src/plugins/fetch/schemas.ts +0 -37
- package/src/plugins/findFirstAuthentication/index.test.ts +0 -209
- package/src/plugins/findFirstAuthentication/index.ts +0 -68
- package/src/plugins/findFirstAuthentication/schemas.ts +0 -47
- package/src/plugins/findUniqueAuthentication/index.test.ts +0 -197
- package/src/plugins/findUniqueAuthentication/index.ts +0 -77
- package/src/plugins/findUniqueAuthentication/schemas.ts +0 -49
- package/src/plugins/getAction/index.test.ts +0 -239
- package/src/plugins/getAction/index.ts +0 -75
- package/src/plugins/getAction/schemas.ts +0 -41
- package/src/plugins/getApp/index.test.ts +0 -181
- package/src/plugins/getApp/index.ts +0 -60
- package/src/plugins/getApp/schemas.ts +0 -33
- package/src/plugins/getAuthentication/index.test.ts +0 -294
- package/src/plugins/getAuthentication/index.ts +0 -95
- package/src/plugins/getAuthentication/schemas.ts +0 -38
- package/src/plugins/getProfile/index.ts +0 -60
- package/src/plugins/getProfile/schemas.ts +0 -24
- package/src/plugins/listActions/index.test.ts +0 -526
- package/src/plugins/listActions/index.ts +0 -132
- package/src/plugins/listActions/schemas.ts +0 -55
- package/src/plugins/listApps/index.test.ts +0 -378
- package/src/plugins/listApps/index.ts +0 -159
- package/src/plugins/listApps/schemas.ts +0 -41
- package/src/plugins/listAuthentications/index.test.ts +0 -739
- package/src/plugins/listAuthentications/index.ts +0 -152
- package/src/plugins/listAuthentications/schemas.ts +0 -77
- package/src/plugins/listInputFieldChoices/index.test.ts +0 -653
- package/src/plugins/listInputFieldChoices/index.ts +0 -173
- package/src/plugins/listInputFieldChoices/schemas.ts +0 -125
- package/src/plugins/listInputFields/index.test.ts +0 -439
- package/src/plugins/listInputFields/index.ts +0 -294
- package/src/plugins/listInputFields/schemas.ts +0 -68
- package/src/plugins/manifest/index.test.ts +0 -776
- package/src/plugins/manifest/index.ts +0 -461
- package/src/plugins/manifest/schemas.ts +0 -60
- package/src/plugins/registry/index.ts +0 -160
- package/src/plugins/request/index.test.ts +0 -333
- package/src/plugins/request/index.ts +0 -105
- package/src/plugins/request/schemas.ts +0 -69
- package/src/plugins/runAction/index.test.ts +0 -388
- package/src/plugins/runAction/index.ts +0 -215
- package/src/plugins/runAction/schemas.ts +0 -60
- package/src/resolvers/actionKey.ts +0 -37
- package/src/resolvers/actionType.ts +0 -34
- package/src/resolvers/appKey.ts +0 -7
- package/src/resolvers/authenticationId.ts +0 -54
- package/src/resolvers/index.ts +0 -11
- package/src/resolvers/inputFieldKey.ts +0 -70
- package/src/resolvers/inputs.ts +0 -69
- package/src/schemas/Action.ts +0 -52
- package/src/schemas/App.ts +0 -45
- package/src/schemas/Auth.ts +0 -59
- package/src/schemas/Field.ts +0 -169
- package/src/schemas/Run.ts +0 -40
- package/src/schemas/UserProfile.ts +0 -60
- package/src/sdk.test.ts +0 -212
- package/src/sdk.ts +0 -178
- package/src/types/domain.test.ts +0 -50
- package/src/types/domain.ts +0 -66
- package/src/types/errors.ts +0 -278
- package/src/types/events.ts +0 -43
- package/src/types/functions.ts +0 -28
- package/src/types/optional-zapier-sdk-cli-login.d.ts +0 -37
- package/src/types/plugin.ts +0 -125
- package/src/types/properties.ts +0 -80
- package/src/types/sdk.ts +0 -111
- package/src/types/telemetry-events.ts +0 -85
- package/src/utils/array-utils.test.ts +0 -131
- package/src/utils/array-utils.ts +0 -41
- package/src/utils/domain-utils.test.ts +0 -433
- package/src/utils/domain-utils.ts +0 -267
- package/src/utils/file-utils.test.ts +0 -73
- package/src/utils/file-utils.ts +0 -94
- package/src/utils/function-utils.test.ts +0 -141
- package/src/utils/function-utils.ts +0 -245
- package/src/utils/pagination-utils.test.ts +0 -620
- package/src/utils/pagination-utils.ts +0 -242
- package/src/utils/schema-utils.ts +0 -207
- package/src/utils/string-utils.test.ts +0 -45
- package/src/utils/string-utils.ts +0 -54
- package/src/utils/validation.test.ts +0 -51
- package/src/utils/validation.ts +0 -44
- package/tsconfig.build.json +0 -18
- package/tsconfig.json +0 -20
- package/tsconfig.tsbuildinfo +0 -1
- 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
|
-
}
|