@tryfinch/finch-api 2.0.0 → 3.1.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 (592) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/README.md +12 -7
  3. package/{dist/esm/_shims → _shims}/agent.d.ts +2 -2
  4. package/_shims/agent.d.ts.map +1 -0
  5. package/_shims/agent.js.map +1 -0
  6. package/{dist/esm/_shims/agent.js → _shims/agent.mjs} +1 -1
  7. package/_shims/agent.mjs.map +1 -0
  8. package/{dist/esm/_shims → _shims}/agent.node.d.ts +1 -0
  9. package/_shims/agent.node.d.ts.map +1 -0
  10. package/_shims/agent.node.js.map +1 -0
  11. package/{dist/esm/_shims/agent.node.js → _shims/agent.node.mjs} +1 -1
  12. package/_shims/agent.node.mjs.map +1 -0
  13. package/_shims/fetch.d.ts +52 -0
  14. package/_shims/fetch.js +13 -0
  15. package/_shims/fetch.mjs +15 -0
  16. package/_shims/fetch.node.d.ts +53 -0
  17. package/_shims/fetch.node.js +12 -0
  18. package/_shims/fetch.node.mjs +14 -0
  19. package/{dist/cjs/_shims → _shims}/fileFromPath.d.ts +1 -2
  20. package/_shims/fileFromPath.d.ts.map +1 -0
  21. package/_shims/fileFromPath.js +16 -0
  22. package/_shims/fileFromPath.js.map +1 -0
  23. package/{dist/esm/_shims/fileFromPath.js → _shims/fileFromPath.mjs} +1 -1
  24. package/_shims/fileFromPath.mjs.map +1 -0
  25. package/{dist/cjs/_shims → _shims}/fileFromPath.node.d.ts +1 -2
  26. package/_shims/fileFromPath.node.d.ts.map +1 -0
  27. package/_shims/fileFromPath.node.js +17 -0
  28. package/_shims/fileFromPath.node.js.map +1 -0
  29. package/{dist/esm/_shims/fileFromPath.node.js → _shims/fileFromPath.node.mjs} +1 -1
  30. package/_shims/fileFromPath.node.mjs.map +1 -0
  31. package/_shims/formdata.d.ts +43 -0
  32. package/_shims/formdata.js +9 -0
  33. package/{dist/esm/_shims/formdata.js → _shims/formdata.mjs} +7 -11
  34. package/_shims/formdata.node.d.ts +44 -0
  35. package/_shims/formdata.node.js +11 -0
  36. package/_shims/getMultipartRequestOptions.d.ts.map +1 -0
  37. package/_shims/getMultipartRequestOptions.js +12 -0
  38. package/_shims/getMultipartRequestOptions.js.map +1 -0
  39. package/_shims/getMultipartRequestOptions.mjs +8 -0
  40. package/_shims/getMultipartRequestOptions.mjs.map +1 -0
  41. package/_shims/getMultipartRequestOptions.node.d.ts.map +1 -0
  42. package/_shims/getMultipartRequestOptions.node.js +22 -0
  43. package/_shims/getMultipartRequestOptions.node.js.map +1 -0
  44. package/{dist/esm/_shims/getMultipartRequestOptions.node.js → _shims/getMultipartRequestOptions.node.mjs} +3 -2
  45. package/_shims/getMultipartRequestOptions.node.mjs.map +1 -0
  46. package/_shims/node-readable.d.ts +23 -0
  47. package/_shims/node-readable.d.ts.map +1 -0
  48. package/_shims/node-readable.js +11 -0
  49. package/_shims/node-readable.js.map +1 -0
  50. package/_shims/node-readable.mjs +7 -0
  51. package/_shims/node-readable.mjs.map +1 -0
  52. package/_shims/node-readable.node.d.ts +8 -0
  53. package/_shims/node-readable.node.d.ts.map +1 -0
  54. package/_shims/node-readable.node.js +9 -0
  55. package/_shims/node-readable.node.js.map +1 -0
  56. package/_shims/node-readable.node.mjs +5 -0
  57. package/_shims/node-readable.node.mjs.map +1 -0
  58. package/{dist/esm/core.d.ts → core.d.ts} +20 -11
  59. package/core.d.ts.map +1 -0
  60. package/{dist/cjs/core.js → core.js} +232 -340
  61. package/core.js.map +1 -0
  62. package/{dist/esm/core.js → core.mjs} +95 -30
  63. package/core.mjs.map +1 -0
  64. package/{dist/esm/error.d.ts → error.d.ts} +4 -0
  65. package/error.d.ts.map +1 -0
  66. package/{dist/cjs/error.js → error.js} +9 -1
  67. package/error.js.map +1 -0
  68. package/{dist/esm/error.js → error.mjs} +11 -3
  69. package/error.mjs.map +1 -0
  70. package/{dist/cjs/index.d.ts → index.d.mts} +52 -8
  71. package/{dist/esm/index.d.ts → index.d.ts} +47 -3
  72. package/index.d.ts.map +1 -0
  73. package/{dist/cjs/index.js → index.js} +24 -17
  74. package/index.js.map +1 -0
  75. package/{dist/esm/index.js → index.mjs} +21 -9
  76. package/index.mjs.map +1 -0
  77. package/package.json +34 -77
  78. package/pagination.d.ts.map +1 -0
  79. package/{dist/cjs/pagination.js → pagination.js} +1 -1
  80. package/pagination.js.map +1 -0
  81. package/{dist/esm/pagination.js → pagination.mjs} +2 -2
  82. package/pagination.mjs.map +1 -0
  83. package/resource.d.ts.map +1 -0
  84. package/resource.js.map +1 -0
  85. package/{dist/esm/resource.js → resource.mjs} +1 -1
  86. package/resource.mjs.map +1 -0
  87. package/{dist/esm/resources → resources}/account.d.ts +2 -2
  88. package/resources/account.d.ts.map +1 -0
  89. package/{dist/cjs/resources → resources}/account.js +1 -1
  90. package/resources/account.js.map +1 -0
  91. package/{dist/esm/resources/account.js → resources/account.mjs} +2 -2
  92. package/resources/account.mjs.map +1 -0
  93. package/{dist/esm/resources → resources}/ats/applications.d.ts +4 -4
  94. package/resources/ats/applications.d.ts.map +1 -0
  95. package/{dist/cjs/resources → resources}/ats/applications.js +4 -8
  96. package/resources/ats/applications.js.map +1 -0
  97. package/{dist/esm/resources/ats/applications.js → resources/ats/applications.mjs} +4 -4
  98. package/resources/ats/applications.mjs.map +1 -0
  99. package/{dist/esm/resources → resources}/ats/ats.d.ts +1 -1
  100. package/{dist/cjs/resources → resources}/ats/ats.d.ts.map +1 -1
  101. package/{dist/cjs/resources → resources}/ats/ats.js +7 -7
  102. package/resources/ats/ats.js.map +1 -0
  103. package/{dist/esm/resources/ats/ats.js → resources/ats/ats.mjs} +8 -8
  104. package/resources/ats/ats.mjs.map +1 -0
  105. package/{dist/esm/resources → resources}/ats/candidates.d.ts +3 -3
  106. package/resources/ats/candidates.d.ts.map +1 -0
  107. package/{dist/cjs/resources → resources}/ats/candidates.js +4 -4
  108. package/resources/ats/candidates.js.map +1 -0
  109. package/{dist/esm/resources/ats/candidates.js → resources/ats/candidates.mjs} +4 -4
  110. package/resources/ats/candidates.mjs.map +1 -0
  111. package/resources/ats/index.d.ts.map +1 -0
  112. package/{dist/cjs/resources → resources}/ats/index.js +6 -6
  113. package/resources/ats/index.js.map +1 -0
  114. package/resources/ats/index.mjs +8 -0
  115. package/resources/ats/index.mjs.map +1 -0
  116. package/{dist/esm/resources → resources}/ats/jobs.d.ts +3 -3
  117. package/resources/ats/jobs.d.ts.map +1 -0
  118. package/{dist/cjs/resources → resources}/ats/jobs.js +4 -4
  119. package/resources/ats/jobs.js.map +1 -0
  120. package/{dist/esm/resources/ats/jobs.js → resources/ats/jobs.mjs} +4 -4
  121. package/resources/ats/jobs.mjs.map +1 -0
  122. package/{dist/esm/resources → resources}/ats/offers.d.ts +3 -3
  123. package/resources/ats/offers.d.ts.map +1 -0
  124. package/{dist/cjs/resources → resources}/ats/offers.js +4 -4
  125. package/resources/ats/offers.js.map +1 -0
  126. package/{dist/esm/resources/ats/offers.js → resources/ats/offers.mjs} +4 -4
  127. package/resources/ats/offers.mjs.map +1 -0
  128. package/{dist/esm/resources → resources}/ats/stages.d.ts +6 -4
  129. package/resources/ats/stages.d.ts.map +1 -0
  130. package/resources/ats/stages.js +22 -0
  131. package/resources/ats/stages.js.map +1 -0
  132. package/{dist/esm/resources/ats/stages.js → resources/ats/stages.mjs} +4 -7
  133. package/resources/ats/stages.mjs.map +1 -0
  134. package/{dist/esm/resources → resources}/hris/benefits/benefits.d.ts +8 -5
  135. package/resources/hris/benefits/benefits.d.ts.map +1 -0
  136. package/{dist/cjs/resources → resources}/hris/benefits/benefits.js +7 -9
  137. package/resources/hris/benefits/benefits.js.map +1 -0
  138. package/{dist/esm/resources/hris/benefits/benefits.js → resources/hris/benefits/benefits.mjs} +6 -8
  139. package/resources/hris/benefits/benefits.mjs.map +1 -0
  140. package/resources/hris/benefits/index.d.ts.map +1 -0
  141. package/{dist/cjs/resources → resources}/hris/benefits/index.js +2 -2
  142. package/resources/hris/benefits/index.js.map +1 -0
  143. package/{dist/esm/resources/hris/benefits/index.js → resources/hris/benefits/index.mjs} +3 -3
  144. package/resources/hris/benefits/index.mjs.map +1 -0
  145. package/{dist/esm/resources → resources}/hris/benefits/individuals.d.ts +11 -7
  146. package/resources/hris/benefits/individuals.d.ts.map +1 -0
  147. package/resources/hris/benefits/individuals.js +68 -0
  148. package/resources/hris/benefits/individuals.js.map +1 -0
  149. package/{dist/esm/resources/hris/benefits/individuals.js → resources/hris/benefits/individuals.mjs} +5 -10
  150. package/resources/hris/benefits/individuals.mjs.map +1 -0
  151. package/{dist/esm/resources → resources}/hris/company.d.ts +3 -3
  152. package/resources/hris/company.d.ts.map +1 -0
  153. package/{dist/cjs/resources → resources}/hris/company.js +1 -1
  154. package/resources/hris/company.js.map +1 -0
  155. package/{dist/esm/resources/hris/company.js → resources/hris/company.mjs} +2 -2
  156. package/resources/hris/company.mjs.map +1 -0
  157. package/{dist/esm/resources → resources}/hris/directory.d.ts +3 -3
  158. package/resources/hris/directory.d.ts.map +1 -0
  159. package/{dist/cjs/resources → resources}/hris/directory.js +4 -8
  160. package/resources/hris/directory.js.map +1 -0
  161. package/{dist/esm/resources/hris/directory.js → resources/hris/directory.mjs} +4 -4
  162. package/resources/hris/directory.mjs.map +1 -0
  163. package/{dist/esm/resources → resources}/hris/hris.d.ts +1 -1
  164. package/{dist/esm/resources → resources}/hris/hris.d.ts.map +1 -1
  165. package/{dist/cjs/resources → resources}/hris/hris.js +8 -8
  166. package/resources/hris/hris.js.map +1 -0
  167. package/{dist/esm/resources/hris/hris.js → resources/hris/hris.mjs} +9 -9
  168. package/resources/hris/hris.mjs.map +1 -0
  169. package/resources/hris/index.d.ts.map +1 -0
  170. package/{dist/cjs/resources → resources}/hris/index.js +7 -7
  171. package/resources/hris/index.js.map +1 -0
  172. package/resources/hris/index.mjs +9 -0
  173. package/resources/hris/index.mjs.map +1 -0
  174. package/{dist/esm/resources → resources}/hris/individuals/employment-data.d.ts +7 -5
  175. package/resources/hris/individuals/employment-data.d.ts.map +1 -0
  176. package/{dist/cjs/resources → resources}/hris/individuals/employment-data.js +8 -9
  177. package/resources/hris/individuals/employment-data.js.map +1 -0
  178. package/{dist/esm/resources/hris/individuals/employment-data.js → resources/hris/individuals/employment-data.mjs} +4 -5
  179. package/resources/hris/individuals/employment-data.mjs.map +1 -0
  180. package/resources/hris/individuals/index.d.ts.map +1 -0
  181. package/{dist/cjs/resources → resources}/hris/individuals/index.js +2 -2
  182. package/resources/hris/individuals/index.js.map +1 -0
  183. package/{dist/esm/resources/hris/individuals/index.js → resources/hris/individuals/index.mjs} +3 -3
  184. package/resources/hris/individuals/index.mjs.map +1 -0
  185. package/{dist/esm/resources → resources}/hris/individuals/individuals.d.ts +7 -5
  186. package/resources/hris/individuals/individuals.d.ts.map +1 -0
  187. package/{dist/cjs/resources → resources}/hris/individuals/individuals.js +10 -11
  188. package/resources/hris/individuals/individuals.js.map +1 -0
  189. package/{dist/esm/resources/hris/individuals/individuals.js → resources/hris/individuals/individuals.mjs} +6 -7
  190. package/resources/hris/individuals/individuals.mjs.map +1 -0
  191. package/{dist/esm/resources → resources}/hris/pay-statements.d.ts +8 -6
  192. package/resources/hris/pay-statements.d.ts.map +1 -0
  193. package/resources/hris/pay-statements.js +26 -0
  194. package/resources/hris/pay-statements.js.map +1 -0
  195. package/{dist/esm/resources/hris/pay-statements.js → resources/hris/pay-statements.mjs} +4 -7
  196. package/resources/hris/pay-statements.mjs.map +1 -0
  197. package/{dist/esm/resources → resources}/hris/payments.d.ts +7 -5
  198. package/resources/hris/payments.d.ts.map +1 -0
  199. package/resources/hris/payments.js +19 -0
  200. package/resources/hris/payments.js.map +1 -0
  201. package/{dist/esm/resources/hris/payments.js → resources/hris/payments.mjs} +4 -7
  202. package/resources/hris/payments.mjs.map +1 -0
  203. package/resources/index.d.ts.map +1 -0
  204. package/{dist/cjs/resources → resources}/index.js +4 -4
  205. package/resources/index.js.map +1 -0
  206. package/resources/index.mjs +6 -0
  207. package/resources/index.mjs.map +1 -0
  208. package/{dist/esm/resources → resources}/providers.d.ts +6 -4
  209. package/resources/providers.d.ts.map +1 -0
  210. package/resources/providers.js +19 -0
  211. package/resources/providers.js.map +1 -0
  212. package/{dist/esm/resources/providers.js → resources/providers.mjs} +4 -7
  213. package/resources/providers.mjs.map +1 -0
  214. package/resources/top-level.d.ts.map +1 -0
  215. package/resources/top-level.js.map +1 -0
  216. package/{dist/esm/resources/top-level.js → resources/top-level.mjs} +1 -1
  217. package/resources/top-level.mjs.map +1 -0
  218. package/{_shims → src/_shims}/agent.node.ts +2 -0
  219. package/{_shims → src/_shims}/agent.ts +2 -2
  220. package/src/_shims/fetch.d.ts +52 -0
  221. package/src/_shims/fetch.js +13 -0
  222. package/src/_shims/fetch.mjs +15 -0
  223. package/src/_shims/fetch.node.d.ts +53 -0
  224. package/src/_shims/fetch.node.js +12 -0
  225. package/src/_shims/fetch.node.mjs +14 -0
  226. package/{_shims → src/_shims}/fileFromPath.node.ts +1 -2
  227. package/{_shims → src/_shims}/fileFromPath.ts +1 -2
  228. package/src/_shims/formdata.d.ts +43 -0
  229. package/src/_shims/formdata.js +9 -0
  230. package/src/_shims/formdata.mjs +11 -0
  231. package/src/_shims/formdata.node.d.ts +44 -0
  232. package/src/_shims/formdata.node.js +11 -0
  233. package/{dist/esm/_shims/formdata.node.js → src/_shims/formdata.node.mjs} +3 -1
  234. package/{_shims → src/_shims}/getMultipartRequestOptions.node.ts +3 -2
  235. package/{_shims → src/_shims}/getMultipartRequestOptions.ts +3 -2
  236. package/src/_shims/node-readable.node.ts +10 -0
  237. package/src/_shims/node-readable.ts +30 -0
  238. package/{core.ts → src/core.ts} +86 -28
  239. package/{error.ts → src/error.ts} +8 -0
  240. package/{index.ts → src/index.ts} +63 -3
  241. package/{resources → src/resources}/account.ts +3 -3
  242. package/{resources → src/resources}/ats/applications.ts +6 -6
  243. package/{resources → src/resources}/ats/ats.ts +2 -2
  244. package/{resources → src/resources}/ats/candidates.ts +5 -5
  245. package/{resources → src/resources}/ats/jobs.ts +5 -5
  246. package/{resources → src/resources}/ats/offers.ts +5 -5
  247. package/{resources → src/resources}/ats/stages.ts +7 -5
  248. package/{resources → src/resources}/hris/benefits/benefits.ts +11 -7
  249. package/{resources → src/resources}/hris/benefits/individuals.ts +15 -9
  250. package/{resources → src/resources}/hris/company.ts +4 -4
  251. package/{resources → src/resources}/hris/directory.ts +5 -5
  252. package/{resources → src/resources}/hris/hris.ts +2 -2
  253. package/{resources → src/resources}/hris/individuals/employment-data.ts +8 -6
  254. package/{resources → src/resources}/hris/individuals/individuals.ts +9 -7
  255. package/{resources → src/resources}/hris/pay-statements.ts +9 -7
  256. package/{resources → src/resources}/hris/payments.ts +8 -6
  257. package/{resources → src/resources}/providers.ts +7 -5
  258. package/{streaming.ts → src/streaming.ts} +148 -75
  259. package/src/uploads.ts +249 -0
  260. package/src/version.ts +1 -0
  261. package/{dist/esm/streaming.d.ts → streaming.d.ts} +2 -0
  262. package/streaming.d.ts.map +1 -0
  263. package/streaming.js +213 -0
  264. package/streaming.js.map +1 -0
  265. package/{dist/esm/streaming.js → streaming.mjs} +117 -58
  266. package/streaming.mjs.map +1 -0
  267. package/uploads.d.ts +90 -0
  268. package/uploads.d.ts.map +1 -0
  269. package/uploads.js +208 -0
  270. package/uploads.js.map +1 -0
  271. package/uploads.mjs +175 -0
  272. package/uploads.mjs.map +1 -0
  273. package/version.d.ts +2 -0
  274. package/version.d.ts.map +1 -0
  275. package/{dist/cjs/version.js → version.js} +1 -1
  276. package/version.js.map +1 -0
  277. package/version.mjs +2 -0
  278. package/version.mjs.map +1 -0
  279. package/_shims/fetch.node.ts +0 -11
  280. package/_shims/fetch.ts +0 -32
  281. package/_shims/formdata.ts +0 -22
  282. package/_shims/newFileArgs.ts +0 -94
  283. package/_shims/toFile.node.ts +0 -25
  284. package/_shims/toFile.ts +0 -26
  285. package/_shims/uploadable.node.ts +0 -21
  286. package/_shims/uploadable.ts +0 -82
  287. package/check-version.ts +0 -18
  288. package/dist/cjs/_shims/agent.d.ts +0 -9
  289. package/dist/cjs/_shims/agent.d.ts.map +0 -1
  290. package/dist/cjs/_shims/agent.js.map +0 -1
  291. package/dist/cjs/_shims/agent.node.d.ts +0 -6
  292. package/dist/cjs/_shims/agent.node.d.ts.map +0 -1
  293. package/dist/cjs/_shims/agent.node.js.map +0 -1
  294. package/dist/cjs/_shims/fetch.d.ts +0 -19
  295. package/dist/cjs/_shims/fetch.d.ts.map +0 -1
  296. package/dist/cjs/_shims/fetch.js +0 -24
  297. package/dist/cjs/_shims/fetch.js.map +0 -1
  298. package/dist/cjs/_shims/fetch.node.d.ts +0 -9
  299. package/dist/cjs/_shims/fetch.node.d.ts.map +0 -1
  300. package/dist/cjs/_shims/fetch.node.js +0 -68
  301. package/dist/cjs/_shims/fetch.node.js.map +0 -1
  302. package/dist/cjs/_shims/fileFromPath.d.ts.map +0 -1
  303. package/dist/cjs/_shims/fileFromPath.js +0 -49
  304. package/dist/cjs/_shims/fileFromPath.js.map +0 -1
  305. package/dist/cjs/_shims/fileFromPath.node.d.ts.map +0 -1
  306. package/dist/cjs/_shims/fileFromPath.node.js +0 -50
  307. package/dist/cjs/_shims/fileFromPath.node.js.map +0 -1
  308. package/dist/cjs/_shims/formdata.d.ts +0 -13
  309. package/dist/cjs/_shims/formdata.d.ts.map +0 -1
  310. package/dist/cjs/_shims/formdata.js +0 -20
  311. package/dist/cjs/_shims/formdata.js.map +0 -1
  312. package/dist/cjs/_shims/formdata.node.d.ts +0 -7
  313. package/dist/cjs/_shims/formdata.node.d.ts.map +0 -1
  314. package/dist/cjs/_shims/formdata.node.js +0 -27
  315. package/dist/cjs/_shims/formdata.node.js.map +0 -1
  316. package/dist/cjs/_shims/getMultipartRequestOptions.d.ts +0 -10
  317. package/dist/cjs/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  318. package/dist/cjs/_shims/getMultipartRequestOptions.js +0 -44
  319. package/dist/cjs/_shims/getMultipartRequestOptions.js.map +0 -1
  320. package/dist/cjs/_shims/getMultipartRequestOptions.node.d.ts +0 -10
  321. package/dist/cjs/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  322. package/dist/cjs/_shims/getMultipartRequestOptions.node.js +0 -52
  323. package/dist/cjs/_shims/getMultipartRequestOptions.node.js.map +0 -1
  324. package/dist/cjs/_shims/newFileArgs.d.ts +0 -19
  325. package/dist/cjs/_shims/newFileArgs.d.ts.map +0 -1
  326. package/dist/cjs/_shims/newFileArgs.js +0 -169
  327. package/dist/cjs/_shims/newFileArgs.js.map +0 -1
  328. package/dist/cjs/_shims/toFile.d.ts +0 -21
  329. package/dist/cjs/_shims/toFile.d.ts.map +0 -1
  330. package/dist/cjs/_shims/toFile.js +0 -56
  331. package/dist/cjs/_shims/toFile.js.map +0 -1
  332. package/dist/cjs/_shims/toFile.node.d.ts +0 -20
  333. package/dist/cjs/_shims/toFile.node.d.ts.map +0 -1
  334. package/dist/cjs/_shims/toFile.node.js +0 -56
  335. package/dist/cjs/_shims/toFile.node.js.map +0 -1
  336. package/dist/cjs/_shims/uploadable.d.ts +0 -56
  337. package/dist/cjs/_shims/uploadable.d.ts.map +0 -1
  338. package/dist/cjs/_shims/uploadable.js +0 -37
  339. package/dist/cjs/_shims/uploadable.js.map +0 -1
  340. package/dist/cjs/_shims/uploadable.node.d.ts +0 -7
  341. package/dist/cjs/_shims/uploadable.node.d.ts.map +0 -1
  342. package/dist/cjs/_shims/uploadable.node.js +0 -23
  343. package/dist/cjs/_shims/uploadable.node.js.map +0 -1
  344. package/dist/cjs/check-version.d.ts +0 -2
  345. package/dist/cjs/check-version.d.ts.map +0 -1
  346. package/dist/cjs/check-version.js +0 -23
  347. package/dist/cjs/check-version.js.map +0 -1
  348. package/dist/cjs/core.d.ts +0 -221
  349. package/dist/cjs/core.d.ts.map +0 -1
  350. package/dist/cjs/core.js.map +0 -1
  351. package/dist/cjs/error.d.ts +0 -48
  352. package/dist/cjs/error.d.ts.map +0 -1
  353. package/dist/cjs/error.js.map +0 -1
  354. package/dist/cjs/index.d.ts.map +0 -1
  355. package/dist/cjs/index.js.map +0 -1
  356. package/dist/cjs/pagination.d.ts +0 -168
  357. package/dist/cjs/pagination.d.ts.map +0 -1
  358. package/dist/cjs/pagination.js.map +0 -1
  359. package/dist/cjs/resource.d.ts +0 -12
  360. package/dist/cjs/resource.d.ts.map +0 -1
  361. package/dist/cjs/resource.js.map +0 -1
  362. package/dist/cjs/resources/account.d.ts +0 -54
  363. package/dist/cjs/resources/account.d.ts.map +0 -1
  364. package/dist/cjs/resources/account.js.map +0 -1
  365. package/dist/cjs/resources/ats/applications.d.ts +0 -36
  366. package/dist/cjs/resources/ats/applications.d.ts.map +0 -1
  367. package/dist/cjs/resources/ats/applications.js.map +0 -1
  368. package/dist/cjs/resources/ats/ats.d.ts +0 -32
  369. package/dist/cjs/resources/ats/ats.js.map +0 -1
  370. package/dist/cjs/resources/ats/candidates.d.ts +0 -50
  371. package/dist/cjs/resources/ats/candidates.d.ts.map +0 -1
  372. package/dist/cjs/resources/ats/candidates.js.map +0 -1
  373. package/dist/cjs/resources/ats/index.d.ts +0 -7
  374. package/dist/cjs/resources/ats/index.d.ts.map +0 -1
  375. package/dist/cjs/resources/ats/index.js.map +0 -1
  376. package/dist/cjs/resources/ats/jobs.d.ts +0 -47
  377. package/dist/cjs/resources/ats/jobs.d.ts.map +0 -1
  378. package/dist/cjs/resources/ats/jobs.js.map +0 -1
  379. package/dist/cjs/resources/ats/offers.d.ts +0 -39
  380. package/dist/cjs/resources/ats/offers.d.ts.map +0 -1
  381. package/dist/cjs/resources/ats/offers.js.map +0 -1
  382. package/dist/cjs/resources/ats/stages.d.ts +0 -28
  383. package/dist/cjs/resources/ats/stages.d.ts.map +0 -1
  384. package/dist/cjs/resources/ats/stages.js +0 -65
  385. package/dist/cjs/resources/ats/stages.js.map +0 -1
  386. package/dist/cjs/resources/hris/benefits/benefits.d.ts +0 -180
  387. package/dist/cjs/resources/hris/benefits/benefits.d.ts.map +0 -1
  388. package/dist/cjs/resources/hris/benefits/benefits.js.map +0 -1
  389. package/dist/cjs/resources/hris/benefits/index.d.ts +0 -28
  390. package/dist/cjs/resources/hris/benefits/index.d.ts.map +0 -1
  391. package/dist/cjs/resources/hris/benefits/index.js.map +0 -1
  392. package/dist/cjs/resources/hris/benefits/individuals.d.ts +0 -176
  393. package/dist/cjs/resources/hris/benefits/individuals.d.ts.map +0 -1
  394. package/dist/cjs/resources/hris/benefits/individuals.js +0 -114
  395. package/dist/cjs/resources/hris/benefits/individuals.js.map +0 -1
  396. package/dist/cjs/resources/hris/company.d.ts +0 -108
  397. package/dist/cjs/resources/hris/company.d.ts.map +0 -1
  398. package/dist/cjs/resources/hris/company.js.map +0 -1
  399. package/dist/cjs/resources/hris/directory.d.ts +0 -70
  400. package/dist/cjs/resources/hris/directory.d.ts.map +0 -1
  401. package/dist/cjs/resources/hris/directory.js.map +0 -1
  402. package/dist/cjs/resources/hris/hris.d.ts +0 -134
  403. package/dist/cjs/resources/hris/hris.d.ts.map +0 -1
  404. package/dist/cjs/resources/hris/hris.js.map +0 -1
  405. package/dist/cjs/resources/hris/index.d.ts +0 -34
  406. package/dist/cjs/resources/hris/index.d.ts.map +0 -1
  407. package/dist/cjs/resources/hris/index.js.map +0 -1
  408. package/dist/cjs/resources/hris/individuals/employment-data.d.ts +0 -150
  409. package/dist/cjs/resources/hris/individuals/employment-data.d.ts.map +0 -1
  410. package/dist/cjs/resources/hris/individuals/employment-data.js.map +0 -1
  411. package/dist/cjs/resources/hris/individuals/index.d.ts +0 -14
  412. package/dist/cjs/resources/hris/individuals/index.d.ts.map +0 -1
  413. package/dist/cjs/resources/hris/individuals/index.js.map +0 -1
  414. package/dist/cjs/resources/hris/individuals/individuals.d.ts +0 -91
  415. package/dist/cjs/resources/hris/individuals/individuals.d.ts.map +0 -1
  416. package/dist/cjs/resources/hris/individuals/individuals.js.map +0 -1
  417. package/dist/cjs/resources/hris/pay-statements.d.ts +0 -195
  418. package/dist/cjs/resources/hris/pay-statements.d.ts.map +0 -1
  419. package/dist/cjs/resources/hris/pay-statements.js +0 -69
  420. package/dist/cjs/resources/hris/pay-statements.js.map +0 -1
  421. package/dist/cjs/resources/hris/payments.d.ts +0 -60
  422. package/dist/cjs/resources/hris/payments.d.ts.map +0 -1
  423. package/dist/cjs/resources/hris/payments.js +0 -62
  424. package/dist/cjs/resources/hris/payments.js.map +0 -1
  425. package/dist/cjs/resources/index.d.ts +0 -5
  426. package/dist/cjs/resources/index.d.ts.map +0 -1
  427. package/dist/cjs/resources/index.js.map +0 -1
  428. package/dist/cjs/resources/providers.d.ts +0 -51
  429. package/dist/cjs/resources/providers.d.ts.map +0 -1
  430. package/dist/cjs/resources/providers.js +0 -62
  431. package/dist/cjs/resources/providers.js.map +0 -1
  432. package/dist/cjs/resources/top-level.d.ts.map +0 -1
  433. package/dist/cjs/resources/top-level.js.map +0 -1
  434. package/dist/cjs/streaming.d.ts +0 -12
  435. package/dist/cjs/streaming.d.ts.map +0 -1
  436. package/dist/cjs/streaming.js +0 -284
  437. package/dist/cjs/streaming.js.map +0 -1
  438. package/dist/cjs/uploads.d.ts +0 -24
  439. package/dist/cjs/uploads.d.ts.map +0 -1
  440. package/dist/cjs/uploads.js +0 -121
  441. package/dist/cjs/uploads.js.map +0 -1
  442. package/dist/cjs/version.d.ts +0 -2
  443. package/dist/cjs/version.d.ts.map +0 -1
  444. package/dist/cjs/version.js.map +0 -1
  445. package/dist/esm/_shims/agent.d.ts.map +0 -1
  446. package/dist/esm/_shims/agent.js.map +0 -1
  447. package/dist/esm/_shims/agent.node.d.ts.map +0 -1
  448. package/dist/esm/_shims/agent.node.js.map +0 -1
  449. package/dist/esm/_shims/fetch.d.ts +0 -19
  450. package/dist/esm/_shims/fetch.d.ts.map +0 -1
  451. package/dist/esm/_shims/fetch.js +0 -18
  452. package/dist/esm/_shims/fetch.js.map +0 -1
  453. package/dist/esm/_shims/fetch.node.d.ts +0 -9
  454. package/dist/esm/_shims/fetch.node.d.ts.map +0 -1
  455. package/dist/esm/_shims/fetch.node.js +0 -7
  456. package/dist/esm/_shims/fetch.node.js.map +0 -1
  457. package/dist/esm/_shims/fileFromPath.d.ts +0 -23
  458. package/dist/esm/_shims/fileFromPath.d.ts.map +0 -1
  459. package/dist/esm/_shims/fileFromPath.js.map +0 -1
  460. package/dist/esm/_shims/fileFromPath.node.d.ts +0 -18
  461. package/dist/esm/_shims/fileFromPath.node.d.ts.map +0 -1
  462. package/dist/esm/_shims/fileFromPath.node.js.map +0 -1
  463. package/dist/esm/_shims/formdata.d.ts +0 -13
  464. package/dist/esm/_shims/formdata.d.ts.map +0 -1
  465. package/dist/esm/_shims/formdata.js.map +0 -1
  466. package/dist/esm/_shims/formdata.node.d.ts +0 -7
  467. package/dist/esm/_shims/formdata.node.d.ts.map +0 -1
  468. package/dist/esm/_shims/formdata.node.js.map +0 -1
  469. package/dist/esm/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  470. package/dist/esm/_shims/getMultipartRequestOptions.js +0 -7
  471. package/dist/esm/_shims/getMultipartRequestOptions.js.map +0 -1
  472. package/dist/esm/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  473. package/dist/esm/_shims/getMultipartRequestOptions.node.js.map +0 -1
  474. package/dist/esm/_shims/newFileArgs.d.ts +0 -19
  475. package/dist/esm/_shims/newFileArgs.d.ts.map +0 -1
  476. package/dist/esm/_shims/newFileArgs.js +0 -66
  477. package/dist/esm/_shims/newFileArgs.js.map +0 -1
  478. package/dist/esm/_shims/toFile.d.ts +0 -21
  479. package/dist/esm/_shims/toFile.d.ts.map +0 -1
  480. package/dist/esm/_shims/toFile.js +0 -19
  481. package/dist/esm/_shims/toFile.js.map +0 -1
  482. package/dist/esm/_shims/toFile.node.d.ts +0 -20
  483. package/dist/esm/_shims/toFile.node.d.ts.map +0 -1
  484. package/dist/esm/_shims/toFile.node.js +0 -19
  485. package/dist/esm/_shims/toFile.node.js.map +0 -1
  486. package/dist/esm/_shims/uploadable.d.ts +0 -56
  487. package/dist/esm/_shims/uploadable.d.ts.map +0 -1
  488. package/dist/esm/_shims/uploadable.js +0 -30
  489. package/dist/esm/_shims/uploadable.js.map +0 -1
  490. package/dist/esm/_shims/uploadable.node.d.ts +0 -7
  491. package/dist/esm/_shims/uploadable.node.d.ts.map +0 -1
  492. package/dist/esm/_shims/uploadable.node.js +0 -10
  493. package/dist/esm/_shims/uploadable.node.js.map +0 -1
  494. package/dist/esm/check-version.d.ts +0 -2
  495. package/dist/esm/check-version.d.ts.map +0 -1
  496. package/dist/esm/check-version.js +0 -16
  497. package/dist/esm/check-version.js.map +0 -1
  498. package/dist/esm/core.d.ts.map +0 -1
  499. package/dist/esm/core.js.map +0 -1
  500. package/dist/esm/error.d.ts.map +0 -1
  501. package/dist/esm/error.js.map +0 -1
  502. package/dist/esm/index.d.ts.map +0 -1
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/package.json +0 -3
  505. package/dist/esm/pagination.d.ts.map +0 -1
  506. package/dist/esm/pagination.js.map +0 -1
  507. package/dist/esm/resource.d.ts.map +0 -1
  508. package/dist/esm/resource.js.map +0 -1
  509. package/dist/esm/resources/account.d.ts.map +0 -1
  510. package/dist/esm/resources/account.js.map +0 -1
  511. package/dist/esm/resources/ats/applications.d.ts.map +0 -1
  512. package/dist/esm/resources/ats/applications.js.map +0 -1
  513. package/dist/esm/resources/ats/ats.d.ts.map +0 -1
  514. package/dist/esm/resources/ats/ats.js.map +0 -1
  515. package/dist/esm/resources/ats/candidates.d.ts.map +0 -1
  516. package/dist/esm/resources/ats/candidates.js.map +0 -1
  517. package/dist/esm/resources/ats/index.d.ts.map +0 -1
  518. package/dist/esm/resources/ats/index.js +0 -8
  519. package/dist/esm/resources/ats/index.js.map +0 -1
  520. package/dist/esm/resources/ats/jobs.d.ts.map +0 -1
  521. package/dist/esm/resources/ats/jobs.js.map +0 -1
  522. package/dist/esm/resources/ats/offers.d.ts.map +0 -1
  523. package/dist/esm/resources/ats/offers.js.map +0 -1
  524. package/dist/esm/resources/ats/stages.d.ts.map +0 -1
  525. package/dist/esm/resources/ats/stages.js.map +0 -1
  526. package/dist/esm/resources/hris/benefits/benefits.d.ts.map +0 -1
  527. package/dist/esm/resources/hris/benefits/benefits.js.map +0 -1
  528. package/dist/esm/resources/hris/benefits/index.d.ts.map +0 -1
  529. package/dist/esm/resources/hris/benefits/index.js.map +0 -1
  530. package/dist/esm/resources/hris/benefits/individuals.d.ts.map +0 -1
  531. package/dist/esm/resources/hris/benefits/individuals.js.map +0 -1
  532. package/dist/esm/resources/hris/company.d.ts.map +0 -1
  533. package/dist/esm/resources/hris/company.js.map +0 -1
  534. package/dist/esm/resources/hris/directory.d.ts.map +0 -1
  535. package/dist/esm/resources/hris/directory.js.map +0 -1
  536. package/dist/esm/resources/hris/hris.js.map +0 -1
  537. package/dist/esm/resources/hris/index.d.ts.map +0 -1
  538. package/dist/esm/resources/hris/index.js +0 -9
  539. package/dist/esm/resources/hris/index.js.map +0 -1
  540. package/dist/esm/resources/hris/individuals/employment-data.d.ts.map +0 -1
  541. package/dist/esm/resources/hris/individuals/employment-data.js.map +0 -1
  542. package/dist/esm/resources/hris/individuals/index.d.ts.map +0 -1
  543. package/dist/esm/resources/hris/individuals/index.js.map +0 -1
  544. package/dist/esm/resources/hris/individuals/individuals.d.ts.map +0 -1
  545. package/dist/esm/resources/hris/individuals/individuals.js.map +0 -1
  546. package/dist/esm/resources/hris/pay-statements.d.ts.map +0 -1
  547. package/dist/esm/resources/hris/pay-statements.js.map +0 -1
  548. package/dist/esm/resources/hris/payments.d.ts.map +0 -1
  549. package/dist/esm/resources/hris/payments.js.map +0 -1
  550. package/dist/esm/resources/index.d.ts.map +0 -1
  551. package/dist/esm/resources/index.js +0 -6
  552. package/dist/esm/resources/index.js.map +0 -1
  553. package/dist/esm/resources/providers.d.ts.map +0 -1
  554. package/dist/esm/resources/providers.js.map +0 -1
  555. package/dist/esm/resources/top-level.d.ts +0 -2
  556. package/dist/esm/resources/top-level.d.ts.map +0 -1
  557. package/dist/esm/resources/top-level.js.map +0 -1
  558. package/dist/esm/streaming.d.ts.map +0 -1
  559. package/dist/esm/streaming.js.map +0 -1
  560. package/dist/esm/uploads.d.ts +0 -24
  561. package/dist/esm/uploads.d.ts.map +0 -1
  562. package/dist/esm/uploads.js +0 -61
  563. package/dist/esm/uploads.js.map +0 -1
  564. package/dist/esm/version.d.ts +0 -2
  565. package/dist/esm/version.d.ts.map +0 -1
  566. package/dist/esm/version.js +0 -2
  567. package/dist/esm/version.js.map +0 -1
  568. package/uploads.ts +0 -81
  569. package/version.ts +0 -1
  570. /package/{dist/cjs/_shims → _shims}/agent.js +0 -0
  571. /package/{dist/cjs/_shims → _shims}/agent.node.js +0 -0
  572. /package/_shims/{formdata.node.ts → formdata.node.mjs} +0 -0
  573. /package/{dist/esm/_shims → _shims}/getMultipartRequestOptions.d.ts +0 -0
  574. /package/{dist/esm/_shims → _shims}/getMultipartRequestOptions.node.d.ts +0 -0
  575. /package/{dist/esm/pagination.d.ts → pagination.d.ts} +0 -0
  576. /package/{dist/esm/resource.d.ts → resource.d.ts} +0 -0
  577. /package/{dist/cjs/resource.js → resource.js} +0 -0
  578. /package/{dist/esm/resources → resources}/ats/index.d.ts +0 -0
  579. /package/{dist/esm/resources → resources}/hris/benefits/index.d.ts +0 -0
  580. /package/{dist/esm/resources → resources}/hris/index.d.ts +0 -0
  581. /package/{dist/esm/resources → resources}/hris/individuals/index.d.ts +0 -0
  582. /package/{dist/esm/resources → resources}/index.d.ts +0 -0
  583. /package/{dist/cjs/resources → resources}/top-level.d.ts +0 -0
  584. /package/{dist/cjs/resources → resources}/top-level.js +0 -0
  585. /package/{pagination.ts → src/pagination.ts} +0 -0
  586. /package/{resource.ts → src/resource.ts} +0 -0
  587. /package/{resources → src/resources}/ats/index.ts +0 -0
  588. /package/{resources → src/resources}/hris/benefits/index.ts +0 -0
  589. /package/{resources → src/resources}/hris/index.ts +0 -0
  590. /package/{resources → src/resources}/hris/individuals/index.ts +0 -0
  591. /package/{resources → src/resources}/index.ts +0 -0
  592. /package/{resources → src/resources}/top-level.ts +0 -0
package/src/uploads.ts ADDED
@@ -0,0 +1,249 @@
1
+ import { type RequestOptions } from './core';
2
+ import { type Readable } from './_shims/node-readable';
3
+ import { type BodyInit } from './_shims/fetch.js';
4
+ import { FormData, File, type FilePropertyBag } from './_shims/formdata.js';
5
+ import { getMultipartRequestOptions } from './_shims/getMultipartRequestOptions';
6
+ import { fileFromPath } from './_shims/fileFromPath';
7
+ import { type FsReadStream, isFsReadStream } from './_shims/node-readable';
8
+
9
+ export { fileFromPath };
10
+
11
+ export type BlobPart = string | ArrayBuffer | ArrayBufferView | BlobLike | Uint8Array | DataView;
12
+
13
+ /**
14
+ * Typically, this is a native "File" class.
15
+ *
16
+ * We provide the {@link toFile} utility to convert a variety of objects
17
+ * into the File class.
18
+ *
19
+ * For convenience, you can also pass a fetch Response, or in Node,
20
+ * the result of fs.createReadStream().
21
+ */
22
+ export type Uploadable = FileLike | ResponseLike | FsReadStream;
23
+
24
+ /**
25
+ * Intended to match web.Blob, node.Blob, node-fetch.Blob, etc.
26
+ */
27
+ export interface BlobLike {
28
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */
29
+ readonly size: number;
30
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */
31
+ readonly type: string;
32
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */
33
+ text(): Promise<string>;
34
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */
35
+ slice(start?: number, end?: number): BlobLike;
36
+ // unfortunately @types/node-fetch@^2.6.4 doesn't type the arrayBuffer method
37
+ }
38
+
39
+ /**
40
+ * Intended to match web.File, node.File, node-fetch.File, etc.
41
+ */
42
+ export interface FileLike extends BlobLike {
43
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */
44
+ readonly lastModified: number;
45
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */
46
+ readonly name: string;
47
+ }
48
+
49
+ /**
50
+ * Intended to match web.Response, node.Response, node-fetch.Response, etc.
51
+ */
52
+ export interface ResponseLike {
53
+ url: string;
54
+ blob(): Promise<BlobLike>;
55
+ }
56
+
57
+ export const isResponseLike = (value: any): value is ResponseLike =>
58
+ value != null &&
59
+ typeof value === 'object' &&
60
+ typeof value.url === 'string' &&
61
+ typeof value.blob === 'function';
62
+
63
+ export const isFileLike = (value: any): value is FileLike =>
64
+ value != null &&
65
+ typeof value === 'object' &&
66
+ typeof value.name === 'string' &&
67
+ typeof value.lastModified === 'number' &&
68
+ isBlobLike(value);
69
+
70
+ /**
71
+ * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check
72
+ * adds the arrayBuffer() method type because it is available and used at runtime
73
+ */
74
+ export const isBlobLike = (value: any): value is BlobLike & { arrayBuffer(): Promise<ArrayBuffer> } =>
75
+ value != null &&
76
+ typeof value === 'object' &&
77
+ typeof value.size === 'number' &&
78
+ typeof value.type === 'string' &&
79
+ typeof value.text === 'function' &&
80
+ typeof value.slice === 'function' &&
81
+ typeof value.arrayBuffer === 'function';
82
+
83
+ export const isUploadable = (value: any): value is Uploadable => {
84
+ return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);
85
+ };
86
+
87
+ export type ToFileInput = Uploadable | Exclude<BlobPart, string> | AsyncIterable<BlobPart>;
88
+
89
+ /**
90
+ * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats
91
+ * @param bits the raw content of the file. Can be an {@link Uploadable}, {@link BlobPart}, or {@link AsyncIterable} of {@link BlobPart}s
92
+ * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible
93
+ * @param {Object=} options additional properties
94
+ * @param {string=} options.type the MIME type of the content
95
+ * @param {number=} options.lastModified the last modified timestamp
96
+ * @returns a {@link File} with the given properties
97
+ */
98
+ export async function toFile(
99
+ value: ToFileInput | PromiseLike<ToFileInput>,
100
+ name?: string | null | undefined,
101
+ options: FilePropertyBag | undefined = {},
102
+ ): Promise<FileLike> {
103
+ if (isResponseLike(value)) {
104
+ const blob = await value.blob();
105
+ name ||= new URL(value.url).pathname.split(/[\\/]/).pop() ?? 'unknown_file';
106
+
107
+ return new File([blob as any], name, options);
108
+ }
109
+
110
+ const bits = await getBytes(value);
111
+
112
+ name ||= getName(value) ?? 'unknown_file';
113
+
114
+ if (!options.type) {
115
+ const type = (bits[0] as any)?.type;
116
+ if (typeof type === 'string') {
117
+ options = { ...options, type };
118
+ }
119
+ }
120
+
121
+ return new File(bits, name, options);
122
+ }
123
+
124
+ async function getBytes(value: ToFileInput | PromiseLike<ToFileInput>): Promise<Array<BlobPart>> {
125
+ // resolve input promise or promiselike object
126
+ value = await value;
127
+
128
+ let parts: Array<BlobPart> = [];
129
+ if (
130
+ typeof value === 'string' ||
131
+ ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.
132
+ value instanceof ArrayBuffer
133
+ ) {
134
+ parts.push(value);
135
+ } else if (isBlobLike(value)) {
136
+ parts.push(await value.arrayBuffer());
137
+ } else if (
138
+ isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.
139
+ ) {
140
+ for await (const chunk of value) {
141
+ parts.push(chunk as BlobPart); // TODO, consider validating?
142
+ }
143
+ } else {
144
+ throw new Error(
145
+ `Unexpected data type: ${typeof value}; constructor: ${
146
+ value?.constructor?.name
147
+ }; props: ${propsForError(value)}`,
148
+ );
149
+ }
150
+
151
+ return parts;
152
+ }
153
+
154
+ function propsForError(value: any): string {
155
+ const props = Object.getOwnPropertyNames(value);
156
+ return `[${props.map((p) => `"${p}"`).join(', ')}]`;
157
+ }
158
+
159
+ function getName(value: any): string | undefined {
160
+ return (
161
+ getStringFromMaybeBuffer(value.name) ||
162
+ getStringFromMaybeBuffer(value.filename) ||
163
+ // For fs.ReadStream
164
+ getStringFromMaybeBuffer(value.path)?.split(/[\\/]/).pop()
165
+ );
166
+ }
167
+
168
+ const getStringFromMaybeBuffer = (x: string | Buffer | unknown): string | undefined => {
169
+ if (typeof x === 'string') return x;
170
+ if (typeof Buffer !== 'undefined' && x instanceof Buffer) return String(x);
171
+ return undefined;
172
+ };
173
+
174
+ const isAsyncIterableIterator = (value: any): value is AsyncIterableIterator<unknown> =>
175
+ value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';
176
+
177
+ export class MultipartBody {
178
+ constructor(public body: Readable | BodyInit) {}
179
+ get [Symbol.toStringTag](): string {
180
+ return 'MultipartBody';
181
+ }
182
+ }
183
+
184
+ export const isMultipartBody = (body: any): body is MultipartBody =>
185
+ body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';
186
+
187
+ /**
188
+ * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.
189
+ * Otherwise returns the request as is.
190
+ */
191
+ export const maybeMultipartFormRequestOptions = async <T extends {} = Record<string, unknown>>(
192
+ opts: RequestOptions<T>,
193
+ ): Promise<RequestOptions<T | MultipartBody>> => {
194
+ if (!hasUploadableValue(opts.body)) return opts;
195
+
196
+ const form = await createForm(opts.body);
197
+ return getMultipartRequestOptions(form, opts);
198
+ };
199
+
200
+ export const multipartFormRequestOptions = async <T extends {} = Record<string, unknown>>(
201
+ opts: RequestOptions<T>,
202
+ ): Promise<RequestOptions<T | MultipartBody>> => {
203
+ const form = await createForm(opts.body);
204
+ return getMultipartRequestOptions(form, opts);
205
+ };
206
+
207
+ export const createForm = async <T = Record<string, unknown>>(body: T | undefined): Promise<FormData> => {
208
+ const form = new FormData();
209
+ await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));
210
+ return form;
211
+ };
212
+
213
+ const hasUploadableValue = (value: unknown): boolean => {
214
+ if (isUploadable(value)) return true;
215
+ if (Array.isArray(value)) return value.some(hasUploadableValue);
216
+ if (value && typeof value === 'object') {
217
+ for (const k in value) {
218
+ if (hasUploadableValue((value as any)[k])) return true;
219
+ }
220
+ }
221
+ return false;
222
+ };
223
+
224
+ const addFormValue = async (form: FormData, key: string, value: unknown): Promise<void> => {
225
+ if (value === undefined) return;
226
+ if (value == null) {
227
+ throw new TypeError(
228
+ `Received null for "${key}"; to pass null in FormData, you must use the string 'null'`,
229
+ );
230
+ }
231
+
232
+ // TODO: make nested formats configurable
233
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
234
+ form.append(key, value);
235
+ } else if (isUploadable(value)) {
236
+ const file = await toFile(value);
237
+ form.append(key, file);
238
+ } else if (Array.isArray(value)) {
239
+ await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));
240
+ } else if (typeof value === 'object') {
241
+ await Promise.all(
242
+ Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)),
243
+ );
244
+ } else {
245
+ throw new TypeError(
246
+ `Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`,
247
+ );
248
+ }
249
+ };
package/src/version.ts ADDED
@@ -0,0 +1 @@
1
+ export const VERSION = '3.1.0'; // x-release-please-version
@@ -1,7 +1,9 @@
1
1
  import type { Response } from '@tryfinch/finch-api/_shims/fetch';
2
2
  import { APIResponse, Headers } from './core.js';
3
3
  export declare class Stream<Item> implements AsyncIterable<Item>, APIResponse<Stream<Item>> {
4
+ /** @deprecated - please use the async iterator instead. We plan to add additional helper methods shortly. */
4
5
  response: Response;
6
+ /** @deprecated - we plan to add a different way to access raw response information shortly. */
5
7
  responseHeaders: Headers;
6
8
  controller: AbortController;
7
9
  private decoder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAyB,MAAM,QAAQ,CAAC;AAUrE,qBAAa,MAAM,CAAC,IAAI,CAAE,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjF,6GAA6G;IAC7G,QAAQ,EAAE,QAAQ,CAAC;IACnB,+FAA+F;IAC/F,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAa;gBAEhB,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe;YAO5C,YAAY;IAqBpB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC;CAsBrE"}
package/streaming.js ADDED
@@ -0,0 +1,213 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.Stream = void 0;
4
+ const core_1 = require('./core.js');
5
+ class Stream {
6
+ constructor(response, controller) {
7
+ this.response = response;
8
+ this.controller = controller;
9
+ this.decoder = new SSEDecoder();
10
+ this.responseHeaders = (0, core_1.createResponseHeaders)(response.headers);
11
+ }
12
+ async *iterMessages() {
13
+ if (!this.response.body) {
14
+ this.controller.abort();
15
+ throw new Error(`Attempted to iterate over a response with no body`);
16
+ }
17
+ const lineDecoder = new LineDecoder();
18
+ const iter = readableStreamAsyncIterable(this.response.body);
19
+ for await (const chunk of iter) {
20
+ for (const line of lineDecoder.decode(chunk)) {
21
+ const sse = this.decoder.decode(line);
22
+ if (sse) yield sse;
23
+ }
24
+ }
25
+ for (const line of lineDecoder.flush()) {
26
+ const sse = this.decoder.decode(line);
27
+ if (sse) yield sse;
28
+ }
29
+ }
30
+ async *[Symbol.asyncIterator]() {
31
+ let done = false;
32
+ try {
33
+ for await (const sse of this.iterMessages()) {
34
+ try {
35
+ yield JSON.parse(sse.data);
36
+ } catch (e) {
37
+ console.error(`Could not parse message into JSON:`, sse.data);
38
+ console.error(`From chunk:`, sse.raw);
39
+ throw e;
40
+ }
41
+ }
42
+ done = true;
43
+ } catch (e) {
44
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
45
+ if (e instanceof Error && e.name === 'AbortError') return;
46
+ throw e;
47
+ } finally {
48
+ // If the user `break`s, abort the ongoing request.
49
+ if (!done) this.controller.abort();
50
+ }
51
+ }
52
+ }
53
+ exports.Stream = Stream;
54
+ class SSEDecoder {
55
+ constructor() {
56
+ this.event = null;
57
+ this.data = [];
58
+ this.chunks = [];
59
+ }
60
+ decode(line) {
61
+ if (line.endsWith('\r')) {
62
+ line = line.substring(0, line.length - 1);
63
+ }
64
+ if (!line) {
65
+ // empty line and we didn't previously encounter any messages
66
+ if (!this.event && !this.data.length) return null;
67
+ const sse = {
68
+ event: this.event,
69
+ data: this.data.join('\n'),
70
+ raw: this.chunks,
71
+ };
72
+ this.event = null;
73
+ this.data = [];
74
+ this.chunks = [];
75
+ return sse;
76
+ }
77
+ this.chunks.push(line);
78
+ if (line.startsWith(':')) {
79
+ return null;
80
+ }
81
+ let [fieldname, _, value] = partition(line, ':');
82
+ if (value.startsWith(' ')) {
83
+ value = value.substring(1);
84
+ }
85
+ if (fieldname === 'event') {
86
+ this.event = value;
87
+ } else if (fieldname === 'data') {
88
+ this.data.push(value);
89
+ }
90
+ return null;
91
+ }
92
+ }
93
+ /**
94
+ * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally
95
+ * reading lines from text.
96
+ *
97
+ * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258
98
+ */
99
+ class LineDecoder {
100
+ constructor() {
101
+ this.buffer = [];
102
+ this.trailingCR = false;
103
+ }
104
+ decode(chunk) {
105
+ let text = this.decodeText(chunk);
106
+ if (this.trailingCR) {
107
+ text = '\r' + text;
108
+ this.trailingCR = false;
109
+ }
110
+ if (text.endsWith('\r')) {
111
+ this.trailingCR = true;
112
+ text = text.slice(0, -1);
113
+ }
114
+ if (!text) {
115
+ return [];
116
+ }
117
+ const trailingNewline = LineDecoder.NEWLINE_CHARS.has(text[text.length - 1] || '');
118
+ let lines = text.split(LineDecoder.NEWLINE_REGEXP);
119
+ if (lines.length === 1 && !trailingNewline) {
120
+ this.buffer.push(lines[0]);
121
+ return [];
122
+ }
123
+ if (this.buffer.length > 0) {
124
+ lines = [this.buffer.join('') + lines[0], ...lines.slice(1)];
125
+ this.buffer = [];
126
+ }
127
+ if (!trailingNewline) {
128
+ this.buffer = [lines.pop() || ''];
129
+ }
130
+ return lines;
131
+ }
132
+ decodeText(bytes) {
133
+ var _a;
134
+ if (bytes == null) return '';
135
+ if (typeof bytes === 'string') return bytes;
136
+ // Node:
137
+ if (typeof Buffer !== 'undefined') {
138
+ if (bytes instanceof Buffer) {
139
+ return bytes.toString();
140
+ }
141
+ if (bytes instanceof Uint8Array) {
142
+ return Buffer.from(bytes).toString();
143
+ }
144
+ throw new Error(
145
+ `Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.`,
146
+ );
147
+ }
148
+ // Browser
149
+ if (typeof TextDecoder !== 'undefined') {
150
+ if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {
151
+ (_a = this.textDecoder) !== null && _a !== void 0 ? _a : (this.textDecoder = new TextDecoder('utf8'));
152
+ return this.textDecoder.decode(bytes);
153
+ }
154
+ throw new Error(
155
+ `Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`,
156
+ );
157
+ }
158
+ throw new Error(
159
+ `Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`,
160
+ );
161
+ }
162
+ flush() {
163
+ if (!this.buffer.length && !this.trailingCR) {
164
+ return [];
165
+ }
166
+ const lines = [this.buffer.join('')];
167
+ this.buffer = [];
168
+ this.trailingCR = false;
169
+ return lines;
170
+ }
171
+ }
172
+ // prettier-ignore
173
+ LineDecoder.NEWLINE_CHARS = new Set(['\n', '\r', '\x0b', '\x0c', '\x1c', '\x1d', '\x1e', '\x85', '\u2028', '\u2029']);
174
+ LineDecoder.NEWLINE_REGEXP = /\r\n|[\n\r\x0b\x0c\x1c\x1d\x1e\x85\u2028\u2029]/g;
175
+ function partition(str, delimiter) {
176
+ const index = str.indexOf(delimiter);
177
+ if (index !== -1) {
178
+ return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];
179
+ }
180
+ return [str, '', ''];
181
+ }
182
+ /**
183
+ * Most browsers don't yet have async iterable support for ReadableStream,
184
+ * and Node has a very different way of reading bytes from its "ReadableStream".
185
+ *
186
+ * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
187
+ */
188
+ function readableStreamAsyncIterable(stream) {
189
+ if (stream[Symbol.asyncIterator]) return stream;
190
+ const reader = stream.getReader();
191
+ return {
192
+ async next() {
193
+ try {
194
+ const result = await reader.read();
195
+ if (result === null || result === void 0 ? void 0 : result.done) reader.releaseLock(); // release lock when stream becomes closed
196
+ return result;
197
+ } catch (e) {
198
+ reader.releaseLock(); // release lock when stream becomes errored
199
+ throw e;
200
+ }
201
+ },
202
+ async return() {
203
+ const cancelPromise = reader.cancel();
204
+ reader.releaseLock();
205
+ await cancelPromise;
206
+ return { done: true, value: undefined };
207
+ },
208
+ [Symbol.asyncIterator]() {
209
+ return this;
210
+ },
211
+ };
212
+ }
213
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":"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"}