@jesec/flood 0.0.0-master.2ea1bb9 → 0.0.0-master.2f390e9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/CHANGELOG.md +710 -103
  2. package/README.md +75 -37
  3. package/SECURITY.md +27 -0
  4. package/dist/assets/assets/Alerts-DfIc2RDo.js +2 -0
  5. package/dist/assets/assets/Alerts-DfIc2RDo.js.map +1 -0
  6. package/dist/assets/assets/ApplicationView-B165lCqL.js +2 -0
  7. package/dist/assets/assets/ApplicationView-B165lCqL.js.map +1 -0
  8. package/dist/assets/assets/AuthForm-Cz9mlsMK.js +2 -0
  9. package/dist/assets/assets/AuthForm-Cz9mlsMK.js.map +1 -0
  10. package/dist/assets/assets/Login-GaGEU4gd.js +2 -0
  11. package/dist/assets/assets/Login-GaGEU4gd.js.map +1 -0
  12. package/dist/assets/assets/Modals-zQz7EQHB.js +53 -0
  13. package/dist/assets/assets/Modals-zQz7EQHB.js.map +1 -0
  14. package/dist/assets/assets/Overview-C2zOuv4e.js +700 -0
  15. package/dist/assets/assets/Overview-C2zOuv4e.js.map +1 -0
  16. package/dist/assets/assets/Register-BlHDGVpO.js +2 -0
  17. package/dist/assets/assets/Register-BlHDGVpO.js.map +1 -0
  18. package/dist/assets/assets/ad-DuzDZabR.js +2 -0
  19. package/dist/assets/assets/ad-DuzDZabR.js.map +1 -0
  20. package/dist/assets/assets/ae-mkY-Q7Jw.js +2 -0
  21. package/dist/assets/assets/ae-mkY-Q7Jw.js.map +1 -0
  22. package/dist/assets/assets/af-B6-pStw9.js +2 -0
  23. package/dist/assets/assets/af-B6-pStw9.js.map +1 -0
  24. package/dist/assets/assets/af-DPrtuV94.js +2 -0
  25. package/dist/assets/assets/af-DPrtuV94.js.map +1 -0
  26. package/dist/assets/assets/ag-DNCGAFJH.js +2 -0
  27. package/dist/assets/assets/ag-DNCGAFJH.js.map +1 -0
  28. package/dist/assets/assets/al-C_aTCEDQ.js +2 -0
  29. package/dist/assets/assets/al-C_aTCEDQ.js.map +1 -0
  30. package/dist/assets/assets/am-Sr8MvIS7.js +2 -0
  31. package/dist/assets/assets/am-Sr8MvIS7.js.map +1 -0
  32. package/dist/assets/assets/ao-CsJhl30Y.js +2 -0
  33. package/dist/assets/assets/ao-CsJhl30Y.js.map +1 -0
  34. package/dist/assets/assets/ar-B_CHaIUf.js +2 -0
  35. package/dist/assets/assets/ar-B_CHaIUf.js.map +1 -0
  36. package/dist/assets/assets/ar-Cevz1Qs-.js +2 -0
  37. package/dist/assets/assets/ar-Cevz1Qs-.js.map +1 -0
  38. package/dist/assets/assets/at-CiWOhHAz.js +2 -0
  39. package/dist/assets/assets/at-CiWOhHAz.js.map +1 -0
  40. package/dist/assets/assets/au-Bg5EqKS0.js +2 -0
  41. package/dist/assets/assets/au-Bg5EqKS0.js.map +1 -0
  42. package/dist/assets/assets/az-B61XRgw0.js +2 -0
  43. package/dist/assets/assets/az-B61XRgw0.js.map +1 -0
  44. package/dist/assets/assets/ba-Cmt66gfg.js +2 -0
  45. package/dist/assets/assets/ba-Cmt66gfg.js.map +1 -0
  46. package/dist/assets/assets/bb-CR-__YaH.js +2 -0
  47. package/dist/assets/assets/bb-CR-__YaH.js.map +1 -0
  48. package/dist/assets/assets/bd-BNthAGOP.js +2 -0
  49. package/dist/assets/assets/bd-BNthAGOP.js.map +1 -0
  50. package/dist/assets/assets/be-n0KexQYT.js +2 -0
  51. package/dist/assets/assets/be-n0KexQYT.js.map +1 -0
  52. package/dist/assets/assets/bf-CW9xprIG.js +2 -0
  53. package/dist/assets/assets/bf-CW9xprIG.js.map +1 -0
  54. package/dist/assets/assets/bg-CEPzQvFM.js +2 -0
  55. package/dist/assets/assets/bg-CEPzQvFM.js.map +1 -0
  56. package/dist/assets/assets/bh-D956X5o9.js +2 -0
  57. package/dist/assets/assets/bh-D956X5o9.js.map +1 -0
  58. package/dist/assets/assets/bi-dPCv_c-w.js +2 -0
  59. package/dist/assets/assets/bi-dPCv_c-w.js.map +1 -0
  60. package/dist/assets/assets/bj-BI_8Wbdr.js +2 -0
  61. package/dist/assets/assets/bj-BI_8Wbdr.js.map +1 -0
  62. package/dist/assets/assets/bn-BC2Aoz80.js +2 -0
  63. package/dist/assets/assets/bn-BC2Aoz80.js.map +1 -0
  64. package/dist/assets/assets/bo-CELcxyPF.js +2 -0
  65. package/dist/assets/assets/bo-CELcxyPF.js.map +1 -0
  66. package/dist/assets/assets/br-CXLqJ-F4.js +2 -0
  67. package/dist/assets/assets/br-CXLqJ-F4.js.map +1 -0
  68. package/dist/assets/assets/bs-NowsU2-W.js +2 -0
  69. package/dist/assets/assets/bs-NowsU2-W.js.map +1 -0
  70. package/dist/assets/assets/bt-dYTlOroH.js +2 -0
  71. package/dist/assets/assets/bt-dYTlOroH.js.map +1 -0
  72. package/dist/assets/assets/bw-D4vkJpZr.js +2 -0
  73. package/dist/assets/assets/bw-D4vkJpZr.js.map +1 -0
  74. package/dist/assets/assets/by-eP_jw9Kc.js +2 -0
  75. package/dist/assets/assets/by-eP_jw9Kc.js.map +1 -0
  76. package/dist/assets/assets/bz-CCMMQS8N.js +2 -0
  77. package/dist/assets/assets/bz-CCMMQS8N.js.map +1 -0
  78. package/dist/assets/assets/ca-DAtf_5hQ.js +2 -0
  79. package/dist/assets/assets/ca-DAtf_5hQ.js.map +1 -0
  80. package/dist/assets/assets/ca-XCK4Ukes.js +2 -0
  81. package/dist/assets/assets/ca-XCK4Ukes.js.map +1 -0
  82. package/dist/assets/assets/cd-EHjOG1bO.js +2 -0
  83. package/dist/assets/assets/cd-EHjOG1bO.js.map +1 -0
  84. package/dist/assets/assets/cf-DnV2k9tP.js +2 -0
  85. package/dist/assets/assets/cf-DnV2k9tP.js.map +1 -0
  86. package/dist/assets/assets/cg-2ZHLG0Mz.js +2 -0
  87. package/dist/assets/assets/cg-2ZHLG0Mz.js.map +1 -0
  88. package/dist/assets/assets/ch-CA-QpVeB.js +2 -0
  89. package/dist/assets/assets/ch-CA-QpVeB.js.map +1 -0
  90. package/dist/assets/assets/ci-eeX5pCsO.js +2 -0
  91. package/dist/assets/assets/ci-eeX5pCsO.js.map +1 -0
  92. package/dist/assets/assets/cl-D2scfwli.js +2 -0
  93. package/dist/assets/assets/cl-D2scfwli.js.map +1 -0
  94. package/dist/assets/assets/cm-DyX7ciTH.js +2 -0
  95. package/dist/assets/assets/cm-DyX7ciTH.js.map +1 -0
  96. package/dist/assets/assets/cn-CUTpdmU5.js +2 -0
  97. package/dist/assets/assets/cn-CUTpdmU5.js.map +1 -0
  98. package/dist/assets/assets/co-DcXC8Nb5.js +2 -0
  99. package/dist/assets/assets/co-DcXC8Nb5.js.map +1 -0
  100. package/dist/assets/assets/cr-D4hE4yAQ.js +2 -0
  101. package/dist/assets/assets/cr-D4hE4yAQ.js.map +1 -0
  102. package/dist/assets/assets/cs-BIjoDiHH.js +2 -0
  103. package/dist/assets/assets/cs-BIjoDiHH.js.map +1 -0
  104. package/dist/assets/assets/cu-Dl19LoSo.js +2 -0
  105. package/dist/assets/assets/cu-Dl19LoSo.js.map +1 -0
  106. package/dist/assets/assets/cv-Dc7EiSki.js +2 -0
  107. package/dist/assets/assets/cv-Dc7EiSki.js.map +1 -0
  108. package/dist/assets/assets/cw-B3QTQWLm.js +2 -0
  109. package/dist/assets/assets/cw-B3QTQWLm.js.map +1 -0
  110. package/dist/assets/assets/cy-lPbapF6t.js +2 -0
  111. package/dist/assets/assets/cy-lPbapF6t.js.map +1 -0
  112. package/dist/assets/assets/cz-CSN1u-1p.js +2 -0
  113. package/dist/assets/assets/cz-CSN1u-1p.js.map +1 -0
  114. package/dist/assets/assets/da-Cd4-2_5U.js +2 -0
  115. package/dist/assets/assets/da-Cd4-2_5U.js.map +1 -0
  116. package/dist/assets/assets/de-C7YtizCu.js +2 -0
  117. package/dist/assets/assets/de-C7YtizCu.js.map +1 -0
  118. package/dist/assets/assets/de-DNid5tvw.js +2 -0
  119. package/dist/assets/assets/de-DNid5tvw.js.map +1 -0
  120. package/dist/assets/assets/dist-CV9BnlWY.js +5 -0
  121. package/dist/assets/assets/dist-CV9BnlWY.js.map +1 -0
  122. package/dist/assets/assets/dj-BY__Rk6N.js +2 -0
  123. package/dist/assets/assets/dj-BY__Rk6N.js.map +1 -0
  124. package/dist/assets/assets/dk-BrBg2C-u.js +2 -0
  125. package/dist/assets/assets/dk-BrBg2C-u.js.map +1 -0
  126. package/dist/assets/assets/dm-B8fppkLZ.js +2 -0
  127. package/dist/assets/assets/dm-B8fppkLZ.js.map +1 -0
  128. package/dist/assets/assets/do-DT6lsFi0.js +2 -0
  129. package/dist/assets/assets/do-DT6lsFi0.js.map +1 -0
  130. package/dist/assets/assets/dz-DvjjArkf.js +2 -0
  131. package/dist/assets/assets/dz-DvjjArkf.js.map +1 -0
  132. package/dist/assets/assets/ec-CLcn3ZY5.js +2 -0
  133. package/dist/assets/assets/ec-CLcn3ZY5.js.map +1 -0
  134. package/dist/assets/assets/ee-DhRoyamb.js +2 -0
  135. package/dist/assets/assets/ee-DhRoyamb.js.map +1 -0
  136. package/dist/assets/assets/eg-BMJXSjA7.js +2 -0
  137. package/dist/assets/assets/eg-BMJXSjA7.js.map +1 -0
  138. package/dist/assets/assets/eh-kPNs0m4W.js +2 -0
  139. package/dist/assets/assets/eh-kPNs0m4W.js.map +1 -0
  140. package/dist/assets/assets/el-BaaG9zXY.js +2 -0
  141. package/dist/assets/assets/el-BaaG9zXY.js.map +1 -0
  142. package/dist/assets/assets/er-CgcszDHk.js +2 -0
  143. package/dist/assets/assets/er-CgcszDHk.js.map +1 -0
  144. package/dist/assets/assets/es-Cn40GwkH.js +2 -0
  145. package/dist/assets/assets/es-Cn40GwkH.js.map +1 -0
  146. package/dist/assets/assets/es-DDZkgU93.js +2 -0
  147. package/dist/assets/assets/es-DDZkgU93.js.map +1 -0
  148. package/dist/assets/assets/et-xpjwka4f.js +2 -0
  149. package/dist/assets/assets/et-xpjwka4f.js.map +1 -0
  150. package/dist/assets/assets/fi-BaKFdgP1.js +2 -0
  151. package/dist/assets/assets/fi-BaKFdgP1.js.map +1 -0
  152. package/dist/assets/assets/fi-CFoJ7h4p.js +2 -0
  153. package/dist/assets/assets/fi-CFoJ7h4p.js.map +1 -0
  154. package/dist/assets/assets/fj-Dv9fACYg.js +2 -0
  155. package/dist/assets/assets/fj-Dv9fACYg.js.map +1 -0
  156. package/dist/assets/assets/fm-CJS-CajN.js +2 -0
  157. package/dist/assets/assets/fm-CJS-CajN.js.map +1 -0
  158. package/dist/assets/assets/fr-CFYjBpyx.js +2 -0
  159. package/dist/assets/assets/fr-CFYjBpyx.js.map +1 -0
  160. package/dist/assets/assets/fr-DihSzc5w.js +2 -0
  161. package/dist/assets/assets/fr-DihSzc5w.js.map +1 -0
  162. package/dist/assets/assets/ga-CNumRDCQ.js +2 -0
  163. package/dist/assets/assets/ga-CNumRDCQ.js.map +1 -0
  164. package/dist/assets/assets/gb-WNer3TCs.js +2 -0
  165. package/dist/assets/assets/gb-WNer3TCs.js.map +1 -0
  166. package/dist/assets/assets/gd-AxP8ZqQ3.js +2 -0
  167. package/dist/assets/assets/gd-AxP8ZqQ3.js.map +1 -0
  168. package/dist/assets/assets/ge-BZNhlpjl.js +2 -0
  169. package/dist/assets/assets/ge-BZNhlpjl.js.map +1 -0
  170. package/dist/assets/assets/gh-DfG0KL4E.js +2 -0
  171. package/dist/assets/assets/gh-DfG0KL4E.js.map +1 -0
  172. package/dist/assets/assets/gm-DNv0Gi3L.js +2 -0
  173. package/dist/assets/assets/gm-DNv0Gi3L.js.map +1 -0
  174. package/dist/assets/assets/gn-CCNIcOau.js +2 -0
  175. package/dist/assets/assets/gn-CCNIcOau.js.map +1 -0
  176. package/dist/assets/assets/gq-Db3JBvRp.js +2 -0
  177. package/dist/assets/assets/gq-Db3JBvRp.js.map +1 -0
  178. package/dist/assets/assets/gr-CUycZL06.js +2 -0
  179. package/dist/assets/assets/gr-CUycZL06.js.map +1 -0
  180. package/dist/assets/assets/gt-CvcG2CCr.js +2 -0
  181. package/dist/assets/assets/gt-CvcG2CCr.js.map +1 -0
  182. package/dist/assets/assets/gw-Bz6bHaFC.js +2 -0
  183. package/dist/assets/assets/gw-Bz6bHaFC.js.map +1 -0
  184. package/dist/assets/assets/gy-Bh14gmuk.js +2 -0
  185. package/dist/assets/assets/gy-Bh14gmuk.js.map +1 -0
  186. package/dist/assets/assets/he-BqHuQNYF.js +2 -0
  187. package/dist/assets/assets/he-BqHuQNYF.js.map +1 -0
  188. package/dist/assets/assets/hk-CoxQRos-.js +2 -0
  189. package/dist/assets/assets/hk-CoxQRos-.js.map +1 -0
  190. package/dist/assets/assets/hn-D9MR-twd.js +2 -0
  191. package/dist/assets/assets/hn-D9MR-twd.js.map +1 -0
  192. package/dist/assets/assets/hr-CY8ssDf2.js +2 -0
  193. package/dist/assets/assets/hr-CY8ssDf2.js.map +1 -0
  194. package/dist/assets/assets/ht-Btab_P66.js +2 -0
  195. package/dist/assets/assets/ht-Btab_P66.js.map +1 -0
  196. package/dist/assets/assets/hu-Bd15G6cY.js +2 -0
  197. package/dist/assets/assets/hu-Bd15G6cY.js.map +1 -0
  198. package/dist/assets/assets/hu-XTCl1evV.js +2 -0
  199. package/dist/assets/assets/hu-XTCl1evV.js.map +1 -0
  200. package/dist/assets/assets/id-Cl2IUqcE.js +2 -0
  201. package/dist/assets/assets/id-Cl2IUqcE.js.map +1 -0
  202. package/dist/assets/assets/ie-DhNM_aaB.js +2 -0
  203. package/dist/assets/assets/ie-DhNM_aaB.js.map +1 -0
  204. package/dist/assets/assets/il-CjxCOku_.js +2 -0
  205. package/dist/assets/assets/il-CjxCOku_.js.map +1 -0
  206. package/dist/assets/assets/in-BiAGGW0P.js +2 -0
  207. package/dist/assets/assets/in-BiAGGW0P.js.map +1 -0
  208. package/dist/assets/assets/index-9MYKwVAF.css +1 -0
  209. package/dist/assets/assets/index-CqvoWXZ8.js +84 -0
  210. package/dist/assets/assets/index-CqvoWXZ8.js.map +1 -0
  211. package/dist/assets/assets/iq-Cv2AX3gf.js +2 -0
  212. package/dist/assets/assets/iq-Cv2AX3gf.js.map +1 -0
  213. package/dist/assets/assets/ir-ChSMloNP.js +2 -0
  214. package/dist/assets/assets/ir-ChSMloNP.js.map +1 -0
  215. package/dist/assets/assets/is-B_gQCHkP.js +2 -0
  216. package/dist/assets/assets/is-B_gQCHkP.js.map +1 -0
  217. package/dist/assets/assets/it-CKWb6UZL.js +2 -0
  218. package/dist/assets/assets/it-CKWb6UZL.js.map +1 -0
  219. package/dist/assets/assets/it-nE66-Fr1.js +2 -0
  220. package/dist/assets/assets/it-nE66-Fr1.js.map +1 -0
  221. package/dist/assets/assets/ja-B623Yqkl.js +2 -0
  222. package/dist/assets/assets/ja-B623Yqkl.js.map +1 -0
  223. package/dist/assets/assets/je-Bf5hMZi_.js +2 -0
  224. package/dist/assets/assets/je-Bf5hMZi_.js.map +1 -0
  225. package/dist/assets/assets/jm-B9-ZYIdz.js +2 -0
  226. package/dist/assets/assets/jm-B9-ZYIdz.js.map +1 -0
  227. package/dist/assets/assets/jo-LRCd5NbG.js +2 -0
  228. package/dist/assets/assets/jo-LRCd5NbG.js.map +1 -0
  229. package/dist/assets/assets/jp-Jgwu6K6N.js +2 -0
  230. package/dist/assets/assets/jp-Jgwu6K6N.js.map +1 -0
  231. package/dist/assets/assets/ke-BDIx-O5L.js +2 -0
  232. package/dist/assets/assets/ke-BDIx-O5L.js.map +1 -0
  233. package/dist/assets/assets/kg-D_8Ev0zW.js +2 -0
  234. package/dist/assets/assets/kg-D_8Ev0zW.js.map +1 -0
  235. package/dist/assets/assets/kh-D9n-04BG.js +2 -0
  236. package/dist/assets/assets/kh-D9n-04BG.js.map +1 -0
  237. package/dist/assets/assets/ki-DfQfF35G.js +2 -0
  238. package/dist/assets/assets/ki-DfQfF35G.js.map +1 -0
  239. package/dist/assets/assets/km-DIs2PJNm.js +2 -0
  240. package/dist/assets/assets/km-DIs2PJNm.js.map +1 -0
  241. package/dist/assets/assets/kn-A-kuWFN_.js +2 -0
  242. package/dist/assets/assets/kn-A-kuWFN_.js.map +1 -0
  243. package/dist/assets/assets/ko-DE_dHFvf.js +2 -0
  244. package/dist/assets/assets/ko-DE_dHFvf.js.map +1 -0
  245. package/dist/assets/assets/kp-DdNIIhXM.js +2 -0
  246. package/dist/assets/assets/kp-DdNIIhXM.js.map +1 -0
  247. package/dist/assets/assets/kr-DrWfuTqv.js +2 -0
  248. package/dist/assets/assets/kr-DrWfuTqv.js.map +1 -0
  249. package/dist/assets/assets/ks-DJfQ-YO3.js +2 -0
  250. package/dist/assets/assets/ks-DJfQ-YO3.js.map +1 -0
  251. package/dist/assets/assets/kw-Bo7h3oBB.js +2 -0
  252. package/dist/assets/assets/kw-Bo7h3oBB.js.map +1 -0
  253. package/dist/assets/assets/kz-DG6hiRvd.js +2 -0
  254. package/dist/assets/assets/kz-DG6hiRvd.js.map +1 -0
  255. package/dist/assets/assets/la-DIC6JYVS.js +2 -0
  256. package/dist/assets/assets/la-DIC6JYVS.js.map +1 -0
  257. package/dist/assets/assets/lb-DZ9bz8Y4.js +2 -0
  258. package/dist/assets/assets/lb-DZ9bz8Y4.js.map +1 -0
  259. package/dist/assets/assets/lc-Dr02stwZ.js +2 -0
  260. package/dist/assets/assets/lc-Dr02stwZ.js.map +1 -0
  261. package/dist/assets/assets/li-DhScucbM.js +2 -0
  262. package/dist/assets/assets/li-DhScucbM.js.map +1 -0
  263. package/dist/assets/assets/lk-D_git-VI.js +2 -0
  264. package/dist/assets/assets/lk-D_git-VI.js.map +1 -0
  265. package/dist/assets/assets/lr-Gz2Pv4Is.js +2 -0
  266. package/dist/assets/assets/lr-Gz2Pv4Is.js.map +1 -0
  267. package/dist/assets/assets/ls-Dla8Mtxv.js +2 -0
  268. package/dist/assets/assets/ls-Dla8Mtxv.js.map +1 -0
  269. package/dist/assets/assets/lt-C9s1s2DO.js +2 -0
  270. package/dist/assets/assets/lt-C9s1s2DO.js.map +1 -0
  271. package/dist/assets/assets/lu-2yhjYU-Q.js +2 -0
  272. package/dist/assets/assets/lu-2yhjYU-Q.js.map +1 -0
  273. package/dist/assets/assets/lv-W5x5JHfO.js +2 -0
  274. package/dist/assets/assets/lv-W5x5JHfO.js.map +1 -0
  275. package/dist/assets/assets/ly-CQRzcpdX.js +2 -0
  276. package/dist/assets/assets/ly-CQRzcpdX.js.map +1 -0
  277. package/dist/assets/assets/ma-B7eS8F31.js +2 -0
  278. package/dist/assets/assets/ma-B7eS8F31.js.map +1 -0
  279. package/dist/assets/assets/mc-KSBzvhnr.js +2 -0
  280. package/dist/assets/assets/mc-KSBzvhnr.js.map +1 -0
  281. package/dist/assets/assets/md-DZXCIQ3o.js +2 -0
  282. package/dist/assets/assets/md-DZXCIQ3o.js.map +1 -0
  283. package/dist/assets/assets/me-Bx7s2-BC.js +2 -0
  284. package/dist/assets/assets/me-Bx7s2-BC.js.map +1 -0
  285. package/dist/assets/assets/mg-CUAmb4P0.js +2 -0
  286. package/dist/assets/assets/mg-CUAmb4P0.js.map +1 -0
  287. package/dist/assets/assets/mh-D58v_sSR.js +2 -0
  288. package/dist/assets/assets/mh-D58v_sSR.js.map +1 -0
  289. package/dist/assets/assets/mk-B1iKenEf.js +2 -0
  290. package/dist/assets/assets/mk-B1iKenEf.js.map +1 -0
  291. package/dist/assets/assets/ml-aN2SVTBH.js +2 -0
  292. package/dist/assets/assets/ml-aN2SVTBH.js.map +1 -0
  293. package/dist/assets/assets/mm-BwRj9s66.js +2 -0
  294. package/dist/assets/assets/mm-BwRj9s66.js.map +1 -0
  295. package/dist/assets/assets/mn-CcmT9UiQ.js +2 -0
  296. package/dist/assets/assets/mn-CcmT9UiQ.js.map +1 -0
  297. package/dist/assets/assets/mr-DnTuk3n4.js +2 -0
  298. package/dist/assets/assets/mr-DnTuk3n4.js.map +1 -0
  299. package/dist/assets/assets/mt-DGPWqRA6.js +2 -0
  300. package/dist/assets/assets/mt-DGPWqRA6.js.map +1 -0
  301. package/dist/assets/assets/mu-DcnqbcP-.js +2 -0
  302. package/dist/assets/assets/mu-DcnqbcP-.js.map +1 -0
  303. package/dist/assets/assets/mv-CCKYaZ-D.js +2 -0
  304. package/dist/assets/assets/mv-CCKYaZ-D.js.map +1 -0
  305. package/dist/assets/assets/mw-BxhR28Lk.js +2 -0
  306. package/dist/assets/assets/mw-BxhR28Lk.js.map +1 -0
  307. package/dist/assets/assets/mx-By-j66iW.js +2 -0
  308. package/dist/assets/assets/mx-By-j66iW.js.map +1 -0
  309. package/dist/assets/assets/my-3m2yhQRk.js +2 -0
  310. package/dist/assets/assets/my-3m2yhQRk.js.map +1 -0
  311. package/dist/assets/assets/mz-oGkxPx1n.js +2 -0
  312. package/dist/assets/assets/mz-oGkxPx1n.js.map +1 -0
  313. package/dist/assets/assets/na-CUsEkM92.js +2 -0
  314. package/dist/assets/assets/na-CUsEkM92.js.map +1 -0
  315. package/dist/assets/assets/ne-D_CUh-Lc.js +2 -0
  316. package/dist/assets/assets/ne-D_CUh-Lc.js.map +1 -0
  317. package/dist/assets/assets/ng-BPWJ1Me2.js +2 -0
  318. package/dist/assets/assets/ng-BPWJ1Me2.js.map +1 -0
  319. package/dist/assets/assets/ni-DEQvXqPw.js +2 -0
  320. package/dist/assets/assets/ni-DEQvXqPw.js.map +1 -0
  321. package/dist/assets/assets/nl-DDw301fE.js +2 -0
  322. package/dist/assets/assets/nl-DDw301fE.js.map +1 -0
  323. package/dist/assets/assets/nl-ld0j2zd2.js +2 -0
  324. package/dist/assets/assets/nl-ld0j2zd2.js.map +1 -0
  325. package/dist/assets/assets/no-D8_ZUO5T.js +2 -0
  326. package/dist/assets/assets/no-D8_ZUO5T.js.map +1 -0
  327. package/dist/assets/assets/no-XfCZZj7G.js +2 -0
  328. package/dist/assets/assets/no-XfCZZj7G.js.map +1 -0
  329. package/dist/assets/assets/np-ByWMGf7r.js +2 -0
  330. package/dist/assets/assets/np-ByWMGf7r.js.map +1 -0
  331. package/dist/assets/assets/nr-BGV1QKHR.js +2 -0
  332. package/dist/assets/assets/nr-BGV1QKHR.js.map +1 -0
  333. package/dist/assets/assets/nz-CtNGOSed.js +2 -0
  334. package/dist/assets/assets/nz-CtNGOSed.js.map +1 -0
  335. package/dist/assets/assets/om-DFZfEG_j.js +2 -0
  336. package/dist/assets/assets/om-DFZfEG_j.js.map +1 -0
  337. package/dist/assets/assets/pa-BTioHiDq.js +2 -0
  338. package/dist/assets/assets/pa-BTioHiDq.js.map +1 -0
  339. package/dist/assets/assets/pe-DWboUCbW.js +2 -0
  340. package/dist/assets/assets/pe-DWboUCbW.js.map +1 -0
  341. package/dist/assets/assets/pg-D4BAFBl7.js +2 -0
  342. package/dist/assets/assets/pg-D4BAFBl7.js.map +1 -0
  343. package/dist/assets/assets/ph-B9-4c05j.js +2 -0
  344. package/dist/assets/assets/ph-B9-4c05j.js.map +1 -0
  345. package/dist/assets/assets/pk-BoydhDTc.js +2 -0
  346. package/dist/assets/assets/pk-BoydhDTc.js.map +1 -0
  347. package/dist/assets/assets/pl-Dicpp7c2.js +2 -0
  348. package/dist/assets/assets/pl-Dicpp7c2.js.map +1 -0
  349. package/dist/assets/assets/pl-LvqNumg3.js +2 -0
  350. package/dist/assets/assets/pl-LvqNumg3.js.map +1 -0
  351. package/dist/assets/assets/pt-DA9RUNlT.js +2 -0
  352. package/dist/assets/assets/pt-DA9RUNlT.js.map +1 -0
  353. package/dist/assets/assets/pt-Gy6aSAgY.js +2 -0
  354. package/dist/assets/assets/pt-Gy6aSAgY.js.map +1 -0
  355. package/dist/assets/assets/pw-J_gyjYWh.js +2 -0
  356. package/dist/assets/assets/pw-J_gyjYWh.js.map +1 -0
  357. package/dist/assets/assets/py-CKAKoon7.js +2 -0
  358. package/dist/assets/assets/py-CKAKoon7.js.map +1 -0
  359. package/dist/assets/assets/qa-CNYB3R3R.js +2 -0
  360. package/dist/assets/assets/qa-CNYB3R3R.js.map +1 -0
  361. package/dist/assets/assets/ro-Btys85cp.js +2 -0
  362. package/dist/assets/assets/ro-Btys85cp.js.map +1 -0
  363. package/dist/assets/assets/ro-sfXVxWl6.js +2 -0
  364. package/dist/assets/assets/ro-sfXVxWl6.js.map +1 -0
  365. package/dist/assets/assets/rs-CVrceSzu.js +2 -0
  366. package/dist/assets/assets/rs-CVrceSzu.js.map +1 -0
  367. package/dist/assets/assets/ru-CrGgx3bV.js +2 -0
  368. package/dist/assets/assets/ru-CrGgx3bV.js.map +1 -0
  369. package/dist/assets/assets/ru-D7oU7uiF.js +2 -0
  370. package/dist/assets/assets/ru-D7oU7uiF.js.map +1 -0
  371. package/dist/assets/assets/rw-B0hMa2RX.js +2 -0
  372. package/dist/assets/assets/rw-B0hMa2RX.js.map +1 -0
  373. package/dist/assets/assets/sa-Cy9ipXz-.js +2 -0
  374. package/dist/assets/assets/sa-Cy9ipXz-.js.map +1 -0
  375. package/dist/assets/assets/sb-DJqNmnJ7.js +2 -0
  376. package/dist/assets/assets/sb-DJqNmnJ7.js.map +1 -0
  377. package/dist/assets/assets/sc-fjfYLACH.js +2 -0
  378. package/dist/assets/assets/sc-fjfYLACH.js.map +1 -0
  379. package/dist/assets/assets/sd-DPOn7vAp.js +2 -0
  380. package/dist/assets/assets/sd-DPOn7vAp.js.map +1 -0
  381. package/dist/assets/assets/se-DfjgVkvK.js +2 -0
  382. package/dist/assets/assets/se-DfjgVkvK.js.map +1 -0
  383. package/dist/assets/assets/sg-CX_EtT3D.js +2 -0
  384. package/dist/assets/assets/sg-CX_EtT3D.js.map +1 -0
  385. package/dist/assets/assets/si-uhOMNPy-.js +2 -0
  386. package/dist/assets/assets/si-uhOMNPy-.js.map +1 -0
  387. package/dist/assets/assets/sk-Dw1JgI5Z.js +2 -0
  388. package/dist/assets/assets/sk-Dw1JgI5Z.js.map +1 -0
  389. package/dist/assets/assets/sl-BwQ6WjNS.js +2 -0
  390. package/dist/assets/assets/sl-BwQ6WjNS.js.map +1 -0
  391. package/dist/assets/assets/sm-Cbxq8dmu.js +2 -0
  392. package/dist/assets/assets/sm-Cbxq8dmu.js.map +1 -0
  393. package/dist/assets/assets/sn-a-NX0-yL.js +2 -0
  394. package/dist/assets/assets/sn-a-NX0-yL.js.map +1 -0
  395. package/dist/assets/assets/so-DVEtVrBI.js +2 -0
  396. package/dist/assets/assets/so-DVEtVrBI.js.map +1 -0
  397. package/dist/assets/assets/sr-CPY2UrNZ.js +2 -0
  398. package/dist/assets/assets/sr-CPY2UrNZ.js.map +1 -0
  399. package/dist/assets/assets/sr-D0aNQziT.js +2 -0
  400. package/dist/assets/assets/sr-D0aNQziT.js.map +1 -0
  401. package/dist/assets/assets/st-BbElRNN3.js +2 -0
  402. package/dist/assets/assets/st-BbElRNN3.js.map +1 -0
  403. package/dist/assets/assets/sv-BIZdpGwy.js +2 -0
  404. package/dist/assets/assets/sv-BIZdpGwy.js.map +1 -0
  405. package/dist/assets/assets/sv-CtoRKEOL.js +2 -0
  406. package/dist/assets/assets/sv-CtoRKEOL.js.map +1 -0
  407. package/dist/assets/assets/sy-DuMP7Nb5.js +2 -0
  408. package/dist/assets/assets/sy-DuMP7Nb5.js.map +1 -0
  409. package/dist/assets/assets/sz-Bbm_EfJR.js +2 -0
  410. package/dist/assets/assets/sz-Bbm_EfJR.js.map +1 -0
  411. package/dist/assets/assets/td-C26ZKLeS.js +2 -0
  412. package/dist/assets/assets/td-C26ZKLeS.js.map +1 -0
  413. package/dist/assets/assets/tg-ClEcBIP7.js +2 -0
  414. package/dist/assets/assets/tg-ClEcBIP7.js.map +1 -0
  415. package/dist/assets/assets/th-Taw3xGiW.js +2 -0
  416. package/dist/assets/assets/th-Taw3xGiW.js.map +1 -0
  417. package/dist/assets/assets/tj-BgQ6d5Wt.js +2 -0
  418. package/dist/assets/assets/tj-BgQ6d5Wt.js.map +1 -0
  419. package/dist/assets/assets/tl-S1pvdloF.js +2 -0
  420. package/dist/assets/assets/tl-S1pvdloF.js.map +1 -0
  421. package/dist/assets/assets/tm-DPbuNbnA.js +2 -0
  422. package/dist/assets/assets/tm-DPbuNbnA.js.map +1 -0
  423. package/dist/assets/assets/tn-_Pbys28Y.js +2 -0
  424. package/dist/assets/assets/tn-_Pbys28Y.js.map +1 -0
  425. package/dist/assets/assets/to-Cr3ejDiA.js +2 -0
  426. package/dist/assets/assets/to-Cr3ejDiA.js.map +1 -0
  427. package/dist/assets/assets/tr-BKZ6SEMN.js +2 -0
  428. package/dist/assets/assets/tr-BKZ6SEMN.js.map +1 -0
  429. package/dist/assets/assets/tr-D_AEGmAM.js +2 -0
  430. package/dist/assets/assets/tr-D_AEGmAM.js.map +1 -0
  431. package/dist/assets/assets/tt-IRFqPLkZ.js +2 -0
  432. package/dist/assets/assets/tt-IRFqPLkZ.js.map +1 -0
  433. package/dist/assets/assets/tv-ByYAbG0B.js +2 -0
  434. package/dist/assets/assets/tv-ByYAbG0B.js.map +1 -0
  435. package/dist/assets/assets/tw-Ebz6JQyM.js +2 -0
  436. package/dist/assets/assets/tw-Ebz6JQyM.js.map +1 -0
  437. package/dist/assets/assets/tz-DofxpwnJ.js +2 -0
  438. package/dist/assets/assets/tz-DofxpwnJ.js.map +1 -0
  439. package/dist/assets/assets/ua-C-Z749Zo.js +2 -0
  440. package/dist/assets/assets/ua-C-Z749Zo.js.map +1 -0
  441. package/dist/assets/assets/ug-CWupOauw.js +2 -0
  442. package/dist/assets/assets/ug-CWupOauw.js.map +1 -0
  443. package/dist/assets/assets/uk-WjqaL9eb.js +2 -0
  444. package/dist/assets/assets/uk-WjqaL9eb.js.map +1 -0
  445. package/dist/assets/assets/us-ev7042Ru.js +2 -0
  446. package/dist/assets/assets/us-ev7042Ru.js.map +1 -0
  447. package/dist/assets/assets/uy-FbqkNalt.js +2 -0
  448. package/dist/assets/assets/uy-FbqkNalt.js.map +1 -0
  449. package/dist/assets/assets/uz-BplITj4H.js +2 -0
  450. package/dist/assets/assets/uz-BplITj4H.js.map +1 -0
  451. package/dist/assets/assets/va-DB_VgAEh.js +2 -0
  452. package/dist/assets/assets/va-DB_VgAEh.js.map +1 -0
  453. package/dist/assets/assets/vc-oE5LafoZ.js +2 -0
  454. package/dist/assets/assets/vc-oE5LafoZ.js.map +1 -0
  455. package/dist/assets/assets/ve-TIdwcWAT.js +2 -0
  456. package/dist/assets/assets/ve-TIdwcWAT.js.map +1 -0
  457. package/dist/assets/assets/vi-DhDHRZca.js +2 -0
  458. package/dist/assets/assets/vi-DhDHRZca.js.map +1 -0
  459. package/dist/assets/assets/vn-TW3TOhkl.js +2 -0
  460. package/dist/assets/assets/vn-TW3TOhkl.js.map +1 -0
  461. package/dist/assets/assets/vu-Hso0UfdZ.js +2 -0
  462. package/dist/assets/assets/vu-Hso0UfdZ.js.map +1 -0
  463. package/dist/assets/assets/ws-B8OQPEXR.js +2 -0
  464. package/dist/assets/assets/ws-B8OQPEXR.js.map +1 -0
  465. package/dist/assets/assets/ye-N2E5D6OR.js +2 -0
  466. package/dist/assets/assets/ye-N2E5D6OR.js.map +1 -0
  467. package/dist/assets/assets/za-DAg0rnhw.js +2 -0
  468. package/dist/assets/assets/za-DAg0rnhw.js.map +1 -0
  469. package/dist/assets/assets/zh-Hans-2KaAC0e7.js +2 -0
  470. package/dist/assets/assets/zh-Hans-2KaAC0e7.js.map +1 -0
  471. package/dist/assets/assets/zh-Hant-BgZemFsG.js +2 -0
  472. package/dist/assets/assets/zh-Hant-BgZemFsG.js.map +1 -0
  473. package/dist/assets/assets/zm-BGyCVCwM.js +2 -0
  474. package/dist/assets/assets/zm-BGyCVCwM.js.map +1 -0
  475. package/dist/assets/assets/zw-aeNZQ8mk.js +2 -0
  476. package/dist/assets/assets/zw-aeNZQ8mk.js.map +1 -0
  477. package/dist/assets/icon_128x128.png +0 -0
  478. package/dist/assets/icon_192x192.png +0 -0
  479. package/dist/assets/icon_256x256.png +0 -0
  480. package/dist/assets/icon_384x384.png +0 -0
  481. package/dist/assets/icon_512x512.png +0 -0
  482. package/dist/assets/icon_96x96.png +0 -0
  483. package/dist/assets/icon_maskable.png +0 -0
  484. package/dist/assets/icon_maskable_180x180.png +0 -0
  485. package/dist/assets/index.html +22 -1
  486. package/dist/assets/manifest.json +49 -7
  487. package/dist/index.js +4 -121307
  488. package/package.json +194 -165
  489. package/dist/assets/android-chrome-192x192.png +0 -0
  490. package/dist/assets/android-chrome-512x512.png +0 -0
  491. package/dist/assets/apple-touch-icon.png +0 -0
  492. package/dist/assets/asset-manifest.json +0 -57
  493. package/dist/assets/browserconfig.xml +0 -9
  494. package/dist/assets/favicon-16x16.png +0 -0
  495. package/dist/assets/favicon-32x32.png +0 -0
  496. package/dist/assets/mstile-144x144.png +0 -0
  497. package/dist/assets/mstile-150x150.png +0 -0
  498. package/dist/assets/mstile-310x150.png +0 -0
  499. package/dist/assets/mstile-310x310.png +0 -0
  500. package/dist/assets/mstile-70x70.png +0 -0
  501. package/dist/assets/static/css/main.ebc96cb1e06c9916a838.css +0 -1
  502. package/dist/assets/static/js/0.82c723d5.chunk.js +0 -1
  503. package/dist/assets/static/js/1.db0fe4ea.chunk.js +0 -1
  504. package/dist/assets/static/js/10.30c6f226.chunk.js +0 -1
  505. package/dist/assets/static/js/11.289260af.chunk.js +0 -1
  506. package/dist/assets/static/js/12.fa7b4e33.chunk.js +0 -1
  507. package/dist/assets/static/js/13.751d1611.chunk.js +0 -1
  508. package/dist/assets/static/js/14.dd0e9582.chunk.js +0 -1
  509. package/dist/assets/static/js/15.06e2ea39.chunk.js +0 -1
  510. package/dist/assets/static/js/16.ea809d31.chunk.js +0 -1
  511. package/dist/assets/static/js/17.a974e220.chunk.js +0 -1
  512. package/dist/assets/static/js/18.0079a2a5.chunk.js +0 -1
  513. package/dist/assets/static/js/2.3afdbeeb.chunk.js +0 -1
  514. package/dist/assets/static/js/20.8de89006.chunk.js +0 -1
  515. package/dist/assets/static/js/21.8198c84f.chunk.js +0 -1
  516. package/dist/assets/static/js/22.63981985.chunk.js +0 -1
  517. package/dist/assets/static/js/23.17095f0e.chunk.js +0 -1
  518. package/dist/assets/static/js/24.74053719.chunk.js +0 -1
  519. package/dist/assets/static/js/25.5b15fe84.chunk.js +0 -1
  520. package/dist/assets/static/js/26.f900dd7a.chunk.js +0 -1
  521. package/dist/assets/static/js/27.34b4cbca.chunk.js +0 -1
  522. package/dist/assets/static/js/28.81127ab2.chunk.js +0 -1
  523. package/dist/assets/static/js/29.cb7311e3.chunk.js +0 -1
  524. package/dist/assets/static/js/3.fc9c131e.chunk.js +0 -1
  525. package/dist/assets/static/js/30.88ea9cd3.chunk.js +0 -1
  526. package/dist/assets/static/js/31.a481a43d.chunk.js +0 -1
  527. package/dist/assets/static/js/32.b253c42e.chunk.js +0 -1
  528. package/dist/assets/static/js/33.bc273275.chunk.js +0 -1
  529. package/dist/assets/static/js/34.95133fcc.chunk.js +0 -1
  530. package/dist/assets/static/js/35.83507b95.chunk.js +0 -1
  531. package/dist/assets/static/js/36.3fda74b7.chunk.js +0 -1
  532. package/dist/assets/static/js/37.0fb4ab07.chunk.js +0 -1
  533. package/dist/assets/static/js/38.fb6e828d.chunk.js +0 -1
  534. package/dist/assets/static/js/39.ba8377f6.chunk.js +0 -1
  535. package/dist/assets/static/js/4.7adb43fe.chunk.js +0 -1
  536. package/dist/assets/static/js/40.777bc759.chunk.js +0 -1
  537. package/dist/assets/static/js/41.7c05fed9.chunk.js +0 -1
  538. package/dist/assets/static/js/42.c461a641.chunk.js +0 -1
  539. package/dist/assets/static/js/43.f8716256.chunk.js +0 -1
  540. package/dist/assets/static/js/44.492d3136.chunk.js +0 -1
  541. package/dist/assets/static/js/45.cf063a50.chunk.js +0 -1
  542. package/dist/assets/static/js/46.913a6c2e.chunk.js +0 -1
  543. package/dist/assets/static/js/47.1f91036f.chunk.js +0 -1
  544. package/dist/assets/static/js/48.c1072306.chunk.js +0 -1
  545. package/dist/assets/static/js/49.20b670cc.chunk.js +0 -1
  546. package/dist/assets/static/js/5.7716753b.chunk.js +0 -1
  547. package/dist/assets/static/js/50.9b870e27.chunk.js +0 -1
  548. package/dist/assets/static/js/6.6c2533ba.chunk.js +0 -1
  549. package/dist/assets/static/js/7.535350f5.chunk.js +0 -1
  550. package/dist/assets/static/js/8.95535de7.chunk.js +0 -1
  551. package/dist/assets/static/js/9.39b78121.chunk.js +0 -1
  552. package/dist/assets/static/js/main.6f3a42e7.js +0 -1
  553. package/dist/assets/static/media/ABOUT.d02918c9.md +0 -13
  554. package/dist/assets/static/media/Roboto-500.64e69384.woff +0 -0
  555. package/dist/assets/static/media/Roboto-500.7f8f0146.eot +0 -0
  556. package/dist/assets/static/media/Roboto-500.916656a2.ttf +0 -0
  557. package/dist/assets/static/media/Roboto-500.abd255e8.svg +0 -305
  558. package/dist/assets/static/media/Roboto-700.8d11d1e1.ttf +0 -0
  559. package/dist/assets/static/media/Roboto-700.9c9c164e.svg +0 -310
  560. package/dist/assets/static/media/Roboto-700.c65552c8.eot +0 -0
  561. package/dist/assets/static/media/Roboto-700.ee82bda2.woff +0 -0
  562. package/dist/assets/static/media/Roboto-700italic.1dc5bfed.eot +0 -0
  563. package/dist/assets/static/media/Roboto-700italic.686da014.woff +0 -0
  564. package/dist/assets/static/media/Roboto-700italic.896656dc.ttf +0 -0
  565. package/dist/assets/static/media/Roboto-700italic.cacb9681.svg +0 -325
  566. package/dist/assets/static/media/Roboto-italic.09ed2f27.svg +0 -323
  567. package/dist/assets/static/media/Roboto-italic.c1421604.woff +0 -0
  568. package/dist/assets/static/media/Roboto-italic.c38ecad2.ttf +0 -0
  569. package/dist/assets/static/media/Roboto-italic.f7677a07.eot +0 -0
  570. package/dist/assets/static/media/Roboto-regular.5107f918.eot +0 -0
  571. package/dist/assets/static/media/Roboto-regular.6a307cf2.woff +0 -0
  572. package/dist/assets/static/media/Roboto-regular.81dc9b21.ttf +0 -0
  573. package/dist/assets/static/media/Roboto-regular.bcf2ba9e.svg +0 -308
  574. /package/dist/assets/{static/media/Roboto-500.c7e17507.woff2 → assets/Roboto-500-CsZWW7Bu.woff2} +0 -0
  575. /package/dist/assets/{static/media/Roboto-700.2b8c7cb1.woff2 → assets/Roboto-700-D1ZLqfE0.woff2} +0 -0
  576. /package/dist/assets/{static/media/Roboto-700italic.05e025ae.woff2 → assets/Roboto-700italic-CfNT1HYS.woff2} +0 -0
  577. /package/dist/assets/{static/media/Roboto-italic.766b7c5c.woff2 → assets/Roboto-italic-BTa0Y66b.woff2} +0 -0
  578. /package/dist/assets/{static/media/Roboto-regular.11bce66a.woff2 → assets/Roboto-regular-CJgdpARq.woff2} +0 -0
  579. /package/dist/assets/{safari-pinned-tab.svg → icon.svg} +0 -0
package/README.md CHANGED
@@ -1,16 +1,45 @@
1
1
  # Flood
2
2
 
3
- ![Flood logo](flood.png)
3
+ [![Flood logo](https://github.com/jesec/flood/raw/master/flood.svg)](https://flood.js.org)
4
4
 
5
- [![Github Actions build status badge](https://github.com/jesec/flood/workflows/Build/badge.svg?branch=master&event=push)](https://github.com/jesec/flood/actions) [![Crowdin](https://badges.crowdin.net/flood/localized.svg)](https://crowdin.com/project/flood) [![Discord server badge](https://img.shields.io/discord/418267176873623553.svg?style=flat-square)](https://discord.gg/Z7yR5Uf)
5
+ [![Build](https://github.com/jesec/flood/actions/workflows/build.yml/badge.svg)](https://github.com/jesec/flood/actions/workflows/build.yml)
6
+ [![Crowdin](https://badges.crowdin.net/flood/localized.svg)](https://crowdin.com/project/flood)
7
+ [![Discord server badge](https://img.shields.io/discord/418267176873623553.svg?style=flat-square)](https://discord.gg/Z7yR5Uf)
6
8
 
7
- Flood is a monitoring service for [rTorrent](https://github.com/rakshasa/rtorrent). It's a Node.js service that communicates with rTorrent instances and serves a decent web UI for administration. This project is based on the [original Flood project](https://github.com/Flood-UI/flood).
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.
10
+
11
+ #### Supported Clients
12
+
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.
8
37
 
9
38
  #### Feedback
10
39
 
11
40
  If you have a specific issue or bug, please file a [GitHub issue](https://github.com/jesec/flood/issues). Please join the [Flood Discord server](https://discord.gg/Z7yR5Uf) to discuss feature requests and implementation details.
12
41
 
13
- #### More information
42
+ #### More Information
14
43
 
15
44
  Check out the [Wiki](https://github.com/jesec/flood/wiki) for more information.
16
45
 
@@ -18,36 +47,46 @@ Check out the [Wiki](https://github.com/jesec/flood/wiki) for more information.
18
47
 
19
48
  ### Pre-Requisites
20
49
 
21
- 1. [rTorrent](https://github.com/rakshasa/rtorrent) needs to be installed and running **with XMLRPC** configuration.
22
- - For Linux & OS X, check out [rTorrent's installation wiki](https://github.com/rakshasa/rtorrent/wiki/Installing#compilation-help) and/or [this third-party tutorial](https://jes.sc/kb/rTorrent+ruTorrent-Seedbox-Guide.php#Install-Dependencies). When you run `./configure`, be sure to run with the `--with-xmlrpc-c` flag.
23
- - For Windows, try [this guide](https://rtwi.jmk.hu/wiki/rTorrentOnWindows).
24
- 1. Install [NodeJS](https://nodejs.org/) version `Current` (you might want to manage different Node versions with [nodenv](https://github.com/nodenv/nodenv) or [nvm](https://github.com/creationix/nvm) or [n](https://github.com/tj/n)). Flood tracks latest NodeJS release and does NOT provide support to legacy NodeJS versions.
50
+ Install [Node.js runtime](https://nodejs.org/). Flood tracks `Current` and provides support to `Active LTS` as well.
51
+
52
+ - Debian, Ubuntu (`apt`/`.deb`) and Enterprise Linux (`yum`/`dnf`/`.rpm`) -based distributions users can install `nodejs` from [NodeSource](https://github.com/nodesource/distributions) software repository.
53
+ - Windows users can use [winget](https://docs.microsoft.com/en-us/windows/package-manager/winget), [Chocolatey](https://chocolatey.org/packages/nodejs) or installer.
54
+ - macOS users can use [brew](https://brew.sh/) or installer.
55
+ - Check [Node.js website](https://nodejs.org/en/download/package-manager) for more.
56
+
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`.
25
58
 
26
59
  ### Installation
27
60
 
28
- `sudo npm i -g flood` or `npx flood`
61
+ (sudo) `npm install --global flood` or `npx flood`
29
62
 
30
63
  Or use `@jesec/flood` for cutting-edge builds.
31
64
 
32
65
  Or [build from source](https://github.com/jesec/flood#Building-Flood).
33
66
 
67
+ ### Run
68
+
69
+ `flood` or `npx flood` if you installed Flood via `npm`.
70
+
71
+ `npm run start` if you compiled Flood from source.
72
+
73
+ Check [Wiki](https://github.com/jesec/flood/wiki) for how to install Flood as a service.
74
+
34
75
  ### Configuration
35
76
 
36
- By default, Flood uses a command line configuration interface. If you installed Flood via `npm`, you should be able to use `flood` or `npx flood` to launch Flood. If you compile Flood from source, you will be able to use `npm run start` to execute Flood.
77
+ Flood uses a command line configuration interface.
37
78
 
38
79
  Run `flood --help`, `npx flood --help` or `npm run start -- --help` to get help about command line arguments.
39
80
 
40
- If you want to know more about configurations, check `config.template.js`.
41
-
42
- If static configuration is preferred, copy `config.template.js` to `config.js` and edit it.
81
+ If you want to know more about configurations, check [shared/schema/Config.ts](https://github.com/jesec/flood/blob/master/shared/schema/Config.ts).
43
82
 
44
- When Flood's builtin user management is enabled (default), you will be prompted to configure the connection to rTorrent when loading the web interface.
83
+ When Flood's builtin user management is enabled (default), you will be prompted to configure the connection to torrent client when loading the web interface.
45
84
 
46
85
  **What to configure**
47
86
 
48
87
  1. If you are proxying requests to Flood from your own web server, configure Flood's path from the host at the `--baseuri` (or `baseURI`) property. All requests will be prefixed with this value.
49
88
  - For example, if serving Flood from `https://foo.bar/apps/flood`, you would set `baseURI` to `/apps/flood`. If serving flood from `https://foo.bar`, you do not need to configure `baseURI`.
50
- - [Read more about proxying requests to Flood on the Wiki](https://github.com/jesec/flood/wiki), this is a common pain-point for users.
89
+ - Read more about proxying requests to Flood in the [Wiki](https://github.com/jesec/flood/wiki).
51
90
  1. Check [Wiki](https://github.com/jesec/flood/wiki), especially `Security` sections.
52
91
 
53
92
  ### Upgrade
@@ -56,10 +95,14 @@ Run the installation command again.
56
95
 
57
96
  ### Troubleshooting
58
97
 
59
- - Debian, Ubuntu and RHEL-based distributions users can install latest `nodejs` from [NodeSource](https://github.com/nodesource/distributions).
60
98
  - Flood and filesystem:
61
- - Flood's relationship with rTorrent is NOT truly server-client. Flood server performs file operations itself. Flood server itself needs to have permissions/access to the files.
62
- - Flood only uses the path provided by rTorrent so it needs to have the same filesystem context as rTorrent. If a file is "/path/to/a/file" to rTorrent, it has to be "/path/to/a/file" to Flood in order to get file operations working. It can't be "/mnt/some/different/path/file".
99
+ - Flood server performs file operations itself. As such, Flood needs to have permissions/access to the files.
100
+ - Flood only uses the path provided by the torrent client so it needs to have the same filesystem context as the torrent client. If a file is "/path/to/a/file" to the torrent client, it has to be "/path/to/a/file" to Flood in order to get file operations working. It can't be "/mnt/some/different/path/file".
101
+ - rTorrent:
102
+ - Linux users can download the latest static executable (available for `amd64` and `arm64`) from [jesec/rtorrent](https://github.com/jesec/rtorrent). Alternatively, use package managers such as `apt`, `yum`, `pacman` of the platform to install rTorrent.
103
+ - macOS users can use `brew` to install rTorrent.
104
+ - [Compile](https://github.com/rakshasa/rtorrent/wiki/Installing): XMLRPC support flag (`--with-xmlrpc-c`) is required during compilation.
105
+ - Certain features (sequential download, initial seeding, etc.) are not available in vanilla rTorrent.
63
106
  - Ask for help in the [Flood Discord server](https://discord.gg/Z7yR5Uf).
64
107
 
65
108
  ### Docker
@@ -74,7 +117,9 @@ Note that you have to let Docker know which port should be exposed (e.g. `-p 300
74
117
 
75
118
  Don't forget to pay attention to `flood`'s arguments like `--port` and `--allowedpath`.
76
119
 
77
- Currently Docker images of this project don't bundle `rTorrent` (yet). Its usefulness is limited as a result. You have to install `rTorrent` inside the container or make it possible for Flood inside Docker to interact with your rTorrent instance.
120
+ Alternatively, you can pass in environment variables instead (e.g. `-e FLOOD_OPTION_port=3000`).
121
+
122
+ Checkout [Run Flood (and torrent clients) in containers](https://github.com/jesec/flood/discussions/120) discussion.
78
123
 
79
124
  Filesystem parts in [Troubleshooting](https://github.com/jesec/flood#troubleshooting) are especially important for containers.
80
125
 
@@ -88,42 +133,35 @@ Filesystem parts in [Troubleshooting](https://github.com/jesec/flood#troubleshoo
88
133
 
89
134
  From the root of the Flood directory...
90
135
 
91
- 1. Run `npm install`.
92
- 1. Run `npm run build`.
93
- 1. Run `npm start`.
136
+ 1. Run `pnpm install`.
137
+ 1. Run `pnpm run build`.
138
+ 1. Run `pnpm start`.
94
139
 
95
140
  Access the UI in your browser. With default settings, go to `http://localhost:3000`. You can configure the port via `--port` argument.
96
141
 
97
142
  **Notes**
98
143
 
99
- - When you use `npm run start` to execute Flood, you have to pass command line arguments after `--`. For example, `npm run start -- --host 0.0.0.0 --port 8080`. This applies to any `npm run` (e.g. `start:development:client`).
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`).
100
145
 
101
146
  ### Updating
102
147
 
103
148
  1. To update, run `git pull` in this repository's directory.
104
- 1. Check `config.template.js` for configuration changes.
105
149
  1. Kill the currently running Flood server.
106
- 1. Run `npm install` to update dependencies.
107
- 1. Run `npm run build` to transpile and bundle static assets.
108
- 1. Start the Flood server with `npm start`.
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`.
109
153
 
110
154
  ### Local Development
111
155
 
112
- 1. Run `npm install`.
113
- 1. Run `npm run start:development:server` and `npm run start:development:client` in separate terminal instances.
114
- - `npm run start:development:server` uses [ts-node-dev](https://www.npmjs.com/package/ts-node-dev) 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.
115
- - `npm 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.
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.
116
160
 
117
161
  `--help --show-hidden` shows advanced arguments.
118
162
 
119
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.
120
164
 
121
- ### Environment Variables
122
-
123
- 1. `DEV_SERVER_PORT`: webpackDevServer's port, used when developing Flood. Defaults to `4200`.
124
- 1. `DEV_SERVER_HOST`: webpackDevServer's host, used when developing Flood. Defaults to `0.0.0.0`.
125
- 1. `DEV_SERVER_HTTPS`: webpackDevServer's protocol, used when developing Flood. Defaults to `http`.
126
-
127
165
  ### Building Docker
128
166
 
129
167
  1. `docker build --pull --rm -f Dockerfile -t flood:latest .`
package/SECURITY.md ADDED
@@ -0,0 +1,27 @@
1
+ # Security
2
+
3
+ ## Supported Versions
4
+
5
+ | Version | Supported |
6
+ | ------------------------ | ------------------ |
7
+ | HEAD of master | :white_check_mark: |
8
+ | Latest released revision | :white_check_mark: |
9
+ | All old revisions | :x: |
10
+
11
+ Flood does NOT provide LTS support. Older revisions are deprecated as soon as a newer revision is released.
12
+
13
+ Generally only the latest revision (`HEAD of master`) is supported. However, [issue tracker](https://github.com/jesec/flood/issues) is still open to reports from users of the `Latest released revision`. In rare circumstances, if there is a vulnerability that requires urgent attention, and, if the `HEAD of master` is occupied with changes which maintainers are not comfortable to release, relevant changes may be backported to the `Latest released revision` to release a patch revision.
14
+
15
+ You are advised to upgrade to the latest release as soon as possible.
16
+
17
+ ## Reporting a Vulnerability
18
+
19
+ If you discover a security vulnerability within Flood, please send an e-mail to maintainer.
20
+
21
+ Suggestions for general security enhancements and/or mitigations shall be reported to [issue tracker](https://github.com/jesec/flood/issues).
22
+
23
+ If you are unsure about the severity, send an email first.
24
+
25
+ ## More information
26
+
27
+ Check out the [Wiki](https://github.com/jesec/flood/wiki) for more information.
@@ -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-CV9BnlWY.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-DfIc2RDo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alerts-DfIc2RDo.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-CV9BnlWY.js";import{m as i}from"./index-CqvoWXZ8.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-B165lCqL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationView-B165lCqL.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-CV9BnlWY.js";import{c as p,f as m,k as h,s as g}from"./index-CqvoWXZ8.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-Cz9mlsMK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthForm-Cz9mlsMK.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-CV9BnlWY.js";import{n as t,t as n}from"./ApplicationView-B165lCqL.js";import{t as r}from"./AuthForm-Cz9mlsMK.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-GaGEU4gd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Login-GaGEU4gd.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"}