@jesec/flood 0.0.0-master.04a8573 → 0.0.0-master.04bad62
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/CHANGELOG.md +347 -2
- package/README.md +41 -25
- package/dist/assets/assets/Alerts-BfYWD54i.js +2 -0
- package/dist/assets/assets/Alerts-BfYWD54i.js.map +1 -0
- package/dist/assets/assets/ApplicationView-CX-Aip_y.js +2 -0
- package/dist/assets/assets/ApplicationView-CX-Aip_y.js.map +1 -0
- package/dist/assets/assets/AuthForm-Ck3duk7L.js +2 -0
- package/dist/assets/assets/AuthForm-Ck3duk7L.js.map +1 -0
- package/dist/assets/assets/Login-DBlD37QS.js +2 -0
- package/dist/assets/assets/Login-DBlD37QS.js.map +1 -0
- package/dist/assets/assets/Modals-D-wROmqO.js +53 -0
- package/dist/assets/assets/Modals-D-wROmqO.js.map +1 -0
- package/dist/assets/assets/Overview-B_EduxbC.js +700 -0
- package/dist/assets/assets/Overview-B_EduxbC.js.map +1 -0
- package/dist/assets/assets/Register-Bfi9ZV0Q.js +2 -0
- package/dist/assets/assets/Register-Bfi9ZV0Q.js.map +1 -0
- package/dist/assets/assets/ad-DuzDZabR.js +2 -0
- package/dist/assets/assets/ad-DuzDZabR.js.map +1 -0
- package/dist/assets/assets/ae-mkY-Q7Jw.js +2 -0
- package/dist/assets/assets/ae-mkY-Q7Jw.js.map +1 -0
- package/dist/assets/assets/af-B6-pStw9.js +2 -0
- package/dist/assets/assets/af-B6-pStw9.js.map +1 -0
- package/dist/assets/assets/af-DPrtuV94.js +2 -0
- package/dist/assets/assets/af-DPrtuV94.js.map +1 -0
- package/dist/assets/assets/ag-DNCGAFJH.js +2 -0
- package/dist/assets/assets/ag-DNCGAFJH.js.map +1 -0
- package/dist/assets/assets/al-C_aTCEDQ.js +2 -0
- package/dist/assets/assets/al-C_aTCEDQ.js.map +1 -0
- package/dist/assets/assets/am-Sr8MvIS7.js +2 -0
- package/dist/assets/assets/am-Sr8MvIS7.js.map +1 -0
- package/dist/assets/assets/ao-CsJhl30Y.js +2 -0
- package/dist/assets/assets/ao-CsJhl30Y.js.map +1 -0
- package/dist/assets/assets/ar-B_CHaIUf.js +2 -0
- package/dist/assets/assets/ar-B_CHaIUf.js.map +1 -0
- package/dist/assets/assets/ar-Cevz1Qs-.js +2 -0
- package/dist/assets/assets/ar-Cevz1Qs-.js.map +1 -0
- package/dist/assets/assets/at-CiWOhHAz.js +2 -0
- package/dist/assets/assets/at-CiWOhHAz.js.map +1 -0
- package/dist/assets/assets/au-Bg5EqKS0.js +2 -0
- package/dist/assets/assets/au-Bg5EqKS0.js.map +1 -0
- package/dist/assets/assets/az-B61XRgw0.js +2 -0
- package/dist/assets/assets/az-B61XRgw0.js.map +1 -0
- package/dist/assets/assets/ba-Cmt66gfg.js +2 -0
- package/dist/assets/assets/ba-Cmt66gfg.js.map +1 -0
- package/dist/assets/assets/bb-CR-__YaH.js +2 -0
- package/dist/assets/assets/bb-CR-__YaH.js.map +1 -0
- package/dist/assets/assets/bd-BNthAGOP.js +2 -0
- package/dist/assets/assets/bd-BNthAGOP.js.map +1 -0
- package/dist/assets/assets/be-n0KexQYT.js +2 -0
- package/dist/assets/assets/be-n0KexQYT.js.map +1 -0
- package/dist/assets/assets/bf-CW9xprIG.js +2 -0
- package/dist/assets/assets/bf-CW9xprIG.js.map +1 -0
- package/dist/assets/assets/bg-CEPzQvFM.js +2 -0
- package/dist/assets/assets/bg-CEPzQvFM.js.map +1 -0
- package/dist/assets/assets/bh-D956X5o9.js +2 -0
- package/dist/assets/assets/bh-D956X5o9.js.map +1 -0
- package/dist/assets/assets/bi-dPCv_c-w.js +2 -0
- package/dist/assets/assets/bi-dPCv_c-w.js.map +1 -0
- package/dist/assets/assets/bj-BI_8Wbdr.js +2 -0
- package/dist/assets/assets/bj-BI_8Wbdr.js.map +1 -0
- package/dist/assets/assets/bn-BC2Aoz80.js +2 -0
- package/dist/assets/assets/bn-BC2Aoz80.js.map +1 -0
- package/dist/assets/assets/bo-CELcxyPF.js +2 -0
- package/dist/assets/assets/bo-CELcxyPF.js.map +1 -0
- package/dist/assets/assets/br-CXLqJ-F4.js +2 -0
- package/dist/assets/assets/br-CXLqJ-F4.js.map +1 -0
- package/dist/assets/assets/bs-NowsU2-W.js +2 -0
- package/dist/assets/assets/bs-NowsU2-W.js.map +1 -0
- package/dist/assets/assets/bt-dYTlOroH.js +2 -0
- package/dist/assets/assets/bt-dYTlOroH.js.map +1 -0
- package/dist/assets/assets/bw-D4vkJpZr.js +2 -0
- package/dist/assets/assets/bw-D4vkJpZr.js.map +1 -0
- package/dist/assets/assets/by-eP_jw9Kc.js +2 -0
- package/dist/assets/assets/by-eP_jw9Kc.js.map +1 -0
- package/dist/assets/assets/bz-CCMMQS8N.js +2 -0
- package/dist/assets/assets/bz-CCMMQS8N.js.map +1 -0
- package/dist/assets/assets/ca-DAtf_5hQ.js +2 -0
- package/dist/assets/assets/ca-DAtf_5hQ.js.map +1 -0
- package/dist/assets/assets/ca-XCK4Ukes.js +2 -0
- package/dist/assets/assets/ca-XCK4Ukes.js.map +1 -0
- package/dist/assets/assets/cd-EHjOG1bO.js +2 -0
- package/dist/assets/assets/cd-EHjOG1bO.js.map +1 -0
- package/dist/assets/assets/cf-DnV2k9tP.js +2 -0
- package/dist/assets/assets/cf-DnV2k9tP.js.map +1 -0
- package/dist/assets/assets/cg-2ZHLG0Mz.js +2 -0
- package/dist/assets/assets/cg-2ZHLG0Mz.js.map +1 -0
- package/dist/assets/assets/ch-CA-QpVeB.js +2 -0
- package/dist/assets/assets/ch-CA-QpVeB.js.map +1 -0
- package/dist/assets/assets/ci-eeX5pCsO.js +2 -0
- package/dist/assets/assets/ci-eeX5pCsO.js.map +1 -0
- package/dist/assets/assets/cl-D2scfwli.js +2 -0
- package/dist/assets/assets/cl-D2scfwli.js.map +1 -0
- package/dist/assets/assets/cm-DyX7ciTH.js +2 -0
- package/dist/assets/assets/cm-DyX7ciTH.js.map +1 -0
- package/dist/assets/assets/cn-CUTpdmU5.js +2 -0
- package/dist/assets/assets/cn-CUTpdmU5.js.map +1 -0
- package/dist/assets/assets/co-DcXC8Nb5.js +2 -0
- package/dist/assets/assets/co-DcXC8Nb5.js.map +1 -0
- package/dist/assets/assets/cr-D4hE4yAQ.js +2 -0
- package/dist/assets/assets/cr-D4hE4yAQ.js.map +1 -0
- package/dist/assets/assets/cs-BIjoDiHH.js +2 -0
- package/dist/assets/assets/cs-BIjoDiHH.js.map +1 -0
- package/dist/assets/assets/cu-Dl19LoSo.js +2 -0
- package/dist/assets/assets/cu-Dl19LoSo.js.map +1 -0
- package/dist/assets/assets/cv-Dc7EiSki.js +2 -0
- package/dist/assets/assets/cv-Dc7EiSki.js.map +1 -0
- package/dist/assets/assets/cw-B3QTQWLm.js +2 -0
- package/dist/assets/assets/cw-B3QTQWLm.js.map +1 -0
- package/dist/assets/assets/cy-lPbapF6t.js +2 -0
- package/dist/assets/assets/cy-lPbapF6t.js.map +1 -0
- package/dist/assets/assets/cz-CSN1u-1p.js +2 -0
- package/dist/assets/assets/cz-CSN1u-1p.js.map +1 -0
- package/dist/assets/assets/da-Cd4-2_5U.js +2 -0
- package/dist/assets/assets/da-Cd4-2_5U.js.map +1 -0
- package/dist/assets/assets/de-C7YtizCu.js +2 -0
- package/dist/assets/assets/de-C7YtizCu.js.map +1 -0
- package/dist/assets/assets/de-DNid5tvw.js +2 -0
- package/dist/assets/assets/de-DNid5tvw.js.map +1 -0
- package/dist/assets/assets/dist-DTOngMXG.js +5 -0
- package/dist/assets/assets/dist-DTOngMXG.js.map +1 -0
- package/dist/assets/assets/dj-BY__Rk6N.js +2 -0
- package/dist/assets/assets/dj-BY__Rk6N.js.map +1 -0
- package/dist/assets/assets/dk-BrBg2C-u.js +2 -0
- package/dist/assets/assets/dk-BrBg2C-u.js.map +1 -0
- package/dist/assets/assets/dm-B8fppkLZ.js +2 -0
- package/dist/assets/assets/dm-B8fppkLZ.js.map +1 -0
- package/dist/assets/assets/do-DT6lsFi0.js +2 -0
- package/dist/assets/assets/do-DT6lsFi0.js.map +1 -0
- package/dist/assets/assets/dz-DvjjArkf.js +2 -0
- package/dist/assets/assets/dz-DvjjArkf.js.map +1 -0
- package/dist/assets/assets/ec-CLcn3ZY5.js +2 -0
- package/dist/assets/assets/ec-CLcn3ZY5.js.map +1 -0
- package/dist/assets/assets/ee-DhRoyamb.js +2 -0
- package/dist/assets/assets/ee-DhRoyamb.js.map +1 -0
- package/dist/assets/assets/eg-BMJXSjA7.js +2 -0
- package/dist/assets/assets/eg-BMJXSjA7.js.map +1 -0
- package/dist/assets/assets/eh-kPNs0m4W.js +2 -0
- package/dist/assets/assets/eh-kPNs0m4W.js.map +1 -0
- package/dist/assets/assets/el-BaaG9zXY.js +2 -0
- package/dist/assets/assets/el-BaaG9zXY.js.map +1 -0
- package/dist/assets/assets/er-CgcszDHk.js +2 -0
- package/dist/assets/assets/er-CgcszDHk.js.map +1 -0
- package/dist/assets/assets/es-Cn40GwkH.js +2 -0
- package/dist/assets/assets/es-Cn40GwkH.js.map +1 -0
- package/dist/assets/assets/es-DDZkgU93.js +2 -0
- package/dist/assets/assets/es-DDZkgU93.js.map +1 -0
- package/dist/assets/assets/et-xpjwka4f.js +2 -0
- package/dist/assets/assets/et-xpjwka4f.js.map +1 -0
- package/dist/assets/assets/fi-BaKFdgP1.js +2 -0
- package/dist/assets/assets/fi-BaKFdgP1.js.map +1 -0
- package/dist/assets/assets/fi-CFoJ7h4p.js +2 -0
- package/dist/assets/assets/fi-CFoJ7h4p.js.map +1 -0
- package/dist/assets/assets/fj-Dv9fACYg.js +2 -0
- package/dist/assets/assets/fj-Dv9fACYg.js.map +1 -0
- package/dist/assets/assets/fm-CJS-CajN.js +2 -0
- package/dist/assets/assets/fm-CJS-CajN.js.map +1 -0
- package/dist/assets/assets/fr-CFYjBpyx.js +2 -0
- package/dist/assets/assets/fr-CFYjBpyx.js.map +1 -0
- package/dist/assets/assets/fr-DihSzc5w.js +2 -0
- package/dist/assets/assets/fr-DihSzc5w.js.map +1 -0
- package/dist/assets/assets/ga-CNumRDCQ.js +2 -0
- package/dist/assets/assets/ga-CNumRDCQ.js.map +1 -0
- package/dist/assets/assets/gb-WNer3TCs.js +2 -0
- package/dist/assets/assets/gb-WNer3TCs.js.map +1 -0
- package/dist/assets/assets/gd-AxP8ZqQ3.js +2 -0
- package/dist/assets/assets/gd-AxP8ZqQ3.js.map +1 -0
- package/dist/assets/assets/ge-BZNhlpjl.js +2 -0
- package/dist/assets/assets/ge-BZNhlpjl.js.map +1 -0
- package/dist/assets/assets/gh-DfG0KL4E.js +2 -0
- package/dist/assets/assets/gh-DfG0KL4E.js.map +1 -0
- package/dist/assets/assets/gm-DNv0Gi3L.js +2 -0
- package/dist/assets/assets/gm-DNv0Gi3L.js.map +1 -0
- package/dist/assets/assets/gn-CCNIcOau.js +2 -0
- package/dist/assets/assets/gn-CCNIcOau.js.map +1 -0
- package/dist/assets/assets/gq-Db3JBvRp.js +2 -0
- package/dist/assets/assets/gq-Db3JBvRp.js.map +1 -0
- package/dist/assets/assets/gr-CUycZL06.js +2 -0
- package/dist/assets/assets/gr-CUycZL06.js.map +1 -0
- package/dist/assets/assets/gt-CvcG2CCr.js +2 -0
- package/dist/assets/assets/gt-CvcG2CCr.js.map +1 -0
- package/dist/assets/assets/gw-Bz6bHaFC.js +2 -0
- package/dist/assets/assets/gw-Bz6bHaFC.js.map +1 -0
- package/dist/assets/assets/gy-Bh14gmuk.js +2 -0
- package/dist/assets/assets/gy-Bh14gmuk.js.map +1 -0
- package/dist/assets/assets/he-BqHuQNYF.js +2 -0
- package/dist/assets/assets/he-BqHuQNYF.js.map +1 -0
- package/dist/assets/assets/hk-CoxQRos-.js +2 -0
- package/dist/assets/assets/hk-CoxQRos-.js.map +1 -0
- package/dist/assets/assets/hn-D9MR-twd.js +2 -0
- package/dist/assets/assets/hn-D9MR-twd.js.map +1 -0
- package/dist/assets/assets/hr-CY8ssDf2.js +2 -0
- package/dist/assets/assets/hr-CY8ssDf2.js.map +1 -0
- package/dist/assets/assets/ht-Btab_P66.js +2 -0
- package/dist/assets/assets/ht-Btab_P66.js.map +1 -0
- package/dist/assets/assets/hu-Bd15G6cY.js +2 -0
- package/dist/assets/assets/hu-Bd15G6cY.js.map +1 -0
- package/dist/assets/assets/hu-XTCl1evV.js +2 -0
- package/dist/assets/assets/hu-XTCl1evV.js.map +1 -0
- package/dist/assets/assets/id-Cl2IUqcE.js +2 -0
- package/dist/assets/assets/id-Cl2IUqcE.js.map +1 -0
- package/dist/assets/assets/ie-DhNM_aaB.js +2 -0
- package/dist/assets/assets/ie-DhNM_aaB.js.map +1 -0
- package/dist/assets/assets/il-CjxCOku_.js +2 -0
- package/dist/assets/assets/il-CjxCOku_.js.map +1 -0
- package/dist/assets/assets/in-BiAGGW0P.js +2 -0
- package/dist/assets/assets/in-BiAGGW0P.js.map +1 -0
- package/dist/assets/assets/index-D69dPsX8.js +84 -0
- package/dist/assets/assets/index-D69dPsX8.js.map +1 -0
- package/dist/assets/assets/index-H8kSoxrM.css +1 -0
- package/dist/assets/assets/iq-Cv2AX3gf.js +2 -0
- package/dist/assets/assets/iq-Cv2AX3gf.js.map +1 -0
- package/dist/assets/assets/ir-ChSMloNP.js +2 -0
- package/dist/assets/assets/ir-ChSMloNP.js.map +1 -0
- package/dist/assets/assets/is-B_gQCHkP.js +2 -0
- package/dist/assets/assets/is-B_gQCHkP.js.map +1 -0
- package/dist/assets/assets/it-CKWb6UZL.js +2 -0
- package/dist/assets/assets/it-CKWb6UZL.js.map +1 -0
- package/dist/assets/assets/it-nE66-Fr1.js +2 -0
- package/dist/assets/assets/it-nE66-Fr1.js.map +1 -0
- package/dist/assets/assets/ja-B623Yqkl.js +2 -0
- package/dist/assets/assets/ja-B623Yqkl.js.map +1 -0
- package/dist/assets/assets/je-Bf5hMZi_.js +2 -0
- package/dist/assets/assets/je-Bf5hMZi_.js.map +1 -0
- package/dist/assets/assets/jm-B9-ZYIdz.js +2 -0
- package/dist/assets/assets/jm-B9-ZYIdz.js.map +1 -0
- package/dist/assets/assets/jo-LRCd5NbG.js +2 -0
- package/dist/assets/assets/jo-LRCd5NbG.js.map +1 -0
- package/dist/assets/assets/jp-Jgwu6K6N.js +2 -0
- package/dist/assets/assets/jp-Jgwu6K6N.js.map +1 -0
- package/dist/assets/assets/ke-BDIx-O5L.js +2 -0
- package/dist/assets/assets/ke-BDIx-O5L.js.map +1 -0
- package/dist/assets/assets/kg-D_8Ev0zW.js +2 -0
- package/dist/assets/assets/kg-D_8Ev0zW.js.map +1 -0
- package/dist/assets/assets/kh-D9n-04BG.js +2 -0
- package/dist/assets/assets/kh-D9n-04BG.js.map +1 -0
- package/dist/assets/assets/ki-DfQfF35G.js +2 -0
- package/dist/assets/assets/ki-DfQfF35G.js.map +1 -0
- package/dist/assets/assets/km-DIs2PJNm.js +2 -0
- package/dist/assets/assets/km-DIs2PJNm.js.map +1 -0
- package/dist/assets/assets/kn-A-kuWFN_.js +2 -0
- package/dist/assets/assets/kn-A-kuWFN_.js.map +1 -0
- package/dist/assets/assets/ko-DE_dHFvf.js +2 -0
- package/dist/assets/assets/ko-DE_dHFvf.js.map +1 -0
- package/dist/assets/assets/kp-DdNIIhXM.js +2 -0
- package/dist/assets/assets/kp-DdNIIhXM.js.map +1 -0
- package/dist/assets/assets/kr-DrWfuTqv.js +2 -0
- package/dist/assets/assets/kr-DrWfuTqv.js.map +1 -0
- package/dist/assets/assets/ks-DJfQ-YO3.js +2 -0
- package/dist/assets/assets/ks-DJfQ-YO3.js.map +1 -0
- package/dist/assets/assets/kw-Bo7h3oBB.js +2 -0
- package/dist/assets/assets/kw-Bo7h3oBB.js.map +1 -0
- package/dist/assets/assets/kz-DG6hiRvd.js +2 -0
- package/dist/assets/assets/kz-DG6hiRvd.js.map +1 -0
- package/dist/assets/assets/la-DIC6JYVS.js +2 -0
- package/dist/assets/assets/la-DIC6JYVS.js.map +1 -0
- package/dist/assets/assets/lb-DZ9bz8Y4.js +2 -0
- package/dist/assets/assets/lb-DZ9bz8Y4.js.map +1 -0
- package/dist/assets/assets/lc-Dr02stwZ.js +2 -0
- package/dist/assets/assets/lc-Dr02stwZ.js.map +1 -0
- package/dist/assets/assets/li-DhScucbM.js +2 -0
- package/dist/assets/assets/li-DhScucbM.js.map +1 -0
- package/dist/assets/assets/lk-D_git-VI.js +2 -0
- package/dist/assets/assets/lk-D_git-VI.js.map +1 -0
- package/dist/assets/assets/lr-Gz2Pv4Is.js +2 -0
- package/dist/assets/assets/lr-Gz2Pv4Is.js.map +1 -0
- package/dist/assets/assets/ls-Dla8Mtxv.js +2 -0
- package/dist/assets/assets/ls-Dla8Mtxv.js.map +1 -0
- package/dist/assets/assets/lt-C9s1s2DO.js +2 -0
- package/dist/assets/assets/lt-C9s1s2DO.js.map +1 -0
- package/dist/assets/assets/lu-2yhjYU-Q.js +2 -0
- package/dist/assets/assets/lu-2yhjYU-Q.js.map +1 -0
- package/dist/assets/assets/lv-W5x5JHfO.js +2 -0
- package/dist/assets/assets/lv-W5x5JHfO.js.map +1 -0
- package/dist/assets/assets/ly-CQRzcpdX.js +2 -0
- package/dist/assets/assets/ly-CQRzcpdX.js.map +1 -0
- package/dist/assets/assets/ma-B7eS8F31.js +2 -0
- package/dist/assets/assets/ma-B7eS8F31.js.map +1 -0
- package/dist/assets/assets/mc-KSBzvhnr.js +2 -0
- package/dist/assets/assets/mc-KSBzvhnr.js.map +1 -0
- package/dist/assets/assets/md-DZXCIQ3o.js +2 -0
- package/dist/assets/assets/md-DZXCIQ3o.js.map +1 -0
- package/dist/assets/assets/me-Bx7s2-BC.js +2 -0
- package/dist/assets/assets/me-Bx7s2-BC.js.map +1 -0
- package/dist/assets/assets/mg-CUAmb4P0.js +2 -0
- package/dist/assets/assets/mg-CUAmb4P0.js.map +1 -0
- package/dist/assets/assets/mh-D58v_sSR.js +2 -0
- package/dist/assets/assets/mh-D58v_sSR.js.map +1 -0
- package/dist/assets/assets/mk-B1iKenEf.js +2 -0
- package/dist/assets/assets/mk-B1iKenEf.js.map +1 -0
- package/dist/assets/assets/ml-aN2SVTBH.js +2 -0
- package/dist/assets/assets/ml-aN2SVTBH.js.map +1 -0
- package/dist/assets/assets/mm-BwRj9s66.js +2 -0
- package/dist/assets/assets/mm-BwRj9s66.js.map +1 -0
- package/dist/assets/assets/mn-CcmT9UiQ.js +2 -0
- package/dist/assets/assets/mn-CcmT9UiQ.js.map +1 -0
- package/dist/assets/assets/mr-DnTuk3n4.js +2 -0
- package/dist/assets/assets/mr-DnTuk3n4.js.map +1 -0
- package/dist/assets/assets/mt-DGPWqRA6.js +2 -0
- package/dist/assets/assets/mt-DGPWqRA6.js.map +1 -0
- package/dist/assets/assets/mu-DcnqbcP-.js +2 -0
- package/dist/assets/assets/mu-DcnqbcP-.js.map +1 -0
- package/dist/assets/assets/mv-CCKYaZ-D.js +2 -0
- package/dist/assets/assets/mv-CCKYaZ-D.js.map +1 -0
- package/dist/assets/assets/mw-BxhR28Lk.js +2 -0
- package/dist/assets/assets/mw-BxhR28Lk.js.map +1 -0
- package/dist/assets/assets/mx-By-j66iW.js +2 -0
- package/dist/assets/assets/mx-By-j66iW.js.map +1 -0
- package/dist/assets/assets/my-3m2yhQRk.js +2 -0
- package/dist/assets/assets/my-3m2yhQRk.js.map +1 -0
- package/dist/assets/assets/mz-oGkxPx1n.js +2 -0
- package/dist/assets/assets/mz-oGkxPx1n.js.map +1 -0
- package/dist/assets/assets/na-CUsEkM92.js +2 -0
- package/dist/assets/assets/na-CUsEkM92.js.map +1 -0
- package/dist/assets/assets/ne-D_CUh-Lc.js +2 -0
- package/dist/assets/assets/ne-D_CUh-Lc.js.map +1 -0
- package/dist/assets/assets/ng-BPWJ1Me2.js +2 -0
- package/dist/assets/assets/ng-BPWJ1Me2.js.map +1 -0
- package/dist/assets/assets/ni-DEQvXqPw.js +2 -0
- package/dist/assets/assets/ni-DEQvXqPw.js.map +1 -0
- package/dist/assets/assets/nl-DDw301fE.js +2 -0
- package/dist/assets/assets/nl-DDw301fE.js.map +1 -0
- package/dist/assets/assets/nl-ld0j2zd2.js +2 -0
- package/dist/assets/assets/nl-ld0j2zd2.js.map +1 -0
- package/dist/assets/assets/no-D8_ZUO5T.js +2 -0
- package/dist/assets/assets/no-D8_ZUO5T.js.map +1 -0
- package/dist/assets/assets/no-XfCZZj7G.js +2 -0
- package/dist/assets/assets/no-XfCZZj7G.js.map +1 -0
- package/dist/assets/assets/np-ByWMGf7r.js +2 -0
- package/dist/assets/assets/np-ByWMGf7r.js.map +1 -0
- package/dist/assets/assets/nr-BGV1QKHR.js +2 -0
- package/dist/assets/assets/nr-BGV1QKHR.js.map +1 -0
- package/dist/assets/assets/nz-CtNGOSed.js +2 -0
- package/dist/assets/assets/nz-CtNGOSed.js.map +1 -0
- package/dist/assets/assets/om-DFZfEG_j.js +2 -0
- package/dist/assets/assets/om-DFZfEG_j.js.map +1 -0
- package/dist/assets/assets/pa-BTioHiDq.js +2 -0
- package/dist/assets/assets/pa-BTioHiDq.js.map +1 -0
- package/dist/assets/assets/pe-DWboUCbW.js +2 -0
- package/dist/assets/assets/pe-DWboUCbW.js.map +1 -0
- package/dist/assets/assets/pg-D4BAFBl7.js +2 -0
- package/dist/assets/assets/pg-D4BAFBl7.js.map +1 -0
- package/dist/assets/assets/ph-B9-4c05j.js +2 -0
- package/dist/assets/assets/ph-B9-4c05j.js.map +1 -0
- package/dist/assets/assets/pk-BoydhDTc.js +2 -0
- package/dist/assets/assets/pk-BoydhDTc.js.map +1 -0
- package/dist/assets/assets/pl-Dicpp7c2.js +2 -0
- package/dist/assets/assets/pl-Dicpp7c2.js.map +1 -0
- package/dist/assets/assets/pl-LvqNumg3.js +2 -0
- package/dist/assets/assets/pl-LvqNumg3.js.map +1 -0
- package/dist/assets/assets/pt-DA9RUNlT.js +2 -0
- package/dist/assets/assets/pt-DA9RUNlT.js.map +1 -0
- package/dist/assets/assets/pt-Gy6aSAgY.js +2 -0
- package/dist/assets/assets/pt-Gy6aSAgY.js.map +1 -0
- package/dist/assets/assets/pw-J_gyjYWh.js +2 -0
- package/dist/assets/assets/pw-J_gyjYWh.js.map +1 -0
- package/dist/assets/assets/py-CKAKoon7.js +2 -0
- package/dist/assets/assets/py-CKAKoon7.js.map +1 -0
- package/dist/assets/assets/qa-CNYB3R3R.js +2 -0
- package/dist/assets/assets/qa-CNYB3R3R.js.map +1 -0
- package/dist/assets/assets/ro-Btys85cp.js +2 -0
- package/dist/assets/assets/ro-Btys85cp.js.map +1 -0
- package/dist/assets/assets/ro-sfXVxWl6.js +2 -0
- package/dist/assets/assets/ro-sfXVxWl6.js.map +1 -0
- package/dist/assets/assets/rs-CVrceSzu.js +2 -0
- package/dist/assets/assets/rs-CVrceSzu.js.map +1 -0
- package/dist/assets/assets/ru-CrGgx3bV.js +2 -0
- package/dist/assets/assets/ru-CrGgx3bV.js.map +1 -0
- package/dist/assets/assets/ru-D7oU7uiF.js +2 -0
- package/dist/assets/assets/ru-D7oU7uiF.js.map +1 -0
- package/dist/assets/assets/rw-B0hMa2RX.js +2 -0
- package/dist/assets/assets/rw-B0hMa2RX.js.map +1 -0
- package/dist/assets/assets/sa-Cy9ipXz-.js +2 -0
- package/dist/assets/assets/sa-Cy9ipXz-.js.map +1 -0
- package/dist/assets/assets/sb-DJqNmnJ7.js +2 -0
- package/dist/assets/assets/sb-DJqNmnJ7.js.map +1 -0
- package/dist/assets/assets/sc-fjfYLACH.js +2 -0
- package/dist/assets/assets/sc-fjfYLACH.js.map +1 -0
- package/dist/assets/assets/sd-DPOn7vAp.js +2 -0
- package/dist/assets/assets/sd-DPOn7vAp.js.map +1 -0
- package/dist/assets/assets/se-DfjgVkvK.js +2 -0
- package/dist/assets/assets/se-DfjgVkvK.js.map +1 -0
- package/dist/assets/assets/sg-CX_EtT3D.js +2 -0
- package/dist/assets/assets/sg-CX_EtT3D.js.map +1 -0
- package/dist/assets/assets/si-uhOMNPy-.js +2 -0
- package/dist/assets/assets/si-uhOMNPy-.js.map +1 -0
- package/dist/assets/assets/sk-Dw1JgI5Z.js +2 -0
- package/dist/assets/assets/sk-Dw1JgI5Z.js.map +1 -0
- package/dist/assets/assets/sl-BwQ6WjNS.js +2 -0
- package/dist/assets/assets/sl-BwQ6WjNS.js.map +1 -0
- package/dist/assets/assets/sm-Cbxq8dmu.js +2 -0
- package/dist/assets/assets/sm-Cbxq8dmu.js.map +1 -0
- package/dist/assets/assets/sn-a-NX0-yL.js +2 -0
- package/dist/assets/assets/sn-a-NX0-yL.js.map +1 -0
- package/dist/assets/assets/so-DVEtVrBI.js +2 -0
- package/dist/assets/assets/so-DVEtVrBI.js.map +1 -0
- package/dist/assets/assets/sr-CPY2UrNZ.js +2 -0
- package/dist/assets/assets/sr-CPY2UrNZ.js.map +1 -0
- package/dist/assets/assets/sr-D0aNQziT.js +2 -0
- package/dist/assets/assets/sr-D0aNQziT.js.map +1 -0
- package/dist/assets/assets/st-BbElRNN3.js +2 -0
- package/dist/assets/assets/st-BbElRNN3.js.map +1 -0
- package/dist/assets/assets/sv-BIZdpGwy.js +2 -0
- package/dist/assets/assets/sv-BIZdpGwy.js.map +1 -0
- package/dist/assets/assets/sv-CtoRKEOL.js +2 -0
- package/dist/assets/assets/sv-CtoRKEOL.js.map +1 -0
- package/dist/assets/assets/sy-DuMP7Nb5.js +2 -0
- package/dist/assets/assets/sy-DuMP7Nb5.js.map +1 -0
- package/dist/assets/assets/sz-Bbm_EfJR.js +2 -0
- package/dist/assets/assets/sz-Bbm_EfJR.js.map +1 -0
- package/dist/assets/assets/td-C26ZKLeS.js +2 -0
- package/dist/assets/assets/td-C26ZKLeS.js.map +1 -0
- package/dist/assets/assets/tg-ClEcBIP7.js +2 -0
- package/dist/assets/assets/tg-ClEcBIP7.js.map +1 -0
- package/dist/assets/assets/th-Taw3xGiW.js +2 -0
- package/dist/assets/assets/th-Taw3xGiW.js.map +1 -0
- package/dist/assets/assets/tj-BgQ6d5Wt.js +2 -0
- package/dist/assets/assets/tj-BgQ6d5Wt.js.map +1 -0
- package/dist/assets/assets/tl-S1pvdloF.js +2 -0
- package/dist/assets/assets/tl-S1pvdloF.js.map +1 -0
- package/dist/assets/assets/tm-DPbuNbnA.js +2 -0
- package/dist/assets/assets/tm-DPbuNbnA.js.map +1 -0
- package/dist/assets/assets/tn-_Pbys28Y.js +2 -0
- package/dist/assets/assets/tn-_Pbys28Y.js.map +1 -0
- package/dist/assets/assets/to-Cr3ejDiA.js +2 -0
- package/dist/assets/assets/to-Cr3ejDiA.js.map +1 -0
- package/dist/assets/assets/tr-BKZ6SEMN.js +2 -0
- package/dist/assets/assets/tr-BKZ6SEMN.js.map +1 -0
- package/dist/assets/assets/tr-D_AEGmAM.js +2 -0
- package/dist/assets/assets/tr-D_AEGmAM.js.map +1 -0
- package/dist/assets/assets/tt-IRFqPLkZ.js +2 -0
- package/dist/assets/assets/tt-IRFqPLkZ.js.map +1 -0
- package/dist/assets/assets/tv-ByYAbG0B.js +2 -0
- package/dist/assets/assets/tv-ByYAbG0B.js.map +1 -0
- package/dist/assets/assets/tw-Ebz6JQyM.js +2 -0
- package/dist/assets/assets/tw-Ebz6JQyM.js.map +1 -0
- package/dist/assets/assets/tz-DofxpwnJ.js +2 -0
- package/dist/assets/assets/tz-DofxpwnJ.js.map +1 -0
- package/dist/assets/assets/ua-C-Z749Zo.js +2 -0
- package/dist/assets/assets/ua-C-Z749Zo.js.map +1 -0
- package/dist/assets/assets/ug-CWupOauw.js +2 -0
- package/dist/assets/assets/ug-CWupOauw.js.map +1 -0
- package/dist/assets/assets/uk-WjqaL9eb.js +2 -0
- package/dist/assets/assets/uk-WjqaL9eb.js.map +1 -0
- package/dist/assets/assets/us-ev7042Ru.js +2 -0
- package/dist/assets/assets/us-ev7042Ru.js.map +1 -0
- package/dist/assets/assets/uy-FbqkNalt.js +2 -0
- package/dist/assets/assets/uy-FbqkNalt.js.map +1 -0
- package/dist/assets/assets/uz-BplITj4H.js +2 -0
- package/dist/assets/assets/uz-BplITj4H.js.map +1 -0
- package/dist/assets/assets/va-DB_VgAEh.js +2 -0
- package/dist/assets/assets/va-DB_VgAEh.js.map +1 -0
- package/dist/assets/assets/vc-oE5LafoZ.js +2 -0
- package/dist/assets/assets/vc-oE5LafoZ.js.map +1 -0
- package/dist/assets/assets/ve-TIdwcWAT.js +2 -0
- package/dist/assets/assets/ve-TIdwcWAT.js.map +1 -0
- package/dist/assets/assets/vi-DhDHRZca.js +2 -0
- package/dist/assets/assets/vi-DhDHRZca.js.map +1 -0
- package/dist/assets/assets/vn-TW3TOhkl.js +2 -0
- package/dist/assets/assets/vn-TW3TOhkl.js.map +1 -0
- package/dist/assets/assets/vu-Hso0UfdZ.js +2 -0
- package/dist/assets/assets/vu-Hso0UfdZ.js.map +1 -0
- package/dist/assets/assets/ws-B8OQPEXR.js +2 -0
- package/dist/assets/assets/ws-B8OQPEXR.js.map +1 -0
- package/dist/assets/assets/ye-N2E5D6OR.js +2 -0
- package/dist/assets/assets/ye-N2E5D6OR.js.map +1 -0
- package/dist/assets/assets/za-DAg0rnhw.js +2 -0
- package/dist/assets/assets/za-DAg0rnhw.js.map +1 -0
- package/dist/assets/assets/zh-Hans-2KaAC0e7.js +2 -0
- package/dist/assets/assets/zh-Hans-2KaAC0e7.js.map +1 -0
- package/dist/assets/assets/zh-Hant-BgZemFsG.js +2 -0
- package/dist/assets/assets/zh-Hant-BgZemFsG.js.map +1 -0
- package/dist/assets/assets/zm-BGyCVCwM.js +2 -0
- package/dist/assets/assets/zm-BGyCVCwM.js.map +1 -0
- package/dist/assets/assets/zw-aeNZQ8mk.js +2 -0
- package/dist/assets/assets/zw-aeNZQ8mk.js.map +1 -0
- package/dist/assets/index.html +22 -1
- package/dist/assets/manifest.json +15 -1
- package/dist/index.js +4 -2
- package/package.json +165 -190
- package/dist/assets/static/css/850.c2ceb18494ed574b68dc.css +0 -1
- package/dist/assets/static/css/main.5abe7fffd635652591d3.css +0 -1
- package/dist/assets/static/js/289.c8aacd99.chunk.js +0 -1
- package/dist/assets/static/js/480.8afd1351.chunk.js +0 -1
- package/dist/assets/static/js/488.d1082093.chunk.js +0 -1
- package/dist/assets/static/js/850.13444f53.chunk.js +0 -1
- package/dist/assets/static/js/about.8ad5babf.chunk.js +0 -1
- package/dist/assets/static/js/flag1.137cce7b.chunk.js +0 -1
- package/dist/assets/static/js/flag2.6b5f593f.chunk.js +0 -1
- package/dist/assets/static/js/flag3.a2b00584.chunk.js +0 -1
- package/dist/assets/static/js/flag6.c23ec31b.chunk.js +0 -1
- package/dist/assets/static/js/i18n1.33406d6b.chunk.js +0 -1
- package/dist/assets/static/js/i18n10.025ec6f8.chunk.js +0 -1
- package/dist/assets/static/js/i18n12.789212fa.chunk.js +0 -1
- package/dist/assets/static/js/i18n13.9138e979.chunk.js +0 -1
- package/dist/assets/static/js/i18n14.856fbdd1.chunk.js +0 -1
- package/dist/assets/static/js/i18n15.93fb43d6.chunk.js +0 -1
- package/dist/assets/static/js/i18n16.fd9db133.chunk.js +0 -1
- package/dist/assets/static/js/i18n17.c960513a.chunk.js +0 -1
- package/dist/assets/static/js/i18n18.2f4205f4.chunk.js +0 -1
- package/dist/assets/static/js/i18n19.0a07e3df.chunk.js +0 -1
- package/dist/assets/static/js/i18n20.3db415ed.chunk.js +0 -1
- package/dist/assets/static/js/i18n21.07d4d01e.chunk.js +0 -1
- package/dist/assets/static/js/i18n23.b6e6327a.chunk.js +0 -1
- package/dist/assets/static/js/i18n25.a619dab1.chunk.js +0 -1
- package/dist/assets/static/js/i18n27.20664c1f.chunk.js +0 -1
- package/dist/assets/static/js/i18n28.4d8e640e.chunk.js +0 -1
- package/dist/assets/static/js/i18n3.3c9b6f82.chunk.js +0 -1
- package/dist/assets/static/js/i18n4.8841ce41.chunk.js +0 -1
- package/dist/assets/static/js/i18n5.47f17f30.chunk.js +0 -1
- package/dist/assets/static/js/i18n6.c9c1ce7f.chunk.js +0 -1
- package/dist/assets/static/js/i18n8.da94d613.chunk.js +0 -1
- package/dist/assets/static/js/i18n9.3881f214.chunk.js +0 -1
- package/dist/assets/static/js/main.b189cd13.js +0 -1
- /package/dist/assets/{static/media/Roboto-500.c7e17507.woff2 → assets/Roboto-500-CsZWW7Bu.woff2} +0 -0
- /package/dist/assets/{static/media/Roboto-700.2b8c7cb1.woff2 → assets/Roboto-700-D1ZLqfE0.woff2} +0 -0
- /package/dist/assets/{static/media/Roboto-700italic.05e025ae.woff2 → assets/Roboto-700italic-CfNT1HYS.woff2} +0 -0
- /package/dist/assets/{static/media/Roboto-italic.766b7c5c.woff2 → assets/Roboto-italic-BTa0Y66b.woff2} +0 -0
- /package/dist/assets/{static/media/Roboto-regular.11bce66a.woff2 → assets/Roboto-regular-CJgdpARq.woff2} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,327 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.11.0] (October 17, 2025)
|
|
4
|
+
|
|
5
|
+
- feat: show size for status filter (#923)
|
|
6
|
+
- fix: improve server startup message (#921)
|
|
7
|
+
|
|
8
|
+
## [4.10.0] (October 4, 2025)
|
|
9
|
+
|
|
10
|
+
- feat: Add optional Last Activity column to torrent list (#906)
|
|
11
|
+
- feat(client): add units of measure to throttle speeds (#899)
|
|
12
|
+
- feat: show 2 decimal in size usage (#916)
|
|
13
|
+
- fix: `LoadingOverlay` sometimes does not hide after login/logout (#905)
|
|
14
|
+
- fix: log authentication failed reasons (#882)
|
|
15
|
+
- Migrate webpack devServer proxy options to webpack v5 (#904)
|
|
16
|
+
- i18n: new translations (#919, #918)
|
|
17
|
+
- build(deps-dev): bump form-data from 4.0.1 to 4.0.4 (#900)
|
|
18
|
+
- build(deps-dev): bump axios from 1.8.2 to 1.12.0 (#912)
|
|
19
|
+
- build(deps-dev): bump tar-fs from 2.1.3 to 2.1.4 (#914)
|
|
20
|
+
|
|
21
|
+
## [4.9.5] (June 9, 2025)
|
|
22
|
+
|
|
23
|
+
- ci: use new pkg (#891)
|
|
24
|
+
- build(deps-dev): bump fastify from 4.29.0 to 4.29.1 (#881)
|
|
25
|
+
- build(deps-dev): bump tar-fs from 2.1.2 to 2.1.3 (#884)
|
|
26
|
+
- build(deps-dev): bump axios from 1.7.9 to 1.8.2 (#886)
|
|
27
|
+
- build(deps-dev): bump webpack-dev-server from 4.15.2 to 5.2.1 (#885)
|
|
28
|
+
- i18n: new translations (#889)
|
|
29
|
+
|
|
30
|
+
## [4.9.4] (June 9, 2025)
|
|
31
|
+
|
|
32
|
+
- build: add ghcr.io docker image
|
|
33
|
+
- build(deps-dev): bump esbuild from 0.19.12 to 0.25.0 (#869)
|
|
34
|
+
- build: replace deprecated `pkg` with `@yao-pkg/pkg` (#868)
|
|
35
|
+
- i18n: new translations (#863)
|
|
36
|
+
- ci: replace apt with apt-get (#860)
|
|
37
|
+
|
|
38
|
+
## [4.9.3] (January 30, 2025)
|
|
39
|
+
|
|
40
|
+
- build: upgrade deps (#858)
|
|
41
|
+
- docs: fix readme badge (#857)
|
|
42
|
+
|
|
43
|
+
## [4.9.2] (January 30, 2025)
|
|
44
|
+
|
|
45
|
+
- ci: always use version from package.json from ci (#855)
|
|
46
|
+
- ci: upload deb with gh cli to avoid override (#854)
|
|
47
|
+
|
|
48
|
+
## [4.9.1] (January 30, 2025)
|
|
49
|
+
|
|
50
|
+
- i18n: new translations (#852)
|
|
51
|
+
- ci: use bazel@7 to build deb (#851)
|
|
52
|
+
|
|
53
|
+
## [4.9.0] (January 15, 2025)
|
|
54
|
+
|
|
55
|
+
- feat: add filter by filesystem location + bonus tooltip on overflowed filter names (#518)
|
|
56
|
+
- fix(ui): some dark mode fixes (#714)
|
|
57
|
+
- fix: check if user service is bootstrapped before removing instances (#835)
|
|
58
|
+
- fix: run compaction every interval (#834)
|
|
59
|
+
- docs: add notes about upstream rtorrent json-rpc (#845)
|
|
60
|
+
- i18n: new translations (#848, #841)
|
|
61
|
+
- build(deps): bump nanoid from 3.3.7 to 3.3.8 (#833)
|
|
62
|
+
|
|
63
|
+
## [4.8.5] (December 10, 2024)
|
|
64
|
+
|
|
65
|
+
- fix(rTorrent): support xmlrpc int type (#829)
|
|
66
|
+
- fix(rTorrent): prevent extra commas in serialized XML (#830)
|
|
67
|
+
- fix(qBittorrent): api version state handling (#826)
|
|
68
|
+
- fix(qBittorrent): Missing states (#817)
|
|
69
|
+
- build: remove deprecated package `frontmatter-markdown-loader` (#831)
|
|
70
|
+
- build(deps): bump cross-spawn from 7.0.3 to 7.0.5 (#823)
|
|
71
|
+
- build(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 (#816)
|
|
72
|
+
- i18n: new translations (#821)
|
|
73
|
+
- ci: fix docker-dbg job (#822)
|
|
74
|
+
|
|
75
|
+
## [4.8.4] (October 9, 2024)
|
|
76
|
+
|
|
77
|
+
- fix: add_paused changed to add_stopped in qbit 5 (#810)
|
|
78
|
+
- ci: fix release workflow (#808)
|
|
79
|
+
- build(deps-dev): bump express from 4.19.2 to 4.20.0 (#805)
|
|
80
|
+
- build(deps-dev): bump body-parser from 1.20.2 to 1.20.3 (#804)
|
|
81
|
+
- build(deps): bump find-my-way from 8.2.0 to 8.2.2 (#807)
|
|
82
|
+
- build(deps-dev): bump webpack from 5.93.0 to 5.94.0 (#806)
|
|
83
|
+
|
|
84
|
+
## [4.8.3] (October 8, 2024)
|
|
85
|
+
|
|
86
|
+
- fix: resume and pause does not work with qbittorrent 5 (#801)
|
|
87
|
+
- fix: changed transmission ratio calculation to total size instead of downloaded size (#791)
|
|
88
|
+
- fix: correct buffers concatenation in socket (#787)
|
|
89
|
+
- style: add new rule for imports (#785)
|
|
90
|
+
- build: fix docker warn (#784)
|
|
91
|
+
- build: enable pnpm link (#783)
|
|
92
|
+
- build: embed mmdb as pure js data (#782)
|
|
93
|
+
- build: remove deprecated babel plugin (#781)
|
|
94
|
+
- i18n: new translations (#802)
|
|
95
|
+
|
|
96
|
+
## [4.8.2] (May 4, 2024)
|
|
97
|
+
|
|
98
|
+
nothing new, just a new release to for deb files.
|
|
99
|
+
|
|
100
|
+
## [4.8.1] (May 4, 2024)
|
|
101
|
+
|
|
102
|
+
- feat: new args `--disable-rate-limit` to disable rate limit on api except login (#737)
|
|
103
|
+
- fix: only generate mediainfo for video file (#741)
|
|
104
|
+
- fix: `/metainfo` json response for error (#740)
|
|
105
|
+
|
|
106
|
+
## [4.8.0] (April 24, 2024)
|
|
107
|
+
|
|
108
|
+
- fix(client): filter empty tags when setting/submitting tags (#715)
|
|
109
|
+
- fix(client): modal overflow on mobile (#713)
|
|
110
|
+
- fix(server): content-type on responding html (#708)
|
|
111
|
+
- fix(client): allows modal to grow when inner width exceeds container (#597)
|
|
112
|
+
- fix(client): misc styles (#691)
|
|
113
|
+
- fix(server): `@fastify/express` doesn't work with http2 (#705)
|
|
114
|
+
- fix(client): tracker filter size conditional render logic and react key prop (#702)
|
|
115
|
+
- fix: log error trace (#697)
|
|
116
|
+
- fix(server): handle number port (#692)
|
|
117
|
+
- feat(client): detect magnet and torrent links from clipboard (#690)
|
|
118
|
+
- server: remove port requirement, permit running on paths (#680)
|
|
119
|
+
- perf: mediainfo router should use async/await to get file info (#656)
|
|
120
|
+
- feat: use relative path in mediainfo info (#657)
|
|
121
|
+
- TorrentGeneralInfo: drop leading and trailing whitespaces from comment (#674)
|
|
122
|
+
- LinkedText: fix torrent comment line break (#667)
|
|
123
|
+
- server: rTorrent: manage request queue with p-queue - fix memory leak (#650)
|
|
124
|
+
- TransferRateGraph: explicitly declare width and height to 100%
|
|
125
|
+
- server: qBittorrent: use POST method for API calls
|
|
126
|
+
- server: qBittorrent: log in using POST method (#594)
|
|
127
|
+
- server: torrentService: normalize case of hash during torrent lookup
|
|
128
|
+
- TorrentListColumns: add "Finished" column (#565)
|
|
129
|
+
- styles: sortable-list: disallow selecting text in a list
|
|
130
|
+
- client: scripts: development: drop unnecessary browser popup
|
|
131
|
+
- MoveTorrentsModal: suggest longest common prefix as path
|
|
132
|
+
- server: rTorrent: throw error when file moving fails
|
|
133
|
+
- FilesystemBrowser: line break unconditionally for long paths
|
|
134
|
+
- TorrentListDropzone: pop up "Add Torrents" modal instead of adding directly
|
|
135
|
+
- server: rTorrent: avoid relying on type coercion of RPC value
|
|
136
|
+
- server: rTorrent: remove "hasLoadThrow" and fold into "isJSONCapable"
|
|
137
|
+
- server: ditch unmaintained "spdy"
|
|
138
|
+
- SortableList: switch to clauderic/dnd-kit
|
|
139
|
+
- server: drop databases before removing user
|
|
140
|
+
- server: switch to @seald/nedb
|
|
141
|
+
- server: tests: replace "ts-jest/utils" with "ts-jest"
|
|
142
|
+
- TorrentGeneralInfo: display "None" when there is no comment
|
|
143
|
+
- LinkedText: drop RegEx incompatible with Safari
|
|
144
|
+
- feature: display comment inside .torrent in torrent details (#541)
|
|
145
|
+
- TransferRateGraph: fix blank graph in some cases
|
|
146
|
+
- TorrentList: fix "a wild 0 appears"
|
|
147
|
+
- client: Fix regression introduced in PR #519, fixes #522 (#523)
|
|
148
|
+
- sidebar: make filter sections collapsible (#519)
|
|
149
|
+
- client: add page title speed display preference
|
|
150
|
+
- DownloadRulesTab, FeedsTab: force new component when editing
|
|
151
|
+
- server: add shebang to bundled executable
|
|
152
|
+
- Dockerfile: use the "npm run build" command
|
|
153
|
+
- server: create production build with webpack directly
|
|
154
|
+
- server: flatten directory structure a bit
|
|
155
|
+
- server: tests: ensure connectivity to client before tests
|
|
156
|
+
- server: tests: confirm deletion of torrents before continue
|
|
157
|
+
- client: reformat "typings.d.ts", fixup ffcc5c8e0
|
|
158
|
+
- server: tests: mock response to torrents fetch
|
|
159
|
+
- server: normalize fetching of torrents added with URL
|
|
160
|
+
- client: fix webpack devServer port selection
|
|
161
|
+
- styles: apply dark theme to TorrentListDropzone
|
|
162
|
+
- TorrentFilterStore: simplify and fix scroll to top on filter change
|
|
163
|
+
- client: allow multi-select of filters with Ctrl and Shift keys
|
|
164
|
+
- server: remove unused history snapshots and make it in-mem only
|
|
165
|
+
- TagFilters, TrackerFilters: fix filtering by tag/tracker
|
|
166
|
+
- client: remove unnecessary "UIActions" abstraction
|
|
167
|
+
- server: Transmission: normalize "unknown" ETA (-2) to infinity (-1) (#432)
|
|
168
|
+
|
|
169
|
+
## [4.7.0] (October 9, 2021)
|
|
170
|
+
|
|
171
|
+
- Display total size by tag or tracker of torrents on sidebar (#369, @sabersalv)
|
|
172
|
+
- Improve memoization of "TorrentListRow" and "ProgressBar" components
|
|
173
|
+
- Fix loading indicator bar alignment (#396, @DopyConqueror)
|
|
174
|
+
- New translations
|
|
175
|
+
- Arabic, thanks to yngams
|
|
176
|
+
- Chinese Simplified, thanks to @davidxuang
|
|
177
|
+
- Czech, thanks to @Kedlub
|
|
178
|
+
- Italian, thanks to @GiorgioBrux
|
|
179
|
+
- German, thanks to @Kiina
|
|
180
|
+
- Japanese, thanks to @Kuri0421 and @Kiina
|
|
181
|
+
- Korean, thanks to @Kiina
|
|
182
|
+
- Polish, thanks to @retmas-gh
|
|
183
|
+
- Spanish, thanks to @oaknuggins
|
|
184
|
+
- Norwegian, thanks to Daddie0
|
|
185
|
+
- Bump dependencies
|
|
186
|
+
|
|
187
|
+
## [4.6.1] (July 5, 2021)
|
|
188
|
+
|
|
189
|
+
- DiskUsage: skip mount points of "overlayfs" type (#341, @Trim21)
|
|
190
|
+
- Deluge:
|
|
191
|
+
- Avoid crashing Flood when there is a connection error
|
|
192
|
+
- Note again that Deluge support is still experimental
|
|
193
|
+
- Bug fixes:
|
|
194
|
+
- Cleanup synchronous patterns (#340)
|
|
195
|
+
- AuthForm: add missing i18n for "Username" and "Password" (#336)
|
|
196
|
+
- server: destroy user services before cleaning up data
|
|
197
|
+
- TorrentListCell: passthrough clicks
|
|
198
|
+
- New translations
|
|
199
|
+
- French, thanks to @foXaCe
|
|
200
|
+
- German, thanks to @chint95
|
|
201
|
+
- Korean, thanks to @Kiina
|
|
202
|
+
- Romanian, thanks to @T-z3P
|
|
203
|
+
- Bump dependencies
|
|
204
|
+
|
|
205
|
+
## [4.6.0] (May 28, 2021)
|
|
206
|
+
|
|
207
|
+
- Experimental Deluge support
|
|
208
|
+
- caveat: tags are not supported at the moment
|
|
209
|
+
- Add "last active date" and "finished date" to the torrent properties
|
|
210
|
+
- Migrate stylesheets to SCSS module system
|
|
211
|
+
- Ditch inefficient "TRANSFER_SUMMARY_DIFF_CHANGE" SSE event
|
|
212
|
+
- Allow to download contents of multiple selected torrents
|
|
213
|
+
- Update base Node.js versions of single-executable builds
|
|
214
|
+
- rTorrent:
|
|
215
|
+
- Add torrents to rTorrent via socket
|
|
216
|
+
- qBittorrent:
|
|
217
|
+
- Improve performance by throttling concurrent requests
|
|
218
|
+
- Bug fixes:
|
|
219
|
+
- Fix memory leak and unreliability when the settings of a user is updated by simplifying service manager
|
|
220
|
+
- Pipe created torrent to response directly
|
|
221
|
+
- Security enhancements:
|
|
222
|
+
- Forbid non-owner access to runtime directory by default
|
|
223
|
+
- New translations
|
|
224
|
+
- Chinese (Simplified), thanks to @coxde
|
|
225
|
+
- Czech, thanks to @brezinajn
|
|
226
|
+
- German, thanks to @chint95
|
|
227
|
+
- Hungarian, thanks to @m3r3nix
|
|
228
|
+
- Korean, thanks to @Kiina
|
|
229
|
+
- Spanish, thanks to Zagon
|
|
230
|
+
- Bump dependencies
|
|
231
|
+
|
|
232
|
+
## [4.5.4] (April 24, 2021)
|
|
233
|
+
|
|
234
|
+
- Bug fixes:
|
|
235
|
+
- "Torrents with long names get truncated in torrent detail modal (#273)" on Safari
|
|
236
|
+
- New translations
|
|
237
|
+
- Chinese (Simplified), thanks to @coxde
|
|
238
|
+
- Dutch, thanks to John Willemsen
|
|
239
|
+
- Italian, thanks to Simone De Nadai
|
|
240
|
+
- Bump dependencies
|
|
241
|
+
|
|
242
|
+
## [4.5.3] (April 10, 2021)
|
|
243
|
+
|
|
244
|
+
- Bug fixes:
|
|
245
|
+
- Tags need a F5 refresh to be displayed after being set (#266)
|
|
246
|
+
- Torrents with long names get truncated in torrent detail modal (#273)
|
|
247
|
+
- qBittorrent: allow .torrent download with new session directory path (#275, @angristan)
|
|
248
|
+
- New translations
|
|
249
|
+
- French, thanks to @foXaCe
|
|
250
|
+
- Hungarian, thanks to @m3r3nix
|
|
251
|
+
- Japanese, thanks to @Kiina
|
|
252
|
+
- Korean, thanks to @Kiina
|
|
253
|
+
- Spanish, thanks to @Shutruk
|
|
254
|
+
- Bump dependencies
|
|
255
|
+
|
|
256
|
+
## [4.5.2] (April 4, 2021)
|
|
257
|
+
|
|
258
|
+
- Add "Log Out" button to connection interrupted page
|
|
259
|
+
- Add "tini" init process to containers (#260, @onedr0p)
|
|
260
|
+
- Bug fixes:
|
|
261
|
+
- No longer fails to add some URLs to rTorrent with XMLRPC
|
|
262
|
+
- Fix `Connection settings can not be empty.` after submit
|
|
263
|
+
- Bump dependencies
|
|
264
|
+
|
|
265
|
+
## [4.5.1] (March 31, 2021)
|
|
266
|
+
|
|
267
|
+
- Allow to press Ctrl-A or Command-A to select all torrents
|
|
268
|
+
- Enlarge width of "Torrent Details" modal
|
|
269
|
+
- Bug fixes:
|
|
270
|
+
- Fix multi-file "Move torrents" of rTorrent (XMLRPC)
|
|
271
|
+
- Don't close the notification panel when a button is clicked
|
|
272
|
+
- New translations
|
|
273
|
+
- Czech, thanks to @brezinajn
|
|
274
|
+
- Italian, thanks to @gmcinalli
|
|
275
|
+
- Korean, thanks to @Kiina and @m4ximuel
|
|
276
|
+
- Bump dependencies
|
|
277
|
+
|
|
278
|
+
## [4.5.0] (March 14, 2021)
|
|
279
|
+
|
|
280
|
+
- Reannounce. Typically torrent clients do that automatically, but in some cases you may want to do it manually. It is available as a context menu action.
|
|
281
|
+
- Redesigned filesystem browser. Allow searching in the current directory and eliminate unnecessary requests sent to server. Additionally, navigation via arrow keys is implemented (mainly for accessibility but could be useful for anyone).
|
|
282
|
+
- Major accessibility enhancements. All elements are now navigable by keyboard.
|
|
283
|
+
- Improve scrolling performance by overscanning 30 rows.
|
|
284
|
+
- rTorrent:
|
|
285
|
+
- JSON-RPC support for eligible versions. Preliminary tests showed that, when compared with XMLRPC, JSON-RPC yields 2x performance, 15% lower total CPU time in rTorrent process, 33% lower total CPU time in Flood process.
|
|
286
|
+
- `load.throw` command support for eligible versions. Definitive response when you add torrents, so Flood won't display success when the operation actually fails.
|
|
287
|
+
- Better handle command failures.
|
|
288
|
+
- Verify filesystem access and respond with errors when necessary.
|
|
289
|
+
- Bug fixes:
|
|
290
|
+
- Fix French mistranslation
|
|
291
|
+
- Fix button location in download rules tab of feed modal
|
|
292
|
+
- Fix "Set tracker" of single tracker torrents in rTorrent
|
|
293
|
+
- Fix "Checking" bar selected style for dark color scheme
|
|
294
|
+
- Recognize qBittorrent's "Forced" state
|
|
295
|
+
- Disk usage service errors are no longer fatal
|
|
296
|
+
- New translations
|
|
297
|
+
- Chinese (Simplified), thanks to @MeetWq
|
|
298
|
+
- Chinese (Traditional), thanks to @vongola12324
|
|
299
|
+
- Czech, thanks to @brezinajn
|
|
300
|
+
- French, thanks to @Carryozor and @foXaCe
|
|
301
|
+
- German, thanks to @chint95
|
|
302
|
+
- Hungarian, thanks to @m3r3nix
|
|
303
|
+
- Romanian, thanks to @T-z3P
|
|
304
|
+
- Bump dependencies
|
|
305
|
+
|
|
306
|
+
## [4.4.1] (February 6, 2021)
|
|
307
|
+
|
|
308
|
+
- Better handle tracker domain conversion and grouping
|
|
309
|
+
- Wrap texts (e.g. long IPv6 addresses and peer client versions) in tables of torrent details if necessary
|
|
310
|
+
- Distribution:
|
|
311
|
+
- CI now publishes releases to AUR (Arch Linux User Repository)
|
|
312
|
+
- CI now publishes Debian (`.deb`) packages to Github Releases
|
|
313
|
+
- Contributions are welcome. See [distribution/README.md](https://github.com/jesec/flood/blob/v4.4.1/distribution/README.md).
|
|
314
|
+
- rTorrent fixes:
|
|
315
|
+
- Remove [] from IPv6 addresses in peer list
|
|
316
|
+
- Bug fixes:
|
|
317
|
+
- Remove ugly outline and highlight of focused button caused by an a11y change
|
|
318
|
+
- Try to workaround potential index.html caching issues
|
|
319
|
+
- Browser uses a fully cached asset tree in some cases, which defeats cache busting by asset hashes
|
|
320
|
+
- New translations
|
|
321
|
+
- Finnish, thanks to @hyvamiesh
|
|
322
|
+
- German, thanks to @chint95
|
|
323
|
+
- Bump dependencies
|
|
324
|
+
|
|
3
325
|
## [4.4.0] (February 2, 2021)
|
|
4
326
|
|
|
5
327
|
- Return a portable link when torrent content is requested
|
|
@@ -63,7 +385,7 @@
|
|
|
63
385
|
- Dutch, thanks to @vain4us
|
|
64
386
|
- French, thanks to @Carryozor
|
|
65
387
|
- German, thanks to @Ben-Wallner
|
|
66
|
-
- Hungarian, thanks to @
|
|
388
|
+
- Hungarian, thanks to @m3r3nix
|
|
67
389
|
- Romanian, thanks to @T-z3P
|
|
68
390
|
- Spanish, thanks to @almontegil
|
|
69
391
|
- Bump dependencies
|
|
@@ -256,7 +578,7 @@ Other changes:
|
|
|
256
578
|
- config.cli: make all configs configurable by options and env
|
|
257
579
|
- styles: properly set width of clipboard icon (fixes #26)
|
|
258
580
|
- client: hide logout button when auth is disabled
|
|
259
|
-
- Hungarian support (#21), thanks to @
|
|
581
|
+
- Hungarian support (#21), thanks to @m3r3nix
|
|
260
582
|
- New translations:
|
|
261
583
|
- Chinese Traditional, thanks to @vongola12324
|
|
262
584
|
- Czech, thanks to @brezina.jn
|
|
@@ -371,3 +693,26 @@ Other changes:
|
|
|
371
693
|
[4.3.0]: https://github.com/jesec/flood/compare/v4.2.0...v4.3.0
|
|
372
694
|
[4.3.1]: https://github.com/jesec/flood/compare/v4.3.0...v4.3.1
|
|
373
695
|
[4.4.0]: https://github.com/jesec/flood/compare/v4.3.1...v4.4.0
|
|
696
|
+
[4.4.1]: https://github.com/jesec/flood/compare/v4.4.0...v4.4.1
|
|
697
|
+
[4.5.0]: https://github.com/jesec/flood/compare/v4.4.1...v4.5.0
|
|
698
|
+
[4.5.1]: https://github.com/jesec/flood/compare/v4.5.0...v4.5.1
|
|
699
|
+
[4.5.2]: https://github.com/jesec/flood/compare/v4.5.1...v4.5.2
|
|
700
|
+
[4.5.3]: https://github.com/jesec/flood/compare/v4.5.2...v4.5.3
|
|
701
|
+
[4.5.4]: https://github.com/jesec/flood/compare/v4.5.3...v4.5.4
|
|
702
|
+
[4.6.0]: https://github.com/jesec/flood/compare/v4.5.4...v4.6.0
|
|
703
|
+
[4.6.1]: https://github.com/jesec/flood/compare/v4.6.0...v4.6.1
|
|
704
|
+
[4.7.0]: https://github.com/jesec/flood/compare/v4.6.1...v4.7.0
|
|
705
|
+
[4.8.0]: https://github.com/jesec/flood/compare/v4.7.0...v4.8.0
|
|
706
|
+
[4.8.1]: https://github.com/jesec/flood/compare/v4.8.0...v4.8.1
|
|
707
|
+
[4.8.2]: https://github.com/jesec/flood/compare/v4.8.1...v4.8.2
|
|
708
|
+
[4.8.3]: https://github.com/jesec/flood/compare/v4.8.2...v4.8.3
|
|
709
|
+
[4.8.4]: https://github.com/jesec/flood/compare/v4.8.3...v4.8.4
|
|
710
|
+
[4.8.5]: https://github.com/jesec/flood/compare/v4.8.4...v4.8.5
|
|
711
|
+
[4.9.0]: https://github.com/jesec/flood/compare/v4.8.5...v4.9.0
|
|
712
|
+
[4.9.1]: https://github.com/jesec/flood/compare/v4.9.0...v4.9.1
|
|
713
|
+
[4.9.2]: https://github.com/jesec/flood/compare/v4.9.1...v4.9.2
|
|
714
|
+
[4.9.3]: https://github.com/jesec/flood/compare/v4.9.2...v4.9.3
|
|
715
|
+
[4.9.4]: https://github.com/jesec/flood/compare/v4.9.3...v4.9.4
|
|
716
|
+
[4.9.5]: https://github.com/jesec/flood/compare/v4.9.4...v4.9.5
|
|
717
|
+
[4.10.0]: https://github.com/jesec/flood/compare/v4.9.5...v4.10.0
|
|
718
|
+
[4.11.0]: https://github.com/jesec/flood/compare/v4.10.0...v4.11.0
|
package/README.md
CHANGED
|
@@ -2,17 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://flood.js.org)
|
|
4
4
|
|
|
5
|
-
[](https://github.com/jesec/flood/actions/workflows/build.yml)
|
|
6
|
+
[](https://crowdin.com/project/flood)
|
|
7
|
+
[](https://discord.gg/Z7yR5Uf)
|
|
6
8
|
|
|
7
9
|
Flood is a monitoring service for various torrent clients. It's a Node.js service that communicates with your favorite torrent client and serves a decent web UI for administration. [Flood-UI](https://github.com/Flood-UI) organization hosts related projects.
|
|
8
10
|
|
|
9
11
|
#### Supported Clients
|
|
10
12
|
|
|
11
|
-
| Client | Support
|
|
12
|
-
| --------------------------------------------------------------- |
|
|
13
|
-
| [rTorrent](https://github.com/rakshasa/rtorrent) | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.
|
|
14
|
-
| [qBittorrent](https://github.com/qbittorrent/qBittorrent) v4.1+ | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.
|
|
15
|
-
| [Transmission](https://github.com/transmission/transmission) | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.
|
|
13
|
+
| Client | Support |
|
|
14
|
+
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| [rTorrent](https://github.com/rakshasa/rtorrent) | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.vitest/rtorrent.setup.ts)) |
|
|
16
|
+
| [qBittorrent](https://github.com/qbittorrent/qBittorrent) v4.1+ | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.vitest/qbittorrent.setup.ts)) |
|
|
17
|
+
| [Transmission](https://github.com/transmission/transmission) | :white_check_mark: ([tested](https://github.com/jesec/flood/blob/master/server/.vitest/transmission.setup.ts)) |
|
|
18
|
+
| [Deluge](https://github.com/deluge-torrent/deluge) v2+ | :alembic: Experimental |
|
|
19
|
+
|
|
20
|
+
##### RTorrent Notes
|
|
21
|
+
|
|
22
|
+
For now, rakshasa/rtorrent and jesec/rtorrent are both supported.
|
|
23
|
+
|
|
24
|
+
#### Integrating with Flood
|
|
25
|
+
|
|
26
|
+
Flood provides an OpenAPI specification and interactive Swagger UI for API documentation:
|
|
27
|
+
|
|
28
|
+
- **OpenAPI spec**: Available at `/api/openapi.json`
|
|
29
|
+
- **Swagger UI**: Interactive API documentation at `/api/docs/`
|
|
30
|
+
|
|
31
|
+
You can also check out:
|
|
32
|
+
|
|
33
|
+
- [list of unofficial client API libraries](https://github.com/jesec/flood/wiki/List-of-unofficial-client-API-libraries)
|
|
34
|
+
- [list of unofficial API integrations](https://github.com/jesec/flood/wiki/List-of-unofficial-API-integrations)
|
|
35
|
+
|
|
36
|
+
Flood conforms to [Semantic Versioning](https://semver.org) conventions.
|
|
16
37
|
|
|
17
38
|
#### Feedback
|
|
18
39
|
|
|
@@ -33,7 +54,7 @@ Install [Node.js runtime](https://nodejs.org/). Flood tracks `Current` and provi
|
|
|
33
54
|
- macOS users can use [brew](https://brew.sh/) or installer.
|
|
34
55
|
- Check [Node.js website](https://nodejs.org/en/download/package-manager) for more.
|
|
35
56
|
|
|
36
|
-
|
|
57
|
+
Alternatively, download a single-executable build from [Releases](https://github.com/jesec/flood/releases) (or rolling build from [Actions](https://nightly.link/jesec/flood/workflows/publish-rolling/master)). It bundles `Node.js` and supports `Linux`, `macOS` and `Windows`.
|
|
37
58
|
|
|
38
59
|
### Installation
|
|
39
60
|
|
|
@@ -82,7 +103,6 @@ Run the installation command again.
|
|
|
82
103
|
- macOS users can use `brew` to install rTorrent.
|
|
83
104
|
- [Compile](https://github.com/rakshasa/rtorrent/wiki/Installing): XMLRPC support flag (`--with-xmlrpc-c`) is required during compilation.
|
|
84
105
|
- Certain features (sequential download, initial seeding, etc.) are not available in vanilla rTorrent.
|
|
85
|
-
- rTorrent needs to have read access to files of temporary directory of Flood (`<rundir>/temp`) as Flood adds torrents to rTorrent by local file path ([96c754dd](https://github.com/jesec/flood/commit/96c754ddeb614b45a565e8307c9985ee85bcb7fa)). This is because rTorrent uses a rather antique XML-RPC interface, which usually has certain limitations (size of body) and is unreliable in handling large binary objects ([Flood-UI/flood#164](https://github.com/Flood-UI/flood/issues/164), [Flood-UI/flood#741](https://github.com/Flood-UI/flood/issues/741), [Flood-UI/flood#773](https://github.com/Flood-UI/flood/issues/773)). See [#86](https://github.com/jesec/flood/discussions/86).
|
|
86
106
|
- Ask for help in the [Flood Discord server](https://discord.gg/Z7yR5Uf).
|
|
87
107
|
|
|
88
108
|
### Docker
|
|
@@ -97,6 +117,8 @@ Note that you have to let Docker know which port should be exposed (e.g. `-p 300
|
|
|
97
117
|
|
|
98
118
|
Don't forget to pay attention to `flood`'s arguments like `--port` and `--allowedpath`.
|
|
99
119
|
|
|
120
|
+
Alternatively, you can pass in environment variables instead (e.g. `-e FLOOD_OPTION_port=3000`).
|
|
121
|
+
|
|
100
122
|
Checkout [Run Flood (and torrent clients) in containers](https://github.com/jesec/flood/discussions/120) discussion.
|
|
101
123
|
|
|
102
124
|
Filesystem parts in [Troubleshooting](https://github.com/jesec/flood#troubleshooting) are especially important for containers.
|
|
@@ -111,41 +133,35 @@ Filesystem parts in [Troubleshooting](https://github.com/jesec/flood#troubleshoo
|
|
|
111
133
|
|
|
112
134
|
From the root of the Flood directory...
|
|
113
135
|
|
|
114
|
-
1. Run `
|
|
115
|
-
1. Run `
|
|
116
|
-
1. Run `
|
|
136
|
+
1. Run `pnpm install`.
|
|
137
|
+
1. Run `pnpm run build`.
|
|
138
|
+
1. Run `pnpm start`.
|
|
117
139
|
|
|
118
140
|
Access the UI in your browser. With default settings, go to `http://localhost:3000`. You can configure the port via `--port` argument.
|
|
119
141
|
|
|
120
142
|
**Notes**
|
|
121
143
|
|
|
122
|
-
- When you use `
|
|
144
|
+
- When you use `pnpm run start` to execute Flood, you have to pass command line arguments after `--`. For example, `pnpm run start -- --host 0.0.0.0 --port 8080`. This applies to any `pnpm run` (e.g. `start:development:client`).
|
|
123
145
|
|
|
124
146
|
### Updating
|
|
125
147
|
|
|
126
148
|
1. To update, run `git pull` in this repository's directory.
|
|
127
149
|
1. Kill the currently running Flood server.
|
|
128
|
-
1. Run `
|
|
129
|
-
1. Run `
|
|
130
|
-
1. Start the Flood server with `
|
|
150
|
+
1. Run `pnpm install` to update dependencies.
|
|
151
|
+
1. Run `pnpm run build` to transpile and bundle static assets.
|
|
152
|
+
1. Start the Flood server with `pnpm start`.
|
|
131
153
|
|
|
132
154
|
### Local Development
|
|
133
155
|
|
|
134
|
-
1. Run `
|
|
135
|
-
1. Run `
|
|
136
|
-
- `
|
|
137
|
-
- `
|
|
156
|
+
1. Run `pnpm install`.
|
|
157
|
+
1. Run `pnpm run start:development:server` and `pnpm run start:development:client` in separate terminal instances.
|
|
158
|
+
- `pnpm run start:development:server` uses [tsx](https://www.npmjs.com/package/tsx) to watch for changes to the server-side source. Or open the folder with VS code and then `Run -> Start Debugging`. You may use a [Javascript IDE](https://code.visualstudio.com/) to debug server codes.
|
|
159
|
+
- `pnpm run start:development:client` watches for changes in the client-side source. Access the UI in your browser. Defaults to `localhost:4200`. You may use browser's [DevTools](https://developers.google.com/web/tools/chrome-devtools) to debug client codes.
|
|
138
160
|
|
|
139
161
|
`--help --show-hidden` shows advanced arguments.
|
|
140
162
|
|
|
141
163
|
`--proxy` proxies requests from a development client to a URL of your choice (usually URL to a Flood server). It is useful when you wish to do development on the frontend but not the backend. Or when the frontend and backend are being developed on different hosts.
|
|
142
164
|
|
|
143
|
-
### Environment Variables
|
|
144
|
-
|
|
145
|
-
1. `DEV_SERVER_PORT`: webpackDevServer's port, used when developing Flood. Defaults to `4200`.
|
|
146
|
-
1. `DEV_SERVER_HOST`: webpackDevServer's host, used when developing Flood. Defaults to `0.0.0.0`.
|
|
147
|
-
1. `DEV_SERVER_HTTPS`: webpackDevServer's protocol, used when developing Flood. Defaults to `http`.
|
|
148
|
-
|
|
149
165
|
### Building Docker
|
|
150
166
|
|
|
151
167
|
1. `docker build --pull --rm -f Dockerfile -t flood:latest .`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Bt as e,C as t,Tt as n,Wt as r,Xt as i,an as a,n as o,wt as s,zt as c}from"./dist-DTOngMXG.js";var l=a(r(),1),u=c(),d=i(t=>{let{id:r}=t,{count:i,type:a}=e.alerts[r]||{};if(r==null||i==null||a==null)return null;let c=(0,l.default)(`alert`,{"is-success":a===`success`,"is-error":a===`error`}),d=(0,u.jsx)(n,{});return a===`error`&&(d=(0,u.jsx)(s,{})),(0,u.jsxs)(`li`,{className:c,children:[d,(0,u.jsx)(`span`,{className:`alert__content`,children:(0,u.jsx)(o,{id:r,values:{count:i,countElement:(0,u.jsx)(`span`,{className:`alert__count`,children:i})}})})]})}),f=i(()=>{let{sortedAlerts:n}=e;return(0,u.jsx)(t,{classNamePrefix:`alerts__list`,in:n!=null&&n.length>0,mountOnEnter:!0,timeout:{enter:250,exit:250},unmountOnExit:!0,children:e=>(0,u.jsx)(`ul`,{className:(0,l.default)(`alerts__list`,e),children:n.map(e=>(0,u.jsx)(d,{id:e.id},e.id))})})});export{f as default};
|
|
2
|
+
//# sourceMappingURL=Alerts-BfYWD54i.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alerts-BfYWD54i.js","names":[],"sources":["../../../client/src/javascript/components/alerts/Alert.tsx","../../../client/src/javascript/components/alerts/Alerts.tsx"],"sourcesContent":["import {FC} from 'react';\nimport classnames from 'classnames';\nimport {observer} from 'mobx-react-lite';\nimport {Trans} from '@lingui/react';\n\nimport AlertStore from '@client/stores/AlertStore';\nimport {CircleCheckmark, CircleExclamation} from '@client/ui/icons';\n\ninterface AlertProps {\n id: string;\n}\n\nconst Alert: FC<AlertProps> = observer((props: AlertProps) => {\n const {id} = props;\n const {count, type} = AlertStore.alerts[id] || {};\n\n if (id == null || count == null || type == null) {\n return null;\n }\n\n const alertClasses = classnames('alert', {\n 'is-success': type === 'success',\n 'is-error': type === 'error',\n });\n\n let icon = <CircleCheckmark />;\n if (type === 'error') {\n icon = <CircleExclamation />;\n }\n\n return (\n <li className={alertClasses}>\n {icon}\n <span className=\"alert__content\">\n <Trans\n id={id}\n values={{\n count,\n countElement: <span className=\"alert__count\">{count}</span>,\n }}\n />\n </span>\n </li>\n );\n});\n\nexport default Alert;\n","import classnames from 'classnames';\nimport {FC} from 'react';\nimport {observer} from 'mobx-react-lite';\n\nimport {Transition} from '@client/ui';\n\nimport Alert from './Alert';\nimport AlertStore from '../../stores/AlertStore';\n\nconst Alerts: FC = observer(() => {\n const {sortedAlerts} = AlertStore;\n\n return (\n <Transition\n classNamePrefix=\"alerts__list\"\n in={sortedAlerts != null && sortedAlerts.length > 0}\n mountOnEnter\n timeout={{enter: 250, exit: 250}}\n unmountOnExit\n >\n {(transitionClassName) => (\n <ul className={classnames('alerts__list', transitionClassName)}>\n {sortedAlerts.map((alert) => (\n <Alert key={alert.id} id={alert.id} />\n ))}\n </ul>\n )}\n </Transition>\n );\n});\n\nexport default Alerts;\n"],"mappings":"2HAYM,EAAwB,EAAU,GAAsB,CAC5D,GAAM,CAAC,MAAM,EACP,CAAC,QAAO,QAAQ,EAAW,OAAO,IAAO,CAAC,EAEhD,GAAI,GAAM,MAAQ,GAAS,MAAQ,GAAQ,KACzC,OAAO,KAGT,IAAM,GAAA,EAAe,EAAA,QAAA,CAAW,QAAS,CACvC,aAAc,IAAS,UACvB,WAAY,IAAS,OACvB,CAAC,EAEG,GAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAkB,CAAA,EAK7B,OAJI,IAAS,UACX,GAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,CAAA,IAI3B,EAAA,EAAA,KAAA,CAAC,KAAD,CAAI,UAAW,EAAf,SAAA,CACG,GACD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,iBACd,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CACM,KACJ,OAAQ,CACN,QACA,cAAc,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,eAAgB,SAAA,CAAY,CAAA,CAC5D,CACD,CAAA,CACG,CAAA,CACJ,GAER,CAAC,ECnCK,EAAa,MAAe,CAChC,GAAM,CAAC,gBAAgB,EAEvB,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,gBAAgB,eAChB,GAAI,GAAgB,MAAQ,EAAa,OAAS,EAClD,aAAA,GACA,QAAS,CAAC,MAAO,IAAK,KAAM,GAAG,EAC/B,cAAA,GAEE,SAAA,IACA,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,WAAA,EAAW,EAAA,QAAA,CAAW,eAAgB,CAAmB,EAC1D,SAAA,EAAa,IAAK,IACjB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,GAAI,EAAM,EAAK,EAAzB,EAAM,EAAmB,CACtC,CACC,CAAA,CAEI,CAAA,CAEhB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Wt as e,Xt as t,an as n,zt as r}from"./dist-DTOngMXG.js";import{m as i}from"./index-D69dPsX8.js";var a=n(e(),1),o=r(),s=function(e){return e.AuthForm=`auth-form`,e.SidebarAlternativeState=`sidebar-alternative-state`,e}({}),c=t(({children:e,modifier:t})=>{let n=[];t!=null&&n.push(t),i.isSidebarAlternativeState&&n.push(`sidebar-alternative-state`);let r=(0,a.default)(`application__view`,...n.map(e=>`application__view--${e}`));return(0,o.jsx)(`div`,{className:r,children:e})});export{s as n,c as t};
|
|
2
|
+
//# sourceMappingURL=ApplicationView-CX-Aip_y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationView-CX-Aip_y.js","names":[],"sources":["../../../client/src/javascript/components/layout/ApplicationView.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport {FC, ReactNode} from 'react';\nimport {observer} from 'mobx-react-lite';\n\nimport UIStore from '@client/stores/UIStore';\n\nexport enum ApplicationViewModifier {\n AuthForm = 'auth-form',\n SidebarAlternativeState = 'sidebar-alternative-state',\n}\n\ninterface ApplicationViewProps {\n children: ReactNode;\n modifier?: ApplicationViewModifier;\n}\n\nconst ApplicationView: FC<ApplicationViewProps> = observer(({children, modifier}: ApplicationViewProps) => {\n const activeModifiers: Array<ApplicationViewModifier> = [];\n\n if (modifier != null) {\n activeModifiers.push(modifier);\n }\n\n if (UIStore.isSidebarAlternativeState) {\n activeModifiers.push(ApplicationViewModifier.SidebarAlternativeState);\n }\n\n const classes = classnames(\n 'application__view',\n ...activeModifiers.map((activeModifier) => `application__view--${activeModifier}`),\n );\n\n return <div className={classes}>{children}</div>;\n});\n\nexport default ApplicationView;\n"],"mappings":"6HAMY,EAAL,SAAA,EAAA,OACL,GAAA,SAAA,YACA,EAAA,wBAAA,6BACF,EAAA,CAAA,CAAA,EAOM,EAA4C,GAAU,CAAC,WAAU,cAAoC,CACzG,IAAM,EAAkD,CAAC,EAErD,GAAY,MACd,EAAgB,KAAK,CAAQ,EAG3B,EAAQ,2BACV,EAAgB,KAAA,2BAAoD,EAGtE,IAAM,GAAA,EAAU,EAAA,QAAA,CACd,oBACA,GAAG,EAAgB,IAAK,GAAmB,sBAAsB,GAAgB,CACnF,EAEA,OAAO,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAU,UAAc,CAAA,CACjD,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as e,an as t,b as n,d as r,f as i,g as a,i as o,l as s,m as c,nn as l,r as u,u as d,zt as f}from"./dist-DTOngMXG.js";import{c as p,f as m,k as h,s as g}from"./index-D69dPsX8.js";var _=t(l(),1),v=f(),y=({mode:t})=>{let{i18n:l}=u(),f=(0,_.useRef)(null),y=(0,_.useRef)(null),[b,x]=(0,_.useState)(void 0),[S,C]=(0,_.useState)(!1),w=h(),T=t===`login`;return(0,v.jsx)(`div`,{className:`application__entry-barrier`,children:(0,v.jsx)(i,{spacing:`large`,children:(0,v.jsxs)(e,{onSubmit:e=>{e.event.preventDefault(),C(!0);let t=e.formData;if(t.username==null||t.username===``){C(!1),x({id:`auth.error.username.empty`});return}if(t.password==null||t.password===``){C(!1),x({id:`auth.error.password.empty`});return}if(T){let e=t;p.authenticate({username:e.username,password:e.password}).then(()=>{C(!1),w(`/overview`,{replace:!0})}).catch(e=>{C(!1),x(e.message),w(`/login`,{replace:!0})})}else{let e=t;if(y.current==null){C(!1),x({id:`connection.settings.error.empty`});return}let n=y.current;if(n==null){C(!1),x({id:`connection.settings.error.empty`});return}p.register({username:e.username,password:e.password,client:n,level:m.ADMINISTRATOR}).then(()=>{C(!1),w(`/overview`,{replace:!0})},e=>{C(!1),x(e.message)})}},ref:f,children:[(0,v.jsx)(s,{children:(0,v.jsx)(`h1`,{children:T?l._(`auth.login`):l._(`auth.create.an.account`)})}),(0,v.jsxs)(r,{children:[(0,v.jsx)(`p`,{className:`copy--lead`,children:T?l._(`auth.login.intro`):l._(`auth.create.an.account.intro`)}),b==null?null:(0,v.jsx)(c,{children:(0,v.jsx)(a,{isLoading:S,children:typeof b==`string`?b:l._(b)})}),(0,v.jsx)(c,{children:(0,v.jsx)(o,{placeholder:l._(`auth.username`),id:`username`,autoComplete:`username`})}),(0,v.jsx)(c,{children:(0,v.jsx)(o,{placeholder:l._(`auth.password`),id:`password`,type:`password`,autoComplete:T?`current-password`:`new-password`})})]}),T?null:(0,v.jsx)(r,{hasBorder:!0,children:(0,v.jsx)(g,{onSettingsChange:e=>{y.current=e}})}),(0,v.jsx)(d,{hasBorder:!0,children:(0,v.jsxs)(c,{justify:`end`,children:[(0,v.jsx)(n,{priority:`tertiary`,onClick:()=>{f.current!=null&&f.current.resetForm()},children:l._(`auth.input.clear`)}),(0,v.jsx)(n,{isLoading:S,type:`submit`,children:T?l._(`auth.log.in`):l._(`auth.create.account`)})]})})]})})})};export{y as t};
|
|
2
|
+
//# sourceMappingURL=AuthForm-Ck3duk7L.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthForm-Ck3duk7L.js","names":[],"sources":["../../../client/src/javascript/components/auth/AuthForm.tsx"],"sourcesContent":["import {FC, useRef, useState} from 'react';\nimport {useLingui} from '@lingui/react';\nimport {useNavigate} from 'react-router';\n\nimport {\n Button,\n Form,\n FormHandle,\n FormError,\n FormRow,\n Panel,\n PanelContent,\n PanelHeader,\n PanelFooter,\n Textbox,\n} from '@client/ui';\nimport AuthActions from '@client/actions/AuthActions';\n\nimport {AccessLevel} from '@shared/schema/constants/Auth';\n\nimport type {Credentials} from '@shared/schema/Auth';\nimport type {ClientConnectionSettings} from '@shared/schema/ClientConnectionSettings';\n\nimport ClientConnectionSettingsForm from '../general/connection-settings/ClientConnectionSettingsForm';\n\ntype LoginFormData = Pick<Credentials, 'username' | 'password'>;\ntype RegisterFormData = Pick<Credentials, 'username' | 'password'>;\n\ninterface AuthFormProps {\n mode: 'login' | 'register';\n}\n\nconst AuthForm: FC<AuthFormProps> = ({mode}: AuthFormProps) => {\n const {i18n} = useLingui();\n const formRef = useRef<FormHandle>(null);\n const clientConnectionSettingsRef = useRef<ClientConnectionSettings | null>(null);\n const [errorMessage, setErrorMessage] = useState<string | {id: string} | undefined>(undefined);\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const navigate = useNavigate();\n\n const isLoginMode = mode === 'login';\n\n return (\n <div className=\"application__entry-barrier\">\n <Panel spacing=\"large\">\n <Form\n onSubmit={(submission) => {\n submission.event.preventDefault();\n\n setIsSubmitting(true);\n\n const formData = submission.formData as Partial<LoginFormData> | Partial<RegisterFormData>;\n\n if (formData.username == null || formData.username === '') {\n setIsSubmitting(false);\n setErrorMessage({id: 'auth.error.username.empty'});\n return;\n }\n\n if (formData.password == null || formData.password === '') {\n setIsSubmitting(false);\n setErrorMessage({id: 'auth.error.password.empty'});\n return;\n }\n\n if (isLoginMode) {\n const credentials = formData as LoginFormData;\n\n AuthActions.authenticate({\n username: credentials.username,\n password: credentials.password,\n })\n .then(() => {\n setIsSubmitting(false);\n navigate('/overview', {replace: true});\n })\n .catch((error: Error) => {\n setIsSubmitting(false);\n setErrorMessage(error.message);\n navigate('/login', {replace: true});\n });\n } else {\n const config = formData as RegisterFormData;\n\n if (clientConnectionSettingsRef.current == null) {\n setIsSubmitting(false);\n setErrorMessage({id: 'connection.settings.error.empty'});\n return;\n }\n\n const connectionSettings = clientConnectionSettingsRef.current;\n if (connectionSettings == null) {\n setIsSubmitting(false);\n setErrorMessage({id: 'connection.settings.error.empty'});\n return;\n }\n\n AuthActions.register({\n username: config.username,\n password: config.password,\n client: connectionSettings,\n level: AccessLevel.ADMINISTRATOR,\n }).then(\n () => {\n setIsSubmitting(false);\n navigate('/overview', {replace: true});\n },\n (error: Error) => {\n setIsSubmitting(false);\n setErrorMessage(error.message);\n },\n );\n }\n }}\n ref={formRef}\n >\n <PanelHeader>\n <h1>{isLoginMode ? i18n._('auth.login') : i18n._('auth.create.an.account')}</h1>\n </PanelHeader>\n <PanelContent>\n <p className=\"copy--lead\">\n {isLoginMode ? i18n._('auth.login.intro') : i18n._('auth.create.an.account.intro')}\n </p>\n {errorMessage != null ? (\n <FormRow>\n <FormError isLoading={isSubmitting}>\n {typeof errorMessage === 'string' ? errorMessage : i18n._(errorMessage)}\n </FormError>\n </FormRow>\n ) : null}\n <FormRow>\n <Textbox placeholder={i18n._('auth.username')} id=\"username\" autoComplete=\"username\" />\n </FormRow>\n <FormRow>\n <Textbox\n placeholder={i18n._('auth.password')}\n id=\"password\"\n type=\"password\"\n autoComplete={isLoginMode ? 'current-password' : 'new-password'}\n />\n </FormRow>\n </PanelContent>\n {isLoginMode ? null : (\n <PanelContent hasBorder>\n <ClientConnectionSettingsForm\n onSettingsChange={(settings) => {\n clientConnectionSettingsRef.current = settings;\n }}\n />\n </PanelContent>\n )}\n <PanelFooter hasBorder>\n <FormRow justify=\"end\">\n <Button\n priority=\"tertiary\"\n onClick={() => {\n if (formRef.current != null) {\n formRef.current.resetForm();\n }\n }}\n >\n {i18n._('auth.input.clear')}\n </Button>\n <Button isLoading={isSubmitting} type=\"submit\">\n {isLoginMode ? i18n._('auth.log.in') : i18n._('auth.create.account')}\n </Button>\n </FormRow>\n </PanelFooter>\n </Form>\n </Panel>\n </div>\n );\n};\n\nexport default AuthForm;\n"],"mappings":"gNAgCM,GAA+B,CAAC,UAAyB,CAC7D,GAAM,CAAC,QAAQ,EAAU,EACnB,GAAA,EAAU,EAAA,OAAA,CAAmB,IAAI,EACjC,GAAA,EAA8B,EAAA,OAAA,CAAwC,IAAI,EAC1E,CAAC,EAAc,IAAA,EAAmB,EAAA,SAAA,CAA4C,IAAA,EAAS,EACvF,CAAC,EAAc,IAAA,EAAmB,EAAA,SAAA,CAAkB,EAAK,EAEzD,EAAW,EAAY,EAEvB,EAAc,IAAS,QAE7B,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,QAAQ,QACb,UAAA,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,SAAW,GAAe,CACxB,EAAW,MAAM,eAAe,EAEhC,EAAgB,EAAI,EAEpB,IAAM,EAAW,EAAW,SAE5B,GAAI,EAAS,UAAY,MAAQ,EAAS,WAAa,GAAI,CACzD,EAAgB,EAAK,EACrB,EAAgB,CAAC,GAAI,2BAA2B,CAAC,EACjD,MACF,CAEA,GAAI,EAAS,UAAY,MAAQ,EAAS,WAAa,GAAI,CACzD,EAAgB,EAAK,EACrB,EAAgB,CAAC,GAAI,2BAA2B,CAAC,EACjD,MACF,CAEA,GAAI,EAAa,CACf,IAAM,EAAc,EAEpB,EAAY,aAAa,CACvB,SAAU,EAAY,SACtB,SAAU,EAAY,QACxB,CAAC,CAAC,CACC,SAAW,CACV,EAAgB,EAAK,EACrB,EAAS,YAAa,CAAC,QAAS,EAAI,CAAC,CACvC,CAAC,CAAC,CACD,MAAO,GAAiB,CACvB,EAAgB,EAAK,EACrB,EAAgB,EAAM,OAAO,EAC7B,EAAS,SAAU,CAAC,QAAS,EAAI,CAAC,CACpC,CAAC,CACL,KAAO,CACL,IAAM,EAAS,EAEf,GAAI,EAA4B,SAAW,KAAM,CAC/C,EAAgB,EAAK,EACrB,EAAgB,CAAC,GAAI,iCAAiC,CAAC,EACvD,MACF,CAEA,IAAM,EAAqB,EAA4B,QACvD,GAAI,GAAsB,KAAM,CAC9B,EAAgB,EAAK,EACrB,EAAgB,CAAC,GAAI,iCAAiC,CAAC,EACvD,MACF,CAEA,EAAY,SAAS,CACnB,SAAU,EAAO,SACjB,SAAU,EAAO,SACjB,OAAQ,EACR,MAAO,EAAY,aACrB,CAAC,CAAC,CAAC,SACK,CACJ,EAAgB,EAAK,EACrB,EAAS,YAAa,CAAC,QAAS,EAAI,CAAC,CACvC,EACC,GAAiB,CAChB,EAAgB,EAAK,EACrB,EAAgB,EAAM,OAAO,CAC/B,CACF,CACF,CACF,EACA,IAAK,EArEP,SAAA,EAuEE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAc,EAAK,EAAE,YAAY,EAAI,EAAK,EAAE,wBAAwB,CAAM,CAAA,CACpE,CAAA,GACb,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,aACV,SAAA,EAAc,EAAK,EAAE,kBAAkB,EAAI,EAAK,EAAE,8BAA8B,CAChF,CAAA,EACF,GAAgB,KAMb,MALF,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,UAAW,EACnB,SAAA,OAAO,GAAiB,SAAW,EAAe,EAAK,EAAE,CAAY,CAC7D,CAAA,CACJ,CAAA,GAEX,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,YAAa,EAAK,EAAE,eAAe,EAAG,GAAG,WAAW,aAAa,UAAY,CAAA,CAC/E,CAAA,GACT,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAK,EAAE,eAAe,EACnC,GAAG,WACH,KAAK,WACL,aAAc,EAAc,mBAAqB,cAClD,CAAA,CACM,CAAA,CACG,CAAA,CAAA,EACb,EAAc,MACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,UAAA,GACZ,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAmB,GAAa,CAC9B,EAA4B,QAAU,CACxC,CACD,CAAA,CACW,CAAA,GAEhB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAa,UAAA,GACX,UAAA,EAAA,EAAA,KAAA,CAAC,EAAD,CAAS,QAAQ,MAAjB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,SAAS,WACT,YAAe,CACT,EAAQ,SAAW,MACrB,EAAQ,QAAQ,UAAU,CAE9B,EAEC,SAAA,EAAK,EAAE,kBAAkB,CACpB,CAAA,GACR,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,UAAW,EAAc,KAAK,SACnC,SAAA,EAAc,EAAK,EAAE,aAAa,EAAI,EAAK,EAAE,qBAAqB,CAC7D,CAAA,CACD,GACE,CAAA,CACT,GACD,CAAA,CACJ,CAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{zt as e}from"./dist-DTOngMXG.js";import{n as t,t as n}from"./ApplicationView-CX-Aip_y.js";import{t as r}from"./AuthForm-Ck3duk7L.js";var i=e(),a=()=>(0,i.jsx)(n,{modifier:t.AuthForm,children:(0,i.jsx)(r,{mode:`login`})});export{a as default};
|
|
2
|
+
//# sourceMappingURL=Login-DBlD37QS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Login-DBlD37QS.js","names":[],"sources":["../../../client/src/javascript/routes/Login.tsx"],"sourcesContent":["import {FC} from 'react';\n\nimport ApplicationView, {ApplicationViewModifier} from '@client/components/layout/ApplicationView';\nimport AuthForm from '@client/components/auth/AuthForm';\n\nconst LoginView: FC = () => (\n <ApplicationView modifier={ApplicationViewModifier.AuthForm}>\n <AuthForm mode=\"login\" />\n </ApplicationView>\n);\n\nexport default LoginView;\n"],"mappings":"sJAKM,OACJ,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,SAAU,EAAwB,SACjD,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAU,KAAK,OAAS,CAAA,CACT,CAAA"}
|