@ripwords/myinvois-client 0.1.0 → 0.1.2

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 (575) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/README.md +128 -4
  3. package/bun.lock +59 -0
  4. package/dist/{0X-Yw7mZEro.d.cts → 0X-CG1S1WKn.d.ts} +1 -2
  5. package/dist/{0X-C4IRh_fJ.d.ts → 0X-ChfmeAYF.d.cts} +1 -1
  6. package/dist/{1X-D_aUVsuM.d.cts → 1X-CmlbG02M.d.ts} +1 -2
  7. package/dist/{1X-BwpSoT3o.d.cts → 1X-DFikQbP0.d.cts} +1 -1
  8. package/dist/{1X-C-_KHV-Q.d.ts → 1X-DbFshzup.d.ts} +1 -2
  9. package/dist/{1X-Brnls9Jh.d.ts → 1X-jFrFCOs0.d.cts} +1 -1
  10. package/dist/{2X-UdQcQW24.d.ts → 2X-5cE4ojEX.d.cts} +1 -1
  11. package/dist/{2X-hClUyw26.d.cts → 2X-DA6J6Wd7.d.ts} +1 -2
  12. package/dist/{2X-Bb6elyzV.d.cts → 2X-FWZ1rYVt.d.cts} +1 -1
  13. package/dist/{2X-DkS1BoE5.d.ts → 2X-eC_p0QJf.d.ts} +1 -2
  14. package/dist/{3X-C7VFD-n-.d.cts → 3X-D9duw0Ro.d.cts} +1 -1
  15. package/dist/{3X-DFI-4RQQ.d.ts → 3X-DbfkwdkO.d.ts} +1 -2
  16. package/dist/{3X-DVDyspgb.d.ts → 3X-GxuN79Ax.d.ts} +1 -2
  17. package/dist/{3X-CLMESDvz.d.cts → 3X-r9xbWJ2l.d.cts} +1 -1
  18. package/dist/{4X-CIJ2JJ2w.d.ts → 4X-1ZkK-uH5.d.cts} +1 -1
  19. package/dist/{4X-CUR8jlaZ.d.ts → 4X-CLO9OuKa.d.cts} +1 -1
  20. package/dist/{4X-DIfvpU6V.d.cts → 4X-CnHtgO6u.d.ts} +1 -2
  21. package/dist/{4X-CvScPJTf.d.cts → 4X-DYz_nYSD.d.ts} +1 -2
  22. package/dist/{5X-COsZHUaQ.d.ts → 5X-BzPEdkbC.d.ts} +1 -2
  23. package/dist/{5X-C6db432h.d.ts → 5X-BziH0a09.d.cts} +1 -1
  24. package/dist/{5X-BOUxhadJ.d.cts → 5X-Cfe39fFc.d.cts} +1 -1
  25. package/dist/{5X-CkLu7Vyd.d.cts → 5X-kBF74qx1.d.ts} +1 -2
  26. package/dist/{6X-C_fFIcJC.d.ts → 6X-BceErbps.d.cts} +1 -1
  27. package/dist/{6X-DE7RJeV6.d.cts → 6X-C_xpeu6J.d.ts} +1 -2
  28. package/dist/{6X-ClZDKOTC.d.ts → 6X-DLWEe1bP.d.cts} +1 -1
  29. package/dist/{6X-Mf32k1d0.d.cts → 6X-sQZfT0ZK.d.ts} +1 -2
  30. package/dist/{7X-Chtd6B66.d.cts → 7X-Bet2agJ6.d.ts} +1 -2
  31. package/dist/{7X-kot_VccM.d.ts → 7X-BoKQxMoO.d.ts} +1 -2
  32. package/dist/{7X-BZyesooz.d.ts → 7X-CucHYQsA.d.cts} +1 -1
  33. package/dist/{7X-DoCUcp-J.d.cts → 7X-CwPAqozm.d.cts} +1 -1
  34. package/dist/{8X-Df4DOBOe.d.ts → 8X-BIjJ9kaV.d.cts} +1 -1
  35. package/dist/{8X-Dr9RunRw.d.cts → 8X-BOEWATU3.d.ts} +1 -2
  36. package/dist/{8X-DkuKAkHz.d.ts → 8X-CJpqd5xp.d.cts} +1 -1
  37. package/dist/{8X-DqZyMvyV.d.cts → 8X-s5AzkHR-.d.ts} +1 -2
  38. package/dist/{9X-BDgifncF.d.ts → 9X-BBDP1gZ6.d.ts} +1 -2
  39. package/dist/{9X-BaoZtjWF.d.cts → 9X-CP5Xp6bE.d.cts} +1 -1
  40. package/dist/{9X-BcAb6Uso.d.cts → 9X-D3aOVCnz.d.cts} +1 -1
  41. package/dist/{9X-BhBWlgxG.d.ts → 9X-DAAZV4sr.d.ts} +1 -2
  42. package/dist/{AX-D6XHWdrY.d.ts → AX-CmpMMhII.d.ts} +1 -2
  43. package/dist/{AX-BY72FohC.d.cts → AX-DFzpxGOT.d.cts} +1 -1
  44. package/dist/{BX-D_0C8Qbd.d.ts → BX-CyiqNE6b.d.cts} +1 -1
  45. package/dist/{BX-CA0OmrUZ.d.cts → BX-j78z_ju_.d.ts} +1 -2
  46. package/dist/{CX-glpQSL8x.d.cts → CX-B6rEhQx7.d.ts} +1 -2
  47. package/dist/{CX-HH4cSZRX.d.ts → CX-BTPvC3Dv.d.cts} +1 -1
  48. package/dist/{DX-DimL1MDM.d.cts → DX-BD4-hTCh.d.cts} +1 -1
  49. package/dist/{DX-Dx22ax_I.d.ts → DX-CAmMnx5a.d.ts} +1 -2
  50. package/dist/{EX-BRWh1wFc.d.ts → EX-CXhSC85J.d.ts} +1 -2
  51. package/dist/{EX-Cx87Ruxl.d.cts → EX-mTHCH0Yk.d.cts} +1 -1
  52. package/dist/{FX-D81UlxNN.d.cts → FX-DOOMoQl2.d.cts} +1 -1
  53. package/dist/{FX-RmjwAr40.d.ts → FX-DYVIJ3l0.d.ts} +1 -2
  54. package/dist/{GX-CJyo7oDp.d.ts → GX-8URJ7WHz.d.cts} +1 -1
  55. package/dist/{GX-9i7piP9G.d.cts → GX-eBOVHqi6.d.ts} +1 -2
  56. package/dist/{HX-20GVJAvl.d.cts → HX-49z8CzsE.d.cts} +1 -1
  57. package/dist/{HX-XALBTdLA.d.ts → HX-Dz5T0xXI.d.ts} +1 -2
  58. package/dist/{IX-6SZ55QKb.d.ts → IX-B6kblmBs.d.cts} +1 -1
  59. package/dist/{IX-D54NGPsc.d.cts → IX-PiKYro5a.d.ts} +1 -2
  60. package/dist/{JX-C1RYcwQX.d.cts → JX-DMwHLGEE.d.cts} +1 -1
  61. package/dist/{JX-hQ1XRmLp.d.ts → JX-Dvnt0mSK.d.ts} +1 -2
  62. package/dist/{KX-BNwunEfn.d.ts → KX-BUb8e0yg.d.ts} +1 -2
  63. package/dist/{KX-gQHCIgtQ.d.cts → KX-DaJPkefl.d.cts} +1 -1
  64. package/dist/{LX-CHYX3X3J.d.ts → LX-BnILxjdS.d.cts} +1 -1
  65. package/dist/{LX-CPurJGIh.d.cts → LX-l5ZBaGov.d.ts} +1 -2
  66. package/dist/{MX-BPGLWSUz.d.ts → MX-BbPO8mTj.d.cts} +1 -1
  67. package/dist/{MX-BnyW5eHf.d.cts → MX-C7C15AWi.d.ts} +1 -2
  68. package/dist/{NX-RulN5Ml3.d.ts → NX-C7nFVC-D.d.ts} +1 -2
  69. package/dist/{NX-B11fQuco.d.cts → NX-xy5uw7H3.d.cts} +1 -1
  70. package/dist/{OX-DgKVSp7I.d.ts → OX-CIzARbON.d.cts} +1 -1
  71. package/dist/{OX-T-ydRXQS.d.cts → OX-Dmkvcaij.d.ts} +1 -2
  72. package/dist/{PX-DA4A2kEv.d.ts → PX-BKZ14N7N.d.ts} +1 -2
  73. package/dist/{PX-p0n1SzvU.d.cts → PX-CL8waFgx.d.cts} +1 -1
  74. package/dist/{QX-DrFqsMEs.d.ts → QX-6xdSNtxZ.d.ts} +1 -2
  75. package/dist/{QX-CI1NccIB.d.cts → QX-BowAYqZb.d.cts} +1 -1
  76. package/dist/{RX-DnNKol22.d.cts → RX-DFoiOK5q.d.ts} +1 -2
  77. package/dist/{RX-Cm7vFcFN.d.ts → RX-fWoWcHTG.d.cts} +1 -1
  78. package/dist/{SX-BUjiWQYz.d.cts → SX-CZ3e31OT.d.cts} +1 -1
  79. package/dist/{SX-CsPPTu-W.d.ts → SX-D-Szi9wa.d.ts} +1 -2
  80. package/dist/{TX-DCY25MdR.d.ts → TX-CJhJ-HYX.d.cts} +1 -1
  81. package/dist/{TX-DOEpsf05.d.cts → TX-DTfkGsqn.d.ts} +1 -2
  82. package/dist/{UX-DgUOnTFK.d.cts → UX-Bw4HHAj4.d.ts} +1 -2
  83. package/dist/{UX-DauyagHy.d.ts → UX-P7-u2y70.d.cts} +1 -1
  84. package/dist/{VX-DD4scgCe.d.ts → VX-C8Eu5gQf.d.cts} +1 -1
  85. package/dist/{VX-kUX6LM-3.d.cts → VX-DCv5x_hi.d.ts} +1 -2
  86. package/dist/{WX-DPfyPFFh.d.cts → WX-BYtJ5_if.d.ts} +1 -2
  87. package/dist/{WX-CjkoppdY.d.ts → WX-DkiaqB2V.d.cts} +1 -1
  88. package/dist/{XX-sbsIUOnA.d.ts → XX-D4p4iK-a.d.cts} +1 -1
  89. package/dist/{XX-C4C1gQZH.d.cts → XX-Jo1yJO3A.d.ts} +1 -2
  90. package/dist/{YX-DUdO8mRC.d.ts → YX-BvGmEsVG.d.ts} +1 -2
  91. package/dist/{YX-BeT-LsiA.d.cts → YX-Du8zv9qz.d.cts} +1 -1
  92. package/dist/{ZX-BuVTTq-D.d.cts → ZX-B4jFD-21.d.cts} +1 -1
  93. package/dist/{ZX-DwfcSA-D.d.ts → ZX-B59AJcBY.d.ts} +1 -2
  94. package/dist/api/platform/platformLogin.d.ts +58 -60
  95. package/dist/api/platform/platformLogin.js +1 -1
  96. package/dist/certificate-DFK-788s.cjs +62 -0
  97. package/dist/certificate-DFK-788s.cjs.map +1 -0
  98. package/dist/certificate-aooIRf9A.js +49 -0
  99. package/dist/{classification-codes-C2X4xW5-.d.ts → classification-codes-BKxV-rO9.d.ts} +1 -2
  100. package/dist/{country-code-DsI8Mbzx.d.ts → country-code-CQuaiQm2.d.ts} +1 -2
  101. package/dist/{currencies-DKuDflOO.d.ts → currencies-BYJK-m6v.d.ts} +1 -2
  102. package/dist/document-DMIMRJV0.cjs +472 -0
  103. package/dist/document-DMIMRJV0.cjs.map +1 -0
  104. package/dist/document-NQos5fSr.js +405 -0
  105. package/dist/documents-BVG7KIKY.d.ts +847 -0
  106. package/dist/documents-C066EC9m.d.cts +848 -0
  107. package/dist/{e-invoice-C2TxhyrK.d.ts → e-invoice-CmbLQkHw.d.ts} +1 -2
  108. package/dist/{getBaseUrl-Dx6RDC8I.js → getBaseUrl-R3IdgCu3.js} +1 -2
  109. package/dist/{index-B1DSs-wd.d.cts → index-0-EvC6Nv.d.ts} +1 -2
  110. package/dist/{index-FTgB2nM6.d.ts → index-D2_HVwCz.d.cts} +1 -1
  111. package/dist/index.cjs +308 -12
  112. package/dist/index.cjs.map +1 -0
  113. package/dist/index.d.ts +233 -60
  114. package/dist/index.js +306 -11
  115. package/dist/index10.cjs +0 -34
  116. package/dist/index11.cjs +25 -15
  117. package/dist/index11.cjs.map +1 -1
  118. package/dist/index12.cjs +24 -0
  119. package/dist/index12.cjs.map +1 -0
  120. package/dist/index13.cjs +0 -13
  121. package/dist/index15.cjs +3 -2
  122. package/dist/index16.cjs +12 -16
  123. package/dist/index17.cjs +2 -2
  124. package/dist/index18.cjs +336 -204
  125. package/dist/index18.cjs.map +1 -1
  126. package/dist/index19.cjs +325 -105
  127. package/dist/index19.cjs.map +1 -1
  128. package/dist/index20.cjs +136 -133
  129. package/dist/index20.cjs.map +1 -1
  130. package/dist/index21.cjs +2 -63
  131. package/dist/index22.cjs +203 -262
  132. package/dist/index22.cjs.map +1 -1
  133. package/dist/index23.cjs +104 -74
  134. package/dist/index23.cjs.map +1 -1
  135. package/dist/index24.cjs +132 -102
  136. package/dist/index24.cjs.map +1 -1
  137. package/dist/index25.cjs +59 -68
  138. package/dist/index25.cjs.map +1 -1
  139. package/dist/index26.cjs +262 -107
  140. package/dist/index26.cjs.map +1 -1
  141. package/dist/index27.cjs +74 -95
  142. package/dist/index27.cjs.map +1 -1
  143. package/dist/index28.cjs +102 -13
  144. package/dist/index28.cjs.map +1 -1
  145. package/dist/index29.cjs +68 -33
  146. package/dist/index29.cjs.map +1 -1
  147. package/dist/index30.cjs +107 -14
  148. package/dist/index30.cjs.map +1 -1
  149. package/dist/index31.cjs +95 -24
  150. package/dist/index31.cjs.map +1 -1
  151. package/dist/index32.cjs +11 -13
  152. package/dist/index32.cjs.map +1 -1
  153. package/dist/index33.cjs +31 -7
  154. package/dist/index33.cjs.map +1 -1
  155. package/dist/index34.cjs +12 -7
  156. package/dist/index34.cjs.map +1 -1
  157. package/dist/index35.cjs +22 -10
  158. package/dist/index35.cjs.map +1 -1
  159. package/dist/index36.cjs +13 -6
  160. package/dist/index36.cjs.map +1 -1
  161. package/dist/index37.cjs +7 -101
  162. package/dist/index37.cjs.map +1 -1
  163. package/dist/index38.cjs +7 -106
  164. package/dist/index38.cjs.map +1 -1
  165. package/dist/index39.cjs +10 -119
  166. package/dist/index39.cjs.map +1 -1
  167. package/dist/index40.cjs +6 -106
  168. package/dist/index40.cjs.map +1 -1
  169. package/dist/index41.cjs +101 -98
  170. package/dist/index41.cjs.map +1 -1
  171. package/dist/index42.cjs +106 -118
  172. package/dist/index42.cjs.map +1 -1
  173. package/dist/index43.cjs +119 -127
  174. package/dist/index43.cjs.map +1 -1
  175. package/dist/index44.cjs +106 -117
  176. package/dist/index44.cjs.map +1 -1
  177. package/dist/index45.cjs +98 -14
  178. package/dist/index45.cjs.map +1 -1
  179. package/dist/index46.cjs +118 -95
  180. package/dist/index46.cjs.map +1 -1
  181. package/dist/index47.cjs +127 -142
  182. package/dist/index47.cjs.map +1 -1
  183. package/dist/index48.cjs +117 -114
  184. package/dist/index48.cjs.map +1 -1
  185. package/dist/index49.cjs +14 -144
  186. package/dist/index49.cjs.map +1 -1
  187. package/dist/index5.cjs +0 -25
  188. package/dist/index50.cjs +95 -113
  189. package/dist/index50.cjs.map +1 -1
  190. package/dist/index51.cjs +142 -17
  191. package/dist/index51.cjs.map +1 -1
  192. package/dist/index52.cjs +114 -112
  193. package/dist/index52.cjs.map +1 -1
  194. package/dist/index53.cjs +144 -47
  195. package/dist/index53.cjs.map +1 -1
  196. package/dist/index54.cjs +113 -14
  197. package/dist/index54.cjs.map +1 -1
  198. package/dist/index55.cjs +17 -28
  199. package/dist/index55.cjs.map +1 -1
  200. package/dist/index56.cjs +112 -22
  201. package/dist/index56.cjs.map +1 -1
  202. package/dist/index57.cjs +47 -9
  203. package/dist/index57.cjs.map +1 -1
  204. package/dist/index58.cjs +14 -8
  205. package/dist/index58.cjs.map +1 -1
  206. package/dist/index58.cts.map +1 -0
  207. package/dist/index59.cjs +28 -17
  208. package/dist/index59.cjs.map +1 -1
  209. package/dist/index59.cts.map +1 -1
  210. package/dist/index6.cjs +25 -0
  211. package/dist/{index5.cjs.map → index6.cjs.map} +1 -1
  212. package/dist/index60.cjs +22 -412
  213. package/dist/index60.cjs.map +1 -1
  214. package/dist/index60.cts.map +1 -0
  215. package/dist/index61.cjs +9 -8
  216. package/dist/index61.cjs.map +1 -1
  217. package/dist/index61.cts.map +1 -0
  218. package/dist/index62.cjs +8 -9
  219. package/dist/index62.cjs.map +1 -1
  220. package/dist/index62.cts.map +1 -1
  221. package/dist/index63.cjs +24 -0
  222. package/dist/index63.cjs.map +1 -0
  223. package/dist/index63.cts.map +1 -1
  224. package/dist/index64.cjs +419 -0
  225. package/dist/index64.cjs.map +1 -0
  226. package/dist/index64.cts.map +1 -1
  227. package/dist/index65.cjs +9 -116
  228. package/dist/index65.cjs.map +1 -1
  229. package/dist/index65.cts.map +1 -1
  230. package/dist/index66.cjs +10 -223
  231. package/dist/index66.cjs.map +1 -1
  232. package/dist/index66.cts.map +1 -1
  233. package/dist/index8.cjs +0 -25
  234. package/dist/index9.cjs +25 -0
  235. package/dist/{index8.cjs.map → index9.cjs.map} +1 -1
  236. package/dist/{msic-codes-B_1W6lZF.d.cts → msic-codes-CPWVNnpq.d.cts} +11 -11
  237. package/dist/msic-codes-DToUqTI6.d.ts +25 -0
  238. package/dist/{payment-modes-DHihrywe.d.cts → payment-modes-DA7uBIGb.d.ts} +1 -2
  239. package/dist/{payment-modes-B8dNy3SM.d.ts → payment-modes-FX88uyhP.d.cts} +1 -1
  240. package/dist/platformLogin-PGzMhw1X.cjs.map +1 -1
  241. package/dist/{platformLogin-DsxWWUXr.js → platformLogin-f0bNAoZI.js} +1 -2
  242. package/dist/{signatures-C9QPZTQd.d.ts → signatures-CG175mpg.d.ts} +1 -2
  243. package/dist/{state-codes-DXSWtE6a.d.cts → state-codes-CNp_6051.d.cts} +1 -1
  244. package/dist/{state-codes-CxG1S9YY.d.ts → state-codes-dvoTe5pC.d.ts} +1 -2
  245. package/dist/{tax-types-CEpfSh5P.d.ts → tax-types-tosH5I0q.d.ts} +1 -2
  246. package/dist/types/classification-codes.d.ts +1 -1
  247. package/dist/types/country-code.d.ts +1 -1
  248. package/dist/types/currencies.d.ts +1 -1
  249. package/dist/types/documents.d.ts +7 -0
  250. package/dist/types/e-invoice.d.ts +1 -1
  251. package/dist/types/index.d.ts +58 -59
  252. package/dist/types/msic/0X.d.ts +1 -1
  253. package/dist/types/msic/1X.d.ts +1 -1
  254. package/dist/types/msic/2X.d.ts +1 -1
  255. package/dist/types/msic/3X.d.ts +1 -1
  256. package/dist/types/msic/4X.d.ts +1 -1
  257. package/dist/types/msic/5X.d.ts +1 -1
  258. package/dist/types/msic/6X.d.ts +1 -1
  259. package/dist/types/msic/7X.d.ts +1 -1
  260. package/dist/types/msic/8X.d.ts +1 -1
  261. package/dist/types/msic/9X.d.ts +1 -1
  262. package/dist/types/msic-codes.d.ts +11 -11
  263. package/dist/types/payment-modes.d.ts +1 -1
  264. package/dist/types/signatures.d.ts +1 -1
  265. package/dist/types/state-codes.d.ts +1 -1
  266. package/dist/types/tax-types.d.ts +1 -1
  267. package/dist/types/unit/1X.d.ts +1 -1
  268. package/dist/types/unit/2X.d.ts +1 -1
  269. package/dist/types/unit/3X.d.ts +1 -1
  270. package/dist/types/unit/4X.d.ts +1 -1
  271. package/dist/types/unit/5X.d.ts +1 -1
  272. package/dist/types/unit/6X.d.ts +1 -1
  273. package/dist/types/unit/7X.d.ts +1 -1
  274. package/dist/types/unit/8X.d.ts +1 -1
  275. package/dist/types/unit/9X.d.ts +1 -1
  276. package/dist/types/unit/AX.d.ts +1 -1
  277. package/dist/types/unit/BX.d.ts +1 -1
  278. package/dist/types/unit/CX.d.ts +1 -1
  279. package/dist/types/unit/DX.d.ts +1 -1
  280. package/dist/types/unit/EX.d.ts +1 -1
  281. package/dist/types/unit/FX.d.ts +1 -1
  282. package/dist/types/unit/GX.d.ts +1 -1
  283. package/dist/types/unit/HX.d.ts +1 -1
  284. package/dist/types/unit/IX.d.ts +1 -1
  285. package/dist/types/unit/JX.d.ts +1 -1
  286. package/dist/types/unit/KX.d.ts +1 -1
  287. package/dist/types/unit/LX.d.ts +1 -1
  288. package/dist/types/unit/MX.d.ts +1 -1
  289. package/dist/types/unit/NX.d.ts +1 -1
  290. package/dist/types/unit/OX.d.ts +1 -1
  291. package/dist/types/unit/PX.d.ts +1 -1
  292. package/dist/types/unit/QX.d.ts +1 -1
  293. package/dist/types/unit/RX.d.ts +1 -1
  294. package/dist/types/unit/SX.d.ts +1 -1
  295. package/dist/types/unit/TX.d.ts +1 -1
  296. package/dist/types/unit/UX.d.ts +1 -1
  297. package/dist/types/unit/VX.d.ts +1 -1
  298. package/dist/types/unit/WX.d.ts +1 -1
  299. package/dist/types/unit/XX.d.ts +1 -1
  300. package/dist/types/unit/YX.d.ts +1 -1
  301. package/dist/types/unit/ZX.d.ts +1 -1
  302. package/dist/types/unit-types.d.ts +36 -36
  303. package/dist/unit-types-BKZxwVYQ.d.ts +55 -0
  304. package/dist/unit-types-CaOA5ZDG.d.cts +56 -0
  305. package/dist/utils/base64.d.ts +1 -2
  306. package/dist/utils/base64.js +1 -2
  307. package/dist/utils/certificate.d.ts +22 -0
  308. package/dist/utils/certificate.js +3 -0
  309. package/dist/utils/document.d.ts +135 -0
  310. package/dist/utils/document.js +3 -0
  311. package/dist/utils/getBaseUrl.d.ts +1 -2
  312. package/dist/utils/getBaseUrl.js +1 -1
  313. package/dist/utils/helpers.d.ts +271 -0
  314. package/dist/utils/helpers.js +330 -0
  315. package/dist/utils/signature-diagnostics.d.ts +93 -0
  316. package/dist/utils/signature-diagnostics.js +326 -0
  317. package/dist/utils/validation.d.ts +46 -0
  318. package/dist/utils/validation.js +134 -0
  319. package/myinvois-cert.conf.template +23 -0
  320. package/package.json +9 -3
  321. package/scripts/gen-cert.sh +159 -0
  322. package/src/api/platform/platformLogin.ts +1 -1
  323. package/src/index.ts +528 -1
  324. package/src/types/documents.d.ts +862 -0
  325. package/src/types/index.d.ts +1 -1
  326. package/src/utils/certificate.ts +60 -0
  327. package/src/utils/document.ts +852 -0
  328. package/src/utils/helpers.ts +552 -0
  329. package/src/utils/signature-diagnostics.ts +583 -0
  330. package/src/utils/validation.ts +268 -0
  331. package/test/MyInvoiClientWithRealData.test.ts +9 -1
  332. package/test/MyInvoisClient.test.ts +7 -1
  333. package/test/dynamicInvoiceFeatures.test.ts +449 -0
  334. package/test/signAndSubmitInvoice.test.ts +269 -734
  335. package/test/signature-diagnostics.test.ts +128 -0
  336. package/tsconfig.json +0 -3
  337. package/dist/0X-C4IRh_fJ.d.ts.map +0 -1
  338. package/dist/0X-Yw7mZEro.d.cts.map +0 -1
  339. package/dist/1X-Brnls9Jh.d.ts.map +0 -1
  340. package/dist/1X-BwpSoT3o.d.cts.map +0 -1
  341. package/dist/1X-C-_KHV-Q.d.ts.map +0 -1
  342. package/dist/1X-D_aUVsuM.d.cts.map +0 -1
  343. package/dist/2X-Bb6elyzV.d.cts.map +0 -1
  344. package/dist/2X-DkS1BoE5.d.ts.map +0 -1
  345. package/dist/2X-UdQcQW24.d.ts.map +0 -1
  346. package/dist/2X-hClUyw26.d.cts.map +0 -1
  347. package/dist/3X-C7VFD-n-.d.cts.map +0 -1
  348. package/dist/3X-CLMESDvz.d.cts.map +0 -1
  349. package/dist/3X-DFI-4RQQ.d.ts.map +0 -1
  350. package/dist/3X-DVDyspgb.d.ts.map +0 -1
  351. package/dist/4X-CIJ2JJ2w.d.ts.map +0 -1
  352. package/dist/4X-CUR8jlaZ.d.ts.map +0 -1
  353. package/dist/4X-CvScPJTf.d.cts.map +0 -1
  354. package/dist/4X-DIfvpU6V.d.cts.map +0 -1
  355. package/dist/5X-BOUxhadJ.d.cts.map +0 -1
  356. package/dist/5X-C6db432h.d.ts.map +0 -1
  357. package/dist/5X-COsZHUaQ.d.ts.map +0 -1
  358. package/dist/5X-CkLu7Vyd.d.cts.map +0 -1
  359. package/dist/6X-C_fFIcJC.d.ts.map +0 -1
  360. package/dist/6X-ClZDKOTC.d.ts.map +0 -1
  361. package/dist/6X-DE7RJeV6.d.cts.map +0 -1
  362. package/dist/6X-Mf32k1d0.d.cts.map +0 -1
  363. package/dist/7X-BZyesooz.d.ts.map +0 -1
  364. package/dist/7X-Chtd6B66.d.cts.map +0 -1
  365. package/dist/7X-DoCUcp-J.d.cts.map +0 -1
  366. package/dist/7X-kot_VccM.d.ts.map +0 -1
  367. package/dist/8X-Df4DOBOe.d.ts.map +0 -1
  368. package/dist/8X-DkuKAkHz.d.ts.map +0 -1
  369. package/dist/8X-DqZyMvyV.d.cts.map +0 -1
  370. package/dist/8X-Dr9RunRw.d.cts.map +0 -1
  371. package/dist/9X-BDgifncF.d.ts.map +0 -1
  372. package/dist/9X-BaoZtjWF.d.cts.map +0 -1
  373. package/dist/9X-BcAb6Uso.d.cts.map +0 -1
  374. package/dist/9X-BhBWlgxG.d.ts.map +0 -1
  375. package/dist/AX-BY72FohC.d.cts.map +0 -1
  376. package/dist/AX-D6XHWdrY.d.ts.map +0 -1
  377. package/dist/BX-CA0OmrUZ.d.cts.map +0 -1
  378. package/dist/BX-D_0C8Qbd.d.ts.map +0 -1
  379. package/dist/CX-HH4cSZRX.d.ts.map +0 -1
  380. package/dist/CX-glpQSL8x.d.cts.map +0 -1
  381. package/dist/DX-DimL1MDM.d.cts.map +0 -1
  382. package/dist/DX-Dx22ax_I.d.ts.map +0 -1
  383. package/dist/EX-BRWh1wFc.d.ts.map +0 -1
  384. package/dist/EX-Cx87Ruxl.d.cts.map +0 -1
  385. package/dist/FX-D81UlxNN.d.cts.map +0 -1
  386. package/dist/FX-RmjwAr40.d.ts.map +0 -1
  387. package/dist/GX-9i7piP9G.d.cts.map +0 -1
  388. package/dist/GX-CJyo7oDp.d.ts.map +0 -1
  389. package/dist/HX-20GVJAvl.d.cts.map +0 -1
  390. package/dist/HX-XALBTdLA.d.ts.map +0 -1
  391. package/dist/IX-6SZ55QKb.d.ts.map +0 -1
  392. package/dist/IX-D54NGPsc.d.cts.map +0 -1
  393. package/dist/JX-C1RYcwQX.d.cts.map +0 -1
  394. package/dist/JX-hQ1XRmLp.d.ts.map +0 -1
  395. package/dist/KX-BNwunEfn.d.ts.map +0 -1
  396. package/dist/KX-gQHCIgtQ.d.cts.map +0 -1
  397. package/dist/LX-CHYX3X3J.d.ts.map +0 -1
  398. package/dist/LX-CPurJGIh.d.cts.map +0 -1
  399. package/dist/MX-BPGLWSUz.d.ts.map +0 -1
  400. package/dist/MX-BnyW5eHf.d.cts.map +0 -1
  401. package/dist/MyInvoisClient-BrNyMjS-.d.cts +0 -178
  402. package/dist/MyInvoisClient-BrNyMjS-.d.cts.map +0 -1
  403. package/dist/MyInvoisClient-CXu4pdl-.d.ts +0 -178
  404. package/dist/MyInvoisClient-CXu4pdl-.d.ts.map +0 -1
  405. package/dist/MyInvoisClient-Cnvb5iUC.js +0 -299
  406. package/dist/MyInvoisClient-Cnvb5iUC.js.map +0 -1
  407. package/dist/MyInvoisClient-DO1dJfQq.cjs +0 -304
  408. package/dist/MyInvoisClient-DO1dJfQq.cjs.map +0 -1
  409. package/dist/NX-B11fQuco.d.cts.map +0 -1
  410. package/dist/NX-RulN5Ml3.d.ts.map +0 -1
  411. package/dist/OX-DgKVSp7I.d.ts.map +0 -1
  412. package/dist/OX-T-ydRXQS.d.cts.map +0 -1
  413. package/dist/PX-DA4A2kEv.d.ts.map +0 -1
  414. package/dist/PX-p0n1SzvU.d.cts.map +0 -1
  415. package/dist/QX-CI1NccIB.d.cts.map +0 -1
  416. package/dist/QX-DrFqsMEs.d.ts.map +0 -1
  417. package/dist/RX-Cm7vFcFN.d.ts.map +0 -1
  418. package/dist/RX-DnNKol22.d.cts.map +0 -1
  419. package/dist/SX-BUjiWQYz.d.cts.map +0 -1
  420. package/dist/SX-CsPPTu-W.d.ts.map +0 -1
  421. package/dist/TX-DCY25MdR.d.ts.map +0 -1
  422. package/dist/TX-DOEpsf05.d.cts.map +0 -1
  423. package/dist/UX-DauyagHy.d.ts.map +0 -1
  424. package/dist/UX-DgUOnTFK.d.cts.map +0 -1
  425. package/dist/VX-DD4scgCe.d.ts.map +0 -1
  426. package/dist/VX-kUX6LM-3.d.cts.map +0 -1
  427. package/dist/WX-CjkoppdY.d.ts.map +0 -1
  428. package/dist/WX-DPfyPFFh.d.cts.map +0 -1
  429. package/dist/XX-C4C1gQZH.d.cts.map +0 -1
  430. package/dist/XX-sbsIUOnA.d.ts.map +0 -1
  431. package/dist/YX-BeT-LsiA.d.cts.map +0 -1
  432. package/dist/YX-DUdO8mRC.d.ts.map +0 -1
  433. package/dist/ZX-BuVTTq-D.d.cts.map +0 -1
  434. package/dist/ZX-DwfcSA-D.d.ts.map +0 -1
  435. package/dist/api/platform/platformLogin.d.ts.map +0 -1
  436. package/dist/canonicalize-C_fNNpYr.cjs +0 -80
  437. package/dist/canonicalize-C_fNNpYr.cjs.map +0 -1
  438. package/dist/canonicalize-DNUrCGad.js +0 -68
  439. package/dist/canonicalize-DNUrCGad.js.map +0 -1
  440. package/dist/classification-codes-B15PbWxz.d.cts.map +0 -1
  441. package/dist/classification-codes-C2X4xW5-.d.ts.map +0 -1
  442. package/dist/country-code-DPeNFMMi.d.cts.map +0 -1
  443. package/dist/country-code-DsI8Mbzx.d.ts.map +0 -1
  444. package/dist/currencies-DKuDflOO.d.ts.map +0 -1
  445. package/dist/currencies-S5g1gzBU.d.cts.map +0 -1
  446. package/dist/e-invoice-BuwtFnlI.d.cts.map +0 -1
  447. package/dist/e-invoice-C2TxhyrK.d.ts.map +0 -1
  448. package/dist/getBaseUrl-Dx6RDC8I.js.map +0 -1
  449. package/dist/hashCert-Bol7lIh2.js +0 -62
  450. package/dist/hashCert-Bol7lIh2.js.map +0 -1
  451. package/dist/hashCert-mlYEuYex.cjs +0 -68
  452. package/dist/hashCert-mlYEuYex.cjs.map +0 -1
  453. package/dist/hashSignedProperties-9vj5wlYR.js +0 -83
  454. package/dist/hashSignedProperties-9vj5wlYR.js.map +0 -1
  455. package/dist/hashSignedProperties-CU_ZqqmY.cjs +0 -95
  456. package/dist/hashSignedProperties-CU_ZqqmY.cjs.map +0 -1
  457. package/dist/index-B1DSs-wd.d.cts.map +0 -1
  458. package/dist/index-CJNLQVjx.d.ts +0 -1
  459. package/dist/index-FTgB2nM6.d.ts.map +0 -1
  460. package/dist/index-Wy1ONBjV.d.cts +0 -1
  461. package/dist/index10.cjs.map +0 -1
  462. package/dist/index21.cjs.map +0 -1
  463. package/dist/index67.cjs +0 -4
  464. package/dist/index67.cts.map +0 -1
  465. package/dist/index68.cjs +0 -3
  466. package/dist/index68.cts.map +0 -1
  467. package/dist/index69.cjs +0 -4
  468. package/dist/index69.cts.map +0 -1
  469. package/dist/index70.cjs +0 -3
  470. package/dist/index70.cts.map +0 -1
  471. package/dist/index71.cjs +0 -3
  472. package/dist/index71.cts.map +0 -1
  473. package/dist/index72.cjs +0 -3
  474. package/dist/index72.cts.map +0 -1
  475. package/dist/index73.cjs +0 -3
  476. package/dist/index73.cts.map +0 -1
  477. package/dist/invoice-1_1-BJVcw-oE.d.ts +0 -432
  478. package/dist/invoice-1_1-BJVcw-oE.d.ts.map +0 -1
  479. package/dist/invoice-1_1-DWdNPRzr.d.cts +0 -432
  480. package/dist/invoice-1_1-DWdNPRzr.d.cts.map +0 -1
  481. package/dist/invoice1-1-8S-QQn7P.cjs +0 -547
  482. package/dist/invoice1-1-8S-QQn7P.cjs.map +0 -1
  483. package/dist/invoice1-1-CHuLpkFz.js +0 -504
  484. package/dist/invoice1-1-CHuLpkFz.js.map +0 -1
  485. package/dist/msic-codes-B_1W6lZF.d.cts.map +0 -1
  486. package/dist/msic-codes-bs0lTfSZ.d.ts +0 -26
  487. package/dist/msic-codes-bs0lTfSZ.d.ts.map +0 -1
  488. package/dist/payment-modes-B8dNy3SM.d.ts.map +0 -1
  489. package/dist/payment-modes-DHihrywe.d.cts.map +0 -1
  490. package/dist/platformLogin-DsxWWUXr.js.map +0 -1
  491. package/dist/populateFinalDocument-BdyYzz5Y.cjs +0 -96
  492. package/dist/populateFinalDocument-BdyYzz5Y.cjs.map +0 -1
  493. package/dist/populateFinalDocument-BpLXmgLv.js +0 -90
  494. package/dist/populateFinalDocument-BpLXmgLv.js.map +0 -1
  495. package/dist/populateSignedProperties-BJMcBQ6S.cjs +0 -58
  496. package/dist/populateSignedProperties-BJMcBQ6S.cjs.map +0 -1
  497. package/dist/populateSignedProperties-BvGN-YZH.js +0 -52
  498. package/dist/populateSignedProperties-BvGN-YZH.js.map +0 -1
  499. package/dist/sign-B61Cy3gO.cjs +0 -40
  500. package/dist/sign-B61Cy3gO.cjs.map +0 -1
  501. package/dist/sign-DzHK7UhR.js +0 -34
  502. package/dist/sign-DzHK7UhR.js.map +0 -1
  503. package/dist/signatures-BKi9DP2K.d.cts.map +0 -1
  504. package/dist/signatures-C9QPZTQd.d.ts.map +0 -1
  505. package/dist/state-codes-CxG1S9YY.d.ts.map +0 -1
  506. package/dist/state-codes-DXSWtE6a.d.cts.map +0 -1
  507. package/dist/tax-types-CEpfSh5P.d.ts.map +0 -1
  508. package/dist/tax-types-CgwxONDS.d.cts.map +0 -1
  509. package/dist/transform-BLz0S687.cjs +0 -72
  510. package/dist/transform-BLz0S687.cjs.map +0 -1
  511. package/dist/transform-D1q-U6Zj.js +0 -66
  512. package/dist/transform-D1q-U6Zj.js.map +0 -1
  513. package/dist/types/documents/index.d.ts +0 -57
  514. package/dist/types/documents/invoice-1_1.d.ts +0 -56
  515. package/dist/unit-types-1bF0KhIp.d.ts +0 -56
  516. package/dist/unit-types-1bF0KhIp.d.ts.map +0 -1
  517. package/dist/unit-types-CsrkvgfG.d.cts +0 -56
  518. package/dist/unit-types-CsrkvgfG.d.cts.map +0 -1
  519. package/dist/utils/MyInvoisClient.d.ts +0 -60
  520. package/dist/utils/MyInvoisClient.js +0 -13
  521. package/dist/utils/base64.d.ts.map +0 -1
  522. package/dist/utils/base64.js.map +0 -1
  523. package/dist/utils/debug/debug-document-hash.d.ts +0 -100
  524. package/dist/utils/debug/debug-document-hash.d.ts.map +0 -1
  525. package/dist/utils/debug/debug-document-hash.js +0 -120
  526. package/dist/utils/debug/debug-document-hash.js.map +0 -1
  527. package/dist/utils/debug/debug-invoice-submission.d.ts +0 -152
  528. package/dist/utils/debug/debug-invoice-submission.d.ts.map +0 -1
  529. package/dist/utils/debug/debug-invoice-submission.js +0 -226
  530. package/dist/utils/debug/debug-invoice-submission.js.map +0 -1
  531. package/dist/utils/getBaseUrl.d.ts.map +0 -1
  532. package/dist/utils/invoice1-1.d.ts +0 -117
  533. package/dist/utils/invoice1-1.d.ts.map +0 -1
  534. package/dist/utils/invoice1-1.js +0 -10
  535. package/dist/utils/signature/canonicalize.d.ts +0 -26
  536. package/dist/utils/signature/canonicalize.d.ts.map +0 -1
  537. package/dist/utils/signature/canonicalize.js +0 -3
  538. package/dist/utils/signature/hashCert.d.ts +0 -15
  539. package/dist/utils/signature/hashCert.d.ts.map +0 -1
  540. package/dist/utils/signature/hashCert.js +0 -3
  541. package/dist/utils/signature/hashSignedProperties.d.ts +0 -25
  542. package/dist/utils/signature/hashSignedProperties.d.ts.map +0 -1
  543. package/dist/utils/signature/hashSignedProperties.js +0 -3
  544. package/dist/utils/signature/populateFinalDocument.d.ts +0 -23
  545. package/dist/utils/signature/populateFinalDocument.d.ts.map +0 -1
  546. package/dist/utils/signature/populateFinalDocument.js +0 -3
  547. package/dist/utils/signature/populateSignedProperties.d.ts +0 -23
  548. package/dist/utils/signature/populateSignedProperties.d.ts.map +0 -1
  549. package/dist/utils/signature/populateSignedProperties.js +0 -3
  550. package/dist/utils/signature/sign.d.ts +0 -16
  551. package/dist/utils/signature/sign.d.ts.map +0 -1
  552. package/dist/utils/signature/sign.js +0 -3
  553. package/dist/utils/signature/transform.d.ts +0 -16
  554. package/dist/utils/signature/transform.d.ts.map +0 -1
  555. package/dist/utils/signature/transform.js +0 -3
  556. package/src/types/documents/index.d.ts +0 -1
  557. package/src/types/documents/invoice-1_1.d.ts +0 -439
  558. package/src/utils/MyInvoisClient.ts +0 -501
  559. package/src/utils/debug/debug-document-hash.ts +0 -249
  560. package/src/utils/debug/debug-invoice-submission.ts +0 -355
  561. package/src/utils/invoice1-1.ts +0 -671
  562. package/src/utils/signature/canonicalize.ts +0 -104
  563. package/src/utils/signature/hashCert.ts +0 -115
  564. package/src/utils/signature/hashSignedProperties.ts +0 -155
  565. package/src/utils/signature/populateFinalDocument.ts +0 -187
  566. package/src/utils/signature/populateSignedProperties.ts +0 -87
  567. package/src/utils/signature/sign.ts +0 -51
  568. package/src/utils/signature/transform.ts +0 -99
  569. package/test/canonicalize.test.ts +0 -110
  570. package/test/hashCert.test.ts +0 -95
  571. package/test/hashSignedProperties.test.ts +0 -140
  572. package/test/populateFinalDocument.test.ts +0 -218
  573. package/test/populateSignedProperties.test.ts +0 -155
  574. package/test/sign.test.ts +0 -70
  575. package/test/transform.test.ts +0 -158
@@ -1,3 +1,3 @@
1
- import { platformLogin } from "../../platformLogin-DsxWWUXr.js";
1
+ import { platformLogin } from "../../platformLogin-f0bNAoZI.js";
2
2
 
3
3
  export { platformLogin };
@@ -0,0 +1,62 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const crypto = require_chunk.__toESM(require("crypto"));
3
+
4
+ //#region src/utils/certificate.ts
5
+ /**
6
+ * Extracts certificate information from PEM certificate
7
+ * Converts hex serial number to decimal as required by MyInvois
8
+ *
9
+ * @param certificatePem - Certificate in PEM format
10
+ * @returns Object with issuer name and decimal serial number
11
+ */
12
+ const extractCertificateInfo = (certificatePem) => {
13
+ try {
14
+ const cert = new crypto.default.X509Certificate(certificatePem);
15
+ const serialNumberHex = cert.serialNumber;
16
+ const serialNumberDecimal = BigInt("0x" + serialNumberHex).toString();
17
+ return {
18
+ issuerName: cert.issuer,
19
+ serialNumber: serialNumberDecimal
20
+ };
21
+ } catch (error) {
22
+ throw new Error(`Failed to extract certificate info: ${error}`);
23
+ }
24
+ };
25
+ /**
26
+ * Validates that certificate and private key form a valid pair
27
+ *
28
+ * @param certificatePem - Certificate in PEM format
29
+ * @param privateKeyPem - Private key in PEM format
30
+ * @returns Boolean indicating if key pair is valid
31
+ */
32
+ const validateKeyPair = (certificatePem, privateKeyPem) => {
33
+ try {
34
+ const cert = new crypto.default.X509Certificate(certificatePem);
35
+ const publicKey = cert.publicKey;
36
+ const testData = "validation-test-data";
37
+ const signer = crypto.default.createSign("RSA-SHA256");
38
+ signer.update(testData);
39
+ const signature = signer.sign(privateKeyPem);
40
+ const verifier = crypto.default.createVerify("RSA-SHA256");
41
+ verifier.update(testData);
42
+ return verifier.verify(publicKey, signature);
43
+ } catch (error) {
44
+ console.error("Key pair validation failed:", error);
45
+ return false;
46
+ }
47
+ };
48
+
49
+ //#endregion
50
+ Object.defineProperty(exports, 'extractCertificateInfo', {
51
+ enumerable: true,
52
+ get: function () {
53
+ return extractCertificateInfo;
54
+ }
55
+ });
56
+ Object.defineProperty(exports, 'validateKeyPair', {
57
+ enumerable: true,
58
+ get: function () {
59
+ return validateKeyPair;
60
+ }
61
+ });
62
+ //# sourceMappingURL=certificate-DFK-788s.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-DFK-788s.cjs","names":["certificatePem: string","privateKeyPem: string"],"sources":["../src/utils/certificate.ts"],"sourcesContent":["import crypto from 'crypto'\n\n/**\n * Extracts certificate information from PEM certificate\n * Converts hex serial number to decimal as required by MyInvois\n *\n * @param certificatePem - Certificate in PEM format\n * @returns Object with issuer name and decimal serial number\n */\nexport const extractCertificateInfo = (\n certificatePem: string,\n): {\n issuerName: string\n serialNumber: string\n} => {\n try {\n const cert = new crypto.X509Certificate(certificatePem)\n\n // Convert hex serial number to decimal (MyInvois requirement)\n const serialNumberHex = cert.serialNumber\n const serialNumberDecimal = BigInt('0x' + serialNumberHex).toString()\n\n return {\n issuerName: cert.issuer,\n serialNumber: serialNumberDecimal,\n }\n } catch (error) {\n throw new Error(`Failed to extract certificate info: ${error}`)\n }\n}\n\n/**\n * Validates that certificate and private key form a valid pair\n *\n * @param certificatePem - Certificate in PEM format\n * @param privateKeyPem - Private key in PEM format\n * @returns Boolean indicating if key pair is valid\n */\nexport const validateKeyPair = (\n certificatePem: string,\n privateKeyPem: string,\n): boolean => {\n try {\n const cert = new crypto.X509Certificate(certificatePem)\n const publicKey = cert.publicKey\n\n // Test signature/verification cycle\n const testData = 'validation-test-data'\n const signer = crypto.createSign('RSA-SHA256')\n signer.update(testData)\n const signature = signer.sign(privateKeyPem)\n\n const verifier = crypto.createVerify('RSA-SHA256')\n verifier.update(testData)\n return verifier.verify(publicKey, signature)\n } catch (error) {\n console.error('Key pair validation failed:', error)\n return false\n }\n}\n"],"mappings":";;;;;;;;;;;AASA,MAAa,yBAAyB,CACpCA,mBAIG;AACH,KAAI;EACF,MAAM,OAAO,IAAI,eAAO,gBAAgB;EAGxC,MAAM,kBAAkB,KAAK;EAC7B,MAAM,sBAAsB,OAAO,OAAO,gBAAgB,CAAC,UAAU;AAErE,SAAO;GACL,YAAY,KAAK;GACjB,cAAc;EACf;CACF,SAAQ,OAAO;AACd,QAAM,IAAI,OAAO,sCAAsC,MAAM;CAC9D;AACF;;;;;;;;AASD,MAAa,kBAAkB,CAC7BA,gBACAC,kBACY;AACZ,KAAI;EACF,MAAM,OAAO,IAAI,eAAO,gBAAgB;EACxC,MAAM,YAAY,KAAK;EAGvB,MAAM,WAAW;EACjB,MAAM,SAAS,eAAO,WAAW,aAAa;AAC9C,SAAO,OAAO,SAAS;EACvB,MAAM,YAAY,OAAO,KAAK,cAAc;EAE5C,MAAM,WAAW,eAAO,aAAa,aAAa;AAClD,WAAS,OAAO,SAAS;AACzB,SAAO,SAAS,OAAO,WAAW,UAAU;CAC7C,SAAQ,OAAO;AACd,UAAQ,MAAM,+BAA+B,MAAM;AACnD,SAAO;CACR;AACF"}
@@ -0,0 +1,49 @@
1
+ import crypto from "crypto";
2
+
3
+ //#region src/utils/certificate.ts
4
+ /**
5
+ * Extracts certificate information from PEM certificate
6
+ * Converts hex serial number to decimal as required by MyInvois
7
+ *
8
+ * @param certificatePem - Certificate in PEM format
9
+ * @returns Object with issuer name and decimal serial number
10
+ */
11
+ const extractCertificateInfo = (certificatePem) => {
12
+ try {
13
+ const cert = new crypto.X509Certificate(certificatePem);
14
+ const serialNumberHex = cert.serialNumber;
15
+ const serialNumberDecimal = BigInt("0x" + serialNumberHex).toString();
16
+ return {
17
+ issuerName: cert.issuer,
18
+ serialNumber: serialNumberDecimal
19
+ };
20
+ } catch (error) {
21
+ throw new Error(`Failed to extract certificate info: ${error}`);
22
+ }
23
+ };
24
+ /**
25
+ * Validates that certificate and private key form a valid pair
26
+ *
27
+ * @param certificatePem - Certificate in PEM format
28
+ * @param privateKeyPem - Private key in PEM format
29
+ * @returns Boolean indicating if key pair is valid
30
+ */
31
+ const validateKeyPair = (certificatePem, privateKeyPem) => {
32
+ try {
33
+ const cert = new crypto.X509Certificate(certificatePem);
34
+ const publicKey = cert.publicKey;
35
+ const testData = "validation-test-data";
36
+ const signer = crypto.createSign("RSA-SHA256");
37
+ signer.update(testData);
38
+ const signature = signer.sign(privateKeyPem);
39
+ const verifier = crypto.createVerify("RSA-SHA256");
40
+ verifier.update(testData);
41
+ return verifier.verify(publicKey, signature);
42
+ } catch (error) {
43
+ console.error("Key pair validation failed:", error);
44
+ return false;
45
+ }
46
+ };
47
+
48
+ //#endregion
49
+ export { extractCertificateInfo, validateKeyPair };
@@ -114,5 +114,4 @@ interface Classification {
114
114
  description: string;
115
115
  }
116
116
  //#endregion
117
- export { Classification, ClassificationCode, ClassificationCodeEnum };
118
- //# sourceMappingURL=classification-codes-C2X4xW5-.d.ts.map
117
+ export { Classification, ClassificationCode, ClassificationCodeEnum };
@@ -539,5 +539,4 @@ interface Country {
539
539
  name: string;
540
540
  }
541
541
  //#endregion
542
- export { Country, CountryCode, CountryCodeEnum, CountryNameEnum };
543
- //# sourceMappingURL=country-code-DsI8Mbzx.d.ts.map
542
+ export { Country, CountryCode, CountryCodeEnum, CountryNameEnum };
@@ -204,5 +204,4 @@ interface Currency {
204
204
  name: string;
205
205
  }
206
206
  //#endregion
207
- export { Currency, CurrencyCode, CurrencyCodeEnum };
208
- //# sourceMappingURL=currencies-DKuDflOO.d.ts.map
207
+ export { Currency, CurrencyCode, CurrencyCodeEnum };
@@ -0,0 +1,472 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const crypto = require_chunk.__toESM(require("crypto"));
3
+
4
+ //#region src/utils/document.ts
5
+ /**
6
+ * MyInvois v1.1 Document Generation and Signing Utilities
7
+ * Strictly follows: https://sdk.myinvois.hasil.gov.my/documents/invoice-v1-1
8
+ * JSON Signature Guide: https://sdk.myinvois.hasil.gov.my/signature-creation-json/
9
+ */
10
+ /**
11
+ * Helper function to recursively sort object keys for JSON canonicalization
12
+ */
13
+ function sortObjectKeys(obj) {
14
+ if (obj === null || typeof obj !== "object") return obj;
15
+ if (Array.isArray(obj)) return obj.map(sortObjectKeys);
16
+ const sortedObj = {};
17
+ const keys = Object.keys(obj).sort();
18
+ for (const key of keys) sortedObj[key] = sortObjectKeys(obj[key]);
19
+ return sortedObj;
20
+ }
21
+ /**
22
+ * Enhanced canonicalization following MyInvois specification exactly
23
+ * Key changes: ensure consistent ordering and formatting
24
+ */
25
+ const canonicalizeJSON = (obj) => {
26
+ const sortedObj = sortObjectKeys(obj);
27
+ return JSON.stringify(sortedObj, null, 0);
28
+ };
29
+ /**
30
+ * Generates a clean invoice object following MyInvois v1.1 specification exactly
31
+ * This is the base invoice structure WITHOUT signature elements (for hash calculation)
32
+ *
33
+ * Key requirements from working documents:
34
+ * - All mandatory fields must be present
35
+ * - Many optional fields must be present even if empty
36
+ * - Specific field ordering and structure
37
+ * - Correct listID values (e.g., "3166-1" not "ISO3166-1")
38
+ */
39
+ const generateCleanInvoiceObject = (invoice) => {
40
+ return {
41
+ ID: [{ _: invoice.eInvoiceCodeOrNumber }],
42
+ IssueDate: [{ _: invoice.eInvoiceDate }],
43
+ IssueTime: [{ _: invoice.eInvoiceTime }],
44
+ InvoiceTypeCode: [{
45
+ _: invoice.eInvoiceTypeCode,
46
+ listVersionID: invoice.eInvoiceVersion || "1.1"
47
+ }],
48
+ DocumentCurrencyCode: [{ _: invoice.invoiceCurrencyCode }],
49
+ AccountingSupplierParty: [{ Party: [{
50
+ IndustryClassificationCode: [{
51
+ _: "47900",
52
+ name: "Other retail sale in non-specialised stores"
53
+ }],
54
+ PartyIdentification: [{ ID: [{
55
+ _: invoice.supplier.tin,
56
+ schemeID: "TIN"
57
+ }] }, { ID: [{
58
+ _: invoice.supplier.registrationNumber,
59
+ schemeID: invoice.supplier.registrationType || "NRIC"
60
+ }] }],
61
+ PostalAddress: [{
62
+ CityName: [{ _: invoice.supplier.address.cityName }],
63
+ CountrySubentityCode: [{ _: invoice.supplier.address.state }],
64
+ AddressLine: [{ Line: [{ _: invoice.supplier.address.addressLine0 }] }],
65
+ Country: [{ IdentificationCode: [{
66
+ _: invoice.supplier.address.country || "MYS",
67
+ listID: "3166-1",
68
+ listAgencyID: "ISO"
69
+ }] }]
70
+ }],
71
+ PartyLegalEntity: [{ RegistrationName: [{ _: invoice.supplier.name }] }],
72
+ Contact: [{ Telephone: [{ _: invoice.supplier.contactNumber || "" }] }]
73
+ }] }],
74
+ AccountingCustomerParty: [{ Party: [{
75
+ PartyIdentification: [
76
+ { ID: [{
77
+ _: invoice.buyer.tin,
78
+ schemeID: "TIN"
79
+ }] },
80
+ { ID: [{
81
+ _: invoice.buyer.registrationNumber,
82
+ schemeID: invoice.buyer.registrationType || "NRIC"
83
+ }] },
84
+ { ID: [{
85
+ _: invoice.buyer.sstRegistrationNumber || "NA",
86
+ schemeID: "SST"
87
+ }] }
88
+ ],
89
+ PostalAddress: [{
90
+ CityName: [{ _: invoice.buyer.address.cityName }],
91
+ CountrySubentityCode: [{ _: invoice.buyer.address.state }],
92
+ AddressLine: [{ Line: [{ _: invoice.buyer.address.addressLine0 }] }],
93
+ Country: [{ IdentificationCode: [{
94
+ _: invoice.buyer.address.country || "MYS",
95
+ listID: "3166-1",
96
+ listAgencyID: "ISO"
97
+ }] }]
98
+ }],
99
+ PartyLegalEntity: [{ RegistrationName: [{ _: invoice.buyer.name }] }],
100
+ Contact: [{ Telephone: [{ _: invoice.buyer.contactNumber || "" }] }]
101
+ }] }],
102
+ TaxTotal: [{
103
+ TaxAmount: [{
104
+ _: invoice.taxTotal.taxAmount,
105
+ currencyID: invoice.invoiceCurrencyCode
106
+ }],
107
+ TaxSubtotal: [{
108
+ TaxableAmount: [{
109
+ _: invoice.legalMonetaryTotal.taxExclusiveAmount,
110
+ currencyID: invoice.invoiceCurrencyCode
111
+ }],
112
+ TaxAmount: [{
113
+ _: invoice.taxTotal.taxAmount,
114
+ currencyID: invoice.invoiceCurrencyCode
115
+ }],
116
+ TaxCategory: [{
117
+ ID: [{ _: invoice.invoiceLineItems[0]?.taxType || "01" }],
118
+ TaxScheme: [{ ID: [{
119
+ _: "OTH",
120
+ schemeAgencyID: "6",
121
+ schemeID: "UN/ECE 5153"
122
+ }] }]
123
+ }]
124
+ }]
125
+ }],
126
+ LegalMonetaryTotal: [{
127
+ LineExtensionAmount: [{
128
+ _: invoice.legalMonetaryTotal.taxExclusiveAmount,
129
+ currencyID: invoice.invoiceCurrencyCode
130
+ }],
131
+ TaxExclusiveAmount: [{
132
+ _: invoice.legalMonetaryTotal.taxExclusiveAmount,
133
+ currencyID: invoice.invoiceCurrencyCode
134
+ }],
135
+ TaxInclusiveAmount: [{
136
+ _: invoice.legalMonetaryTotal.taxInclusiveAmount,
137
+ currencyID: invoice.invoiceCurrencyCode
138
+ }],
139
+ PayableAmount: [{
140
+ _: invoice.legalMonetaryTotal.payableAmount,
141
+ currencyID: invoice.invoiceCurrencyCode
142
+ }]
143
+ }],
144
+ InvoiceLine: invoice.invoiceLineItems.map((item, index) => ({
145
+ ID: [{ _: (index + 1).toString() }],
146
+ Item: [{
147
+ CommodityClassification: [{ ItemClassificationCode: [{
148
+ _: item.itemClassificationCode,
149
+ listID: "CLASS"
150
+ }] }],
151
+ Description: [{ _: item.itemDescription }]
152
+ }],
153
+ ItemPriceExtension: [{ Amount: [{
154
+ _: item.totalTaxableAmountPerLine,
155
+ currencyID: invoice.invoiceCurrencyCode
156
+ }] }],
157
+ LineExtensionAmount: [{
158
+ _: item.totalTaxableAmountPerLine,
159
+ currencyID: invoice.invoiceCurrencyCode
160
+ }],
161
+ Price: [{ PriceAmount: [{
162
+ _: item.unitPrice,
163
+ currencyID: invoice.invoiceCurrencyCode
164
+ }] }],
165
+ TaxTotal: [{
166
+ TaxAmount: [{
167
+ _: item.taxAmount,
168
+ currencyID: invoice.invoiceCurrencyCode
169
+ }],
170
+ TaxSubtotal: [{
171
+ TaxableAmount: [{
172
+ _: item.totalTaxableAmountPerLine,
173
+ currencyID: invoice.invoiceCurrencyCode
174
+ }],
175
+ TaxAmount: [{
176
+ _: item.taxAmount,
177
+ currencyID: invoice.invoiceCurrencyCode
178
+ }],
179
+ TaxCategory: [{
180
+ ID: [{ _: item.taxType }],
181
+ TaxScheme: [{ ID: [{
182
+ _: "OTH",
183
+ schemeAgencyID: "6",
184
+ schemeID: "UN/ECE 5153"
185
+ }] }]
186
+ }]
187
+ }]
188
+ }]
189
+ })),
190
+ TaxExchangeRate: invoice.currencyExchangeRate ? [{
191
+ SourceCurrencyCode: [{ _: invoice.invoiceCurrencyCode }],
192
+ TargetCurrencyCode: [{ _: "MYR" }],
193
+ CalculationRate: [{ _: invoice.currencyExchangeRate }]
194
+ }] : void 0
195
+ };
196
+ };
197
+ /**
198
+ * Generates the complete UBL document structure with namespace declarations
199
+ */
200
+ const generateCleanUBLDocument = (invoices) => {
201
+ return {
202
+ _D: "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
203
+ _A: "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2",
204
+ _B: "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2",
205
+ Invoice: invoices.map(generateCleanInvoiceObject)
206
+ };
207
+ };
208
+ /**
209
+ * Step 2: Calculate Document Digest
210
+ * FIXED: Remove UBLExtensions and Signature before hashing (DS322)
211
+ * Based on working implementation pattern
212
+ */
213
+ const calculateDocumentDigest = (invoices) => {
214
+ const cleanDocument = generateCleanUBLDocument(invoices);
215
+ const documentForHashing = JSON.parse(JSON.stringify(cleanDocument));
216
+ if (documentForHashing.Invoice && Array.isArray(documentForHashing.Invoice)) documentForHashing.Invoice.forEach((invoice) => {
217
+ delete invoice.UBLExtensions;
218
+ delete invoice.Signature;
219
+ });
220
+ const documentString = JSON.stringify(documentForHashing);
221
+ const hash = crypto.default.createHash("sha256");
222
+ hash.update(documentString, "utf8");
223
+ return hash.digest("base64");
224
+ };
225
+ /**
226
+ * Step 4: Calculate Certificate Digest
227
+ * Enhanced to handle certificate content properly
228
+ */
229
+ const calculateCertificateDigest = (certificatePem) => {
230
+ const certificateContent = certificatePem.replace(/-----BEGIN CERTIFICATE-----/g, "").replace(/-----END CERTIFICATE-----/g, "").replace(/\s+/g, "");
231
+ const certificateBinary = Buffer.from(certificateContent, "base64");
232
+ const hash = crypto.default.createHash("sha256");
233
+ hash.update(certificateBinary);
234
+ return hash.digest("base64");
235
+ };
236
+ /**
237
+ * Enhanced certificate info extraction with better error handling
238
+ * FIXED: Normalize issuer name format to match MyInvois expectations (DS326)
239
+ */
240
+ const extractCertificateInfo = (certificatePem) => {
241
+ try {
242
+ const cert = new crypto.X509Certificate(certificatePem);
243
+ const serialNumberHex = cert.serialNumber;
244
+ const normalizeDistinguishedName = (dn) => {
245
+ const normalized = dn.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).join(", ");
246
+ return normalized.replace(/\s*=\s*/g, "=").replace(/,\s+/g, ", ").replace(/\r/g, "").replace(/\s{2,}/g, " ").trim();
247
+ };
248
+ const formatSerialNumber = (serialHex) => {
249
+ const decimal = BigInt("0x" + serialHex).toString();
250
+ return decimal;
251
+ };
252
+ return {
253
+ issuerName: normalizeDistinguishedName(cert.issuer),
254
+ serialNumber: formatSerialNumber(serialNumberHex),
255
+ subjectName: normalizeDistinguishedName(cert.subject)
256
+ };
257
+ } catch (error) {
258
+ throw new Error(`Failed to extract certificate info: ${error instanceof Error ? error.message : String(error)}`);
259
+ }
260
+ };
261
+ /**
262
+ * Step 5: Create SignedProperties with enhanced structure
263
+ * FIXED: Simplified structure to match MyInvois expectations (DS320)
264
+ * Following MyInvois JSON signature specification exactly
265
+ */
266
+ const createSignedProperties = (certificateDigest, signingTime, issuerName, serialNumber) => {
267
+ return { SignedProperties: [{
268
+ Id: "id-xades-signed-props",
269
+ SignedSignatureProperties: [{
270
+ SigningTime: [{ _: signingTime }],
271
+ SigningCertificate: [{ Cert: [{
272
+ CertDigest: [{
273
+ DigestMethod: [{ Algorithm: "http://www.w3.org/2001/04/xmlenc#sha256" }],
274
+ DigestValue: [{ _: certificateDigest }]
275
+ }],
276
+ IssuerSerial: [{
277
+ X509IssuerName: [{ _: issuerName }],
278
+ X509SerialNumber: [{ _: serialNumber }]
279
+ }]
280
+ }] }]
281
+ }]
282
+ }] };
283
+ };
284
+ /**
285
+ * Step 6: Calculate SignedProperties Digest
286
+ * FIXED: Add Target wrapper and use direct JSON stringify (DS320)
287
+ * Based on working implementation pattern
288
+ */
289
+ const calculateSignedPropertiesDigest = (signedProperties) => {
290
+ const signedPropertiesWithTarget = {
291
+ Target: "signature",
292
+ SignedProperties: signedProperties.SignedProperties
293
+ };
294
+ const signedPropertiesString = JSON.stringify(signedPropertiesWithTarget);
295
+ const hash = crypto.default.createHash("sha256");
296
+ hash.update(signedPropertiesString, "utf8");
297
+ return hash.digest("base64");
298
+ };
299
+ /**
300
+ * Step 3: Create SignedInfo and calculate signature
301
+ * Enhanced with better structure and signature generation
302
+ */
303
+ const createSignedInfoAndSign = (docDigest, propsDigest, privateKeyPem) => {
304
+ const signedInfo = {
305
+ CanonicalizationMethod: [{
306
+ _: "",
307
+ Algorithm: "http://www.w3.org/2006/12/xml-c14n11"
308
+ }],
309
+ SignatureMethod: [{
310
+ _: "",
311
+ Algorithm: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
312
+ }],
313
+ Reference: [{
314
+ Id: "id-doc-signed-data",
315
+ Type: "",
316
+ URI: "",
317
+ DigestMethod: [{
318
+ _: "",
319
+ Algorithm: "http://www.w3.org/2001/04/xmlenc#sha256"
320
+ }],
321
+ DigestValue: [{ _: docDigest }]
322
+ }, {
323
+ Id: "id-xades-signed-props",
324
+ Type: "http://uri.etsi.org/01903/v1.3.2#SignedProperties",
325
+ URI: "#id-xades-signed-props",
326
+ DigestMethod: [{
327
+ _: "",
328
+ Algorithm: "http://www.w3.org/2001/04/xmlenc#sha256"
329
+ }],
330
+ DigestValue: [{ _: propsDigest }]
331
+ }]
332
+ };
333
+ const signedInfoString = JSON.stringify(signedInfo);
334
+ try {
335
+ const signer = crypto.default.createSign("RSA-SHA256");
336
+ signer.update(signedInfoString, "utf8");
337
+ const signatureValue = signer.sign(privateKeyPem, "base64");
338
+ return {
339
+ signedInfo,
340
+ signatureValue
341
+ };
342
+ } catch (error) {
343
+ throw new Error(`Signature generation failed: ${error instanceof Error ? error.message : String(error)}`);
344
+ }
345
+ };
346
+ /**
347
+ * Complete document generation with signatures
348
+ * Follows the complete MyInvois JSON signature creation process (Steps 1-7)
349
+ */
350
+ const generateCompleteDocument = (invoices, signingCredentials) => {
351
+ try {
352
+ const docDigest = calculateDocumentDigest(invoices);
353
+ const signingTime = (/* @__PURE__ */ new Date()).toISOString();
354
+ const certInfo = extractCertificateInfo(signingCredentials.certificatePem);
355
+ const certificateDigest = calculateCertificateDigest(signingCredentials.certificatePem);
356
+ const signedProperties = createSignedProperties(certificateDigest, signingTime, certInfo.issuerName, certInfo.serialNumber);
357
+ const propsDigest = calculateSignedPropertiesDigest(signedProperties);
358
+ const { signedInfo, signatureValue } = createSignedInfoAndSign(docDigest, propsDigest, signingCredentials.privateKeyPem);
359
+ const certificate = signingCredentials.certificatePem.replace(/-----BEGIN CERTIFICATE-----/g, "").replace(/-----END CERTIFICATE-----/g, "").replace(/\s+/g, "");
360
+ const signedInvoices = invoices.map((invoice) => {
361
+ const cleanInvoice = generateCleanInvoiceObject(invoice);
362
+ return {
363
+ ...cleanInvoice,
364
+ UBLExtensions: [{ UBLExtension: [{
365
+ ExtensionURI: [{ _: "urn:oasis:names:specification:ubl:dsig:enveloped:xades" }],
366
+ ExtensionContent: [{ UBLDocumentSignatures: [{ SignatureInformation: [{
367
+ ID: [{ _: "urn:oasis:names:specification:ubl:signature:1" }],
368
+ ReferencedSignatureID: [{ _: "urn:oasis:names:specification:ubl:signature:Invoice" }],
369
+ Signature: [{
370
+ Id: "signature",
371
+ Object: [{ QualifyingProperties: [{
372
+ Target: "signature",
373
+ SignedProperties: signedProperties.SignedProperties
374
+ }] }],
375
+ KeyInfo: [{ X509Data: [{
376
+ X509Certificate: [{ _: certificate }],
377
+ X509SubjectName: [{ _: certInfo.subjectName }],
378
+ X509IssuerSerial: [{
379
+ X509IssuerName: [{ _: certInfo.issuerName }],
380
+ X509SerialNumber: [{ _: certInfo.serialNumber }]
381
+ }]
382
+ }] }],
383
+ SignatureValue: [{ _: signatureValue }],
384
+ SignedInfo: [signedInfo]
385
+ }]
386
+ }] }] }]
387
+ }] }],
388
+ Signature: [{
389
+ ID: [{ _: "urn:oasis:names:specification:ubl:signature:Invoice" }],
390
+ SignatureMethod: [{ _: "urn:oasis:names:specification:ubl:dsig:enveloped:xades" }]
391
+ }]
392
+ };
393
+ });
394
+ return {
395
+ _D: "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
396
+ _A: "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2",
397
+ _B: "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2",
398
+ Invoice: signedInvoices
399
+ };
400
+ } catch (error) {
401
+ throw new Error(`Document generation failed: ${error instanceof Error ? error.message : String(error)}`);
402
+ }
403
+ };
404
+
405
+ //#endregion
406
+ Object.defineProperty(exports, 'calculateCertificateDigest', {
407
+ enumerable: true,
408
+ get: function () {
409
+ return calculateCertificateDigest;
410
+ }
411
+ });
412
+ Object.defineProperty(exports, 'calculateDocumentDigest', {
413
+ enumerable: true,
414
+ get: function () {
415
+ return calculateDocumentDigest;
416
+ }
417
+ });
418
+ Object.defineProperty(exports, 'calculateSignedPropertiesDigest', {
419
+ enumerable: true,
420
+ get: function () {
421
+ return calculateSignedPropertiesDigest;
422
+ }
423
+ });
424
+ Object.defineProperty(exports, 'canonicalizeJSON', {
425
+ enumerable: true,
426
+ get: function () {
427
+ return canonicalizeJSON;
428
+ }
429
+ });
430
+ Object.defineProperty(exports, 'createSignedInfoAndSign', {
431
+ enumerable: true,
432
+ get: function () {
433
+ return createSignedInfoAndSign;
434
+ }
435
+ });
436
+ Object.defineProperty(exports, 'createSignedProperties', {
437
+ enumerable: true,
438
+ get: function () {
439
+ return createSignedProperties;
440
+ }
441
+ });
442
+ Object.defineProperty(exports, 'extractCertificateInfo', {
443
+ enumerable: true,
444
+ get: function () {
445
+ return extractCertificateInfo;
446
+ }
447
+ });
448
+ Object.defineProperty(exports, 'generateCleanInvoiceObject', {
449
+ enumerable: true,
450
+ get: function () {
451
+ return generateCleanInvoiceObject;
452
+ }
453
+ });
454
+ Object.defineProperty(exports, 'generateCleanUBLDocument', {
455
+ enumerable: true,
456
+ get: function () {
457
+ return generateCleanUBLDocument;
458
+ }
459
+ });
460
+ Object.defineProperty(exports, 'generateCompleteDocument', {
461
+ enumerable: true,
462
+ get: function () {
463
+ return generateCompleteDocument;
464
+ }
465
+ });
466
+ Object.defineProperty(exports, 'sortObjectKeys', {
467
+ enumerable: true,
468
+ get: function () {
469
+ return sortObjectKeys;
470
+ }
471
+ });
472
+ //# sourceMappingURL=document-DMIMRJV0.cjs.map