@ripwords/myinvois-client 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/bun.lock +89 -132
  2. package/dist/0X-C4IRh_fJ.d.ts +211 -0
  3. package/dist/0X-C4IRh_fJ.d.ts.map +1 -0
  4. package/dist/0X-Yw7mZEro.d.cts +211 -0
  5. package/dist/0X-Yw7mZEro.d.cts.map +1 -0
  6. package/dist/1X-Brnls9Jh.d.ts +112 -0
  7. package/dist/1X-Brnls9Jh.d.ts.map +1 -0
  8. package/dist/1X-BwpSoT3o.d.cts +20 -0
  9. package/dist/1X-BwpSoT3o.d.cts.map +1 -0
  10. package/dist/1X-C-_KHV-Q.d.ts +20 -0
  11. package/dist/1X-C-_KHV-Q.d.ts.map +1 -0
  12. package/dist/1X-D_aUVsuM.d.cts +112 -0
  13. package/dist/1X-D_aUVsuM.d.cts.map +1 -0
  14. package/dist/2X-Bb6elyzV.d.cts +40 -0
  15. package/dist/2X-Bb6elyzV.d.cts.map +1 -0
  16. package/dist/2X-DkS1BoE5.d.ts +40 -0
  17. package/dist/2X-DkS1BoE5.d.ts.map +1 -0
  18. package/dist/2X-UdQcQW24.d.ts +140 -0
  19. package/dist/2X-UdQcQW24.d.ts.map +1 -0
  20. package/dist/2X-hClUyw26.d.cts +140 -0
  21. package/dist/2X-hClUyw26.d.cts.map +1 -0
  22. package/dist/3X-C7VFD-n-.d.cts +21 -0
  23. package/dist/3X-C7VFD-n-.d.cts.map +1 -0
  24. package/dist/3X-CLMESDvz.d.cts +62 -0
  25. package/dist/3X-CLMESDvz.d.cts.map +1 -0
  26. package/dist/3X-DFI-4RQQ.d.ts +21 -0
  27. package/dist/3X-DFI-4RQQ.d.ts.map +1 -0
  28. package/dist/3X-DVDyspgb.d.ts +62 -0
  29. package/dist/3X-DVDyspgb.d.ts.map +1 -0
  30. package/dist/4X-CIJ2JJ2w.d.ts +31 -0
  31. package/dist/4X-CIJ2JJ2w.d.ts.map +1 -0
  32. package/dist/4X-CUR8jlaZ.d.ts +265 -0
  33. package/dist/4X-CUR8jlaZ.d.ts.map +1 -0
  34. package/dist/4X-CvScPJTf.d.cts +265 -0
  35. package/dist/4X-CvScPJTf.d.cts.map +1 -0
  36. package/dist/4X-DIfvpU6V.d.cts +31 -0
  37. package/dist/4X-DIfvpU6V.d.cts.map +1 -0
  38. package/dist/5X-BOUxhadJ.d.cts +22 -0
  39. package/dist/5X-BOUxhadJ.d.cts.map +1 -0
  40. package/dist/5X-C6db432h.d.ts +77 -0
  41. package/dist/5X-C6db432h.d.ts.map +1 -0
  42. package/dist/5X-COsZHUaQ.d.ts +22 -0
  43. package/dist/5X-COsZHUaQ.d.ts.map +1 -0
  44. package/dist/5X-CkLu7Vyd.d.cts +77 -0
  45. package/dist/5X-CkLu7Vyd.d.cts.map +1 -0
  46. package/dist/6X-C_fFIcJC.d.ts +105 -0
  47. package/dist/6X-C_fFIcJC.d.ts.map +1 -0
  48. package/dist/6X-ClZDKOTC.d.ts +16 -0
  49. package/dist/6X-ClZDKOTC.d.ts.map +1 -0
  50. package/dist/6X-DE7RJeV6.d.cts +16 -0
  51. package/dist/6X-DE7RJeV6.d.cts.map +1 -0
  52. package/dist/6X-Mf32k1d0.d.cts +105 -0
  53. package/dist/6X-Mf32k1d0.d.cts.map +1 -0
  54. package/dist/7X-BZyesooz.d.ts +16 -0
  55. package/dist/7X-BZyesooz.d.ts.map +1 -0
  56. package/dist/7X-Chtd6B66.d.cts +16 -0
  57. package/dist/7X-Chtd6B66.d.cts.map +1 -0
  58. package/dist/7X-DoCUcp-J.d.cts +71 -0
  59. package/dist/7X-DoCUcp-J.d.cts.map +1 -0
  60. package/dist/7X-kot_VccM.d.ts +71 -0
  61. package/dist/7X-kot_VccM.d.ts.map +1 -0
  62. package/dist/8X-Df4DOBOe.d.ts +110 -0
  63. package/dist/8X-Df4DOBOe.d.ts.map +1 -0
  64. package/dist/8X-DkuKAkHz.d.ts +19 -0
  65. package/dist/8X-DkuKAkHz.d.ts.map +1 -0
  66. package/dist/8X-DqZyMvyV.d.cts +19 -0
  67. package/dist/8X-DqZyMvyV.d.cts.map +1 -0
  68. package/dist/8X-Dr9RunRw.d.cts +110 -0
  69. package/dist/8X-Dr9RunRw.d.cts.map +1 -0
  70. package/dist/9X-BDgifncF.d.ts +15 -0
  71. package/dist/9X-BDgifncF.d.ts.map +1 -0
  72. package/dist/9X-BaoZtjWF.d.cts +98 -0
  73. package/dist/9X-BaoZtjWF.d.cts.map +1 -0
  74. package/dist/9X-BcAb6Uso.d.cts +15 -0
  75. package/dist/9X-BcAb6Uso.d.cts.map +1 -0
  76. package/dist/9X-BhBWlgxG.d.ts +98 -0
  77. package/dist/9X-BhBWlgxG.d.ts.map +1 -0
  78. package/dist/AX-BY72FohC.d.cts +111 -0
  79. package/dist/AX-BY72FohC.d.cts.map +1 -0
  80. package/dist/AX-D6XHWdrY.d.ts +111 -0
  81. package/dist/AX-D6XHWdrY.d.ts.map +1 -0
  82. package/dist/BX-CA0OmrUZ.d.cts +115 -0
  83. package/dist/BX-CA0OmrUZ.d.cts.map +1 -0
  84. package/dist/BX-D_0C8Qbd.d.ts +115 -0
  85. package/dist/BX-D_0C8Qbd.d.ts.map +1 -0
  86. package/dist/CX-HH4cSZRX.d.ts +128 -0
  87. package/dist/CX-HH4cSZRX.d.ts.map +1 -0
  88. package/dist/CX-glpQSL8x.d.cts +128 -0
  89. package/dist/CX-glpQSL8x.d.cts.map +1 -0
  90. package/dist/DX-DimL1MDM.d.cts +115 -0
  91. package/dist/DX-DimL1MDM.d.cts.map +1 -0
  92. package/dist/DX-Dx22ax_I.d.ts +115 -0
  93. package/dist/DX-Dx22ax_I.d.ts.map +1 -0
  94. package/dist/EX-BRWh1wFc.d.ts +107 -0
  95. package/dist/EX-BRWh1wFc.d.ts.map +1 -0
  96. package/dist/EX-Cx87Ruxl.d.cts +107 -0
  97. package/dist/EX-Cx87Ruxl.d.cts.map +1 -0
  98. package/dist/FX-D81UlxNN.d.cts +127 -0
  99. package/dist/FX-D81UlxNN.d.cts.map +1 -0
  100. package/dist/FX-RmjwAr40.d.ts +127 -0
  101. package/dist/FX-RmjwAr40.d.ts.map +1 -0
  102. package/dist/GX-9i7piP9G.d.cts +136 -0
  103. package/dist/GX-9i7piP9G.d.cts.map +1 -0
  104. package/dist/GX-CJyo7oDp.d.ts +136 -0
  105. package/dist/GX-CJyo7oDp.d.ts.map +1 -0
  106. package/dist/HX-20GVJAvl.d.cts +126 -0
  107. package/dist/HX-20GVJAvl.d.cts.map +1 -0
  108. package/dist/HX-XALBTdLA.d.ts +126 -0
  109. package/dist/HX-XALBTdLA.d.ts.map +1 -0
  110. package/dist/IX-6SZ55QKb.d.ts +23 -0
  111. package/dist/IX-6SZ55QKb.d.ts.map +1 -0
  112. package/dist/IX-D54NGPsc.d.cts +23 -0
  113. package/dist/IX-D54NGPsc.d.cts.map +1 -0
  114. package/dist/JX-C1RYcwQX.d.cts +104 -0
  115. package/dist/JX-C1RYcwQX.d.cts.map +1 -0
  116. package/dist/JX-hQ1XRmLp.d.ts +104 -0
  117. package/dist/JX-hQ1XRmLp.d.ts.map +1 -0
  118. package/dist/KX-BNwunEfn.d.ts +151 -0
  119. package/dist/KX-BNwunEfn.d.ts.map +1 -0
  120. package/dist/KX-gQHCIgtQ.d.cts +151 -0
  121. package/dist/KX-gQHCIgtQ.d.cts.map +1 -0
  122. package/dist/LX-CHYX3X3J.d.ts +123 -0
  123. package/dist/LX-CHYX3X3J.d.ts.map +1 -0
  124. package/dist/LX-CPurJGIh.d.cts +123 -0
  125. package/dist/LX-CPurJGIh.d.cts.map +1 -0
  126. package/dist/MX-BPGLWSUz.d.ts +153 -0
  127. package/dist/MX-BPGLWSUz.d.ts.map +1 -0
  128. package/dist/MX-BnyW5eHf.d.cts +153 -0
  129. package/dist/MX-BnyW5eHf.d.cts.map +1 -0
  130. package/dist/MyInvoisClient-BrNyMjS-.d.cts +178 -0
  131. package/dist/MyInvoisClient-BrNyMjS-.d.cts.map +1 -0
  132. package/dist/MyInvoisClient-CXu4pdl-.d.ts +178 -0
  133. package/dist/MyInvoisClient-CXu4pdl-.d.ts.map +1 -0
  134. package/dist/MyInvoisClient-Cnvb5iUC.js +299 -0
  135. package/dist/MyInvoisClient-Cnvb5iUC.js.map +1 -0
  136. package/dist/MyInvoisClient-DO1dJfQq.cjs +304 -0
  137. package/dist/MyInvoisClient-DO1dJfQq.cjs.map +1 -0
  138. package/dist/NX-B11fQuco.d.cts +122 -0
  139. package/dist/NX-B11fQuco.d.cts.map +1 -0
  140. package/dist/NX-RulN5Ml3.d.ts +122 -0
  141. package/dist/NX-RulN5Ml3.d.ts.map +1 -0
  142. package/dist/OX-DgKVSp7I.d.ts +26 -0
  143. package/dist/OX-DgKVSp7I.d.ts.map +1 -0
  144. package/dist/OX-T-ydRXQS.d.cts +26 -0
  145. package/dist/OX-T-ydRXQS.d.cts.map +1 -0
  146. package/dist/PX-DA4A2kEv.d.ts +121 -0
  147. package/dist/PX-DA4A2kEv.d.ts.map +1 -0
  148. package/dist/PX-p0n1SzvU.d.cts +121 -0
  149. package/dist/PX-p0n1SzvU.d.cts.map +1 -0
  150. package/dist/QX-CI1NccIB.d.cts +59 -0
  151. package/dist/QX-CI1NccIB.d.cts.map +1 -0
  152. package/dist/QX-DrFqsMEs.d.ts +59 -0
  153. package/dist/QX-DrFqsMEs.d.ts.map +1 -0
  154. package/dist/RX-Cm7vFcFN.d.ts +23 -0
  155. package/dist/RX-Cm7vFcFN.d.ts.map +1 -0
  156. package/dist/RX-DnNKol22.d.cts +23 -0
  157. package/dist/RX-DnNKol22.d.cts.map +1 -0
  158. package/dist/SX-BUjiWQYz.d.cts +40 -0
  159. package/dist/SX-BUjiWQYz.d.cts.map +1 -0
  160. package/dist/SX-CsPPTu-W.d.ts +40 -0
  161. package/dist/SX-CsPPTu-W.d.ts.map +1 -0
  162. package/dist/TX-DCY25MdR.d.ts +31 -0
  163. package/dist/TX-DCY25MdR.d.ts.map +1 -0
  164. package/dist/TX-DOEpsf05.d.cts +31 -0
  165. package/dist/TX-DOEpsf05.d.cts.map +1 -0
  166. package/dist/UX-DauyagHy.d.ts +18 -0
  167. package/dist/UX-DauyagHy.d.ts.map +1 -0
  168. package/dist/UX-DgUOnTFK.d.cts +18 -0
  169. package/dist/UX-DgUOnTFK.d.cts.map +1 -0
  170. package/dist/VX-DD4scgCe.d.ts +17 -0
  171. package/dist/VX-DD4scgCe.d.ts.map +1 -0
  172. package/dist/VX-kUX6LM-3.d.cts +17 -0
  173. package/dist/VX-kUX6LM-3.d.cts.map +1 -0
  174. package/dist/WX-CjkoppdY.d.ts +26 -0
  175. package/dist/WX-CjkoppdY.d.ts.map +1 -0
  176. package/dist/WX-DPfyPFFh.d.cts +26 -0
  177. package/dist/WX-DPfyPFFh.d.cts.map +1 -0
  178. package/dist/XX-C4C1gQZH.d.cts +828 -0
  179. package/dist/XX-C4C1gQZH.d.cts.map +1 -0
  180. package/dist/XX-sbsIUOnA.d.ts +828 -0
  181. package/dist/XX-sbsIUOnA.d.ts.map +1 -0
  182. package/dist/YX-BeT-LsiA.d.cts +20 -0
  183. package/dist/YX-BeT-LsiA.d.cts.map +1 -0
  184. package/dist/YX-DUdO8mRC.d.ts +20 -0
  185. package/dist/YX-DUdO8mRC.d.ts.map +1 -0
  186. package/dist/ZX-BuVTTq-D.d.cts +22 -0
  187. package/dist/ZX-BuVTTq-D.d.cts.map +1 -0
  188. package/dist/ZX-DwfcSA-D.d.ts +22 -0
  189. package/dist/ZX-DwfcSA-D.d.ts.map +1 -0
  190. package/dist/api/platform/platformLogin.d.ts +67 -0
  191. package/dist/api/platform/platformLogin.d.ts.map +1 -0
  192. package/dist/api/platform/platformLogin.js +3 -0
  193. package/dist/canonicalize-C_fNNpYr.cjs +80 -0
  194. package/dist/canonicalize-C_fNNpYr.cjs.map +1 -0
  195. package/dist/canonicalize-DNUrCGad.js +68 -0
  196. package/dist/canonicalize-DNUrCGad.js.map +1 -0
  197. package/dist/chunk-CUT6urMc.cjs +30 -0
  198. package/dist/classification-codes-B15PbWxz.d.cts +118 -0
  199. package/dist/classification-codes-B15PbWxz.d.cts.map +1 -0
  200. package/dist/classification-codes-C2X4xW5-.d.ts +118 -0
  201. package/dist/classification-codes-C2X4xW5-.d.ts.map +1 -0
  202. package/dist/country-code-DPeNFMMi.d.cts +543 -0
  203. package/dist/country-code-DPeNFMMi.d.cts.map +1 -0
  204. package/dist/country-code-DsI8Mbzx.d.ts +543 -0
  205. package/dist/country-code-DsI8Mbzx.d.ts.map +1 -0
  206. package/dist/currencies-DKuDflOO.d.ts +208 -0
  207. package/dist/currencies-DKuDflOO.d.ts.map +1 -0
  208. package/dist/currencies-S5g1gzBU.d.cts +208 -0
  209. package/dist/currencies-S5g1gzBU.d.cts.map +1 -0
  210. package/dist/e-invoice-BuwtFnlI.d.cts +44 -0
  211. package/dist/e-invoice-BuwtFnlI.d.cts.map +1 -0
  212. package/dist/e-invoice-C2TxhyrK.d.ts +44 -0
  213. package/dist/e-invoice-C2TxhyrK.d.ts.map +1 -0
  214. package/dist/getBaseUrl-CO7Jp27d.cjs +14 -0
  215. package/dist/getBaseUrl-CO7Jp27d.cjs.map +1 -0
  216. package/dist/getBaseUrl-Dx6RDC8I.js +8 -0
  217. package/dist/getBaseUrl-Dx6RDC8I.js.map +1 -0
  218. package/dist/hashCert-Bol7lIh2.js +62 -0
  219. package/dist/hashCert-Bol7lIh2.js.map +1 -0
  220. package/dist/hashCert-mlYEuYex.cjs +68 -0
  221. package/dist/hashCert-mlYEuYex.cjs.map +1 -0
  222. package/dist/hashSignedProperties-9vj5wlYR.js +83 -0
  223. package/dist/hashSignedProperties-9vj5wlYR.js.map +1 -0
  224. package/dist/hashSignedProperties-CU_ZqqmY.cjs +95 -0
  225. package/dist/hashSignedProperties-CU_ZqqmY.cjs.map +1 -0
  226. package/dist/index-B1DSs-wd.d.cts +16 -0
  227. package/dist/index-B1DSs-wd.d.cts.map +1 -0
  228. package/dist/index-CJNLQVjx.d.ts +1 -0
  229. package/dist/index-FTgB2nM6.d.ts +16 -0
  230. package/dist/index-FTgB2nM6.d.ts.map +1 -0
  231. package/dist/index-Wy1ONBjV.d.cts +1 -0
  232. package/dist/index.cjs +13 -97
  233. package/dist/index.d.ts +60 -5664
  234. package/dist/index.js +11 -93
  235. package/dist/index10.cjs +34 -0
  236. package/dist/index10.cjs.map +1 -0
  237. package/dist/index11.cjs +24 -0
  238. package/dist/index11.cjs.map +1 -0
  239. package/dist/index12.cjs +0 -0
  240. package/dist/index13.cjs +13 -0
  241. package/dist/index14.cjs +13 -0
  242. package/dist/index14.cjs.map +1 -0
  243. package/dist/index15.cjs +3 -0
  244. package/dist/index16.cjs +17 -0
  245. package/dist/index17.cjs +3 -0
  246. package/dist/index18.cjs +208 -0
  247. package/dist/index18.cjs.map +1 -0
  248. package/dist/index19.cjs +109 -0
  249. package/dist/index19.cjs.map +1 -0
  250. package/dist/index2.cjs +62 -0
  251. package/dist/index2.cjs.map +1 -0
  252. package/dist/index20.cjs +137 -0
  253. package/dist/index20.cjs.map +1 -0
  254. package/dist/index21.cjs +64 -0
  255. package/dist/index21.cjs.map +1 -0
  256. package/dist/index22.cjs +267 -0
  257. package/dist/index22.cjs.map +1 -0
  258. package/dist/index23.cjs +79 -0
  259. package/dist/index23.cjs.map +1 -0
  260. package/dist/index24.cjs +107 -0
  261. package/dist/index24.cjs.map +1 -0
  262. package/dist/index25.cjs +73 -0
  263. package/dist/index25.cjs.map +1 -0
  264. package/dist/index26.cjs +112 -0
  265. package/dist/index26.cjs.map +1 -0
  266. package/dist/index27.cjs +100 -0
  267. package/dist/index27.cjs.map +1 -0
  268. package/dist/index28.cjs +18 -0
  269. package/dist/index28.cjs.map +1 -0
  270. package/dist/index29.cjs +38 -0
  271. package/dist/index29.cjs.map +1 -0
  272. package/dist/index3.cjs +532 -0
  273. package/dist/index3.cjs.map +1 -0
  274. package/dist/index30.cjs +19 -0
  275. package/dist/index30.cjs.map +1 -0
  276. package/dist/index31.cjs +29 -0
  277. package/dist/index31.cjs.map +1 -0
  278. package/dist/index32.cjs +20 -0
  279. package/dist/index32.cjs.map +1 -0
  280. package/dist/index33.cjs +14 -0
  281. package/dist/index33.cjs.map +1 -0
  282. package/dist/index34.cjs +14 -0
  283. package/dist/index34.cjs.map +1 -0
  284. package/dist/index35.cjs +17 -0
  285. package/dist/index35.cjs.map +1 -0
  286. package/dist/index36.cjs +13 -0
  287. package/dist/index36.cjs.map +1 -0
  288. package/dist/index37.cjs +108 -0
  289. package/dist/index37.cjs.map +1 -0
  290. package/dist/index38.cjs +113 -0
  291. package/dist/index38.cjs.map +1 -0
  292. package/dist/index39.cjs +126 -0
  293. package/dist/index39.cjs.map +1 -0
  294. package/dist/index4.cjs +196 -0
  295. package/dist/index4.cjs.map +1 -0
  296. package/dist/index40.cjs +113 -0
  297. package/dist/index40.cjs.map +1 -0
  298. package/dist/index41.cjs +105 -0
  299. package/dist/index41.cjs.map +1 -0
  300. package/dist/index42.cjs +125 -0
  301. package/dist/index42.cjs.map +1 -0
  302. package/dist/index43.cjs +134 -0
  303. package/dist/index43.cjs.map +1 -0
  304. package/dist/index44.cjs +124 -0
  305. package/dist/index44.cjs.map +1 -0
  306. package/dist/index45.cjs +21 -0
  307. package/dist/index45.cjs.map +1 -0
  308. package/dist/index46.cjs +102 -0
  309. package/dist/index46.cjs.map +1 -0
  310. package/dist/index47.cjs +149 -0
  311. package/dist/index47.cjs.map +1 -0
  312. package/dist/index48.cjs +121 -0
  313. package/dist/index48.cjs.map +1 -0
  314. package/dist/index49.cjs +151 -0
  315. package/dist/index49.cjs.map +1 -0
  316. package/dist/index5.cjs +25 -0
  317. package/dist/index5.cjs.map +1 -0
  318. package/dist/index50.cjs +120 -0
  319. package/dist/index50.cjs.map +1 -0
  320. package/dist/index51.cjs +24 -0
  321. package/dist/index51.cjs.map +1 -0
  322. package/dist/index52.cjs +119 -0
  323. package/dist/index52.cjs.map +1 -0
  324. package/dist/index53.cjs +54 -0
  325. package/dist/index53.cjs.map +1 -0
  326. package/dist/index54.cjs +21 -0
  327. package/dist/index54.cjs.map +1 -0
  328. package/dist/index55.cjs +35 -0
  329. package/dist/index55.cjs.map +1 -0
  330. package/dist/index56.cjs +29 -0
  331. package/dist/index56.cjs.map +1 -0
  332. package/dist/index57.cjs +16 -0
  333. package/dist/index57.cjs.map +1 -0
  334. package/dist/index58.cjs +15 -0
  335. package/dist/index58.cjs.map +1 -0
  336. package/dist/index59.cjs +24 -0
  337. package/dist/index59.cjs.map +1 -0
  338. package/dist/index59.cts.map +1 -0
  339. package/dist/index6.cjs +0 -0
  340. package/dist/index60.cjs +419 -0
  341. package/dist/index60.cjs.map +1 -0
  342. package/dist/index61.cjs +15 -0
  343. package/dist/index61.cjs.map +1 -0
  344. package/dist/index62.cjs +16 -0
  345. package/dist/index62.cjs.map +1 -0
  346. package/dist/index62.cts.map +1 -0
  347. package/dist/index63.cjs +0 -0
  348. package/dist/index63.cts.map +1 -0
  349. package/dist/index64.cjs +0 -0
  350. package/dist/index64.cts.map +1 -0
  351. package/dist/index65.cjs +122 -0
  352. package/dist/index65.cjs.map +1 -0
  353. package/dist/index65.cts.map +1 -0
  354. package/dist/index66.cjs +229 -0
  355. package/dist/index66.cjs.map +1 -0
  356. package/dist/index66.cts.map +1 -0
  357. package/dist/index67.cjs +4 -0
  358. package/dist/index67.cts.map +1 -0
  359. package/dist/index68.cjs +3 -0
  360. package/dist/index68.cts.map +1 -0
  361. package/dist/index69.cjs +4 -0
  362. package/dist/index69.cts.map +1 -0
  363. package/dist/index7.cjs +0 -0
  364. package/dist/index70.cjs +3 -0
  365. package/dist/index70.cts.map +1 -0
  366. package/dist/index71.cjs +3 -0
  367. package/dist/index71.cts.map +1 -0
  368. package/dist/index72.cjs +3 -0
  369. package/dist/index72.cts.map +1 -0
  370. package/dist/index73.cjs +3 -0
  371. package/dist/index73.cts.map +1 -0
  372. package/dist/index8.cjs +25 -0
  373. package/dist/index8.cjs.map +1 -0
  374. package/dist/index9.cjs +0 -0
  375. package/dist/invoice-1_1-BJVcw-oE.d.ts +432 -0
  376. package/dist/invoice-1_1-BJVcw-oE.d.ts.map +1 -0
  377. package/dist/invoice-1_1-DWdNPRzr.d.cts +432 -0
  378. package/dist/invoice-1_1-DWdNPRzr.d.cts.map +1 -0
  379. package/dist/invoice1-1-8S-QQn7P.cjs +547 -0
  380. package/dist/invoice1-1-8S-QQn7P.cjs.map +1 -0
  381. package/dist/invoice1-1-CHuLpkFz.js +504 -0
  382. package/dist/invoice1-1-CHuLpkFz.js.map +1 -0
  383. package/dist/msic-codes-B_1W6lZF.d.cts +26 -0
  384. package/dist/msic-codes-B_1W6lZF.d.cts.map +1 -0
  385. package/dist/msic-codes-bs0lTfSZ.d.ts +26 -0
  386. package/dist/msic-codes-bs0lTfSZ.d.ts.map +1 -0
  387. package/dist/payment-modes-B8dNy3SM.d.ts +44 -0
  388. package/dist/payment-modes-B8dNy3SM.d.ts.map +1 -0
  389. package/dist/payment-modes-DHihrywe.d.cts +44 -0
  390. package/dist/payment-modes-DHihrywe.d.cts.map +1 -0
  391. package/dist/platformLogin-DsxWWUXr.js +31 -0
  392. package/dist/platformLogin-DsxWWUXr.js.map +1 -0
  393. package/dist/platformLogin-PGzMhw1X.cjs +37 -0
  394. package/dist/platformLogin-PGzMhw1X.cjs.map +1 -0
  395. package/dist/populateFinalDocument-BdyYzz5Y.cjs +96 -0
  396. package/dist/populateFinalDocument-BdyYzz5Y.cjs.map +1 -0
  397. package/dist/populateFinalDocument-BpLXmgLv.js +90 -0
  398. package/dist/populateFinalDocument-BpLXmgLv.js.map +1 -0
  399. package/dist/populateSignedProperties-BJMcBQ6S.cjs +58 -0
  400. package/dist/populateSignedProperties-BJMcBQ6S.cjs.map +1 -0
  401. package/dist/populateSignedProperties-BvGN-YZH.js +52 -0
  402. package/dist/populateSignedProperties-BvGN-YZH.js.map +1 -0
  403. package/dist/sign-B61Cy3gO.cjs +40 -0
  404. package/dist/sign-B61Cy3gO.cjs.map +1 -0
  405. package/dist/sign-DzHK7UhR.js +34 -0
  406. package/dist/sign-DzHK7UhR.js.map +1 -0
  407. package/dist/signatures-BKi9DP2K.d.cts +173 -0
  408. package/dist/signatures-BKi9DP2K.d.cts.map +1 -0
  409. package/dist/signatures-C9QPZTQd.d.ts +173 -0
  410. package/dist/signatures-C9QPZTQd.d.ts.map +1 -0
  411. package/dist/state-codes-CxG1S9YY.d.ts +62 -0
  412. package/dist/state-codes-CxG1S9YY.d.ts.map +1 -0
  413. package/dist/state-codes-DXSWtE6a.d.cts +62 -0
  414. package/dist/state-codes-DXSWtE6a.d.cts.map +1 -0
  415. package/dist/tax-types-CEpfSh5P.d.ts +42 -0
  416. package/dist/tax-types-CEpfSh5P.d.ts.map +1 -0
  417. package/dist/tax-types-CgwxONDS.d.cts +42 -0
  418. package/dist/tax-types-CgwxONDS.d.cts.map +1 -0
  419. package/dist/transform-BLz0S687.cjs +72 -0
  420. package/dist/transform-BLz0S687.cjs.map +1 -0
  421. package/dist/transform-D1q-U6Zj.js +66 -0
  422. package/dist/transform-D1q-U6Zj.js.map +1 -0
  423. package/dist/types/classification-codes.d.ts +2 -0
  424. package/dist/types/country-code.d.ts +2 -0
  425. package/dist/types/currencies.d.ts +2 -0
  426. package/dist/types/documents/index.d.ts +57 -0
  427. package/dist/types/documents/invoice-1_1.d.ts +56 -0
  428. package/dist/types/e-invoice.d.ts +2 -0
  429. package/dist/types/index.d.ts +59 -0
  430. package/dist/types/msic/0X.d.ts +2 -0
  431. package/dist/types/msic/1X.d.ts +2 -0
  432. package/dist/types/msic/2X.d.ts +2 -0
  433. package/dist/types/msic/3X.d.ts +2 -0
  434. package/dist/types/msic/4X.d.ts +2 -0
  435. package/dist/types/msic/5X.d.ts +2 -0
  436. package/dist/types/msic/6X.d.ts +2 -0
  437. package/dist/types/msic/7X.d.ts +2 -0
  438. package/dist/types/msic/8X.d.ts +2 -0
  439. package/dist/types/msic/9X.d.ts +2 -0
  440. package/dist/types/msic-codes.d.ts +12 -0
  441. package/dist/types/payment-modes.d.ts +2 -0
  442. package/dist/types/signatures.d.ts +2 -0
  443. package/dist/types/state-codes.d.ts +2 -0
  444. package/dist/types/tax-types.d.ts +2 -0
  445. package/dist/types/unit/1X.d.ts +2 -0
  446. package/dist/types/unit/2X.d.ts +2 -0
  447. package/dist/types/unit/3X.d.ts +2 -0
  448. package/dist/types/unit/4X.d.ts +2 -0
  449. package/dist/types/unit/5X.d.ts +2 -0
  450. package/dist/types/unit/6X.d.ts +2 -0
  451. package/dist/types/unit/7X.d.ts +2 -0
  452. package/dist/types/unit/8X.d.ts +2 -0
  453. package/dist/types/unit/9X.d.ts +2 -0
  454. package/dist/types/unit/AX.d.ts +2 -0
  455. package/dist/types/unit/BX.d.ts +2 -0
  456. package/dist/types/unit/CX.d.ts +2 -0
  457. package/dist/types/unit/DX.d.ts +2 -0
  458. package/dist/types/unit/EX.d.ts +2 -0
  459. package/dist/types/unit/FX.d.ts +2 -0
  460. package/dist/types/unit/GX.d.ts +2 -0
  461. package/dist/types/unit/HX.d.ts +2 -0
  462. package/dist/types/unit/IX.d.ts +2 -0
  463. package/dist/types/unit/JX.d.ts +2 -0
  464. package/dist/types/unit/KX.d.ts +2 -0
  465. package/dist/types/unit/LX.d.ts +2 -0
  466. package/dist/types/unit/MX.d.ts +2 -0
  467. package/dist/types/unit/NX.d.ts +2 -0
  468. package/dist/types/unit/OX.d.ts +2 -0
  469. package/dist/types/unit/PX.d.ts +2 -0
  470. package/dist/types/unit/QX.d.ts +2 -0
  471. package/dist/types/unit/RX.d.ts +2 -0
  472. package/dist/types/unit/SX.d.ts +2 -0
  473. package/dist/types/unit/TX.d.ts +2 -0
  474. package/dist/types/unit/UX.d.ts +2 -0
  475. package/dist/types/unit/VX.d.ts +2 -0
  476. package/dist/types/unit/WX.d.ts +2 -0
  477. package/dist/types/unit/XX.d.ts +2 -0
  478. package/dist/types/unit/YX.d.ts +2 -0
  479. package/dist/types/unit/ZX.d.ts +2 -0
  480. package/dist/types/unit-types.d.ts +37 -0
  481. package/dist/unit-types-1bF0KhIp.d.ts +56 -0
  482. package/dist/unit-types-1bF0KhIp.d.ts.map +1 -0
  483. package/dist/unit-types-CsrkvgfG.d.cts +56 -0
  484. package/dist/unit-types-CsrkvgfG.d.cts.map +1 -0
  485. package/dist/utils/MyInvoisClient.d.ts +60 -0
  486. package/dist/utils/MyInvoisClient.js +13 -0
  487. package/dist/utils/base64.d.ts +6 -0
  488. package/dist/utils/base64.d.ts.map +1 -0
  489. package/dist/utils/base64.js +11 -0
  490. package/dist/utils/base64.js.map +1 -0
  491. package/dist/utils/debug/debug-document-hash.d.ts +100 -0
  492. package/dist/utils/debug/debug-document-hash.d.ts.map +1 -0
  493. package/dist/utils/debug/debug-document-hash.js +120 -0
  494. package/dist/utils/debug/debug-document-hash.js.map +1 -0
  495. package/dist/utils/debug/debug-invoice-submission.d.ts +152 -0
  496. package/dist/utils/debug/debug-invoice-submission.d.ts.map +1 -0
  497. package/dist/utils/debug/debug-invoice-submission.js +226 -0
  498. package/dist/utils/debug/debug-invoice-submission.js.map +1 -0
  499. package/dist/utils/getBaseUrl.d.ts +5 -0
  500. package/dist/utils/getBaseUrl.d.ts.map +1 -0
  501. package/dist/utils/getBaseUrl.js +3 -0
  502. package/dist/utils/invoice1-1.d.ts +117 -0
  503. package/dist/utils/invoice1-1.d.ts.map +1 -0
  504. package/dist/utils/invoice1-1.js +10 -0
  505. package/dist/utils/signature/canonicalize.d.ts +26 -0
  506. package/dist/utils/signature/canonicalize.d.ts.map +1 -0
  507. package/dist/utils/signature/canonicalize.js +3 -0
  508. package/dist/utils/signature/hashCert.d.ts +15 -0
  509. package/dist/utils/signature/hashCert.d.ts.map +1 -0
  510. package/dist/utils/signature/hashCert.js +3 -0
  511. package/dist/utils/signature/hashSignedProperties.d.ts +25 -0
  512. package/dist/utils/signature/hashSignedProperties.d.ts.map +1 -0
  513. package/dist/utils/signature/hashSignedProperties.js +3 -0
  514. package/dist/utils/signature/populateFinalDocument.d.ts +23 -0
  515. package/dist/utils/signature/populateFinalDocument.d.ts.map +1 -0
  516. package/dist/utils/signature/populateFinalDocument.js +3 -0
  517. package/dist/utils/signature/populateSignedProperties.d.ts +23 -0
  518. package/dist/utils/signature/populateSignedProperties.d.ts.map +1 -0
  519. package/dist/utils/signature/populateSignedProperties.js +3 -0
  520. package/dist/utils/signature/sign.d.ts +16 -0
  521. package/dist/utils/signature/sign.d.ts.map +1 -0
  522. package/dist/utils/signature/sign.js +3 -0
  523. package/dist/utils/signature/transform.d.ts +16 -0
  524. package/dist/utils/signature/transform.d.ts.map +1 -0
  525. package/dist/utils/signature/transform.js +3 -0
  526. package/package.json +12 -5
  527. package/src/api/platform/{taxpayerLogin.ts → platformLogin.ts} +8 -2
  528. package/src/types/documents/invoice-1_1.d.ts +90 -0
  529. package/src/types/index.d.ts +1 -0
  530. package/src/types/msic-codes.d.ts +1 -7
  531. package/src/utils/MyInvoisClient.ts +428 -11
  532. package/src/utils/base64.ts +7 -0
  533. package/src/utils/debug/debug-document-hash.ts +249 -0
  534. package/src/utils/debug/debug-invoice-submission.ts +355 -0
  535. package/src/utils/getBaseUrl.ts +1 -1
  536. package/src/utils/invoice1-1.ts +671 -0
  537. package/src/utils/signature/canonicalize.ts +104 -0
  538. package/src/utils/signature/hashCert.ts +115 -0
  539. package/src/utils/signature/hashSignedProperties.ts +155 -0
  540. package/src/utils/signature/populateFinalDocument.ts +187 -0
  541. package/src/utils/signature/populateSignedProperties.ts +87 -0
  542. package/src/utils/signature/sign.ts +51 -0
  543. package/src/utils/signature/transform.ts +99 -0
  544. package/test/MyInvoiClientWithRealData.test.ts +2 -1
  545. package/test/MyInvoisClient.test.ts +16 -8
  546. package/test/base64.test.ts +43 -0
  547. package/test/canonicalize.test.ts +110 -0
  548. package/test/hashCert.test.ts +95 -0
  549. package/test/hashSignedProperties.test.ts +140 -0
  550. package/test/populateFinalDocument.test.ts +218 -0
  551. package/test/populateSignedProperties.test.ts +155 -0
  552. package/test/sign.test.ts +70 -0
  553. package/test/signAndSubmitInvoice.test.ts +915 -0
  554. package/test/transform.test.ts +158 -0
  555. package/tsconfig.json +7 -1
  556. package/tsdown.config.ts +31 -0
  557. package/dist/index.cjs.map +0 -1
  558. package/rolldown.config.ts +0 -26
@@ -1,31 +1,55 @@
1
+ import { EInvoiceTypeCode } from 'src/types'
2
+ import { platformLogin } from '../api/platform/platformLogin'
3
+ import type {
4
+ DocumentStatus,
5
+ InvoiceV1_1,
6
+ } from '../types/documents/invoice-1_1.d.ts'
1
7
  import { getBaseUrl } from './getBaseUrl'
2
- import { taxpayerLogin } from '../api/platform/taxpayerLogin'
8
+ import {
9
+ createSigningCredentials,
10
+ encodeDocumentForSubmission,
11
+ generateDocumentHash,
12
+ generateSignedInvoiceXML,
13
+ } from './invoice1-1'
14
+
15
+ import type {
16
+ DocumentSummary,
17
+ DocumentValidationResult,
18
+ DocumentValidationStepResult,
19
+ GetSubmissionResponse,
20
+ SubmissionResponse,
21
+ SubmissionStatus,
22
+ } from '../types/documents/invoice-1_1.d.ts'
3
23
 
4
24
  export class MyInvoisClient {
5
25
  private readonly baseUrl: string
6
26
  private readonly clientId: string
7
27
  private readonly clientSecret: string
28
+ private readonly onBehalfOf?: string
8
29
  private readonly debug: boolean
9
30
  private token = ''
10
- private tokenExpiration: Date | undefined
31
+ private tokenExpiration: Date | undefined = undefined
11
32
 
12
33
  constructor(
13
34
  clientId: string,
14
35
  clientSecret: string,
15
36
  environment: 'sandbox' | 'production',
16
- debug: boolean = false,
37
+ onBehalfOf?: string,
38
+ debug?: boolean,
17
39
  ) {
18
40
  this.clientId = clientId
19
41
  this.clientSecret = clientSecret
20
42
  this.baseUrl = getBaseUrl(environment)
21
- this.debug = debug
43
+ this.debug = (debug ?? process.env.MYINVOIS_DEBUG === 'true') ? true : false
44
+ this.onBehalfOf = onBehalfOf
22
45
  }
23
46
 
24
47
  private async refreshToken() {
25
- const tokenResponse = await taxpayerLogin({
48
+ const tokenResponse = await platformLogin({
26
49
  clientId: this.clientId,
27
50
  clientSecret: this.clientSecret,
28
51
  baseUrl: this.baseUrl,
52
+ onBehalfOf: this.onBehalfOf,
29
53
  debug: this.debug,
30
54
  })
31
55
 
@@ -34,7 +58,14 @@ export class MyInvoisClient {
34
58
  }
35
59
 
36
60
  private async getToken() {
37
- if (!this.tokenExpiration || this.tokenExpiration < new Date()) {
61
+ if (
62
+ !this.tokenExpiration ||
63
+ this.tokenExpiration < new Date() ||
64
+ isNaN(this.tokenExpiration.getTime())
65
+ ) {
66
+ if (this.debug) {
67
+ console.log('Token expired')
68
+ }
38
69
  if (this.debug) {
39
70
  console.log('Refreshing token')
40
71
  }
@@ -54,16 +85,21 @@ export class MyInvoisClient {
54
85
  }
55
86
 
56
87
  /**
57
- * Validates a TIN against a NRIC
88
+ * Validates a TIN against a NRIC/ARMY/PASSPORT/BRN (Business Registration Number)
58
89
  *
59
- * @param tin
60
- * @param nric
90
+ * @param tin - The TIN to validate
91
+ * @param idType - The type of ID to validate against
92
+ * @param idValue - The value of the ID to validate against
61
93
  * @returns true if the TIN is valid, false otherwise
62
94
  */
63
- async verifyTin(tin: string, nric: string): Promise<boolean> {
95
+ async verifyTin(
96
+ tin: string,
97
+ idType: 'NRIC' | 'ARMY' | 'PASSPORT' | 'BRN',
98
+ idValue: string,
99
+ ): Promise<boolean> {
64
100
  try {
65
101
  const response = await this.fetch(
66
- `/api/v1.0/taxpayer/validate/${tin}?idType=NRIC&idValue=${nric}`,
102
+ `/api/v1.0/taxpayer/validate/${tin}?idType=${idType}&idValue=${idValue}`,
67
103
  {
68
104
  method: 'GET',
69
105
  },
@@ -81,4 +117,385 @@ export class MyInvoisClient {
81
117
  return false
82
118
  }
83
119
  }
120
+
121
+ /**
122
+ * Submits one or more e-invoice documents to the MyInvois platform for processing.
123
+ *
124
+ * This method digitally signs each document using the provided certificate and private key,
125
+ * generates document hashes, encodes them for submission, and sends them to the platform.
126
+ * The method includes comprehensive validation warnings for document size and count limits.
127
+ *
128
+ * @param documents - Array of InvoiceV1_1 documents to be submitted
129
+ * @returns Promise resolving to submission response containing the submission data and HTTP status
130
+ * @throws {Error} If PRIVATE_KEY or CERTIFICATE environment variables are missing
131
+ * @throws {Error} If document signing, encoding, or API submission fails
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * // Submit a single invoice
136
+ * const result = await client.submitDocument([invoiceData]);
137
+ * console.log(result.data.submissionUid); // Track submission with this UID
138
+ *
139
+ * // Submit multiple invoices
140
+ * const result = await client.submitDocument([invoice1, invoice2, invoice3]);
141
+ * if (result.status === 202) {
142
+ * console.log('Documents submitted successfully');
143
+ * }
144
+ * ```
145
+ *
146
+ * @remarks
147
+ * - Requires PRIVATE_KEY and CERTIFICATE environment variables for document signing
148
+ * - Each document is digitally signed with XML-DSIG before submission
149
+ * - Documents are base64-encoded for transmission
150
+ * - API limits: Max 100 documents per submission, 5MB total payload, 300KB per document
151
+ * - Debug mode provides detailed logging of payload sizes and validation warnings
152
+ * - Returns HTTP 202 for successful submissions that require processing
153
+ */
154
+ async submitDocument(documents: InvoiceV1_1[]): Promise<{
155
+ data: SubmissionResponse
156
+ status: number
157
+ }> {
158
+ // Check if basic signing credentials are available
159
+ if (!process.env.PRIVATE_KEY || !process.env.CERTIFICATE) {
160
+ throw new Error(
161
+ 'Missing required environment variables: PRIVATE_KEY and CERTIFICATE',
162
+ )
163
+ }
164
+
165
+ const signingCredentials = createSigningCredentials(
166
+ process.env.CERTIFICATE!,
167
+ process.env.PRIVATE_KEY!,
168
+ )
169
+
170
+ const signedDocuments = await Promise.all(
171
+ documents.map(async d => {
172
+ const signedXML = await generateSignedInvoiceXML(d, signingCredentials)
173
+ const documentHash = generateDocumentHash(signedXML)
174
+ const base64Document = encodeDocumentForSubmission(signedXML)
175
+
176
+ return {
177
+ format: 'XML',
178
+ document: base64Document,
179
+ documentHash,
180
+ codeNumber: d.eInvoiceCodeOrNumber,
181
+ }
182
+ }),
183
+ )
184
+
185
+ try {
186
+ const payload = { documents: signedDocuments }
187
+
188
+ if (this.debug) {
189
+ console.log('Submitting payload structure:')
190
+ console.log(
191
+ JSON.stringify(
192
+ {
193
+ documents: signedDocuments.map(doc => ({
194
+ format: doc.format,
195
+ codeNumber: doc.codeNumber,
196
+ documentHash: doc.documentHash,
197
+ documentSize: doc.document.length,
198
+ })),
199
+ },
200
+ null,
201
+ 2,
202
+ ),
203
+ )
204
+
205
+ // Additional debugging information
206
+ const totalSize = JSON.stringify(payload).length
207
+ console.log(
208
+ `Total payload size: ${totalSize} bytes (${(totalSize / 1024 / 1024).toFixed(2)} MB)`,
209
+ )
210
+ console.log(`Number of documents: ${signedDocuments.length}`)
211
+
212
+ signedDocuments.forEach((doc, index) => {
213
+ const docSize = Buffer.from(doc.document, 'base64').length
214
+ console.log(
215
+ `Document ${index + 1}: ${docSize} bytes (${(docSize / 1024).toFixed(2)} KB)`,
216
+ )
217
+ })
218
+
219
+ // Check against MyInvois limits
220
+ if (totalSize > 5 * 1024 * 1024) {
221
+ console.warn('⚠️ WARNING: Payload exceeds 5MB limit!')
222
+ }
223
+ if (signedDocuments.length > 100) {
224
+ console.warn('⚠️ WARNING: More than 100 documents in submission!')
225
+ }
226
+ signedDocuments.forEach((doc, index) => {
227
+ const docSize = Buffer.from(doc.document, 'base64').length
228
+ if (docSize > 300 * 1024) {
229
+ console.warn(
230
+ `⚠️ WARNING: Document ${index + 1} exceeds 300KB limit!`,
231
+ )
232
+ }
233
+ })
234
+ }
235
+
236
+ const response = await this.fetch(`/api/v1.0/documentsubmissions`, {
237
+ method: 'POST',
238
+ headers: {
239
+ 'Content-Type': 'application/json',
240
+ },
241
+ body: JSON.stringify(payload),
242
+ })
243
+
244
+ const responseBody = await response.json()
245
+
246
+ if (this.debug) {
247
+ console.log('API Response Status:', response.status)
248
+ console.log(
249
+ 'API Response Headers:',
250
+ Object.fromEntries(response.headers.entries()),
251
+ )
252
+ }
253
+
254
+ return {
255
+ data: responseBody as SubmissionResponse,
256
+ status: response.status,
257
+ }
258
+ } catch (error) {
259
+ console.error(error)
260
+ throw error
261
+ }
262
+ }
263
+
264
+ async getSubmissionStatus(
265
+ submissionUid: string,
266
+ pollInterval: number = 1000,
267
+ maxRetries: number = 10,
268
+ ): Promise<{
269
+ status: SubmissionStatus
270
+ documentSummary?: DocumentSummary[]
271
+ error?: {
272
+ code: string
273
+ message: string | null
274
+ target: string
275
+ details: {
276
+ code: string
277
+ message: string
278
+ target: string
279
+ }[]
280
+ }
281
+ }> {
282
+ try {
283
+ const response = await this.fetch(
284
+ `/api/v1.0/documentsubmissions/${submissionUid}`,
285
+ )
286
+
287
+ const data = (await response.json()) as GetSubmissionResponse
288
+
289
+ if (this.debug) {
290
+ console.log('Submission:', data)
291
+ if (data.error) {
292
+ console.log('Submission error details:', data.error.details)
293
+ }
294
+ }
295
+
296
+ // If we have a successful response and status is completed, return success
297
+ if (data.overallStatus === 'Valid') {
298
+ return {
299
+ status: data.overallStatus,
300
+ documentSummary: data.documentSummary,
301
+ }
302
+ }
303
+ if (data.overallStatus === 'Invalid') {
304
+ return {
305
+ status: 'Invalid',
306
+ documentSummary: data.documentSummary,
307
+ }
308
+ }
309
+
310
+ // If we have retries left, continue polling for any non-completed status or errors
311
+ if (maxRetries > 0) {
312
+ await new Promise(resolve => setTimeout(resolve, pollInterval))
313
+ return await this.getSubmissionStatus(
314
+ submissionUid,
315
+ pollInterval,
316
+ maxRetries - 1,
317
+ )
318
+ }
319
+
320
+ // No retries left - return timeout
321
+ return {
322
+ status: 'Invalid',
323
+ error: {
324
+ code: 'Timeout',
325
+ message: 'Submission timed out',
326
+ target: 'submission',
327
+ details: [],
328
+ },
329
+ }
330
+ } catch (error) {
331
+ // Handle any request errors by retrying if we have retries left
332
+ if (maxRetries > 0) {
333
+ if (this.debug) {
334
+ console.log('Request error, retrying...', error)
335
+ }
336
+ await new Promise(resolve => setTimeout(resolve, pollInterval))
337
+ return await this.getSubmissionStatus(
338
+ submissionUid,
339
+ pollInterval,
340
+ maxRetries - 1,
341
+ )
342
+ }
343
+
344
+ // No retries left - return timeout
345
+ return {
346
+ status: 'Invalid',
347
+ error: {
348
+ code: 'Timeout',
349
+ message: 'Submission timed out after request errors',
350
+ target: 'submission',
351
+ details: [],
352
+ },
353
+ }
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Retrieves a document by its unique identifier with the raw document content.
359
+ *
360
+ * @param documentUid - The unique identifier of the document to retrieve
361
+ * @returns Promise resolving to document summary with raw document content as a string
362
+ * @throws {Error} If the document is not found or request fails
363
+ *
364
+ * @example
365
+ * ```typescript
366
+ * const document = await client.getDocument('doc-uuid-123');
367
+ * console.log(document.document); // Raw XML/JSON content
368
+ * console.log(document.uuid); // Document UUID
369
+ * ```
370
+ */
371
+ async getDocument(
372
+ documentUid: string,
373
+ ): Promise<DocumentSummary & { document: string }> {
374
+ const response = await this.fetch(`/api/v1.0/documents/${documentUid}/raw`)
375
+
376
+ const data = await response.json()
377
+
378
+ return data as DocumentSummary & { document: string }
379
+ }
380
+
381
+ /**
382
+ * Retrieves detailed information about a document including validation results.
383
+ *
384
+ * @param documentUid - The unique identifier of the document to get details for
385
+ * @returns Promise resolving to document summary with detailed validation results
386
+ * @throws {Error} If the document is not found or request fails
387
+ *
388
+ * @example
389
+ * ```typescript
390
+ * const details = await client.getDocumentDetails('doc-uuid-123');
391
+ * console.log(details.validationResults.status); // 'Valid' | 'Invalid' | 'Processing'
392
+ * console.log(details.validationResults.validationSteps); // Array of validation step results
393
+ * ```
394
+ */
395
+ async getDocumentDetails(documentUid: string): Promise<
396
+ DocumentSummary & {
397
+ validationResults: {
398
+ status: DocumentValidationResult
399
+ validationSteps: DocumentValidationStepResult[]
400
+ }
401
+ }
402
+ > {
403
+ const response = await this.fetch(
404
+ `/api/v1.0/documents/${documentUid}/details`,
405
+ )
406
+
407
+ const data = (await response.json()) as DocumentSummary & {
408
+ validationResults: {
409
+ status: DocumentValidationResult
410
+ validationSteps: DocumentValidationStepResult[]
411
+ }
412
+ }
413
+
414
+ return data
415
+ }
416
+
417
+ /**
418
+ * Searches for documents based on various filter criteria.
419
+ *
420
+ * @param params - Search parameters object
421
+ * @param params.uuid - Optional specific document UUID to search for
422
+ * @param params.submissionDateFrom - Required start date for submission date range (ISO date string)
423
+ * @param params.submissionDateTo - Optional end date for submission date range (ISO date string)
424
+ * @param params.pageSize - Optional number of results per page (default handled by API)
425
+ * @param params.pageNo - Optional page number for pagination (0-based)
426
+ * @param params.issueDateFrom - Optional start date for issue date range (ISO date string)
427
+ * @param params.issueDateTo - Optional end date for issue date range (ISO date string)
428
+ * @param params.invoiceDirection - Optional filter by invoice direction ('Sent' or 'Received')
429
+ * @param params.status - Optional filter by document status
430
+ * @param params.documentType - Optional filter by e-invoice type code
431
+ * @param params.searchQuery - Optional text search across uuid, buyerTIN, supplierTIN, buyerName, supplierName, internalID, total
432
+ * @returns Promise resolving to array of document summaries matching the search criteria
433
+ * @throws {Error} If the search request fails
434
+ *
435
+ * @example
436
+ * ```typescript
437
+ * // Search for documents submitted in the last 30 days
438
+ * const documents = await client.searchDocuments({
439
+ * submissionDateFrom: '2024-01-01',
440
+ * submissionDateTo: '2024-01-31',
441
+ * status: 'Valid',
442
+ * pageSize: 10
443
+ * });
444
+ *
445
+ * // Search by supplier name
446
+ * const supplierDocs = await client.searchDocuments({
447
+ * submissionDateFrom: '2024-01-01',
448
+ * searchQuery: 'ACME Corp',
449
+ * invoiceDirection: 'Received'
450
+ * });
451
+ * ```
452
+ */
453
+ async searchDocuments({
454
+ uuid,
455
+ submissionDateFrom,
456
+ submissionDateTo,
457
+ pageSize,
458
+ pageNo,
459
+ issueDateFrom,
460
+ issueDateTo,
461
+ invoiceDirection,
462
+ status,
463
+ documentType,
464
+ searchQuery,
465
+ }: {
466
+ uuid?: string
467
+ submissionDateFrom: string
468
+ submissionDateTo?: string
469
+ pageSize?: number
470
+ pageNo?: number
471
+ issueDateFrom?: string
472
+ issueDateTo?: string
473
+ invoiceDirection?: 'Sent' | 'Received'
474
+ status?: DocumentStatus
475
+ documentType?: EInvoiceTypeCode
476
+ searchQuery?: string // Search by uuid, buyerTIN, supplierTIN, buyerName, supplierName, internalID, total
477
+ }): Promise<DocumentSummary[]> {
478
+ const queryParams = new URLSearchParams()
479
+
480
+ if (uuid) queryParams.set('uuid', uuid)
481
+ if (submissionDateFrom)
482
+ queryParams.set('submissionDateFrom', submissionDateFrom)
483
+ if (submissionDateTo) queryParams.set('submissionDateTo', submissionDateTo)
484
+ if (pageSize) queryParams.set('pageSize', pageSize.toString())
485
+ if (pageNo) queryParams.set('pageNo', pageNo.toString())
486
+ if (issueDateFrom) queryParams.set('issueDateFrom', issueDateFrom)
487
+ if (issueDateTo) queryParams.set('issueDateTo', issueDateTo)
488
+ if (invoiceDirection) queryParams.set('invoiceDirection', invoiceDirection)
489
+ if (status) queryParams.set('status', status)
490
+ if (documentType) queryParams.set('documentType', documentType)
491
+ if (searchQuery) queryParams.set('searchQuery', searchQuery)
492
+
493
+ const response = await this.fetch(
494
+ `/api/v1.0/documents/search?${queryParams.toString()}`,
495
+ )
496
+
497
+ const data = (await response.json()) as DocumentSummary[]
498
+
499
+ return data
500
+ }
84
501
  }
@@ -0,0 +1,7 @@
1
+ export function encodeToBase64(content: string): string {
2
+ return Buffer.from(content).toString('base64')
3
+ }
4
+
5
+ export function decodeFromBase64(content: string): string {
6
+ return Buffer.from(content, 'base64').toString('utf-8')
7
+ }