@zapier/zapier-sdk 0.33.4 → 0.34.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/types/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C;;GAEG;AAGH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,2CAA2C;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAGD,MAAM,MAAM,oBAAoB,CAAC,QAAQ,EAAE,KAAK,IAAI,CAClD,OAAO,EAAE,QAAQ,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC,GAC7B,aAAa,CAAC;IAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IACtD,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/types/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C;;GAEG;AAGH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,2CAA2C;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,OAAO;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,MAAM,oBAAoB,CAAC,QAAQ,EAAE,KAAK,IAAI,CAClD,OAAO,EAAE,QAAQ,KACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAC1B,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG;IAC9B,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC"}
@@ -126,6 +126,8 @@ export interface FunctionRegistryEntry {
126
126
  deprecatedParameters?: string[];
127
127
  /** Short flag aliases for CLI options (e.g., { request: "X", header: "H" }) */
128
128
  aliases?: Record<string, string>;
129
+ /** Defaults to true. Set to false to suppress --json (e.g. login/logout/init). */
130
+ supportsJsonOutput: boolean;
129
131
  }
130
132
  export interface FunctionDeprecation {
131
133
  /** User-facing deprecation message for why/how to migrate */
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,20 @@ type TPageOptions<TOptions> = TOptions extends undefined ? {
7
7
  maxItems?: number;
8
8
  pageSize?: number;
9
9
  };
10
+ export declare function decodeIncomingCursor(incoming?: string): {
11
+ offset: number;
12
+ cursor: string | undefined;
13
+ };
10
14
  export declare function createPrefixedCursor(prefix: string, cursor: string | undefined): string;
11
15
  export declare function splitPrefixedCursor(cursor: string | undefined, prefixes?: string[]): [string | undefined, string | undefined];
12
16
  /**
13
- * Utility for paginating through API endpoints that return cursor-based pages
17
+ * Utility for paginating through API endpoints that return cursor-based pages.
18
+ * Accepts and yields SDK-encoded cursor envelopes. Any incoming cursor is decoded
19
+ * before being passed to the page function; all outgoing cursors are encoded.
14
20
  *
15
21
  * @param pageFunction - Function that fetches a single page with {data, nextCursor} structure
16
22
  * @param pageOptions - Options to pass to the page function (cursor will be managed automatically)
17
- * @returns Async iterator that yields pages
23
+ * @returns Async iterator that yields pages with encoded cursors
18
24
  */
19
25
  export declare function paginateMaxItems<TOptions, TPage extends {
20
26
  data: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"pagination-utils.d.ts","sourceRoot":"","sources":["../../src/utils/pagination-utils.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS,SAAS,GACpD;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,QAAQ,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAoCzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAuB,gBAAgB,CACrC,QAAQ,EACR,KAAK,SAAS;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAElD,YAAY,EAAE,CACZ,OAAO,EAAE,QAAQ,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KACE,OAAO,CAAC,KAAK,CAAC,EACnB,WAAW,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GACnC,qBAAqB,CAAC,KAAK,CAAC,CAoC9B;AAED,wBAAuB,gBAAgB,CACrC,QAAQ,EACR,KAAK,SAAS;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAElD,YAAY,EAAE,CACZ,OAAO,EAAE,QAAQ,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KACE,OAAO,CAAC,KAAK,CAAC,EACnB,WAAW,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GACnC,qBAAqB,CAAC,KAAK,CAAC,CAiG9B;AAED,eAAO,MAAM,QAAQ,yBAAmB,CAAC"}
1
+ {"version":3,"file":"pagination-utils.d.ts","sourceRoot":"","sources":["../../src/utils/pagination-utils.ts"],"names":[],"mappings":"AAsBA,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS,SAAS,GACpD;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,QAAQ,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmCzE,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAyBA;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAkB1C;AAuDD;;;;;;;;GAQG;AACH,wBAAuB,gBAAgB,CACrC,QAAQ,EACR,KAAK,SAAS;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAElD,YAAY,EAAE,CACZ,OAAO,EAAE,QAAQ,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KACE,OAAO,CAAC,KAAK,CAAC,EACnB,WAAW,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GACnC,qBAAqB,CAAC,KAAK,CAAC,CAkB9B;AAED,wBAAuB,gBAAgB,CACrC,QAAQ,EACR,KAAK,SAAS;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAElD,YAAY,EAAE,CACZ,OAAO,EAAE,QAAQ,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KACE,OAAO,CAAC,KAAK,CAAC,EACnB,WAAW,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GACnC,qBAAqB,CAAC,KAAK,CAAC,CA2H9B;AAED,eAAO,MAAM,QAAQ,yBAAmB,CAAC"}
@@ -1,29 +1,53 @@
1
- const offsetCursorMarker = "$$offset$$";
2
- function splitOffsetCursor(cursor) {
3
- if (!cursor) {
4
- return [0, cursor];
1
+ const CURSOR_VERSION = 1;
2
+ const CURSOR_SOURCE = {
3
+ API: "api",
4
+ SDK: "sdk",
5
+ };
6
+ function encodeBase64(str) {
7
+ return btoa(Array.from(new TextEncoder().encode(str), (b) => String.fromCharCode(b)).join(""));
8
+ }
9
+ function decodeBase64(str) {
10
+ return new TextDecoder().decode(Uint8Array.from(atob(str), (c) => c.charCodeAt(0)));
11
+ }
12
+ function encodeApiCursor(cursor) {
13
+ const envelope = {
14
+ v: CURSOR_VERSION,
15
+ source: CURSOR_SOURCE.API,
16
+ cursor,
17
+ };
18
+ return encodeBase64(JSON.stringify(envelope));
19
+ }
20
+ function encodeSdkCursor(offset, cursor) {
21
+ const envelope = {
22
+ v: CURSOR_VERSION,
23
+ source: CURSOR_SOURCE.SDK,
24
+ cursor,
25
+ offset,
26
+ };
27
+ return encodeBase64(JSON.stringify(envelope));
28
+ }
29
+ export function decodeIncomingCursor(incoming) {
30
+ if (!incoming) {
31
+ return { offset: 0, cursor: undefined };
5
32
  }
6
33
  try {
7
- const parsedCursor = JSON.parse(cursor);
8
- if (!Array.isArray(parsedCursor)) {
9
- return [0, cursor];
34
+ const decoded = decodeBase64(incoming);
35
+ const envelope = JSON.parse(decoded);
36
+ if (envelope.v !== CURSOR_VERSION) {
37
+ return { offset: 0, cursor: incoming };
10
38
  }
11
- const [marker, offset, currentCursor] = parsedCursor;
12
- if (marker !== offsetCursorMarker) {
13
- return [0, cursor];
39
+ if (envelope.source === CURSOR_SOURCE.SDK) {
40
+ return { offset: envelope.offset ?? 0, cursor: envelope.cursor };
14
41
  }
15
- if (typeof offset !== "number") {
16
- return [0, cursor];
42
+ if (envelope.source === CURSOR_SOURCE.API) {
43
+ return { offset: 0, cursor: envelope.cursor };
17
44
  }
18
- return [offset, currentCursor];
45
+ return { offset: 0, cursor: incoming };
19
46
  }
20
47
  catch {
21
- return [0, cursor];
48
+ return { offset: 0, cursor: incoming };
22
49
  }
23
50
  }
24
- function createOffsetCursor(offset, currentCursor) {
25
- return JSON.stringify([offsetCursorMarker, offset, currentCursor]);
26
- }
27
51
  export function createPrefixedCursor(prefix, cursor) {
28
52
  if (!cursor) {
29
53
  return `${prefix}::`;
@@ -45,13 +69,10 @@ export function splitPrefixedCursor(cursor, prefixes) {
45
69
  return [prefix, cursor];
46
70
  }
47
71
  /**
48
- * Utility for paginating through API endpoints that return cursor-based pages
49
- *
50
- * @param pageFunction - Function that fetches a single page with {data, nextCursor} structure
51
- * @param pageOptions - Options to pass to the page function (cursor will be managed automatically)
52
- * @returns Async iterator that yields pages
72
+ * Internal primitive: paginates through a page function using raw (unencoded) cursors.
73
+ * Encoding and decoding of cursors is the responsibility of the public wrappers.
53
74
  */
54
- export async function* paginateMaxItems(pageFunction, pageOptions) {
75
+ async function* paginateMaxItemsWithUnencodedCursor(pageFunction, pageOptions) {
55
76
  let cursor = pageOptions?.cursor;
56
77
  let totalItemsYielded = 0;
57
78
  const maxItems = pageOptions?.maxItems;
@@ -68,12 +89,11 @@ export async function* paginateMaxItems(pageFunction, pageOptions) {
68
89
  if (maxItems !== undefined) {
69
90
  const remainingItems = maxItems - totalItemsYielded;
70
91
  if (page.data.length >= remainingItems) {
71
- const yieldedPage = {
92
+ yield {
72
93
  ...page,
73
94
  data: page.data.slice(0, remainingItems),
74
95
  nextCursor: undefined,
75
96
  };
76
- yield yieldedPage;
77
97
  break;
78
98
  }
79
99
  }
@@ -82,18 +102,60 @@ export async function* paginateMaxItems(pageFunction, pageOptions) {
82
102
  cursor = page.nextCursor;
83
103
  } while (cursor);
84
104
  }
105
+ /**
106
+ * Utility for paginating through API endpoints that return cursor-based pages.
107
+ * Accepts and yields SDK-encoded cursor envelopes. Any incoming cursor is decoded
108
+ * before being passed to the page function; all outgoing cursors are encoded.
109
+ *
110
+ * @param pageFunction - Function that fetches a single page with {data, nextCursor} structure
111
+ * @param pageOptions - Options to pass to the page function (cursor will be managed automatically)
112
+ * @returns Async iterator that yields pages with encoded cursors
113
+ */
114
+ export async function* paginateMaxItems(pageFunction, pageOptions) {
115
+ const { cursor } = decodeIncomingCursor(pageOptions?.cursor);
116
+ const options = {
117
+ ...(pageOptions || {}),
118
+ cursor,
119
+ };
120
+ for await (const page of paginateMaxItemsWithUnencodedCursor(pageFunction, options)) {
121
+ yield {
122
+ ...page,
123
+ nextCursor: page.nextCursor
124
+ ? encodeApiCursor(page.nextCursor)
125
+ : undefined,
126
+ };
127
+ }
128
+ }
85
129
  export async function* paginateBuffered(pageFunction, pageOptions) {
86
130
  const pageSize = pageOptions?.pageSize;
87
- const [cursorOffset, currentCursor] = splitOffsetCursor(pageOptions?.cursor);
131
+ const { offset: cursorOffset, cursor: initialCursor } = decodeIncomingCursor(pageOptions?.cursor);
132
+ const requestedMaxItems = pageOptions?.maxItems;
88
133
  const options = {
89
134
  ...(pageOptions || {}),
90
- cursor: currentCursor,
135
+ cursor: initialCursor,
136
+ // SDK cursors can carry an offset into a raw backend page. Since maxItems
137
+ // is expected to be relative to the resumed position, we add that offset
138
+ // so raw pagination still yields enough items after offset slicing.
139
+ maxItems: requestedMaxItems !== undefined && cursorOffset > 0
140
+ ? requestedMaxItems + cursorOffset
141
+ : requestedMaxItems,
91
142
  };
92
- const iterator = paginateMaxItems(pageFunction, options);
143
+ if (!pageSize) {
144
+ for await (const page of paginateMaxItemsWithUnencodedCursor(pageFunction, options)) {
145
+ yield {
146
+ ...page,
147
+ nextCursor: page.nextCursor
148
+ ? encodeApiCursor(page.nextCursor)
149
+ : undefined,
150
+ };
151
+ }
152
+ return;
153
+ }
93
154
  let bufferedPages = [];
94
155
  let isFirstPage = true;
95
- let cursor;
96
- for await (let page of iterator) {
156
+ let rawCursor;
157
+ for await (let page of paginateMaxItemsWithUnencodedCursor(pageFunction, options)) {
158
+ const nextRawCursor = page.nextCursor;
97
159
  if (isFirstPage) {
98
160
  isFirstPage = false;
99
161
  if (cursorOffset) {
@@ -103,16 +165,11 @@ export async function* paginateBuffered(pageFunction, pageOptions) {
103
165
  };
104
166
  }
105
167
  }
106
- if (!pageSize) {
107
- yield page;
108
- cursor = page.nextCursor;
109
- continue;
110
- }
111
- const bufferedLength = bufferedPages.reduce((acc, page) => acc + page.data.length, 0);
168
+ const bufferedLength = bufferedPages.reduce((acc, p) => acc + p.data.length, 0);
112
169
  // If we don't have enough to fill a page, buffer this page.
113
170
  if (bufferedLength + page.data.length < pageSize) {
114
171
  bufferedPages.push(page);
115
- cursor = page.nextCursor;
172
+ rawCursor = nextRawCursor;
116
173
  continue;
117
174
  }
118
175
  // Let's yield a page from our buffered pages.
@@ -125,24 +182,24 @@ export async function* paginateBuffered(pageFunction, pageOptions) {
125
182
  yield {
126
183
  ...page,
127
184
  data: pageItems,
128
- nextCursor: page.nextCursor,
185
+ nextCursor: nextRawCursor ? encodeApiCursor(nextRawCursor) : undefined,
129
186
  };
130
187
  bufferedPages = [];
131
- cursor = page.nextCursor;
188
+ rawCursor = nextRawCursor;
132
189
  continue;
133
190
  }
134
191
  // Yield our items with a cursor to offset into this page.
135
192
  yield {
136
193
  ...page,
137
194
  data: pageItems,
138
- nextCursor: createOffsetCursor(page.data.length - remainingItems.length, cursor),
195
+ nextCursor: encodeSdkCursor(page.data.length - remainingItems.length, rawCursor),
139
196
  };
140
197
  while (remainingItems.length > pageSize) {
141
- const pageItems = remainingItems.splice(0, pageSize);
198
+ const chunkItems = remainingItems.splice(0, pageSize);
142
199
  yield {
143
200
  ...page,
144
- data: pageItems,
145
- nextCursor: createOffsetCursor(page.data.length - remainingItems.length, cursor),
201
+ data: chunkItems,
202
+ nextCursor: encodeSdkCursor(page.data.length - remainingItems.length, rawCursor),
146
203
  };
147
204
  }
148
205
  bufferedPages = [
@@ -151,7 +208,7 @@ export async function* paginateBuffered(pageFunction, pageOptions) {
151
208
  data: remainingItems,
152
209
  },
153
210
  ];
154
- cursor = page.nextCursor;
211
+ rawCursor = nextRawCursor;
155
212
  }
156
213
  if (bufferedPages.length > 0) {
157
214
  const lastBufferedPage = bufferedPages.slice(-1)[0];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zapier/zapier-sdk",
3
- "version": "0.33.4",
3
+ "version": "0.34.0",
4
4
  "description": "Complete Zapier SDK - combines all Zapier SDK packages",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",