@tryfinch/finch-api 5.1.0 → 5.3.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 (361) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +28 -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/_shims/{ReadableStream.js → auto/types.js} +0 -2
  36. package/{src/_shims/ReadableStream.js → _shims/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 +170 -223
  74. package/core.d.ts.map +1 -1
  75. package/core.js +682 -729
  76. package/core.js.map +1 -1
  77. package/core.mjs +676 -680
  78. package/core.mjs.map +1 -1
  79. package/error.d.ts +32 -32
  80. package/error.d.ts.map +1 -1
  81. package/error.js +95 -106
  82. package/error.js.map +1 -1
  83. package/error.mjs +91 -91
  84. package/error.mjs.map +1 -1
  85. package/index.d.mts +145 -178
  86. package/index.d.ts +145 -178
  87. package/index.d.ts.map +1 -1
  88. package/index.js +145 -201
  89. package/index.js.map +1 -1
  90. package/index.mjs +123 -149
  91. package/index.mjs.map +1 -1
  92. package/package.json +31 -23
  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 +5 -7
  139. package/resources/index.d.ts.map +1 -1
  140. package/resources/index.js +13 -51
  141. package/resources/index.js.map +1 -1
  142. package/resources/index.mjs +5 -6
  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 +18 -18
  151. package/resources/webhooks.js +103 -107
  152. package/resources/webhooks.mjs +98 -102
  153. package/shims/node.d.ts +29 -0
  154. package/shims/node.d.ts.map +1 -0
  155. package/shims/node.js +31 -0
  156. package/shims/node.js.map +1 -0
  157. package/shims/node.mjs +5 -0
  158. package/shims/node.mjs.map +1 -0
  159. package/shims/web.d.ts +26 -0
  160. package/shims/web.d.ts.map +1 -0
  161. package/shims/web.js +31 -0
  162. package/shims/web.js.map +1 -0
  163. package/shims/web.mjs +5 -0
  164. package/shims/web.mjs.map +1 -0
  165. package/src/_shims/MultipartBody.ts +9 -0
  166. package/src/_shims/README.md +46 -0
  167. package/src/_shims/auto/runtime-bun.ts +4 -0
  168. package/src/_shims/auto/runtime-node.ts +4 -0
  169. package/src/_shims/auto/runtime.ts +4 -0
  170. package/src/_shims/auto/types-node.ts +4 -0
  171. package/src/_shims/auto/types.d.ts +99 -0
  172. package/src/_shims/auto/types.js +3 -0
  173. package/src/_shims/auto/types.mjs +3 -0
  174. package/src/_shims/bun-runtime.ts +14 -0
  175. package/src/_shims/index.d.ts +79 -0
  176. package/src/_shims/index.js +13 -0
  177. package/src/_shims/index.mjs +7 -0
  178. package/src/_shims/manual-types.d.ts +12 -0
  179. package/src/_shims/manual-types.js +3 -0
  180. package/src/_shims/manual-types.mjs +3 -0
  181. package/src/_shims/node-runtime.ts +79 -0
  182. package/src/_shims/node-types.d.ts +42 -0
  183. package/src/_shims/node-types.js +3 -0
  184. package/src/_shims/node-types.mjs +3 -0
  185. package/src/_shims/registry.ts +64 -0
  186. package/src/_shims/web-runtime.ts +91 -0
  187. package/src/_shims/web-types.d.ts +82 -0
  188. package/src/_shims/web-types.js +3 -0
  189. package/src/_shims/web-types.mjs +3 -0
  190. package/src/core.ts +75 -44
  191. package/src/error.ts +6 -4
  192. package/src/index.ts +8 -25
  193. package/src/pagination.ts +2 -261
  194. package/src/resource.ts +1 -1
  195. package/src/resources/account.ts +3 -3
  196. package/src/resources/hris/benefits/benefits.ts +6 -6
  197. package/src/resources/hris/benefits/index.ts +2 -2
  198. package/src/resources/hris/benefits/individuals.ts +6 -6
  199. package/src/resources/hris/company.ts +4 -4
  200. package/src/resources/hris/directory.ts +5 -5
  201. package/src/resources/hris/employments.ts +5 -5
  202. package/src/resources/hris/hris.ts +9 -9
  203. package/src/resources/hris/index.ts +8 -8
  204. package/src/resources/hris/individuals.ts +6 -6
  205. package/src/resources/hris/pay-statements.ts +6 -6
  206. package/src/resources/hris/payments.ts +5 -5
  207. package/src/resources/index.ts +4 -6
  208. package/src/resources/providers.ts +4 -4
  209. package/src/resources/webhooks.ts +2 -2
  210. package/src/shims/node.ts +50 -0
  211. package/src/shims/web.ts +50 -0
  212. package/src/uploads.ts +12 -16
  213. package/src/version.ts +1 -1
  214. package/uploads.d.ts +23 -39
  215. package/uploads.d.ts.map +1 -1
  216. package/uploads.js +115 -157
  217. package/uploads.js.map +1 -1
  218. package/uploads.mjs +111 -133
  219. package/uploads.mjs.map +1 -1
  220. package/version.d.ts +2 -2
  221. package/version.js +4 -4
  222. package/version.mjs +2 -2
  223. package/_shims/ReadableStream-node.d.ts +0 -6
  224. package/_shims/ReadableStream-node.d.ts.map +0 -1
  225. package/_shims/ReadableStream-node.js +0 -14
  226. package/_shims/ReadableStream-node.js.map +0 -1
  227. package/_shims/ReadableStream-node.mjs +0 -3
  228. package/_shims/ReadableStream-node.mjs.map +0 -1
  229. package/_shims/ReadableStream.d.ts +0 -38
  230. package/_shims/ReadableStream.mjs +0 -7
  231. package/_shims/agent-node.d.ts +0 -7
  232. package/_shims/agent-node.d.ts.map +0 -1
  233. package/_shims/agent-node.js +0 -28
  234. package/_shims/agent-node.js.map +0 -1
  235. package/_shims/agent-node.mjs +0 -16
  236. package/_shims/agent-node.mjs.map +0 -1
  237. package/_shims/agent.d.ts +0 -9
  238. package/_shims/agent.d.ts.map +0 -1
  239. package/_shims/agent.js +0 -14
  240. package/_shims/agent.js.map +0 -1
  241. package/_shims/agent.mjs +0 -10
  242. package/_shims/agent.mjs.map +0 -1
  243. package/_shims/fetch-node.d.ts +0 -64
  244. package/_shims/fetch-node.js +0 -12
  245. package/_shims/fetch-node.mjs +0 -14
  246. package/_shims/fetch.d.ts +0 -60
  247. package/_shims/fetch.js +0 -13
  248. package/_shims/fetch.mjs +0 -15
  249. package/_shims/fileFromPath-node.d.ts +0 -17
  250. package/_shims/fileFromPath-node.d.ts.map +0 -1
  251. package/_shims/fileFromPath-node.js +0 -17
  252. package/_shims/fileFromPath-node.js.map +0 -1
  253. package/_shims/fileFromPath-node.mjs +0 -13
  254. package/_shims/fileFromPath-node.mjs.map +0 -1
  255. package/_shims/fileFromPath.d.ts +0 -22
  256. package/_shims/fileFromPath.d.ts.map +0 -1
  257. package/_shims/fileFromPath.js +0 -16
  258. package/_shims/fileFromPath.js.map +0 -1
  259. package/_shims/fileFromPath.mjs +0 -12
  260. package/_shims/fileFromPath.mjs.map +0 -1
  261. package/_shims/form-data-node.d.ts +0 -45
  262. package/_shims/form-data-node.js +0 -11
  263. package/_shims/form-data-node.mjs +0 -9
  264. package/_shims/form-data.d.ts +0 -43
  265. package/_shims/form-data.js +0 -17
  266. package/_shims/form-data.mjs +0 -20
  267. package/_shims/getMultipartRequestOptions-node.d.ts +0 -10
  268. package/_shims/getMultipartRequestOptions-node.d.ts.map +0 -1
  269. package/_shims/getMultipartRequestOptions-node.js +0 -22
  270. package/_shims/getMultipartRequestOptions-node.js.map +0 -1
  271. package/_shims/getMultipartRequestOptions-node.mjs +0 -18
  272. package/_shims/getMultipartRequestOptions-node.mjs.map +0 -1
  273. package/_shims/getMultipartRequestOptions.d.ts +0 -10
  274. package/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  275. package/_shims/getMultipartRequestOptions.js +0 -12
  276. package/_shims/getMultipartRequestOptions.js.map +0 -1
  277. package/_shims/getMultipartRequestOptions.mjs +0 -8
  278. package/_shims/getMultipartRequestOptions.mjs.map +0 -1
  279. package/_shims/node-readable-node.d.ts +0 -8
  280. package/_shims/node-readable-node.d.ts.map +0 -1
  281. package/_shims/node-readable-node.js +0 -9
  282. package/_shims/node-readable-node.js.map +0 -1
  283. package/_shims/node-readable-node.mjs +0 -5
  284. package/_shims/node-readable-node.mjs.map +0 -1
  285. package/_shims/node-readable.d.ts +0 -23
  286. package/_shims/node-readable.d.ts.map +0 -1
  287. package/_shims/node-readable.js +0 -11
  288. package/_shims/node-readable.js.map +0 -1
  289. package/_shims/node-readable.mjs +0 -7
  290. package/_shims/node-readable.mjs.map +0 -1
  291. package/resources/ats/applications.d.ts +0 -39
  292. package/resources/ats/applications.d.ts.map +0 -1
  293. package/resources/ats/applications.js +0 -24
  294. package/resources/ats/applications.js.map +0 -1
  295. package/resources/ats/applications.mjs +0 -20
  296. package/resources/ats/applications.mjs.map +0 -1
  297. package/resources/ats/ats.d.ts +0 -32
  298. package/resources/ats/ats.d.ts.map +0 -1
  299. package/resources/ats/ats.js +0 -71
  300. package/resources/ats/ats.js.map +0 -1
  301. package/resources/ats/ats.mjs +0 -27
  302. package/resources/ats/ats.mjs.map +0 -1
  303. package/resources/ats/candidates.d.ts +0 -53
  304. package/resources/ats/candidates.d.ts.map +0 -1
  305. package/resources/ats/candidates.js +0 -25
  306. package/resources/ats/candidates.js.map +0 -1
  307. package/resources/ats/candidates.mjs +0 -21
  308. package/resources/ats/candidates.mjs.map +0 -1
  309. package/resources/ats/index.d.ts +0 -7
  310. package/resources/ats/index.d.ts.map +0 -1
  311. package/resources/ats/index.js +0 -60
  312. package/resources/ats/index.js.map +0 -1
  313. package/resources/ats/index.mjs +0 -8
  314. package/resources/ats/index.mjs.map +0 -1
  315. package/resources/ats/jobs.d.ts +0 -47
  316. package/resources/ats/jobs.d.ts.map +0 -1
  317. package/resources/ats/jobs.js +0 -24
  318. package/resources/ats/jobs.js.map +0 -1
  319. package/resources/ats/jobs.mjs +0 -20
  320. package/resources/ats/jobs.mjs.map +0 -1
  321. package/resources/ats/offers.d.ts +0 -39
  322. package/resources/ats/offers.d.ts.map +0 -1
  323. package/resources/ats/offers.js +0 -24
  324. package/resources/ats/offers.js.map +0 -1
  325. package/resources/ats/offers.mjs +0 -20
  326. package/resources/ats/offers.mjs.map +0 -1
  327. package/resources/ats/stages.d.ts +0 -30
  328. package/resources/ats/stages.d.ts.map +0 -1
  329. package/resources/ats/stages.js +0 -22
  330. package/resources/ats/stages.js.map +0 -1
  331. package/resources/ats/stages.mjs +0 -17
  332. package/resources/ats/stages.mjs.map +0 -1
  333. package/src/_shims/ReadableStream.d.ts +0 -38
  334. package/src/_shims/ReadableStream.mjs +0 -7
  335. package/src/_shims/agent-node.ts +0 -22
  336. package/src/_shims/agent.ts +0 -12
  337. package/src/_shims/fetch-node.d.ts +0 -64
  338. package/src/_shims/fetch-node.js +0 -12
  339. package/src/_shims/fetch-node.mjs +0 -14
  340. package/src/_shims/fetch.d.ts +0 -60
  341. package/src/_shims/fetch.js +0 -13
  342. package/src/_shims/fetch.mjs +0 -15
  343. package/src/_shims/fileFromPath-node.ts +0 -29
  344. package/src/_shims/fileFromPath.ts +0 -29
  345. package/src/_shims/form-data-node.d.ts +0 -45
  346. package/src/_shims/form-data-node.js +0 -11
  347. package/src/_shims/form-data-node.mjs +0 -9
  348. package/src/_shims/form-data.d.ts +0 -43
  349. package/src/_shims/form-data.js +0 -17
  350. package/src/_shims/form-data.mjs +0 -20
  351. package/src/_shims/getMultipartRequestOptions-node.ts +0 -25
  352. package/src/_shims/getMultipartRequestOptions.ts +0 -14
  353. package/src/_shims/node-readable-node.ts +0 -10
  354. package/src/_shims/node-readable.ts +0 -30
  355. package/src/resources/ats/applications.ts +0 -64
  356. package/src/resources/ats/ats.ts +0 -39
  357. package/src/resources/ats/candidates.ts +0 -83
  358. package/src/resources/ats/index.ts +0 -8
  359. package/src/resources/ats/jobs.ts +0 -76
  360. package/src/resources/ats/offers.ts +0 -63
  361. package/src/resources/ats/stages.ts +0 -39
@@ -3,112 +3,108 @@ import { APIResource } from '@tryfinch/finch-api/resource';
3
3
  import { createHmac } from 'crypto';
4
4
  import { getHeader } from '@tryfinch/finch-api/core';
5
5
  export class Webhooks extends APIResource {
6
- /**
7
- * Validates that the given payload was sent by Finch and parses the payload.
8
- */
9
- unwrap(payload, headers, secret = this.client.webhookSecret) {
10
- this.verifySignature(payload, headers, secret);
11
- return JSON.parse(payload);
12
- }
13
- parseSecret(secret) {
14
- if (!secret) {
15
- throw new Error(
16
- "The webhook secret must either be set using the env var, FINCH_WEBHOOK_SECRET, on the client class, Finch({ webhook_secret: '123' }), or passed to this function",
17
- );
6
+ /**
7
+ * Validates that the given payload was sent by Finch and parses the payload.
8
+ */
9
+ unwrap(payload, headers, secret = this.client.webhookSecret) {
10
+ this.verifySignature(payload, headers, secret);
11
+ return JSON.parse(payload);
18
12
  }
19
- const buf = Buffer.from(secret, 'base64');
20
- if (buf.toString('base64') !== secret) {
21
- throw new Error(`Given secret is not valid`);
13
+ parseSecret(secret) {
14
+ if (!secret) {
15
+ throw new Error("The webhook secret must either be set using the env var, FINCH_WEBHOOK_SECRET, on the client class, Finch({ webhook_secret: '123' }), or passed to this function");
16
+ }
17
+ const buf = Buffer.from(secret, 'base64');
18
+ if (buf.toString('base64') !== secret) {
19
+ throw new Error(`Given secret is not valid`);
20
+ }
21
+ return new Uint8Array(buf);
22
22
  }
23
- return new Uint8Array(buf);
24
- }
25
- signPayload(payload, { eventId, timestamp, secret }) {
26
- const encoder = new TextEncoder();
27
- const toSign = encoder.encode(`${eventId}.${timestamp.getTime() / 1000}.${payload}`);
28
- const hmac = createHmac('sha256', secret);
29
- hmac.update(toSign);
30
- return `v1,${hmac.digest('base64')}`;
31
- }
32
- /** Make an assertion, if not `true`, then throw. */
33
- assert(expr, msg = '') {
34
- if (!expr) {
35
- throw new Error(msg);
23
+ signPayload(payload, { eventId, timestamp, secret }) {
24
+ const encoder = new TextEncoder();
25
+ const toSign = encoder.encode(`${eventId}.${timestamp.getTime() / 1000}.${payload}`);
26
+ const hmac = createHmac('sha256', secret);
27
+ hmac.update(toSign);
28
+ return `v1,${hmac.digest('base64')}`;
36
29
  }
37
- }
38
- /** Compare to array buffers or data views in a way that timing based attacks
39
- * cannot gain information about the platform. */
40
- timingSafeEqual(a, b) {
41
- if (a.byteLength !== b.byteLength) {
42
- return false;
30
+ /** Make an assertion, if not `true`, then throw. */
31
+ assert(expr, msg = '') {
32
+ if (!expr) {
33
+ throw new Error(msg);
34
+ }
43
35
  }
44
- if (!(a instanceof DataView)) {
45
- a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);
36
+ /** Compare to array buffers or data views in a way that timing based attacks
37
+ * cannot gain information about the platform. */
38
+ timingSafeEqual(a, b) {
39
+ if (a.byteLength !== b.byteLength) {
40
+ return false;
41
+ }
42
+ if (!(a instanceof DataView)) {
43
+ a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);
44
+ }
45
+ if (!(b instanceof DataView)) {
46
+ b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);
47
+ }
48
+ this.assert(a instanceof DataView);
49
+ this.assert(b instanceof DataView);
50
+ const length = a.byteLength;
51
+ let out = 0;
52
+ let i = -1;
53
+ while (++i < length) {
54
+ out |= a.getUint8(i) ^ b.getUint8(i);
55
+ }
56
+ return out === 0;
46
57
  }
47
- if (!(b instanceof DataView)) {
48
- b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);
58
+ /**
59
+ * Validates whether or not the webhook payload was sent by Finch.
60
+ *
61
+ * An error will be raised if the webhook payload was not sent by Finch.
62
+ */
63
+ verifySignature(body, headers, secret = this.client.webhookSecret) {
64
+ const parsedSecret = this.parseSecret(secret);
65
+ const eventId = getHeader(headers, 'finch-event-id');
66
+ if (!eventId) {
67
+ throw new Error('Could not find finch-event-id header');
68
+ }
69
+ const msgTimestamp = getHeader(headers, 'finch-timestamp');
70
+ if (!msgTimestamp) {
71
+ throw new Error('Could not find finch-timestamp header');
72
+ }
73
+ const msgSignature = getHeader(headers, 'finch-signature');
74
+ if (!msgSignature) {
75
+ throw new Error('Could not find finch-signature header');
76
+ }
77
+ const now = Math.floor(Date.now() / 1000);
78
+ const timestampSeconds = parseInt(msgTimestamp, 10);
79
+ if (isNaN(timestampSeconds)) {
80
+ throw new Error(`Invalid timestamp header: ${msgTimestamp}`);
81
+ }
82
+ if (typeof body !== 'string') {
83
+ throw new Error('Webhook body must be passed as the raw JSON string sent from the server (do not parse it first).');
84
+ }
85
+ const webhook_tolerance_in_seconds = 5 * 60; // 5 minutes
86
+ if (now - timestampSeconds > webhook_tolerance_in_seconds) {
87
+ throw new Error('Webhook timestamp is too old');
88
+ }
89
+ if (timestampSeconds > now + webhook_tolerance_in_seconds) {
90
+ throw new Error('Webhook timestamp is too new');
91
+ }
92
+ const timestamp = new Date(timestampSeconds * 1000);
93
+ const computedSignature = this.signPayload(body, { eventId, timestamp, secret: parsedSecret });
94
+ const expectedSignature = computedSignature.split(',')[1];
95
+ const passedSignatures = msgSignature.split(' ');
96
+ const encoder = new globalThis.TextEncoder();
97
+ for (const versionedSignature of passedSignatures) {
98
+ const [version, signature] = versionedSignature.split(',');
99
+ if (version !== 'v1') {
100
+ continue;
101
+ }
102
+ if (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) {
103
+ // valid!
104
+ return;
105
+ }
106
+ }
107
+ throw new Error('None of the given webhook signatures match the expected signature');
49
108
  }
50
- this.assert(a instanceof DataView);
51
- this.assert(b instanceof DataView);
52
- const length = a.byteLength;
53
- let out = 0;
54
- let i = -1;
55
- while (++i < length) {
56
- out |= a.getUint8(i) ^ b.getUint8(i);
57
- }
58
- return out === 0;
59
- }
60
- /**
61
- * Validates whether or not the webhook payload was sent by Finch.
62
- *
63
- * An error will be raised if the webhook payload was not sent by Finch.
64
- */
65
- verifySignature(body, headers, secret = this.client.webhookSecret) {
66
- const parsedSecret = this.parseSecret(secret);
67
- const eventId = getHeader(headers, 'finch-event-id');
68
- if (!eventId) {
69
- throw new Error('Could not find finch-event-id header');
70
- }
71
- const msgTimestamp = getHeader(headers, 'finch-timestamp');
72
- if (!msgTimestamp) {
73
- throw new Error('Could not find finch-timestamp header');
74
- }
75
- const msgSignature = getHeader(headers, 'finch-signature');
76
- if (!msgSignature) {
77
- throw new Error('Could not find finch-signature header');
78
- }
79
- const now = Math.floor(Date.now() / 1000);
80
- const timestampSeconds = parseInt(msgTimestamp, 10);
81
- if (isNaN(timestampSeconds)) {
82
- throw new Error(`Invalid timestamp header: ${msgTimestamp}`);
83
- }
84
- if (typeof body !== 'string') {
85
- throw new Error(
86
- 'Webhook body must be passed as the raw JSON string sent from the server (do not parse it first).',
87
- );
88
- }
89
- const webhook_tolerance_in_seconds = 5 * 60; // 5 minutes
90
- if (now - timestampSeconds > webhook_tolerance_in_seconds) {
91
- throw new Error('Webhook timestamp is too old');
92
- }
93
- if (timestampSeconds > now + webhook_tolerance_in_seconds) {
94
- throw new Error('Webhook timestamp is too new');
95
- }
96
- const timestamp = new Date(timestampSeconds * 1000);
97
- const computedSignature = this.signPayload(body, { eventId, timestamp, secret: parsedSecret });
98
- const expectedSignature = computedSignature.split(',')[1];
99
- const passedSignatures = msgSignature.split(' ');
100
- const encoder = new globalThis.TextEncoder();
101
- for (const versionedSignature of passedSignatures) {
102
- const [version, signature] = versionedSignature.split(',');
103
- if (version !== 'v1') {
104
- continue;
105
- }
106
- if (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) {
107
- // valid!
108
- return;
109
- }
110
- }
111
- throw new Error('None of the given webhook signatures match the expected signature');
112
- }
113
109
  }
114
- //# sourceMappingURL=webhooks.mjs.map
110
+ //# sourceMappingURL=webhooks.mjs.map
@@ -0,0 +1,29 @@
1
+
2
+
3
+
4
+ import * as types from "../_shims/node-types.js";
5
+ declare module '../_shims/manual-types' {
6
+ namespace manual {
7
+ type Agent = types.Agent;
8
+ export import fetch = types.fetch;
9
+ type Request = types.Request;
10
+ type RequestInfo = types.RequestInfo;
11
+ type RequestInit = types.RequestInit;
12
+ type Response = types.Response;
13
+ type ResponseInit = types.ResponseInit;
14
+ type ResponseType = types.ResponseType;
15
+ type BodyInit = types.BodyInit;
16
+ type Headers = types.Headers;
17
+ type HeadersInit = types.HeadersInit;
18
+ type BlobPropertyBag = types.BlobPropertyBag;
19
+ type FilePropertyBag = types.FilePropertyBag;
20
+ type FileFromPathOptions = types.FileFromPathOptions;
21
+ export import FormData = types.FormData;
22
+ export import File = types.File;
23
+ export import Blob = types.Blob;
24
+ type Readable = types.Readable;
25
+ type FsReadStream = types.FsReadStream;
26
+ type ReadableStream = types.ReadableStream;
27
+ }
28
+ }
29
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/shims/node.ts"],"names":[],"mappings":";;;AACA,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAK9C,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,MAAM,CAAC;QAEtB,KAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAEhC,MAAM,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAElC,KAAY,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAEpC,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAEpC,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAEpD,KAAY,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAEpD,KAAY,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAE5D,MAAM,QAAQ,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAExC,MAAM,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEhC,MAAM,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEhC,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;KACnD;CACF"}
package/shims/node.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ // @ts-ignore
27
+ const types = __importStar(require("../_shims/node-types.js"));
28
+ const registry_1 = require("../_shims/registry.js");
29
+ const node_runtime_1 = require("../_shims/node-runtime.js");
30
+ (0, registry_1.setShims)((0, node_runtime_1.getRuntime)());
31
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/shims/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,aAAa;AACb,+DAA8C;AAC9C,oDAA8C;AAC9C,4DAAoD;AACpD,IAAA,mBAAQ,EAAC,IAAA,yBAAU,GAAE,CAAC,CAAC"}
package/shims/node.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import * as types from "../_shims/node-types.mjs";
2
+ import { setShims } from "../_shims/registry.mjs";
3
+ import { getRuntime } from "../_shims/node-runtime.mjs";
4
+ setShims(getRuntime());
5
+ //# sourceMappingURL=node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.mjs","sourceRoot":"","sources":["../src/shims/node.ts"],"names":[],"mappings":"OACO,KAAK,KAAK;OACV,EAAE,QAAQ,EAAE;OACZ,EAAE,UAAU,EAAE;AACrB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC"}
package/shims/web.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import * as types from "../_shims/web-types.js";
2
+ declare module '../_shims/manual-types' {
3
+ namespace manual {
4
+ type Agent = types.Agent;
5
+ export import fetch = types.fetch;
6
+ type Request = types.Request;
7
+ type RequestInfo = types.RequestInfo;
8
+ type RequestInit = types.RequestInit;
9
+ type Response = types.Response;
10
+ type ResponseInit = types.ResponseInit;
11
+ type ResponseType = types.ResponseType;
12
+ type BodyInit = types.BodyInit;
13
+ type Headers = types.Headers;
14
+ type HeadersInit = types.HeadersInit;
15
+ type BlobPropertyBag = types.BlobPropertyBag;
16
+ type FilePropertyBag = types.FilePropertyBag;
17
+ type FileFromPathOptions = types.FileFromPathOptions;
18
+ export import FormData = types.FormData;
19
+ export import File = types.File;
20
+ export import Blob = types.Blob;
21
+ type Readable = types.Readable;
22
+ type FsReadStream = types.FsReadStream;
23
+ type ReadableStream = types.ReadableStream;
24
+ }
25
+ }
26
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/shims/web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAK7C,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,MAAM,CAAC;QAEtB,KAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAEhC,MAAM,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAElC,KAAY,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAEpC,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAEpC,KAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5C,KAAY,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAEpD,KAAY,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAEpD,KAAY,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAE5D,MAAM,QAAQ,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAExC,MAAM,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEhC,MAAM,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEhC,KAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtC,KAAY,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAE9C,KAAY,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;KACnD;CACF"}
package/shims/web.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ // @ts-ignore
27
+ const types = __importStar(require("../_shims/web-types.js"));
28
+ const registry_1 = require("../_shims/registry.js");
29
+ const web_runtime_1 = require("../_shims/web-runtime.js");
30
+ (0, registry_1.setShims)((0, web_runtime_1.getRuntime)({ manuallyImported: true }));
31
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/shims/web.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,aAAa;AACb,8DAA6C;AAC7C,oDAA8C;AAC9C,0DAAmD;AACnD,IAAA,mBAAQ,EAAC,IAAA,wBAAU,EAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC"}
package/shims/web.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import * as types from "../_shims/web-types.mjs";
2
+ import { setShims } from "../_shims/registry.mjs";
3
+ import { getRuntime } from "../_shims/web-runtime.mjs";
4
+ setShims(getRuntime({ manuallyImported: true }));
5
+ //# sourceMappingURL=web.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.mjs","sourceRoot":"","sources":["../src/shims/web.ts"],"names":[],"mappings":"OACO,KAAK,KAAK;OACV,EAAE,QAAQ,EAAE;OACZ,EAAE,UAAU,EAAE;AACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export class MultipartBody {
5
+ constructor(public body: any) {}
6
+ get [Symbol.toStringTag](): string {
7
+ return 'MultipartBody';
8
+ }
9
+ }
@@ -0,0 +1,46 @@
1
+ # 👋 Wondering what everything in here does?
2
+
3
+ `@tryfinch/finch-api` supports a wide variety of runtime environments like Node.js, Deno, Bun, browsers, and various
4
+ edge runtimes, as well as both CommonJS (CJS) and EcmaScript Modules (ESM).
5
+
6
+ To do this, `@tryfinch/finch-api` provides shims for either using `node-fetch` when in Node (because `fetch` is still experimental there) or the global `fetch` API built into the environment when not in Node.
7
+
8
+ It uses [conditional exports](https://nodejs.org/api/packages.html#conditional-exports) to
9
+ automatically select the correct shims for each environment. However, conditional exports are a fairly new
10
+ feature and not supported everywhere. For instance, the TypeScript `"moduleResolution": "node"`
11
+
12
+ setting doesn't consult the `exports` map, compared to `"moduleResolution": "nodeNext"`, which does.
13
+ Unfortunately that's still the default setting, and it can result in errors like
14
+ getting the wrong raw `Response` type from `.asResponse()`, for example.
15
+
16
+ The user can work around these issues by manually importing one of:
17
+
18
+ - `import '@tryfinch/finch-api/shims/node'`
19
+ - `import '@tryfinch/finch-api/shims/web'`
20
+
21
+ All of the code here in `_shims` handles selecting the automatic default shims or manual overrides.
22
+
23
+ ### How it works - Runtime
24
+
25
+ Runtime shims get installed by calling `setShims` exported by `@tryfinch/finch-api/_shims/registry`.
26
+
27
+ Manually importing `@tryfinch/finch-api/shims/node` or `@tryfinch/finch-api/shims/web`, calls `setShims` with the respective runtime shims.
28
+
29
+ All client code imports shims from `@tryfinch/finch-api/_shims/index`, which:
30
+
31
+ - checks if shims have been set manually
32
+ - if not, calls `setShims` with the shims from `@tryfinch/finch-api/_shims/auto/runtime`
33
+ - re-exports the installed shims from `@tryfinch/finch-api/_shims/registry`.
34
+
35
+ `@tryfinch/finch-api/_shims/auto/runtime` exports web runtime shims.
36
+ If the `node` export condition is set, the export map replaces it with `@tryfinch/finch-api/_shims/auto/runtime-node`.
37
+
38
+ ### How it works - Type time
39
+
40
+ All client code imports shim types from `@tryfinch/finch-api/_shims/index`, which selects the manual types from `@tryfinch/finch-api/_shims/manual-types` if they have been declared, otherwise it exports the auto types from `@tryfinch/finch-api/_shims/auto/types`.
41
+
42
+ `@tryfinch/finch-api/_shims/manual-types` exports an empty namespace.
43
+ Manually importing `@tryfinch/finch-api/shims/node` or `@tryfinch/finch-api/shims/web` merges declarations into this empty namespace, so they get picked up by `@tryfinch/finch-api/_shims/index`.
44
+
45
+ `@tryfinch/finch-api/_shims/auto/types` exports web type definitions.
46
+ If the `node` export condition is set, the export map replaces it with `@tryfinch/finch-api/_shims/auto/types-node`, though TS only picks this up if `"moduleResolution": "nodenext"` or `"moduleResolution": "bundler"`.
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export * from '../bun-runtime';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export * from '../node-runtime';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export * from '../web-runtime';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export * from '../node-types';
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ export type Agent = any;
5
+
6
+ // @ts-ignore
7
+ declare const _fetch: typeof fetch;
8
+ export { _fetch as fetch };
9
+
10
+ // @ts-ignore
11
+ type _Request = Request;
12
+ export { _Request as Request };
13
+
14
+ // @ts-ignore
15
+ type _RequestInfo = RequestInfo;
16
+ export { type _RequestInfo as RequestInfo };
17
+
18
+ // @ts-ignore
19
+ type _RequestInit = RequestInit;
20
+ export { type _RequestInit as RequestInit };
21
+
22
+ // @ts-ignore
23
+ type _Response = Response;
24
+ export { _Response as Response };
25
+
26
+ // @ts-ignore
27
+ type _ResponseInit = ResponseInit;
28
+ export { type _ResponseInit as ResponseInit };
29
+
30
+ // @ts-ignore
31
+ type _ResponseType = ResponseType;
32
+ export { type _ResponseType as ResponseType };
33
+
34
+ // @ts-ignore
35
+ type _BodyInit = BodyInit;
36
+ export { type _BodyInit as BodyInit };
37
+
38
+ // @ts-ignore
39
+ type _Headers = Headers;
40
+ export { _Headers as Headers };
41
+
42
+ // @ts-ignore
43
+ type _HeadersInit = HeadersInit;
44
+ export { type _HeadersInit as HeadersInit };
45
+
46
+ type EndingType = 'native' | 'transparent';
47
+
48
+ export interface BlobPropertyBag {
49
+ endings?: EndingType;
50
+ type?: string;
51
+ }
52
+
53
+ export interface FilePropertyBag extends BlobPropertyBag {
54
+ lastModified?: number;
55
+ }
56
+
57
+ export type FileFromPathOptions = Omit<FilePropertyBag, 'lastModified'>;
58
+
59
+ // @ts-ignore
60
+ type _FormData = FormData;
61
+ // @ts-ignore
62
+ declare const _FormData: typeof FormData;
63
+ export { _FormData as FormData };
64
+
65
+ // @ts-ignore
66
+ type _File = File;
67
+ // @ts-ignore
68
+ declare const _File: typeof File;
69
+ export { _File as File };
70
+
71
+ // @ts-ignore
72
+ type _Blob = Blob;
73
+ // @ts-ignore
74
+ declare const _Blob: typeof Blob;
75
+ export { _Blob as Blob };
76
+
77
+ export declare class Readable {
78
+ readable: boolean;
79
+ readonly readableEnded: boolean;
80
+ readonly readableFlowing: boolean | null;
81
+ readonly readableHighWaterMark: number;
82
+ readonly readableLength: number;
83
+ readonly readableObjectMode: boolean;
84
+ destroyed: boolean;
85
+ read(size?: number): any;
86
+ pause(): this;
87
+ resume(): this;
88
+ isPaused(): boolean;
89
+ destroy(error?: Error): this;
90
+ [Symbol.asyncIterator](): AsyncIterableIterator<any>;
91
+ }
92
+
93
+ export declare class FsReadStream extends Readable {
94
+ path: {}; // node type is string | Buffer
95
+ }
96
+
97
+ // @ts-ignore
98
+ type _ReadableStream<R = any> = ReadableStream<R>;
99
+ 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
+ */
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ import { type Shims } from './registry';
5
+ import { getRuntime as getWebRuntime } from './web-runtime';
6
+ import { ReadStream as FsReadStream } from 'node:fs';
7
+
8
+ export function getRuntime(): Shims {
9
+ const runtime = getWebRuntime();
10
+ function isFsReadStream(value: any): value is FsReadStream {
11
+ return value instanceof FsReadStream;
12
+ }
13
+ return { ...runtime, isFsReadStream };
14
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Disclaimer: modules in _shims aren't intended to be imported by SDK users.
3
+ */
4
+ import { manual } from './manual-types';
5
+ import * as auto from "../ch/finch-api/_shims/auto/types";
6
+ import { type RequestOptions } from '../core';
7
+
8
+ type SelectType<Manual, Auto> = unknown extends Manual ? Auto : Manual;
9
+
10
+ export const kind: string;
11
+
12
+ // @ts-ignore
13
+ export type Agent = SelectType<manual.Agent, auto.Agent>;
14
+
15
+ // @ts-ignore
16
+ export const fetch: SelectType<typeof manual.fetch, typeof auto.fetch>;
17
+
18
+ // @ts-ignore
19
+ export type Request = SelectType<manual.Request, auto.Request>;
20
+ // @ts-ignore
21
+ export type RequestInfo = SelectType<manual.RequestInfo, auto.RequestInfo>;
22
+ // @ts-ignore
23
+ export type RequestInit = SelectType<manual.RequestInit, auto.RequestInit>;
24
+
25
+ // @ts-ignore
26
+ export type Response = SelectType<manual.Response, auto.Response>;
27
+ // @ts-ignore
28
+ export type ResponseInit = SelectType<manual.ResponseInit, auto.ResponseInit>;
29
+ // @ts-ignore
30
+ export type ResponseType = SelectType<manual.ResponseType, auto.ResponseType>;
31
+ // @ts-ignore
32
+ export type BodyInit = SelectType<manual.BodyInit, auto.BodyInit>;
33
+ // @ts-ignore
34
+ export type Headers = SelectType<manual.Headers, auto.Headers>;
35
+ // @ts-ignore
36
+ export const Headers: SelectType<typeof manual.Headers, typeof auto.Headers>;
37
+ // @ts-ignore
38
+ export type HeadersInit = SelectType<manual.HeadersInit, auto.HeadersInit>;
39
+
40
+ // @ts-ignore
41
+ export type BlobPropertyBag = SelectType<manual.BlobPropertyBag, auto.BlobPropertyBag>;
42
+ // @ts-ignore
43
+ export type FilePropertyBag = SelectType<manual.FilePropertyBag, auto.FilePropertyBag>;
44
+ // @ts-ignore
45
+ export type FileFromPathOptions = SelectType<manual.FileFromPathOptions, auto.FileFromPathOptions>;
46
+ // @ts-ignore
47
+ export type FormData = SelectType<manual.FormData, auto.FormData>;
48
+ // @ts-ignore
49
+ export const FormData: SelectType<typeof manual.FormData, typeof auto.FormData>;
50
+ // @ts-ignore
51
+ export type File = SelectType<manual.File, auto.File>;
52
+ // @ts-ignore
53
+ export const File: SelectType<typeof manual.File, typeof auto.File>;
54
+ // @ts-ignore
55
+ export type Blob = SelectType<manual.Blob, auto.Blob>;
56
+ // @ts-ignore
57
+ export const Blob: SelectType<typeof manual.Blob, typeof auto.Blob>;
58
+
59
+ // @ts-ignore
60
+ export type Readable = SelectType<manual.Readable, auto.Readable>;
61
+ // @ts-ignore
62
+ export type FsReadStream = SelectType<manual.FsReadStream, auto.FsReadStream>;
63
+ // @ts-ignore
64
+ export type ReadableStream = SelectType<manual.ReadableStream, auto.ReadableStream>;
65
+
66
+ export function getMultipartRequestOptions<T extends {} = Record<string, unknown>>(
67
+ form: FormData,
68
+ opts: RequestOptions<T>,
69
+ ): Promise<RequestOptions<T>>;
70
+
71
+ export function getDefaultAgent(url: string): any;
72
+
73
+ // @ts-ignore
74
+ export type FileFromPathOptions = SelectType<manual.FileFromPathOptions, auto.FileFromPathOptions>;
75
+
76
+ export function fileFromPath(path: string, options?: FileFromPathOptions): Promise<File>;
77
+ export function fileFromPath(path: string, filename?: string, options?: FileFromPathOptions): Promise<File>;
78
+
79
+ export function isFsReadStream(value: any): value is FsReadStream;