@zapier/zapier-sdk 0.4.0 → 0.5.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.
Files changed (374) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/api/auth.d.ts +9 -0
  3. package/dist/api/auth.d.ts.map +1 -0
  4. package/dist/api/auth.js +25 -0
  5. package/dist/api/client.d.ts +9 -0
  6. package/dist/api/client.d.ts.map +1 -0
  7. package/dist/api/client.js +322 -0
  8. package/dist/api/debug.d.ts +13 -0
  9. package/dist/api/debug.d.ts.map +1 -0
  10. package/dist/api/debug.js +55 -0
  11. package/dist/api/index.d.ts +29 -0
  12. package/dist/api/index.d.ts.map +1 -0
  13. package/dist/api/index.js +41 -0
  14. package/dist/api/polling.d.ts +16 -0
  15. package/dist/api/polling.d.ts.map +1 -0
  16. package/dist/api/polling.js +45 -0
  17. package/dist/api/schemas.d.ts +2473 -0
  18. package/dist/api/schemas.d.ts.map +1 -0
  19. package/dist/api/schemas.js +355 -0
  20. package/dist/api/types.d.ts +75 -0
  21. package/dist/api/types.d.ts.map +1 -0
  22. package/dist/api/types.js +11 -0
  23. package/dist/auth.d.ts +34 -0
  24. package/dist/auth.d.ts.map +1 -0
  25. package/dist/auth.js +47 -0
  26. package/dist/constants.d.ts +10 -0
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/constants.js +9 -0
  29. package/dist/index.cjs +2134 -1444
  30. package/dist/index.d.mts +2456 -584
  31. package/dist/index.d.ts +17 -840
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +20 -0
  34. package/dist/index.mjs +2118 -1428
  35. package/dist/plugins/api/index.d.ts +14 -0
  36. package/dist/plugins/api/index.d.ts.map +1 -0
  37. package/dist/plugins/api/index.js +21 -0
  38. package/dist/plugins/apps/index.d.ts +11 -0
  39. package/dist/plugins/apps/index.d.ts.map +1 -0
  40. package/dist/plugins/apps/index.js +91 -0
  41. package/dist/plugins/apps/types.d.ts +30 -0
  42. package/dist/plugins/apps/types.d.ts.map +1 -0
  43. package/dist/plugins/apps/types.js +2 -0
  44. package/dist/plugins/fetch/index.d.ts +21 -0
  45. package/dist/plugins/fetch/index.d.ts.map +1 -0
  46. package/dist/plugins/fetch/index.js +20 -0
  47. package/dist/plugins/findFirstAuthentication/index.d.ts +20 -0
  48. package/dist/plugins/findFirstAuthentication/index.d.ts.map +1 -0
  49. package/dist/plugins/findFirstAuthentication/index.js +24 -0
  50. package/dist/plugins/findFirstAuthentication/index.test.d.ts +2 -0
  51. package/dist/plugins/findFirstAuthentication/index.test.d.ts.map +1 -0
  52. package/dist/plugins/findFirstAuthentication/index.test.js +171 -0
  53. package/dist/plugins/findFirstAuthentication/schemas.d.ts +29 -0
  54. package/dist/plugins/findFirstAuthentication/schemas.d.ts.map +1 -0
  55. package/dist/plugins/findFirstAuthentication/schemas.js +18 -0
  56. package/dist/plugins/findUniqueAuthentication/index.d.ts +20 -0
  57. package/dist/plugins/findUniqueAuthentication/index.d.ts.map +1 -0
  58. package/dist/plugins/findUniqueAuthentication/index.js +31 -0
  59. package/dist/plugins/findUniqueAuthentication/index.test.d.ts +2 -0
  60. package/dist/plugins/findUniqueAuthentication/index.test.d.ts.map +1 -0
  61. package/dist/plugins/findUniqueAuthentication/index.test.js +152 -0
  62. package/dist/plugins/findUniqueAuthentication/schemas.d.ts +29 -0
  63. package/dist/plugins/findUniqueAuthentication/schemas.d.ts.map +1 -0
  64. package/dist/plugins/findUniqueAuthentication/schemas.js +18 -0
  65. package/dist/plugins/getAction/index.d.ts +23 -0
  66. package/dist/plugins/getAction/index.d.ts.map +1 -0
  67. package/dist/plugins/getAction/index.js +28 -0
  68. package/dist/plugins/getAction/index.test.d.ts +2 -0
  69. package/dist/plugins/getAction/index.test.d.ts.map +1 -0
  70. package/dist/plugins/getAction/index.test.js +186 -0
  71. package/dist/plugins/getAction/schemas.d.ts +23 -0
  72. package/dist/plugins/getAction/schemas.d.ts.map +1 -0
  73. package/dist/plugins/getAction/schemas.js +10 -0
  74. package/dist/plugins/getApp/index.d.ts +22 -0
  75. package/dist/plugins/getApp/index.d.ts.map +1 -0
  76. package/dist/plugins/getApp/index.js +39 -0
  77. package/dist/plugins/getApp/index.test.d.ts +2 -0
  78. package/dist/plugins/getApp/index.test.d.ts.map +1 -0
  79. package/dist/plugins/getApp/index.test.js +100 -0
  80. package/dist/plugins/getApp/schemas.d.ts +18 -0
  81. package/dist/plugins/getApp/schemas.d.ts.map +1 -0
  82. package/dist/plugins/getApp/schemas.js +10 -0
  83. package/dist/plugins/getAuthentication/index.d.ts +22 -0
  84. package/dist/plugins/getAuthentication/index.d.ts.map +1 -0
  85. package/dist/plugins/getAuthentication/index.js +41 -0
  86. package/dist/plugins/getAuthentication/index.test.d.ts +2 -0
  87. package/dist/plugins/getAuthentication/index.test.d.ts.map +1 -0
  88. package/dist/plugins/getAuthentication/index.test.js +205 -0
  89. package/dist/plugins/getAuthentication/schemas.d.ts +17 -0
  90. package/dist/plugins/getAuthentication/schemas.d.ts.map +1 -0
  91. package/dist/plugins/getAuthentication/schemas.js +11 -0
  92. package/dist/plugins/getProfile/index.d.ts +23 -0
  93. package/dist/plugins/getProfile/index.d.ts.map +1 -0
  94. package/dist/plugins/getProfile/index.js +29 -0
  95. package/dist/plugins/getProfile/schemas.d.ts +13 -0
  96. package/dist/plugins/getProfile/schemas.d.ts.map +1 -0
  97. package/dist/plugins/getProfile/schemas.js +5 -0
  98. package/dist/plugins/listActions/index.d.ts +28 -0
  99. package/dist/plugins/listActions/index.d.ts.map +1 -0
  100. package/dist/plugins/listActions/index.js +61 -0
  101. package/dist/plugins/listActions/index.test.d.ts +2 -0
  102. package/dist/plugins/listActions/index.test.d.ts.map +1 -0
  103. package/dist/plugins/listActions/index.test.js +467 -0
  104. package/dist/plugins/listActions/schemas.d.ts +29 -0
  105. package/dist/plugins/listActions/schemas.d.ts.map +1 -0
  106. package/dist/plugins/listActions/schemas.js +21 -0
  107. package/dist/plugins/listApps/index.d.ts +28 -0
  108. package/dist/plugins/listApps/index.d.ts.map +1 -0
  109. package/dist/plugins/listApps/index.js +62 -0
  110. package/dist/plugins/listApps/index.test.d.ts +2 -0
  111. package/dist/plugins/listApps/index.test.d.ts.map +1 -0
  112. package/dist/plugins/listApps/index.test.js +313 -0
  113. package/dist/plugins/listApps/schemas.d.ts +30 -0
  114. package/dist/plugins/listApps/schemas.d.ts.map +1 -0
  115. package/dist/plugins/listApps/schemas.js +23 -0
  116. package/dist/plugins/listAuthentications/index.d.ts +28 -0
  117. package/dist/plugins/listAuthentications/index.d.ts.map +1 -0
  118. package/dist/plugins/listAuthentications/index.js +77 -0
  119. package/dist/plugins/listAuthentications/index.test.d.ts +2 -0
  120. package/dist/plugins/listAuthentications/index.test.d.ts.map +1 -0
  121. package/dist/plugins/listAuthentications/index.test.js +564 -0
  122. package/dist/plugins/listAuthentications/schemas.d.ts +38 -0
  123. package/dist/plugins/listAuthentications/schemas.d.ts.map +1 -0
  124. package/dist/plugins/listAuthentications/schemas.js +28 -0
  125. package/dist/plugins/listInputFields/index.d.ts +28 -0
  126. package/dist/plugins/listInputFields/index.d.ts.map +1 -0
  127. package/dist/plugins/listInputFields/index.js +133 -0
  128. package/dist/plugins/listInputFields/index.test.d.ts +2 -0
  129. package/dist/plugins/listInputFields/index.test.d.ts.map +1 -0
  130. package/dist/plugins/listInputFields/index.test.js +325 -0
  131. package/dist/plugins/listInputFields/schemas.d.ts +38 -0
  132. package/dist/plugins/listInputFields/schemas.d.ts.map +1 -0
  133. package/dist/plugins/listInputFields/schemas.js +22 -0
  134. package/dist/plugins/registry/index.d.ts +11 -0
  135. package/dist/plugins/registry/index.d.ts.map +1 -0
  136. package/dist/plugins/registry/index.js +14 -0
  137. package/dist/plugins/request/index.d.ts +19 -0
  138. package/dist/plugins/request/index.d.ts.map +1 -0
  139. package/dist/plugins/request/index.js +62 -0
  140. package/dist/plugins/request/index.test.d.ts +2 -0
  141. package/dist/plugins/request/index.test.d.ts.map +1 -0
  142. package/dist/plugins/request/index.test.js +256 -0
  143. package/dist/plugins/request/schemas.d.ts +69 -0
  144. package/dist/plugins/request/schemas.d.ts.map +1 -0
  145. package/dist/plugins/request/schemas.js +42 -0
  146. package/dist/plugins/runAction/index.d.ts +28 -0
  147. package/dist/plugins/runAction/index.d.ts.map +1 -0
  148. package/dist/plugins/runAction/index.js +86 -0
  149. package/dist/plugins/runAction/index.test.d.ts +2 -0
  150. package/dist/plugins/runAction/index.test.d.ts.map +1 -0
  151. package/dist/plugins/runAction/index.test.js +320 -0
  152. package/dist/plugins/runAction/schemas.d.ts +37 -0
  153. package/dist/plugins/runAction/schemas.d.ts.map +1 -0
  154. package/dist/plugins/runAction/schemas.js +22 -0
  155. package/dist/resolvers/actionKey.d.ts +9 -0
  156. package/dist/resolvers/actionKey.d.ts.map +1 -0
  157. package/dist/resolvers/actionKey.js +19 -0
  158. package/dist/resolvers/actionType.d.ts +9 -0
  159. package/dist/resolvers/actionType.d.ts.map +1 -0
  160. package/dist/resolvers/actionType.js +22 -0
  161. package/dist/resolvers/appKey.d.ts +7 -0
  162. package/dist/resolvers/appKey.d.ts.map +1 -0
  163. package/dist/resolvers/appKey.js +5 -0
  164. package/dist/resolvers/authenticationId.d.ts +9 -0
  165. package/dist/resolvers/authenticationId.d.ts.map +1 -0
  166. package/dist/resolvers/authenticationId.js +33 -0
  167. package/dist/resolvers/index.d.ts +40 -0
  168. package/dist/resolvers/index.d.ts.map +1 -0
  169. package/dist/resolvers/index.js +91 -0
  170. package/dist/resolvers/inputs.d.ts +8 -0
  171. package/dist/resolvers/inputs.d.ts.map +1 -0
  172. package/dist/resolvers/inputs.js +14 -0
  173. package/dist/schemas/Action.d.ts +243 -0
  174. package/dist/schemas/Action.d.ts.map +1 -0
  175. package/dist/schemas/Action.js +34 -0
  176. package/dist/schemas/App.d.ts +26 -0
  177. package/dist/schemas/App.d.ts.map +1 -0
  178. package/dist/schemas/App.js +22 -0
  179. package/dist/schemas/Auth.d.ts +161 -0
  180. package/dist/schemas/Auth.d.ts.map +1 -0
  181. package/dist/schemas/Auth.js +41 -0
  182. package/dist/schemas/Field.d.ts +144 -0
  183. package/dist/schemas/Field.d.ts.map +1 -0
  184. package/dist/schemas/Field.js +105 -0
  185. package/dist/schemas/UserProfile.d.ts +163 -0
  186. package/dist/schemas/UserProfile.d.ts.map +1 -0
  187. package/dist/schemas/UserProfile.js +29 -0
  188. package/dist/sdk.d.ts +10 -0
  189. package/dist/sdk.d.ts.map +1 -0
  190. package/dist/sdk.js +94 -0
  191. package/dist/sdk.test.d.ts +2 -0
  192. package/dist/sdk.test.d.ts.map +1 -0
  193. package/dist/sdk.test.js +135 -0
  194. package/dist/types/domain.d.ts +36 -0
  195. package/dist/types/domain.d.ts.map +1 -0
  196. package/dist/types/domain.js +1 -0
  197. package/dist/types/domain.test.d.ts +2 -0
  198. package/dist/types/domain.test.d.ts.map +1 -0
  199. package/dist/types/domain.test.js +39 -0
  200. package/dist/types/errors.d.ts +143 -0
  201. package/dist/types/errors.d.ts.map +1 -0
  202. package/dist/types/errors.js +187 -0
  203. package/dist/types/events.d.ts +38 -0
  204. package/dist/types/events.d.ts.map +1 -0
  205. package/dist/types/events.js +7 -0
  206. package/dist/types/functions.d.ts +26 -0
  207. package/dist/types/functions.d.ts.map +1 -0
  208. package/dist/types/functions.js +4 -0
  209. package/dist/types/plugin.d.ts +61 -0
  210. package/dist/types/plugin.d.ts.map +1 -0
  211. package/dist/types/plugin.js +9 -0
  212. package/dist/types/properties.d.ts +22 -0
  213. package/dist/types/properties.d.ts.map +1 -0
  214. package/dist/types/properties.js +50 -0
  215. package/dist/types/sdk.d.ts +43 -0
  216. package/dist/types/sdk.d.ts.map +1 -0
  217. package/dist/types/sdk.js +4 -0
  218. package/dist/utils/array-utils.d.ts +31 -0
  219. package/dist/utils/array-utils.d.ts.map +1 -0
  220. package/dist/utils/array-utils.js +36 -0
  221. package/dist/utils/array-utils.test.d.ts +2 -0
  222. package/dist/utils/array-utils.test.d.ts.map +1 -0
  223. package/dist/utils/array-utils.test.js +107 -0
  224. package/dist/utils/domain-utils.d.ts +78 -0
  225. package/dist/utils/domain-utils.d.ts.map +1 -0
  226. package/dist/utils/domain-utils.js +218 -0
  227. package/dist/utils/domain-utils.test.d.ts +2 -0
  228. package/dist/utils/domain-utils.test.d.ts.map +1 -0
  229. package/dist/utils/domain-utils.test.js +192 -0
  230. package/dist/utils/function-utils.d.ts +45 -0
  231. package/dist/utils/function-utils.d.ts.map +1 -0
  232. package/dist/utils/function-utils.js +158 -0
  233. package/dist/utils/function-utils.test.d.ts +2 -0
  234. package/dist/utils/function-utils.test.d.ts.map +1 -0
  235. package/dist/utils/function-utils.test.js +110 -0
  236. package/dist/utils/pagination-utils.d.ts +37 -0
  237. package/dist/utils/pagination-utils.d.ts.map +1 -0
  238. package/dist/utils/pagination-utils.js +165 -0
  239. package/dist/utils/pagination-utils.test.d.ts +17 -0
  240. package/dist/utils/pagination-utils.test.d.ts.map +1 -0
  241. package/dist/utils/pagination-utils.test.js +461 -0
  242. package/dist/utils/schema-utils.d.ts +45 -0
  243. package/dist/utils/schema-utils.d.ts.map +1 -0
  244. package/dist/utils/schema-utils.js +65 -0
  245. package/dist/utils/validation.d.ts +4 -0
  246. package/dist/utils/validation.d.ts.map +1 -0
  247. package/dist/utils/validation.js +30 -0
  248. package/dist/utils/validation.test.d.ts +2 -0
  249. package/dist/utils/validation.test.d.ts.map +1 -0
  250. package/dist/utils/validation.test.js +43 -0
  251. package/package.json +12 -3
  252. package/src/api/client.ts +403 -167
  253. package/src/api/debug.ts +10 -1
  254. package/src/api/index.ts +0 -2
  255. package/src/api/polling.ts +31 -14
  256. package/src/api/schemas.ts +387 -0
  257. package/src/api/types.ts +73 -138
  258. package/src/constants.ts +10 -0
  259. package/src/index.ts +45 -20
  260. package/src/plugins/api/index.ts +47 -0
  261. package/src/plugins/apps/index.ts +36 -31
  262. package/src/plugins/apps/types.ts +24 -12
  263. package/src/plugins/fetch/index.ts +58 -0
  264. package/src/plugins/findFirstAuthentication/index.test.ts +206 -0
  265. package/src/plugins/findFirstAuthentication/index.ts +55 -0
  266. package/src/plugins/findFirstAuthentication/schemas.ts +41 -0
  267. package/src/plugins/findUniqueAuthentication/index.test.ts +197 -0
  268. package/src/plugins/findUniqueAuthentication/index.ts +72 -0
  269. package/src/plugins/findUniqueAuthentication/schemas.ts +42 -0
  270. package/src/plugins/getAction/index.test.ts +239 -0
  271. package/src/plugins/getAction/index.ts +57 -0
  272. package/src/plugins/getAction/schemas.ts +33 -0
  273. package/src/plugins/getApp/index.test.ts +127 -0
  274. package/src/plugins/getApp/index.ts +66 -0
  275. package/src/plugins/getApp/schemas.ts +38 -0
  276. package/src/plugins/getAuthentication/index.test.ts +284 -0
  277. package/src/plugins/getAuthentication/index.ts +86 -0
  278. package/src/plugins/getAuthentication/schemas.ts +31 -0
  279. package/src/plugins/getProfile/index.ts +55 -0
  280. package/src/plugins/getProfile/schemas.ts +26 -0
  281. package/src/plugins/listActions/index.test.ts +582 -0
  282. package/src/plugins/listActions/index.ts +115 -0
  283. package/src/plugins/listActions/schemas.ts +54 -0
  284. package/src/plugins/listApps/index.test.ts +357 -0
  285. package/src/plugins/listApps/index.ts +121 -0
  286. package/src/plugins/listApps/schemas.ts +49 -0
  287. package/src/plugins/listAuthentications/index.test.ts +709 -0
  288. package/src/plugins/listAuthentications/index.ts +136 -0
  289. package/src/plugins/listAuthentications/schemas.ts +60 -0
  290. package/src/plugins/listInputFields/index.test.ts +408 -0
  291. package/src/plugins/listInputFields/index.ts +204 -0
  292. package/src/plugins/listInputFields/schemas.ts +56 -0
  293. package/src/plugins/registry/index.ts +30 -0
  294. package/src/plugins/request/index.test.ts +329 -0
  295. package/src/plugins/request/index.ts +103 -0
  296. package/src/plugins/request/schemas.ts +64 -0
  297. package/src/plugins/runAction/index.test.ts +387 -0
  298. package/src/plugins/runAction/index.ts +176 -0
  299. package/src/plugins/runAction/schemas.ts +53 -0
  300. package/src/resolvers/actionKey.ts +6 -4
  301. package/src/resolvers/actionType.ts +7 -2
  302. package/src/resolvers/appKey.ts +1 -1
  303. package/src/resolvers/authenticationId.ts +12 -3
  304. package/src/resolvers/inputs.ts +3 -1
  305. package/src/schemas/Action.ts +18 -12
  306. package/src/schemas/App.ts +11 -19
  307. package/src/schemas/Auth.ts +18 -13
  308. package/src/schemas/Field.ts +106 -11
  309. package/src/schemas/UserProfile.ts +43 -0
  310. package/src/sdk.test.ts +212 -0
  311. package/src/sdk.ts +133 -105
  312. package/src/types/domain.test.ts +50 -0
  313. package/src/types/domain.ts +43 -75
  314. package/src/types/errors.ts +275 -0
  315. package/src/types/functions.ts +27 -0
  316. package/src/types/optional-zapier-sdk-cli-login.d.ts +37 -0
  317. package/src/types/plugin.ts +105 -0
  318. package/src/types/properties.ts +4 -3
  319. package/src/types/sdk.ts +71 -46
  320. package/src/utils/array-utils.test.ts +131 -0
  321. package/src/utils/array-utils.ts +41 -0
  322. package/src/utils/domain-utils.test.ts +239 -0
  323. package/src/utils/domain-utils.ts +283 -0
  324. package/src/utils/function-utils.test.ts +141 -0
  325. package/src/utils/function-utils.ts +245 -0
  326. package/src/utils/pagination-utils.test.ts +620 -0
  327. package/src/utils/pagination-utils.ts +242 -0
  328. package/src/utils/validation.test.ts +50 -0
  329. package/src/utils/validation.ts +44 -0
  330. package/tsconfig.build.json +16 -2
  331. package/tsconfig.json +3 -1
  332. package/tsconfig.tsbuildinfo +1 -0
  333. package/tsup.config.ts +2 -0
  334. package/src/functions/bundleCode/index.ts +0 -78
  335. package/src/functions/bundleCode/info.ts +0 -9
  336. package/src/functions/bundleCode/schemas.ts +0 -30
  337. package/src/functions/fetch/index.ts +0 -180
  338. package/src/functions/fetch/info.ts +0 -8
  339. package/src/functions/fetch/schemas.ts +0 -46
  340. package/src/functions/findFirstAuthentication/index.ts +0 -24
  341. package/src/functions/findFirstAuthentication/info.ts +0 -9
  342. package/src/functions/findFirstAuthentication/schemas.ts +0 -50
  343. package/src/functions/findUniqueAuthentication/index.ts +0 -35
  344. package/src/functions/findUniqueAuthentication/info.ts +0 -9
  345. package/src/functions/findUniqueAuthentication/schemas.ts +0 -50
  346. package/src/functions/generateTypes/index.ts +0 -363
  347. package/src/functions/generateTypes/info.ts +0 -9
  348. package/src/functions/generateTypes/schemas.ts +0 -31
  349. package/src/functions/getAction/index.ts +0 -33
  350. package/src/functions/getAction/info.ts +0 -9
  351. package/src/functions/getAction/schemas.ts +0 -25
  352. package/src/functions/getApp/index.ts +0 -41
  353. package/src/functions/getApp/info.ts +0 -9
  354. package/src/functions/getApp/schemas.ts +0 -20
  355. package/src/functions/getAuthentication/index.ts +0 -50
  356. package/src/functions/getAuthentication/info.ts +0 -9
  357. package/src/functions/getAuthentication/schemas.ts +0 -29
  358. package/src/functions/listActions/index.ts +0 -149
  359. package/src/functions/listActions/info.ts +0 -9
  360. package/src/functions/listActions/schemas.ts +0 -30
  361. package/src/functions/listApps/index.ts +0 -60
  362. package/src/functions/listApps/info.ts +0 -9
  363. package/src/functions/listApps/schemas.ts +0 -32
  364. package/src/functions/listAuthentications/index.ts +0 -162
  365. package/src/functions/listAuthentications/info.ts +0 -9
  366. package/src/functions/listAuthentications/schemas.ts +0 -50
  367. package/src/functions/listFields/index.ts +0 -86
  368. package/src/functions/listFields/info.ts +0 -9
  369. package/src/functions/listFields/schemas.ts +0 -36
  370. package/src/functions/runAction/index.ts +0 -127
  371. package/src/functions/runAction/info.ts +0 -9
  372. package/src/functions/runAction/schemas.ts +0 -34
  373. package/src/plugins/apps/info.ts +0 -12
  374. /package/src/{schema-utils.ts → utils/schema-utils.ts} +0 -0
@@ -1,363 +0,0 @@
1
- import type { Action, ActionField } from "../../types/domain";
2
- import { listActions } from "../listActions";
3
- import { listFields } from "../listFields";
4
- import type { GenerateTypesOptions } from "./schemas";
5
-
6
- interface ActionWithActionFields extends Omit<Action, "inputFields"> {
7
- inputFields: ActionField[];
8
- }
9
-
10
- /**
11
- * Generate the fetch method signature for app proxies
12
- */
13
- function generateFetchMethodSignature(): string {
14
- return ` /** Make authenticated HTTP requests through Zapier's Relay service */
15
- fetch: (options: Omit<z.infer<typeof RelayFetchSchema>, 'authenticationId'>) => Promise<Response>`;
16
- }
17
-
18
- /**
19
- * Generate TypeScript types for a specific app
20
- *
21
- * This function can be used standalone without instantiating a full SDK,
22
- * which enables better tree-shaking in applications that only need this functionality.
23
- *
24
- * @param options - App key, authentication ID, output path, and API configuration options
25
- * @returns Promise<string> - Generated TypeScript code
26
- */
27
- export async function generateTypes(
28
- options: GenerateTypesOptions,
29
- ): Promise<string> {
30
- const {
31
- appKey,
32
- authenticationId,
33
- output = `./types/${appKey}.d.ts`,
34
- } = options;
35
-
36
- // Parse app identifier (support app@version format)
37
- const { app, version } = parseAppIdentifier(appKey);
38
-
39
- // Fetch all actions for the app
40
- const actions = await listActions({
41
- ...options,
42
- appKey: app,
43
- });
44
-
45
- if (actions.length === 0) {
46
- const typeDefinitions = generateEmptyTypesFile(app, version);
47
-
48
- if (output) {
49
- const fs = await import("fs");
50
- const path = await import("path");
51
- fs.mkdirSync(path.dirname(output), { recursive: true });
52
- fs.writeFileSync(output, typeDefinitions, "utf8");
53
- }
54
-
55
- return typeDefinitions;
56
- }
57
-
58
- // Fetch input fields for each action
59
- const actionsWithFields: ActionWithActionFields[] = [];
60
-
61
- if (authenticationId) {
62
- for (const action of actions) {
63
- try {
64
- const fields = await listFields({
65
- ...options,
66
- appKey: action.appKey,
67
- actionKey: action.key,
68
- actionType: action.type,
69
- authenticationId: authenticationId,
70
- });
71
- actionsWithFields.push({ ...action, inputFields: fields });
72
- } catch {
73
- // If we can't get fields for an action, include it without fields
74
- actionsWithFields.push({ ...action, inputFields: [] });
75
- }
76
- }
77
- } else {
78
- // Convert actions to have empty input fields (will generate generic types)
79
- actions.forEach((action) => {
80
- actionsWithFields.push({ ...action, inputFields: [] });
81
- });
82
- }
83
-
84
- // Generate TypeScript types
85
- const typeDefinitions = generateTypeDefinitions(
86
- app,
87
- actionsWithFields,
88
- version,
89
- );
90
-
91
- // Write to file if output path specified
92
- if (output) {
93
- const fs = await import("fs");
94
- const path = await import("path");
95
- fs.mkdirSync(path.dirname(output), { recursive: true });
96
- fs.writeFileSync(output, typeDefinitions, "utf8");
97
- }
98
-
99
- return typeDefinitions;
100
- }
101
-
102
- function parseAppIdentifier(identifier: string): {
103
- app: string;
104
- version?: string;
105
- } {
106
- const parts = identifier.split("@");
107
- return {
108
- app: parts[0],
109
- version: parts[1],
110
- };
111
- }
112
-
113
- function generateTypeDefinitions(
114
- appKey: string,
115
- actions: ActionWithActionFields[],
116
- version?: string,
117
- ): string {
118
- // Handle empty actions
119
- if (actions.length === 0) {
120
- return generateEmptyTypesFile(appKey, version);
121
- }
122
-
123
- // Group actions by type
124
- const actionsByType = actions.reduce(
125
- (acc, action) => {
126
- if (!acc[action.type]) {
127
- acc[action.type] = [];
128
- }
129
- acc[action.type].push(action);
130
- return acc;
131
- },
132
- {} as Record<string, ActionWithActionFields[]>,
133
- );
134
-
135
- const appName = capitalize(appKey);
136
- const versionComment = version
137
- ? ` * Generated for ${appKey}@${version}`
138
- : ` * Generated for ${appKey}`;
139
-
140
- let output = `/* eslint-disable @typescript-eslint/naming-convention */
141
- /**
142
- * Auto-generated TypeScript types for Zapier ${appKey} actions
143
- ${versionComment}
144
- * Generated on: ${new Date().toISOString()}
145
- *
146
- * Usage:
147
- * import type { ${appName}Sdk } from './path/to/this/file'
148
- * const sdk = createZapierSdk() as unknown as ${appName}Sdk
149
- *
150
- * // Direct usage (per-call auth):
151
- * await sdk.apps.${appKey}.search.user_by_email({ authenticationId: 123, inputs: { email } })
152
- *
153
- * // Factory usage (pinned auth):
154
- * const my${appName} = sdk.apps.${appKey}({ authenticationId: 123 })
155
- * await my${appName}.search.user_by_email({ inputs: { email } })
156
- */
157
-
158
- import type { ActionExecutionOptions, ActionExecutionResult } from '@zapier/zapier-sdk'
159
- import { z } from 'zod'
160
- import { RelayFetchSchema } from '@zapier/zapier-sdk'
161
-
162
- `;
163
-
164
- // Generate input types for each action
165
- actions.forEach((action) => {
166
- if (action.inputFields.length > 0) {
167
- const inputTypeName = `${appName}${capitalize(action.type)}${capitalize(
168
- sanitizeActionName(action.key),
169
- )}Inputs`;
170
-
171
- output += `interface ${inputTypeName} {\n`;
172
-
173
- action.inputFields.forEach((field) => {
174
- const isOptional = !field.required;
175
- const fieldType = mapFieldTypeToTypeScript(field);
176
- const description = field.helpText
177
- ? ` /** ${escapeComment(field.helpText)} */\n`
178
- : "";
179
-
180
- output += `${description} ${sanitizeFieldName(field.key)}${
181
- isOptional ? "?" : ""
182
- }: ${fieldType}\n`;
183
- });
184
-
185
- output += `}\n\n`;
186
- }
187
- });
188
-
189
- // Generate action type interfaces for each action type
190
- Object.entries(actionsByType).forEach(([actionType, typeActions]) => {
191
- const typeName = `${appName}${capitalize(actionType)}Actions`;
192
-
193
- output += `interface ${typeName} {\n`;
194
-
195
- typeActions.forEach((action: ActionWithActionFields) => {
196
- const actionName = sanitizeActionName(action.key);
197
- const description = action.description
198
- ? ` /** ${escapeComment(action.description)} */\n`
199
- : "";
200
-
201
- // Generate type-safe action method signature
202
- if (action.inputFields.length > 0) {
203
- const inputTypeName = `${appName}${capitalize(action.type)}${capitalize(
204
- sanitizeActionName(action.key),
205
- )}Inputs`;
206
- output += `${description} ${actionName}: (options: { inputs: ${inputTypeName} } & Omit<ActionExecutionOptions, 'inputs'>) => Promise<ActionExecutionResult>\n`;
207
- } else {
208
- // No specific input fields available - use generic Record<string, any> for inputs
209
- output += `${description} ${actionName}: (options?: { inputs?: Record<string, any> } & ActionExecutionOptions) => Promise<ActionExecutionResult>\n`;
210
- }
211
- });
212
-
213
- output += `}\n\n`;
214
- });
215
-
216
- // Generate the main app SDK interface with factory pattern support
217
-
218
- // Generate the app proxy interface (actions grouped by type)
219
- output += `interface ${appName}AppProxy {\n`;
220
- Object.keys(actionsByType).forEach((actionType) => {
221
- const typeName = `${appName}${capitalize(actionType)}Actions`;
222
- output += ` ${actionType}: ${typeName}\n`;
223
- });
224
- // Always include fetch method for authenticated HTTP requests
225
- output += generateFetchMethodSignature() + "\n";
226
- output += `}\n\n`;
227
-
228
- // Generate the factory function interface
229
- output += `interface ${appName}AppFactory {\n`;
230
- output += ` (options: { authenticationId: number }): ${appName}AppProxy\n`;
231
- output += `}\n\n`;
232
-
233
- // Combine factory and direct access
234
- output += `type ${appName}AppWithFactory = ${appName}AppFactory & ${appName}AppProxy\n\n`;
235
-
236
- // Generate the main SDK interface
237
- output += `export interface ${appName}Sdk {\n`;
238
- output += ` apps: {\n`;
239
- output += ` ${appKey}: ${appName}AppWithFactory\n`;
240
- output += ` }\n`;
241
- output += `}\n`;
242
-
243
- return output;
244
- }
245
-
246
- function generateEmptyTypesFile(appKey: string, version?: string): string {
247
- const appName = capitalize(appKey);
248
- const versionComment = version
249
- ? ` * Generated for ${appKey}@${version}`
250
- : ` * Generated for ${appKey}`;
251
-
252
- return `/* eslint-disable @typescript-eslint/naming-convention */
253
- /**
254
- * Auto-generated TypeScript types for Zapier ${appKey} actions
255
- ${versionComment}
256
- * Generated on: ${new Date().toISOString()}
257
- *
258
- * No actions found for this app.
259
- */
260
-
261
- import type { ActionExecutionOptions, ActionExecutionResult } from '@zapier/zapier-sdk'
262
- import { z } from 'zod'
263
- import { RelayFetchSchema } from '@zapier/zapier-sdk'
264
-
265
- interface ${appName}AppProxy {
266
- // No actions available
267
- ${generateFetchMethodSignature()}
268
- }
269
-
270
- interface ${appName}AppFactory {
271
- (options: { authenticationId: number }): ${appName}AppProxy
272
- }
273
-
274
- type ${appName}AppWithFactory = ${appName}AppFactory & ${appName}AppProxy
275
-
276
- export interface ${appName}Sdk {
277
- apps: {
278
- ${appKey}: ${appName}AppWithFactory
279
- }
280
- }
281
- `;
282
- }
283
-
284
- function capitalize(str: string): string {
285
- return str.charAt(0).toUpperCase() + str.slice(1).replace(/[-_]/g, "");
286
- }
287
-
288
- function sanitizeActionName(actionKey: string): string {
289
- // Ensure the action name is a valid TypeScript identifier
290
- let sanitized = actionKey.replace(/[^a-zA-Z0-9_$]/g, "_");
291
-
292
- // If it starts with a number, prepend an underscore
293
- if (/^[0-9]/.test(sanitized)) {
294
- sanitized = "_" + sanitized;
295
- }
296
-
297
- return sanitized;
298
- }
299
-
300
- function sanitizeFieldName(fieldKey: string): string {
301
- // Ensure the field name is a valid TypeScript identifier
302
- let sanitized = fieldKey.replace(/[^a-zA-Z0-9_$]/g, "_");
303
-
304
- // If it starts with a number, prepend an underscore
305
- if (/^[0-9]/.test(sanitized)) {
306
- sanitized = "_" + sanitized;
307
- }
308
-
309
- return sanitized;
310
- }
311
-
312
- function escapeComment(comment: string): string {
313
- // Escape comment text to prevent breaking the JSDoc comment
314
- return comment.replace(/\*\//g, "*\\/").replace(/\r?\n/g, " ");
315
- }
316
-
317
- function mapFieldTypeToTypeScript(field: ActionField): string {
318
- // Handle choices (enum-like fields)
319
- if (field.choices && field.choices.length > 0) {
320
- const choiceValues = field.choices
321
- .filter(
322
- (choice) =>
323
- choice.value !== undefined &&
324
- choice.value !== null &&
325
- choice.value !== "",
326
- )
327
- .map((choice) =>
328
- typeof choice.value === "string" ? `"${choice.value}"` : choice.value,
329
- );
330
-
331
- if (choiceValues.length > 0) {
332
- return choiceValues.join(" | ");
333
- }
334
- // If all choices were filtered out, fall through to default type handling
335
- }
336
-
337
- // Map Zapier field types to TypeScript types
338
- switch (field.type?.toLowerCase()) {
339
- case "string":
340
- case "text":
341
- case "email":
342
- case "url":
343
- case "password":
344
- return "string";
345
- case "integer":
346
- case "number":
347
- return "number";
348
- case "boolean":
349
- return "boolean";
350
- case "datetime":
351
- case "date":
352
- return "string"; // ISO date strings
353
- case "file":
354
- return "string"; // File URL or content
355
- case "array":
356
- return "any[]";
357
- case "object":
358
- return "Record<string, any>";
359
- default:
360
- // Default to string for unknown types, with union for common cases
361
- return "string | number | boolean";
362
- }
363
- }
@@ -1,9 +0,0 @@
1
- import { generateTypes } from "./index";
2
- import { GenerateTypesSchema } from "./schemas";
3
-
4
- // Function registry info - imports both function and schema
5
- export const generateTypesInfo = {
6
- name: generateTypes.name,
7
- inputSchema: GenerateTypesSchema,
8
- implementation: generateTypes,
9
- };
@@ -1,31 +0,0 @@
1
- import { z } from "zod";
2
- import {
3
- AppKeyPropertySchema,
4
- AuthenticationIdPropertySchema,
5
- OutputPropertySchema,
6
- DebugPropertySchema,
7
- } from "../../types/properties";
8
- import type { FunctionOptions } from "../../types/domain";
9
-
10
- // Pure Zod schema - no resolver metadata!
11
- export const GenerateTypesSchema = z
12
- .object({
13
- appKey: AppKeyPropertySchema.describe("App key to generate SDK code for"),
14
- authenticationId: AuthenticationIdPropertySchema.optional(),
15
- output: OutputPropertySchema.optional().describe(
16
- "Output file path (defaults to generated/<appKey>.ts)",
17
- ),
18
- debug: DebugPropertySchema.describe(
19
- "Enable debug logging during generation",
20
- ),
21
- })
22
- .describe("Generate TypeScript SDK code for a specific app");
23
-
24
- // Type inferred from schema + function config
25
- export type GenerateTypesOptions = z.infer<typeof GenerateTypesSchema> &
26
- FunctionOptions;
27
-
28
- // SDK function interface - ready to be mixed into main SDK interface
29
- export interface GenerateTypesSdkFunction {
30
- generateTypes: (options: GenerateTypesOptions) => Promise<string>;
31
- }
@@ -1,33 +0,0 @@
1
- import type { Action } from "../../types/domain";
2
- import { listActions } from "../listActions";
3
- import type { GetActionOptions } from "./schemas";
4
-
5
- /**
6
- * Get a specific action by app, action key, and type
7
- *
8
- * This function can be used standalone without instantiating a full SDK,
9
- * which enables better tree-shaking in applications that only need this functionality.
10
- *
11
- * @param options - App key, action key, type, and API configuration options
12
- * @returns Promise<Action>
13
- */
14
- export async function getAction(options: GetActionOptions): Promise<Action> {
15
- const { appKey, actionKey, actionType } = options;
16
-
17
- const actions = await listActions({
18
- ...options,
19
- appKey: appKey,
20
- });
21
-
22
- const action = actions.find(
23
- (a) => a.key === actionKey && a.type === actionType,
24
- );
25
-
26
- if (!action) {
27
- throw new Error(`Action not found: ${actionKey} with type ${actionType}`);
28
- }
29
-
30
- return action;
31
- }
32
-
33
- // No registry info here - moved to info.ts for proper tree-shaking
@@ -1,9 +0,0 @@
1
- import { getAction } from "./index";
2
- import { GetActionSchema } from "./schemas";
3
-
4
- // Function registry info - imports both function and schema
5
- export const getActionInfo = {
6
- name: getAction.name,
7
- inputSchema: GetActionSchema,
8
- implementation: getAction,
9
- };
@@ -1,25 +0,0 @@
1
- import { z } from "zod";
2
- import {
3
- AppKeyPropertySchema,
4
- ActionTypePropertySchema,
5
- ActionKeyPropertySchema,
6
- } from "../../types/properties";
7
- import type { Action, FunctionOptions } from "../../types/domain";
8
-
9
- // Pure Zod schema - no resolver metadata!
10
- export const GetActionSchema = z
11
- .object({
12
- appKey: AppKeyPropertySchema,
13
- actionType: ActionTypePropertySchema,
14
- actionKey: ActionKeyPropertySchema,
15
- })
16
- .describe("Get detailed information about a specific action");
17
-
18
- // Type inferred from schema + function config
19
- export type GetActionOptions = z.infer<typeof GetActionSchema> &
20
- FunctionOptions;
21
-
22
- // SDK function interface - ready to be mixed into main SDK interface
23
- export interface GetActionSdkFunction {
24
- getAction: (options: GetActionOptions) => Promise<Action>;
25
- }
@@ -1,41 +0,0 @@
1
- import { getOrCreateApiClient } from "../../api";
2
- import type { Integration } from "../../types/domain";
3
- import { AppNotFoundError } from "../../types/domain";
4
- import type { GetAppOptions } from "./schemas";
5
-
6
- /**
7
- * Get a specific app by key
8
- *
9
- * This function can be used standalone without instantiating a full SDK,
10
- * which enables better tree-shaking in applications that only need this functionality.
11
- *
12
- * @param options - App key and API configuration options
13
- * @returns Promise<Integration>
14
- */
15
- export async function getApp(options: GetAppOptions): Promise<Integration> {
16
- const api = getOrCreateApiClient(options);
17
-
18
- const { appKey } = options;
19
-
20
- const app = await api.get(`/api/v4/apps/${appKey}/`, {
21
- customErrorHandler: (response) => {
22
- if (response.status === 404) {
23
- return new AppNotFoundError(appKey);
24
- }
25
- return undefined;
26
- },
27
- });
28
-
29
- return {
30
- key: app.slug,
31
- name: app.name,
32
- description: app.description,
33
- version: "1.0.0",
34
- category: app.category?.name,
35
- actions: [],
36
- triggers: [],
37
- current_implementation_id: app.current_implementation_id,
38
- };
39
- }
40
-
41
- // No registry info here - moved to info.ts for proper tree-shaking
@@ -1,9 +0,0 @@
1
- import { getApp } from "./index";
2
- import { GetAppSchema } from "./schemas";
3
-
4
- // Function registry info - imports both function and schema
5
- export const getAppInfo = {
6
- name: getApp.name,
7
- inputSchema: GetAppSchema,
8
- implementation: getApp,
9
- };
@@ -1,20 +0,0 @@
1
- import { z } from "zod";
2
- import { AppKeyPropertySchema } from "../../types/properties";
3
- import type { Integration, FunctionOptions } from "../../types/domain";
4
-
5
- // Pure Zod schema - no resolver metadata!
6
- export const GetAppSchema = z
7
- .object({
8
- appKey: AppKeyPropertySchema.describe(
9
- "App key or slug to fetch (e.g., google-sheets, slack, github)",
10
- ),
11
- })
12
- .describe("Get detailed information about a specific app");
13
-
14
- // Type inferred from schema + function config
15
- export type GetAppOptions = z.infer<typeof GetAppSchema> & FunctionOptions;
16
-
17
- // SDK function interface - ready to be mixed into main SDK interface
18
- export interface GetAppSdkFunction {
19
- getApp: (options: GetAppOptions) => Promise<Integration>;
20
- }
@@ -1,50 +0,0 @@
1
- import { getOrCreateApiClient } from "../../api";
2
- import type { Authentication } from "../../types/domain";
3
- import type { GetAuthenticationOptions } from "./schemas";
4
-
5
- /**
6
- * Get a specific authentication by ID
7
- *
8
- * This function can be used standalone without instantiating a full SDK,
9
- * which enables better tree-shaking in applications that only need this functionality.
10
- *
11
- * @param options - Authentication ID and API configuration options
12
- * @returns Promise<Authentication> - The authentication details
13
- * @throws Error if authentication not found or access denied
14
- */
15
- export async function getAuthentication(
16
- options: GetAuthenticationOptions,
17
- ): Promise<Authentication> {
18
- const { authenticationId } = options;
19
- const api = getOrCreateApiClient(options);
20
-
21
- const data: Authentication = await api.get(
22
- `/api/v4/authentications/${authenticationId}/`,
23
- {
24
- customErrorHandler: (response) => {
25
- if (response.status === 401) {
26
- return new Error(
27
- `Authentication failed. Your token may not have permission to access authentications or may be expired. (HTTP ${response.status})`,
28
- );
29
- }
30
- if (response.status === 403) {
31
- return new Error(
32
- `Access forbidden. Your token may not have the required scopes to get authentication ${authenticationId}. (HTTP ${response.status})`,
33
- );
34
- }
35
- if (response.status === 404) {
36
- return new Error(
37
- `Authentication ${authenticationId} not found. It may not exist or you may not have access to it. (HTTP ${response.status})`,
38
- );
39
- }
40
- return undefined;
41
- },
42
- },
43
- );
44
-
45
- // Coerce title from label if title is missing (API cleanup)
46
- return {
47
- ...data,
48
- title: data.title || (data as any).label || undefined,
49
- };
50
- }
@@ -1,9 +0,0 @@
1
- import { getAuthentication } from "./index";
2
- import { GetAuthenticationSchema } from "./schemas";
3
-
4
- // Function registry info - imports both function and schema
5
- export const getAuthenticationInfo = {
6
- name: getAuthentication.name,
7
- inputSchema: GetAuthenticationSchema,
8
- implementation: getAuthentication,
9
- };
@@ -1,29 +0,0 @@
1
- import { z } from "zod";
2
- import { withOutputSchema } from "../../schema-utils";
3
- import { AuthItemSchema } from "../../schemas/Auth";
4
- import type { Authentication, FunctionOptions } from "../../types/domain";
5
-
6
- // Pure Zod schema - no resolver metadata!
7
- export const GetAuthenticationSchema = withOutputSchema(
8
- z
9
- .object({
10
- authenticationId: z
11
- .number()
12
- .int()
13
- .positive()
14
- .describe("Authentication ID to retrieve"),
15
- })
16
- .describe("Get a specific authentication by ID"),
17
- AuthItemSchema,
18
- );
19
-
20
- // Type inferred from schema + function config
21
- export type GetAuthenticationOptions = z.infer<typeof GetAuthenticationSchema> &
22
- FunctionOptions;
23
-
24
- // SDK function interface - ready to be mixed into main SDK interface
25
- export interface GetAuthenticationSdkFunction {
26
- getAuthentication: (
27
- options: GetAuthenticationOptions,
28
- ) => Promise<Authentication>;
29
- }