@tryfinch/finch-api 5.0.0 → 5.2.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 (364) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +61 -21
  3. package/_shims/MultipartBody.d.ts +9 -0
  4. package/_shims/MultipartBody.d.ts.map +1 -0
  5. package/_shims/MultipartBody.js +16 -0
  6. package/_shims/MultipartBody.js.map +1 -0
  7. package/_shims/MultipartBody.mjs +12 -0
  8. package/_shims/MultipartBody.mjs.map +1 -0
  9. package/_shims/README.md +46 -0
  10. package/{src/_shims/ReadableStream.node.ts → _shims/auto/runtime-bun.d.ts} +2 -3
  11. package/_shims/auto/runtime-bun.d.ts.map +1 -0
  12. package/_shims/auto/runtime-bun.js +21 -0
  13. package/_shims/auto/runtime-bun.js.map +1 -0
  14. package/_shims/auto/runtime-bun.mjs +2 -0
  15. package/_shims/auto/runtime-bun.mjs.map +1 -0
  16. package/_shims/auto/runtime-node.d.ts +5 -0
  17. package/_shims/auto/runtime-node.d.ts.map +1 -0
  18. package/_shims/auto/runtime-node.js +21 -0
  19. package/_shims/auto/runtime-node.js.map +1 -0
  20. package/_shims/auto/runtime-node.mjs +2 -0
  21. package/_shims/auto/runtime-node.mjs.map +1 -0
  22. package/_shims/auto/runtime.d.ts +5 -0
  23. package/_shims/auto/runtime.d.ts.map +1 -0
  24. package/_shims/auto/runtime.js +21 -0
  25. package/_shims/auto/runtime.js.map +1 -0
  26. package/_shims/auto/runtime.mjs +2 -0
  27. package/_shims/auto/runtime.mjs.map +1 -0
  28. package/_shims/auto/types-node.d.ts +5 -0
  29. package/_shims/auto/types-node.d.ts.map +1 -0
  30. package/_shims/auto/types-node.js +21 -0
  31. package/_shims/auto/types-node.js.map +1 -0
  32. package/_shims/auto/types-node.mjs +2 -0
  33. package/_shims/auto/types-node.mjs.map +1 -0
  34. package/_shims/auto/types.d.ts +99 -0
  35. package/{src/_shims/ReadableStream.js → _shims/auto/types.js} +0 -2
  36. package/_shims/{ReadableStream.js → auto/types.mjs} +0 -2
  37. package/_shims/bun-runtime.d.ts +6 -0
  38. package/_shims/bun-runtime.d.ts.map +1 -0
  39. package/_shims/bun-runtime.js +14 -0
  40. package/_shims/bun-runtime.js.map +1 -0
  41. package/_shims/bun-runtime.mjs +10 -0
  42. package/_shims/bun-runtime.mjs.map +1 -0
  43. package/_shims/index.d.ts +79 -0
  44. package/_shims/index.js +13 -0
  45. package/_shims/index.mjs +7 -0
  46. package/_shims/manual-types.d.ts +12 -0
  47. package/_shims/manual-types.js +3 -0
  48. package/_shims/manual-types.mjs +3 -0
  49. package/_shims/node-runtime.d.ts +3 -0
  50. package/_shims/node-runtime.d.ts.map +1 -0
  51. package/_shims/node-runtime.js +87 -0
  52. package/_shims/node-runtime.js.map +1 -0
  53. package/_shims/node-runtime.mjs +54 -0
  54. package/_shims/node-runtime.mjs.map +1 -0
  55. package/_shims/node-types.d.ts +42 -0
  56. package/_shims/node-types.js +3 -0
  57. package/_shims/node-types.mjs +3 -0
  58. package/_shims/registry.d.ts +35 -0
  59. package/_shims/registry.d.ts.map +1 -0
  60. package/_shims/registry.js +39 -0
  61. package/_shims/registry.js.map +1 -0
  62. package/_shims/registry.mjs +35 -0
  63. package/_shims/registry.mjs.map +1 -0
  64. package/_shims/web-runtime.d.ts +5 -0
  65. package/_shims/web-runtime.d.ts.map +1 -0
  66. package/_shims/web-runtime.js +70 -0
  67. package/_shims/web-runtime.js.map +1 -0
  68. package/_shims/web-runtime.mjs +63 -0
  69. package/_shims/web-runtime.mjs.map +1 -0
  70. package/_shims/web-types.d.ts +82 -0
  71. package/_shims/web-types.js +3 -0
  72. package/_shims/web-types.mjs +3 -0
  73. package/core.d.ts +171 -223
  74. package/core.d.ts.map +1 -1
  75. package/core.js +674 -728
  76. package/core.js.map +1 -1
  77. package/core.mjs +668 -681
  78. package/core.mjs.map +1 -1
  79. package/error.d.ts +29 -31
  80. package/error.d.ts.map +1 -1
  81. package/error.js +91 -105
  82. package/error.js.map +1 -1
  83. package/error.mjs +88 -90
  84. package/error.mjs.map +1 -1
  85. package/index.d.mts +144 -173
  86. package/index.d.ts +144 -173
  87. package/index.d.ts.map +1 -1
  88. package/index.js +144 -195
  89. package/index.js.map +1 -1
  90. package/index.mjs +122 -143
  91. package/index.mjs.map +1 -1
  92. package/package.json +33 -20
  93. package/pagination.d.ts +47 -167
  94. package/pagination.d.ts.map +1 -1
  95. package/pagination.js +72 -202
  96. package/pagination.js.map +1 -1
  97. package/pagination.mjs +68 -187
  98. package/pagination.mjs.map +1 -1
  99. package/resource.d.ts +10 -10
  100. package/resource.js +12 -12
  101. package/resource.mjs +10 -10
  102. package/resources/account.d.ts +44 -44
  103. package/resources/account.js +20 -19
  104. package/resources/account.mjs +17 -16
  105. package/resources/hris/benefits/benefits.d.ts +127 -154
  106. package/resources/hris/benefits/benefits.js +74 -89
  107. package/resources/hris/benefits/benefits.mjs +50 -48
  108. package/resources/hris/benefits/index.d.ts +3 -28
  109. package/resources/hris/benefits/index.js +13 -55
  110. package/resources/hris/benefits/index.mjs +3 -8
  111. package/resources/hris/benefits/individuals.d.ts +129 -147
  112. package/resources/hris/benefits/individuals.js +59 -59
  113. package/resources/hris/benefits/individuals.mjs +53 -49
  114. package/resources/hris/company.d.ts +80 -80
  115. package/resources/hris/company.js +12 -13
  116. package/resources/hris/company.mjs +9 -8
  117. package/resources/hris/directory.d.ts +53 -55
  118. package/resources/hris/directory.js +13 -12
  119. package/resources/hris/directory.mjs +8 -7
  120. package/resources/hris/employments.d.ts +124 -126
  121. package/resources/hris/employments.js +23 -21
  122. package/resources/hris/employments.mjs +19 -17
  123. package/resources/hris/hris.d.ts +113 -123
  124. package/resources/hris/hris.js +54 -71
  125. package/resources/hris/hris.mjs +32 -32
  126. package/resources/hris/index.d.ts +9 -41
  127. package/resources/hris/index.js +26 -110
  128. package/resources/hris/index.mjs +9 -9
  129. package/resources/hris/individuals.d.ts +65 -67
  130. package/resources/hris/individuals.js +19 -17
  131. package/resources/hris/individuals.mjs +14 -12
  132. package/resources/hris/pay-statements.d.ts +146 -162
  133. package/resources/hris/pay-statements.js +22 -20
  134. package/resources/hris/pay-statements.mjs +18 -16
  135. package/resources/hris/payments.d.ts +47 -49
  136. package/resources/hris/payments.js +15 -13
  137. package/resources/hris/payments.mjs +11 -9
  138. package/resources/index.d.ts +6 -6
  139. package/resources/index.d.ts.map +1 -1
  140. package/resources/index.js +13 -38
  141. package/resources/index.js.map +1 -1
  142. package/resources/index.mjs +5 -5
  143. package/resources/index.mjs.map +1 -1
  144. package/resources/providers.d.ts +43 -42
  145. package/resources/providers.js +15 -13
  146. package/resources/providers.mjs +11 -9
  147. package/resources/top-level.d.ts +1 -1
  148. package/resources/top-level.js +3 -3
  149. package/resources/top-level.mjs +1 -1
  150. package/resources/webhooks.d.ts +22 -0
  151. package/resources/webhooks.d.ts.map +1 -0
  152. package/resources/webhooks.js +114 -0
  153. package/resources/webhooks.js.map +1 -0
  154. package/resources/webhooks.mjs +110 -0
  155. package/resources/webhooks.mjs.map +1 -0
  156. package/shims/node.d.ts +29 -0
  157. package/shims/node.d.ts.map +1 -0
  158. package/shims/node.js +31 -0
  159. package/shims/node.js.map +1 -0
  160. package/shims/node.mjs +5 -0
  161. package/shims/node.mjs.map +1 -0
  162. package/shims/web.d.ts +26 -0
  163. package/shims/web.d.ts.map +1 -0
  164. package/shims/web.js +31 -0
  165. package/shims/web.js.map +1 -0
  166. package/shims/web.mjs +5 -0
  167. package/shims/web.mjs.map +1 -0
  168. package/src/_shims/MultipartBody.ts +9 -0
  169. package/src/_shims/README.md +46 -0
  170. package/src/_shims/auto/runtime-bun.ts +4 -0
  171. package/src/_shims/auto/runtime-node.ts +4 -0
  172. package/src/_shims/auto/runtime.ts +4 -0
  173. package/src/_shims/auto/types-node.ts +4 -0
  174. package/src/_shims/auto/types.d.ts +99 -0
  175. package/src/_shims/auto/types.js +3 -0
  176. package/src/_shims/auto/types.mjs +3 -0
  177. package/src/_shims/bun-runtime.ts +14 -0
  178. package/src/_shims/index.d.ts +79 -0
  179. package/src/_shims/index.js +13 -0
  180. package/src/_shims/index.mjs +7 -0
  181. package/src/_shims/manual-types.d.ts +12 -0
  182. package/src/_shims/manual-types.js +3 -0
  183. package/src/_shims/manual-types.mjs +3 -0
  184. package/src/_shims/node-runtime.ts +79 -0
  185. package/src/_shims/node-types.d.ts +42 -0
  186. package/src/_shims/node-types.js +3 -0
  187. package/src/_shims/node-types.mjs +3 -0
  188. package/src/_shims/registry.ts +64 -0
  189. package/src/_shims/web-runtime.ts +91 -0
  190. package/src/_shims/web-types.d.ts +82 -0
  191. package/src/_shims/web-types.js +3 -0
  192. package/src/_shims/web-types.mjs +3 -0
  193. package/src/core.ts +38 -17
  194. package/src/error.ts +4 -4
  195. package/src/index.ts +12 -21
  196. package/src/pagination.ts +0 -259
  197. package/src/resources/account.ts +2 -2
  198. package/src/resources/hris/benefits/benefits.ts +4 -4
  199. package/src/resources/hris/benefits/individuals.ts +5 -5
  200. package/src/resources/hris/company.ts +3 -3
  201. package/src/resources/hris/directory.ts +4 -4
  202. package/src/resources/hris/employments.ts +4 -4
  203. package/src/resources/hris/hris.ts +1 -1
  204. package/src/resources/hris/individuals.ts +5 -5
  205. package/src/resources/hris/pay-statements.ts +5 -5
  206. package/src/resources/hris/payments.ts +4 -4
  207. package/src/resources/index.ts +1 -1
  208. package/src/resources/providers.ts +3 -3
  209. package/src/resources/webhooks.ts +151 -0
  210. package/src/shims/node.ts +50 -0
  211. package/src/shims/web.ts +50 -0
  212. package/src/tsconfig.json +11 -0
  213. package/src/uploads.ts +11 -15
  214. package/src/version.ts +1 -1
  215. package/uploads.d.ts +23 -39
  216. package/uploads.d.ts.map +1 -1
  217. package/uploads.js +115 -157
  218. package/uploads.js.map +1 -1
  219. package/uploads.mjs +111 -133
  220. package/uploads.mjs.map +1 -1
  221. package/version.d.ts +2 -2
  222. package/version.js +4 -4
  223. package/version.mjs +2 -2
  224. package/_shims/ReadableStream.d.ts +0 -38
  225. package/_shims/ReadableStream.mjs +0 -7
  226. package/_shims/ReadableStream.node.d.ts +0 -6
  227. package/_shims/ReadableStream.node.d.ts.map +0 -1
  228. package/_shims/ReadableStream.node.js +0 -14
  229. package/_shims/ReadableStream.node.js.map +0 -1
  230. package/_shims/ReadableStream.node.mjs +0 -3
  231. package/_shims/ReadableStream.node.mjs.map +0 -1
  232. package/_shims/agent.d.ts +0 -9
  233. package/_shims/agent.d.ts.map +0 -1
  234. package/_shims/agent.js +0 -14
  235. package/_shims/agent.js.map +0 -1
  236. package/_shims/agent.mjs +0 -10
  237. package/_shims/agent.mjs.map +0 -1
  238. package/_shims/agent.node.d.ts +0 -7
  239. package/_shims/agent.node.d.ts.map +0 -1
  240. package/_shims/agent.node.js +0 -28
  241. package/_shims/agent.node.js.map +0 -1
  242. package/_shims/agent.node.mjs +0 -16
  243. package/_shims/agent.node.mjs.map +0 -1
  244. package/_shims/fetch.d.ts +0 -60
  245. package/_shims/fetch.js +0 -13
  246. package/_shims/fetch.mjs +0 -15
  247. package/_shims/fetch.node.d.ts +0 -64
  248. package/_shims/fetch.node.js +0 -12
  249. package/_shims/fetch.node.mjs +0 -14
  250. package/_shims/fileFromPath.d.ts +0 -22
  251. package/_shims/fileFromPath.d.ts.map +0 -1
  252. package/_shims/fileFromPath.js +0 -16
  253. package/_shims/fileFromPath.js.map +0 -1
  254. package/_shims/fileFromPath.mjs +0 -12
  255. package/_shims/fileFromPath.mjs.map +0 -1
  256. package/_shims/fileFromPath.node.d.ts +0 -17
  257. package/_shims/fileFromPath.node.d.ts.map +0 -1
  258. package/_shims/fileFromPath.node.js +0 -17
  259. package/_shims/fileFromPath.node.js.map +0 -1
  260. package/_shims/fileFromPath.node.mjs +0 -13
  261. package/_shims/fileFromPath.node.mjs.map +0 -1
  262. package/_shims/formdata.d.ts +0 -43
  263. package/_shims/formdata.js +0 -17
  264. package/_shims/formdata.mjs +0 -20
  265. package/_shims/formdata.node.d.ts +0 -45
  266. package/_shims/formdata.node.js +0 -11
  267. package/_shims/formdata.node.mjs +0 -9
  268. package/_shims/getMultipartRequestOptions.d.ts +0 -10
  269. package/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  270. package/_shims/getMultipartRequestOptions.js +0 -12
  271. package/_shims/getMultipartRequestOptions.js.map +0 -1
  272. package/_shims/getMultipartRequestOptions.mjs +0 -8
  273. package/_shims/getMultipartRequestOptions.mjs.map +0 -1
  274. package/_shims/getMultipartRequestOptions.node.d.ts +0 -10
  275. package/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  276. package/_shims/getMultipartRequestOptions.node.js +0 -22
  277. package/_shims/getMultipartRequestOptions.node.js.map +0 -1
  278. package/_shims/getMultipartRequestOptions.node.mjs +0 -18
  279. package/_shims/getMultipartRequestOptions.node.mjs.map +0 -1
  280. package/_shims/node-readable.d.ts +0 -23
  281. package/_shims/node-readable.d.ts.map +0 -1
  282. package/_shims/node-readable.js +0 -11
  283. package/_shims/node-readable.js.map +0 -1
  284. package/_shims/node-readable.mjs +0 -7
  285. package/_shims/node-readable.mjs.map +0 -1
  286. package/_shims/node-readable.node.d.ts +0 -8
  287. package/_shims/node-readable.node.d.ts.map +0 -1
  288. package/_shims/node-readable.node.js +0 -9
  289. package/_shims/node-readable.node.js.map +0 -1
  290. package/_shims/node-readable.node.mjs +0 -5
  291. package/_shims/node-readable.node.mjs.map +0 -1
  292. package/resources/ats/applications.d.ts +0 -39
  293. package/resources/ats/applications.d.ts.map +0 -1
  294. package/resources/ats/applications.js +0 -24
  295. package/resources/ats/applications.js.map +0 -1
  296. package/resources/ats/applications.mjs +0 -20
  297. package/resources/ats/applications.mjs.map +0 -1
  298. package/resources/ats/ats.d.ts +0 -32
  299. package/resources/ats/ats.d.ts.map +0 -1
  300. package/resources/ats/ats.js +0 -71
  301. package/resources/ats/ats.js.map +0 -1
  302. package/resources/ats/ats.mjs +0 -27
  303. package/resources/ats/ats.mjs.map +0 -1
  304. package/resources/ats/candidates.d.ts +0 -53
  305. package/resources/ats/candidates.d.ts.map +0 -1
  306. package/resources/ats/candidates.js +0 -25
  307. package/resources/ats/candidates.js.map +0 -1
  308. package/resources/ats/candidates.mjs +0 -21
  309. package/resources/ats/candidates.mjs.map +0 -1
  310. package/resources/ats/index.d.ts +0 -7
  311. package/resources/ats/index.d.ts.map +0 -1
  312. package/resources/ats/index.js +0 -60
  313. package/resources/ats/index.js.map +0 -1
  314. package/resources/ats/index.mjs +0 -8
  315. package/resources/ats/index.mjs.map +0 -1
  316. package/resources/ats/jobs.d.ts +0 -47
  317. package/resources/ats/jobs.d.ts.map +0 -1
  318. package/resources/ats/jobs.js +0 -24
  319. package/resources/ats/jobs.js.map +0 -1
  320. package/resources/ats/jobs.mjs +0 -20
  321. package/resources/ats/jobs.mjs.map +0 -1
  322. package/resources/ats/offers.d.ts +0 -39
  323. package/resources/ats/offers.d.ts.map +0 -1
  324. package/resources/ats/offers.js +0 -24
  325. package/resources/ats/offers.js.map +0 -1
  326. package/resources/ats/offers.mjs +0 -20
  327. package/resources/ats/offers.mjs.map +0 -1
  328. package/resources/ats/stages.d.ts +0 -30
  329. package/resources/ats/stages.d.ts.map +0 -1
  330. package/resources/ats/stages.js +0 -22
  331. package/resources/ats/stages.js.map +0 -1
  332. package/resources/ats/stages.mjs +0 -17
  333. package/resources/ats/stages.mjs.map +0 -1
  334. package/src/_shims/ReadableStream.d.ts +0 -38
  335. package/src/_shims/ReadableStream.mjs +0 -7
  336. package/src/_shims/agent.node.ts +0 -22
  337. package/src/_shims/agent.ts +0 -12
  338. package/src/_shims/fetch.d.ts +0 -60
  339. package/src/_shims/fetch.deno.ts +0 -23
  340. package/src/_shims/fetch.js +0 -13
  341. package/src/_shims/fetch.mjs +0 -15
  342. package/src/_shims/fetch.node.d.ts +0 -64
  343. package/src/_shims/fetch.node.js +0 -12
  344. package/src/_shims/fetch.node.mjs +0 -14
  345. package/src/_shims/fileFromPath.node.ts +0 -29
  346. package/src/_shims/fileFromPath.ts +0 -29
  347. package/src/_shims/formdata.d.ts +0 -43
  348. package/src/_shims/formdata.deno.ts +0 -16
  349. package/src/_shims/formdata.js +0 -17
  350. package/src/_shims/formdata.mjs +0 -20
  351. package/src/_shims/formdata.node.d.ts +0 -45
  352. package/src/_shims/formdata.node.js +0 -11
  353. package/src/_shims/formdata.node.mjs +0 -9
  354. package/src/_shims/getMultipartRequestOptions.node.ts +0 -25
  355. package/src/_shims/getMultipartRequestOptions.ts +0 -14
  356. package/src/_shims/node-readable.node.ts +0 -10
  357. package/src/_shims/node-readable.ts +0 -30
  358. package/src/resources/ats/applications.ts +0 -64
  359. package/src/resources/ats/ats.ts +0 -39
  360. package/src/resources/ats/candidates.ts +0 -83
  361. package/src/resources/ats/index.ts +0 -8
  362. package/src/resources/ats/jobs.ts +0 -76
  363. package/src/resources/ats/offers.ts +0 -63
  364. package/src/resources/ats/stages.ts +0 -39
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export type Agent = any;
5
+
6
+ declare const _fetch: typeof fetch;
7
+ export { _fetch as fetch };
8
+
9
+ type _Request = Request;
10
+ export { _Request as Request };
11
+
12
+ type _RequestInfo = RequestInfo;
13
+ export { type _RequestInfo as RequestInfo };
14
+
15
+ type _RequestInit = RequestInit;
16
+ export { type _RequestInit as RequestInit };
17
+
18
+ type _Response = Response;
19
+ export { _Response as Response };
20
+
21
+ type _ResponseInit = ResponseInit;
22
+ export { type _ResponseInit as ResponseInit };
23
+
24
+ type _ResponseType = ResponseType;
25
+ export { type _ResponseType as ResponseType };
26
+
27
+ type _BodyInit = BodyInit;
28
+ export { type _BodyInit as BodyInit };
29
+
30
+ type _Headers = Headers;
31
+ export { _Headers as Headers };
32
+
33
+ type _HeadersInit = HeadersInit;
34
+ export { type _HeadersInit as HeadersInit };
35
+
36
+ type EndingType = 'native' | 'transparent';
37
+
38
+ export interface BlobPropertyBag {
39
+ endings?: EndingType;
40
+ type?: string;
41
+ }
42
+
43
+ export interface FilePropertyBag extends BlobPropertyBag {
44
+ lastModified?: number;
45
+ }
46
+
47
+ export type FileFromPathOptions = Omit<FilePropertyBag, 'lastModified'>;
48
+
49
+ type _FormData = FormData;
50
+ declare const _FormData: typeof FormData;
51
+ export { _FormData as FormData };
52
+
53
+ type _File = File;
54
+ declare const _File: typeof File;
55
+ export { _File as File };
56
+
57
+ type _Blob = Blob;
58
+ declare const _Blob: typeof Blob;
59
+ export { _Blob as Blob };
60
+
61
+ export declare class Readable {
62
+ readable: boolean;
63
+ readonly readableEnded: boolean;
64
+ readonly readableFlowing: boolean | null;
65
+ readonly readableHighWaterMark: number;
66
+ readonly readableLength: number;
67
+ readonly readableObjectMode: boolean;
68
+ destroyed: boolean;
69
+ read(size?: number): any;
70
+ pause(): this;
71
+ resume(): this;
72
+ isPaused(): boolean;
73
+ destroy(error?: Error): this;
74
+ [Symbol.asyncIterator](): AsyncIterableIterator<any>;
75
+ }
76
+
77
+ export declare class FsReadStream extends Readable {
78
+ path: {}; // node type is string | Buffer
79
+ }
80
+
81
+ type _ReadableStream<R = any> = ReadableStream<R>;
82
+ export { type _ReadableStream as ReadableStream };
@@ -0,0 +1,3 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
@@ -0,0 +1,3 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
package/src/core.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import { VERSION } from './version';
2
2
  import { APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError } from './error';
3
- import type { Readable } from './_shims/node-readable';
4
- import { getDefaultAgent, type Agent } from './_shims/agent';
5
3
  import {
4
+ kind as shimsKind,
5
+ type Readable,
6
+ getDefaultAgent,
7
+ type Agent,
6
8
  fetch,
7
- isPolyfilled as fetchIsPolyfilled,
8
9
  type RequestInfo,
9
10
  type RequestInit,
10
11
  type Response,
11
12
  type HeadersInit,
12
- } from './_shims/fetch.js';
13
+ } from './_shims/index';
13
14
  export { type Response };
14
15
  import { isMultipartBody } from './uploads';
15
16
  export {
@@ -45,7 +46,7 @@ async function defaultParseResponse<T>(props: APIResponseProps): Promise<T> {
45
46
  // TODO handle blob, arraybuffer, other content types, etc.
46
47
  const text = await response.text();
47
48
  debug('response', response.status, response.url, response.headers, text);
48
- return text as T;
49
+ return text as any as T;
49
50
  }
50
51
 
51
52
  /**
@@ -77,6 +78,12 @@ export class APIPromise<T> extends Promise<T> {
77
78
  *
78
79
  * If you want to parse the response body but still get the `Response`
79
80
  * instance, you can use {@link withResponse()}.
81
+ *
82
+ * 👋 Getting the wrong TypeScript type for `Response`?
83
+ * Try setting `"moduleResolution": "NodeNext"` if you can,
84
+ * or add one of these imports before your first `import … from '@tryfinch/finch-api'`:
85
+ * - `import '@tryfinch/finch-api/shims/node'` (if you're running on Node)
86
+ * - `import '@tryfinch/finch-api/shims/web'` (otherwise)
80
87
  */
81
88
  asResponse(): Promise<Response> {
82
89
  return this.responsePromise.then((p) => p.response);
@@ -86,6 +93,13 @@ export class APIPromise<T> extends Promise<T> {
86
93
  *
87
94
  * If you just want to get the raw `Response` instance without parsing it,
88
95
  * you can use {@link asResponse()}.
96
+ *
97
+ *
98
+ * 👋 Getting the wrong TypeScript type for `Response`?
99
+ * Try setting `"moduleResolution": "NodeNext"` if you can,
100
+ * or add one of these imports before your first `import … from '@tryfinch/finch-api'`:
101
+ * - `import '@tryfinch/finch-api/shims/node'` (if you're running on Node)
102
+ * - `import '@tryfinch/finch-api/shims/web'` (otherwise)
89
103
  */
90
104
  async withResponse(): Promise<{ data: T; response: Response }> {
91
105
  const [data, response] = await Promise.all([this.parse(), this.asResponse()]);
@@ -270,7 +284,7 @@ export abstract class APIClient {
270
284
  ...headers,
271
285
  };
272
286
  // let builtin fetch set the Content-Type for multipart bodies
273
- if (isMultipartBody(options.body) && !fetchIsPolyfilled) {
287
+ if (isMultipartBody(options.body) && shimsKind !== 'node') {
274
288
  delete reqHeaders['Content-Type'];
275
289
  }
276
290
 
@@ -306,7 +320,8 @@ export abstract class APIClient {
306
320
  protected parseHeaders(headers: HeadersInit | null | undefined): Record<string, string> {
307
321
  return (
308
322
  !headers ? {}
309
- : Symbol.iterator in headers ? Object.fromEntries(Array.from(headers).map((header) => [...header]))
323
+ : Symbol.iterator in headers ?
324
+ Object.fromEntries(Array.from(headers as Iterable<string[]>).map((header) => [...header]))
310
325
  : { ...headers }
311
326
  );
312
327
  }
@@ -369,7 +384,7 @@ export abstract class APIClient {
369
384
  return this.retryRequest(options, retriesRemaining, responseHeaders);
370
385
  }
371
386
 
372
- const errText = await response.text().catch(() => 'Unknown');
387
+ const errText = await response.text().catch((e) => castToError(e).message);
373
388
  const errJSON = safeJSON(errText);
374
389
  const errMessage = errJSON ? undefined : errText;
375
390
 
@@ -390,7 +405,7 @@ export abstract class APIClient {
390
405
  return new PagePromise<PageClass, Item>(this, request, Page);
391
406
  }
392
407
 
393
- buildURL<Req>(path: string, query: Req | undefined): string {
408
+ buildURL<Req extends Record<string, unknown>>(path: string, query: Req | null | undefined): string {
394
409
  const url =
395
410
  isAbsoluteURL(path) ?
396
411
  new URL(path)
@@ -436,11 +451,14 @@ export abstract class APIClient {
436
451
 
437
452
  const timeout = setTimeout(() => controller.abort(), ms);
438
453
 
439
- return this.getRequestClient()
440
- .fetch(url, { signal: controller.signal as any, ...options })
441
- .finally(() => {
442
- clearTimeout(timeout);
443
- });
454
+ return (
455
+ this.getRequestClient()
456
+ // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
457
+ .fetch.call(undefined, url, { signal: controller.signal as any, ...options })
458
+ .finally(() => {
459
+ clearTimeout(timeout);
460
+ })
461
+ );
444
462
  }
445
463
 
446
464
  protected getRequestClient(): RequestClient {
@@ -455,6 +473,9 @@ export abstract class APIClient {
455
473
  if (shouldRetryHeader === 'true') return true;
456
474
  if (shouldRetryHeader === 'false') return false;
457
475
 
476
+ // Retry on request timeouts.
477
+ if (response.status === 408) return true;
478
+
458
479
  // Retry on lock timeouts.
459
480
  if (response.status === 409) return true;
460
481
 
@@ -581,7 +602,7 @@ export abstract class AbstractPage<Item> implements AsyncIterable<Item> {
581
602
  } else if ('url' in nextInfo) {
582
603
  const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];
583
604
  for (const [key, value] of params) {
584
- nextInfo.url.searchParams.set(key, value);
605
+ nextInfo.url.searchParams.set(key, value as any);
585
606
  }
586
607
  nextOptions.query = undefined;
587
608
  nextOptions.path = nextInfo.url.toString();
@@ -707,7 +728,7 @@ const requestOptionsKeys: KeysEnum<RequestOptions> = {
707
728
  idempotencyKey: true,
708
729
  };
709
730
 
710
- export const isRequestOptions = (obj: unknown): obj is RequestOptions => {
731
+ export const isRequestOptions = (obj: unknown): obj is RequestOptions<Record<string, unknown> | Readable> => {
711
732
  return (
712
733
  typeof obj === 'object' &&
713
734
  obj !== null &&
@@ -893,7 +914,7 @@ const isAbsoluteURL = (url: string): boolean => {
893
914
  return startsWithSchemeRegexp.test(url);
894
915
  };
895
916
 
896
- const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
917
+ export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
897
918
 
898
919
  const validatePositiveInteger = (name: string, n: unknown): number => {
899
920
  if (typeof n !== 'number' || !Number.isInteger(n)) {
package/src/error.ts CHANGED
@@ -13,7 +13,7 @@ export class APIError extends Error {
13
13
  message: string | undefined,
14
14
  headers: Headers | undefined,
15
15
  ) {
16
- super(APIError.makeMessage(error, message));
16
+ super(`${status} ${APIError.makeMessage(error, message)}`);
17
17
  this.status = status;
18
18
  this.headers = headers;
19
19
  this.error = error;
@@ -25,7 +25,7 @@ export class APIError extends Error {
25
25
  typeof error.message === 'string' ? error.message
26
26
  : JSON.stringify(error.message)
27
27
  : error ? JSON.stringify(error)
28
- : message || 'Unknown error occurred'
28
+ : message || 'status code (no body)'
29
29
  );
30
30
  }
31
31
 
@@ -97,8 +97,8 @@ export class APIConnectionError extends APIError {
97
97
  }
98
98
 
99
99
  export class APIConnectionTimeoutError extends APIConnectionError {
100
- constructor() {
101
- super({ message: 'Request timed out.' });
100
+ constructor({ message }: { message?: string } = {}) {
101
+ super({ message: message ?? 'Request timed out.' });
102
102
  }
103
103
  }
104
104
 
package/src/index.ts CHANGED
@@ -4,7 +4,7 @@ import * as Core from './core';
4
4
  import * as Pagination from './pagination';
5
5
  import * as API from './resources/index';
6
6
  import * as Errors from './error';
7
- import type { Agent } from './_shims/agent';
7
+ import { type Agent } from './_shims/index';
8
8
  import * as Uploads from './uploads';
9
9
 
10
10
  export interface ClientOptions {
@@ -70,6 +70,8 @@ export interface ClientOptions {
70
70
  clientId?: string | null;
71
71
 
72
72
  clientSecret?: string | null;
73
+
74
+ webhookSecret?: string | null;
73
75
  }
74
76
 
75
77
  /** API Client for interfacing with the Finch API. */
@@ -77,6 +79,7 @@ export class Finch extends Core.APIClient {
77
79
  accessToken: string | null;
78
80
  clientId?: string | null;
79
81
  clientSecret?: string | null;
82
+ webhookSecret?: string | null;
80
83
 
81
84
  private _options: ClientOptions;
82
85
 
@@ -93,19 +96,22 @@ export class Finch extends Core.APIClient {
93
96
  * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.
94
97
  * @param {string | null} [opts.clientId]
95
98
  * @param {string | null} [opts.clientSecret]
99
+ * @param {string | null} [opts.webhookSecret]
96
100
  */
97
101
  constructor({
98
102
  accessToken = null,
99
103
  clientId = Core.readEnv('FINCH_CLIENT_ID') ?? null,
100
104
  clientSecret = Core.readEnv('FINCH_CLIENT_SECRET') ?? null,
105
+ webhookSecret = Core.readEnv('FINCH_WEBHOOK_SECRET') ?? null,
101
106
  ...opts
102
107
  }: ClientOptions = {}) {
103
108
  const options: ClientOptions = {
104
109
  accessToken,
105
110
  clientId,
106
111
  clientSecret,
107
- baseURL: `https://api.tryfinch.com`,
112
+ webhookSecret,
108
113
  ...opts,
114
+ baseURL: opts.baseURL ?? `https://api.tryfinch.com`,
109
115
  };
110
116
 
111
117
  super({
@@ -120,12 +126,13 @@ export class Finch extends Core.APIClient {
120
126
  this.accessToken = accessToken;
121
127
  this.clientId = clientId;
122
128
  this.clientSecret = clientSecret;
129
+ this.webhookSecret = webhookSecret;
123
130
  }
124
131
 
125
132
  hris: API.HRIS = new API.HRIS(this);
126
- ats: API.ATS = new API.ATS(this);
127
133
  providers: API.Providers = new API.Providers(this);
128
134
  account: API.Account = new API.Account(this);
135
+ webhooks: API.Webhooks = new API.Webhooks(this);
129
136
 
130
137
  /**
131
138
  * Returns an access token for the Finch API given an authorization code. An
@@ -262,30 +269,12 @@ export namespace Finch {
262
269
  export import IndividualsPageParams = Pagination.IndividualsPageParams;
263
270
  export import IndividualsPageResponse = Pagination.IndividualsPageResponse;
264
271
 
265
- export import CandidatesPage = Pagination.CandidatesPage;
266
- export import CandidatesPageParams = Pagination.CandidatesPageParams;
267
- export import CandidatesPageResponse = Pagination.CandidatesPageResponse;
268
-
269
- export import ApplicationsPage = Pagination.ApplicationsPage;
270
- export import ApplicationsPageParams = Pagination.ApplicationsPageParams;
271
- export import ApplicationsPageResponse = Pagination.ApplicationsPageResponse;
272
-
273
- export import JobsPage = Pagination.JobsPage;
274
- export import JobsPageParams = Pagination.JobsPageParams;
275
- export import JobsPageResponse = Pagination.JobsPageResponse;
276
-
277
- export import OffersPage = Pagination.OffersPage;
278
- export import OffersPageParams = Pagination.OffersPageParams;
279
- export import OffersPageResponse = Pagination.OffersPageResponse;
280
-
281
272
  export import HRIS = API.HRIS;
282
273
  export import Income = API.Income;
283
274
  export import Location = API.Location;
284
275
  export import Money = API.Money;
285
276
  export import Paging = API.Paging;
286
277
 
287
- export import ATS = API.ATS;
288
-
289
278
  export import Providers = API.Providers;
290
279
  export import Provider = API.Provider;
291
280
  export import ProvidersSinglePage = API.ProvidersSinglePage;
@@ -293,6 +282,8 @@ export namespace Finch {
293
282
  export import Account = API.Account;
294
283
  export import DisconnectResponse = API.DisconnectResponse;
295
284
  export import Introspection = API.Introspection;
285
+
286
+ export import Webhooks = API.Webhooks;
296
287
  }
297
288
 
298
289
  export default Finch;
package/src/pagination.ts CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { AbstractPage, Response, APIClient, FinalRequestOptions, PageInfo } from './core';
4
4
  import * as HRIS from './resources/hris/index';
5
- import * as ATS from './resources/ats/index';
6
5
 
7
6
  export type SinglePageResponse<Item> = Item[];
8
7
 
@@ -149,261 +148,3 @@ export class IndividualsPage
149
148
  return null;
150
149
  }
151
150
  }
152
-
153
- export interface CandidatesPageResponse {
154
- candidates: Array<ATS.Candidate>;
155
-
156
- paging: HRIS.Paging;
157
- }
158
-
159
- export interface CandidatesPageParams {
160
- /**
161
- * Number of candidates to return (defaults to all)
162
- */
163
- limit?: number;
164
-
165
- /**
166
- * Index to start from (defaults to 0)
167
- */
168
- offset?: number;
169
- }
170
-
171
- export class CandidatesPage extends AbstractPage<ATS.Candidate> implements CandidatesPageResponse {
172
- paging: HRIS.Paging;
173
-
174
- candidates: Array<ATS.Candidate>;
175
-
176
- constructor(
177
- client: APIClient,
178
- response: Response,
179
- body: CandidatesPageResponse,
180
- options: FinalRequestOptions,
181
- ) {
182
- super(client, response, body, options);
183
-
184
- this.paging = body.paging;
185
- this.candidates = body.candidates;
186
- }
187
-
188
- getPaginatedItems(): ATS.Candidate[] {
189
- return this.candidates;
190
- }
191
-
192
- // @deprecated Please use `nextPageInfo()` instead
193
- nextPageParams(): Partial<CandidatesPageParams> | null {
194
- const info = this.nextPageInfo();
195
- if (!info) return null;
196
- if ('params' in info) return info.params;
197
- const params = Object.fromEntries(info.url.searchParams);
198
- if (!Object.keys(params).length) return null;
199
- return params;
200
- }
201
-
202
- nextPageInfo(): PageInfo | null {
203
- const offset = this.paging.offset;
204
- if (!offset) return null;
205
-
206
- const length = this.candidates.length;
207
- const currentCount = offset + length;
208
-
209
- const totalCount = this.paging.count;
210
- if (!totalCount) return null;
211
-
212
- if (currentCount < totalCount) {
213
- return { params: { offset: currentCount } };
214
- }
215
-
216
- return null;
217
- }
218
- }
219
-
220
- export interface ApplicationsPageResponse {
221
- applications: Array<ATS.Application>;
222
-
223
- paging: HRIS.Paging;
224
- }
225
-
226
- export interface ApplicationsPageParams {
227
- /**
228
- * Number of applications to return (defaults to all)
229
- */
230
- limit?: number;
231
-
232
- /**
233
- * Index to start from (defaults to 0)
234
- */
235
- offset?: number;
236
- }
237
-
238
- export class ApplicationsPage extends AbstractPage<ATS.Application> implements ApplicationsPageResponse {
239
- paging: HRIS.Paging;
240
-
241
- applications: Array<ATS.Application>;
242
-
243
- constructor(
244
- client: APIClient,
245
- response: Response,
246
- body: ApplicationsPageResponse,
247
- options: FinalRequestOptions,
248
- ) {
249
- super(client, response, body, options);
250
-
251
- this.paging = body.paging;
252
- this.applications = body.applications;
253
- }
254
-
255
- getPaginatedItems(): ATS.Application[] {
256
- return this.applications;
257
- }
258
-
259
- // @deprecated Please use `nextPageInfo()` instead
260
- nextPageParams(): Partial<ApplicationsPageParams> | null {
261
- const info = this.nextPageInfo();
262
- if (!info) return null;
263
- if ('params' in info) return info.params;
264
- const params = Object.fromEntries(info.url.searchParams);
265
- if (!Object.keys(params).length) return null;
266
- return params;
267
- }
268
-
269
- nextPageInfo(): PageInfo | null {
270
- const offset = this.paging.offset;
271
- if (!offset) return null;
272
-
273
- const length = this.applications.length;
274
- const currentCount = offset + length;
275
-
276
- const totalCount = this.paging.count;
277
- if (!totalCount) return null;
278
-
279
- if (currentCount < totalCount) {
280
- return { params: { offset: currentCount } };
281
- }
282
-
283
- return null;
284
- }
285
- }
286
-
287
- export interface JobsPageResponse {
288
- jobs: Array<ATS.Job>;
289
-
290
- paging: HRIS.Paging;
291
- }
292
-
293
- export interface JobsPageParams {
294
- /**
295
- * Number of jobs to return (defaults to all)
296
- */
297
- limit?: number;
298
-
299
- /**
300
- * Index to start from (defaults to 0)
301
- */
302
- offset?: number;
303
- }
304
-
305
- export class JobsPage extends AbstractPage<ATS.Job> implements JobsPageResponse {
306
- paging: HRIS.Paging;
307
-
308
- jobs: Array<ATS.Job>;
309
-
310
- constructor(client: APIClient, response: Response, body: JobsPageResponse, options: FinalRequestOptions) {
311
- super(client, response, body, options);
312
-
313
- this.paging = body.paging;
314
- this.jobs = body.jobs;
315
- }
316
-
317
- getPaginatedItems(): ATS.Job[] {
318
- return this.jobs;
319
- }
320
-
321
- // @deprecated Please use `nextPageInfo()` instead
322
- nextPageParams(): Partial<JobsPageParams> | null {
323
- const info = this.nextPageInfo();
324
- if (!info) return null;
325
- if ('params' in info) return info.params;
326
- const params = Object.fromEntries(info.url.searchParams);
327
- if (!Object.keys(params).length) return null;
328
- return params;
329
- }
330
-
331
- nextPageInfo(): PageInfo | null {
332
- const offset = this.paging.offset;
333
- if (!offset) return null;
334
-
335
- const length = this.jobs.length;
336
- const currentCount = offset + length;
337
-
338
- const totalCount = this.paging.count;
339
- if (!totalCount) return null;
340
-
341
- if (currentCount < totalCount) {
342
- return { params: { offset: currentCount } };
343
- }
344
-
345
- return null;
346
- }
347
- }
348
-
349
- export interface OffersPageResponse {
350
- offers: Array<ATS.Offer>;
351
-
352
- paging: HRIS.Paging;
353
- }
354
-
355
- export interface OffersPageParams {
356
- /**
357
- * Number of offers to return (defaults to all)
358
- */
359
- limit?: number;
360
-
361
- /**
362
- * Index to start from (defaults to 0)
363
- */
364
- offset?: number;
365
- }
366
-
367
- export class OffersPage extends AbstractPage<ATS.Offer> implements OffersPageResponse {
368
- paging: HRIS.Paging;
369
-
370
- offers: Array<ATS.Offer>;
371
-
372
- constructor(client: APIClient, response: Response, body: OffersPageResponse, options: FinalRequestOptions) {
373
- super(client, response, body, options);
374
-
375
- this.paging = body.paging;
376
- this.offers = body.offers;
377
- }
378
-
379
- getPaginatedItems(): ATS.Offer[] {
380
- return this.offers;
381
- }
382
-
383
- // @deprecated Please use `nextPageInfo()` instead
384
- nextPageParams(): Partial<OffersPageParams> | null {
385
- const info = this.nextPageInfo();
386
- if (!info) return null;
387
- if ('params' in info) return info.params;
388
- const params = Object.fromEntries(info.url.searchParams);
389
- if (!Object.keys(params).length) return null;
390
- return params;
391
- }
392
-
393
- nextPageInfo(): PageInfo | null {
394
- const offset = this.paging.offset;
395
- if (!offset) return null;
396
-
397
- const length = this.offers.length;
398
- const currentCount = offset + length;
399
-
400
- const totalCount = this.paging.count;
401
- if (!totalCount) return null;
402
-
403
- if (currentCount < totalCount) {
404
- return { params: { offset: currentCount } };
405
- }
406
-
407
- return null;
408
- }
409
- }
@@ -1,7 +1,7 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../core';
4
- import { APIResource } from '../resource';
3
+ import * as Core from "../ch/finch-api/core";
4
+ import { APIResource } from "../ch/finch-api/resource";
5
5
  import * as API from './index';
6
6
 
7
7
  export class Account extends APIResource {
@@ -1,11 +1,11 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../../core';
4
- import { APIResource } from '../../../resource';
5
- import { isRequestOptions } from '../../../core';
3
+ import * as Core from "../../../ch/finch-api/core";
4
+ import { APIResource } from "../../../ch/finch-api/resource";
5
+ import { isRequestOptions } from "../../../ch/finch-api/core";
6
6
  import { Individuals } from './individuals';
7
7
  import * as API from './index';
8
- import { SinglePage } from '../../../pagination';
8
+ import { SinglePage } from "../../../ch/finch-api/pagination";
9
9
 
10
10
  export class Benefits extends APIResource {
11
11
  individuals: Individuals = new Individuals(this.client);
@@ -1,11 +1,11 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../../core';
4
- import { APIResource } from '../../../resource';
5
- import { isRequestOptions } from '../../../core';
6
- import * as Benefits from './index';
3
+ import * as Core from "../../../ch/finch-api/core";
4
+ import { APIResource } from "../../../ch/finch-api/resource";
5
+ import { isRequestOptions } from "../../../ch/finch-api/core";
6
+ import * as Benefits from "../../../ch/finch-api/resources/hris/benefits/index";
7
7
  import * as API from './index';
8
- import { SinglePage } from '../../../pagination';
8
+ import { SinglePage } from "../../../ch/finch-api/pagination";
9
9
 
10
10
  export class Individuals extends APIResource {
11
11
  /**