@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.
- package/bun.lock +89 -132
- package/dist/0X-C4IRh_fJ.d.ts +211 -0
- package/dist/0X-C4IRh_fJ.d.ts.map +1 -0
- package/dist/0X-Yw7mZEro.d.cts +211 -0
- package/dist/0X-Yw7mZEro.d.cts.map +1 -0
- package/dist/1X-Brnls9Jh.d.ts +112 -0
- package/dist/1X-Brnls9Jh.d.ts.map +1 -0
- package/dist/1X-BwpSoT3o.d.cts +20 -0
- package/dist/1X-BwpSoT3o.d.cts.map +1 -0
- package/dist/1X-C-_KHV-Q.d.ts +20 -0
- package/dist/1X-C-_KHV-Q.d.ts.map +1 -0
- package/dist/1X-D_aUVsuM.d.cts +112 -0
- package/dist/1X-D_aUVsuM.d.cts.map +1 -0
- package/dist/2X-Bb6elyzV.d.cts +40 -0
- package/dist/2X-Bb6elyzV.d.cts.map +1 -0
- package/dist/2X-DkS1BoE5.d.ts +40 -0
- package/dist/2X-DkS1BoE5.d.ts.map +1 -0
- package/dist/2X-UdQcQW24.d.ts +140 -0
- package/dist/2X-UdQcQW24.d.ts.map +1 -0
- package/dist/2X-hClUyw26.d.cts +140 -0
- package/dist/2X-hClUyw26.d.cts.map +1 -0
- package/dist/3X-C7VFD-n-.d.cts +21 -0
- package/dist/3X-C7VFD-n-.d.cts.map +1 -0
- package/dist/3X-CLMESDvz.d.cts +62 -0
- package/dist/3X-CLMESDvz.d.cts.map +1 -0
- package/dist/3X-DFI-4RQQ.d.ts +21 -0
- package/dist/3X-DFI-4RQQ.d.ts.map +1 -0
- package/dist/3X-DVDyspgb.d.ts +62 -0
- package/dist/3X-DVDyspgb.d.ts.map +1 -0
- package/dist/4X-CIJ2JJ2w.d.ts +31 -0
- package/dist/4X-CIJ2JJ2w.d.ts.map +1 -0
- package/dist/4X-CUR8jlaZ.d.ts +265 -0
- package/dist/4X-CUR8jlaZ.d.ts.map +1 -0
- package/dist/4X-CvScPJTf.d.cts +265 -0
- package/dist/4X-CvScPJTf.d.cts.map +1 -0
- package/dist/4X-DIfvpU6V.d.cts +31 -0
- package/dist/4X-DIfvpU6V.d.cts.map +1 -0
- package/dist/5X-BOUxhadJ.d.cts +22 -0
- package/dist/5X-BOUxhadJ.d.cts.map +1 -0
- package/dist/5X-C6db432h.d.ts +77 -0
- package/dist/5X-C6db432h.d.ts.map +1 -0
- package/dist/5X-COsZHUaQ.d.ts +22 -0
- package/dist/5X-COsZHUaQ.d.ts.map +1 -0
- package/dist/5X-CkLu7Vyd.d.cts +77 -0
- package/dist/5X-CkLu7Vyd.d.cts.map +1 -0
- package/dist/6X-C_fFIcJC.d.ts +105 -0
- package/dist/6X-C_fFIcJC.d.ts.map +1 -0
- package/dist/6X-ClZDKOTC.d.ts +16 -0
- package/dist/6X-ClZDKOTC.d.ts.map +1 -0
- package/dist/6X-DE7RJeV6.d.cts +16 -0
- package/dist/6X-DE7RJeV6.d.cts.map +1 -0
- package/dist/6X-Mf32k1d0.d.cts +105 -0
- package/dist/6X-Mf32k1d0.d.cts.map +1 -0
- package/dist/7X-BZyesooz.d.ts +16 -0
- package/dist/7X-BZyesooz.d.ts.map +1 -0
- package/dist/7X-Chtd6B66.d.cts +16 -0
- package/dist/7X-Chtd6B66.d.cts.map +1 -0
- package/dist/7X-DoCUcp-J.d.cts +71 -0
- package/dist/7X-DoCUcp-J.d.cts.map +1 -0
- package/dist/7X-kot_VccM.d.ts +71 -0
- package/dist/7X-kot_VccM.d.ts.map +1 -0
- package/dist/8X-Df4DOBOe.d.ts +110 -0
- package/dist/8X-Df4DOBOe.d.ts.map +1 -0
- package/dist/8X-DkuKAkHz.d.ts +19 -0
- package/dist/8X-DkuKAkHz.d.ts.map +1 -0
- package/dist/8X-DqZyMvyV.d.cts +19 -0
- package/dist/8X-DqZyMvyV.d.cts.map +1 -0
- package/dist/8X-Dr9RunRw.d.cts +110 -0
- package/dist/8X-Dr9RunRw.d.cts.map +1 -0
- package/dist/9X-BDgifncF.d.ts +15 -0
- package/dist/9X-BDgifncF.d.ts.map +1 -0
- package/dist/9X-BaoZtjWF.d.cts +98 -0
- package/dist/9X-BaoZtjWF.d.cts.map +1 -0
- package/dist/9X-BcAb6Uso.d.cts +15 -0
- package/dist/9X-BcAb6Uso.d.cts.map +1 -0
- package/dist/9X-BhBWlgxG.d.ts +98 -0
- package/dist/9X-BhBWlgxG.d.ts.map +1 -0
- package/dist/AX-BY72FohC.d.cts +111 -0
- package/dist/AX-BY72FohC.d.cts.map +1 -0
- package/dist/AX-D6XHWdrY.d.ts +111 -0
- package/dist/AX-D6XHWdrY.d.ts.map +1 -0
- package/dist/BX-CA0OmrUZ.d.cts +115 -0
- package/dist/BX-CA0OmrUZ.d.cts.map +1 -0
- package/dist/BX-D_0C8Qbd.d.ts +115 -0
- package/dist/BX-D_0C8Qbd.d.ts.map +1 -0
- package/dist/CX-HH4cSZRX.d.ts +128 -0
- package/dist/CX-HH4cSZRX.d.ts.map +1 -0
- package/dist/CX-glpQSL8x.d.cts +128 -0
- package/dist/CX-glpQSL8x.d.cts.map +1 -0
- package/dist/DX-DimL1MDM.d.cts +115 -0
- package/dist/DX-DimL1MDM.d.cts.map +1 -0
- package/dist/DX-Dx22ax_I.d.ts +115 -0
- package/dist/DX-Dx22ax_I.d.ts.map +1 -0
- package/dist/EX-BRWh1wFc.d.ts +107 -0
- package/dist/EX-BRWh1wFc.d.ts.map +1 -0
- package/dist/EX-Cx87Ruxl.d.cts +107 -0
- package/dist/EX-Cx87Ruxl.d.cts.map +1 -0
- package/dist/FX-D81UlxNN.d.cts +127 -0
- package/dist/FX-D81UlxNN.d.cts.map +1 -0
- package/dist/FX-RmjwAr40.d.ts +127 -0
- package/dist/FX-RmjwAr40.d.ts.map +1 -0
- package/dist/GX-9i7piP9G.d.cts +136 -0
- package/dist/GX-9i7piP9G.d.cts.map +1 -0
- package/dist/GX-CJyo7oDp.d.ts +136 -0
- package/dist/GX-CJyo7oDp.d.ts.map +1 -0
- package/dist/HX-20GVJAvl.d.cts +126 -0
- package/dist/HX-20GVJAvl.d.cts.map +1 -0
- package/dist/HX-XALBTdLA.d.ts +126 -0
- package/dist/HX-XALBTdLA.d.ts.map +1 -0
- package/dist/IX-6SZ55QKb.d.ts +23 -0
- package/dist/IX-6SZ55QKb.d.ts.map +1 -0
- package/dist/IX-D54NGPsc.d.cts +23 -0
- package/dist/IX-D54NGPsc.d.cts.map +1 -0
- package/dist/JX-C1RYcwQX.d.cts +104 -0
- package/dist/JX-C1RYcwQX.d.cts.map +1 -0
- package/dist/JX-hQ1XRmLp.d.ts +104 -0
- package/dist/JX-hQ1XRmLp.d.ts.map +1 -0
- package/dist/KX-BNwunEfn.d.ts +151 -0
- package/dist/KX-BNwunEfn.d.ts.map +1 -0
- package/dist/KX-gQHCIgtQ.d.cts +151 -0
- package/dist/KX-gQHCIgtQ.d.cts.map +1 -0
- package/dist/LX-CHYX3X3J.d.ts +123 -0
- package/dist/LX-CHYX3X3J.d.ts.map +1 -0
- package/dist/LX-CPurJGIh.d.cts +123 -0
- package/dist/LX-CPurJGIh.d.cts.map +1 -0
- package/dist/MX-BPGLWSUz.d.ts +153 -0
- package/dist/MX-BPGLWSUz.d.ts.map +1 -0
- package/dist/MX-BnyW5eHf.d.cts +153 -0
- package/dist/MX-BnyW5eHf.d.cts.map +1 -0
- package/dist/MyInvoisClient-BrNyMjS-.d.cts +178 -0
- package/dist/MyInvoisClient-BrNyMjS-.d.cts.map +1 -0
- package/dist/MyInvoisClient-CXu4pdl-.d.ts +178 -0
- package/dist/MyInvoisClient-CXu4pdl-.d.ts.map +1 -0
- package/dist/MyInvoisClient-Cnvb5iUC.js +299 -0
- package/dist/MyInvoisClient-Cnvb5iUC.js.map +1 -0
- package/dist/MyInvoisClient-DO1dJfQq.cjs +304 -0
- package/dist/MyInvoisClient-DO1dJfQq.cjs.map +1 -0
- package/dist/NX-B11fQuco.d.cts +122 -0
- package/dist/NX-B11fQuco.d.cts.map +1 -0
- package/dist/NX-RulN5Ml3.d.ts +122 -0
- package/dist/NX-RulN5Ml3.d.ts.map +1 -0
- package/dist/OX-DgKVSp7I.d.ts +26 -0
- package/dist/OX-DgKVSp7I.d.ts.map +1 -0
- package/dist/OX-T-ydRXQS.d.cts +26 -0
- package/dist/OX-T-ydRXQS.d.cts.map +1 -0
- package/dist/PX-DA4A2kEv.d.ts +121 -0
- package/dist/PX-DA4A2kEv.d.ts.map +1 -0
- package/dist/PX-p0n1SzvU.d.cts +121 -0
- package/dist/PX-p0n1SzvU.d.cts.map +1 -0
- package/dist/QX-CI1NccIB.d.cts +59 -0
- package/dist/QX-CI1NccIB.d.cts.map +1 -0
- package/dist/QX-DrFqsMEs.d.ts +59 -0
- package/dist/QX-DrFqsMEs.d.ts.map +1 -0
- package/dist/RX-Cm7vFcFN.d.ts +23 -0
- package/dist/RX-Cm7vFcFN.d.ts.map +1 -0
- package/dist/RX-DnNKol22.d.cts +23 -0
- package/dist/RX-DnNKol22.d.cts.map +1 -0
- package/dist/SX-BUjiWQYz.d.cts +40 -0
- package/dist/SX-BUjiWQYz.d.cts.map +1 -0
- package/dist/SX-CsPPTu-W.d.ts +40 -0
- package/dist/SX-CsPPTu-W.d.ts.map +1 -0
- package/dist/TX-DCY25MdR.d.ts +31 -0
- package/dist/TX-DCY25MdR.d.ts.map +1 -0
- package/dist/TX-DOEpsf05.d.cts +31 -0
- package/dist/TX-DOEpsf05.d.cts.map +1 -0
- package/dist/UX-DauyagHy.d.ts +18 -0
- package/dist/UX-DauyagHy.d.ts.map +1 -0
- package/dist/UX-DgUOnTFK.d.cts +18 -0
- package/dist/UX-DgUOnTFK.d.cts.map +1 -0
- package/dist/VX-DD4scgCe.d.ts +17 -0
- package/dist/VX-DD4scgCe.d.ts.map +1 -0
- package/dist/VX-kUX6LM-3.d.cts +17 -0
- package/dist/VX-kUX6LM-3.d.cts.map +1 -0
- package/dist/WX-CjkoppdY.d.ts +26 -0
- package/dist/WX-CjkoppdY.d.ts.map +1 -0
- package/dist/WX-DPfyPFFh.d.cts +26 -0
- package/dist/WX-DPfyPFFh.d.cts.map +1 -0
- package/dist/XX-C4C1gQZH.d.cts +828 -0
- package/dist/XX-C4C1gQZH.d.cts.map +1 -0
- package/dist/XX-sbsIUOnA.d.ts +828 -0
- package/dist/XX-sbsIUOnA.d.ts.map +1 -0
- package/dist/YX-BeT-LsiA.d.cts +20 -0
- package/dist/YX-BeT-LsiA.d.cts.map +1 -0
- package/dist/YX-DUdO8mRC.d.ts +20 -0
- package/dist/YX-DUdO8mRC.d.ts.map +1 -0
- package/dist/ZX-BuVTTq-D.d.cts +22 -0
- package/dist/ZX-BuVTTq-D.d.cts.map +1 -0
- package/dist/ZX-DwfcSA-D.d.ts +22 -0
- package/dist/ZX-DwfcSA-D.d.ts.map +1 -0
- package/dist/api/platform/platformLogin.d.ts +67 -0
- package/dist/api/platform/platformLogin.d.ts.map +1 -0
- package/dist/api/platform/platformLogin.js +3 -0
- package/dist/canonicalize-C_fNNpYr.cjs +80 -0
- package/dist/canonicalize-C_fNNpYr.cjs.map +1 -0
- package/dist/canonicalize-DNUrCGad.js +68 -0
- package/dist/canonicalize-DNUrCGad.js.map +1 -0
- package/dist/chunk-CUT6urMc.cjs +30 -0
- package/dist/classification-codes-B15PbWxz.d.cts +118 -0
- package/dist/classification-codes-B15PbWxz.d.cts.map +1 -0
- package/dist/classification-codes-C2X4xW5-.d.ts +118 -0
- package/dist/classification-codes-C2X4xW5-.d.ts.map +1 -0
- package/dist/country-code-DPeNFMMi.d.cts +543 -0
- package/dist/country-code-DPeNFMMi.d.cts.map +1 -0
- package/dist/country-code-DsI8Mbzx.d.ts +543 -0
- package/dist/country-code-DsI8Mbzx.d.ts.map +1 -0
- package/dist/currencies-DKuDflOO.d.ts +208 -0
- package/dist/currencies-DKuDflOO.d.ts.map +1 -0
- package/dist/currencies-S5g1gzBU.d.cts +208 -0
- package/dist/currencies-S5g1gzBU.d.cts.map +1 -0
- package/dist/e-invoice-BuwtFnlI.d.cts +44 -0
- package/dist/e-invoice-BuwtFnlI.d.cts.map +1 -0
- package/dist/e-invoice-C2TxhyrK.d.ts +44 -0
- package/dist/e-invoice-C2TxhyrK.d.ts.map +1 -0
- package/dist/getBaseUrl-CO7Jp27d.cjs +14 -0
- package/dist/getBaseUrl-CO7Jp27d.cjs.map +1 -0
- package/dist/getBaseUrl-Dx6RDC8I.js +8 -0
- package/dist/getBaseUrl-Dx6RDC8I.js.map +1 -0
- package/dist/hashCert-Bol7lIh2.js +62 -0
- package/dist/hashCert-Bol7lIh2.js.map +1 -0
- package/dist/hashCert-mlYEuYex.cjs +68 -0
- package/dist/hashCert-mlYEuYex.cjs.map +1 -0
- package/dist/hashSignedProperties-9vj5wlYR.js +83 -0
- package/dist/hashSignedProperties-9vj5wlYR.js.map +1 -0
- package/dist/hashSignedProperties-CU_ZqqmY.cjs +95 -0
- package/dist/hashSignedProperties-CU_ZqqmY.cjs.map +1 -0
- package/dist/index-B1DSs-wd.d.cts +16 -0
- package/dist/index-B1DSs-wd.d.cts.map +1 -0
- package/dist/index-CJNLQVjx.d.ts +1 -0
- package/dist/index-FTgB2nM6.d.ts +16 -0
- package/dist/index-FTgB2nM6.d.ts.map +1 -0
- package/dist/index-Wy1ONBjV.d.cts +1 -0
- package/dist/index.cjs +13 -97
- package/dist/index.d.ts +60 -5664
- package/dist/index.js +11 -93
- package/dist/index10.cjs +34 -0
- package/dist/index10.cjs.map +1 -0
- package/dist/index11.cjs +24 -0
- package/dist/index11.cjs.map +1 -0
- package/dist/index12.cjs +0 -0
- package/dist/index13.cjs +13 -0
- package/dist/index14.cjs +13 -0
- package/dist/index14.cjs.map +1 -0
- package/dist/index15.cjs +3 -0
- package/dist/index16.cjs +17 -0
- package/dist/index17.cjs +3 -0
- package/dist/index18.cjs +208 -0
- package/dist/index18.cjs.map +1 -0
- package/dist/index19.cjs +109 -0
- package/dist/index19.cjs.map +1 -0
- package/dist/index2.cjs +62 -0
- package/dist/index2.cjs.map +1 -0
- package/dist/index20.cjs +137 -0
- package/dist/index20.cjs.map +1 -0
- package/dist/index21.cjs +64 -0
- package/dist/index21.cjs.map +1 -0
- package/dist/index22.cjs +267 -0
- package/dist/index22.cjs.map +1 -0
- package/dist/index23.cjs +79 -0
- package/dist/index23.cjs.map +1 -0
- package/dist/index24.cjs +107 -0
- package/dist/index24.cjs.map +1 -0
- package/dist/index25.cjs +73 -0
- package/dist/index25.cjs.map +1 -0
- package/dist/index26.cjs +112 -0
- package/dist/index26.cjs.map +1 -0
- package/dist/index27.cjs +100 -0
- package/dist/index27.cjs.map +1 -0
- package/dist/index28.cjs +18 -0
- package/dist/index28.cjs.map +1 -0
- package/dist/index29.cjs +38 -0
- package/dist/index29.cjs.map +1 -0
- package/dist/index3.cjs +532 -0
- package/dist/index3.cjs.map +1 -0
- package/dist/index30.cjs +19 -0
- package/dist/index30.cjs.map +1 -0
- package/dist/index31.cjs +29 -0
- package/dist/index31.cjs.map +1 -0
- package/dist/index32.cjs +20 -0
- package/dist/index32.cjs.map +1 -0
- package/dist/index33.cjs +14 -0
- package/dist/index33.cjs.map +1 -0
- package/dist/index34.cjs +14 -0
- package/dist/index34.cjs.map +1 -0
- package/dist/index35.cjs +17 -0
- package/dist/index35.cjs.map +1 -0
- package/dist/index36.cjs +13 -0
- package/dist/index36.cjs.map +1 -0
- package/dist/index37.cjs +108 -0
- package/dist/index37.cjs.map +1 -0
- package/dist/index38.cjs +113 -0
- package/dist/index38.cjs.map +1 -0
- package/dist/index39.cjs +126 -0
- package/dist/index39.cjs.map +1 -0
- package/dist/index4.cjs +196 -0
- package/dist/index4.cjs.map +1 -0
- package/dist/index40.cjs +113 -0
- package/dist/index40.cjs.map +1 -0
- package/dist/index41.cjs +105 -0
- package/dist/index41.cjs.map +1 -0
- package/dist/index42.cjs +125 -0
- package/dist/index42.cjs.map +1 -0
- package/dist/index43.cjs +134 -0
- package/dist/index43.cjs.map +1 -0
- package/dist/index44.cjs +124 -0
- package/dist/index44.cjs.map +1 -0
- package/dist/index45.cjs +21 -0
- package/dist/index45.cjs.map +1 -0
- package/dist/index46.cjs +102 -0
- package/dist/index46.cjs.map +1 -0
- package/dist/index47.cjs +149 -0
- package/dist/index47.cjs.map +1 -0
- package/dist/index48.cjs +121 -0
- package/dist/index48.cjs.map +1 -0
- package/dist/index49.cjs +151 -0
- package/dist/index49.cjs.map +1 -0
- package/dist/index5.cjs +25 -0
- package/dist/index5.cjs.map +1 -0
- package/dist/index50.cjs +120 -0
- package/dist/index50.cjs.map +1 -0
- package/dist/index51.cjs +24 -0
- package/dist/index51.cjs.map +1 -0
- package/dist/index52.cjs +119 -0
- package/dist/index52.cjs.map +1 -0
- package/dist/index53.cjs +54 -0
- package/dist/index53.cjs.map +1 -0
- package/dist/index54.cjs +21 -0
- package/dist/index54.cjs.map +1 -0
- package/dist/index55.cjs +35 -0
- package/dist/index55.cjs.map +1 -0
- package/dist/index56.cjs +29 -0
- package/dist/index56.cjs.map +1 -0
- package/dist/index57.cjs +16 -0
- package/dist/index57.cjs.map +1 -0
- package/dist/index58.cjs +15 -0
- package/dist/index58.cjs.map +1 -0
- package/dist/index59.cjs +24 -0
- package/dist/index59.cjs.map +1 -0
- package/dist/index59.cts.map +1 -0
- package/dist/index6.cjs +0 -0
- package/dist/index60.cjs +419 -0
- package/dist/index60.cjs.map +1 -0
- package/dist/index61.cjs +15 -0
- package/dist/index61.cjs.map +1 -0
- package/dist/index62.cjs +16 -0
- package/dist/index62.cjs.map +1 -0
- package/dist/index62.cts.map +1 -0
- package/dist/index63.cjs +0 -0
- package/dist/index63.cts.map +1 -0
- package/dist/index64.cjs +0 -0
- package/dist/index64.cts.map +1 -0
- package/dist/index65.cjs +122 -0
- package/dist/index65.cjs.map +1 -0
- package/dist/index65.cts.map +1 -0
- package/dist/index66.cjs +229 -0
- package/dist/index66.cjs.map +1 -0
- package/dist/index66.cts.map +1 -0
- package/dist/index67.cjs +4 -0
- package/dist/index67.cts.map +1 -0
- package/dist/index68.cjs +3 -0
- package/dist/index68.cts.map +1 -0
- package/dist/index69.cjs +4 -0
- package/dist/index69.cts.map +1 -0
- package/dist/index7.cjs +0 -0
- package/dist/index70.cjs +3 -0
- package/dist/index70.cts.map +1 -0
- package/dist/index71.cjs +3 -0
- package/dist/index71.cts.map +1 -0
- package/dist/index72.cjs +3 -0
- package/dist/index72.cts.map +1 -0
- package/dist/index73.cjs +3 -0
- package/dist/index73.cts.map +1 -0
- package/dist/index8.cjs +25 -0
- package/dist/index8.cjs.map +1 -0
- package/dist/index9.cjs +0 -0
- package/dist/invoice-1_1-BJVcw-oE.d.ts +432 -0
- package/dist/invoice-1_1-BJVcw-oE.d.ts.map +1 -0
- package/dist/invoice-1_1-DWdNPRzr.d.cts +432 -0
- package/dist/invoice-1_1-DWdNPRzr.d.cts.map +1 -0
- package/dist/invoice1-1-8S-QQn7P.cjs +547 -0
- package/dist/invoice1-1-8S-QQn7P.cjs.map +1 -0
- package/dist/invoice1-1-CHuLpkFz.js +504 -0
- package/dist/invoice1-1-CHuLpkFz.js.map +1 -0
- package/dist/msic-codes-B_1W6lZF.d.cts +26 -0
- package/dist/msic-codes-B_1W6lZF.d.cts.map +1 -0
- package/dist/msic-codes-bs0lTfSZ.d.ts +26 -0
- package/dist/msic-codes-bs0lTfSZ.d.ts.map +1 -0
- package/dist/payment-modes-B8dNy3SM.d.ts +44 -0
- package/dist/payment-modes-B8dNy3SM.d.ts.map +1 -0
- package/dist/payment-modes-DHihrywe.d.cts +44 -0
- package/dist/payment-modes-DHihrywe.d.cts.map +1 -0
- package/dist/platformLogin-DsxWWUXr.js +31 -0
- package/dist/platformLogin-DsxWWUXr.js.map +1 -0
- package/dist/platformLogin-PGzMhw1X.cjs +37 -0
- package/dist/platformLogin-PGzMhw1X.cjs.map +1 -0
- package/dist/populateFinalDocument-BdyYzz5Y.cjs +96 -0
- package/dist/populateFinalDocument-BdyYzz5Y.cjs.map +1 -0
- package/dist/populateFinalDocument-BpLXmgLv.js +90 -0
- package/dist/populateFinalDocument-BpLXmgLv.js.map +1 -0
- package/dist/populateSignedProperties-BJMcBQ6S.cjs +58 -0
- package/dist/populateSignedProperties-BJMcBQ6S.cjs.map +1 -0
- package/dist/populateSignedProperties-BvGN-YZH.js +52 -0
- package/dist/populateSignedProperties-BvGN-YZH.js.map +1 -0
- package/dist/sign-B61Cy3gO.cjs +40 -0
- package/dist/sign-B61Cy3gO.cjs.map +1 -0
- package/dist/sign-DzHK7UhR.js +34 -0
- package/dist/sign-DzHK7UhR.js.map +1 -0
- package/dist/signatures-BKi9DP2K.d.cts +173 -0
- package/dist/signatures-BKi9DP2K.d.cts.map +1 -0
- package/dist/signatures-C9QPZTQd.d.ts +173 -0
- package/dist/signatures-C9QPZTQd.d.ts.map +1 -0
- package/dist/state-codes-CxG1S9YY.d.ts +62 -0
- package/dist/state-codes-CxG1S9YY.d.ts.map +1 -0
- package/dist/state-codes-DXSWtE6a.d.cts +62 -0
- package/dist/state-codes-DXSWtE6a.d.cts.map +1 -0
- package/dist/tax-types-CEpfSh5P.d.ts +42 -0
- package/dist/tax-types-CEpfSh5P.d.ts.map +1 -0
- package/dist/tax-types-CgwxONDS.d.cts +42 -0
- package/dist/tax-types-CgwxONDS.d.cts.map +1 -0
- package/dist/transform-BLz0S687.cjs +72 -0
- package/dist/transform-BLz0S687.cjs.map +1 -0
- package/dist/transform-D1q-U6Zj.js +66 -0
- package/dist/transform-D1q-U6Zj.js.map +1 -0
- package/dist/types/classification-codes.d.ts +2 -0
- package/dist/types/country-code.d.ts +2 -0
- package/dist/types/currencies.d.ts +2 -0
- package/dist/types/documents/index.d.ts +57 -0
- package/dist/types/documents/invoice-1_1.d.ts +56 -0
- package/dist/types/e-invoice.d.ts +2 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/msic/0X.d.ts +2 -0
- package/dist/types/msic/1X.d.ts +2 -0
- package/dist/types/msic/2X.d.ts +2 -0
- package/dist/types/msic/3X.d.ts +2 -0
- package/dist/types/msic/4X.d.ts +2 -0
- package/dist/types/msic/5X.d.ts +2 -0
- package/dist/types/msic/6X.d.ts +2 -0
- package/dist/types/msic/7X.d.ts +2 -0
- package/dist/types/msic/8X.d.ts +2 -0
- package/dist/types/msic/9X.d.ts +2 -0
- package/dist/types/msic-codes.d.ts +12 -0
- package/dist/types/payment-modes.d.ts +2 -0
- package/dist/types/signatures.d.ts +2 -0
- package/dist/types/state-codes.d.ts +2 -0
- package/dist/types/tax-types.d.ts +2 -0
- package/dist/types/unit/1X.d.ts +2 -0
- package/dist/types/unit/2X.d.ts +2 -0
- package/dist/types/unit/3X.d.ts +2 -0
- package/dist/types/unit/4X.d.ts +2 -0
- package/dist/types/unit/5X.d.ts +2 -0
- package/dist/types/unit/6X.d.ts +2 -0
- package/dist/types/unit/7X.d.ts +2 -0
- package/dist/types/unit/8X.d.ts +2 -0
- package/dist/types/unit/9X.d.ts +2 -0
- package/dist/types/unit/AX.d.ts +2 -0
- package/dist/types/unit/BX.d.ts +2 -0
- package/dist/types/unit/CX.d.ts +2 -0
- package/dist/types/unit/DX.d.ts +2 -0
- package/dist/types/unit/EX.d.ts +2 -0
- package/dist/types/unit/FX.d.ts +2 -0
- package/dist/types/unit/GX.d.ts +2 -0
- package/dist/types/unit/HX.d.ts +2 -0
- package/dist/types/unit/IX.d.ts +2 -0
- package/dist/types/unit/JX.d.ts +2 -0
- package/dist/types/unit/KX.d.ts +2 -0
- package/dist/types/unit/LX.d.ts +2 -0
- package/dist/types/unit/MX.d.ts +2 -0
- package/dist/types/unit/NX.d.ts +2 -0
- package/dist/types/unit/OX.d.ts +2 -0
- package/dist/types/unit/PX.d.ts +2 -0
- package/dist/types/unit/QX.d.ts +2 -0
- package/dist/types/unit/RX.d.ts +2 -0
- package/dist/types/unit/SX.d.ts +2 -0
- package/dist/types/unit/TX.d.ts +2 -0
- package/dist/types/unit/UX.d.ts +2 -0
- package/dist/types/unit/VX.d.ts +2 -0
- package/dist/types/unit/WX.d.ts +2 -0
- package/dist/types/unit/XX.d.ts +2 -0
- package/dist/types/unit/YX.d.ts +2 -0
- package/dist/types/unit/ZX.d.ts +2 -0
- package/dist/types/unit-types.d.ts +37 -0
- package/dist/unit-types-1bF0KhIp.d.ts +56 -0
- package/dist/unit-types-1bF0KhIp.d.ts.map +1 -0
- package/dist/unit-types-CsrkvgfG.d.cts +56 -0
- package/dist/unit-types-CsrkvgfG.d.cts.map +1 -0
- package/dist/utils/MyInvoisClient.d.ts +60 -0
- package/dist/utils/MyInvoisClient.js +13 -0
- package/dist/utils/base64.d.ts +6 -0
- package/dist/utils/base64.d.ts.map +1 -0
- package/dist/utils/base64.js +11 -0
- package/dist/utils/base64.js.map +1 -0
- package/dist/utils/debug/debug-document-hash.d.ts +100 -0
- package/dist/utils/debug/debug-document-hash.d.ts.map +1 -0
- package/dist/utils/debug/debug-document-hash.js +120 -0
- package/dist/utils/debug/debug-document-hash.js.map +1 -0
- package/dist/utils/debug/debug-invoice-submission.d.ts +152 -0
- package/dist/utils/debug/debug-invoice-submission.d.ts.map +1 -0
- package/dist/utils/debug/debug-invoice-submission.js +226 -0
- package/dist/utils/debug/debug-invoice-submission.js.map +1 -0
- package/dist/utils/getBaseUrl.d.ts +5 -0
- package/dist/utils/getBaseUrl.d.ts.map +1 -0
- package/dist/utils/getBaseUrl.js +3 -0
- package/dist/utils/invoice1-1.d.ts +117 -0
- package/dist/utils/invoice1-1.d.ts.map +1 -0
- package/dist/utils/invoice1-1.js +10 -0
- package/dist/utils/signature/canonicalize.d.ts +26 -0
- package/dist/utils/signature/canonicalize.d.ts.map +1 -0
- package/dist/utils/signature/canonicalize.js +3 -0
- package/dist/utils/signature/hashCert.d.ts +15 -0
- package/dist/utils/signature/hashCert.d.ts.map +1 -0
- package/dist/utils/signature/hashCert.js +3 -0
- package/dist/utils/signature/hashSignedProperties.d.ts +25 -0
- package/dist/utils/signature/hashSignedProperties.d.ts.map +1 -0
- package/dist/utils/signature/hashSignedProperties.js +3 -0
- package/dist/utils/signature/populateFinalDocument.d.ts +23 -0
- package/dist/utils/signature/populateFinalDocument.d.ts.map +1 -0
- package/dist/utils/signature/populateFinalDocument.js +3 -0
- package/dist/utils/signature/populateSignedProperties.d.ts +23 -0
- package/dist/utils/signature/populateSignedProperties.d.ts.map +1 -0
- package/dist/utils/signature/populateSignedProperties.js +3 -0
- package/dist/utils/signature/sign.d.ts +16 -0
- package/dist/utils/signature/sign.d.ts.map +1 -0
- package/dist/utils/signature/sign.js +3 -0
- package/dist/utils/signature/transform.d.ts +16 -0
- package/dist/utils/signature/transform.d.ts.map +1 -0
- package/dist/utils/signature/transform.js +3 -0
- package/package.json +12 -5
- package/src/api/platform/{taxpayerLogin.ts → platformLogin.ts} +8 -2
- package/src/types/documents/invoice-1_1.d.ts +90 -0
- package/src/types/index.d.ts +1 -0
- package/src/types/msic-codes.d.ts +1 -7
- package/src/utils/MyInvoisClient.ts +428 -11
- package/src/utils/base64.ts +7 -0
- package/src/utils/debug/debug-document-hash.ts +249 -0
- package/src/utils/debug/debug-invoice-submission.ts +355 -0
- package/src/utils/getBaseUrl.ts +1 -1
- package/src/utils/invoice1-1.ts +671 -0
- package/src/utils/signature/canonicalize.ts +104 -0
- package/src/utils/signature/hashCert.ts +115 -0
- package/src/utils/signature/hashSignedProperties.ts +155 -0
- package/src/utils/signature/populateFinalDocument.ts +187 -0
- package/src/utils/signature/populateSignedProperties.ts +87 -0
- package/src/utils/signature/sign.ts +51 -0
- package/src/utils/signature/transform.ts +99 -0
- package/test/MyInvoiClientWithRealData.test.ts +2 -1
- package/test/MyInvoisClient.test.ts +16 -8
- package/test/base64.test.ts +43 -0
- package/test/canonicalize.test.ts +110 -0
- package/test/hashCert.test.ts +95 -0
- package/test/hashSignedProperties.test.ts +140 -0
- package/test/populateFinalDocument.test.ts +218 -0
- package/test/populateSignedProperties.test.ts +155 -0
- package/test/sign.test.ts +70 -0
- package/test/signAndSubmitInvoice.test.ts +915 -0
- package/test/transform.test.ts +158 -0
- package/tsconfig.json +7 -1
- package/tsdown.config.ts +31 -0
- package/dist/index.cjs.map +0 -1
- package/rolldown.config.ts +0 -26
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import "../../classification-codes-C2X4xW5-.js";
|
|
2
|
+
import "../../country-code-DsI8Mbzx.js";
|
|
3
|
+
import "../../currencies-DKuDflOO.js";
|
|
4
|
+
import "../../e-invoice-C2TxhyrK.js";
|
|
5
|
+
import "../../signatures-C9QPZTQd.js";
|
|
6
|
+
import "../../tax-types-CEpfSh5P.js";
|
|
7
|
+
import "../../1X-C-_KHV-Q.js";
|
|
8
|
+
import "../../2X-DkS1BoE5.js";
|
|
9
|
+
import "../../3X-DFI-4RQQ.js";
|
|
10
|
+
import "../../4X-CIJ2JJ2w.js";
|
|
11
|
+
import "../../5X-COsZHUaQ.js";
|
|
12
|
+
import "../../6X-ClZDKOTC.js";
|
|
13
|
+
import "../../7X-BZyesooz.js";
|
|
14
|
+
import "../../8X-DkuKAkHz.js";
|
|
15
|
+
import "../../9X-BDgifncF.js";
|
|
16
|
+
import "../../AX-D6XHWdrY.js";
|
|
17
|
+
import "../../BX-D_0C8Qbd.js";
|
|
18
|
+
import "../../CX-HH4cSZRX.js";
|
|
19
|
+
import "../../DX-Dx22ax_I.js";
|
|
20
|
+
import "../../EX-BRWh1wFc.js";
|
|
21
|
+
import "../../FX-RmjwAr40.js";
|
|
22
|
+
import "../../GX-CJyo7oDp.js";
|
|
23
|
+
import "../../HX-XALBTdLA.js";
|
|
24
|
+
import "../../IX-6SZ55QKb.js";
|
|
25
|
+
import "../../JX-hQ1XRmLp.js";
|
|
26
|
+
import "../../KX-BNwunEfn.js";
|
|
27
|
+
import "../../LX-CHYX3X3J.js";
|
|
28
|
+
import "../../MX-BPGLWSUz.js";
|
|
29
|
+
import "../../NX-RulN5Ml3.js";
|
|
30
|
+
import "../../OX-DgKVSp7I.js";
|
|
31
|
+
import "../../PX-DA4A2kEv.js";
|
|
32
|
+
import "../../QX-DrFqsMEs.js";
|
|
33
|
+
import "../../RX-Cm7vFcFN.js";
|
|
34
|
+
import "../../SX-CsPPTu-W.js";
|
|
35
|
+
import "../../TX-DCY25MdR.js";
|
|
36
|
+
import "../../UX-DauyagHy.js";
|
|
37
|
+
import "../../VX-DD4scgCe.js";
|
|
38
|
+
import "../../WX-CjkoppdY.js";
|
|
39
|
+
import "../../YX-DUdO8mRC.js";
|
|
40
|
+
import "../../ZX-DwfcSA-D.js";
|
|
41
|
+
import "../../XX-sbsIUOnA.js";
|
|
42
|
+
import "../../unit-types-1bF0KhIp.js";
|
|
43
|
+
import "../../payment-modes-B8dNy3SM.js";
|
|
44
|
+
import "../../0X-C4IRh_fJ.js";
|
|
45
|
+
import "../../1X-Brnls9Jh.js";
|
|
46
|
+
import "../../2X-UdQcQW24.js";
|
|
47
|
+
import "../../3X-DVDyspgb.js";
|
|
48
|
+
import "../../4X-CUR8jlaZ.js";
|
|
49
|
+
import "../../5X-C6db432h.js";
|
|
50
|
+
import "../../6X-C_fFIcJC.js";
|
|
51
|
+
import "../../7X-kot_VccM.js";
|
|
52
|
+
import "../../8X-Df4DOBOe.js";
|
|
53
|
+
import "../../9X-BhBWlgxG.js";
|
|
54
|
+
import "../../msic-codes-bs0lTfSZ.js";
|
|
55
|
+
import { InvoiceV1_1, SigningCredentials } from "../../invoice-1_1-BJVcw-oE.js";
|
|
56
|
+
|
|
57
|
+
//#region src/utils/debug/debug-invoice-submission.d.ts
|
|
58
|
+
/**
|
|
59
|
+
* Tests both canonicalization algorithms and compares their output
|
|
60
|
+
* This can help determine if the algorithm difference affects signature validation
|
|
61
|
+
* @param xmlDocument - The XML document string to test
|
|
62
|
+
* @returns Object with canonicalization results and comparison
|
|
63
|
+
*/
|
|
64
|
+
declare const testCanonicalizationAlgorithms: (xmlDocument: string) => Promise<{
|
|
65
|
+
exclusiveC14N: {
|
|
66
|
+
success: boolean;
|
|
67
|
+
digest?: string;
|
|
68
|
+
error?: string;
|
|
69
|
+
};
|
|
70
|
+
c14n11Fallback: {
|
|
71
|
+
success: boolean;
|
|
72
|
+
digest?: string;
|
|
73
|
+
error?: string;
|
|
74
|
+
};
|
|
75
|
+
areEqual: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Simple validation function that checks basic XML structure requirements
|
|
79
|
+
*/
|
|
80
|
+
declare function validateXMLStructure(xmlString: string): {
|
|
81
|
+
isValid: boolean;
|
|
82
|
+
errors: string[];
|
|
83
|
+
warnings: string[];
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Comprehensive debugging function to help identify issues with generated XML
|
|
87
|
+
* This validates the structure against MyInvois requirements and provides detailed feedback
|
|
88
|
+
*/
|
|
89
|
+
declare function debugSignedInvoiceXML(invoiceInfo: InvoiceV1_1, signingCredentials: SigningCredentials): Promise<{
|
|
90
|
+
success: boolean;
|
|
91
|
+
signedXML?: string;
|
|
92
|
+
validationResults: {
|
|
93
|
+
xmlStructure: {
|
|
94
|
+
valid: boolean;
|
|
95
|
+
errors: string[];
|
|
96
|
+
};
|
|
97
|
+
signatureElements: {
|
|
98
|
+
valid: boolean;
|
|
99
|
+
errors: string[];
|
|
100
|
+
};
|
|
101
|
+
digestValues: {
|
|
102
|
+
valid: boolean;
|
|
103
|
+
errors: string[];
|
|
104
|
+
};
|
|
105
|
+
certificateInfo: {
|
|
106
|
+
valid: boolean;
|
|
107
|
+
errors: string[];
|
|
108
|
+
};
|
|
109
|
+
canonicalizationTest: any;
|
|
110
|
+
};
|
|
111
|
+
stepByStepResults: {
|
|
112
|
+
step1_template: {
|
|
113
|
+
success: boolean;
|
|
114
|
+
error?: string;
|
|
115
|
+
};
|
|
116
|
+
step2_transform: {
|
|
117
|
+
success: boolean;
|
|
118
|
+
error?: string;
|
|
119
|
+
};
|
|
120
|
+
step3_docDigest: {
|
|
121
|
+
success: boolean;
|
|
122
|
+
digest?: string;
|
|
123
|
+
error?: string;
|
|
124
|
+
};
|
|
125
|
+
step4_signature: {
|
|
126
|
+
success: boolean;
|
|
127
|
+
signature?: string;
|
|
128
|
+
error?: string;
|
|
129
|
+
};
|
|
130
|
+
step5_certDigest: {
|
|
131
|
+
success: boolean;
|
|
132
|
+
digest?: string;
|
|
133
|
+
error?: string;
|
|
134
|
+
};
|
|
135
|
+
step6_signedProps: {
|
|
136
|
+
success: boolean;
|
|
137
|
+
error?: string;
|
|
138
|
+
};
|
|
139
|
+
step7_propsDigest: {
|
|
140
|
+
success: boolean;
|
|
141
|
+
digest?: string;
|
|
142
|
+
error?: string;
|
|
143
|
+
};
|
|
144
|
+
step8_finalDoc: {
|
|
145
|
+
success: boolean;
|
|
146
|
+
error?: string;
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
}>;
|
|
150
|
+
//#endregion
|
|
151
|
+
export { debugSignedInvoiceXML, testCanonicalizationAlgorithms, validateXMLStructure };
|
|
152
|
+
//# sourceMappingURL=debug-invoice-submission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-invoice-submission.d.ts","names":["xmlDocument: string","xmlString: string","invoiceInfo: InvoiceV1_1","signingCredentials: SigningCredentials"],"sources":["../../../src/utils/debug/debug-invoice-submission.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuBa,yDAEV;;;;;;;;;;;;;;;;iBA8Ca,oBAAA;;;;;;;;;iBAqEM,qBAAA,cACP,iCACO,qBACnB;;;;;;;;;;;;;;;;;;;;;;;;;MAxHH,KAAa,CAAA,EAAA,MAAA;IAgDb,CAAA;IAqEA,eAAsB,EAAA;MAAA,OAAA,EAAA,OAAA;MAAA,KACP,CAAA,EAAA,MAAA;IAAA,CAAA;IACO,eACnB,EAAA;MAAA,OAAA,EAAA,OAAA"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { extractCertificateInfo, generateSignedInvoiceXML, generateUBLXMLTemplate, validateKeyPair } from "../../invoice1-1-CHuLpkFz.js";
|
|
2
|
+
import { canonicalizeAndHashDocument, canonicalizeAndHashDocumentWithC14N11Fallback } from "../../canonicalize-DNUrCGad.js";
|
|
3
|
+
import "../../hashCert-Bol7lIh2.js";
|
|
4
|
+
import "../../hashSignedProperties-9vj5wlYR.js";
|
|
5
|
+
import "../../populateFinalDocument-BpLXmgLv.js";
|
|
6
|
+
import "../../populateSignedProperties-BvGN-YZH.js";
|
|
7
|
+
import "../../sign-DzHK7UhR.js";
|
|
8
|
+
import { transformXmlInvoice } from "../../transform-D1q-U6Zj.js";
|
|
9
|
+
import { DOMParserImpl } from "xmldom-ts";
|
|
10
|
+
|
|
11
|
+
//#region src/utils/debug/debug-invoice-submission.ts
|
|
12
|
+
/**
|
|
13
|
+
* Tests both canonicalization algorithms and compares their output
|
|
14
|
+
* This can help determine if the algorithm difference affects signature validation
|
|
15
|
+
* @param xmlDocument - The XML document string to test
|
|
16
|
+
* @returns Object with canonicalization results and comparison
|
|
17
|
+
*/
|
|
18
|
+
const testCanonicalizationAlgorithms = async (xmlDocument) => {
|
|
19
|
+
const parser = new DOMParserImpl();
|
|
20
|
+
const doc = parser.parseFromString(xmlDocument, "application/xml");
|
|
21
|
+
const results = {
|
|
22
|
+
exclusiveC14N: { success: false },
|
|
23
|
+
c14n11Fallback: { success: false },
|
|
24
|
+
areEqual: false
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
const exclusiveDigest = await canonicalizeAndHashDocument(doc, "http://www.w3.org/2001/10/xml-exc-c14n#");
|
|
28
|
+
results.exclusiveC14N = {
|
|
29
|
+
success: true,
|
|
30
|
+
digest: exclusiveDigest
|
|
31
|
+
};
|
|
32
|
+
} catch (error) {
|
|
33
|
+
results.exclusiveC14N = {
|
|
34
|
+
success: false,
|
|
35
|
+
error: error.message
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const c14n11Digest = await canonicalizeAndHashDocumentWithC14N11Fallback(doc);
|
|
40
|
+
results.c14n11Fallback = {
|
|
41
|
+
success: true,
|
|
42
|
+
digest: c14n11Digest
|
|
43
|
+
};
|
|
44
|
+
} catch (error) {
|
|
45
|
+
results.c14n11Fallback = {
|
|
46
|
+
success: false,
|
|
47
|
+
error: error.message
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (results.exclusiveC14N.success && results.c14n11Fallback.success) results.areEqual = results.exclusiveC14N.digest === results.c14n11Fallback.digest;
|
|
51
|
+
return results;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Simple validation function that checks basic XML structure requirements
|
|
55
|
+
*/
|
|
56
|
+
function validateXMLStructure(xmlString) {
|
|
57
|
+
const errors = [];
|
|
58
|
+
const warnings = [];
|
|
59
|
+
try {
|
|
60
|
+
const parser = new DOMParserImpl();
|
|
61
|
+
const doc = parser.parseFromString(xmlString, "application/xml");
|
|
62
|
+
const parserErrors = doc.getElementsByTagName("parsererror");
|
|
63
|
+
if (parserErrors.length > 0) {
|
|
64
|
+
errors.push("XML parsing failed");
|
|
65
|
+
return {
|
|
66
|
+
isValid: false,
|
|
67
|
+
errors,
|
|
68
|
+
warnings
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const requiredElements = [
|
|
72
|
+
"Invoice",
|
|
73
|
+
"UBLExtensions",
|
|
74
|
+
"cbc:ID",
|
|
75
|
+
"cbc:IssueDate",
|
|
76
|
+
"cbc:IssueTime",
|
|
77
|
+
"cbc:InvoiceTypeCode",
|
|
78
|
+
"ds:Signature",
|
|
79
|
+
"ds:SignatureValue",
|
|
80
|
+
"ds:X509Certificate"
|
|
81
|
+
];
|
|
82
|
+
for (const element of requiredElements) {
|
|
83
|
+
const elements = element.includes(":") ? doc.getElementsByTagName(element) : doc.getElementsByTagName(element);
|
|
84
|
+
if (elements.length === 0) errors.push(`Missing required element: ${element}`);
|
|
85
|
+
}
|
|
86
|
+
const expectedNamespaces = [
|
|
87
|
+
"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
|
|
88
|
+
"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2",
|
|
89
|
+
"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
|
90
|
+
];
|
|
91
|
+
for (const ns of expectedNamespaces) if (!xmlString.includes(ns)) warnings.push(`Missing namespace declaration: ${ns}`);
|
|
92
|
+
} catch (error) {
|
|
93
|
+
errors.push(`XML validation error: ${error.message}`);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
isValid: errors.length === 0,
|
|
97
|
+
errors,
|
|
98
|
+
warnings
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Comprehensive debugging function to help identify issues with generated XML
|
|
103
|
+
* This validates the structure against MyInvois requirements and provides detailed feedback
|
|
104
|
+
*/
|
|
105
|
+
async function debugSignedInvoiceXML(invoiceInfo, signingCredentials) {
|
|
106
|
+
const stepResults = {
|
|
107
|
+
step1_template: { success: false },
|
|
108
|
+
step2_transform: { success: false },
|
|
109
|
+
step3_docDigest: { success: false },
|
|
110
|
+
step4_signature: { success: false },
|
|
111
|
+
step5_certDigest: { success: false },
|
|
112
|
+
step6_signedProps: { success: false },
|
|
113
|
+
step7_propsDigest: { success: false },
|
|
114
|
+
step8_finalDoc: { success: false }
|
|
115
|
+
};
|
|
116
|
+
const validationResults = {
|
|
117
|
+
xmlStructure: {
|
|
118
|
+
valid: false,
|
|
119
|
+
errors: []
|
|
120
|
+
},
|
|
121
|
+
signatureElements: {
|
|
122
|
+
valid: false,
|
|
123
|
+
errors: []
|
|
124
|
+
},
|
|
125
|
+
digestValues: {
|
|
126
|
+
valid: false,
|
|
127
|
+
errors: []
|
|
128
|
+
},
|
|
129
|
+
certificateInfo: {
|
|
130
|
+
valid: false,
|
|
131
|
+
errors: []
|
|
132
|
+
},
|
|
133
|
+
canonicalizationTest: null
|
|
134
|
+
};
|
|
135
|
+
let signedXML;
|
|
136
|
+
try {
|
|
137
|
+
try {
|
|
138
|
+
const xmlTemplate = generateUBLXMLTemplate(invoiceInfo);
|
|
139
|
+
stepResults.step1_template = { success: true };
|
|
140
|
+
const parser = new DOMParserImpl();
|
|
141
|
+
const doc = parser.parseFromString(xmlTemplate, "application/xml");
|
|
142
|
+
const parserErrors = doc.getElementsByTagName("parsererror");
|
|
143
|
+
if (parserErrors.length > 0) validationResults.xmlStructure.errors.push("XML template parsing failed");
|
|
144
|
+
else validationResults.xmlStructure.valid = true;
|
|
145
|
+
} catch (error) {
|
|
146
|
+
stepResults.step1_template = {
|
|
147
|
+
success: false,
|
|
148
|
+
error: error.message
|
|
149
|
+
};
|
|
150
|
+
validationResults.xmlStructure.errors.push(`Template generation failed: ${error.message}`);
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const xmlTemplate = generateUBLXMLTemplate(invoiceInfo);
|
|
154
|
+
const transformedXml = transformXmlInvoice(xmlTemplate);
|
|
155
|
+
stepResults.step2_transform = { success: true };
|
|
156
|
+
if (transformedXml.includes("UBLExtensions")) validationResults.xmlStructure.errors.push("UBLExtensions not properly removed in transformation");
|
|
157
|
+
if (transformedXml.includes("<cac:Signature>")) validationResults.xmlStructure.errors.push("cac:Signature elements not properly removed in transformation");
|
|
158
|
+
} catch (error) {
|
|
159
|
+
stepResults.step2_transform = {
|
|
160
|
+
success: false,
|
|
161
|
+
error: error.message
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const xmlTemplate = generateUBLXMLTemplate(invoiceInfo);
|
|
166
|
+
validationResults.canonicalizationTest = await testCanonicalizationAlgorithms(xmlTemplate);
|
|
167
|
+
} catch (error) {
|
|
168
|
+
validationResults.canonicalizationTest = { error: error.message };
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
signedXML = await generateSignedInvoiceXML(invoiceInfo, signingCredentials);
|
|
172
|
+
const parser = new DOMParserImpl();
|
|
173
|
+
const finalDoc = parser.parseFromString(signedXML, "application/xml");
|
|
174
|
+
const signatureValue = finalDoc.getElementsByTagName("ds:SignatureValue")[0];
|
|
175
|
+
const x509Certificate = finalDoc.getElementsByTagName("ds:X509Certificate")[0];
|
|
176
|
+
const digestValues = finalDoc.getElementsByTagName("ds:DigestValue");
|
|
177
|
+
if (!signatureValue || !signatureValue.textContent?.trim()) validationResults.signatureElements.errors.push("SignatureValue is empty");
|
|
178
|
+
if (!x509Certificate || !x509Certificate.textContent?.trim()) validationResults.signatureElements.errors.push("X509Certificate is empty");
|
|
179
|
+
if (digestValues.length < 2) validationResults.digestValues.errors.push("Missing digest values (expected at least 2)");
|
|
180
|
+
else {
|
|
181
|
+
let emptyDigests = 0;
|
|
182
|
+
for (let i = 0; i < digestValues.length; i++) {
|
|
183
|
+
const digestElement = digestValues[i];
|
|
184
|
+
if (!digestElement || !digestElement.textContent?.trim()) emptyDigests++;
|
|
185
|
+
}
|
|
186
|
+
if (emptyDigests > 0) validationResults.digestValues.errors.push(`${emptyDigests} digest values are empty`);
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const certInfo = extractCertificateInfo(signingCredentials.certificatePem);
|
|
190
|
+
const keyPairValid = validateKeyPair(signingCredentials.certificatePem, signingCredentials.privateKeyPem);
|
|
191
|
+
if (!keyPairValid) validationResults.certificateInfo.errors.push("Certificate and private key do not match");
|
|
192
|
+
if (!certInfo.issuerName || !certInfo.serialNumber) validationResults.certificateInfo.errors.push("Certificate info extraction failed");
|
|
193
|
+
if (validationResults.certificateInfo.errors.length === 0) validationResults.certificateInfo.valid = true;
|
|
194
|
+
} catch (error) {
|
|
195
|
+
validationResults.certificateInfo.errors.push(`Certificate validation failed: ${error.message}`);
|
|
196
|
+
}
|
|
197
|
+
if (validationResults.signatureElements.errors.length === 0) validationResults.signatureElements.valid = true;
|
|
198
|
+
if (validationResults.digestValues.errors.length === 0) validationResults.digestValues.valid = true;
|
|
199
|
+
stepResults.step3_docDigest = { success: true };
|
|
200
|
+
stepResults.step4_signature = { success: true };
|
|
201
|
+
stepResults.step5_certDigest = { success: true };
|
|
202
|
+
stepResults.step6_signedProps = { success: true };
|
|
203
|
+
stepResults.step7_propsDigest = { success: true };
|
|
204
|
+
stepResults.step8_finalDoc = { success: true };
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error("Error during signing process:", error);
|
|
207
|
+
stepResults.step8_finalDoc = {
|
|
208
|
+
success: false,
|
|
209
|
+
error: error.message
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
} catch (error) {
|
|
213
|
+
console.error("Fatal error in debugging:", error);
|
|
214
|
+
}
|
|
215
|
+
const allValid = validationResults.xmlStructure.valid && validationResults.signatureElements.valid && validationResults.digestValues.valid && validationResults.certificateInfo.valid;
|
|
216
|
+
return {
|
|
217
|
+
success: allValid,
|
|
218
|
+
signedXML,
|
|
219
|
+
validationResults,
|
|
220
|
+
stepByStepResults: stepResults
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
//#endregion
|
|
225
|
+
export { debugSignedInvoiceXML, testCanonicalizationAlgorithms, validateXMLStructure };
|
|
226
|
+
//# sourceMappingURL=debug-invoice-submission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-invoice-submission.js","names":["xmlDocument: string","error: any","xmlString: string","errors: string[]","warnings: string[]","invoiceInfo: InvoiceV1_1","signingCredentials: SigningCredentials","signedXML: string | undefined"],"sources":["../../../src/utils/debug/debug-invoice-submission.ts"],"sourcesContent":["import { DOMParserImpl } from 'xmldom-ts'\nimport {\n extractCertificateInfo,\n generateSignedInvoiceXML,\n generateUBLXMLTemplate,\n validateKeyPair,\n} from '../invoice1-1'\nimport type {\n InvoiceV1_1,\n SigningCredentials,\n} from '../../types/documents/invoice-1_1.d.ts'\nimport { transformXmlInvoice } from '../signature/transform'\nimport {\n canonicalizeAndHashDocument,\n canonicalizeAndHashDocumentWithC14N11Fallback,\n} from '../signature/canonicalize'\n\n/**\n * Tests both canonicalization algorithms and compares their output\n * This can help determine if the algorithm difference affects signature validation\n * @param xmlDocument - The XML document string to test\n * @returns Object with canonicalization results and comparison\n */\nexport const testCanonicalizationAlgorithms = async (\n xmlDocument: string,\n): Promise<{\n exclusiveC14N: { success: boolean; digest?: string; error?: string }\n c14n11Fallback: { success: boolean; digest?: string; error?: string }\n areEqual: boolean\n}> => {\n const parser = new DOMParserImpl()\n const doc = parser.parseFromString(xmlDocument, 'application/xml')\n\n const results = {\n exclusiveC14N: { success: false } as any,\n c14n11Fallback: { success: false } as any,\n areEqual: false,\n }\n\n // Test Exclusive C14N\n try {\n const exclusiveDigest = await canonicalizeAndHashDocument(\n doc,\n 'http://www.w3.org/2001/10/xml-exc-c14n#',\n )\n results.exclusiveC14N = { success: true, digest: exclusiveDigest }\n } catch (error: any) {\n results.exclusiveC14N = { success: false, error: error.message }\n }\n\n // Test C14N 1.1 fallback\n try {\n const c14n11Digest =\n await canonicalizeAndHashDocumentWithC14N11Fallback(doc)\n results.c14n11Fallback = { success: true, digest: c14n11Digest }\n } catch (error: any) {\n results.c14n11Fallback = { success: false, error: error.message }\n }\n\n // Compare results\n if (results.exclusiveC14N.success && results.c14n11Fallback.success) {\n results.areEqual =\n results.exclusiveC14N.digest === results.c14n11Fallback.digest\n }\n\n return results\n}\n\n/**\n * Simple validation function that checks basic XML structure requirements\n */\nexport function validateXMLStructure(xmlString: string): {\n isValid: boolean\n errors: string[]\n warnings: string[]\n} {\n const errors: string[] = []\n const warnings: string[] = []\n\n try {\n const parser = new DOMParserImpl()\n const doc = parser.parseFromString(xmlString, 'application/xml')\n\n // Check for parser errors\n const parserErrors = doc.getElementsByTagName('parsererror')\n if (parserErrors.length > 0) {\n errors.push('XML parsing failed')\n return { isValid: false, errors, warnings }\n }\n\n // Check required elements\n const requiredElements = [\n 'Invoice',\n 'UBLExtensions',\n 'cbc:ID',\n 'cbc:IssueDate',\n 'cbc:IssueTime',\n 'cbc:InvoiceTypeCode',\n 'ds:Signature',\n 'ds:SignatureValue',\n 'ds:X509Certificate',\n ]\n\n for (const element of requiredElements) {\n const elements = element.includes(':')\n ? doc.getElementsByTagName(element)\n : doc.getElementsByTagName(element)\n\n if (elements.length === 0) {\n errors.push(`Missing required element: ${element}`)\n }\n }\n\n // Check namespace declarations\n const expectedNamespaces = [\n 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2',\n 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n ]\n\n for (const ns of expectedNamespaces) {\n if (!xmlString.includes(ns)) {\n warnings.push(`Missing namespace declaration: ${ns}`)\n }\n }\n } catch (error: any) {\n errors.push(`XML validation error: ${error.message}`)\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n }\n}\n\n/**\n * Comprehensive debugging function to help identify issues with generated XML\n * This validates the structure against MyInvois requirements and provides detailed feedback\n */\nexport async function debugSignedInvoiceXML(\n invoiceInfo: InvoiceV1_1,\n signingCredentials: SigningCredentials,\n): Promise<{\n success: boolean\n signedXML?: string\n validationResults: {\n xmlStructure: { valid: boolean; errors: string[] }\n signatureElements: { valid: boolean; errors: string[] }\n digestValues: { valid: boolean; errors: string[] }\n certificateInfo: { valid: boolean; errors: string[] }\n canonicalizationTest: any\n }\n stepByStepResults: {\n step1_template: { success: boolean; error?: string }\n step2_transform: { success: boolean; error?: string }\n step3_docDigest: { success: boolean; digest?: string; error?: string }\n step4_signature: { success: boolean; signature?: string; error?: string }\n step5_certDigest: { success: boolean; digest?: string; error?: string }\n step6_signedProps: { success: boolean; error?: string }\n step7_propsDigest: { success: boolean; digest?: string; error?: string }\n step8_finalDoc: { success: boolean; error?: string }\n }\n}> {\n const stepResults = {\n step1_template: { success: false } as any,\n step2_transform: { success: false } as any,\n step3_docDigest: { success: false } as any,\n step4_signature: { success: false } as any,\n step5_certDigest: { success: false } as any,\n step6_signedProps: { success: false } as any,\n step7_propsDigest: { success: false } as any,\n step8_finalDoc: { success: false } as any,\n }\n\n const validationResults = {\n xmlStructure: { valid: false, errors: [] as string[] },\n signatureElements: { valid: false, errors: [] as string[] },\n digestValues: { valid: false, errors: [] as string[] },\n certificateInfo: { valid: false, errors: [] as string[] },\n canonicalizationTest: null as any,\n }\n\n let signedXML: string | undefined\n\n try {\n // Step 1: Generate template\n try {\n const xmlTemplate = generateUBLXMLTemplate(invoiceInfo)\n stepResults.step1_template = { success: true }\n\n // Validate XML structure\n const parser = new DOMParserImpl()\n const doc = parser.parseFromString(xmlTemplate, 'application/xml')\n const parserErrors = doc.getElementsByTagName('parsererror')\n if (parserErrors.length > 0) {\n validationResults.xmlStructure.errors.push(\n 'XML template parsing failed',\n )\n } else {\n validationResults.xmlStructure.valid = true\n }\n } catch (error: any) {\n stepResults.step1_template = { success: false, error: error.message }\n validationResults.xmlStructure.errors.push(\n `Template generation failed: ${error.message}`,\n )\n }\n\n // Step 2: Transform\n try {\n const xmlTemplate = generateUBLXMLTemplate(invoiceInfo)\n const transformedXml = transformXmlInvoice(xmlTemplate)\n stepResults.step2_transform = { success: true }\n\n // Check if transformation worked correctly\n if (transformedXml.includes('UBLExtensions')) {\n validationResults.xmlStructure.errors.push(\n 'UBLExtensions not properly removed in transformation',\n )\n }\n if (transformedXml.includes('<cac:Signature>')) {\n validationResults.xmlStructure.errors.push(\n 'cac:Signature elements not properly removed in transformation',\n )\n }\n } catch (error: any) {\n stepResults.step2_transform = { success: false, error: error.message }\n }\n\n // Test canonicalization\n try {\n const xmlTemplate = generateUBLXMLTemplate(invoiceInfo)\n validationResults.canonicalizationTest =\n await testCanonicalizationAlgorithms(xmlTemplate)\n } catch (error: any) {\n validationResults.canonicalizationTest = { error: error.message }\n }\n\n // Continue with full signing process\n try {\n signedXML = await generateSignedInvoiceXML(\n invoiceInfo,\n signingCredentials,\n )\n\n // Parse the final signed XML for validation\n const parser = new DOMParserImpl()\n const finalDoc = parser.parseFromString(signedXML, 'application/xml')\n\n // Check signature elements are populated\n const signatureValue =\n finalDoc.getElementsByTagName('ds:SignatureValue')[0]\n const x509Certificate =\n finalDoc.getElementsByTagName('ds:X509Certificate')[0]\n const digestValues = finalDoc.getElementsByTagName('ds:DigestValue')\n\n if (!signatureValue || !signatureValue.textContent?.trim()) {\n validationResults.signatureElements.errors.push(\n 'SignatureValue is empty',\n )\n }\n\n if (!x509Certificate || !x509Certificate.textContent?.trim()) {\n validationResults.signatureElements.errors.push(\n 'X509Certificate is empty',\n )\n }\n\n if (digestValues.length < 2) {\n validationResults.digestValues.errors.push(\n 'Missing digest values (expected at least 2)',\n )\n } else {\n let emptyDigests = 0\n for (let i = 0; i < digestValues.length; i++) {\n const digestElement = digestValues[i]\n if (!digestElement || !digestElement.textContent?.trim()) {\n emptyDigests++\n }\n }\n if (emptyDigests > 0) {\n validationResults.digestValues.errors.push(\n `${emptyDigests} digest values are empty`,\n )\n }\n }\n\n // Validate certificate info\n try {\n const certInfo = extractCertificateInfo(\n signingCredentials.certificatePem,\n )\n const keyPairValid = validateKeyPair(\n signingCredentials.certificatePem,\n signingCredentials.privateKeyPem,\n )\n\n if (!keyPairValid) {\n validationResults.certificateInfo.errors.push(\n 'Certificate and private key do not match',\n )\n }\n\n if (!certInfo.issuerName || !certInfo.serialNumber) {\n validationResults.certificateInfo.errors.push(\n 'Certificate info extraction failed',\n )\n }\n\n if (validationResults.certificateInfo.errors.length === 0) {\n validationResults.certificateInfo.valid = true\n }\n } catch (error: any) {\n validationResults.certificateInfo.errors.push(\n `Certificate validation failed: ${error.message}`,\n )\n }\n\n // Set validation flags\n if (validationResults.signatureElements.errors.length === 0) {\n validationResults.signatureElements.valid = true\n }\n if (validationResults.digestValues.errors.length === 0) {\n validationResults.digestValues.valid = true\n }\n\n // Mark individual steps as successful if we got here\n stepResults.step3_docDigest = { success: true }\n stepResults.step4_signature = { success: true }\n stepResults.step5_certDigest = { success: true }\n stepResults.step6_signedProps = { success: true }\n stepResults.step7_propsDigest = { success: true }\n stepResults.step8_finalDoc = { success: true }\n } catch (error: any) {\n console.error('Error during signing process:', error)\n stepResults.step8_finalDoc = { success: false, error: error.message }\n }\n } catch (error: any) {\n console.error('Fatal error in debugging:', error)\n }\n\n const allValid =\n validationResults.xmlStructure.valid &&\n validationResults.signatureElements.valid &&\n validationResults.digestValues.valid &&\n validationResults.certificateInfo.valid\n\n return {\n success: allValid,\n signedXML,\n validationResults,\n stepByStepResults: stepResults,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,MAAa,iCAAiC,OAC5CA,gBAKI;CACJ,MAAM,SAAS,IAAI;CACnB,MAAM,MAAM,OAAO,gBAAgB,aAAa,kBAAkB;CAElE,MAAM,UAAU;EACd,eAAe,EAAE,SAAS,MAAO;EACjC,gBAAgB,EAAE,SAAS,MAAO;EAClC,UAAU;CACX;AAGD,KAAI;EACF,MAAM,kBAAkB,MAAM,4BAC5B,KACA,0CACD;AACD,UAAQ,gBAAgB;GAAE,SAAS;GAAM,QAAQ;EAAiB;CACnE,SAAQC,OAAY;AACnB,UAAQ,gBAAgB;GAAE,SAAS;GAAO,OAAO,MAAM;EAAS;CACjE;AAGD,KAAI;EACF,MAAM,eACJ,MAAM,8CAA8C,IAAI;AAC1D,UAAQ,iBAAiB;GAAE,SAAS;GAAM,QAAQ;EAAc;CACjE,SAAQA,OAAY;AACnB,UAAQ,iBAAiB;GAAE,SAAS;GAAO,OAAO,MAAM;EAAS;CAClE;AAGD,KAAI,QAAQ,cAAc,WAAW,QAAQ,eAAe,QAC1D,SAAQ,WACN,QAAQ,cAAc,WAAW,QAAQ,eAAe;AAG5D,QAAO;AACR;;;;AAKD,SAAgB,qBAAqBC,WAInC;CACA,MAAMC,SAAmB,CAAE;CAC3B,MAAMC,WAAqB,CAAE;AAE7B,KAAI;EACF,MAAM,SAAS,IAAI;EACnB,MAAM,MAAM,OAAO,gBAAgB,WAAW,kBAAkB;EAGhE,MAAM,eAAe,IAAI,qBAAqB,cAAc;AAC5D,MAAI,aAAa,SAAS,GAAG;AAC3B,UAAO,KAAK,qBAAqB;AACjC,UAAO;IAAE,SAAS;IAAO;IAAQ;GAAU;EAC5C;EAGD,MAAM,mBAAmB;GACvB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;AAED,OAAK,MAAM,WAAW,kBAAkB;GACtC,MAAM,WAAW,QAAQ,SAAS,IAAI,GAClC,IAAI,qBAAqB,QAAQ,GACjC,IAAI,qBAAqB,QAAQ;AAErC,OAAI,SAAS,WAAW,EACtB,QAAO,MAAM,4BAA4B,QAAQ,EAAE;EAEtD;EAGD,MAAM,qBAAqB;GACzB;GACA;GACA;EACD;AAED,OAAK,MAAM,MAAM,mBACf,MAAK,UAAU,SAAS,GAAG,CACzB,UAAS,MAAM,iCAAiC,GAAG,EAAE;CAG1D,SAAQH,OAAY;AACnB,SAAO,MAAM,wBAAwB,MAAM,QAAQ,EAAE;CACtD;AAED,QAAO;EACL,SAAS,OAAO,WAAW;EAC3B;EACA;CACD;AACF;;;;;AAMD,eAAsB,sBACpBI,aACAC,oBAqBC;CACD,MAAM,cAAc;EAClB,gBAAgB,EAAE,SAAS,MAAO;EAClC,iBAAiB,EAAE,SAAS,MAAO;EACnC,iBAAiB,EAAE,SAAS,MAAO;EACnC,iBAAiB,EAAE,SAAS,MAAO;EACnC,kBAAkB,EAAE,SAAS,MAAO;EACpC,mBAAmB,EAAE,SAAS,MAAO;EACrC,mBAAmB,EAAE,SAAS,MAAO;EACrC,gBAAgB,EAAE,SAAS,MAAO;CACnC;CAED,MAAM,oBAAoB;EACxB,cAAc;GAAE,OAAO;GAAO,QAAQ,CAAE;EAAc;EACtD,mBAAmB;GAAE,OAAO;GAAO,QAAQ,CAAE;EAAc;EAC3D,cAAc;GAAE,OAAO;GAAO,QAAQ,CAAE;EAAc;EACtD,iBAAiB;GAAE,OAAO;GAAO,QAAQ,CAAE;EAAc;EACzD,sBAAsB;CACvB;CAED,IAAIC;AAEJ,KAAI;AAEF,MAAI;GACF,MAAM,cAAc,uBAAuB,YAAY;AACvD,eAAY,iBAAiB,EAAE,SAAS,KAAM;GAG9C,MAAM,SAAS,IAAI;GACnB,MAAM,MAAM,OAAO,gBAAgB,aAAa,kBAAkB;GAClE,MAAM,eAAe,IAAI,qBAAqB,cAAc;AAC5D,OAAI,aAAa,SAAS,EACxB,mBAAkB,aAAa,OAAO,KACpC,8BACD;OAED,mBAAkB,aAAa,QAAQ;EAE1C,SAAQN,OAAY;AACnB,eAAY,iBAAiB;IAAE,SAAS;IAAO,OAAO,MAAM;GAAS;AACrE,qBAAkB,aAAa,OAAO,MACnC,8BAA8B,MAAM,QAAQ,EAC9C;EACF;AAGD,MAAI;GACF,MAAM,cAAc,uBAAuB,YAAY;GACvD,MAAM,iBAAiB,oBAAoB,YAAY;AACvD,eAAY,kBAAkB,EAAE,SAAS,KAAM;AAG/C,OAAI,eAAe,SAAS,gBAAgB,CAC1C,mBAAkB,aAAa,OAAO,KACpC,uDACD;AAEH,OAAI,eAAe,SAAS,kBAAkB,CAC5C,mBAAkB,aAAa,OAAO,KACpC,gEACD;EAEJ,SAAQA,OAAY;AACnB,eAAY,kBAAkB;IAAE,SAAS;IAAO,OAAO,MAAM;GAAS;EACvE;AAGD,MAAI;GACF,MAAM,cAAc,uBAAuB,YAAY;AACvD,qBAAkB,uBAChB,MAAM,+BAA+B,YAAY;EACpD,SAAQA,OAAY;AACnB,qBAAkB,uBAAuB,EAAE,OAAO,MAAM,QAAS;EAClE;AAGD,MAAI;AACF,eAAY,MAAM,yBAChB,aACA,mBACD;GAGD,MAAM,SAAS,IAAI;GACnB,MAAM,WAAW,OAAO,gBAAgB,WAAW,kBAAkB;GAGrE,MAAM,iBACJ,SAAS,qBAAqB,oBAAoB,CAAC;GACrD,MAAM,kBACJ,SAAS,qBAAqB,qBAAqB,CAAC;GACtD,MAAM,eAAe,SAAS,qBAAqB,iBAAiB;AAEpE,QAAK,mBAAmB,eAAe,aAAa,MAAM,CACxD,mBAAkB,kBAAkB,OAAO,KACzC,0BACD;AAGH,QAAK,oBAAoB,gBAAgB,aAAa,MAAM,CAC1D,mBAAkB,kBAAkB,OAAO,KACzC,2BACD;AAGH,OAAI,aAAa,SAAS,EACxB,mBAAkB,aAAa,OAAO,KACpC,8CACD;QACI;IACL,IAAI,eAAe;AACnB,SAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;KAC5C,MAAM,gBAAgB,aAAa;AACnC,UAAK,kBAAkB,cAAc,aAAa,MAAM,CACtD;IAEH;AACD,QAAI,eAAe,EACjB,mBAAkB,aAAa,OAAO,MACnC,EAAE,aAAa,0BACjB;GAEJ;AAGD,OAAI;IACF,MAAM,WAAW,uBACf,mBAAmB,eACpB;IACD,MAAM,eAAe,gBACnB,mBAAmB,gBACnB,mBAAmB,cACpB;AAED,SAAK,aACH,mBAAkB,gBAAgB,OAAO,KACvC,2CACD;AAGH,SAAK,SAAS,eAAe,SAAS,aACpC,mBAAkB,gBAAgB,OAAO,KACvC,qCACD;AAGH,QAAI,kBAAkB,gBAAgB,OAAO,WAAW,EACtD,mBAAkB,gBAAgB,QAAQ;GAE7C,SAAQA,OAAY;AACnB,sBAAkB,gBAAgB,OAAO,MACtC,iCAAiC,MAAM,QAAQ,EACjD;GACF;AAGD,OAAI,kBAAkB,kBAAkB,OAAO,WAAW,EACxD,mBAAkB,kBAAkB,QAAQ;AAE9C,OAAI,kBAAkB,aAAa,OAAO,WAAW,EACnD,mBAAkB,aAAa,QAAQ;AAIzC,eAAY,kBAAkB,EAAE,SAAS,KAAM;AAC/C,eAAY,kBAAkB,EAAE,SAAS,KAAM;AAC/C,eAAY,mBAAmB,EAAE,SAAS,KAAM;AAChD,eAAY,oBAAoB,EAAE,SAAS,KAAM;AACjD,eAAY,oBAAoB,EAAE,SAAS,KAAM;AACjD,eAAY,iBAAiB,EAAE,SAAS,KAAM;EAC/C,SAAQA,OAAY;AACnB,WAAQ,MAAM,iCAAiC,MAAM;AACrD,eAAY,iBAAiB;IAAE,SAAS;IAAO,OAAO,MAAM;GAAS;EACtE;CACF,SAAQA,OAAY;AACnB,UAAQ,MAAM,6BAA6B,MAAM;CAClD;CAED,MAAM,WACJ,kBAAkB,aAAa,SAC/B,kBAAkB,kBAAkB,SACpC,kBAAkB,aAAa,SAC/B,kBAAkB,gBAAgB;AAEpC,QAAO;EACL,SAAS;EACT;EACA;EACA,mBAAmB;CACpB;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBaseUrl.d.ts","names":["environment: 'sandbox' | 'production'"],"sources":["../../src/utils/getBaseUrl.ts"],"sourcesContent":[],"mappings":";cAAa"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import "../classification-codes-C2X4xW5-.js";
|
|
2
|
+
import "../country-code-DsI8Mbzx.js";
|
|
3
|
+
import "../currencies-DKuDflOO.js";
|
|
4
|
+
import "../e-invoice-C2TxhyrK.js";
|
|
5
|
+
import "../signatures-C9QPZTQd.js";
|
|
6
|
+
import "../tax-types-CEpfSh5P.js";
|
|
7
|
+
import "../1X-C-_KHV-Q.js";
|
|
8
|
+
import "../2X-DkS1BoE5.js";
|
|
9
|
+
import "../3X-DFI-4RQQ.js";
|
|
10
|
+
import "../4X-CIJ2JJ2w.js";
|
|
11
|
+
import "../5X-COsZHUaQ.js";
|
|
12
|
+
import "../6X-ClZDKOTC.js";
|
|
13
|
+
import "../7X-BZyesooz.js";
|
|
14
|
+
import "../8X-DkuKAkHz.js";
|
|
15
|
+
import "../9X-BDgifncF.js";
|
|
16
|
+
import "../AX-D6XHWdrY.js";
|
|
17
|
+
import "../BX-D_0C8Qbd.js";
|
|
18
|
+
import "../CX-HH4cSZRX.js";
|
|
19
|
+
import "../DX-Dx22ax_I.js";
|
|
20
|
+
import "../EX-BRWh1wFc.js";
|
|
21
|
+
import "../FX-RmjwAr40.js";
|
|
22
|
+
import "../GX-CJyo7oDp.js";
|
|
23
|
+
import "../HX-XALBTdLA.js";
|
|
24
|
+
import "../IX-6SZ55QKb.js";
|
|
25
|
+
import "../JX-hQ1XRmLp.js";
|
|
26
|
+
import "../KX-BNwunEfn.js";
|
|
27
|
+
import "../LX-CHYX3X3J.js";
|
|
28
|
+
import "../MX-BPGLWSUz.js";
|
|
29
|
+
import "../NX-RulN5Ml3.js";
|
|
30
|
+
import "../OX-DgKVSp7I.js";
|
|
31
|
+
import "../PX-DA4A2kEv.js";
|
|
32
|
+
import "../QX-DrFqsMEs.js";
|
|
33
|
+
import "../RX-Cm7vFcFN.js";
|
|
34
|
+
import "../SX-CsPPTu-W.js";
|
|
35
|
+
import "../TX-DCY25MdR.js";
|
|
36
|
+
import "../UX-DauyagHy.js";
|
|
37
|
+
import "../VX-DD4scgCe.js";
|
|
38
|
+
import "../WX-CjkoppdY.js";
|
|
39
|
+
import "../YX-DUdO8mRC.js";
|
|
40
|
+
import "../ZX-DwfcSA-D.js";
|
|
41
|
+
import "../XX-sbsIUOnA.js";
|
|
42
|
+
import "../unit-types-1bF0KhIp.js";
|
|
43
|
+
import "../payment-modes-B8dNy3SM.js";
|
|
44
|
+
import "../0X-C4IRh_fJ.js";
|
|
45
|
+
import "../1X-Brnls9Jh.js";
|
|
46
|
+
import "../2X-UdQcQW24.js";
|
|
47
|
+
import "../3X-DVDyspgb.js";
|
|
48
|
+
import "../4X-CUR8jlaZ.js";
|
|
49
|
+
import "../5X-C6db432h.js";
|
|
50
|
+
import "../6X-C_fFIcJC.js";
|
|
51
|
+
import "../7X-kot_VccM.js";
|
|
52
|
+
import "../8X-Df4DOBOe.js";
|
|
53
|
+
import "../9X-BhBWlgxG.js";
|
|
54
|
+
import "../msic-codes-bs0lTfSZ.js";
|
|
55
|
+
import { InvoiceV1_1, SigningCredentials } from "../invoice-1_1-BJVcw-oE.js";
|
|
56
|
+
|
|
57
|
+
//#region src/utils/invoice1-1.d.ts
|
|
58
|
+
/**
|
|
59
|
+
* Generates a document hash for submission (separate from signature DocDigest)
|
|
60
|
+
* This is the SHA256 hash required by the Submit Documents API
|
|
61
|
+
*
|
|
62
|
+
* OFFICIAL MyInvois FAQ: "The XML/JSON document is hashed using SHA-256 to create the documentHash value"
|
|
63
|
+
* CRITICAL: Must hash the SAME document that gets encoded for submission (minified XML)
|
|
64
|
+
* Source: https://sdk.myinvois.hasil.gov.my/faq/#how-to-hash-the-documenthash-value-and-encode-the-document-value
|
|
65
|
+
*/
|
|
66
|
+
declare const generateDocumentHash: (xmlDocument: string) => string;
|
|
67
|
+
/**
|
|
68
|
+
* Encodes the XML document to base64 for submission
|
|
69
|
+
* Includes minification as recommended by MyInvois documentation
|
|
70
|
+
*/
|
|
71
|
+
declare const encodeDocumentForSubmission: (xmlDocument: string) => string;
|
|
72
|
+
/**
|
|
73
|
+
* Utility functions for extracting certificate information
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* Extracts certificate information from a PEM certificate file
|
|
77
|
+
* @param certificatePem - The certificate in PEM format
|
|
78
|
+
* @returns Object containing issuer name and serial number
|
|
79
|
+
*/
|
|
80
|
+
declare const extractCertificateInfo: (certificatePem: string) => {
|
|
81
|
+
issuerName: string;
|
|
82
|
+
serialNumber: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Validates that certificate and private key match
|
|
86
|
+
* @param certificatePem - The certificate in PEM format
|
|
87
|
+
* @param privateKeyPem - The private key in PEM format
|
|
88
|
+
* @returns boolean indicating if they match
|
|
89
|
+
*/
|
|
90
|
+
declare const validateKeyPair: (certificatePem: string, privateKeyPem: string) => boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Helper function to create SigningCredentials from certificate and private key files
|
|
93
|
+
* @param certificatePem - The certificate in PEM format
|
|
94
|
+
* @param privateKeyPem - The private key in PEM format
|
|
95
|
+
* @returns Complete SigningCredentials object
|
|
96
|
+
*/
|
|
97
|
+
declare function createSigningCredentials(certificatePem: string, privateKeyPem: string): SigningCredentials;
|
|
98
|
+
/**
|
|
99
|
+
* Generates the UBL XML template with complete signature structure
|
|
100
|
+
*/
|
|
101
|
+
declare function generateUBLXMLTemplate(invoiceInfo: InvoiceV1_1): string;
|
|
102
|
+
/**
|
|
103
|
+
* Generates a signed UBL XML invoice document following MyInvois specifications.
|
|
104
|
+
*
|
|
105
|
+
* @param invoiceInfo - The invoice data structure
|
|
106
|
+
* @param signingCredentials - Digital signature credentials
|
|
107
|
+
* @returns Promise<string> - The complete signed XML document ready for submission
|
|
108
|
+
*/
|
|
109
|
+
declare const generateSignedInvoiceXML: (invoiceInfo: InvoiceV1_1, signingCredentials: SigningCredentials) => Promise<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Generates a document hash for submission using the same method as signature creation
|
|
112
|
+
* This ensures consistency with MyInvois validation requirements
|
|
113
|
+
*/
|
|
114
|
+
declare const generateDocumentHashForSubmission: (xmlDocument: string) => Promise<string>;
|
|
115
|
+
//#endregion
|
|
116
|
+
export { createSigningCredentials, encodeDocumentForSubmission, extractCertificateInfo, generateDocumentHash, generateDocumentHashForSubmission, generateSignedInvoiceXML, generateUBLXMLTemplate, validateKeyPair };
|
|
117
|
+
//# sourceMappingURL=invoice1-1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoice1-1.d.ts","names":["xmlDocument: string","certificatePem: string","privateKeyPem: string","invoiceInfo: InvoiceV1_1","signingCredentials: SigningCredentials"],"sources":["../../src/utils/invoice1-1.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8Ta;;;;;cA2CA;;;;;;;;;cAcA;;;;;;;;;;cAoCA;;;;;;;iBA+BG,wBAAA,iDAGb;;;;iBAoBa,sBAAA,cAAoC;;;;;;;;cAgHvC,wCACE,iCACO,uBACnB;;;;AAtQH;AA2Ca,cAuRA,iCAvR+BA,EAAAA,CAAAA,WAAAA,EAAAA,MAAAA,EAAAA,GAyRzC,OAzRyCA,CAAAA,MAAAA,CAAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createSigningCredentials, encodeDocumentForSubmission, extractCertificateInfo, generateDocumentHash, generateDocumentHashForSubmission, generateSignedInvoiceXML, generateUBLXMLTemplate, validateKeyPair } from "../invoice1-1-CHuLpkFz.js";
|
|
2
|
+
import "../canonicalize-DNUrCGad.js";
|
|
3
|
+
import "../hashCert-Bol7lIh2.js";
|
|
4
|
+
import "../hashSignedProperties-9vj5wlYR.js";
|
|
5
|
+
import "../populateFinalDocument-BpLXmgLv.js";
|
|
6
|
+
import "../populateSignedProperties-BvGN-YZH.js";
|
|
7
|
+
import "../sign-DzHK7UhR.js";
|
|
8
|
+
import "../transform-D1q-U6Zj.js";
|
|
9
|
+
|
|
10
|
+
export { createSigningCredentials, encodeDocumentForSubmission, extractCertificateInfo, generateDocumentHash, generateDocumentHashForSubmission, generateSignedInvoiceXML, generateUBLXMLTemplate, validateKeyPair };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/utils/signature/canonicalize.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Canonicalizes the XML document using the best available canonicalization algorithm,
|
|
4
|
+
* hashes it using SHA-256, and returns the Base64 encoded digest.
|
|
5
|
+
*
|
|
6
|
+
* Corresponds to Step 3 in the MyInvois Signature Creation guide:
|
|
7
|
+
* https://sdk.myinvois.hasil.gov.my/signature-creation/#step-3-canonicalize-the-document-and-generate-the-document-hash-digest
|
|
8
|
+
*
|
|
9
|
+
* Note: MyInvois documentation specifies C14N 1.1, but due to limited Node.js library support,
|
|
10
|
+
* this implementation uses Exclusive C14N which is widely supported and should be compatible
|
|
11
|
+
* in most cases. If signature validation fails, this may need to be updated.
|
|
12
|
+
*
|
|
13
|
+
* @param doc The XML Document object (from xmldom-ts) after transformations (Step 2).
|
|
14
|
+
* @param algorithm Optional canonicalization algorithm URI. Defaults to Exclusive C14N.
|
|
15
|
+
* @returns A Promise resolving to the Base64 encoded SHA-256 hash (DocDigest).
|
|
16
|
+
* @throws {Error} If canonicalization or hashing fails.
|
|
17
|
+
*/
|
|
18
|
+
declare function canonicalizeAndHashDocument(doc: Document, algorithm?: string): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Attempts to use C14N 1.1 if available, otherwise falls back to Exclusive C14N.
|
|
21
|
+
* This function provides a way to try the MyInvois-specified algorithm first.
|
|
22
|
+
*/
|
|
23
|
+
declare function canonicalizeAndHashDocumentWithC14N11Fallback(doc: Document): Promise<string>;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { canonicalizeAndHashDocument, canonicalizeAndHashDocumentWithC14N11Fallback };
|
|
26
|
+
//# sourceMappingURL=canonicalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalize.d.ts","names":["doc: Document","algorithm: string"],"sources":["../../../src/utils/signature/canonicalize.ts"],"sourcesContent":[],"mappings":";;AAmBA;;;;AAGG;AAgEH;;;;AAEG;;;;;;iBArEa,2BAAA,MACT,+BAEJ;;;;;iBAgEmB,6CAAA,MACf,WACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/utils/signature/hashCert.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Hashes the signing certificate using SHA-256 and encodes the hash in Base64.
|
|
4
|
+
*
|
|
5
|
+
* Corresponds to Step 5 in the MyInvois Signature Creation guide:
|
|
6
|
+
* https://sdk.myinvois.hasil.gov.my/signature-creation/#step-5-generate-the-certificate-hash
|
|
7
|
+
*
|
|
8
|
+
* @param certificatePem The signing certificate in PEM format (string).
|
|
9
|
+
* @returns The Base64 encoded SHA-256 hash of the certificate (CertDigest).
|
|
10
|
+
* @throws {Error} If hashing fails or PEM is invalid.
|
|
11
|
+
*/
|
|
12
|
+
declare function hashCertificate(certificatePem: string): string;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { hashCertificate };
|
|
15
|
+
//# sourceMappingURL=hashCert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashCert.d.ts","names":["certificatePem: string"],"sources":["../../../src/utils/signature/hashCert.ts"],"sourcesContent":[],"mappings":";;AAgFA;;;;;;;;;iBAAgB,eAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/utils/signature/hashSignedProperties.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Selects the SignedProperties element, canonicalizes it using the best available
|
|
4
|
+
* canonicalization algorithm, hashes it using SHA-256, and returns the Base64 encoded digest.
|
|
5
|
+
*
|
|
6
|
+
* Corresponds to Step 7 in the MyInvois Signature Creation guide:
|
|
7
|
+
* https://sdk.myinvois.hasil.gov.my/signature-creation/#step-7-generate-signed-properties-hash
|
|
8
|
+
*
|
|
9
|
+
* Note: MyInvois documentation specifies C14N 1.1, but due to limited Node.js library support,
|
|
10
|
+
* this implementation uses Exclusive C14N which is widely supported and should be compatible
|
|
11
|
+
* in most cases. If signature validation fails, this may need to be updated.
|
|
12
|
+
*
|
|
13
|
+
* @param doc The XML Document object (from xmldom-ts) after SignedProperties population (Step 6).
|
|
14
|
+
* @param algorithm Optional canonicalization algorithm URI. Defaults to Exclusive C14N.
|
|
15
|
+
* @returns A Promise resolving to the Base64 encoded SHA-256 hash (PropsDigest).
|
|
16
|
+
* @throws {Error} If the SignedProperties element cannot be found or canonicalization/hashing fails.
|
|
17
|
+
*/
|
|
18
|
+
declare function hashSignedProperties(doc: Document, algorithm?: string): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Attempts to use C14N 1.1 for SignedProperties if available, otherwise falls back to Exclusive C14N.
|
|
21
|
+
*/
|
|
22
|
+
declare function hashSignedPropertiesWithC14N11Fallback(doc: Document): Promise<string>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { hashSignedProperties, hashSignedPropertiesWithC14N11Fallback };
|
|
25
|
+
//# sourceMappingURL=hashSignedProperties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashSignedProperties.d.ts","names":["doc: Document","algorithm: string"],"sources":["../../../src/utils/signature/hashSignedProperties.ts"],"sourcesContent":[],"mappings":";;AAoBA;;;;AAGG;AA+GH;;;;AAEG;;;;;;iBApHa,oBAAA,MACT,+BAEJ;;;;iBA+GmB,sCAAA,MACf,WACJ"}
|