@ripwords/myinvois-client 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/dist/api/documentManagement.d.ts +89 -0
  2. package/dist/api/documentManagement.js +3 -0
  3. package/dist/api/documentSubmission.d.ts +92 -0
  4. package/dist/api/documentSubmission.js +4 -0
  5. package/dist/api/documentTypeManagement.d.ts +70 -0
  6. package/dist/api/documentTypeManagement.js +3 -0
  7. package/dist/api/notificationManagement.d.ts +68 -0
  8. package/dist/api/notificationManagement.js +3 -0
  9. package/dist/api/platformLogin.d.ts +68 -0
  10. package/dist/api/platformLogin.js +3 -0
  11. package/dist/api/taxpayerValidation.d.ts +79 -0
  12. package/dist/api/taxpayerValidation.js +3 -0
  13. package/dist/{certificate-DFK-788s.cjs → certificate-CxsfE91s.cjs} +1 -1
  14. package/dist/{certificate-DFK-788s.cjs.map → certificate-CxsfE91s.cjs.map} +1 -1
  15. package/dist/{document-CARHiGdp.cjs → document-vDphtJTv.cjs} +1 -1
  16. package/dist/{document-CARHiGdp.cjs.map → document-vDphtJTv.cjs.map} +1 -1
  17. package/dist/documentManagement-CIQPkmyb.js +35 -0
  18. package/dist/documentManagement-DQ7JEcBq.cjs +54 -0
  19. package/dist/documentManagement-DQ7JEcBq.cjs.map +1 -0
  20. package/dist/documentSubmission-BdJxIB_I.js +119 -0
  21. package/dist/documentSubmission-D5TC0MPC.cjs +137 -0
  22. package/dist/documentSubmission-D5TC0MPC.cjs.map +1 -0
  23. package/dist/documentTypeManagement-DXRLfTsW.cjs +41 -0
  24. package/dist/documentTypeManagement-DXRLfTsW.cjs.map +1 -0
  25. package/dist/documentTypeManagement-tojgXfm9.js +22 -0
  26. package/dist/{documents-i5EV868Y.d.ts → documents-BgXt86Qp.d.ts} +44 -7
  27. package/dist/{documents-CQy_uB6C.d.cts → documents-BqM9qOnB.d.cts} +39 -2
  28. package/dist/{getBaseUrl-CO7Jp27d.cjs → getBaseUrl-D2iJdUGL.cjs} +1 -1
  29. package/dist/{getBaseUrl-CO7Jp27d.cjs.map → getBaseUrl-D2iJdUGL.cjs.map} +1 -1
  30. package/dist/{index-D2_HVwCz.d.cts → index-Yr1QAbIF.d.cts} +1 -1
  31. package/dist/index.cjs +234 -131
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.ts +250 -60
  34. package/dist/index.js +234 -131
  35. package/dist/index10.cjs +196 -0
  36. package/dist/index10.cjs.map +1 -0
  37. package/dist/index11.cjs +0 -34
  38. package/dist/index12.cjs +16 -15
  39. package/dist/index12.cjs.map +1 -1
  40. package/dist/index14.cjs +0 -13
  41. package/dist/index15.cjs +28 -3
  42. package/dist/index15.cjs.map +1 -0
  43. package/dist/index16.cjs +24 -12
  44. package/dist/index16.cjs.map +1 -0
  45. package/dist/index17.cjs +0 -3
  46. package/dist/index18.cjs +28 -334
  47. package/dist/index18.cjs.map +1 -1
  48. package/dist/index19.cjs +18 -323
  49. package/dist/index19.cjs.map +1 -1
  50. package/dist/index2.cjs +4 -61
  51. package/dist/index20.cjs +0 -140
  52. package/dist/index21.cjs +0 -3
  53. package/dist/index22.cjs +0 -208
  54. package/dist/index23.cjs +9 -105
  55. package/dist/index23.cjs.map +1 -1
  56. package/dist/index24.cjs +3 -136
  57. package/dist/index25.cjs +12 -63
  58. package/dist/index26.cjs +2 -266
  59. package/dist/index27.cjs +325 -75
  60. package/dist/index27.cjs.map +1 -1
  61. package/dist/index28.cjs +136 -103
  62. package/dist/index28.cjs.map +1 -1
  63. package/dist/index29.cjs +203 -68
  64. package/dist/index29.cjs.map +1 -1
  65. package/dist/index3.cjs +5 -531
  66. package/dist/index30.cjs +104 -107
  67. package/dist/index30.cjs.map +1 -1
  68. package/dist/index31.cjs +132 -95
  69. package/dist/index31.cjs.map +1 -1
  70. package/dist/index32.cjs +59 -13
  71. package/dist/index32.cjs.map +1 -1
  72. package/dist/index33.cjs +262 -33
  73. package/dist/index33.cjs.map +1 -1
  74. package/dist/index34.cjs +74 -14
  75. package/dist/index34.cjs.map +1 -1
  76. package/dist/index35.cjs +102 -24
  77. package/dist/index35.cjs.map +1 -1
  78. package/dist/index36.cjs +68 -15
  79. package/dist/index36.cjs.map +1 -1
  80. package/dist/index37.cjs +107 -9
  81. package/dist/index37.cjs.map +1 -1
  82. package/dist/index38.cjs +95 -9
  83. package/dist/index38.cjs.map +1 -1
  84. package/dist/index39.cjs +11 -10
  85. package/dist/index39.cjs.map +1 -1
  86. package/dist/index4.cjs +4 -195
  87. package/dist/index40.cjs +31 -6
  88. package/dist/index40.cjs.map +1 -1
  89. package/dist/index41.cjs +12 -101
  90. package/dist/index41.cjs.map +1 -1
  91. package/dist/index42.cjs +22 -106
  92. package/dist/index42.cjs.map +1 -1
  93. package/dist/index43.cjs +13 -119
  94. package/dist/index43.cjs.map +1 -1
  95. package/dist/index44.cjs +7 -106
  96. package/dist/index44.cjs.map +1 -1
  97. package/dist/index45.cjs +7 -98
  98. package/dist/index45.cjs.map +1 -1
  99. package/dist/index46.cjs +10 -118
  100. package/dist/index46.cjs.map +1 -1
  101. package/dist/index47.cjs +6 -127
  102. package/dist/index47.cjs.map +1 -1
  103. package/dist/index48.cjs +101 -117
  104. package/dist/index48.cjs.map +1 -1
  105. package/dist/index49.cjs +106 -14
  106. package/dist/index49.cjs.map +1 -1
  107. package/dist/index5.cjs +3 -0
  108. package/dist/index50.cjs +119 -95
  109. package/dist/index50.cjs.map +1 -1
  110. package/dist/index51.cjs +106 -142
  111. package/dist/index51.cjs.map +1 -1
  112. package/dist/index52.cjs +98 -114
  113. package/dist/index52.cjs.map +1 -1
  114. package/dist/index53.cjs +118 -144
  115. package/dist/index53.cjs.map +1 -1
  116. package/dist/index54.cjs +127 -113
  117. package/dist/index54.cjs.map +1 -1
  118. package/dist/index55.cjs +117 -17
  119. package/dist/index55.cjs.map +1 -1
  120. package/dist/index56.cjs +14 -112
  121. package/dist/index56.cjs.map +1 -1
  122. package/dist/index57.cjs +95 -47
  123. package/dist/index57.cjs.map +1 -1
  124. package/dist/index58.cjs +142 -14
  125. package/dist/index58.cjs.map +1 -1
  126. package/dist/index59.cjs +114 -28
  127. package/dist/index59.cjs.map +1 -1
  128. package/dist/index6.cjs +2 -24
  129. package/dist/index60.cjs +144 -22
  130. package/dist/index60.cjs.map +1 -1
  131. package/dist/index61.cjs +113 -9
  132. package/dist/index61.cjs.map +1 -1
  133. package/dist/index61.cts.map +1 -1
  134. package/dist/index62.cjs +17 -8
  135. package/dist/index62.cjs.map +1 -1
  136. package/dist/index62.cts.map +1 -1
  137. package/dist/index63.cjs +112 -17
  138. package/dist/index63.cjs.map +1 -1
  139. package/dist/index63.cts.map +1 -1
  140. package/dist/index64.cjs +47 -412
  141. package/dist/index64.cjs.map +1 -1
  142. package/dist/index64.cts.map +1 -1
  143. package/dist/index65.cjs +14 -8
  144. package/dist/index65.cjs.map +1 -1
  145. package/dist/index65.cts.map +1 -1
  146. package/dist/index66.cjs +28 -9
  147. package/dist/index66.cjs.map +1 -1
  148. package/dist/index66.cts.map +1 -1
  149. package/dist/index67.cjs +29 -0
  150. package/dist/index67.cjs.map +1 -0
  151. package/dist/index67.cts.map +1 -0
  152. package/dist/index68.cjs +16 -0
  153. package/dist/index68.cjs.map +1 -0
  154. package/dist/{index60.cts.map → index68.cts.map} +1 -1
  155. package/dist/index69.cjs +15 -0
  156. package/dist/index69.cjs.map +1 -0
  157. package/dist/index69.cts.map +1 -0
  158. package/dist/index7.cjs +5 -0
  159. package/dist/index70.cjs +24 -0
  160. package/dist/index70.cjs.map +1 -0
  161. package/dist/index70.cts.map +1 -0
  162. package/dist/index71.cjs +419 -0
  163. package/dist/index71.cjs.map +1 -0
  164. package/dist/index71.cts.map +1 -0
  165. package/dist/index72.cjs +15 -0
  166. package/dist/index72.cjs.map +1 -0
  167. package/dist/index72.cts.map +1 -0
  168. package/dist/index73.cjs +16 -0
  169. package/dist/index73.cjs.map +1 -0
  170. package/dist/index73.cts.map +1 -0
  171. package/dist/index8.cjs +62 -0
  172. package/dist/{index2.cjs.map → index8.cjs.map} +1 -1
  173. package/dist/index9.cjs +523 -16
  174. package/dist/index9.cjs.map +1 -1
  175. package/dist/{msic-codes-C8PJVOaA.d.ts → msic-codes-CiPeemFK.d.ts} +10 -10
  176. package/dist/notificationManagement-CHDRVy8J.js +19 -0
  177. package/dist/notificationManagement-C_qrFwWL.cjs +26 -0
  178. package/dist/notificationManagement-C_qrFwWL.cjs.map +1 -0
  179. package/dist/notifications-B4l_qRj7.d.ts +62 -0
  180. package/dist/notifications-DdlEkprb.d.cts +63 -0
  181. package/dist/{platformLogin-PGzMhw1X.cjs → platformLogin-CPiPiVUh.cjs} +2 -2
  182. package/dist/platformLogin-CPiPiVUh.cjs.map +1 -0
  183. package/dist/{platformLogin-f0bNAoZI.js → platformLogin-Ck1Fge2n.js} +1 -1
  184. package/dist/taxpayer-D67d2zAC.d.ts +26 -0
  185. package/dist/taxpayer-sGkviG8J.d.cts +27 -0
  186. package/dist/taxpayerValidation-DI4B6kWx.js +54 -0
  187. package/dist/taxpayerValidation-DdeXCvPT.cjs +73 -0
  188. package/dist/taxpayerValidation-DdeXCvPT.cjs.map +1 -0
  189. package/dist/types/classification-codes.d.ts +1 -1
  190. package/dist/types/country-code.d.ts +1 -1
  191. package/dist/types/currencies.d.ts +1 -1
  192. package/dist/types/documents.d.ts +18 -18
  193. package/dist/types/e-invoice.d.ts +1 -1
  194. package/dist/types/index.d.ts +61 -58
  195. package/dist/types/msic/0X.d.ts +1 -1
  196. package/dist/types/msic/1X.d.ts +1 -1
  197. package/dist/types/msic/2X.d.ts +1 -1
  198. package/dist/types/msic/3X.d.ts +1 -1
  199. package/dist/types/msic/4X.d.ts +1 -1
  200. package/dist/types/msic/5X.d.ts +1 -1
  201. package/dist/types/msic/6X.d.ts +1 -1
  202. package/dist/types/msic/7X.d.ts +1 -1
  203. package/dist/types/msic/8X.d.ts +1 -1
  204. package/dist/types/msic/9X.d.ts +1 -1
  205. package/dist/types/msic-codes.d.ts +11 -11
  206. package/dist/types/notifications.d.ts +2 -0
  207. package/dist/types/payment-modes.d.ts +1 -1
  208. package/dist/types/signatures.d.ts +1 -1
  209. package/dist/types/state-codes.d.ts +1 -1
  210. package/dist/types/tax-types.d.ts +1 -1
  211. package/dist/types/taxpayer.d.ts +19 -0
  212. package/dist/types/unit/1X.d.ts +1 -1
  213. package/dist/types/unit/2X.d.ts +1 -1
  214. package/dist/types/unit/3X.d.ts +1 -1
  215. package/dist/types/unit/4X.d.ts +1 -1
  216. package/dist/types/unit/5X.d.ts +1 -1
  217. package/dist/types/unit/6X.d.ts +1 -1
  218. package/dist/types/unit/7X.d.ts +1 -1
  219. package/dist/types/unit/8X.d.ts +1 -1
  220. package/dist/types/unit/9X.d.ts +1 -1
  221. package/dist/types/unit/AX.d.ts +1 -1
  222. package/dist/types/unit/BX.d.ts +1 -1
  223. package/dist/types/unit/CX.d.ts +1 -1
  224. package/dist/types/unit/DX.d.ts +1 -1
  225. package/dist/types/unit/EX.d.ts +1 -1
  226. package/dist/types/unit/FX.d.ts +1 -1
  227. package/dist/types/unit/GX.d.ts +1 -1
  228. package/dist/types/unit/HX.d.ts +1 -1
  229. package/dist/types/unit/IX.d.ts +1 -1
  230. package/dist/types/unit/JX.d.ts +1 -1
  231. package/dist/types/unit/KX.d.ts +1 -1
  232. package/dist/types/unit/LX.d.ts +1 -1
  233. package/dist/types/unit/MX.d.ts +1 -1
  234. package/dist/types/unit/NX.d.ts +1 -1
  235. package/dist/types/unit/OX.d.ts +1 -1
  236. package/dist/types/unit/PX.d.ts +1 -1
  237. package/dist/types/unit/QX.d.ts +1 -1
  238. package/dist/types/unit/RX.d.ts +1 -1
  239. package/dist/types/unit/SX.d.ts +1 -1
  240. package/dist/types/unit/TX.d.ts +1 -1
  241. package/dist/types/unit/UX.d.ts +1 -1
  242. package/dist/types/unit/VX.d.ts +1 -1
  243. package/dist/types/unit/WX.d.ts +1 -1
  244. package/dist/types/unit/XX.d.ts +1 -1
  245. package/dist/types/unit/YX.d.ts +1 -1
  246. package/dist/types/unit/ZX.d.ts +1 -1
  247. package/dist/types/unit-types.d.ts +36 -36
  248. package/dist/types/utils.d.ts +2 -0
  249. package/dist/unit-types-VgYXIwTT.d.ts +55 -0
  250. package/dist/utils/certificate.js +1 -1
  251. package/dist/utils/document.d.ts +60 -57
  252. package/dist/utils/document.js +1 -1
  253. package/dist/utils/getBaseUrl.js +1 -1
  254. package/dist/utils/signature-diagnostics.d.ts +60 -57
  255. package/dist/utils/signature-diagnostics.js +1 -1
  256. package/dist/utils-B3mo51Zp.d.ts +4 -0
  257. package/dist/utils-Cdqbbzca.d.cts +5 -0
  258. package/package.json +5 -8
  259. package/.prettierrc +0 -8
  260. package/CHANGELOG.md +0 -152
  261. package/bun.lock +0 -460
  262. package/dist/api/platform/platformLogin.d.ts +0 -65
  263. package/dist/api/platform/platformLogin.js +0 -3
  264. package/dist/index11.cjs.map +0 -1
  265. package/dist/index14.cjs.map +0 -1
  266. package/dist/index20.cjs.map +0 -1
  267. package/dist/index22.cjs.map +0 -1
  268. package/dist/index24.cjs.map +0 -1
  269. package/dist/index25.cjs.map +0 -1
  270. package/dist/index26.cjs.map +0 -1
  271. package/dist/index3.cjs.map +0 -1
  272. package/dist/index4.cjs.map +0 -1
  273. package/dist/index58.cts.map +0 -1
  274. package/dist/index59.cts.map +0 -1
  275. package/dist/index6.cjs.map +0 -1
  276. package/dist/platformLogin-PGzMhw1X.cjs.map +0 -1
  277. package/dist/unit-types-B41YFOLT.d.ts +0 -55
  278. package/dist/utils/helpers.d.ts +0 -271
  279. package/dist/utils/helpers.js +0 -330
  280. package/myinvois-cert.conf.template +0 -23
  281. package/scripts/gen-cert.sh +0 -159
  282. package/src/api/platform/platformLogin.ts +0 -34
  283. package/src/index.ts +0 -530
  284. package/src/types/classification-codes.d.ts +0 -115
  285. package/src/types/country-code.d.ts +0 -790
  286. package/src/types/currencies.d.ts +0 -383
  287. package/src/types/documents.d.ts +0 -869
  288. package/src/types/e-invoice.d.ts +0 -41
  289. package/src/types/index.d.ts +0 -24
  290. package/src/types/msic/0X.d.ts +0 -408
  291. package/src/types/msic/1X.d.ts +0 -210
  292. package/src/types/msic/2X.d.ts +0 -266
  293. package/src/types/msic/3X.d.ts +0 -114
  294. package/src/types/msic/4X.d.ts +0 -520
  295. package/src/types/msic/5X.d.ts +0 -144
  296. package/src/types/msic/6X.d.ts +0 -200
  297. package/src/types/msic/7X.d.ts +0 -132
  298. package/src/types/msic/8X.d.ts +0 -210
  299. package/src/types/msic/9X.d.ts +0 -186
  300. package/src/types/msic-codes.d.ts +0 -31
  301. package/src/types/payment-modes.d.ts +0 -41
  302. package/src/types/signatures.d.ts +0 -169
  303. package/src/types/state-codes.d.ts +0 -59
  304. package/src/types/tax-types.d.ts +0 -39
  305. package/src/types/unit/1X.d.ts +0 -16
  306. package/src/types/unit/2X.d.ts +0 -62
  307. package/src/types/unit/3X.d.ts +0 -17
  308. package/src/types/unit/4X.d.ts +0 -44
  309. package/src/types/unit/5X.d.ts +0 -26
  310. package/src/types/unit/6X.d.ts +0 -12
  311. package/src/types/unit/7X.d.ts +0 -12
  312. package/src/types/unit/8X.d.ts +0 -15
  313. package/src/types/unit/9X.d.ts +0 -11
  314. package/src/types/unit/AX.d.ts +0 -202
  315. package/src/types/unit/BX.d.ts +0 -212
  316. package/src/types/unit/CX.d.ts +0 -238
  317. package/src/types/unit/DX.d.ts +0 -212
  318. package/src/types/unit/EX.d.ts +0 -196
  319. package/src/types/unit/FX.d.ts +0 -236
  320. package/src/types/unit/GX.d.ts +0 -254
  321. package/src/types/unit/HX.d.ts +0 -234
  322. package/src/types/unit/IX.d.ts +0 -28
  323. package/src/types/unit/JX.d.ts +0 -190
  324. package/src/types/unit/KX.d.ts +0 -284
  325. package/src/types/unit/LX.d.ts +0 -228
  326. package/src/types/unit/MX.d.ts +0 -288
  327. package/src/types/unit/NX.d.ts +0 -226
  328. package/src/types/unit/OX.d.ts +0 -34
  329. package/src/types/unit/PX.d.ts +0 -224
  330. package/src/types/unit/QX.d.ts +0 -94
  331. package/src/types/unit/RX.d.ts +0 -28
  332. package/src/types/unit/SX.d.ts +0 -56
  333. package/src/types/unit/TX.d.ts +0 -44
  334. package/src/types/unit/UX.d.ts +0 -14
  335. package/src/types/unit/VX.d.ts +0 -13
  336. package/src/types/unit/WX.d.ts +0 -34
  337. package/src/types/unit/XX.d.ts +0 -825
  338. package/src/types/unit/YX.d.ts +0 -17
  339. package/src/types/unit/ZX.d.ts +0 -19
  340. package/src/types/unit-types.d.ts +0 -86
  341. package/src/utils/base64.ts +0 -7
  342. package/src/utils/certificate.ts +0 -60
  343. package/src/utils/document.ts +0 -852
  344. package/src/utils/getBaseUrl.ts +0 -5
  345. package/src/utils/helpers.ts +0 -552
  346. package/src/utils/signature-diagnostics.ts +0 -583
  347. package/src/utils/validation.ts +0 -268
  348. package/test/MyInvoiClientWithRealData.test.ts +0 -40
  349. package/test/MyInvoisClient.test.ts +0 -204
  350. package/test/base64.test.ts +0 -43
  351. package/test/dynamicInvoiceFeatures.test.ts +0 -451
  352. package/test/signAndSubmitInvoice.test.ts +0 -452
  353. package/test/signature-diagnostics.test.ts +0 -130
  354. package/tsconfig.json +0 -39
  355. package/tsdown.config.ts +0 -31
  356. package/vitest.config.ts +0 -8
  357. /package/dist/{0X-CTIq3y3a.d.ts → 0X-DZnB0al0.d.ts} +0 -0
  358. /package/dist/{1X-BywXCqtn.d.ts → 1X-C72Wa4pk.d.ts} +0 -0
  359. /package/dist/{1X-Bu4oiv8D.d.ts → 1X-Dg5J6Bfg.d.ts} +0 -0
  360. /package/dist/{2X-3fSEGIuE.d.ts → 2X-CH89y3Af.d.ts} +0 -0
  361. /package/dist/{2X-DnG3FY1f.d.ts → 2X-D_qwTeDT.d.ts} +0 -0
  362. /package/dist/{3X-CLdmoel1.d.ts → 3X-BJHYxgxa.d.ts} +0 -0
  363. /package/dist/{3X-Ynjfgoll.d.ts → 3X-DryrwYRf.d.ts} +0 -0
  364. /package/dist/{4X-B5ePdMky.d.ts → 4X-BPMLRoDv.d.ts} +0 -0
  365. /package/dist/{4X-BTG6o1Gn.d.ts → 4X-BbZgoRHO.d.ts} +0 -0
  366. /package/dist/{5X-dhP6fyou.d.ts → 5X-Bv7M6KyG.d.ts} +0 -0
  367. /package/dist/{5X-CjSz1zxJ.d.ts → 5X-oQRBnO0f.d.ts} +0 -0
  368. /package/dist/{6X-B9KP_vEn.d.ts → 6X-B9I2XJa4.d.ts} +0 -0
  369. /package/dist/{6X-BHaY0TCf.d.ts → 6X-ZeZ8OB57.d.ts} +0 -0
  370. /package/dist/{7X-DtkQutx2.d.ts → 7X-Ckv9bbzG.d.ts} +0 -0
  371. /package/dist/{7X-C4eX_tAk.d.ts → 7X-Dvw2Z2VN.d.ts} +0 -0
  372. /package/dist/{8X-D6HTLShY.d.ts → 8X-BkgoX8dg.d.ts} +0 -0
  373. /package/dist/{8X-5n9seY3z.d.ts → 8X-C37BJTl6.d.ts} +0 -0
  374. /package/dist/{9X-CHZKsIdD.d.ts → 9X-Du0e44cq.d.ts} +0 -0
  375. /package/dist/{9X-Cpb6V4JC.d.ts → 9X-_XRgT2-_.d.ts} +0 -0
  376. /package/dist/{AX-C0w_r3PA.d.ts → AX-BSPLpkVT.d.ts} +0 -0
  377. /package/dist/{BX-RadlZ-6m.d.ts → BX-u4yMaIkz.d.ts} +0 -0
  378. /package/dist/{CX-CT1Zzb9D.d.ts → CX-BKZG0pVE.d.ts} +0 -0
  379. /package/dist/{DX-CtUeTKMM.d.ts → DX-CwA9WJAf.d.ts} +0 -0
  380. /package/dist/{EX-084Yu7Wt.d.ts → EX-BRNu1Ooi.d.ts} +0 -0
  381. /package/dist/{FX-BrbQM0CW.d.ts → FX-DBxjq6xY.d.ts} +0 -0
  382. /package/dist/{GX-gKj8iAAh.d.ts → GX-B3CvWNrP.d.ts} +0 -0
  383. /package/dist/{HX-9D-ZXTy5.d.ts → HX-D7FABgTv.d.ts} +0 -0
  384. /package/dist/{IX-DR4Fc92A.d.ts → IX-D3ZknsAB.d.ts} +0 -0
  385. /package/dist/{JX-DIKa9ma-.d.ts → JX-BRaZM3Gc.d.ts} +0 -0
  386. /package/dist/{KX-DpsJ_unT.d.ts → KX-B1K0OWoi.d.ts} +0 -0
  387. /package/dist/{LX-DeXPPWUX.d.ts → LX-CKRefinL.d.ts} +0 -0
  388. /package/dist/{MX-CKMjg_zK.d.ts → MX-DKmaeO9r.d.ts} +0 -0
  389. /package/dist/{NX-oYdb4NDo.d.ts → NX-CJL2Gn1U.d.ts} +0 -0
  390. /package/dist/{OX-Bid9es3D.d.ts → OX-Do2ap5v_.d.ts} +0 -0
  391. /package/dist/{PX-D7jy9CFk.d.ts → PX-_DOr_rm9.d.ts} +0 -0
  392. /package/dist/{QX-BFWOR4g3.d.ts → QX-HlXLkIki.d.ts} +0 -0
  393. /package/dist/{RX-XHgCyMV1.d.ts → RX-DVPGOVES.d.ts} +0 -0
  394. /package/dist/{SX-Cl8RN8oH.d.ts → SX-OGT3qwlS.d.ts} +0 -0
  395. /package/dist/{TX-ZymoIbtr.d.ts → TX-cPDINmZ5.d.ts} +0 -0
  396. /package/dist/{UX-D-Ndd1ov.d.ts → UX-Be3sqvPV.d.ts} +0 -0
  397. /package/dist/{VX-B-1b34r7.d.ts → VX-CoEuBNDK.d.ts} +0 -0
  398. /package/dist/{WX-0GuMjPNZ.d.ts → WX-DMvw__jH.d.ts} +0 -0
  399. /package/dist/{XX-CF2NANsy.d.ts → XX-DOA-10JW.d.ts} +0 -0
  400. /package/dist/{YX-B51BbNSg.d.ts → YX-F34sJ7Ik.d.ts} +0 -0
  401. /package/dist/{ZX-BMJS1iAv.d.ts → ZX-CDQOfsHh.d.ts} +0 -0
  402. /package/dist/{certificate-aooIRf9A.js → certificate-BDECQL9C.js} +0 -0
  403. /package/dist/{classification-codes-BKxV-rO9.d.ts → classification-codes-B1D5xbq5.d.ts} +0 -0
  404. /package/dist/{country-code-CQuaiQm2.d.ts → country-code-D42kAyNH.d.ts} +0 -0
  405. /package/dist/{currencies-BYJK-m6v.d.ts → currencies-CDveO_yz.d.ts} +0 -0
  406. /package/dist/{document-D6VKMAtx.js → document-BSuYbfXR.js} +0 -0
  407. /package/dist/{e-invoice-CmbLQkHw.d.ts → e-invoice-BxNC6V_j.d.ts} +0 -0
  408. /package/dist/{getBaseUrl-R3IdgCu3.js → getBaseUrl-BYkBwhQP.js} +0 -0
  409. /package/dist/{index-0-EvC6Nv.d.ts → index-FTgB2nM6.d.ts} +0 -0
  410. /package/dist/{payment-modes-BOTSRC_X.d.ts → payment-modes-NpE3OcCV.d.ts} +0 -0
  411. /package/dist/{signatures-W-_brwdb.d.ts → signatures-DOKNMiZI.d.ts} +0 -0
  412. /package/dist/{state-codes-oeFKlwXZ.d.ts → state-codes-VOFWhHA0.d.ts} +0 -0
  413. /package/dist/{tax-types-CsQ76JMf.d.ts → tax-types-ieqw5Ze7.d.ts} +0 -0
@@ -1,268 +0,0 @@
1
- import type { InvoiceV1_1 } from '../types/documents/index.js'
2
-
3
- /**
4
- * MyInvois Invoice Validation Utilities
5
- *
6
- * Provides comprehensive validation for invoice data before document generation
7
- * and submission to ensure compliance with MyInvois business rules and format requirements.
8
- */
9
-
10
- export interface ValidationResult {
11
- isValid: boolean
12
- errors: ValidationError[]
13
- warnings: ValidationWarning[]
14
- }
15
-
16
- export interface ValidationError {
17
- field: string
18
- code: string
19
- message: string
20
- severity: 'error' | 'warning'
21
- }
22
-
23
- export interface ValidationWarning extends ValidationError {
24
- severity: 'warning'
25
- }
26
-
27
- /**
28
- * Validates TIN format based on registration type
29
- */
30
- export const validateTIN = (
31
- tin: string,
32
- registrationType?: string,
33
- ): ValidationError[] => {
34
- const errors: ValidationError[] = []
35
-
36
- if (!tin) {
37
- errors.push({
38
- field: 'tin',
39
- code: 'TIN_REQUIRED',
40
- message: 'TIN is required',
41
- severity: 'error',
42
- })
43
- return errors
44
- }
45
-
46
- // TIN format validation based on type
47
- if (registrationType === 'BRN' && !tin.startsWith('C')) {
48
- errors.push({
49
- field: 'tin',
50
- code: 'TIN_FORMAT_INVALID',
51
- message: 'Company TIN should start with "C" for BRN registration',
52
- severity: 'warning',
53
- })
54
- }
55
-
56
- if (registrationType === 'NRIC' && !tin.startsWith('IG')) {
57
- errors.push({
58
- field: 'tin',
59
- code: 'TIN_FORMAT_INVALID',
60
- message: 'Individual TIN should start with "IG" for NRIC registration',
61
- severity: 'warning',
62
- })
63
- }
64
-
65
- // Length validation
66
- if (tin.length > 14) {
67
- errors.push({
68
- field: 'tin',
69
- code: 'TIN_LENGTH_INVALID',
70
- message: 'TIN cannot exceed 14 characters',
71
- severity: 'error',
72
- })
73
- }
74
-
75
- return errors
76
- }
77
-
78
- /**
79
- * Validates contact number format (E.164 standard)
80
- */
81
- export const validateContactNumber = (
82
- contactNumber: string,
83
- ): ValidationError[] => {
84
- const errors: ValidationError[] = []
85
-
86
- if (!contactNumber || contactNumber === 'NA') {
87
- return errors // Allow NA for consolidated e-invoices
88
- }
89
-
90
- // E.164 format validation
91
- const e164Regex = /^\+[1-9]\d{1,14}$/
92
- if (!e164Regex.test(contactNumber)) {
93
- errors.push({
94
- field: 'contactNumber',
95
- code: 'CONTACT_FORMAT_INVALID',
96
- message: 'Contact number must be in E.164 format (e.g., +60123456789)',
97
- severity: 'error',
98
- })
99
- }
100
-
101
- if (contactNumber.length < 8) {
102
- errors.push({
103
- field: 'contactNumber',
104
- code: 'CONTACT_LENGTH_INVALID',
105
- message: 'Contact number must be at least 8 characters',
106
- severity: 'error',
107
- })
108
- }
109
-
110
- return errors
111
- }
112
-
113
- /**
114
- * Validates monetary amounts
115
- */
116
- export const validateMonetaryAmount = (
117
- amount: number,
118
- fieldName: string,
119
- maxDigits = 18,
120
- maxDecimals = 2,
121
- ): ValidationError[] => {
122
- const errors: ValidationError[] = []
123
-
124
- if (amount < 0) {
125
- errors.push({
126
- field: fieldName,
127
- code: 'AMOUNT_NEGATIVE',
128
- message: `${fieldName} cannot be negative`,
129
- severity: 'error',
130
- })
131
- }
132
-
133
- // Check total digits
134
- const amountStr = amount.toString()
135
- const [integerPart, decimalPart] = amountStr.split('.')
136
-
137
- if (integerPart && integerPart.length > maxDigits - maxDecimals) {
138
- errors.push({
139
- field: fieldName,
140
- code: 'AMOUNT_DIGITS_EXCEEDED',
141
- message: `${fieldName} exceeds maximum ${maxDigits} digits`,
142
- severity: 'error',
143
- })
144
- }
145
-
146
- if (decimalPart && decimalPart.length > maxDecimals) {
147
- errors.push({
148
- field: fieldName,
149
- code: 'AMOUNT_DECIMALS_EXCEEDED',
150
- message: `${fieldName} exceeds maximum ${maxDecimals} decimal places`,
151
- severity: 'error',
152
- })
153
- }
154
-
155
- return errors
156
- }
157
-
158
- /**
159
- * Validates tax calculation consistency
160
- */
161
- export const validateTaxCalculations = (
162
- invoice: InvoiceV1_1,
163
- ): ValidationError[] => {
164
- const errors: ValidationError[] = []
165
-
166
- // Calculate expected totals from line items
167
- const expectedTaxExclusive = invoice.invoiceLineItems.reduce(
168
- (sum, item) => sum + item.totalTaxableAmountPerLine,
169
- 0,
170
- )
171
- const expectedTaxAmount = invoice.invoiceLineItems.reduce(
172
- (sum, item) => sum + item.taxAmount,
173
- 0,
174
- )
175
-
176
- // Allow small rounding differences (0.01)
177
- const tolerance = 0.01
178
-
179
- if (
180
- Math.abs(
181
- invoice.legalMonetaryTotal.taxExclusiveAmount - expectedTaxExclusive,
182
- ) > tolerance
183
- ) {
184
- errors.push({
185
- field: 'legalMonetaryTotal.taxExclusiveAmount',
186
- code: 'TAX_EXCLUSIVE_MISMATCH',
187
- message: `Tax exclusive amount (${invoice.legalMonetaryTotal.taxExclusiveAmount}) doesn't match sum of line items (${expectedTaxExclusive})`,
188
- severity: 'error',
189
- })
190
- }
191
-
192
- if (Math.abs(invoice.taxTotal.taxAmount - expectedTaxAmount) > tolerance) {
193
- errors.push({
194
- field: 'taxTotal.taxAmount',
195
- code: 'TAX_AMOUNT_MISMATCH',
196
- message: `Tax amount (${invoice.taxTotal.taxAmount}) doesn't match sum of line item taxes (${expectedTaxAmount})`,
197
- severity: 'error',
198
- })
199
- }
200
-
201
- return errors
202
- }
203
-
204
- /**
205
- * Main validation function for complete invoice
206
- */
207
- export const validateInvoice = (invoice: InvoiceV1_1): ValidationResult => {
208
- const allErrors: ValidationError[] = []
209
-
210
- // Core field validations
211
- allErrors.push(
212
- ...validateTIN(invoice.supplier.tin, invoice.supplier.registrationType),
213
- )
214
- allErrors.push(
215
- ...validateTIN(invoice.buyer.tin, invoice.buyer.registrationType),
216
- )
217
-
218
- allErrors.push(...validateContactNumber(invoice.supplier.contactNumber))
219
- allErrors.push(...validateContactNumber(invoice.buyer.contactNumber))
220
-
221
- // Monetary validations
222
- allErrors.push(
223
- ...validateMonetaryAmount(
224
- invoice.legalMonetaryTotal.taxExclusiveAmount,
225
- 'taxExclusiveAmount',
226
- ),
227
- )
228
- allErrors.push(
229
- ...validateMonetaryAmount(
230
- invoice.legalMonetaryTotal.payableAmount,
231
- 'payableAmount',
232
- ),
233
- )
234
- allErrors.push(
235
- ...validateMonetaryAmount(invoice.taxTotal.taxAmount, 'taxAmount'),
236
- )
237
-
238
- // Line item validations
239
- invoice.invoiceLineItems.forEach((item, index) => {
240
- allErrors.push(
241
- ...validateMonetaryAmount(item.unitPrice, `lineItem[${index}].unitPrice`),
242
- )
243
- allErrors.push(
244
- ...validateMonetaryAmount(item.taxAmount, `lineItem[${index}].taxAmount`),
245
- )
246
- allErrors.push(
247
- ...validateMonetaryAmount(
248
- item.totalTaxableAmountPerLine,
249
- `lineItem[${index}].totalTaxableAmountPerLine`,
250
- ),
251
- )
252
- })
253
-
254
- // Business rule validations
255
- allErrors.push(...validateTaxCalculations(invoice))
256
-
257
- // Separate errors and warnings
258
- const errors = allErrors.filter(e => e.severity === 'error')
259
- const warnings = allErrors.filter(
260
- e => e.severity === 'warning',
261
- ) as ValidationWarning[]
262
-
263
- return {
264
- isValid: errors.length === 0,
265
- errors,
266
- warnings,
267
- }
268
- }
@@ -1,40 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { MyInvoisClient } from '../src'
3
-
4
- /**
5
- * ⚠️ SECURITY NOTICE: This file uses environment variables for sensitive data.
6
- * Never hardcode actual TIN, NRIC, certificates, or API credentials in test files.
7
- * Use .env file for your actual values (already gitignored).
8
- */
9
-
10
- describe('MyInvoisClientWithRealData', () => {
11
- it('should verify TIN with real data', async () => {
12
- // Skip the test if the environment variables are not set
13
- if (
14
- !process.env.CLIENT_ID ||
15
- !process.env.CLIENT_SECRET ||
16
- !process.env.TIN_VALUE ||
17
- !process.env.NRIC_VALUE
18
- ) {
19
- expect
20
- .soft(false, 'Skipping test: Missing required environment variables')
21
- .toBe(true)
22
- return
23
- }
24
- const client = new MyInvoisClient(
25
- process.env.CLIENT_ID!,
26
- process.env.CLIENT_SECRET!,
27
- 'sandbox',
28
- process.env.CERTIFICATE!,
29
- process.env.PRIVATE_KEY!,
30
- )
31
- // @ts-ignore - refreshToken is a private method
32
- await client.refreshToken()
33
- const result = await client.verifyTin(
34
- process.env.TIN_VALUE!,
35
- 'NRIC',
36
- process.env.NRIC_VALUE!,
37
- )
38
- expect(result).toBe(true)
39
- })
40
- })
@@ -1,204 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest'
2
- import { MyInvoisClient } from '../src'
3
-
4
- // Mock global fetch
5
- const mockFetch = vi.fn()
6
- vi.stubGlobal('fetch', mockFetch)
7
-
8
- vi.useFakeTimers()
9
-
10
- describe('MyInvoisClient', () => {
11
- let client: MyInvoisClient
12
-
13
- beforeEach(() => {
14
- vi.clearAllMocks()
15
- client = new MyInvoisClient(
16
- 'test-id',
17
- 'test-secret',
18
- 'sandbox',
19
- process.env.TEST_CERTIFICATE!,
20
- process.env.TEST_PRIVATE_KEY!,
21
- undefined,
22
- true,
23
- )
24
- })
25
-
26
- describe('constructor', () => {
27
- it('should set sandbox URL when environment is sandbox', () => {
28
- const sandboxClient = new MyInvoisClient(
29
- 'test-id',
30
- 'test-secret',
31
- 'sandbox',
32
- process.env.TEST_CERTIFICATE!,
33
- process.env.TEST_PRIVATE_KEY!,
34
- undefined,
35
- true,
36
- )
37
- expect((sandboxClient as any).baseUrl).toBe(
38
- 'https://preprod-api.myinvois.hasil.gov.my',
39
- )
40
- })
41
-
42
- it('should set production URL when environment is production', () => {
43
- const prodClient = new MyInvoisClient(
44
- 'test-id',
45
- 'test-secret',
46
- 'production',
47
- process.env.TEST_CERTIFICATE!,
48
- process.env.TEST_PRIVATE_KEY!,
49
- undefined,
50
- true,
51
- )
52
- expect((prodClient as any).baseUrl).toBe(
53
- 'https://api.myinvois.hasil.gov.my',
54
- )
55
- })
56
- })
57
-
58
- describe('token management', () => {
59
- it('should get a new token if token does not exist', async () => {
60
- const mockToken = {
61
- access_token: 'test-token',
62
- expires_in: 3600,
63
- }
64
-
65
- mockFetch.mockResolvedValueOnce({
66
- ok: true,
67
- json: () => Promise.resolve(mockToken),
68
- } as Response)
69
-
70
- await client.verifyTin('123', 'NRIC', '456')
71
-
72
- expect(mockFetch).toHaveBeenCalledWith(
73
- 'https://preprod-api.myinvois.hasil.gov.my/connect/token',
74
- expect.any(Object),
75
- )
76
- })
77
-
78
- it('should get a new token when token is expired', async () => {
79
- const mockToken = {
80
- access_token: 'test-token',
81
- expires_in: 3600,
82
- }
83
-
84
- mockFetch
85
- .mockResolvedValueOnce({
86
- ok: true,
87
- json: () => Promise.resolve(mockToken),
88
- } as Response)
89
- .mockResolvedValueOnce({
90
- ok: true,
91
- json: () => Promise.resolve(undefined),
92
- } as Response)
93
-
94
- await client.verifyTin('123', 'NRIC', '456')
95
-
96
- // Check first call (token request)
97
- expect(mockFetch).toHaveBeenNthCalledWith(
98
- 1,
99
- 'https://preprod-api.myinvois.hasil.gov.my/connect/token',
100
- {
101
- method: 'POST',
102
- headers: {
103
- 'Content-Type': 'application/x-www-form-urlencoded',
104
- },
105
- body: new URLSearchParams({
106
- grant_type: 'client_credentials',
107
- client_id: 'test-id',
108
- client_secret: 'test-secret',
109
- scope: 'InvoicingAPI',
110
- }),
111
- },
112
- )
113
-
114
- // Check second call (verifyTin request)
115
- expect(mockFetch).toHaveBeenNthCalledWith(
116
- 2,
117
- `https://preprod-api.myinvois.hasil.gov.my/api/v1.0/taxpayer/validate/123?idType=NRIC&idValue=456`,
118
- {
119
- method: 'GET',
120
- headers: {
121
- Authorization: `Bearer ${mockToken.access_token}`,
122
- },
123
- },
124
- )
125
- })
126
-
127
- it('should reuse existing token if not expired', async () => {
128
- const mockToken = {
129
- access_token: 'test-token',
130
- expires_in: 3600,
131
- }
132
-
133
- mockFetch.mockResolvedValueOnce({
134
- ok: true,
135
- json: () => Promise.resolve(mockToken),
136
- } as Response)
137
-
138
- // First call to get token
139
- await client.verifyTin('123', 'NRIC', '456')
140
-
141
- vi.setSystemTime(new Date(Date.now() + 1000))
142
-
143
- // Second call should reuse token
144
- await client.verifyTin('123', 'NRIC', '456')
145
-
146
- // Token endpoint should only be called once
147
- expect(mockFetch).toHaveBeenCalledWith(
148
- 'https://preprod-api.myinvois.hasil.gov.my/connect/token',
149
- expect.any(Object),
150
- )
151
- })
152
- })
153
-
154
- describe('verifyTin', () => {
155
- it('should return true when verification succeeds', async () => {
156
- const mockToken = {
157
- access_token: 'test-token',
158
- expires_in: 3600,
159
- }
160
-
161
- mockFetch
162
- .mockResolvedValueOnce({
163
- ok: true,
164
- json: () => Promise.resolve(mockToken),
165
- } as Response)
166
- .mockResolvedValueOnce({
167
- ok: true,
168
- json: () => Promise.resolve(undefined),
169
- } as Response)
170
-
171
- await client.verifyTin('123', 'NRIC', '456')
172
- vi.setSystemTime(new Date(Date.now() + 1000 * 8000))
173
- await client.verifyTin('123', 'NRIC', '456')
174
-
175
- expect(mockFetch).toHaveBeenCalledWith(
176
- `https://preprod-api.myinvois.hasil.gov.my/api/v1.0/taxpayer/validate/123?idType=NRIC&idValue=456`,
177
- expect.objectContaining({
178
- method: 'GET',
179
- headers: {
180
- Authorization: 'Bearer test-token',
181
- },
182
- }),
183
- )
184
- })
185
-
186
- it('should return false when verification fails', async () => {
187
- const mockToken = {
188
- access_token: 'test-token',
189
- expires_in: 3600,
190
- }
191
-
192
- mockFetch
193
- .mockResolvedValueOnce({
194
- ok: true,
195
- json: () => Promise.resolve(mockToken),
196
- } as Response)
197
- .mockRejectedValueOnce(new Error('Invalid TIN'))
198
-
199
- const result = await client.verifyTin('123', 'NRIC', '456')
200
-
201
- expect(result).toBe(false)
202
- })
203
- })
204
- })
@@ -1,43 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { encodeToBase64 } from '../src/utils/base64' // Adjust path if necessary
3
-
4
- describe('encodeToBase64', () => {
5
- it('should correctly encode a simple JSON string', () => {
6
- const jsonString = '{"key": "value"}'
7
- const expectedBase64 = 'eyJrZXkiOiAidmFsdWUifQ==' // Buffer.from(jsonString).toString('base64')
8
- expect(encodeToBase64(jsonString)).toBe(expectedBase64)
9
- })
10
-
11
- it('should correctly encode a simple XML string', () => {
12
- const xmlString = '<root><element>value</element></root>'
13
- const expectedBase64 =
14
- 'PHJvb3Q+PGVsZW1lbnQ+dmFsdWU8L2VsZW1lbnQ+PC9yb290Pg==' // Buffer.from(xmlString).toString('base64')
15
- expect(encodeToBase64(xmlString)).toBe(expectedBase64)
16
- })
17
-
18
- it('should correctly encode an empty string', () => {
19
- const emptyString = ''
20
- const expectedBase64 = '' // Buffer.from(emptyString).toString('base64')
21
- expect(encodeToBase64(emptyString)).toBe(expectedBase64)
22
- })
23
-
24
- it('should correctly encode a string with special characters', () => {
25
- const specialString = '!@#$%^&*()_+=-`~[]{}\\|;\'",./<>?'
26
- const expectedBase64 = 'IUAjJCVeJiooKV8rPS1gfltde31cfDsnIiwuLzw+Pw==' // Corrected value
27
- expect(encodeToBase64(specialString)).toBe(expectedBase64)
28
- })
29
-
30
- it('should correctly encode a string with Unicode characters', () => {
31
- const unicodeString = '你好世界🌍'
32
- const expectedBase64 = '5L2g5aW95LiW55WM8J+MjQ==' // Corrected value
33
- expect(encodeToBase64(unicodeString)).toBe(expectedBase64)
34
- })
35
-
36
- it('should correctly encode a longer string', () => {
37
- const longString =
38
- 'This is a longer string that needs to be encoded to Base64 to ensure it handles more than just a few characters correctly.'
39
- const expectedBase64 =
40
- 'VGhpcyBpcyBhIGxvbmdlciBzdHJpbmcgdGhhdCBuZWVkcyB0byBiZSBlbmNvZGVkIHRvIEJhc2U2NCB0byBlbnN1cmUgaXQgaGFuZGxlcyBtb3JlIHRoYW4ganVzdCBhIGZldyBjaGFyYWN0ZXJzIGNvcnJlY3RseS4=' // Buffer.from(longString).toString('base64')
41
- expect(encodeToBase64(longString)).toBe(expectedBase64)
42
- })
43
- })