@zapier/zapier-sdk 0.18.3 → 0.19.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 (417) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +44 -32
  3. package/dist/index.cjs +658 -693
  4. package/dist/index.d.mts +272 -138
  5. package/dist/index.d.ts +2541 -40
  6. package/dist/index.mjs +638 -692
  7. package/package.json +14 -13
  8. package/dist/api/auth.d.ts +0 -19
  9. package/dist/api/auth.d.ts.map +0 -1
  10. package/dist/api/auth.js +0 -70
  11. package/dist/api/auth.test.d.ts +0 -2
  12. package/dist/api/auth.test.d.ts.map +0 -1
  13. package/dist/api/auth.test.js +0 -220
  14. package/dist/api/client.d.ts +0 -9
  15. package/dist/api/client.d.ts.map +0 -1
  16. package/dist/api/client.integration.test.d.ts +0 -5
  17. package/dist/api/client.integration.test.d.ts.map +0 -1
  18. package/dist/api/client.integration.test.js +0 -318
  19. package/dist/api/client.js +0 -374
  20. package/dist/api/client.methods.test.d.ts +0 -2
  21. package/dist/api/client.methods.test.d.ts.map +0 -1
  22. package/dist/api/client.methods.test.js +0 -158
  23. package/dist/api/client.test.d.ts +0 -2
  24. package/dist/api/client.test.d.ts.map +0 -1
  25. package/dist/api/client.test.js +0 -96
  26. package/dist/api/debug.d.ts +0 -14
  27. package/dist/api/debug.d.ts.map +0 -1
  28. package/dist/api/debug.js +0 -131
  29. package/dist/api/debug.test.d.ts +0 -2
  30. package/dist/api/debug.test.d.ts.map +0 -1
  31. package/dist/api/debug.test.js +0 -59
  32. package/dist/api/index.d.ts +0 -30
  33. package/dist/api/index.d.ts.map +0 -1
  34. package/dist/api/index.js +0 -43
  35. package/dist/api/polling.d.ts +0 -46
  36. package/dist/api/polling.d.ts.map +0 -1
  37. package/dist/api/polling.js +0 -139
  38. package/dist/api/polling.test.d.ts +0 -2
  39. package/dist/api/polling.test.d.ts.map +0 -1
  40. package/dist/api/polling.test.js +0 -318
  41. package/dist/api/router.d.ts +0 -16
  42. package/dist/api/router.d.ts.map +0 -1
  43. package/dist/api/router.js +0 -31
  44. package/dist/api/router.test.d.ts +0 -2
  45. package/dist/api/router.test.d.ts.map +0 -1
  46. package/dist/api/router.test.js +0 -103
  47. package/dist/api/schemas.d.ts +0 -531
  48. package/dist/api/schemas.d.ts.map +0 -1
  49. package/dist/api/schemas.js +0 -389
  50. package/dist/api/types.d.ts +0 -82
  51. package/dist/api/types.d.ts.map +0 -1
  52. package/dist/api/types.js +0 -1
  53. package/dist/auth.d.ts +0 -52
  54. package/dist/auth.d.ts.map +0 -1
  55. package/dist/auth.js +0 -72
  56. package/dist/auth.test.d.ts +0 -2
  57. package/dist/auth.test.d.ts.map +0 -1
  58. package/dist/auth.test.js +0 -102
  59. package/dist/constants.d.ts +0 -14
  60. package/dist/constants.d.ts.map +0 -1
  61. package/dist/constants.js +0 -13
  62. package/dist/index.d.ts.map +0 -1
  63. package/dist/index.js +0 -42
  64. package/dist/plugins/api/index.d.ts +0 -12
  65. package/dist/plugins/api/index.d.ts.map +0 -1
  66. package/dist/plugins/api/index.js +0 -24
  67. package/dist/plugins/apps/index.d.ts +0 -15
  68. package/dist/plugins/apps/index.d.ts.map +0 -1
  69. package/dist/plugins/apps/index.js +0 -112
  70. package/dist/plugins/apps/schemas.d.ts +0 -42
  71. package/dist/plugins/apps/schemas.d.ts.map +0 -1
  72. package/dist/plugins/apps/schemas.js +0 -14
  73. package/dist/plugins/eventEmission/builders.d.ts +0 -14
  74. package/dist/plugins/eventEmission/builders.d.ts.map +0 -1
  75. package/dist/plugins/eventEmission/builders.js +0 -109
  76. package/dist/plugins/eventEmission/index.d.ts +0 -38
  77. package/dist/plugins/eventEmission/index.d.ts.map +0 -1
  78. package/dist/plugins/eventEmission/index.js +0 -336
  79. package/dist/plugins/eventEmission/index.test.d.ts +0 -5
  80. package/dist/plugins/eventEmission/index.test.d.ts.map +0 -1
  81. package/dist/plugins/eventEmission/index.test.js +0 -581
  82. package/dist/plugins/eventEmission/transport.d.ts +0 -27
  83. package/dist/plugins/eventEmission/transport.d.ts.map +0 -1
  84. package/dist/plugins/eventEmission/transport.js +0 -104
  85. package/dist/plugins/eventEmission/transport.test.d.ts +0 -5
  86. package/dist/plugins/eventEmission/transport.test.d.ts.map +0 -1
  87. package/dist/plugins/eventEmission/transport.test.js +0 -164
  88. package/dist/plugins/eventEmission/types.d.ts +0 -63
  89. package/dist/plugins/eventEmission/types.d.ts.map +0 -1
  90. package/dist/plugins/eventEmission/types.js +0 -1
  91. package/dist/plugins/eventEmission/utils.d.ts +0 -45
  92. package/dist/plugins/eventEmission/utils.d.ts.map +0 -1
  93. package/dist/plugins/eventEmission/utils.js +0 -114
  94. package/dist/plugins/fetch/index.d.ts +0 -36
  95. package/dist/plugins/fetch/index.d.ts.map +0 -1
  96. package/dist/plugins/fetch/index.js +0 -62
  97. package/dist/plugins/fetch/schemas.d.ts +0 -19
  98. package/dist/plugins/fetch/schemas.d.ts.map +0 -1
  99. package/dist/plugins/fetch/schemas.js +0 -31
  100. package/dist/plugins/findFirstAuthentication/index.d.ts +0 -21
  101. package/dist/plugins/findFirstAuthentication/index.d.ts.map +0 -1
  102. package/dist/plugins/findFirstAuthentication/index.js +0 -36
  103. package/dist/plugins/findFirstAuthentication/index.test.d.ts +0 -2
  104. package/dist/plugins/findFirstAuthentication/index.test.d.ts.map +0 -1
  105. package/dist/plugins/findFirstAuthentication/index.test.js +0 -177
  106. package/dist/plugins/findFirstAuthentication/schemas.d.ts +0 -20
  107. package/dist/plugins/findFirstAuthentication/schemas.d.ts.map +0 -1
  108. package/dist/plugins/findFirstAuthentication/schemas.js +0 -18
  109. package/dist/plugins/findUniqueAuthentication/index.d.ts +0 -21
  110. package/dist/plugins/findUniqueAuthentication/index.d.ts.map +0 -1
  111. package/dist/plugins/findUniqueAuthentication/index.js +0 -39
  112. package/dist/plugins/findUniqueAuthentication/index.test.d.ts +0 -2
  113. package/dist/plugins/findUniqueAuthentication/index.test.d.ts.map +0 -1
  114. package/dist/plugins/findUniqueAuthentication/index.test.js +0 -159
  115. package/dist/plugins/findUniqueAuthentication/schemas.d.ts +0 -20
  116. package/dist/plugins/findUniqueAuthentication/schemas.d.ts.map +0 -1
  117. package/dist/plugins/findUniqueAuthentication/schemas.js +0 -18
  118. package/dist/plugins/getAction/index.d.ts +0 -25
  119. package/dist/plugins/getAction/index.d.ts.map +0 -1
  120. package/dist/plugins/getAction/index.js +0 -42
  121. package/dist/plugins/getAction/index.test.d.ts +0 -2
  122. package/dist/plugins/getAction/index.test.d.ts.map +0 -1
  123. package/dist/plugins/getAction/index.test.js +0 -211
  124. package/dist/plugins/getAction/schemas.d.ts +0 -30
  125. package/dist/plugins/getAction/schemas.d.ts.map +0 -1
  126. package/dist/plugins/getAction/schemas.js +0 -12
  127. package/dist/plugins/getApp/index.d.ts +0 -21
  128. package/dist/plugins/getApp/index.d.ts.map +0 -1
  129. package/dist/plugins/getApp/index.js +0 -44
  130. package/dist/plugins/getApp/index.test.d.ts +0 -2
  131. package/dist/plugins/getApp/index.test.d.ts.map +0 -1
  132. package/dist/plugins/getApp/index.test.js +0 -157
  133. package/dist/plugins/getApp/schemas.d.ts +0 -16
  134. package/dist/plugins/getApp/schemas.d.ts.map +0 -1
  135. package/dist/plugins/getApp/schemas.js +0 -8
  136. package/dist/plugins/getAuthentication/index.d.ts +0 -21
  137. package/dist/plugins/getAuthentication/index.d.ts.map +0 -1
  138. package/dist/plugins/getAuthentication/index.js +0 -29
  139. package/dist/plugins/getAuthentication/index.test.d.ts +0 -2
  140. package/dist/plugins/getAuthentication/index.test.d.ts.map +0 -1
  141. package/dist/plugins/getAuthentication/index.test.js +0 -106
  142. package/dist/plugins/getAuthentication/schemas.d.ts +0 -7
  143. package/dist/plugins/getAuthentication/schemas.d.ts.map +0 -1
  144. package/dist/plugins/getAuthentication/schemas.js +0 -1
  145. package/dist/plugins/getInputFieldsSchema/index.d.ts +0 -23
  146. package/dist/plugins/getInputFieldsSchema/index.d.ts.map +0 -1
  147. package/dist/plugins/getInputFieldsSchema/index.js +0 -53
  148. package/dist/plugins/getInputFieldsSchema/index.test.d.ts +0 -2
  149. package/dist/plugins/getInputFieldsSchema/index.test.d.ts.map +0 -1
  150. package/dist/plugins/getInputFieldsSchema/index.test.js +0 -291
  151. package/dist/plugins/getInputFieldsSchema/schemas.d.ts +0 -28
  152. package/dist/plugins/getInputFieldsSchema/schemas.d.ts.map +0 -1
  153. package/dist/plugins/getInputFieldsSchema/schemas.js +0 -13
  154. package/dist/plugins/getProfile/index.d.ts +0 -25
  155. package/dist/plugins/getProfile/index.d.ts.map +0 -1
  156. package/dist/plugins/getProfile/index.js +0 -39
  157. package/dist/plugins/getProfile/schemas.d.ts +0 -13
  158. package/dist/plugins/getProfile/schemas.d.ts.map +0 -1
  159. package/dist/plugins/getProfile/schemas.js +0 -6
  160. package/dist/plugins/listActions/index.d.ts +0 -30
  161. package/dist/plugins/listActions/index.d.ts.map +0 -1
  162. package/dist/plugins/listActions/index.js +0 -75
  163. package/dist/plugins/listActions/index.test.d.ts +0 -2
  164. package/dist/plugins/listActions/index.test.d.ts.map +0 -1
  165. package/dist/plugins/listActions/index.test.js +0 -453
  166. package/dist/plugins/listActions/schemas.d.ts +0 -35
  167. package/dist/plugins/listActions/schemas.d.ts.map +0 -1
  168. package/dist/plugins/listActions/schemas.js +0 -22
  169. package/dist/plugins/listApps/index.d.ts +0 -25
  170. package/dist/plugins/listApps/index.d.ts.map +0 -1
  171. package/dist/plugins/listApps/index.js +0 -69
  172. package/dist/plugins/listApps/index.test.d.ts +0 -2
  173. package/dist/plugins/listApps/index.test.d.ts.map +0 -1
  174. package/dist/plugins/listApps/index.test.js +0 -141
  175. package/dist/plugins/listApps/schemas.d.ts +0 -26
  176. package/dist/plugins/listApps/schemas.d.ts.map +0 -1
  177. package/dist/plugins/listApps/schemas.js +0 -19
  178. package/dist/plugins/listAuthentications/index.d.ts +0 -24
  179. package/dist/plugins/listAuthentications/index.d.ts.map +0 -1
  180. package/dist/plugins/listAuthentications/index.js +0 -77
  181. package/dist/plugins/listAuthentications/index.test.d.ts +0 -2
  182. package/dist/plugins/listAuthentications/index.test.d.ts.map +0 -1
  183. package/dist/plugins/listAuthentications/index.test.js +0 -832
  184. package/dist/plugins/listAuthentications/schemas.d.ts +0 -30
  185. package/dist/plugins/listAuthentications/schemas.d.ts.map +0 -1
  186. package/dist/plugins/listAuthentications/schemas.js +0 -32
  187. package/dist/plugins/listInputFieldChoices/index.d.ts +0 -33
  188. package/dist/plugins/listInputFieldChoices/index.d.ts.map +0 -1
  189. package/dist/plugins/listInputFieldChoices/index.js +0 -115
  190. package/dist/plugins/listInputFieldChoices/index.test.d.ts +0 -2
  191. package/dist/plugins/listInputFieldChoices/index.test.d.ts.map +0 -1
  192. package/dist/plugins/listInputFieldChoices/index.test.js +0 -717
  193. package/dist/plugins/listInputFieldChoices/schemas.d.ts +0 -43
  194. package/dist/plugins/listInputFieldChoices/schemas.d.ts.map +0 -1
  195. package/dist/plugins/listInputFieldChoices/schemas.js +0 -65
  196. package/dist/plugins/listInputFields/index.d.ts +0 -34
  197. package/dist/plugins/listInputFields/index.d.ts.map +0 -1
  198. package/dist/plugins/listInputFields/index.js +0 -204
  199. package/dist/plugins/listInputFields/index.test.d.ts +0 -2
  200. package/dist/plugins/listInputFields/index.test.d.ts.map +0 -1
  201. package/dist/plugins/listInputFields/index.test.js +0 -359
  202. package/dist/plugins/listInputFields/schemas.d.ts +0 -35
  203. package/dist/plugins/listInputFields/schemas.d.ts.map +0 -1
  204. package/dist/plugins/listInputFields/schemas.js +0 -23
  205. package/dist/plugins/manifest/index.d.ts +0 -85
  206. package/dist/plugins/manifest/index.d.ts.map +0 -1
  207. package/dist/plugins/manifest/index.js +0 -376
  208. package/dist/plugins/manifest/index.test.d.ts +0 -2
  209. package/dist/plugins/manifest/index.test.d.ts.map +0 -1
  210. package/dist/plugins/manifest/index.test.js +0 -1139
  211. package/dist/plugins/manifest/schemas.d.ts +0 -57
  212. package/dist/plugins/manifest/schemas.d.ts.map +0 -1
  213. package/dist/plugins/manifest/schemas.js +0 -50
  214. package/dist/plugins/registry/index.d.ts +0 -21
  215. package/dist/plugins/registry/index.d.ts.map +0 -1
  216. package/dist/plugins/registry/index.js +0 -117
  217. package/dist/plugins/request/index.d.ts +0 -21
  218. package/dist/plugins/request/index.d.ts.map +0 -1
  219. package/dist/plugins/request/index.js +0 -76
  220. package/dist/plugins/request/index.test.d.ts +0 -2
  221. package/dist/plugins/request/index.test.d.ts.map +0 -1
  222. package/dist/plugins/request/index.test.js +0 -337
  223. package/dist/plugins/request/schemas.d.ts +0 -54
  224. package/dist/plugins/request/schemas.d.ts.map +0 -1
  225. package/dist/plugins/request/schemas.js +0 -41
  226. package/dist/plugins/runAction/index.d.ts +0 -33
  227. package/dist/plugins/runAction/index.d.ts.map +0 -1
  228. package/dist/plugins/runAction/index.js +0 -108
  229. package/dist/plugins/runAction/index.test.d.ts +0 -2
  230. package/dist/plugins/runAction/index.test.d.ts.map +0 -1
  231. package/dist/plugins/runAction/index.test.js +0 -333
  232. package/dist/plugins/runAction/schemas.d.ts +0 -34
  233. package/dist/plugins/runAction/schemas.d.ts.map +0 -1
  234. package/dist/plugins/runAction/schemas.js +0 -23
  235. package/dist/resolvers/actionKey.d.ts +0 -15
  236. package/dist/resolvers/actionKey.d.ts.map +0 -1
  237. package/dist/resolvers/actionKey.js +0 -19
  238. package/dist/resolvers/actionType.d.ts +0 -10
  239. package/dist/resolvers/actionType.d.ts.map +0 -1
  240. package/dist/resolvers/actionType.js +0 -21
  241. package/dist/resolvers/appKey.d.ts +0 -3
  242. package/dist/resolvers/appKey.d.ts.map +0 -1
  243. package/dist/resolvers/appKey.js +0 -5
  244. package/dist/resolvers/authenticationId.d.ts +0 -9
  245. package/dist/resolvers/authenticationId.d.ts.map +0 -1
  246. package/dist/resolvers/authenticationId.js +0 -42
  247. package/dist/resolvers/index.d.ts +0 -8
  248. package/dist/resolvers/index.d.ts.map +0 -1
  249. package/dist/resolvers/index.js +0 -8
  250. package/dist/resolvers/inputFieldKey.d.ts +0 -11
  251. package/dist/resolvers/inputFieldKey.d.ts.map +0 -1
  252. package/dist/resolvers/inputFieldKey.js +0 -47
  253. package/dist/resolvers/inputs.d.ts +0 -17
  254. package/dist/resolvers/inputs.d.ts.map +0 -1
  255. package/dist/resolvers/inputs.js +0 -50
  256. package/dist/schemas/Action.d.ts +0 -24
  257. package/dist/schemas/Action.d.ts.map +0 -1
  258. package/dist/schemas/Action.js +0 -40
  259. package/dist/schemas/App.d.ts +0 -57
  260. package/dist/schemas/App.d.ts.map +0 -1
  261. package/dist/schemas/App.js +0 -31
  262. package/dist/schemas/Auth.d.ts +0 -55
  263. package/dist/schemas/Auth.d.ts.map +0 -1
  264. package/dist/schemas/Auth.js +0 -33
  265. package/dist/schemas/Field.d.ts +0 -61
  266. package/dist/schemas/Field.d.ts.map +0 -1
  267. package/dist/schemas/Field.js +0 -116
  268. package/dist/schemas/Run.d.ts +0 -3
  269. package/dist/schemas/Run.d.ts.map +0 -1
  270. package/dist/schemas/Run.js +0 -31
  271. package/dist/schemas/UserProfile.d.ts +0 -13
  272. package/dist/schemas/UserProfile.d.ts.map +0 -1
  273. package/dist/schemas/UserProfile.js +0 -32
  274. package/dist/sdk.d.ts +0 -146
  275. package/dist/sdk.d.ts.map +0 -1
  276. package/dist/sdk.js +0 -112
  277. package/dist/sdk.test.d.ts +0 -2
  278. package/dist/sdk.test.d.ts.map +0 -1
  279. package/dist/sdk.test.js +0 -255
  280. package/dist/services/implementations.d.ts +0 -63
  281. package/dist/services/implementations.d.ts.map +0 -1
  282. package/dist/services/implementations.js +0 -80
  283. package/dist/temporary-internal-core/handlers/listApps.d.ts +0 -67
  284. package/dist/temporary-internal-core/handlers/listApps.d.ts.map +0 -1
  285. package/dist/temporary-internal-core/handlers/listApps.js +0 -134
  286. package/dist/temporary-internal-core/handlers/listApps.test.d.ts +0 -2
  287. package/dist/temporary-internal-core/handlers/listApps.test.d.ts.map +0 -1
  288. package/dist/temporary-internal-core/handlers/listApps.test.js +0 -367
  289. package/dist/temporary-internal-core/index.d.ts +0 -18
  290. package/dist/temporary-internal-core/index.d.ts.map +0 -1
  291. package/dist/temporary-internal-core/index.js +0 -18
  292. package/dist/temporary-internal-core/schemas/apps/index.d.ts +0 -175
  293. package/dist/temporary-internal-core/schemas/apps/index.d.ts.map +0 -1
  294. package/dist/temporary-internal-core/schemas/apps/index.js +0 -97
  295. package/dist/temporary-internal-core/schemas/errors/index.d.ts +0 -139
  296. package/dist/temporary-internal-core/schemas/errors/index.d.ts.map +0 -1
  297. package/dist/temporary-internal-core/schemas/errors/index.js +0 -129
  298. package/dist/temporary-internal-core/schemas/implementations/index.d.ts +0 -127
  299. package/dist/temporary-internal-core/schemas/implementations/index.d.ts.map +0 -1
  300. package/dist/temporary-internal-core/schemas/implementations/index.js +0 -79
  301. package/dist/temporary-internal-core/types/handler.d.ts +0 -51
  302. package/dist/temporary-internal-core/types/handler.d.ts.map +0 -1
  303. package/dist/temporary-internal-core/types/handler.js +0 -8
  304. package/dist/temporary-internal-core/types/index.d.ts +0 -5
  305. package/dist/temporary-internal-core/types/index.d.ts.map +0 -1
  306. package/dist/temporary-internal-core/types/index.js +0 -4
  307. package/dist/temporary-internal-core/utils/app-locators.d.ts +0 -34
  308. package/dist/temporary-internal-core/utils/app-locators.d.ts.map +0 -1
  309. package/dist/temporary-internal-core/utils/app-locators.js +0 -39
  310. package/dist/temporary-internal-core/utils/string-utils.d.ts +0 -28
  311. package/dist/temporary-internal-core/utils/string-utils.d.ts.map +0 -1
  312. package/dist/temporary-internal-core/utils/string-utils.js +0 -52
  313. package/dist/temporary-internal-core/utils/transformations.d.ts +0 -18
  314. package/dist/temporary-internal-core/utils/transformations.d.ts.map +0 -1
  315. package/dist/temporary-internal-core/utils/transformations.js +0 -36
  316. package/dist/types/domain.d.ts +0 -52
  317. package/dist/types/domain.d.ts.map +0 -1
  318. package/dist/types/domain.js +0 -1
  319. package/dist/types/domain.test.d.ts +0 -2
  320. package/dist/types/domain.test.d.ts.map +0 -1
  321. package/dist/types/domain.test.js +0 -39
  322. package/dist/types/errors.d.ts +0 -143
  323. package/dist/types/errors.d.ts.map +0 -1
  324. package/dist/types/errors.js +0 -187
  325. package/dist/types/events.d.ts +0 -38
  326. package/dist/types/events.d.ts.map +0 -1
  327. package/dist/types/events.js +0 -7
  328. package/dist/types/functions.d.ts +0 -27
  329. package/dist/types/functions.d.ts.map +0 -1
  330. package/dist/types/functions.js +0 -1
  331. package/dist/types/plugin.d.ts +0 -75
  332. package/dist/types/plugin.d.ts.map +0 -1
  333. package/dist/types/plugin.js +0 -9
  334. package/dist/types/properties.d.ts +0 -33
  335. package/dist/types/properties.d.ts.map +0 -1
  336. package/dist/types/properties.js +0 -52
  337. package/dist/types/sdk.d.ts +0 -69
  338. package/dist/types/sdk.d.ts.map +0 -1
  339. package/dist/types/sdk.js +0 -4
  340. package/dist/types/telemetry-events.d.ts +0 -105
  341. package/dist/types/telemetry-events.d.ts.map +0 -1
  342. package/dist/types/telemetry-events.js +0 -8
  343. package/dist/utils/array-utils.d.ts +0 -31
  344. package/dist/utils/array-utils.d.ts.map +0 -1
  345. package/dist/utils/array-utils.js +0 -36
  346. package/dist/utils/array-utils.test.d.ts +0 -2
  347. package/dist/utils/array-utils.test.d.ts.map +0 -1
  348. package/dist/utils/array-utils.test.js +0 -107
  349. package/dist/utils/batch-utils.d.ts +0 -72
  350. package/dist/utils/batch-utils.d.ts.map +0 -1
  351. package/dist/utils/batch-utils.js +0 -162
  352. package/dist/utils/batch-utils.test.d.ts +0 -2
  353. package/dist/utils/batch-utils.test.d.ts.map +0 -1
  354. package/dist/utils/batch-utils.test.js +0 -476
  355. package/dist/utils/domain-utils.d.ts +0 -66
  356. package/dist/utils/domain-utils.d.ts.map +0 -1
  357. package/dist/utils/domain-utils.js +0 -164
  358. package/dist/utils/domain-utils.test.d.ts +0 -2
  359. package/dist/utils/domain-utils.test.d.ts.map +0 -1
  360. package/dist/utils/domain-utils.test.js +0 -346
  361. package/dist/utils/file-utils.d.ts +0 -4
  362. package/dist/utils/file-utils.d.ts.map +0 -1
  363. package/dist/utils/file-utils.js +0 -74
  364. package/dist/utils/file-utils.test.d.ts +0 -2
  365. package/dist/utils/file-utils.test.d.ts.map +0 -1
  366. package/dist/utils/file-utils.test.js +0 -51
  367. package/dist/utils/function-utils.d.ts +0 -73
  368. package/dist/utils/function-utils.d.ts.map +0 -1
  369. package/dist/utils/function-utils.js +0 -245
  370. package/dist/utils/function-utils.test.d.ts +0 -2
  371. package/dist/utils/function-utils.test.d.ts.map +0 -1
  372. package/dist/utils/function-utils.test.js +0 -110
  373. package/dist/utils/id-utils.d.ts +0 -13
  374. package/dist/utils/id-utils.d.ts.map +0 -1
  375. package/dist/utils/id-utils.js +0 -22
  376. package/dist/utils/id-utils.test.d.ts +0 -2
  377. package/dist/utils/id-utils.test.d.ts.map +0 -1
  378. package/dist/utils/id-utils.test.js +0 -22
  379. package/dist/utils/pagination-utils.d.ts +0 -37
  380. package/dist/utils/pagination-utils.d.ts.map +0 -1
  381. package/dist/utils/pagination-utils.js +0 -165
  382. package/dist/utils/pagination-utils.test.d.ts +0 -17
  383. package/dist/utils/pagination-utils.test.d.ts.map +0 -1
  384. package/dist/utils/pagination-utils.test.js +0 -461
  385. package/dist/utils/retry-utils.d.ts +0 -45
  386. package/dist/utils/retry-utils.d.ts.map +0 -1
  387. package/dist/utils/retry-utils.js +0 -51
  388. package/dist/utils/retry-utils.test.d.ts +0 -2
  389. package/dist/utils/retry-utils.test.d.ts.map +0 -1
  390. package/dist/utils/retry-utils.test.js +0 -90
  391. package/dist/utils/schema-utils.d.ts +0 -69
  392. package/dist/utils/schema-utils.d.ts.map +0 -1
  393. package/dist/utils/schema-utils.js +0 -72
  394. package/dist/utils/string-utils.d.ts +0 -40
  395. package/dist/utils/string-utils.d.ts.map +0 -1
  396. package/dist/utils/string-utils.js +0 -69
  397. package/dist/utils/string-utils.test.d.ts +0 -2
  398. package/dist/utils/string-utils.test.d.ts.map +0 -1
  399. package/dist/utils/string-utils.test.js +0 -59
  400. package/dist/utils/telemetry-utils.d.ts +0 -44
  401. package/dist/utils/telemetry-utils.d.ts.map +0 -1
  402. package/dist/utils/telemetry-utils.js +0 -55
  403. package/dist/utils/telemetry-utils.test.d.ts +0 -2
  404. package/dist/utils/telemetry-utils.test.d.ts.map +0 -1
  405. package/dist/utils/telemetry-utils.test.js +0 -94
  406. package/dist/utils/url-utils.d.ts +0 -19
  407. package/dist/utils/url-utils.d.ts.map +0 -1
  408. package/dist/utils/url-utils.js +0 -62
  409. package/dist/utils/url-utils.test.d.ts +0 -2
  410. package/dist/utils/url-utils.test.d.ts.map +0 -1
  411. package/dist/utils/url-utils.test.js +0 -103
  412. package/dist/utils/validation.d.ts +0 -4
  413. package/dist/utils/validation.d.ts.map +0 -1
  414. package/dist/utils/validation.js +0 -30
  415. package/dist/utils/validation.test.d.ts +0 -2
  416. package/dist/utils/validation.test.d.ts.map +0 -1
  417. package/dist/utils/validation.test.js +0 -44
@@ -1,139 +0,0 @@
1
- /**
2
- * Polling Utilities
3
- *
4
- * This module provides utilities for polling HTTP endpoints until completion,
5
- * with configurable retry logic and exponential backoff.
6
- */
7
- import { ZapierTimeoutError, ZapierApiError, ZapierValidationError, } from "../types/errors";
8
- import { setTimeout } from "timers/promises";
9
- import { calculateWaitTime, MAX_CONSECUTIVE_ERRORS, } from "../utils/retry-utils";
10
- // Constants
11
- const DEFAULT_TIMEOUT_MS = 180000;
12
- const DEFAULT_SUCCESS_STATUS = 200;
13
- const DEFAULT_PENDING_STATUS = 202;
14
- const DEFAULT_INITIAL_DELAY_MS = 50;
15
- const DEFAULT_MAX_POLLING_INTERVAL_MS = 10000;
16
- const MAX_TIMEOUT_BUFFER_MS = 10000;
17
- // Polling stages: [threshold_ms, interval_ms]
18
- // Note: These are default stages, actual hard timeout is enforced separately below
19
- const DEFAULT_POLLING_STAGES = [
20
- [125, 125], // Up to 125ms: poll every 125ms
21
- [375, 250], // Up to 375ms: poll every 250ms
22
- [875, 500], // Up to 875ms: poll every 500ms
23
- [10000, 1000], // Up to 10s: poll every 1s
24
- [30000, 2500], // Up to 30s: poll every 2.5s
25
- [60000, 5000], // Up to 60s: poll every 5s
26
- ];
27
- const processResponse = async (response, successStatus, pendingStatus, resultExtractor, errorCount) => {
28
- // Handle other error responses
29
- if (!response.ok) {
30
- return {
31
- status: "continue" /* PollStatus.Continue */,
32
- // If for some reason the status is pending, we don't want to increment the error count
33
- errorCount: response.status === pendingStatus ? errorCount : errorCount + 1,
34
- };
35
- }
36
- // Check for successful completion
37
- if (response.status === successStatus) {
38
- try {
39
- const resultJson = await response.json();
40
- return {
41
- result: resultExtractor(resultJson),
42
- status: "success" /* PollStatus.Success */,
43
- errorCount: 0,
44
- };
45
- }
46
- catch (error) {
47
- throw new ZapierApiError("Result extractor failed to parse successful response as JSON", {
48
- statusCode: response.status,
49
- cause: error,
50
- });
51
- }
52
- }
53
- // If it's not pending, it's unexpected
54
- if (response.status !== pendingStatus) {
55
- throw new ZapierApiError(`Unexpected response status during polling: ${response.status}`, {
56
- statusCode: response.status,
57
- });
58
- }
59
- // It's still pending, so we continue polling
60
- return {
61
- status: "continue" /* PollStatus.Continue */,
62
- errorCount: 0,
63
- };
64
- };
65
- /**
66
- * Polls an endpoint until completion, timeout, or error
67
- * @param options Configuration options for polling
68
- * @returns The extracted result from the successful response
69
- * @throws {ZapierValidationError} When the input parameters are invalid
70
- * @throws {ZapierTimeoutError} When the operation times out
71
- * @throws {ZapierApiError} When the API returns consecutive errors
72
- */
73
- export async function pollUntilComplete(options) {
74
- const { fetchPoll, timeoutMs = DEFAULT_TIMEOUT_MS, initialDelay = DEFAULT_INITIAL_DELAY_MS, successStatus = DEFAULT_SUCCESS_STATUS, pendingStatus = DEFAULT_PENDING_STATUS, resultExtractor = (response) => response, } = options;
75
- // Validate input parameters
76
- if (timeoutMs <= 0) {
77
- throw new ZapierValidationError("Timeout must be greater than 0", {
78
- details: { timeoutMs },
79
- });
80
- }
81
- if (initialDelay < 0) {
82
- throw new ZapierValidationError("Initial delay must be non-negative", {
83
- details: { initialDelay },
84
- });
85
- }
86
- const startTime = Date.now();
87
- let attempts = 0;
88
- let errorCount = 0;
89
- // Build polling stages with the actual timeout appended
90
- const pollingStages = [
91
- ...DEFAULT_POLLING_STAGES,
92
- [timeoutMs + MAX_TIMEOUT_BUFFER_MS, DEFAULT_MAX_POLLING_INTERVAL_MS], // Up to timeout + 10s: poll every 10s
93
- ];
94
- // Apply initial delay if specified
95
- if (initialDelay > 0) {
96
- await setTimeout(initialDelay);
97
- }
98
- while (true) {
99
- attempts++;
100
- const elapsedTime = Date.now() - startTime;
101
- // Find the current polling stage
102
- const pollingInterval = pollingStages.find(([maxTimeForStage, _interval]) => {
103
- return elapsedTime < maxTimeForStage;
104
- });
105
- // If there isn't a current stage, throw timeout error
106
- if (!pollingInterval) {
107
- throw new ZapierTimeoutError(`Operation timed out after ${Math.floor(elapsedTime / 1000)}s (${attempts} attempts)`, {
108
- attempts,
109
- });
110
- }
111
- // Wait before polling (except on first attempt)
112
- if (attempts > 1) {
113
- const waitTime = calculateWaitTime(pollingInterval[1], errorCount);
114
- await setTimeout(waitTime);
115
- }
116
- // Perform the poll request
117
- try {
118
- const response = await fetchPoll();
119
- const { result, errorCount: newErrorCount, status, } = await processResponse(response, successStatus, pendingStatus, resultExtractor, errorCount);
120
- errorCount = newErrorCount;
121
- if (status === "success" /* PollStatus.Success */) {
122
- return result;
123
- }
124
- if (errorCount >= MAX_CONSECUTIVE_ERRORS) {
125
- // Too many consecutive errors, fail
126
- throw new ZapierApiError(`Poll request failed: ${response.status} ${response.statusText}`, { statusCode: response.status });
127
- }
128
- }
129
- catch (error) {
130
- errorCount++;
131
- if (errorCount >= MAX_CONSECUTIVE_ERRORS) {
132
- throw new ZapierApiError(`Failed to poll after ${errorCount} consecutive errors: ${error instanceof Error ? error.message : String(error)}`, {
133
- cause: error,
134
- });
135
- }
136
- }
137
- // Continue polling if status is pending
138
- }
139
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=polling.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polling.test.d.ts","sourceRoot":"","sources":["../../src/api/polling.test.ts"],"names":[],"mappings":""}
@@ -1,318 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { pollUntilComplete } from "./polling";
3
- import { ZapierTimeoutError, ZapierApiError, ZapierValidationError, } from "../types/errors";
4
- // Mock the timers/promises module
5
- vi.mock("timers/promises", () => ({
6
- setTimeout: vi.fn(() => Promise.resolve()),
7
- }));
8
- describe("pollUntilComplete", () => {
9
- beforeEach(() => {
10
- vi.clearAllMocks();
11
- });
12
- afterEach(() => {
13
- vi.clearAllMocks();
14
- });
15
- describe("successful polling", () => {
16
- it("should return immediately on first successful response", async () => {
17
- const mockResponse = {
18
- ok: true,
19
- status: 200,
20
- json: vi.fn().mockResolvedValue({ data: "success" }),
21
- };
22
- const fetchPoll = vi.fn().mockResolvedValue(mockResponse);
23
- const result = await pollUntilComplete({ fetchPoll });
24
- expect(result).toEqual({ data: "success" });
25
- expect(fetchPoll).toHaveBeenCalledTimes(1);
26
- });
27
- it("should poll until success status is received", async () => {
28
- const pendingResponse = {
29
- ok: true,
30
- status: 202,
31
- };
32
- const successResponse = {
33
- ok: true,
34
- status: 200,
35
- json: vi.fn().mockResolvedValue({ data: "complete" }),
36
- };
37
- const fetchPoll = vi
38
- .fn()
39
- .mockResolvedValueOnce(pendingResponse)
40
- .mockResolvedValueOnce(pendingResponse)
41
- .mockResolvedValueOnce(successResponse);
42
- const result = await pollUntilComplete({ fetchPoll });
43
- expect(result).toEqual({ data: "complete" });
44
- expect(fetchPoll).toHaveBeenCalledTimes(3);
45
- });
46
- it("should use custom success and pending status codes", async () => {
47
- const pendingResponse = {
48
- ok: true,
49
- status: 301,
50
- };
51
- const successResponse = {
52
- ok: true,
53
- status: 204,
54
- json: vi.fn().mockResolvedValue({ done: true }),
55
- };
56
- const fetchPoll = vi
57
- .fn()
58
- .mockResolvedValueOnce(pendingResponse)
59
- .mockResolvedValueOnce(successResponse);
60
- const result = await pollUntilComplete({
61
- fetchPoll,
62
- successStatus: 204,
63
- pendingStatus: 301,
64
- });
65
- expect(result).toEqual({ done: true });
66
- expect(fetchPoll).toHaveBeenCalledTimes(2);
67
- });
68
- it("should apply result extractor function", async () => {
69
- const mockResponse = {
70
- ok: true,
71
- status: 200,
72
- json: vi.fn().mockResolvedValue({
73
- nested: { data: { value: "extracted" } },
74
- }),
75
- };
76
- const fetchPoll = vi.fn().mockResolvedValue(mockResponse);
77
- const resultExtractor = (response) => response.nested.data.value;
78
- const result = await pollUntilComplete({
79
- fetchPoll,
80
- resultExtractor,
81
- });
82
- expect(result).toBe("extracted");
83
- });
84
- });
85
- describe("initial delay", () => {
86
- it("should wait for initial delay before first poll", async () => {
87
- const mockResponse = {
88
- ok: true,
89
- status: 200,
90
- json: vi.fn().mockResolvedValue({ data: "success" }),
91
- };
92
- const fetchPoll = vi.fn().mockResolvedValue(mockResponse);
93
- const { setTimeout: mockSetTimeout } = await import("timers/promises");
94
- const result = await pollUntilComplete({
95
- fetchPoll,
96
- initialDelay: 500,
97
- });
98
- expect(result).toEqual({ data: "success" });
99
- expect(fetchPoll).toHaveBeenCalledTimes(1);
100
- // Verify setTimeout was called with the initial delay
101
- expect(mockSetTimeout).toHaveBeenCalledWith(500);
102
- });
103
- });
104
- describe("error handling", () => {
105
- it("should retry on transient network errors", async () => {
106
- const successResponse = {
107
- ok: true,
108
- status: 200,
109
- json: vi.fn().mockResolvedValue({ data: "recovered" }),
110
- };
111
- const fetchPoll = vi
112
- .fn()
113
- .mockRejectedValueOnce(new Error("Network error"))
114
- .mockRejectedValueOnce(new Error("Network error"))
115
- .mockResolvedValueOnce(successResponse);
116
- const result = await pollUntilComplete({ fetchPoll });
117
- expect(result).toEqual({ data: "recovered" });
118
- expect(fetchPoll).toHaveBeenCalledTimes(3);
119
- });
120
- it("should fail after MAX_CONSECUTIVE_ERRORS network failures", async () => {
121
- const fetchPoll = vi
122
- .fn()
123
- .mockRejectedValue(new Error("Persistent network error"));
124
- await expect(pollUntilComplete({ fetchPoll })).rejects.toThrow(ZapierApiError);
125
- expect(fetchPoll).toHaveBeenCalledTimes(3);
126
- });
127
- it("should retry on HTTP error responses", async () => {
128
- const errorResponse = {
129
- ok: false,
130
- status: 500,
131
- statusText: "Internal Server Error",
132
- };
133
- const successResponse = {
134
- ok: true,
135
- status: 200,
136
- json: vi.fn().mockResolvedValue({ data: "recovered" }),
137
- };
138
- const fetchPoll = vi
139
- .fn()
140
- .mockResolvedValueOnce(errorResponse)
141
- .mockResolvedValueOnce(errorResponse)
142
- .mockResolvedValueOnce(successResponse);
143
- const result = await pollUntilComplete({ fetchPoll });
144
- expect(result).toEqual({ data: "recovered" });
145
- expect(fetchPoll).toHaveBeenCalledTimes(3);
146
- });
147
- it("should fail after MAX_CONSECUTIVE_ERRORS HTTP failures", async () => {
148
- const errorResponse = {
149
- ok: false,
150
- status: 503,
151
- statusText: "Service Unavailable",
152
- };
153
- const fetchPoll = vi.fn().mockResolvedValue(errorResponse);
154
- await expect(pollUntilComplete({ fetchPoll })).rejects.toThrow(ZapierApiError);
155
- expect(fetchPoll).toHaveBeenCalledTimes(3);
156
- });
157
- it("should throw error for unexpected response status", async () => {
158
- const unexpectedResponse = {
159
- ok: true,
160
- status: 301, // Not success (200) or pending (202)
161
- };
162
- const fetchPoll = vi.fn().mockResolvedValue(unexpectedResponse);
163
- await expect(pollUntilComplete({ fetchPoll })).rejects.toThrow("Unexpected response status");
164
- // Will retry 3 times before failing
165
- expect(fetchPoll).toHaveBeenCalledTimes(3);
166
- });
167
- it("should throw error if successful response is not valid JSON", async () => {
168
- const mockResponse = {
169
- ok: true,
170
- status: 200,
171
- json: vi.fn().mockRejectedValue(new Error("Invalid JSON")),
172
- };
173
- const fetchPoll = vi.fn().mockResolvedValue(mockResponse);
174
- await expect(pollUntilComplete({ fetchPoll })).rejects.toThrow("Failed to poll after 3 consecutive errors");
175
- // Will retry 3 times before failing
176
- expect(fetchPoll).toHaveBeenCalledTimes(3);
177
- });
178
- });
179
- describe("timeout behavior", () => {
180
- it("should timeout after specified duration", async () => {
181
- // Mock Date.now to simulate time passing
182
- const originalDateNow = Date.now;
183
- let currentTime = 1000;
184
- Date.now = vi.fn(() => currentTime);
185
- const pendingResponse = {
186
- ok: true,
187
- status: 202,
188
- };
189
- const fetchPoll = vi.fn().mockImplementation(() => {
190
- // Simulate time passing with each poll
191
- currentTime += 500;
192
- return Promise.resolve(pendingResponse);
193
- });
194
- try {
195
- await expect(pollUntilComplete({
196
- fetchPoll,
197
- timeoutMs: 1000,
198
- initialDelay: 0,
199
- })).rejects.toThrow(ZapierTimeoutError);
200
- }
201
- finally {
202
- Date.now = originalDateNow;
203
- }
204
- });
205
- it("should use default timeout when not specified", async () => {
206
- // Mock Date.now to simulate time passing beyond default timeout
207
- const originalDateNow = Date.now;
208
- let currentTime = 1000;
209
- Date.now = vi.fn(() => currentTime);
210
- const pendingResponse = {
211
- ok: true,
212
- status: 202,
213
- };
214
- const fetchPoll = vi.fn().mockImplementation(() => {
215
- // Simulate time passing beyond default timeout (180 seconds + buffer)
216
- currentTime += 50000;
217
- return Promise.resolve(pendingResponse);
218
- });
219
- try {
220
- await expect(pollUntilComplete({
221
- fetchPoll,
222
- initialDelay: 0,
223
- })).rejects.toThrow(ZapierTimeoutError);
224
- }
225
- finally {
226
- Date.now = originalDateNow;
227
- }
228
- });
229
- });
230
- describe("input validation", () => {
231
- it("should throw error for invalid timeout", async () => {
232
- const fetchPoll = vi.fn();
233
- await expect(pollUntilComplete({
234
- fetchPoll,
235
- timeoutMs: 0,
236
- })).rejects.toThrow(ZapierValidationError);
237
- await expect(pollUntilComplete({
238
- fetchPoll,
239
- timeoutMs: -1000,
240
- })).rejects.toThrow(/Timeout must be greater than 0/);
241
- });
242
- it("should throw error for negative initial delay", async () => {
243
- const fetchPoll = vi.fn();
244
- await expect(pollUntilComplete({
245
- fetchPoll,
246
- initialDelay: -100,
247
- })).rejects.toThrow(ZapierValidationError);
248
- await expect(pollUntilComplete({
249
- fetchPoll,
250
- initialDelay: -1,
251
- })).rejects.toThrow(/Initial delay must be non-negative/);
252
- });
253
- });
254
- describe("edge cases", () => {
255
- it("should handle rapid status changes", async () => {
256
- const responses = [
257
- { ok: true, status: 202 },
258
- { ok: false, status: 500 },
259
- { ok: true, status: 202 },
260
- {
261
- ok: true,
262
- status: 200,
263
- json: vi.fn().mockResolvedValue({ data: "success" }),
264
- },
265
- ];
266
- let index = 0;
267
- const fetchPoll = vi.fn().mockImplementation(() => {
268
- const response = responses[index];
269
- index++;
270
- return Promise.resolve(response);
271
- });
272
- const result = await pollUntilComplete({ fetchPoll });
273
- expect(result).toEqual({ data: "success" });
274
- expect(fetchPoll).toHaveBeenCalledTimes(4);
275
- });
276
- it("should handle immediate success with no initial delay", async () => {
277
- const mockResponse = {
278
- ok: true,
279
- status: 200,
280
- json: vi.fn().mockResolvedValue({ instant: true }),
281
- };
282
- const fetchPoll = vi.fn().mockResolvedValue(mockResponse);
283
- const result = await pollUntilComplete({
284
- fetchPoll,
285
- initialDelay: 0,
286
- });
287
- expect(result).toEqual({ instant: true });
288
- expect(fetchPoll).toHaveBeenCalledTimes(1);
289
- });
290
- it("should handle very short timeout", async () => {
291
- // Mock Date.now to simulate time passing
292
- const originalDateNow = Date.now;
293
- let currentTime = 1000;
294
- Date.now = vi.fn(() => currentTime);
295
- const pendingResponse = {
296
- ok: true,
297
- status: 202,
298
- };
299
- const fetchPoll = vi.fn().mockImplementation(() => {
300
- // Simulate time passing beyond the short timeout
301
- currentTime += 200;
302
- return Promise.resolve(pendingResponse);
303
- });
304
- try {
305
- await expect(pollUntilComplete({
306
- fetchPoll,
307
- timeoutMs: 100,
308
- initialDelay: 0,
309
- })).rejects.toThrow(ZapierTimeoutError);
310
- // Should have made at least 1 attempt before timing out
311
- expect(fetchPoll.mock.calls.length).toBeGreaterThanOrEqual(1);
312
- }
313
- finally {
314
- Date.now = originalDateNow;
315
- }
316
- });
317
- });
318
- });
@@ -1,16 +0,0 @@
1
- import { type Handler } from "../temporary-internal-core";
2
- export interface Route {
3
- method: string;
4
- pattern: RegExp;
5
- handler: Handler<any, any, any>;
6
- paramMap: string[];
7
- }
8
- export declare function findMatchingRoute(routeList: Route[], method: string, path: string): {
9
- handler: Handler<any, any, any>;
10
- params: Record<string, string>;
11
- } | null;
12
- export declare function matchRoute(method: string, path: string): {
13
- handler: Handler<any, any, any>;
14
- params: Record<string, string>;
15
- } | null;
16
- //# sourceMappingURL=router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1E,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAWD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,KAAK,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;;;SAsBb;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;SAEtD"}
@@ -1,31 +0,0 @@
1
- import { handleListApps } from "../temporary-internal-core";
2
- const routes = [
3
- {
4
- method: "GET",
5
- pattern: /^\/api\/v0\/apps$/,
6
- handler: handleListApps,
7
- paramMap: [],
8
- },
9
- ];
10
- export function findMatchingRoute(routeList, method, path) {
11
- for (const route of routeList) {
12
- if (route.method !== method) {
13
- continue;
14
- }
15
- const match = path.match(route.pattern);
16
- if (match) {
17
- const params = {};
18
- route.paramMap.forEach((name, index) => {
19
- params[name] = match[index + 1];
20
- });
21
- return {
22
- handler: route.handler,
23
- params,
24
- };
25
- }
26
- }
27
- return null;
28
- }
29
- export function matchRoute(method, path) {
30
- return findMatchingRoute(routes, method, path);
31
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=router.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.test.d.ts","sourceRoot":"","sources":["../../src/api/router.test.ts"],"names":[],"mappings":""}
@@ -1,103 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import { matchRoute, findMatchingRoute } from "./router";
3
- import { handleListApps } from "../temporary-internal-core";
4
- describe("Router", () => {
5
- describe("matchRoute (Integration)", () => {
6
- it("should match GET /api/v0/apps", () => {
7
- const match = matchRoute("GET", "/api/v0/apps");
8
- expect(match).not.toBeNull();
9
- expect(match?.handler).toBe(handleListApps);
10
- expect(match?.params).toEqual({});
11
- });
12
- it("should not match POST /api/v0/apps", () => {
13
- const match = matchRoute("POST", "/api/v0/apps");
14
- expect(match).toBeNull();
15
- });
16
- it("should not match unknown paths", () => {
17
- expect(matchRoute("GET", "/api/v0/unknown")).toBeNull();
18
- expect(matchRoute("GET", "/")).toBeNull();
19
- });
20
- it("should not match partial paths if regex is anchored", () => {
21
- // The regex is /^\/api\/v0\/apps$/ so it shouldn't match suffix
22
- expect(matchRoute("GET", "/api/v0/apps/something")).toBeNull();
23
- });
24
- });
25
- describe("findMatchingRoute (Unit)", () => {
26
- const mockHandler = vi.fn();
27
- const testRoutes = [
28
- {
29
- method: "GET",
30
- pattern: /^\/items$/,
31
- handler: mockHandler,
32
- paramMap: [],
33
- },
34
- {
35
- method: "GET",
36
- pattern: /^\/items\/(\d+)$/,
37
- handler: mockHandler,
38
- paramMap: ["id"],
39
- },
40
- {
41
- method: "POST",
42
- pattern: /^\/items$/,
43
- handler: mockHandler,
44
- paramMap: [],
45
- },
46
- {
47
- method: "GET",
48
- pattern: /^\/users\/(\w+)\/posts\/(\d+)$/,
49
- handler: mockHandler,
50
- paramMap: ["userId", "postId"],
51
- },
52
- ];
53
- it("should match exact path", () => {
54
- const match = findMatchingRoute(testRoutes, "GET", "/items");
55
- expect(match).not.toBeNull();
56
- expect(match?.handler).toBe(mockHandler);
57
- expect(match?.params).toEqual({});
58
- });
59
- it("should extract single parameter", () => {
60
- const match = findMatchingRoute(testRoutes, "GET", "/items/123");
61
- expect(match).not.toBeNull();
62
- expect(match?.params).toEqual({ id: "123" });
63
- });
64
- it("should extract multiple parameters", () => {
65
- const match = findMatchingRoute(testRoutes, "GET", "/users/alice/posts/456");
66
- expect(match).not.toBeNull();
67
- expect(match?.params).toEqual({ userId: "alice", postId: "456" });
68
- });
69
- it("should respect HTTP method", () => {
70
- // GET /items exists
71
- expect(findMatchingRoute(testRoutes, "GET", "/items")).not.toBeNull();
72
- // POST /items exists
73
- expect(findMatchingRoute(testRoutes, "POST", "/items")).not.toBeNull();
74
- // PUT /items does not exist
75
- expect(findMatchingRoute(testRoutes, "PUT", "/items")).toBeNull();
76
- });
77
- it("should not match if regex does not match", () => {
78
- // /items/abc does not match /^\/items\/(\d+)$/ (\d+ is digits only)
79
- expect(findMatchingRoute(testRoutes, "GET", "/items/abc")).toBeNull();
80
- });
81
- it("should handle empty route list", () => {
82
- expect(findMatchingRoute([], "GET", "/anything")).toBeNull();
83
- });
84
- it("should return first matching route", () => {
85
- const overlappingRoutes = [
86
- {
87
- method: "GET",
88
- pattern: /^\/overlapping$/,
89
- handler: mockHandler,
90
- paramMap: [],
91
- },
92
- {
93
- method: "GET",
94
- pattern: /^\/overlapping$/, // duplicate pattern
95
- handler: () => Promise.resolve("second"),
96
- paramMap: [],
97
- },
98
- ];
99
- const match = findMatchingRoute(overlappingRoutes, "GET", "/overlapping");
100
- expect(match?.handler).toBe(mockHandler); // Should match the first one
101
- });
102
- });
103
- });