diff --git a/.github/workflows/.ssh/known_hosts b/.github/workflows/.ssh/known_hosts
deleted file mode 100644
index ff8cf1042..000000000
--- a/.github/workflows/.ssh/known_hosts
+++ /dev/null
@@ -1,29 +0,0 @@
-[reports.globalhealthapp.net]:3220 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACgwMS6u0tdPP+q8TKJoJHApgwWVPTN6yxjgNpCt0Uh
-[reports.globalhealthapp.net]:3220 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRz8siwpz3lx7FiH9oqTvc3UU1tG0f1olpN336Ap1yetytAGl5wuWZJSeUrIMNSHd+/jATG2XLjEZy/EHZdaFVJ3M+8XHucGeEq6Zh+IEByIs5DDBe1SGDtI7mUTOouMV+sX2Xc52XLfQp7/iFRqyuiNkzPc56mXumuIJINzVGofoSFlsbESu4FkSrd6Q+TsVmTZ0xSGddJODl/N5RnxW38RZpc5KEJT6joqpMEFPOKt/DMjYVrraGVZoH+m3X7NjbCyh+23To6NXS9W/xqmZTIkkz3ulYSXYy/TDBE0E5p6+Fj78xri4OnVj1kcEWS0s2p/sZlcpNfjUQetXb5SXQq8WsG/pyDzck3z8P3X/i/xzJgZwFa25SnRlBA2Huw/1xYo0F01pP4KN42+aJ6zB0REUgDIYy/3yrzlF0y7BsI2UNdB+i7SEq3ualDvqiH+DXs08AVjKVn0W/bZ9LTWKnfgl4PEsj2eRi4fqy9NoS+5O0oPYVTsay6Hcl4aryyl8=
-[reports.globalhealthapp.net]:3220 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJQ5Ao12jbjd8Id4p1Rtss9hnwwLTuGO6N1uFz+93doBcDS0/gavN3s8zLZKGauXfowBSr3eObcCDlE/crB14gg=
-[reports.globalhealthapp.net]:3221 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOygbQjEgORAFfNfOc3buSNYFUZnw9vy+kdPYIkyKdK6
-[reports.globalhealthapp.net]:3221 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDs9pkqOg1HdUxbHHCvAdtCvdyTNK/EAn4uqaa6VJDmjygzwAqhO4GpW/24QVQCmOm+RJifyu+Ig+C3+V0yQr9xFjyzibV+GmS7kL2qnYLj4IXu26yv5h23ElucZQRwj4VUhoham3qQmJm5u+OMmTov168bmYiYtjYVK1fVY9VoB4nC+a3ked9eGqvz5HfV2awwxW50z7O9rWcTh72iGEcBDZ1vhXpIBGofttKZTG3SlapvXYqDG6f3FQZccJBBqWyZj1CDV+JA/Rw4F9rHuQoGsA5eDIL+Y28J5/MH9GLZY+SEZDLm5t0Zk1geUJ4shZRMrJ8UzYZWzW9zO90rZJMka+v8fKLjBoPQWwEEAVaZRJqD0Iu7j8euoU/bAFtY0YVS10IdSg4QlHZZrib2WL4hNScTfBqoecUKbgJDRVWopMkI5icvkaXOm6CtnpRC9/MJLwegNnnjbFL0lWMmgf2d0aadMj9q+myaunrv9PMhU/fcBKAWEC5fbIDYY+f66DE=
-[reports.globalhealthapp.net]:3221 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJRCJoA018J5IyP6aNhrCnngQVIRRelJAP37LcOwOLrarGCPS+V2k0PhHzWtgZ9mrVV1gNTddcAx+mCGbr+mTFI=
-[histac-avn-s08.globalhealthapp.net]:2208 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJCAQR0lzwEtKWTyVUZAnVxhkO3B94am6nxe2f4n047
-[reports.globalhealthapp.net]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[reports.globalhealthapp.net]:2202 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDG/mSO9Z7+jdk7n7b0LW3uWmQ5lJvJv/m9aIiDMbmX2+tjbNn434XWFLJmigUGKJwWvTZSecZqA3Ww+G/DHz3/ib+RzvVtqLz4HwQqPNo6rFKQzKoD1PZ7jLthmaZhoApKe3zsmyZ92QBxbdsjkY/Ua/saRPTx2abUw+Zj9kj/v989TdxuxFynyQlsY4ecqbZY/alCF6spXmr9T1XBgrJdGhayT/D1vyzQr6IRsg4UiXopO5pVLTnK/KCbq/YucVXw3DLAIlAnn8/UfziUJmNnIVxP7KDLCRjclo2lpbtZW613GnAeWJqtSfKnN4S3qYMxCE9ahFzakr3EdpdRT+NeTOxAGNWiLl3HnCf3VsLI/vwV8aWtTwcMs036f1K4Xcfc+0aQ6AOw+aQSPwkT7Y2jirBpFakb5zr7TB9GBpB9VSCLkgknrXazkysT3P+efdyt7/CchCd3YbymmWlfBjRxPyZVILCp7oaNIsj6wgmO2TbONmptQCawgOUWPtGiSmE=
-[reports.globalhealthapp.net]:2202 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE0Xy+itrE63mbqAMhqC/QTlGWJTxs8ltdLEzoSk+7FIG4QPf+Avm0CHHg8H3y6hDsgDihvDzDlIxy0NvXG05g8=
-[172.19.0.17]:2217 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILWM7opBoJrMayTHyMy8eRogs6IBf1Zh+dWZ7mBiFJ/4
-[dhis-dev.globalhealthapp.net]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[172.19.0.11]:2311 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL3dfvsZx+iuvPyjeKQ1bA8HaAZMs0QxaI4xkL6dNAbb
-[172.19.0.11]:2311 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0cY1VBZ74jcLn2mHEavUCXgbHJDxwU25JRbyTldlliOPabZ/VbktTjV2MYr5wBeA8vbrByuEXOcbqLy1aQL84rTj2UHi7GRBdap0HFxTXDYHjsjZf+6PMF5uoH2BSynDlnO9A5sfWmpjQrqruJjH3W+U7b5vdSiIkIxtiHIHWX/2uEsLybxTOeKnGHw76hvHcaKXA/FjH1CcSl90Rcv90eaE+yP3uAxlnqBsEY6Ure9gchxXAKFHKMwznfvI4Zuin7L6cTKw0V1iEuTMTtUYZC38QiGw7Zw8E6Ip8gvK5wSZkcNQQzW/GS+NxtPXuMbb1taNernva8qt3sZ7QAnlzPNes26KOBrI7ZxJmLnNKclemLK6DxbO6Qc9Z6xnUtuX0gBS+23lI0QU7ip+/IduQcU7oNsVAYVlYGxcEJbbK2XVe2rmwl1q6/dhkOvGh/q9n0hKGLwu60fDHNYJ+7MBMzcOiJuBi1evc/TA+qxG1IIUumhC0oHPp0GyRouebtJk=
-[172.19.0.11]:2311 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDaGYm5lsxHrethdn0BiSSh7ea2zwVdUZaFlyDZAdq56kZoBORba5g9uLVOzElJL0kEHjDzP+EkIHe4HbobBN1Y=
-ozonehis-ozonedocker-zkdn0yhimgv.ssh.ws-eu102.gitpod.io ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEteVPsV9FFNQQJ1C7Ou15WyxMiVGW5fUQ6EDD1QdXDPRSZJDjpIUP22wFtCCMNG5nzkDsrFKcVulF8NtKIIJ9s=
-[172.19.0.17]:2217 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNeaLW/50iPZta7AIrhTMh1m44wE1cqd/JNt9mafO2jJv24i+DqagzTQl5DU93agBzkmAllEcgkCN8hKyuFJiunThxi2heH2Ra4Mx78NVqcr4MgXsErev74b0uGOGfiWBb1JVtah8H2xN8n/XZNV1h5x5zARnyL2c7PbjW2wJ22rm7LFRogkDhJVGDoXmmB9idJTYYKgcFFxqcuE3KfRK8WoIfPBEAFXFvODAVEETKxS7lFPYGsGvQ+a+RWOYuUGt6OcX+W1Jfg8z9rHB454Vv3igrpSuW0ntDpaTP6b3fNIb0lbAXJ2sCie+J1rKbZJjanjMEDcStlN20PukK6bAJGEdP64hGDLkgTs7wJrLusiEJHd8iwvnjJX5Xdtjwxe9IX8oBrhFj/CtWKHPTVT6eGH8F/6lamxM24RPPsk6BzVARehjvypgpS8dbNgAZK+VSFlp9g4e+bqMJdZ4k/a43tt27vdt93ab1jOfhGrx0HZjseg6VPjz1NK2CDr+wR10=
-[172.19.0.17]:2217 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB05z08lXlpc7hKeEo/gtr3OEmSqVNcwpMm76hEYaVncQtFUCCIAy/7ro0PtNuv5+SY4hyKQvQnm/SXXtzrMwOA=
-[172.19.0.16]:2216 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8uZouAI7t0AvhyWiWbmth/oGwUybxP0T3MnWXRc7DE
-[172.19.0.16]:2216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC96U94CgkNLjeY3epfXgVIgpsn13GRH0Xt4JUVDh8EU7j6qWO1WA7BdsLJja03nD7dlbbcWvJ86aZy7UIOP6rHiX5C5ai3KvUWtNteLcY3VjFm8iJwYhjc/2si0v5QR7dPen66eAMb4+XMRPuYOyDl+gxdtTxiapSHPmNrwEH1HMUajNoVHv3Sc3MHkmvKLGSzcJ2XppQcoOnb1LqzzLjXGG/8EfMsRJTSvOGGWv516oJBHHRZi/mlhWB+Cw9qKc6i/SPIho2EnVi1OxR5pn04/LcmOzYFhW/xWuiLFaVPAN9io/c1Lnc1wYTLoj/pV3wtADUdhNIqQG00/GcjOCKjhjoOljrpK/9dPdRjriK6PAXXUL3LSQhgLLMYuNPNw+P96AlKtm8avtjdcK/LHLnWon1kzG77EK/gIuunYXit7g2dQksSO58jgH1mcU9vkn2/BCPW0oIvVVuB+NPtnEXHi6bOLCDdWpR58tFlaUWOQtFnI7ETMseES1VsaA/5QL0=
-[172.19.0.16]:2216 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOCD3ui0jyXn0RMPc1nXFEj+QvqdA0u/oE8SIddKS0gwTZkQh1Do+zdG5qz86oZnR5NzJs4JUWoZZRk7kRoUQFc=
-[reports.globalhealthapp.net]:3222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGSAgFw/vkMoR7QsODIk1Ygiif5fkdSiWiIkdor+JEOg
-[20.172.182.46]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[172.19.0.19]:2319 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMsUKygZW46c4jC3VK9LKnyjQawdGzd06OXDXcYe9kmp
-[172.19.0.19]:2319 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3dmLr4v1gn3XrsQVEjgwfhfGDjySP2ReXd14prNz4ZHVGNuC2LhOPmKPyYaninGociWARR7TXSWf53OoNjmnA232A1Jtoy5ByUAcrNZjdAVg3wxqmbxKHUS4BVXA+h+hq0++Mf23uko+0gHytkK+YQc00b4o44p2evdznPWncfxyHbVsW6aRKjcxFKzSOaWSvResqOqSidYoJkX+ouDelMgMN/5ze8D+qDJrEnLWiaBwHIEOdzSW2WHyryLnFNthH7b4Xc4boUPZb4LUDx70jEFwFARK29e2/ne6pBRxSG9EI3YhM/haEIayJSh5/YgDgXubH5p3W1I2WNeIRBTagOO1vWeHo0QPmAwNUsqw04WT5U+EWbFH2EoYuIrHGjunHId9ZGAXkho23YJUjcK0cjZDx4Ar2E7DC54CjF1TezCuT6u8eFB2MByrIOF/dPmsU2bw0Wpcj/5sQn6bY3rHMlLA0rzRq+aTfaSkwO5GGR1ZYP8CMgUmM2y+Y++zeK08=
-[172.19.0.19]:2319 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDjTnIhRbWWk/1RzlFtBr2UwuC4QVenCRj+/C+W6qqfr62fpo1zNeJ4vouUiCmEX7AAA4RetDnxkDmeDrsVtdKg=
-[172.19.0.3]:2303 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFYaUTZZRIWq0WMmMaLH3hfPWKG0L5qwTi4Lk3wj0+l/
-[172.19.0.3]:2303 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIWWnBV3mQOFdvEyG1/3qBAdLmmUGgcXhpiQd5C+Nz1CZlQksV59c/YVwNGNHCgu5iNYuUgTyYyqCRVFc01smSFRO0sM4W8hZPDEkdpulPKsvsLf3eZT9ZhZXqQVcUEjP7t43l+kh2vggd75+OY3Lyu8ZPD8eoGwKF/nKH5FsFWMG/adQGN01ofaXm5nRcwe0vn0y4D/f5t9dRO8EA1Pp961hJNrCC2FZ+19b2DBfhVA7zgFahOv+gj+MYzhbj7Emx+1nHuDkoJifwHuCYWCEHRg2iy2NpS39ejvEYwsUysWU2koXAU6yci2kkKjJeZACyzlmvTeNamg3hNiJEL37BOwu6h9TSpv4gdJxYlX7ZFH571lByQnjdzPg4cuYggFV8r9RphDd4SnejpqLh9/70Uo8dJB3fkNUmE51g6WFp09gqYZm6MEgMrbuogqNlcdTuudOEZi39a6H1QDOxkGrtYCVMsP0OuKn6/QOtLm1mgFzZ+ZVsXn4EBfN4ZaRvUj8=
-[172.19.0.3]:2303 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL3s91ZsImHa2cE3sqE5HQRzbgVEbeyXc9ucUQDQVX2sQoMw5x8WmF1jhpTpbS2IXLXdc2jCS8E5MB/6v2ABF2o=
diff --git a/.github/workflows/.ssh/known_hosts.old b/.github/workflows/.ssh/known_hosts.old
deleted file mode 100644
index c971a020f..000000000
--- a/.github/workflows/.ssh/known_hosts.old
+++ /dev/null
@@ -1,27 +0,0 @@
-[reports.globalhealthapp.net]:3220 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACgwMS6u0tdPP+q8TKJoJHApgwWVPTN6yxjgNpCt0Uh
-[reports.globalhealthapp.net]:3220 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRz8siwpz3lx7FiH9oqTvc3UU1tG0f1olpN336Ap1yetytAGl5wuWZJSeUrIMNSHd+/jATG2XLjEZy/EHZdaFVJ3M+8XHucGeEq6Zh+IEByIs5DDBe1SGDtI7mUTOouMV+sX2Xc52XLfQp7/iFRqyuiNkzPc56mXumuIJINzVGofoSFlsbESu4FkSrd6Q+TsVmTZ0xSGddJODl/N5RnxW38RZpc5KEJT6joqpMEFPOKt/DMjYVrraGVZoH+m3X7NjbCyh+23To6NXS9W/xqmZTIkkz3ulYSXYy/TDBE0E5p6+Fj78xri4OnVj1kcEWS0s2p/sZlcpNfjUQetXb5SXQq8WsG/pyDzck3z8P3X/i/xzJgZwFa25SnRlBA2Huw/1xYo0F01pP4KN42+aJ6zB0REUgDIYy/3yrzlF0y7BsI2UNdB+i7SEq3ualDvqiH+DXs08AVjKVn0W/bZ9LTWKnfgl4PEsj2eRi4fqy9NoS+5O0oPYVTsay6Hcl4aryyl8=
-[reports.globalhealthapp.net]:3220 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJQ5Ao12jbjd8Id4p1Rtss9hnwwLTuGO6N1uFz+93doBcDS0/gavN3s8zLZKGauXfowBSr3eObcCDlE/crB14gg=
-[reports.globalhealthapp.net]:3221 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOygbQjEgORAFfNfOc3buSNYFUZnw9vy+kdPYIkyKdK6
-[reports.globalhealthapp.net]:3221 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDs9pkqOg1HdUxbHHCvAdtCvdyTNK/EAn4uqaa6VJDmjygzwAqhO4GpW/24QVQCmOm+RJifyu+Ig+C3+V0yQr9xFjyzibV+GmS7kL2qnYLj4IXu26yv5h23ElucZQRwj4VUhoham3qQmJm5u+OMmTov168bmYiYtjYVK1fVY9VoB4nC+a3ked9eGqvz5HfV2awwxW50z7O9rWcTh72iGEcBDZ1vhXpIBGofttKZTG3SlapvXYqDG6f3FQZccJBBqWyZj1CDV+JA/Rw4F9rHuQoGsA5eDIL+Y28J5/MH9GLZY+SEZDLm5t0Zk1geUJ4shZRMrJ8UzYZWzW9zO90rZJMka+v8fKLjBoPQWwEEAVaZRJqD0Iu7j8euoU/bAFtY0YVS10IdSg4QlHZZrib2WL4hNScTfBqoecUKbgJDRVWopMkI5icvkaXOm6CtnpRC9/MJLwegNnnjbFL0lWMmgf2d0aadMj9q+myaunrv9PMhU/fcBKAWEC5fbIDYY+f66DE=
-[reports.globalhealthapp.net]:3221 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJRCJoA018J5IyP6aNhrCnngQVIRRelJAP37LcOwOLrarGCPS+V2k0PhHzWtgZ9mrVV1gNTddcAx+mCGbr+mTFI=
-[histac-avn-s08.globalhealthapp.net]:2208 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJCAQR0lzwEtKWTyVUZAnVxhkO3B94am6nxe2f4n047
-[reports.globalhealthapp.net]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[reports.globalhealthapp.net]:2202 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDG/mSO9Z7+jdk7n7b0LW3uWmQ5lJvJv/m9aIiDMbmX2+tjbNn434XWFLJmigUGKJwWvTZSecZqA3Ww+G/DHz3/ib+RzvVtqLz4HwQqPNo6rFKQzKoD1PZ7jLthmaZhoApKe3zsmyZ92QBxbdsjkY/Ua/saRPTx2abUw+Zj9kj/v989TdxuxFynyQlsY4ecqbZY/alCF6spXmr9T1XBgrJdGhayT/D1vyzQr6IRsg4UiXopO5pVLTnK/KCbq/YucVXw3DLAIlAnn8/UfziUJmNnIVxP7KDLCRjclo2lpbtZW613GnAeWJqtSfKnN4S3qYMxCE9ahFzakr3EdpdRT+NeTOxAGNWiLl3HnCf3VsLI/vwV8aWtTwcMs036f1K4Xcfc+0aQ6AOw+aQSPwkT7Y2jirBpFakb5zr7TB9GBpB9VSCLkgknrXazkysT3P+efdyt7/CchCd3YbymmWlfBjRxPyZVILCp7oaNIsj6wgmO2TbONmptQCawgOUWPtGiSmE=
-[reports.globalhealthapp.net]:2202 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE0Xy+itrE63mbqAMhqC/QTlGWJTxs8ltdLEzoSk+7FIG4QPf+Avm0CHHg8H3y6hDsgDihvDzDlIxy0NvXG05g8=
-[172.19.0.17]:2217 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILWM7opBoJrMayTHyMy8eRogs6IBf1Zh+dWZ7mBiFJ/4
-[dhis-dev.globalhealthapp.net]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[172.19.0.11]:2311 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL3dfvsZx+iuvPyjeKQ1bA8HaAZMs0QxaI4xkL6dNAbb
-[172.19.0.11]:2311 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0cY1VBZ74jcLn2mHEavUCXgbHJDxwU25JRbyTldlliOPabZ/VbktTjV2MYr5wBeA8vbrByuEXOcbqLy1aQL84rTj2UHi7GRBdap0HFxTXDYHjsjZf+6PMF5uoH2BSynDlnO9A5sfWmpjQrqruJjH3W+U7b5vdSiIkIxtiHIHWX/2uEsLybxTOeKnGHw76hvHcaKXA/FjH1CcSl90Rcv90eaE+yP3uAxlnqBsEY6Ure9gchxXAKFHKMwznfvI4Zuin7L6cTKw0V1iEuTMTtUYZC38QiGw7Zw8E6Ip8gvK5wSZkcNQQzW/GS+NxtPXuMbb1taNernva8qt3sZ7QAnlzPNes26KOBrI7ZxJmLnNKclemLK6DxbO6Qc9Z6xnUtuX0gBS+23lI0QU7ip+/IduQcU7oNsVAYVlYGxcEJbbK2XVe2rmwl1q6/dhkOvGh/q9n0hKGLwu60fDHNYJ+7MBMzcOiJuBi1evc/TA+qxG1IIUumhC0oHPp0GyRouebtJk=
-[172.19.0.11]:2311 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDaGYm5lsxHrethdn0BiSSh7ea2zwVdUZaFlyDZAdq56kZoBORba5g9uLVOzElJL0kEHjDzP+EkIHe4HbobBN1Y=
-ozonehis-ozonedocker-zkdn0yhimgv.ssh.ws-eu102.gitpod.io ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEteVPsV9FFNQQJ1C7Ou15WyxMiVGW5fUQ6EDD1QdXDPRSZJDjpIUP22wFtCCMNG5nzkDsrFKcVulF8NtKIIJ9s=
-[172.19.0.17]:2217 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNeaLW/50iPZta7AIrhTMh1m44wE1cqd/JNt9mafO2jJv24i+DqagzTQl5DU93agBzkmAllEcgkCN8hKyuFJiunThxi2heH2Ra4Mx78NVqcr4MgXsErev74b0uGOGfiWBb1JVtah8H2xN8n/XZNV1h5x5zARnyL2c7PbjW2wJ22rm7LFRogkDhJVGDoXmmB9idJTYYKgcFFxqcuE3KfRK8WoIfPBEAFXFvODAVEETKxS7lFPYGsGvQ+a+RWOYuUGt6OcX+W1Jfg8z9rHB454Vv3igrpSuW0ntDpaTP6b3fNIb0lbAXJ2sCie+J1rKbZJjanjMEDcStlN20PukK6bAJGEdP64hGDLkgTs7wJrLusiEJHd8iwvnjJX5Xdtjwxe9IX8oBrhFj/CtWKHPTVT6eGH8F/6lamxM24RPPsk6BzVARehjvypgpS8dbNgAZK+VSFlp9g4e+bqMJdZ4k/a43tt27vdt93ab1jOfhGrx0HZjseg6VPjz1NK2CDr+wR10=
-[172.19.0.17]:2217 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB05z08lXlpc7hKeEo/gtr3OEmSqVNcwpMm76hEYaVncQtFUCCIAy/7ro0PtNuv5+SY4hyKQvQnm/SXXtzrMwOA=
-[172.19.0.16]:2216 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8uZouAI7t0AvhyWiWbmth/oGwUybxP0T3MnWXRc7DE
-[172.19.0.16]:2216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC96U94CgkNLjeY3epfXgVIgpsn13GRH0Xt4JUVDh8EU7j6qWO1WA7BdsLJja03nD7dlbbcWvJ86aZy7UIOP6rHiX5C5ai3KvUWtNteLcY3VjFm8iJwYhjc/2si0v5QR7dPen66eAMb4+XMRPuYOyDl+gxdtTxiapSHPmNrwEH1HMUajNoVHv3Sc3MHkmvKLGSzcJ2XppQcoOnb1LqzzLjXGG/8EfMsRJTSvOGGWv516oJBHHRZi/mlhWB+Cw9qKc6i/SPIho2EnVi1OxR5pn04/LcmOzYFhW/xWuiLFaVPAN9io/c1Lnc1wYTLoj/pV3wtADUdhNIqQG00/GcjOCKjhjoOljrpK/9dPdRjriK6PAXXUL3LSQhgLLMYuNPNw+P96AlKtm8avtjdcK/LHLnWon1kzG77EK/gIuunYXit7g2dQksSO58jgH1mcU9vkn2/BCPW0oIvVVuB+NPtnEXHi6bOLCDdWpR58tFlaUWOQtFnI7ETMseES1VsaA/5QL0=
-[172.19.0.16]:2216 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOCD3ui0jyXn0RMPc1nXFEj+QvqdA0u/oE8SIddKS0gwTZkQh1Do+zdG5qz86oZnR5NzJs4JUWoZZRk7kRoUQFc=
-[reports.globalhealthapp.net]:3222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGSAgFw/vkMoR7QsODIk1Ygiif5fkdSiWiIkdor+JEOg
-[20.172.182.46]:2202 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgN67V7KXlsbtYZmvigm8Wdnrf34OOwgfMAXp8fK1DC
-[172.19.0.19]:2319 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMsUKygZW46c4jC3VK9LKnyjQawdGzd06OXDXcYe9kmp
-[172.19.0.19]:2319 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3dmLr4v1gn3XrsQVEjgwfhfGDjySP2ReXd14prNz4ZHVGNuC2LhOPmKPyYaninGociWARR7TXSWf53OoNjmnA232A1Jtoy5ByUAcrNZjdAVg3wxqmbxKHUS4BVXA+h+hq0++Mf23uko+0gHytkK+YQc00b4o44p2evdznPWncfxyHbVsW6aRKjcxFKzSOaWSvResqOqSidYoJkX+ouDelMgMN/5ze8D+qDJrEnLWiaBwHIEOdzSW2WHyryLnFNthH7b4Xc4boUPZb4LUDx70jEFwFARK29e2/ne6pBRxSG9EI3YhM/haEIayJSh5/YgDgXubH5p3W1I2WNeIRBTagOO1vWeHo0QPmAwNUsqw04WT5U+EWbFH2EoYuIrHGjunHId9ZGAXkho23YJUjcK0cjZDx4Ar2E7DC54CjF1TezCuT6u8eFB2MByrIOF/dPmsU2bw0Wpcj/5sQn6bY3rHMlLA0rzRq+aTfaSkwO5GGR1ZYP8CMgUmM2y+Y++zeK08=
-[172.19.0.19]:2319 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDjTnIhRbWWk/1RzlFtBr2UwuC4QVenCRj+/C+W6qqfr62fpo1zNeJ4vouUiCmEX7AAA4RetDnxkDmeDrsVtdKg=
-[172.19.0.3]:2303 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFYaUTZZRIWq0WMmMaLH3hfPWKG0L5qwTi4Lk3wj0+l/
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 7f1efc5b6..23c3e6d51 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -1,4 +1,4 @@
-name: OHRI CI -
+name: OHRI CI
on:
push:
@@ -128,97 +128,42 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
- docker_devserver_frontend:
- runs-on: ubuntu-latest
- needs: docker_setup
-
- steps:
- - name: Login to Docker Hub
- uses: docker/login-action@v2
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Checkout
- uses: actions/checkout@v3
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v2
- - name: Build and push
- uses: docker/build-push-action@v4
- with:
- context: ./frontend
- file: ./frontend/Dockerfile
- platforms: linux/amd64,linux/arm64
- push: ${{ github.event_name != 'pull_request' }}
- tags: ${{ secrets.DOCKERHUB_USERNAME }}/ohri-dev-frontend:next,${{ secrets.DOCKERHUB_USERNAME }}/ohri-dev-frontend:ci_${{ github.run_number }}
- cache-from: type=inline,ref=user/app:buildcache
- cache-to: type=inline,ref=user/app:buildcache,mode=max
-
- dev_server_status:
- if: github.ref == 'refs/heads/dev'
- runs-on: ubuntu-latest
- needs: docker_staging_backend
+ working:
+ runs-on: ubuntu-latest
- steps:
- - name: Wait for 5 minutos - Let Images reflect on Docker Hub
- run: sleep 300
- - name: Checkout repository
- uses: actions/checkout@v3
+ needs: pre_release
- - name: Copy files to /home/runner/
- run: |
- ls -la -t
- cp -r $GITHUB_WORKSPACE/.ssh/ /home/runner/
+ if: ${{ github.ref == 'refs/heads/working' }}
- - name: List contents of /home/runner/
- run: ls -la /home/runner/
+ steps:
+ # Update the Microfrontends to reflect what we have in the Working branch
+ - uses: garygrossgarten/github-action-ssh@release
+ name: Run the Update MicroFronEnd Script
+ with:
+ command: cd /usr/share/tomcat/microfrontends/working && /bin/bash update_microfrontends.sh
+ host: ${{ secrets.HISTAC_HOST }}
+ username: ${{ secrets.HISTAC_USERNAME }}
+ privateKey: ${{ secrets.HISTAC_KEY}}
+ port: ${{ secrets.HISTAC_PORT }}
- - name: webfactory/ssh-agent
- uses: webfactory/ssh-agent@v0.8.0
- with:
- ssh-private-key: ${{ secrets.LL_SSH_PRIVATE_KEY }}
-
- - name: Check SSH to remote OHRI Dev status
- run: |
- ssh-keygen -R 172.19.0.16
-
- dev_server_connection_dev:
- runs-on: ubuntu-latest
- needs: dev_server_status
- steps:
- - name: SSH to remote OHRI Dev server
- run: |
- ssh -o StrictHostKeyChecking=no -T llemos@172.19.0.16 -p 2216 -J llemos@20.172.182.46 -p 2202
- ls -la -t && \
- cd /opt && \
- ls -la -t
-
- dev_deploy:
+ ohri_dev:
runs-on: ubuntu-latest
- needs: dev_server_status
- if: (github.event_name == 'push' || github.event.pull_request.merged)
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
+ needs: pre_release
- - name: webfactory/ssh-agent
- uses: webfactory/ssh-agent@v0.8.0
+ if: ${{ github.ref == 'refs/heads/dev' }}
+ steps:
+ - name: Download Artifacts
+ uses: actions/download-artifact@v3
+ - name: Compute Timestamp
+ run: echo "TIMESTAMP=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
+ - uses: garygrossgarten/github-action-ssh@release
+ name: Run the Update MicroFronEnd Script
with:
- ssh-private-key: ${{ secrets.LL_SSH_PRIVATE_KEY }}
+ command: cd /usr/share/tomcat/microfrontends/dev && /bin/bash update_microfrontends.sh
+ host: ${{ secrets.HISTAC_HOST }}
+ username: ${{ secrets.HISTAC_USERNAME }}
+ privateKey: ${{ secrets.HISTAC_KEY}}
- - name: SSH to remote OHRI Dev server via jump host
- run: |
- ssh -p 2216 \
- -o "UserKnownHostsFile=/dev/null" \
- -o "StrictHostKeyChecking=no" \
- -o "ProxyCommand=ssh -o StrictHostKeyChecking=no -W %h:%p llemos@20.172.182.46 -p 2202" \
- llemos@172.19.0.16 "\
- cd /opt && \
- docker compose -f docker-compose-ohri-dev.yml pull && \
- docker compose -f docker-compose-ohri-dev.yml stop && \
- docker compose -f docker-compose-ohri-dev.yml up -d"
-
\ No newline at end of file
+ port: ${{ secrets.HISTAC_PORT }}
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
deleted file mode 100644
index be3a64f87..000000000
--- a/frontend/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-# syntax=docker/dockerfile:1.3
-FROM --platform=$BUILDPLATFORM node:18-alpine as dev
-
-ARG APP_SHELL_VERSION=next
-
-RUN mkdir -p /app
-WORKDIR /app
-
-COPY spa-build-config.json .
-
-ARG CACHE_BUST
-RUN npx --legacy-peer-deps openmrs@${APP_SHELL_VERSION:-next} assemble --manifest --mode config --config spa-build-config.json --target ./spa
-RUN npx --legacy-peer-deps openmrs@${APP_SHELL_VERSION:-next} build --build-config spa-build-config.json --target ./spa
-COPY ohri-config.json ./spa/ohri-config.json
-COPY ohri_logo_dark.svg ./spa/ohri_logo_dark.svg
-COPY ohri_logo_light.svg ./spa/ohri_logo_light.svg
-
-FROM nginx:1.23-alpine
-
-RUN apk update && \
- apk upgrade && \
- # add more utils for sponge to support our startup script
- apk add --no-cache moreutils
-
-# clear any default files installed by nginx
-RUN rm -rf /usr/share/nginx/html/*
-
-COPY startup.sh /usr/local/bin/startup.sh
-RUN chmod +x /usr/local/bin/startup.sh
-
-COPY nginx.conf /etc/nginx/nginx.conf
-
-COPY --from=dev /app/spa /usr/share/nginx/html
-
-CMD ["/usr/local/bin/startup.sh"]
diff --git a/frontend/nginx.conf b/frontend/nginx.conf
deleted file mode 100644
index 6d696b310..000000000
--- a/frontend/nginx.conf
+++ /dev/null
@@ -1,47 +0,0 @@
-worker_processes 1;
-user nobody;
-
-events {
- worker_connections 1024;
- multi_accept off;
-}
-
-http {
- include mime.types;
- default_type application/octet-stream;
- tcp_nopush on;
- tcp_nodelay on;
- sendfile on;
-
- keepalive_timeout 65;
-
- server {
- listen 80;
- root /usr/share/nginx/html;
- index index.html;
-
- # redirect to home
- location = / {
- return 301 /home;
- }
-
- # never cache the importmap
- location ~* importmap\.json$ {
- expires -1d;
- try_files $uri =404;
- }
-
- # handle anything with a "." that's not an HTML
- # assume it's a static file
- location ~* \.(?!html?)[^.]+$ {
- expires 6M;
- try_files $uri =404;
- }
-
- # any other URL should serve the single page
- location / {
- expires -1d;
- try_files /index.html =404;
- }
- }
- }
diff --git a/frontend/ohri-config.json b/frontend/ohri-config.json
deleted file mode 100644
index 171420105..000000000
--- a/frontend/ohri-config.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "@openmrs/esm-patient-chart-app": {
- "extensionSlots": {
- "patient-chart-dashboard-slot": {
- "remove": [
- "test-results-summary-dashboard",
- "conditions-summary-dashboard",
- "results-summary-dashboard",
- "programs-summary-dashboard",
- "allergies-summary-dashboard",
- "attachments-results-summary-dashboard",
- "drug-orders-summary-dashboard"
- ]
- },
- "action-menu-chart-items-slot": {
- "remove": [
- "visit-note-nav-button",
- "clinical-form-action-menu"
- ]
- }
- },
- "notesConceptUuids": ["161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "437d1e25-e7ab-481c-aabc-01f21c6cdef1"],
- "logo": {
- "src": "ohri_logo_dark.svg"
- }
- },
- "@openmrs/esm-patient-banner-app": {
- "extensionSlots": {
- "patient-actions-slot": {
- "remove": [
- "add-patient-to-patient-list-button",
- "start-visit-button",
- "stop-visit-button",
- "cancel-visit-button",
- "add-past-visit-button"
- ]
- }
- }
- },
- "@ohri/openmrs-esm-ohri-core-app": {
- "extensionSlots": {
- "ohri-dashboard-appointments-slot": {
- "add": [
- "clinical-appointments-dashboard"
- ]
- },
- "ohri-dashboard-dispensing-slot": {
- "add": [
- "dispensing-dashboard"
- ]
- }
- }
- },
- "@openmrs/esm-styleguide": {
- "Brand color #1": "#1A3054",
- "Brand color #2": "#131E35",
- "Brand color #3": "#0078A6"
- },
- "@openmrs/esm-primary-navigation-app": {
- "extensionSlots": {
- "app-menu-slot": {
- "remove": [
- "dispensing-link"
- ]
- }
- },
- "logo": {
- "src": "ohri_logo_dark.svg"
- }
- },
- "@openmrs/esm-dispensing-app": {
- "appName": "Dispensing"
- },
- "@openmrs/esm-login-app": {
- "logo": {
- "src": "ohri_logo_light.svg"
- }
- },
- "@ohri/openmrs-esm-ohri-pmtct": {
- "identifiers": {
- "preferredIdentifierSource": "8549f706-7e85-4c1d-9424-217d50a2988b"
- },
- "encounterTypes": {
- "antenatal": "677d1a80-dbbe-4399-be34-aa7f54f11405",
- "laborAndDelivery": "6dc5308d-27c9-4d49-b16f-2c5e3c759757",
- "infantPostnatal": "af1f1b24-d2e8-4282-b308-0bf79b365584",
- "motherPostnatal": "269bcc7f-04f8-4ddc-883d-7a3a0d569aad"
- }
- }
-}
diff --git a/frontend/ohri_logo_dark.svg b/frontend/ohri_logo_dark.svg
deleted file mode 100644
index c079de75a..000000000
--- a/frontend/ohri_logo_dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/ohri_logo_light.svg b/frontend/ohri_logo_light.svg
deleted file mode 100644
index 462b6c665..000000000
--- a/frontend/ohri_logo_light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/spa-build-config.json b/frontend/spa-build-config.json
deleted file mode 100644
index 187d166ad..000000000
--- a/frontend/spa-build-config.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "frontendModules": {
- "@ohri/openmrs-esm-ohri-cervical-cancer-app": "next",
- "@ohri/openmrs-esm-ohri-core-app": "next",
- "@ohri/openmrs-esm-ohri-covid-app": "next",
- "@ohri/openmrs-esm-ohri-form-render-app": "next",
- "@ohri/openmrs-esm-ohri-hiv-app": "next",
- "@ohri/openmrs-esm-ohri-pmtct": "next",
- "@openmrs/esm-appointments-app": "next",
- "@openmrs/esm-dispensing-app": "next",
- "@openmrs/esm-form-builder-app": "next",
- "@openmrs/esm-home-app": "next",
- "@openmrs/esm-implementer-tools-app": "next",
- "@openmrs/esm-login-app": "next",
- "@openmrs/esm-outpatient-app": "next",
- "@openmrs/esm-patient-allergies-app": "next",
- "@openmrs/esm-patient-appointments-app": "next",
- "@openmrs/esm-patient-attachments-app": "next",
- "@openmrs/esm-patient-banner-app": "next",
- "@openmrs/esm-patient-biometrics-app": "next",
- "@openmrs/esm-patient-chart-app": "next",
- "@openmrs/esm-patient-conditions-app": "next",
- "@openmrs/esm-patient-forms-app": "next",
- "@openmrs/esm-patient-immunizations-app": "next",
- "@openmrs/esm-patient-list-app": "next",
- "@openmrs/esm-patient-medications-app": "next",
- "@openmrs/esm-patient-notes-app": "next",
- "@openmrs/esm-patient-programs-app": "next",
- "@openmrs/esm-patient-search-app": "next",
- "@openmrs/esm-patient-test-results-app": "next",
- "@openmrs/esm-patient-vitals-app": "next",
- "@openmrs/esm-primary-navigation-app": "next",
- "@openmrs/esm-patient-registration-app": "next",
- "@openmrs/esm-devtools-app": "next"
- },
- "spaPath": "$SPA_PATH",
- "apiUrl": "$API_URL",
- "configUrls": ["$SPA_CONFIG_URLS"],
- "importmap": "$SPA_PATH/importmap.json"
-}
diff --git a/frontend/startup.sh b/frontend/startup.sh
deleted file mode 100644
index 8785011f0..000000000
--- a/frontend/startup.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-set -e
-
-# if we are using the $IMPORTMAP_URL environment variable, we have to make this useful,
-# so we change "importmap.json" into "$IMPORTMAP_URL" allowing it to be changed by envsubst
-if [ -n "${IMPORTMAP_URL}" ]; then
- if [ -n "$SPA_PATH" ]; then
- [ -f "/usr/share/nginx/html/index.html" ] && \
- sed -i -e 's/\("|''\)$SPA_PATH\/importmap.json\("|''\)/\1$IMPORTMAP_URL\1/g' "/usr/share/nginx/html/index.html"
-
- [ -f "/usr/share/nginx/html/service-worker.js" ] && \
- sed -i -e 's/\("|''\)$SPA_PATH\/importmap.json\("|''\)/\1$IMPORTMAP_URL\1/g' "/usr/share/nginx/html/service-worker.js"
- else
- [ -f "/usr/share/nginx/html/index.html" ] && \
- sed -i -e 's/\("|''\)importmap.json\("|''\)/\1$IMPORTMAP_URL\1/g' "/usr/share/nginx/html/index.html"
-
- [ -f "/usr/share/nginx/html/service-worker.js" ] && \
- sed -i -e 's/\("|''\)importmap.json\("|''\)/\1$IMPORTMAP_URL\1/g' "/usr/share/nginx/html/service-worker.js"
- fi
-fi
-
-# setting the config urls to "" causes an error reported in the console, so if we aren't using
-# the SPA_CONFIG_URLS, we remove it from the source, leaving config urls as []
-if [ -z "$SPA_CONFIG_URLS" ]; then
- sed -i -e 's/"$SPA_CONFIG_URLS"//' "/usr/share/nginx/html/index.html"
-# otherwise convert the URLs into a Javascript list
-# we support two formats, a comma-separated list or a space separated list
-else
- old_IFS="$IFS"
- if echo "$SPA_CONFIG_URLS" | grep , >/dev/null; then
- IFS=","
- fi
-
- CONFIG_URLS=
- for url in $SPA_CONFIG_URLS;
- do
- if [ -z "$CONFIG_URLS" ]; then
- CONFIG_URLS="\"${url}\""
- else
- CONFIG_URLS="$CONFIG_URLS,\"${url}\""
- fi
- done
-
- IFS="$old_IFS"
- export SPA_CONFIG_URLS=$CONFIG_URLS
- sed -i -e 's/"$SPA_CONFIG_URLS"/$SPA_CONFIG_URLS/' "/usr/share/nginx/html/index.html"
-fi
-
-# Substitute environment variables in the html file
-# This allows us to override parts of the compiled file at runtime
-if [ -f "/usr/share/nginx/html/index.html" ]; then
- envsubst '${IMPORTMAP_URL} ${SPA_PATH} ${API_URL} ${SPA_CONFIG_URLS}' < "/usr/share/nginx/html/index.html" | sponge "/usr/share/nginx/html/index.html"
-fi
-
-if [ -f "/usr/share/nginx/html/service-worker.js" ]; then
- envsubst '${IMPORTMAP_URL} ${SPA_PATH} ${API_URL}' < "/usr/share/nginx/html/service-worker.js" | sponge "/usr/share/nginx/html/service-worker.js"
-fi
-
-exec nginx -g "daemon off;"
diff --git a/package.json b/package.json
index 81a22eb1b..c65bec464 100644
--- a/package.json
+++ b/package.json
@@ -89,7 +89,7 @@
"systemjs-webpack-interop": "^2.3.7",
"turbo": "^1.5.5",
"typescript": "^4.6.3",
- "webpack": "^5.88.2",
+ "webpack": "^5.74.0",
"webpack-bundle-analyzer": "^4.4.0",
"webpack-cli": "^4.9.2",
"webpack-dev-server": "^4.8.1"
diff --git a/yarn.lock b/yarn.lock
index f8fcc9aed..09e241871 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3799,7 +3799,7 @@ __metadata:
systemjs-webpack-interop: ^2.3.7
turbo: ^1.5.5
typescript: ^4.6.3
- webpack: ^5.88.2
+ webpack: ^5.74.0
webpack-bundle-analyzer: ^4.4.0
webpack-cli: ^4.9.2
webpack-dev-server: ^4.8.1
@@ -9593,6 +9593,13 @@ __metadata:
languageName: node
linkType: hard
+"decode-uri-component@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "decode-uri-component@npm:0.2.0"
+ checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94
+ languageName: node
+ linkType: hard
+
"dedent@npm:^0.7.0":
version: 0.7.0
resolution: "dedent@npm:0.7.0"
@@ -10998,6 +11005,13 @@ __metadata:
languageName: node
linkType: hard
+"filter-obj@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "filter-obj@npm:1.1.0"
+ checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10
+ languageName: node
+ linkType: hard
+
"finalhandler@npm:1.2.0":
version: 1.2.0
resolution: "finalhandler@npm:1.2.0"
@@ -11530,7 +11544,7 @@ __metadata:
resolution: "git-up@npm:4.0.5"
dependencies:
is-ssh: ^1.3.0
- parse-url: ^8.1.0
+ parse-url: ^6.0.0
checksum: dd8f39a115ec0523b7da369cd4c6dc94a9b11fcc652e6fc9d011a93c287e27cc34e1d1c89cff8864f9ab11a1b2bea49786951d8eb3f1e5babd351afcc63f6135
languageName: node
linkType: hard
@@ -15590,7 +15604,7 @@ __metadata:
languageName: node
linkType: hard
-"normalize-url@npm:^6.0.1":
+"normalize-url@npm:^6.0.1, normalize-url@npm:^6.1.0":
version: 6.1.0
resolution: "normalize-url@npm:6.1.0"
checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50
@@ -16412,21 +16426,27 @@ __metadata:
languageName: node
linkType: hard
-"parse-path@npm:^7.0.0":
- version: 7.0.0
- resolution: "parse-path@npm:7.0.0"
+"parse-path@npm:^4.0.0":
+ version: 4.0.4
+ resolution: "parse-path@npm:4.0.4"
dependencies:
- protocols: ^2.0.0
- checksum: 244b46523a58181d251dda9b888efde35d8afb957436598d948852f416d8c76ddb4f2010f9fc94218b4be3e5c0f716aa0d2026194a781e3b8981924142009302
+ is-ssh: ^1.3.0
+ protocols: ^1.4.0
+ qs: ^6.9.4
+ query-string: ^6.13.8
+ checksum: 909e628c35baebeb3bdcaa376e2c5a21632a9094079ac55e04b3311db28219b15e517e10987dd49a13a904f2605b747b6368b0092130e0f2ff9bc5ffc40ceb63
languageName: node
linkType: hard
-"parse-url@npm:^8.1.0":
- version: 8.1.0
- resolution: "parse-url@npm:8.1.0"
+"parse-url@npm:^6.0.0":
+ version: 6.0.5
+ resolution: "parse-url@npm:6.0.5"
dependencies:
- parse-path: ^7.0.0
- checksum: b93e21ab4c93c7d7317df23507b41be7697694d4c94f49ed5c8d6288b01cba328fcef5ba388e147948eac20453dee0df9a67ab2012415189fff85973bdffe8d9
+ is-ssh: ^1.3.0
+ normalize-url: ^6.1.0
+ parse-path: ^4.0.0
+ protocols: ^1.4.0
+ checksum: b583800f63a8a293c5d53ee6b28b99293c742791fba4f14c1b829547a78bad93500fe0d448f8d8e2087a3c4d39deab236ed3837830ea522272e8c5852f21d223
languageName: node
linkType: hard
@@ -17329,7 +17349,14 @@ __metadata:
languageName: node
linkType: hard
-"protocols@npm:^2.0.0, protocols@npm:^2.0.1":
+"protocols@npm:^1.4.0":
+ version: 1.4.8
+ resolution: "protocols@npm:1.4.8"
+ checksum: 2d555c013df0b05402970f67f7207c9955a92b1d13ffa503c814b5fe2f6dde7ac6a03320e0975c1f5832b0113327865e0b3b28bfcad023c25ddb54b53fab8684
+ languageName: node
+ linkType: hard
+
+"protocols@npm:^2.0.1":
version: 2.0.1
resolution: "protocols@npm:2.0.1"
checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4
@@ -17398,7 +17425,7 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:6.11.0":
+"qs@npm:6.11.0, qs@npm:^6.9.4":
version: 6.11.0
resolution: "qs@npm:6.11.0"
dependencies:
@@ -17414,6 +17441,18 @@ __metadata:
languageName: node
linkType: hard
+"query-string@npm:^6.13.8":
+ version: 6.14.1
+ resolution: "query-string@npm:6.14.1"
+ dependencies:
+ decode-uri-component: ^0.2.0
+ filter-obj: ^1.1.0
+ split-on-first: ^1.0.0
+ strict-uri-encode: ^2.0.0
+ checksum: f2c7347578fa0f3fd4eaace506470cb4e9dc52d409a7ddbd613f614b9a594d750877e193b5d5e843c7477b3b295b857ec328903c943957adc41a3efb6c929449
+ languageName: node
+ linkType: hard
+
"querystringify@npm:^2.1.1":
version: 2.2.0
resolution: "querystringify@npm:2.2.0"
@@ -19058,6 +19097,13 @@ __metadata:
languageName: node
linkType: hard
+"split-on-first@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "split-on-first@npm:1.1.0"
+ checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30
+ languageName: node
+ linkType: hard
+
"split2@npm:^3.0.0":
version: 3.2.2
resolution: "split2@npm:3.2.2"
@@ -19175,6 +19221,13 @@ __metadata:
languageName: node
linkType: hard
+"strict-uri-encode@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "strict-uri-encode@npm:2.0.0"
+ checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581
+ languageName: node
+ linkType: hard
+
"string-length@npm:^4.0.1":
version: 4.0.2
resolution: "string-length@npm:4.0.2"
@@ -19352,7 +19405,7 @@ __metadata:
resolution: "strong-log-transformer@npm:2.1.0"
dependencies:
duplexer: ^0.1.1
- minimist: ^1.2.5
+ minimist: ^1.2.0
through: ^2.3.4
bin:
sl-log-transformer: bin/sl-log-transformer.js
@@ -21159,43 +21212,6 @@ __metadata:
languageName: node
linkType: hard
-"webpack@npm:^5.88.2":
- version: 5.88.2
- resolution: "webpack@npm:5.88.2"
- dependencies:
- "@types/eslint-scope": ^3.7.3
- "@types/estree": ^1.0.0
- "@webassemblyjs/ast": ^1.11.5
- "@webassemblyjs/wasm-edit": ^1.11.5
- "@webassemblyjs/wasm-parser": ^1.11.5
- acorn: ^8.7.1
- acorn-import-assertions: ^1.9.0
- browserslist: ^4.14.5
- chrome-trace-event: ^1.0.2
- enhanced-resolve: ^5.15.0
- es-module-lexer: ^1.2.1
- eslint-scope: 5.1.1
- events: ^3.2.0
- glob-to-regexp: ^0.4.1
- graceful-fs: ^4.2.9
- json-parse-even-better-errors: ^2.3.1
- loader-runner: ^4.2.0
- mime-types: ^2.1.27
- neo-async: ^2.6.2
- schema-utils: ^3.2.0
- tapable: ^2.1.1
- terser-webpack-plugin: ^5.3.7
- watchpack: ^2.4.0
- webpack-sources: ^3.2.3
- peerDependenciesMeta:
- webpack-cli:
- optional: true
- bin:
- webpack: bin/webpack.js
- checksum: 79476a782da31a21f6dd38fbbd06b68da93baf6a62f0d08ca99222367f3b8668f5a1f2086b7bb78e23172e31fa6df6fa7ab09b25e827866c4fc4dc2b30443ce2
- languageName: node
- linkType: hard
-
"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4":
version: 0.7.4
resolution: "websocket-driver@npm:0.7.4"