@tryfinch/finch-api 1.0.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 (266) hide show
  1. package/.eslintrc.js +10 -0
  2. package/.github/workflows/publish-npm.yml +28 -0
  3. package/.github/workflows/release-doctor.yml +20 -0
  4. package/.github/workflows/release.yml +38 -0
  5. package/.prettierrc +6 -0
  6. package/.release-please-manifest.json +3 -0
  7. package/.stats.yml +1 -0
  8. package/CHANGELOG.md +7 -0
  9. package/LICENSE +201 -0
  10. package/README.md +220 -0
  11. package/api.md +186 -0
  12. package/bin/check-release-environment +25 -0
  13. package/bin/check-test-server +50 -0
  14. package/bin/publish-npm +6 -0
  15. package/build +12 -0
  16. package/check-version.ts +18 -0
  17. package/core.ts +926 -0
  18. package/dist/cjs/check-version.d.ts +2 -0
  19. package/dist/cjs/check-version.d.ts.map +1 -0
  20. package/dist/cjs/check-version.js +23 -0
  21. package/dist/cjs/check-version.js.map +1 -0
  22. package/dist/cjs/core.d.ts +268 -0
  23. package/dist/cjs/core.d.ts.map +1 -0
  24. package/dist/cjs/core.js +994 -0
  25. package/dist/cjs/core.js.map +1 -0
  26. package/dist/cjs/fetch-polyfill.d.ts +6 -0
  27. package/dist/cjs/fetch-polyfill.d.ts.map +1 -0
  28. package/dist/cjs/fetch-polyfill.js +57 -0
  29. package/dist/cjs/fetch-polyfill.js.map +1 -0
  30. package/dist/cjs/index.d.ts +115 -0
  31. package/dist/cjs/index.d.ts.map +1 -0
  32. package/dist/cjs/index.js +198 -0
  33. package/dist/cjs/index.js.map +1 -0
  34. package/dist/cjs/pagination.d.ts +166 -0
  35. package/dist/cjs/pagination.d.ts.map +1 -0
  36. package/dist/cjs/pagination.js +215 -0
  37. package/dist/cjs/pagination.js.map +1 -0
  38. package/dist/cjs/resource.d.ts +12 -0
  39. package/dist/cjs/resource.d.ts.map +1 -0
  40. package/dist/cjs/resource.js +17 -0
  41. package/dist/cjs/resource.js.map +1 -0
  42. package/dist/cjs/resources/account.d.ts +49 -0
  43. package/dist/cjs/resources/account.d.ts.map +1 -0
  44. package/dist/cjs/resources/account.js +23 -0
  45. package/dist/cjs/resources/account.js.map +1 -0
  46. package/dist/cjs/resources/ats/applications.d.ts +31 -0
  47. package/dist/cjs/resources/ats/applications.d.ts.map +1 -0
  48. package/dist/cjs/resources/ats/applications.js +27 -0
  49. package/dist/cjs/resources/ats/applications.js.map +1 -0
  50. package/dist/cjs/resources/ats/ats.d.ts +14 -0
  51. package/dist/cjs/resources/ats/ats.d.ts.map +1 -0
  52. package/dist/cjs/resources/ats/ats.js +22 -0
  53. package/dist/cjs/resources/ats/ats.js.map +1 -0
  54. package/dist/cjs/resources/ats/candidates.d.ts +45 -0
  55. package/dist/cjs/resources/ats/candidates.d.ts.map +1 -0
  56. package/dist/cjs/resources/ats/candidates.js +24 -0
  57. package/dist/cjs/resources/ats/candidates.js.map +1 -0
  58. package/dist/cjs/resources/ats/index.d.ts +6 -0
  59. package/dist/cjs/resources/ats/index.d.ts.map +1 -0
  60. package/dist/cjs/resources/ats/index.js +12 -0
  61. package/dist/cjs/resources/ats/index.js.map +1 -0
  62. package/dist/cjs/resources/ats/jobs.d.ts +42 -0
  63. package/dist/cjs/resources/ats/jobs.d.ts.map +1 -0
  64. package/dist/cjs/resources/ats/jobs.js +23 -0
  65. package/dist/cjs/resources/ats/jobs.js.map +1 -0
  66. package/dist/cjs/resources/ats/offers.d.ts +34 -0
  67. package/dist/cjs/resources/ats/offers.d.ts.map +1 -0
  68. package/dist/cjs/resources/ats/offers.js +23 -0
  69. package/dist/cjs/resources/ats/offers.js.map +1 -0
  70. package/dist/cjs/resources/ats/stages.d.ts +23 -0
  71. package/dist/cjs/resources/ats/stages.d.ts.map +1 -0
  72. package/dist/cjs/resources/ats/stages.js +21 -0
  73. package/dist/cjs/resources/ats/stages.js.map +1 -0
  74. package/dist/cjs/resources/hris/benefits/benefits.d.ts +155 -0
  75. package/dist/cjs/resources/hris/benefits/benefits.d.ts.map +1 -0
  76. package/dist/cjs/resources/hris/benefits/benefits.js +57 -0
  77. package/dist/cjs/resources/hris/benefits/benefits.js.map +1 -0
  78. package/dist/cjs/resources/hris/benefits/index.d.ts +26 -0
  79. package/dist/cjs/resources/hris/benefits/index.d.ts.map +1 -0
  80. package/dist/cjs/resources/hris/benefits/index.js +42 -0
  81. package/dist/cjs/resources/hris/benefits/index.js.map +1 -0
  82. package/dist/cjs/resources/hris/benefits/individuals.d.ts +163 -0
  83. package/dist/cjs/resources/hris/benefits/individuals.d.ts.map +1 -0
  84. package/dist/cjs/resources/hris/benefits/individuals.js +68 -0
  85. package/dist/cjs/resources/hris/benefits/individuals.js.map +1 -0
  86. package/dist/cjs/resources/hris/company.d.ts +104 -0
  87. package/dist/cjs/resources/hris/company.d.ts.map +1 -0
  88. package/dist/cjs/resources/hris/company.js +15 -0
  89. package/dist/cjs/resources/hris/company.js.map +1 -0
  90. package/dist/cjs/resources/hris/directory.d.ts +65 -0
  91. package/dist/cjs/resources/hris/directory.d.ts.map +1 -0
  92. package/dist/cjs/resources/hris/directory.js +21 -0
  93. package/dist/cjs/resources/hris/directory.js.map +1 -0
  94. package/dist/cjs/resources/hris/hris.d.ts +95 -0
  95. package/dist/cjs/resources/hris/hris.d.ts.map +1 -0
  96. package/dist/cjs/resources/hris/hris.js +24 -0
  97. package/dist/cjs/resources/hris/hris.js.map +1 -0
  98. package/dist/cjs/resources/hris/index.d.ts +31 -0
  99. package/dist/cjs/resources/hris/index.d.ts.map +1 -0
  100. package/dist/cjs/resources/hris/index.js +44 -0
  101. package/dist/cjs/resources/hris/index.js.map +1 -0
  102. package/dist/cjs/resources/hris/individuals/employment-data.d.ts +151 -0
  103. package/dist/cjs/resources/hris/individuals/employment-data.d.ts.map +1 -0
  104. package/dist/cjs/resources/hris/individuals/employment-data.js +26 -0
  105. package/dist/cjs/resources/hris/individuals/employment-data.js.map +1 -0
  106. package/dist/cjs/resources/hris/individuals/index.d.ts +13 -0
  107. package/dist/cjs/resources/hris/individuals/index.d.ts.map +1 -0
  108. package/dist/cjs/resources/hris/individuals/index.js +28 -0
  109. package/dist/cjs/resources/hris/individuals/index.js.map +1 -0
  110. package/dist/cjs/resources/hris/individuals/individuals.d.ts +86 -0
  111. package/dist/cjs/resources/hris/individuals/individuals.d.ts.map +1 -0
  112. package/dist/cjs/resources/hris/individuals/individuals.js +28 -0
  113. package/dist/cjs/resources/hris/individuals/individuals.js.map +1 -0
  114. package/dist/cjs/resources/hris/pay-statements.d.ts +201 -0
  115. package/dist/cjs/resources/hris/pay-statements.d.ts.map +1 -0
  116. package/dist/cjs/resources/hris/pay-statements.js +25 -0
  117. package/dist/cjs/resources/hris/pay-statements.js.map +1 -0
  118. package/dist/cjs/resources/hris/payments.d.ts +54 -0
  119. package/dist/cjs/resources/hris/payments.d.ts.map +1 -0
  120. package/dist/cjs/resources/hris/payments.js +18 -0
  121. package/dist/cjs/resources/hris/payments.js.map +1 -0
  122. package/dist/cjs/resources/index.d.ts +5 -0
  123. package/dist/cjs/resources/index.d.ts.map +1 -0
  124. package/dist/cjs/resources/index.js +39 -0
  125. package/dist/cjs/resources/index.js.map +1 -0
  126. package/dist/cjs/resources/providers.d.ts +46 -0
  127. package/dist/cjs/resources/providers.d.ts.map +1 -0
  128. package/dist/cjs/resources/providers.js +18 -0
  129. package/dist/cjs/resources/providers.js.map +1 -0
  130. package/dist/cjs/resources/top-level.d.ts +2 -0
  131. package/dist/cjs/resources/top-level.d.ts.map +1 -0
  132. package/dist/cjs/resources/top-level.js +4 -0
  133. package/dist/cjs/resources/top-level.js.map +1 -0
  134. package/dist/cjs/tests/api-resources/account.test.d.ts +2 -0
  135. package/dist/cjs/tests/api-resources/account.test.d.ts.map +1 -0
  136. package/dist/cjs/tests/api-resources/account.test.js +66 -0
  137. package/dist/cjs/tests/api-resources/account.test.js.map +1 -0
  138. package/dist/cjs/tests/api-resources/ats/applications.test.d.ts +2 -0
  139. package/dist/cjs/tests/api-resources/ats/applications.test.d.ts.map +1 -0
  140. package/dist/cjs/tests/api-resources/ats/applications.test.js +73 -0
  141. package/dist/cjs/tests/api-resources/ats/applications.test.js.map +1 -0
  142. package/dist/cjs/tests/api-resources/ats/candidates.test.d.ts +2 -0
  143. package/dist/cjs/tests/api-resources/ats/candidates.test.d.ts.map +1 -0
  144. package/dist/cjs/tests/api-resources/ats/candidates.test.js +73 -0
  145. package/dist/cjs/tests/api-resources/ats/candidates.test.js.map +1 -0
  146. package/dist/cjs/tests/api-resources/ats/jobs.test.d.ts +2 -0
  147. package/dist/cjs/tests/api-resources/ats/jobs.test.d.ts.map +1 -0
  148. package/dist/cjs/tests/api-resources/ats/jobs.test.js +73 -0
  149. package/dist/cjs/tests/api-resources/ats/jobs.test.js.map +1 -0
  150. package/dist/cjs/tests/api-resources/ats/offers.test.d.ts +2 -0
  151. package/dist/cjs/tests/api-resources/ats/offers.test.d.ts.map +1 -0
  152. package/dist/cjs/tests/api-resources/ats/offers.test.js +73 -0
  153. package/dist/cjs/tests/api-resources/ats/offers.test.js.map +1 -0
  154. package/dist/cjs/tests/api-resources/ats/stages.test.d.ts +2 -0
  155. package/dist/cjs/tests/api-resources/ats/stages.test.d.ts.map +1 -0
  156. package/dist/cjs/tests/api-resources/ats/stages.test.js +55 -0
  157. package/dist/cjs/tests/api-resources/ats/stages.test.js.map +1 -0
  158. package/dist/cjs/tests/api-resources/hris/benefits/benefits.test.d.ts +2 -0
  159. package/dist/cjs/tests/api-resources/hris/benefits/benefits.test.d.ts.map +1 -0
  160. package/dist/cjs/tests/api-resources/hris/benefits/benefits.test.js +116 -0
  161. package/dist/cjs/tests/api-resources/hris/benefits/benefits.test.js.map +1 -0
  162. package/dist/cjs/tests/api-resources/hris/benefits/individuals.test.d.ts +2 -0
  163. package/dist/cjs/tests/api-resources/hris/benefits/individuals.test.d.ts.map +1 -0
  164. package/dist/cjs/tests/api-resources/hris/benefits/individuals.test.js +103 -0
  165. package/dist/cjs/tests/api-resources/hris/benefits/individuals.test.js.map +1 -0
  166. package/dist/cjs/tests/api-resources/hris/company.test.d.ts +2 -0
  167. package/dist/cjs/tests/api-resources/hris/company.test.d.ts.map +1 -0
  168. package/dist/cjs/tests/api-resources/hris/company.test.js +55 -0
  169. package/dist/cjs/tests/api-resources/hris/company.test.js.map +1 -0
  170. package/dist/cjs/tests/api-resources/hris/directory.test.d.ts +2 -0
  171. package/dist/cjs/tests/api-resources/hris/directory.test.d.ts.map +1 -0
  172. package/dist/cjs/tests/api-resources/hris/directory.test.js +62 -0
  173. package/dist/cjs/tests/api-resources/hris/directory.test.js.map +1 -0
  174. package/dist/cjs/tests/api-resources/hris/individuals/employment-data.test.d.ts +2 -0
  175. package/dist/cjs/tests/api-resources/hris/individuals/employment-data.test.d.ts.map +1 -0
  176. package/dist/cjs/tests/api-resources/hris/individuals/employment-data.test.js +56 -0
  177. package/dist/cjs/tests/api-resources/hris/individuals/employment-data.test.js.map +1 -0
  178. package/dist/cjs/tests/api-resources/hris/individuals/individuals.test.d.ts +2 -0
  179. package/dist/cjs/tests/api-resources/hris/individuals/individuals.test.d.ts.map +1 -0
  180. package/dist/cjs/tests/api-resources/hris/individuals/individuals.test.js +68 -0
  181. package/dist/cjs/tests/api-resources/hris/individuals/individuals.test.js.map +1 -0
  182. package/dist/cjs/tests/api-resources/hris/pay-statements.test.d.ts +2 -0
  183. package/dist/cjs/tests/api-resources/hris/pay-statements.test.d.ts.map +1 -0
  184. package/dist/cjs/tests/api-resources/hris/pay-statements.test.js +64 -0
  185. package/dist/cjs/tests/api-resources/hris/pay-statements.test.js.map +1 -0
  186. package/dist/cjs/tests/api-resources/hris/payments.test.d.ts +2 -0
  187. package/dist/cjs/tests/api-resources/hris/payments.test.d.ts.map +1 -0
  188. package/dist/cjs/tests/api-resources/hris/payments.test.js +52 -0
  189. package/dist/cjs/tests/api-resources/hris/payments.test.js.map +1 -0
  190. package/dist/cjs/tests/api-resources/providers.test.d.ts +2 -0
  191. package/dist/cjs/tests/api-resources/providers.test.d.ts.map +1 -0
  192. package/dist/cjs/tests/api-resources/providers.test.js +55 -0
  193. package/dist/cjs/tests/api-resources/providers.test.js.map +1 -0
  194. package/dist/cjs/tests/api-resources/top-level.test.d.ts +2 -0
  195. package/dist/cjs/tests/api-resources/top-level.test.d.ts.map +1 -0
  196. package/dist/cjs/tests/api-resources/top-level.test.js +52 -0
  197. package/dist/cjs/tests/api-resources/top-level.test.js.map +1 -0
  198. package/dist/cjs/tests/form.test.d.ts +2 -0
  199. package/dist/cjs/tests/form.test.d.ts.map +1 -0
  200. package/dist/cjs/tests/form.test.js +61 -0
  201. package/dist/cjs/tests/form.test.js.map +1 -0
  202. package/dist/cjs/tests/index.test.d.ts +2 -0
  203. package/dist/cjs/tests/index.test.d.ts.map +1 -0
  204. package/dist/cjs/tests/index.test.js +34 -0
  205. package/dist/cjs/tests/index.test.js.map +1 -0
  206. package/dist/cjs/tests/responses.test.d.ts +2 -0
  207. package/dist/cjs/tests/responses.test.d.ts.map +1 -0
  208. package/dist/cjs/tests/responses.test.js +60 -0
  209. package/dist/cjs/tests/responses.test.js.map +1 -0
  210. package/dist/cjs/version.d.ts +2 -0
  211. package/dist/cjs/version.d.ts.map +1 -0
  212. package/dist/cjs/version.js +5 -0
  213. package/dist/cjs/version.js.map +1 -0
  214. package/fetch-polyfill.ts +69 -0
  215. package/index.ts +212 -0
  216. package/jest.config.js +8 -0
  217. package/package.json +47 -0
  218. package/pagination.ts +401 -0
  219. package/release-please-config.json +12 -0
  220. package/resource.ts +24 -0
  221. package/resources/account.ts +63 -0
  222. package/resources/ats/applications.ts +55 -0
  223. package/resources/ats/ats.ts +16 -0
  224. package/resources/ats/candidates.ts +74 -0
  225. package/resources/ats/index.ts +7 -0
  226. package/resources/ats/jobs.ts +70 -0
  227. package/resources/ats/offers.ts +57 -0
  228. package/resources/ats/stages.ts +31 -0
  229. package/resources/hris/benefits/benefits.ts +214 -0
  230. package/resources/hris/benefits/index.ts +27 -0
  231. package/resources/hris/benefits/individuals.ts +234 -0
  232. package/resources/hris/company.ts +127 -0
  233. package/resources/hris/directory.ts +87 -0
  234. package/resources/hris/hris.ts +113 -0
  235. package/resources/hris/index.ts +32 -0
  236. package/resources/hris/individuals/employment-data.ts +188 -0
  237. package/resources/hris/individuals/index.ts +14 -0
  238. package/resources/hris/individuals/individuals.ts +128 -0
  239. package/resources/hris/pay-statements.ts +251 -0
  240. package/resources/hris/payments.ts +73 -0
  241. package/resources/index.ts +6 -0
  242. package/resources/providers.ts +59 -0
  243. package/resources/top-level.ts +3 -0
  244. package/tests/api-resources/account.test.ts +29 -0
  245. package/tests/api-resources/ats/applications.test.ts +36 -0
  246. package/tests/api-resources/ats/candidates.test.ts +36 -0
  247. package/tests/api-resources/ats/jobs.test.ts +36 -0
  248. package/tests/api-resources/ats/offers.test.ts +36 -0
  249. package/tests/api-resources/ats/stages.test.ts +18 -0
  250. package/tests/api-resources/hris/benefits/benefits.test.ts +79 -0
  251. package/tests/api-resources/hris/benefits/individuals.test.ts +66 -0
  252. package/tests/api-resources/hris/company.test.ts +18 -0
  253. package/tests/api-resources/hris/directory.test.ts +25 -0
  254. package/tests/api-resources/hris/individuals/employment-data.test.ts +19 -0
  255. package/tests/api-resources/hris/individuals/individuals.test.ts +31 -0
  256. package/tests/api-resources/hris/pay-statements.test.ts +27 -0
  257. package/tests/api-resources/hris/payments.test.ts +15 -0
  258. package/tests/api-resources/providers.test.ts +18 -0
  259. package/tests/api-resources/top-level.test.ts +15 -0
  260. package/tests/form.test.ts +27 -0
  261. package/tests/index.test.ts +34 -0
  262. package/tests/responses.test.ts +25 -0
  263. package/tsconfig.cjs.json +8 -0
  264. package/tsconfig.json +39 -0
  265. package/typings/digest-fetch/index.d.ts +33 -0
  266. package/version.ts +1 -0
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+ // File generated from our OpenAPI spec by Stainless.
3
+ var __awaiter =
4
+ (this && this.__awaiter) ||
5
+ function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) {
7
+ return value instanceof P ? value : (
8
+ new P(function (resolve) {
9
+ resolve(value);
10
+ })
11
+ );
12
+ }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) {
15
+ try {
16
+ step(generator.next(value));
17
+ } catch (e) {
18
+ reject(e);
19
+ }
20
+ }
21
+ function rejected(value) {
22
+ try {
23
+ step(generator['throw'](value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ }
28
+ function step(result) {
29
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault =
35
+ (this && this.__importDefault) ||
36
+ function (mod) {
37
+ return mod && mod.__esModule ? mod : { default: mod };
38
+ };
39
+ Object.defineProperty(exports, '__esModule', { value: true });
40
+ const index_1 = __importDefault(require('../../index'));
41
+ const finch = new index_1.default({ accessToken: 'something1234', baseURL: 'http://127.0.0.1:4010' });
42
+ describe('top level methods', () => {
43
+ test('getAccessToken', () =>
44
+ __awaiter(void 0, void 0, void 0, function* () {
45
+ // TODO
46
+ }));
47
+ test('getAuthUrl', () =>
48
+ __awaiter(void 0, void 0, void 0, function* () {
49
+ // TODO
50
+ }));
51
+ });
52
+ //# sourceMappingURL=top-level.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-level.test.js","sourceRoot":"","sources":["../../../../tests/api-resources/top-level.test.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;;;;;;;;;;;;AAErD,oDAA4B;AAE5B,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAE5F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,gBAAgB,EAAE,GAAS,EAAE;QAChC,OAAO;IACT,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,GAAS,EAAE;QAC5B,OAAO;IACT,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../../../tests/form.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+ var __awaiter =
3
+ (this && this.__awaiter) ||
4
+ function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) {
6
+ return value instanceof P ? value : (
7
+ new P(function (resolve) {
8
+ resolve(value);
9
+ })
10
+ );
11
+ }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) {
14
+ try {
15
+ step(generator.next(value));
16
+ } catch (e) {
17
+ reject(e);
18
+ }
19
+ }
20
+ function rejected(value) {
21
+ try {
22
+ step(generator['throw'](value));
23
+ } catch (e) {
24
+ reject(e);
25
+ }
26
+ }
27
+ function step(result) {
28
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
29
+ }
30
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
31
+ });
32
+ };
33
+ Object.defineProperty(exports, '__esModule', { value: true });
34
+ const core_1 = require('../core');
35
+ const formdata_node_1 = require('formdata-node');
36
+ const file_from_path_1 = require('formdata-node/file-from-path');
37
+ describe('form data validation', () => {
38
+ test('valid values do not error', () =>
39
+ __awaiter(void 0, void 0, void 0, function* () {
40
+ (0, core_1.multipartFormRequestOptions)({
41
+ body: {
42
+ foo: 'foo',
43
+ string: 1,
44
+ bool: true,
45
+ file: yield (0, file_from_path_1.fileFromPath)('README.md'),
46
+ blob: new formdata_node_1.Blob(['Some content'], { type: 'text/plain' }),
47
+ },
48
+ });
49
+ }));
50
+ test('null', () =>
51
+ __awaiter(void 0, void 0, void 0, function* () {
52
+ expect(() =>
53
+ (0, core_1.multipartFormRequestOptions)({
54
+ body: {
55
+ null: null,
56
+ },
57
+ }),
58
+ ).toThrow(TypeError);
59
+ }));
60
+ });
61
+ //# sourceMappingURL=form.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.test.js","sourceRoot":"","sources":["../../../tests/form.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAqD;AACrD,iDAAqC;AACrC,iEAA4D;AAE5D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,2BAA2B,EAAE,GAAS,EAAE;QAC3C,IAAA,kCAA2B,EAAC;YAC1B,IAAI,EAAE;gBACJ,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,MAAM,IAAA,6BAAY,EAAC,WAAW,CAAC;gBACrC,IAAI,EAAE,IAAI,oBAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aACzD;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,GAAS,EAAE;QACtB,MAAM,CAAC,GAAG,EAAE,CACV,IAAA,kCAA2B,EAAC;YAC1B,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI;aACX;SACF,CAAC,CACH,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../tests/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+ // File generated from our OpenAPI spec by Stainless.
3
+ var __importDefault =
4
+ (this && this.__importDefault) ||
5
+ function (mod) {
6
+ return mod && mod.__esModule ? mod : { default: mod };
7
+ };
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+ const index_1 = __importDefault(require('../index'));
10
+ describe('instantiate client', () => {
11
+ const env = process.env;
12
+ beforeEach(() => {
13
+ jest.resetModules();
14
+ process.env = Object.assign({}, env);
15
+ console.warn = jest.fn();
16
+ });
17
+ afterEach(() => {
18
+ process.env = env;
19
+ });
20
+ test('with accessToken argument', () => {
21
+ const client = new index_1.default({ accessToken: 'another access token' });
22
+ expect(client.accessToken).toBe('another access token');
23
+ });
24
+ test('with options argument', () => {
25
+ // accessToken
26
+ const client = new index_1.default({ accessToken: 'my access token' });
27
+ expect(client.accessToken).toBe('my access token');
28
+ });
29
+ test('with disabled authentication', () => {
30
+ const client = new index_1.default({ accessToken: null });
31
+ expect(client.accessToken).toBeNull();
32
+ });
33
+ });
34
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../tests/index.test.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;;;AAErD,qDAA6B;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,qBAAQ,GAAG,CAAE,CAAC;QAEzB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,eAAK,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,cAAc;QACd,MAAM,MAAM,GAAG,IAAI,eAAK,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,IAAI,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=responses.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.test.d.ts","sourceRoot":"","sources":["../../../tests/responses.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+ var __awaiter =
3
+ (this && this.__awaiter) ||
4
+ function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) {
6
+ return value instanceof P ? value : (
7
+ new P(function (resolve) {
8
+ resolve(value);
9
+ })
10
+ );
11
+ }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) {
14
+ try {
15
+ step(generator.next(value));
16
+ } catch (e) {
17
+ reject(e);
18
+ }
19
+ }
20
+ function rejected(value) {
21
+ try {
22
+ step(generator['throw'](value));
23
+ } catch (e) {
24
+ reject(e);
25
+ }
26
+ }
27
+ function step(result) {
28
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
29
+ }
30
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
31
+ });
32
+ };
33
+ Object.defineProperty(exports, '__esModule', { value: true });
34
+ const core_1 = require('../core');
35
+ const node_fetch_1 = require('node-fetch');
36
+ describe('response parsing', () => {
37
+ // TODO: test unicode characters
38
+ test('headers are case agnostic', () =>
39
+ __awaiter(void 0, void 0, void 0, function* () {
40
+ const headers = (0, core_1.createResponseHeaders)(
41
+ new node_fetch_1.Headers({ 'Content-Type': 'foo', Accept: 'text/plain' }),
42
+ );
43
+ expect(headers['content-type']).toEqual('foo');
44
+ expect(headers['Content-type']).toEqual('foo');
45
+ expect(headers['Content-Type']).toEqual('foo');
46
+ expect(headers['accept']).toEqual('text/plain');
47
+ expect(headers['Accept']).toEqual('text/plain');
48
+ expect(headers['Hello-World']).toBeUndefined();
49
+ }));
50
+ test('duplicate headers are concatenated', () => {
51
+ const headers = (0, core_1.createResponseHeaders)(
52
+ new node_fetch_1.Headers([
53
+ ['Content-Type', 'text/xml'],
54
+ ['Content-Type', 'application/json'],
55
+ ]),
56
+ );
57
+ expect(headers['content-type']).toBe('text/xml, application/json');
58
+ });
59
+ });
60
+ //# sourceMappingURL=responses.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.test.js","sourceRoot":"","sources":["../../../tests/responses.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAA+C;AAC/C,2CAAqC;AAErC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,gCAAgC;IAChC,IAAI,CAAC,2BAA2B,EAAE,GAAS,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAA,4BAAqB,EAAC,IAAI,oBAAO,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACjD,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAA,4BAAqB,EACnC,IAAI,oBAAO,CAAC;YACV,CAAC,cAAc,EAAE,UAAU,CAAC;YAC5B,CAAC,cAAc,EAAE,kBAAkB,CAAC;SACrC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = '1.0.0';
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.VERSION = void 0;
4
+ exports.VERSION = '1.0.0'; // x-release-please-version
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC,CAAC,2BAA2B"}
@@ -0,0 +1,69 @@
1
+ import type NodeFetch from 'node-fetch';
2
+ import type { RequestInfo, RequestInit, Response } from 'node-fetch';
3
+ import type KeepAliveAgent from 'agentkeepalive';
4
+ import type { Agent } from 'http';
5
+ import { AbortController as AbortControllerPolyfill } from 'abort-controller';
6
+
7
+ declare const Deno: any;
8
+ // For now, we just pretend that Fetch is the same type as NodeFetch.
9
+ declare const fetch: Fetch | undefined;
10
+
11
+ let nodeFetch: typeof NodeFetch | undefined = undefined;
12
+ let nodeFetchImportError: unknown;
13
+ let defaultHttpAgent: Agent;
14
+ let defaultHttpsAgent: Agent;
15
+
16
+ // In a Node environment, we prefer `node-fetch` to other fetch implementations
17
+ // which may be present, because it allows keepAlive and others don't.
18
+ // Alternative, "Web Standards"-based environments typically provide fetch implementations
19
+ // which provide good performance for this by default, and may not support node-fetch.
20
+ const isProbablyNode = typeof process !== 'undefined' && typeof Deno === 'undefined';
21
+ if (isProbablyNode) {
22
+ try {
23
+ /* eslint-disable @typescript-eslint/no-var-requires */
24
+ nodeFetch = require('node-fetch').default;
25
+ const KeepAliveHttpAgent: typeof KeepAliveAgent = require('agentkeepalive');
26
+ /* eslint-enable @typescript-eslint/no-var-requires */
27
+
28
+ defaultHttpAgent = new KeepAliveHttpAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });
29
+ defaultHttpsAgent = new KeepAliveHttpAgent.HttpsAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });
30
+ } catch (e) {
31
+ // We can fall back to a built-in "fetch".
32
+ nodeFetchImportError = e;
33
+ }
34
+ }
35
+
36
+ // Polyfill global object if needed.
37
+ if (typeof AbortController === 'undefined') {
38
+ AbortController = AbortControllerPolyfill as typeof AbortController;
39
+ }
40
+
41
+ export type Fetch = (url: RequestInfo, init?: RequestInit) => Promise<Response>;
42
+
43
+ export const getFetch = (): Fetch => {
44
+ if (isProbablyNode && nodeFetch) {
45
+ return nodeFetch;
46
+ }
47
+
48
+ // For other environments, use a global fetch function expected to already be present
49
+ if (typeof fetch === 'undefined' || typeof fetch !== 'function') {
50
+ if (isProbablyNode) {
51
+ throw new Error(
52
+ `Could not import "node-fetch", and no global "fetch" function is defined.`,
53
+ // @ts-expect-error This is only Node 16.9.0+, but isn't harmful in other contexts.
54
+ { cause: nodeFetchImportError },
55
+ );
56
+ }
57
+ throw new Error(
58
+ `Unexpected: running in a non-Node environment without a global "fetch" function defined.`,
59
+ );
60
+ }
61
+
62
+ return fetch;
63
+ };
64
+
65
+ export const getDefaultAgent = (url: string): Agent | undefined => {
66
+ if (defaultHttpsAgent && url.startsWith('https')) return defaultHttpsAgent;
67
+ if (defaultHttpAgent) return defaultHttpAgent;
68
+ return undefined;
69
+ };
package/index.ts ADDED
@@ -0,0 +1,212 @@
1
+ // File generated from our OpenAPI spec by Stainless.
2
+
3
+ import qs from 'qs';
4
+ import * as Core from './core';
5
+ import * as Pagination from './pagination';
6
+ import * as API from './resources';
7
+ import type { Agent } from 'http';
8
+ import * as FileFromPath from 'formdata-node/file-from-path';
9
+
10
+ type Config = {
11
+ /**
12
+ * Set it to null if you want to send unauthenticated requests.
13
+ */
14
+ accessToken?: string | null;
15
+ baseURL?: string;
16
+ timeout?: number;
17
+ httpAgent?: Agent;
18
+ clientId?: string | null;
19
+ clientSecret?: string | null;
20
+ };
21
+
22
+ /** Instantiate the API Client. */
23
+ export class Finch extends Core.APIClient {
24
+ accessToken: string | null;
25
+ clientId?: string | null;
26
+ clientSecret?: string | null;
27
+
28
+ constructor(config?: Config) {
29
+ const options: Config = {
30
+ accessToken: null,
31
+ baseURL: 'https://api.tryfinch.com',
32
+ ...config,
33
+ };
34
+
35
+ super({
36
+ baseURL: options.baseURL!,
37
+ timeout: options.timeout,
38
+ httpAgent: options.httpAgent,
39
+ });
40
+ this.accessToken = options.accessToken || null;
41
+
42
+ this.clientId = config?.clientId || process.env['FINCH_CLIENT_ID'] || null;
43
+ this.clientSecret = config?.clientSecret || process.env['FINCH_CLIENT_SECRET'] || null;
44
+ }
45
+
46
+ ats: API.ATS = new API.ATS(this);
47
+ hris: API.HRIS = new API.HRIS(this);
48
+ providers: API.Providers = new API.Providers(this);
49
+ account: API.Account = new API.Account(this);
50
+
51
+ /**
52
+ * Returns an access token for the Finch API given an authorization code. An
53
+ * authorization code can be obtained by visiting the url returned by
54
+ * get_auth_url().
55
+ */
56
+ getAccessToken(code: string, { redirectUri }: { redirectUri: string }): Promise<string> {
57
+ if (!this.clientId) {
58
+ throw new Error('Expected the clientId to be set in order to call getAccessToken');
59
+ }
60
+ if (!this.clientSecret) {
61
+ throw new Error('Expected the clientSecret to be set in order to call getAccessToken');
62
+ }
63
+ return this.post<Record<string, any>, { access_token: string }>('/auth/token', {
64
+ body: {
65
+ client_id: this.clientId,
66
+ client_secret: this.clientSecret,
67
+ code: code,
68
+ redirect_uri: redirectUri,
69
+ },
70
+ headers: {
71
+ Authorization: null,
72
+ },
73
+ }).then((response) => response.access_token);
74
+ }
75
+ /**
76
+ * Returns the authorization url which can be visited in order to obtain an
77
+ * authorization code from Finch. The autorization code can then be exchanged for
78
+ * an access token for the Finch api by calling get_access_token().
79
+ */
80
+ getAuthURL({
81
+ products,
82
+ redirectUri,
83
+ sandbox,
84
+ }: {
85
+ products: string;
86
+ redirectUri: string;
87
+ sandbox: boolean;
88
+ }): string {
89
+ if (!this.clientId) {
90
+ throw new Error('Expected the clientId to be set in order to call getAuthUrl');
91
+ }
92
+ const url = new URL('/authorize', 'https://connect.tryfinch.com/authorize');
93
+ url.search = qs.stringify(
94
+ {
95
+ client_id: this.clientId,
96
+ products: products,
97
+ redirect_uri: redirectUri,
98
+ sandbox: sandbox,
99
+ },
100
+ this.qsOptions(),
101
+ );
102
+ return url.toString();
103
+ }
104
+
105
+ protected override defaultHeaders(): Core.Headers {
106
+ return {
107
+ ...super.defaultHeaders(),
108
+ 'Finch-API-Version': '2020-09-17',
109
+ };
110
+ }
111
+
112
+ protected override validateHeaders(headers: Core.Headers, customHeaders: Core.Headers) {
113
+ if (this.accessToken && headers['Authorization']) {
114
+ return;
115
+ }
116
+ if (customHeaders['Authorization'] === null) {
117
+ return;
118
+ }
119
+
120
+ throw new Error(
121
+ 'Could not resolve authentication method. Expected the accessToken to be set. Or for the "Authorization" headers to be explicitly omitted',
122
+ );
123
+ }
124
+
125
+ protected override authHeaders(): Core.Headers {
126
+ if (this.accessToken == null) {
127
+ return {};
128
+ }
129
+ return { Authorization: `Bearer ${this.accessToken}` };
130
+ }
131
+
132
+ protected override qsOptions(): qs.IStringifyOptions {
133
+ return { arrayFormat: 'comma' };
134
+ }
135
+
136
+ static APIError = Core.APIError;
137
+
138
+ static APIConnectionError = Core.APIConnectionError;
139
+ static APIConnectionTimeoutError = Core.APIConnectionTimeoutError;
140
+
141
+ static BadRequestError = Core.BadRequestError;
142
+ static AuthenticationError = Core.AuthenticationError;
143
+ static PermissionDeniedError = Core.PermissionDeniedError;
144
+ static NotFoundError = Core.NotFoundError;
145
+ static ConflictError = Core.ConflictError;
146
+ static UnprocessableEntityError = Core.UnprocessableEntityError;
147
+ static RateLimitError = Core.RateLimitError;
148
+ static InternalServerError = Core.InternalServerError;
149
+ }
150
+
151
+ export const {
152
+ APIError,
153
+
154
+ APIConnectionError,
155
+ APIConnectionTimeoutError,
156
+
157
+ BadRequestError,
158
+ AuthenticationError,
159
+ PermissionDeniedError,
160
+ NotFoundError,
161
+ ConflictError,
162
+ UnprocessableEntityError,
163
+ RateLimitError,
164
+ InternalServerError,
165
+ } = Finch;
166
+
167
+ export import fileFromPath = FileFromPath.fileFromPath;
168
+
169
+ export namespace Finch {
170
+ // Helper functions
171
+ export import fileFromPath = FileFromPath.fileFromPath;
172
+
173
+ export import SinglePage = Pagination.SinglePage;
174
+ export import SinglePageResponse = Pagination.SinglePageResponse;
175
+
176
+ export import ResponsesPage = Pagination.ResponsesPage;
177
+ export import ResponsesPageResponse = Pagination.ResponsesPageResponse;
178
+
179
+ export import IndividualsPage = Pagination.IndividualsPage;
180
+ export import IndividualsPageParams = Pagination.IndividualsPageParams;
181
+ export import IndividualsPageResponse = Pagination.IndividualsPageResponse;
182
+
183
+ export import CandidatesPage = Pagination.CandidatesPage;
184
+ export import CandidatesPageParams = Pagination.CandidatesPageParams;
185
+ export import CandidatesPageResponse = Pagination.CandidatesPageResponse;
186
+
187
+ export import ApplicationsPage = Pagination.ApplicationsPage;
188
+ export import ApplicationsPageParams = Pagination.ApplicationsPageParams;
189
+ export import ApplicationsPageResponse = Pagination.ApplicationsPageResponse;
190
+
191
+ export import JobsPage = Pagination.JobsPage;
192
+ export import JobsPageParams = Pagination.JobsPageParams;
193
+ export import JobsPageResponse = Pagination.JobsPageResponse;
194
+
195
+ export import OffersPage = Pagination.OffersPage;
196
+ export import OffersPageParams = Pagination.OffersPageParams;
197
+ export import OffersPageResponse = Pagination.OffersPageResponse;
198
+
199
+ export import Income = API.Income;
200
+ export import Location = API.Location;
201
+ export import Money = API.Money;
202
+ export import Paging = API.Paging;
203
+
204
+ export import Provider = API.Provider;
205
+ export import ProvidersSinglePage = API.ProvidersSinglePage;
206
+
207
+ export import DisconnectResponse = API.DisconnectResponse;
208
+ export import Introspection = API.Introspection;
209
+ }
210
+
211
+ exports = module.exports = Finch;
212
+ export default Finch;
package/jest.config.js ADDED
@@ -0,0 +1,8 @@
1
+ /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
+ module.exports = {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'node',
5
+ moduleNameMapper: {
6
+ '^~/(.*)$': '<rootDir>/$1',
7
+ },
8
+ };
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@tryfinch/finch-api",
3
+ "version": "1.0.0",
4
+ "description": "Client library for the Finch API",
5
+ "author": "Finch <founders@tryfinch.com>",
6
+ "types": "dist/cjs/index.d.ts",
7
+ "main": "dist/cjs/index.js",
8
+ "type": "commonjs",
9
+ "repository": "github:Finch-API/finch-api-node",
10
+ "license": "Apache-2.0",
11
+ "private": false,
12
+ "scripts": {
13
+ "test": "bin/check-test-server && yarn jest",
14
+ "build": "bash ./build",
15
+ "prepack": "yarn build",
16
+ "format": "prettier --write .",
17
+ "tsn": "ts-node -r tsconfig-paths/register",
18
+ "fix": "eslint --fix --ext ts,js ."
19
+ },
20
+ "dependencies": {
21
+ "@types/node": "^18.11.18",
22
+ "@types/node-fetch": "^2.6.1",
23
+ "@types/qs": "^6.9.7",
24
+ "abort-controller": "^3.0.0",
25
+ "agentkeepalive": "^4.2.1",
26
+ "digest-fetch": "^1.3.0",
27
+ "form-data-encoder": "1.7.2",
28
+ "formdata-node": "^4.3.2",
29
+ "node-fetch": "^2.6.7",
30
+ "qs": "^6.10.3"
31
+ },
32
+ "devDependencies": {
33
+ "@tryfinch/finch-api": "link:.",
34
+ "@types/jest": "^27.5.0",
35
+ "@typescript-eslint/eslint-plugin": "^5.33.0",
36
+ "@typescript-eslint/parser": "^5.33.0",
37
+ "eslint": "^8.22.0",
38
+ "eslint-plugin-unused-imports": "^2.0.0",
39
+ "jest": "^28.1.0",
40
+ "prettier": "rattrayalex/prettier#postfix-ternaries",
41
+ "ts-jest": "^28.0.2",
42
+ "ts-node": "^10.5.0",
43
+ "tsc-alias": "^1.6.9",
44
+ "tsconfig-paths": "^3.12.0",
45
+ "typescript": "^4.8.2"
46
+ }
47
+ }