@financeable/aggregation 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/.devcontainer/README.md +35 -0
  2. package/.devcontainer/devcontainer.json +45 -0
  3. package/FUNCTIONS.md +225 -0
  4. package/README.md +967 -0
  5. package/RUNTIMES.md +48 -0
  6. package/core.d.ts +10 -0
  7. package/core.d.ts.map +1 -0
  8. package/core.js +17 -0
  9. package/core.js.map +1 -0
  10. package/docs/sdks/applications/README.md +467 -0
  11. package/docs/sdks/financeable/README.md +5 -0
  12. package/financeable-typescript/.devcontainer/README.md +30 -0
  13. package/financeable-typescript/FUNCTIONS.md +205 -0
  14. package/financeable-typescript/README.md +895 -0
  15. package/financeable-typescript/RUNTIMES.md +22 -0
  16. package/financeable-typescript/docs/sdks/applications/README.md +427 -0
  17. package/financeable-typescript/docs/sdks/financeable/README.md +5 -0
  18. package/financeable-typescript/src/core.ts +13 -0
  19. package/financeable-typescript/src/funcs/applicationsCreate.ts +124 -0
  20. package/financeable-typescript/src/funcs/applicationsGet.ts +128 -0
  21. package/financeable-typescript/src/funcs/applicationsList.ts +126 -0
  22. package/financeable-typescript/src/hooks/hooks.ts +129 -0
  23. package/financeable-typescript/src/hooks/index.ts +6 -0
  24. package/financeable-typescript/src/hooks/types.ts +109 -0
  25. package/financeable-typescript/src/index.ts +7 -0
  26. package/financeable-typescript/src/lib/base64.ts +37 -0
  27. package/financeable-typescript/src/lib/config.ts +59 -0
  28. package/financeable-typescript/src/lib/dlv.ts +53 -0
  29. package/financeable-typescript/src/lib/encodings.ts +449 -0
  30. package/financeable-typescript/src/lib/env.ts +37 -0
  31. package/financeable-typescript/src/lib/files.ts +40 -0
  32. package/financeable-typescript/src/lib/http.ts +323 -0
  33. package/financeable-typescript/src/lib/is-plain-object.ts +43 -0
  34. package/financeable-typescript/src/lib/logger.ts +9 -0
  35. package/financeable-typescript/src/lib/matchers.ts +322 -0
  36. package/financeable-typescript/src/lib/primitives.ts +122 -0
  37. package/financeable-typescript/src/lib/retries.ts +219 -0
  38. package/financeable-typescript/src/lib/schemas.ts +86 -0
  39. package/financeable-typescript/src/lib/sdks.ts +392 -0
  40. package/financeable-typescript/src/lib/security.ts +227 -0
  41. package/financeable-typescript/src/lib/url.ts +33 -0
  42. package/financeable-typescript/src/models/components/addressattributes.ts +148 -0
  43. package/financeable-typescript/src/models/components/apierrorlinks.ts +65 -0
  44. package/financeable-typescript/src/models/components/applicationattributes.ts +128 -0
  45. package/financeable-typescript/src/models/components/applicationattributescreate.ts +90 -0
  46. package/financeable-typescript/src/models/components/applicationresourcebulksubmission.ts +1000 -0
  47. package/financeable-typescript/src/models/components/applicationstatus.ts +39 -0
  48. package/financeable-typescript/src/models/components/applicationtype.ts +33 -0
  49. package/financeable-typescript/src/models/components/assetattributes.ts +400 -0
  50. package/financeable-typescript/src/models/components/customerattributes.ts +171 -0
  51. package/financeable-typescript/src/models/components/customertitle.ts +35 -0
  52. package/financeable-typescript/src/models/components/errorsource.ts +79 -0
  53. package/financeable-typescript/src/models/components/forbiddenerror.ts +207 -0
  54. package/financeable-typescript/src/models/components/frequencytype.ts +40 -0
  55. package/financeable-typescript/src/models/components/index.ts +20 -0
  56. package/financeable-typescript/src/models/components/links.ts +72 -0
  57. package/financeable-typescript/src/models/components/loandetailsattributes.ts +187 -0
  58. package/financeable-typescript/src/models/components/repaymentstructure.ts +40 -0
  59. package/financeable-typescript/src/models/errors/apierror.ts +27 -0
  60. package/financeable-typescript/src/models/errors/createapplication.ts +76 -0
  61. package/financeable-typescript/src/models/errors/getapplication.ts +76 -0
  62. package/financeable-typescript/src/models/errors/getapplications.ts +76 -0
  63. package/financeable-typescript/src/models/errors/httpclienterrors.ts +62 -0
  64. package/financeable-typescript/src/models/errors/index.ts +10 -0
  65. package/financeable-typescript/src/models/errors/sdkvalidationerror.ts +97 -0
  66. package/financeable-typescript/src/models/operations/createapplication.ts +1649 -0
  67. package/financeable-typescript/src/models/operations/getapplication.ts +1829 -0
  68. package/financeable-typescript/src/models/operations/getapplications.ts +1790 -0
  69. package/financeable-typescript/src/models/operations/index.ts +7 -0
  70. package/financeable-typescript/src/sdk/applications.ts +55 -0
  71. package/financeable-typescript/src/sdk/index.ts +5 -0
  72. package/financeable-typescript/src/sdk/sdk.ts +13 -0
  73. package/financeable-typescript/src/types/blobs.ts +31 -0
  74. package/financeable-typescript/src/types/constdatetime.ts +15 -0
  75. package/financeable-typescript/src/types/enums.ts +16 -0
  76. package/financeable-typescript/src/types/fp.ts +50 -0
  77. package/financeable-typescript/src/types/index.ts +11 -0
  78. package/financeable-typescript/src/types/operations.ts +105 -0
  79. package/financeable-typescript/src/types/rfcdate.ts +54 -0
  80. package/financeable-typescript/src/types/streams.ts +21 -0
  81. package/funcs/applicationsCreate.d.ts +14 -0
  82. package/funcs/applicationsCreate.d.ts.map +1 -0
  83. package/funcs/applicationsCreate.js +105 -0
  84. package/funcs/applicationsCreate.js.map +1 -0
  85. package/funcs/applicationsGet.d.ts +13 -0
  86. package/funcs/applicationsGet.d.ts.map +1 -0
  87. package/funcs/applicationsGet.js +109 -0
  88. package/funcs/applicationsGet.js.map +1 -0
  89. package/funcs/applicationsList.d.ts +13 -0
  90. package/funcs/applicationsList.d.ts.map +1 -0
  91. package/funcs/applicationsList.js +107 -0
  92. package/funcs/applicationsList.js.map +1 -0
  93. package/hooks/hooks.d.ts +24 -0
  94. package/hooks/hooks.d.ts.map +1 -0
  95. package/hooks/hooks.js +84 -0
  96. package/hooks/hooks.js.map +1 -0
  97. package/hooks/index.d.ts +3 -0
  98. package/hooks/index.d.ts.map +1 -0
  99. package/hooks/index.js +22 -0
  100. package/hooks/index.js.map +1 -0
  101. package/hooks/types.d.ts +78 -0
  102. package/hooks/types.d.ts.map +1 -0
  103. package/hooks/types.js +6 -0
  104. package/hooks/types.js.map +1 -0
  105. package/index.d.ts +4 -0
  106. package/index.d.ts.map +1 -0
  107. package/index.js +46 -0
  108. package/index.js.map +1 -0
  109. package/jsr.json +27 -0
  110. package/lib/base64.d.ts +10 -0
  111. package/lib/base64.d.ts.map +1 -0
  112. package/lib/base64.js +71 -0
  113. package/lib/base64.js.map +1 -0
  114. package/lib/config.d.ts +33 -0
  115. package/lib/config.d.ts.map +1 -0
  116. package/lib/config.js +35 -0
  117. package/lib/config.js.map +1 -0
  118. package/lib/dlv.d.ts +14 -0
  119. package/lib/dlv.d.ts.map +1 -0
  120. package/lib/dlv.js +49 -0
  121. package/lib/dlv.js.map +1 -0
  122. package/lib/encodings.d.ts +52 -0
  123. package/lib/encodings.d.ts.map +1 -0
  124. package/lib/encodings.js +368 -0
  125. package/lib/encodings.js.map +1 -0
  126. package/lib/env.d.ts +14 -0
  127. package/lib/env.d.ts.map +1 -0
  128. package/lib/env.js +64 -0
  129. package/lib/env.js.map +1 -0
  130. package/lib/files.d.ts +8 -0
  131. package/lib/files.d.ts.map +1 -0
  132. package/lib/files.js +36 -0
  133. package/lib/files.js.map +1 -0
  134. package/lib/http.d.ts +67 -0
  135. package/lib/http.d.ts.map +1 -0
  136. package/lib/http.js +217 -0
  137. package/lib/http.js.map +1 -0
  138. package/lib/is-plain-object.d.ts +2 -0
  139. package/lib/is-plain-object.d.ts.map +1 -0
  140. package/lib/is-plain-object.js +41 -0
  141. package/lib/is-plain-object.js.map +1 -0
  142. package/lib/logger.d.ts +6 -0
  143. package/lib/logger.d.ts.map +1 -0
  144. package/lib/logger.js +6 -0
  145. package/lib/logger.js.map +1 -0
  146. package/lib/matchers.d.ts +64 -0
  147. package/lib/matchers.d.ts.map +1 -0
  148. package/lib/matchers.js +204 -0
  149. package/lib/matchers.js.map +1 -0
  150. package/lib/primitives.d.ts +23 -0
  151. package/lib/primitives.d.ts.map +1 -0
  152. package/lib/primitives.js +104 -0
  153. package/lib/primitives.js.map +1 -0
  154. package/lib/retries.d.ts +38 -0
  155. package/lib/retries.d.ts.map +1 -0
  156. package/lib/retries.js +153 -0
  157. package/lib/retries.js.map +1 -0
  158. package/lib/schemas.d.ts +19 -0
  159. package/lib/schemas.d.ts.map +1 -0
  160. package/lib/schemas.js +62 -0
  161. package/lib/schemas.js.map +1 -0
  162. package/lib/sdks.d.ts +60 -0
  163. package/lib/sdks.d.ts.map +1 -0
  164. package/lib/sdks.js +280 -0
  165. package/lib/sdks.js.map +1 -0
  166. package/lib/security.d.ts +79 -0
  167. package/lib/security.d.ts.map +1 -0
  168. package/lib/security.js +121 -0
  169. package/lib/security.js.map +1 -0
  170. package/lib/url.d.ts +5 -0
  171. package/lib/url.d.ts.map +1 -0
  172. package/lib/url.js +25 -0
  173. package/lib/url.js.map +1 -0
  174. package/models/components/addressattributes.d.ts +83 -0
  175. package/models/components/addressattributes.d.ts.map +1 -0
  176. package/models/components/addressattributes.js +117 -0
  177. package/models/components/addressattributes.js.map +1 -0
  178. package/models/components/apierrorlinks.d.ts +32 -0
  179. package/models/components/apierrorlinks.d.ts.map +1 -0
  180. package/models/components/apierrorlinks.js +69 -0
  181. package/models/components/apierrorlinks.js.map +1 -0
  182. package/models/components/applicationattributes.d.ts +69 -0
  183. package/models/components/applicationattributes.d.ts.map +1 -0
  184. package/models/components/applicationattributes.js +85 -0
  185. package/models/components/applicationattributes.js.map +1 -0
  186. package/models/components/applicationattributescreate.d.ts +43 -0
  187. package/models/components/applicationattributescreate.d.ts.map +1 -0
  188. package/models/components/applicationattributescreate.js +74 -0
  189. package/models/components/applicationattributescreate.js.map +1 -0
  190. package/models/components/applicationresourcebulksubmission.d.ts +456 -0
  191. package/models/components/applicationresourcebulksubmission.d.ts.map +1 -0
  192. package/models/components/applicationresourcebulksubmission.js +492 -0
  193. package/models/components/applicationresourcebulksubmission.js.map +1 -0
  194. package/models/components/applicationstatus.d.ts +46 -0
  195. package/models/components/applicationstatus.d.ts.map +1 -0
  196. package/models/components/applicationstatus.js +66 -0
  197. package/models/components/applicationstatus.js.map +1 -0
  198. package/models/components/applicationtype.d.ts +28 -0
  199. package/models/components/applicationtype.d.ts.map +1 -0
  200. package/models/components/applicationtype.js +60 -0
  201. package/models/components/applicationtype.js.map +1 -0
  202. package/models/components/assetattributes.d.ts +388 -0
  203. package/models/components/assetattributes.d.ts.map +1 -0
  204. package/models/components/assetattributes.js +244 -0
  205. package/models/components/assetattributes.js.map +1 -0
  206. package/models/components/customerattributes.d.ts +103 -0
  207. package/models/components/customerattributes.d.ts.map +1 -0
  208. package/models/components/customerattributes.js +120 -0
  209. package/models/components/customerattributes.js.map +1 -0
  210. package/models/components/customertitle.d.ts +34 -0
  211. package/models/components/customertitle.d.ts.map +1 -0
  212. package/models/components/customertitle.js +62 -0
  213. package/models/components/customertitle.js.map +1 -0
  214. package/models/components/errorsource.d.ts +42 -0
  215. package/models/components/errorsource.d.ts.map +1 -0
  216. package/models/components/errorsource.js +73 -0
  217. package/models/components/errorsource.js.map +1 -0
  218. package/models/components/forbiddenerror.d.ts +141 -0
  219. package/models/components/forbiddenerror.d.ts.map +1 -0
  220. package/models/components/forbiddenerror.js +158 -0
  221. package/models/components/forbiddenerror.js.map +1 -0
  222. package/models/components/frequencytype.d.ts +37 -0
  223. package/models/components/frequencytype.d.ts.map +1 -0
  224. package/models/components/frequencytype.js +64 -0
  225. package/models/components/frequencytype.js.map +1 -0
  226. package/models/components/index.d.ts +17 -0
  227. package/models/components/index.d.ts.map +1 -0
  228. package/models/components/index.js +36 -0
  229. package/models/components/index.js.map +1 -0
  230. package/models/components/links.d.ts +40 -0
  231. package/models/components/links.d.ts.map +1 -0
  232. package/models/components/links.js +72 -0
  233. package/models/components/links.js.map +1 -0
  234. package/models/components/loandetailsattributes.d.ts +112 -0
  235. package/models/components/loandetailsattributes.d.ts.map +1 -0
  236. package/models/components/loandetailsattributes.js +101 -0
  237. package/models/components/loandetailsattributes.js.map +1 -0
  238. package/models/components/repaymentstructure.d.ts +37 -0
  239. package/models/components/repaymentstructure.d.ts.map +1 -0
  240. package/models/components/repaymentstructure.js +64 -0
  241. package/models/components/repaymentstructure.js.map +1 -0
  242. package/models/errors/apierror.d.ts +8 -0
  243. package/models/errors/apierror.d.ts.map +1 -0
  244. package/models/errors/apierror.js +21 -0
  245. package/models/errors/apierror.js.map +1 -0
  246. package/models/errors/createapplication.d.ts +38 -0
  247. package/models/errors/createapplication.d.ts.map +1 -0
  248. package/models/errors/createapplication.js +81 -0
  249. package/models/errors/createapplication.js.map +1 -0
  250. package/models/errors/getapplication.d.ts +38 -0
  251. package/models/errors/getapplication.d.ts.map +1 -0
  252. package/models/errors/getapplication.js +81 -0
  253. package/models/errors/getapplication.js.map +1 -0
  254. package/models/errors/getapplications.d.ts +38 -0
  255. package/models/errors/getapplications.d.ts.map +1 -0
  256. package/models/errors/getapplications.js +81 -0
  257. package/models/errors/getapplications.js.map +1 -0
  258. package/models/errors/httpclienterrors.d.ts +44 -0
  259. package/models/errors/httpclienterrors.d.ts.map +1 -0
  260. package/models/errors/httpclienterrors.js +78 -0
  261. package/models/errors/httpclienterrors.js.map +1 -0
  262. package/models/errors/index.d.ts +7 -0
  263. package/models/errors/index.d.ts.map +1 -0
  264. package/models/errors/index.js +26 -0
  265. package/models/errors/index.js.map +1 -0
  266. package/models/errors/sdkvalidationerror.d.ts +20 -0
  267. package/models/errors/sdkvalidationerror.d.ts.map +1 -0
  268. package/models/errors/sdkvalidationerror.js +115 -0
  269. package/models/errors/sdkvalidationerror.js.map +1 -0
  270. package/models/operations/createapplication.d.ts +780 -0
  271. package/models/operations/createapplication.d.ts.map +1 -0
  272. package/models/operations/createapplication.js +834 -0
  273. package/models/operations/createapplication.js.map +1 -0
  274. package/models/operations/getapplication.d.ts +805 -0
  275. package/models/operations/getapplication.d.ts.map +1 -0
  276. package/models/operations/getapplication.js +861 -0
  277. package/models/operations/getapplication.js.map +1 -0
  278. package/models/operations/getapplications.d.ts +805 -0
  279. package/models/operations/getapplications.d.ts.map +1 -0
  280. package/models/operations/getapplications.js +864 -0
  281. package/models/operations/getapplications.js.map +1 -0
  282. package/models/operations/index.d.ts +4 -0
  283. package/models/operations/index.d.ts.map +1 -0
  284. package/models/operations/index.js +23 -0
  285. package/models/operations/index.js.map +1 -0
  286. package/package.json +30 -0
  287. package/sdk/applications.d.ts +18 -0
  288. package/sdk/applications.d.ts.map +1 -0
  289. package/sdk/applications.js +33 -0
  290. package/sdk/applications.js.map +1 -0
  291. package/sdk/index.d.ts +2 -0
  292. package/sdk/index.d.ts.map +1 -0
  293. package/sdk/index.js +21 -0
  294. package/sdk/index.js.map +1 -0
  295. package/sdk/sdk.d.ts +7 -0
  296. package/sdk/sdk.d.ts.map +1 -0
  297. package/sdk/sdk.js +15 -0
  298. package/sdk/sdk.js.map +1 -0
  299. package/src/core.ts +13 -0
  300. package/src/funcs/applicationsCreate.ts +128 -0
  301. package/src/funcs/applicationsGet.ts +132 -0
  302. package/src/funcs/applicationsList.ts +130 -0
  303. package/src/hooks/hooks.ts +129 -0
  304. package/src/hooks/index.ts +6 -0
  305. package/src/hooks/types.ts +110 -0
  306. package/src/index.ts +7 -0
  307. package/src/lib/base64.ts +37 -0
  308. package/src/lib/config.ts +59 -0
  309. package/src/lib/dlv.ts +53 -0
  310. package/src/lib/encodings.ts +483 -0
  311. package/src/lib/env.ts +37 -0
  312. package/src/lib/files.ts +40 -0
  313. package/src/lib/http.ts +323 -0
  314. package/src/lib/is-plain-object.ts +43 -0
  315. package/src/lib/logger.ts +9 -0
  316. package/src/lib/matchers.ts +322 -0
  317. package/src/lib/primitives.ts +136 -0
  318. package/src/lib/retries.ts +218 -0
  319. package/src/lib/schemas.ts +91 -0
  320. package/src/lib/sdks.ts +400 -0
  321. package/src/lib/security.ts +227 -0
  322. package/src/lib/url.ts +33 -0
  323. package/src/models/components/addressattributes.ts +148 -0
  324. package/src/models/components/apierrorlinks.ts +65 -0
  325. package/src/models/components/applicationattributes.ts +128 -0
  326. package/src/models/components/applicationattributescreate.ts +90 -0
  327. package/src/models/components/applicationresourcebulksubmission.ts +1000 -0
  328. package/src/models/components/applicationstatus.ts +39 -0
  329. package/src/models/components/applicationtype.ts +33 -0
  330. package/src/models/components/assetattributes.ts +400 -0
  331. package/src/models/components/customerattributes.ts +171 -0
  332. package/src/models/components/customertitle.ts +35 -0
  333. package/src/models/components/errorsource.ts +79 -0
  334. package/src/models/components/forbiddenerror.ts +207 -0
  335. package/src/models/components/frequencytype.ts +40 -0
  336. package/src/models/components/index.ts +20 -0
  337. package/src/models/components/links.ts +72 -0
  338. package/src/models/components/loandetailsattributes.ts +187 -0
  339. package/src/models/components/repaymentstructure.ts +40 -0
  340. package/src/models/errors/apierror.ts +27 -0
  341. package/src/models/errors/createapplication.ts +76 -0
  342. package/src/models/errors/getapplication.ts +76 -0
  343. package/src/models/errors/getapplications.ts +76 -0
  344. package/src/models/errors/httpclienterrors.ts +62 -0
  345. package/src/models/errors/index.ts +10 -0
  346. package/src/models/errors/sdkvalidationerror.ts +97 -0
  347. package/src/models/operations/createapplication.ts +1649 -0
  348. package/src/models/operations/getapplication.ts +1829 -0
  349. package/src/models/operations/getapplications.ts +1790 -0
  350. package/src/models/operations/index.ts +7 -0
  351. package/src/sdk/applications.ts +55 -0
  352. package/src/sdk/index.ts +5 -0
  353. package/src/sdk/sdk.ts +13 -0
  354. package/src/types/blobs.ts +31 -0
  355. package/src/types/constdatetime.ts +15 -0
  356. package/src/types/enums.ts +16 -0
  357. package/src/types/fp.ts +50 -0
  358. package/src/types/index.ts +11 -0
  359. package/src/types/operations.ts +105 -0
  360. package/src/types/rfcdate.ts +54 -0
  361. package/src/types/streams.ts +21 -0
  362. package/tsconfig.json +41 -0
  363. package/types/blobs.d.ts +4 -0
  364. package/types/blobs.d.ts.map +1 -0
  365. package/types/blobs.js +62 -0
  366. package/types/blobs.js.map +1 -0
  367. package/types/constdatetime.d.ts +3 -0
  368. package/types/constdatetime.d.ts.map +1 -0
  369. package/types/constdatetime.js +46 -0
  370. package/types/constdatetime.js.map +1 -0
  371. package/types/enums.d.ts +12 -0
  372. package/types/enums.d.ts.map +1 -0
  373. package/types/enums.js +10 -0
  374. package/types/enums.js.map +1 -0
  375. package/types/fp.d.ts +31 -0
  376. package/types/fp.d.ts.map +1 -0
  377. package/types/fp.js +37 -0
  378. package/types/fp.js.map +1 -0
  379. package/types/index.d.ts +8 -0
  380. package/types/index.d.ts.map +1 -0
  381. package/types/index.js +16 -0
  382. package/types/index.js.map +1 -0
  383. package/types/operations.d.ts +27 -0
  384. package/types/operations.d.ts.map +1 -0
  385. package/types/operations.js +83 -0
  386. package/types/operations.js.map +1 -0
  387. package/types/rfcdate.d.ts +21 -0
  388. package/types/rfcdate.d.ts.map +1 -0
  389. package/types/rfcdate.js +46 -0
  390. package/types/rfcdate.js.map +1 -0
  391. package/types/streams.d.ts +2 -0
  392. package/types/streams.d.ts.map +1 -0
  393. package/types/streams.js +18 -0
  394. package/types/streams.js.map +1 -0
@@ -0,0 +1,483 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { bytesToBase64 } from "./base64.js";
6
+ import { isPlainObject } from "./is-plain-object.js";
7
+
8
+ export class EncodingError extends Error {
9
+ constructor(message: string) {
10
+ super(message);
11
+ this.name = "EncodingError";
12
+ }
13
+ }
14
+
15
+ export function encodeMatrix(
16
+ key: string,
17
+ value: unknown,
18
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
19
+ ): string | undefined {
20
+ let out = "";
21
+ const pairs: [string, unknown][] = options?.explode
22
+ ? explode(key, value)
23
+ : [[key, value]];
24
+
25
+ if (pairs.every(([_, v]) => v == null)) {
26
+ return;
27
+ }
28
+
29
+ const encodeString = (v: string) => {
30
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
31
+ };
32
+ const encodeValue = (v: unknown) => encodeString(serializeValue(v));
33
+
34
+ pairs.forEach(([pk, pv]) => {
35
+ let tmp = "";
36
+ let encValue: string | null | undefined = null;
37
+
38
+ if (pv == null) {
39
+ return;
40
+ } else if (Array.isArray(pv)) {
41
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(",");
42
+ } else if (isPlainObject(pv)) {
43
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
44
+ return `,${encodeString(k)},${encodeValue(v)}`;
45
+ });
46
+ encValue = mapped?.join("").slice(1);
47
+ } else {
48
+ encValue = `${encodeValue(pv)}`;
49
+ }
50
+
51
+ if (encValue == null) {
52
+ return;
53
+ }
54
+
55
+ const keyPrefix = encodeString(pk);
56
+ tmp = `${keyPrefix}=${encValue}`;
57
+ // trim trailing '=' if value was empty
58
+ if (tmp === `${keyPrefix}=`) {
59
+ tmp = tmp.slice(0, -1);
60
+ }
61
+
62
+ // If we end up with the nothing then skip forward
63
+ if (!tmp) {
64
+ return;
65
+ }
66
+
67
+ out += `;${tmp}`;
68
+ });
69
+
70
+ return out;
71
+ }
72
+
73
+ export function encodeLabel(
74
+ key: string,
75
+ value: unknown,
76
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
77
+ ): string | undefined {
78
+ let out = "";
79
+ const pairs: [string, unknown][] = options?.explode
80
+ ? explode(key, value)
81
+ : [[key, value]];
82
+
83
+ if (pairs.every(([_, v]) => v == null)) {
84
+ return;
85
+ }
86
+
87
+ const encodeString = (v: string) => {
88
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
89
+ };
90
+ const encodeValue = (v: unknown) => encodeString(serializeValue(v));
91
+
92
+ pairs.forEach(([pk, pv]) => {
93
+ let encValue: string | null | undefined = "";
94
+
95
+ if (pv == null) {
96
+ return;
97
+ } else if (Array.isArray(pv)) {
98
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(".");
99
+ } else if (isPlainObject(pv)) {
100
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
101
+ return `.${encodeString(k)}.${encodeValue(v)}`;
102
+ });
103
+ encValue = mapped?.join("").slice(1);
104
+ } else {
105
+ const k =
106
+ options?.explode && isPlainObject(value) ? `${encodeString(pk)}=` : "";
107
+ encValue = `${k}${encodeValue(pv)}`;
108
+ }
109
+
110
+ out += encValue == null ? "" : `.${encValue}`;
111
+ });
112
+
113
+ return out;
114
+ }
115
+
116
+ type FormEncoder = (
117
+ key: string,
118
+ value: unknown,
119
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
120
+ ) => string | undefined;
121
+
122
+ function formEncoder(sep: string): FormEncoder {
123
+ return (
124
+ key: string,
125
+ value: unknown,
126
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
127
+ ) => {
128
+ let out = "";
129
+ const pairs: [string, unknown][] = options?.explode
130
+ ? explode(key, value)
131
+ : [[key, value]];
132
+
133
+ if (pairs.every(([_, v]) => v == null)) {
134
+ return;
135
+ }
136
+
137
+ const encodeString = (v: string) => {
138
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
139
+ };
140
+
141
+ const encodeValue = (v: unknown) => encodeString(serializeValue(v));
142
+
143
+ const encodedSep = encodeString(sep);
144
+
145
+ pairs.forEach(([pk, pv]) => {
146
+ let tmp = "";
147
+ let encValue: string | null | undefined = null;
148
+
149
+ if (pv == null) {
150
+ return;
151
+ } else if (Array.isArray(pv)) {
152
+ encValue = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(encodedSep);
153
+ } else if (isPlainObject(pv)) {
154
+ encValue = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
155
+ return `${encodeString(k)}${encodedSep}${encodeValue(v)}`;
156
+ })?.join(encodedSep);
157
+ } else {
158
+ encValue = `${encodeValue(pv)}`;
159
+ }
160
+
161
+ if (encValue == null) {
162
+ return;
163
+ }
164
+
165
+ tmp = `${encodeString(pk)}=${encValue}`;
166
+
167
+ // If we end up with the nothing then skip forward
168
+ if (!tmp || tmp === "=") {
169
+ return;
170
+ }
171
+
172
+ out += `&${tmp}`;
173
+ });
174
+
175
+ return out.slice(1);
176
+ };
177
+ }
178
+
179
+ export const encodeForm = formEncoder(",");
180
+ export const encodeSpaceDelimited = formEncoder(" ");
181
+ export const encodePipeDelimited = formEncoder("|");
182
+
183
+ export function encodeBodyForm(
184
+ key: string,
185
+ value: unknown,
186
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
187
+ ): string {
188
+ let out = "";
189
+ const pairs: [string, unknown][] = options?.explode
190
+ ? explode(key, value)
191
+ : [[key, value]];
192
+
193
+ const encodeString = (v: string) => {
194
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
195
+ };
196
+
197
+ const encodeValue = (v: unknown) => encodeString(serializeValue(v));
198
+
199
+ pairs.forEach(([pk, pv]) => {
200
+ let tmp = "";
201
+ let encValue = "";
202
+
203
+ if (pv == null) {
204
+ return;
205
+ } else if (Array.isArray(pv)) {
206
+ encValue = JSON.stringify(pv, jsonReplacer);
207
+ } else if (isPlainObject(pv)) {
208
+ encValue = JSON.stringify(pv, jsonReplacer);
209
+ } else {
210
+ encValue = `${encodeValue(pv)}`;
211
+ }
212
+
213
+ tmp = `${encodeString(pk)}=${encValue}`;
214
+
215
+ // If we end up with the nothing then skip forward
216
+ if (!tmp || tmp === "=") {
217
+ return;
218
+ }
219
+
220
+ out += `&${tmp}`;
221
+ });
222
+
223
+ return out.slice(1);
224
+ }
225
+
226
+ export function encodeDeepObject(
227
+ key: string,
228
+ value: unknown,
229
+ options?: { charEncoding?: "percent" | "none" },
230
+ ): string | undefined {
231
+ if (value == null) {
232
+ return;
233
+ }
234
+
235
+ if (!isPlainObject(value)) {
236
+ throw new EncodingError(
237
+ `Value of parameter '${key}' which uses deepObject encoding must be an object or null`,
238
+ );
239
+ }
240
+
241
+ return encodeDeepObjectObject(key, value, options);
242
+ }
243
+
244
+ export function encodeDeepObjectObject(
245
+ key: string,
246
+ value: unknown,
247
+ options?: { charEncoding?: "percent" | "none" },
248
+ ): string | undefined {
249
+ if (value == null) {
250
+ return;
251
+ }
252
+
253
+ let out = "";
254
+
255
+ const encodeString = (v: string) => {
256
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
257
+ };
258
+
259
+ if (!isPlainObject(value)) {
260
+ throw new EncodingError(`Expected parameter '${key}' to be an object.`);
261
+ }
262
+
263
+ Object.entries(value).forEach(([ck, cv]) => {
264
+ if (cv == null) {
265
+ return;
266
+ }
267
+
268
+ const pk = `${key}[${ck}]`;
269
+
270
+ if (isPlainObject(cv)) {
271
+ const objOut = encodeDeepObjectObject(pk, cv, options);
272
+
273
+ out += objOut == null ? "" : `&${objOut}`;
274
+
275
+ return;
276
+ }
277
+
278
+ const pairs: unknown[] = Array.isArray(cv) ? cv : [cv];
279
+ const encoded = mapDefined(pairs, (v) => {
280
+ return `${encodeString(pk)}=${encodeString(serializeValue(v))}`;
281
+ })?.join("&");
282
+
283
+ out += encoded == null ? "" : `&${encoded}`;
284
+ });
285
+
286
+ return out.slice(1);
287
+ }
288
+
289
+ export function encodeJSON(
290
+ key: string,
291
+ value: unknown,
292
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
293
+ ): string | undefined {
294
+ if (typeof value === "undefined") {
295
+ return;
296
+ }
297
+
298
+ const encodeString = (v: string) => {
299
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
300
+ };
301
+
302
+ const encVal = encodeString(JSON.stringify(value, jsonReplacer));
303
+
304
+ return options?.explode ? encVal : `${encodeString(key)}=${encVal}`;
305
+ }
306
+
307
+ export const encodeSimple = (
308
+ key: string,
309
+ value: unknown,
310
+ options?: { explode?: boolean; charEncoding?: "percent" | "none" },
311
+ ): string | undefined => {
312
+ let out = "";
313
+ const pairs: [string, unknown][] = options?.explode
314
+ ? explode(key, value)
315
+ : [[key, value]];
316
+
317
+ if (pairs.every(([_, v]) => v == null)) {
318
+ return;
319
+ }
320
+
321
+ const encodeString = (v: string) => {
322
+ return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
323
+ };
324
+ const encodeValue = (v: unknown) => encodeString(serializeValue(v));
325
+
326
+ pairs.forEach(([pk, pv]) => {
327
+ let tmp: string | null | undefined = "";
328
+
329
+ if (pv == null) {
330
+ return;
331
+ } else if (Array.isArray(pv)) {
332
+ tmp = mapDefined(pv, (v) => `${encodeValue(v)}`)?.join(",");
333
+ } else if (isPlainObject(pv)) {
334
+ const mapped = mapDefinedEntries(Object.entries(pv), ([k, v]) => {
335
+ return `,${encodeString(k)},${encodeValue(v)}`;
336
+ });
337
+ tmp = mapped?.join("").slice(1);
338
+ } else {
339
+ const k = options?.explode && isPlainObject(value) ? `${pk}=` : "";
340
+ tmp = `${k}${encodeValue(pv)}`;
341
+ }
342
+
343
+ out += tmp ? `,${tmp}` : "";
344
+ });
345
+
346
+ return out.slice(1);
347
+ };
348
+
349
+ function explode(key: string, value: unknown): [string, unknown][] {
350
+ if (Array.isArray(value)) {
351
+ return value.map((v) => [key, v]);
352
+ } else if (isPlainObject(value)) {
353
+ const o = value ?? {};
354
+ return Object.entries(o).map(([k, v]) => [k, v]);
355
+ } else {
356
+ return [[key, value]];
357
+ }
358
+ }
359
+
360
+ function serializeValue(value: unknown): string {
361
+ if (value == null) {
362
+ return "";
363
+ } else if (value instanceof Date) {
364
+ return value.toISOString();
365
+ } else if (value instanceof Uint8Array) {
366
+ return bytesToBase64(value);
367
+ } else if (typeof value === "object") {
368
+ return JSON.stringify(value, jsonReplacer);
369
+ }
370
+
371
+ return `${value}`;
372
+ }
373
+
374
+ function jsonReplacer(_: string, value: unknown): unknown {
375
+ if (value instanceof Uint8Array) {
376
+ return bytesToBase64(value);
377
+ } else {
378
+ return value;
379
+ }
380
+ }
381
+
382
+ function mapDefined<T, R>(inp: T[], mapper: (v: T) => R): R[] | null {
383
+ const res = inp.reduce<R[]>((acc, v) => {
384
+ if (v == null) {
385
+ return acc;
386
+ }
387
+
388
+ const m = mapper(v);
389
+ if (m == null) {
390
+ return acc;
391
+ }
392
+
393
+ acc.push(m);
394
+
395
+ return acc;
396
+ }, []);
397
+
398
+ return res.length ? res : null;
399
+ }
400
+
401
+ function mapDefinedEntries<K, V, R>(
402
+ inp: Iterable<[K, V]>,
403
+ mapper: (v: [K, V]) => R,
404
+ ): R[] | null {
405
+ const acc: R[] = [];
406
+ for (const [k, v] of inp) {
407
+ if (v == null) {
408
+ continue;
409
+ }
410
+
411
+ const m = mapper([k, v]);
412
+ if (m == null) {
413
+ continue;
414
+ }
415
+
416
+ acc.push(m);
417
+ }
418
+
419
+ return acc.length ? acc : null;
420
+ }
421
+
422
+ export function queryJoin(...args: (string | undefined)[]): string {
423
+ return args.filter(Boolean).join("&");
424
+ }
425
+
426
+ type QueryEncoderOptions = {
427
+ explode?: boolean;
428
+ charEncoding?: "percent" | "none";
429
+ };
430
+
431
+ type QueryEncoder = (
432
+ key: string,
433
+ value: unknown,
434
+ options?: QueryEncoderOptions,
435
+ ) => string | undefined;
436
+
437
+ type BulkQueryEncoder = (
438
+ values: Record<string, unknown>,
439
+ options?: QueryEncoderOptions,
440
+ ) => string;
441
+
442
+ export function queryEncoder(f: QueryEncoder): BulkQueryEncoder {
443
+ const bulkEncode = function (
444
+ values: Record<string, unknown>,
445
+ options?: QueryEncoderOptions,
446
+ ): string {
447
+ const opts: QueryEncoderOptions = {
448
+ ...options,
449
+ explode: options?.explode ?? true,
450
+ charEncoding: options?.charEncoding ?? "percent",
451
+ };
452
+
453
+ const encoded = Object.entries(values).map(([key, value]) => {
454
+ return f(key, value, opts);
455
+ });
456
+ return queryJoin(...encoded);
457
+ };
458
+
459
+ return bulkEncode;
460
+ }
461
+
462
+ export const encodeJSONQuery = queryEncoder(encodeJSON);
463
+ export const encodeFormQuery = queryEncoder(encodeForm);
464
+ export const encodeSpaceDelimitedQuery = queryEncoder(encodeSpaceDelimited);
465
+ export const encodePipeDelimitedQuery = queryEncoder(encodePipeDelimited);
466
+ export const encodeDeepObjectQuery = queryEncoder(encodeDeepObject);
467
+
468
+ export function appendForm(
469
+ fd: FormData,
470
+ key: string,
471
+ value: unknown,
472
+ fileName?: string,
473
+ ): void {
474
+ if (value == null) {
475
+ return;
476
+ } else if (value instanceof Blob && fileName) {
477
+ fd.append(key, value, fileName);
478
+ } else if (value instanceof Blob) {
479
+ fd.append(key, value);
480
+ } else {
481
+ fd.append(key, String(value));
482
+ }
483
+ }
package/src/lib/env.ts ADDED
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { dlv } from "./dlv.js";
6
+
7
+ import * as z from "zod";
8
+
9
+ export interface Env {
10
+ FINANCEABLE_DEBUG?: boolean | undefined;
11
+ }
12
+
13
+ export const envSchema: z.ZodType<Env, z.ZodTypeDef, unknown> = z.object({
14
+ FINANCEABLE_DEBUG: z.coerce.boolean().optional(),
15
+ });
16
+
17
+ let envMemo: Env | undefined = undefined;
18
+ /**
19
+ * Reads and validates environment variables.
20
+ */
21
+ export function env(): Env {
22
+ if (envMemo) {
23
+ return envMemo;
24
+ }
25
+
26
+ envMemo = envSchema.parse(
27
+ dlv(globalThis, "process.env") ?? dlv(globalThis, "Deno.env") ?? {},
28
+ );
29
+ return envMemo;
30
+ }
31
+
32
+ /**
33
+ * Clears the cached env object. Useful for testing with a fresh environment.
34
+ */
35
+ export function resetEnv() {
36
+ envMemo = undefined;
37
+ }
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ /**
6
+ * Consumes a stream and returns a concatenated array buffer. Useful in
7
+ * situations where we need to read the whole file because it forms part of a
8
+ * larger payload containing other fields, and we can't modify the underlying
9
+ * request structure.
10
+ */
11
+ export async function readableStreamToArrayBuffer(
12
+ readable: ReadableStream<Uint8Array>,
13
+ ): Promise<ArrayBuffer> {
14
+ const reader = readable.getReader();
15
+ const chunks: Uint8Array[] = [];
16
+
17
+ let totalLength = 0;
18
+ let done = false;
19
+
20
+ while (!done) {
21
+ const { value, done: doneReading } = await reader.read();
22
+
23
+ if (doneReading) {
24
+ done = true;
25
+ } else {
26
+ chunks.push(value);
27
+ totalLength += value.length;
28
+ }
29
+ }
30
+
31
+ const concatenatedChunks = new Uint8Array(totalLength);
32
+ let offset = 0;
33
+
34
+ for (const chunk of chunks) {
35
+ concatenatedChunks.set(chunk, offset);
36
+ offset += chunk.length;
37
+ }
38
+
39
+ return concatenatedChunks.buffer;
40
+ }