diff --git a/index.9b3bf005.js b/index.b604d38a.js similarity index 97% rename from index.9b3bf005.js rename to index.b604d38a.js index b9f0abb..4a7572c 100644 --- a/index.9b3bf005.js +++ b/index.b604d38a.js @@ -34,4 +34,4 @@ var r,i,l,a,o,u,s,c,f,d,p,h,m,g,v,y,b,x,w,k,T,E,S,C;if(e(t.exports,"unstable_now * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -var r,i,a;e(t.exports,"Fragment",(()=>r),(e=>r=e)),e(t.exports,"jsx",(()=>i),(e=>i=e)),e(t.exports,"jsxs",(()=>a),(e=>a=e));var o=l("fYo6y"),u=60103;if(r=60107,"function"==typeof Symbol&&Symbol.for){var s=Symbol.for;u=s("react.element"),r=s("react.fragment")}var c=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,f=Object.prototype.hasOwnProperty,d={key:!0,ref:!0,__self:!0,__source:!0};function p(e,t,n){var r,i={},l=null,a=null;for(r in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(a=t.ref),t)f.call(t,r)&&!d.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:u,type:e,key:l,ref:a,props:i,_owner:c.current}}i=p,a=p})),l.register("exEpv",(function(e,t){var n=l("cw87W");function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,r,i,l,a){if(a!==n){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var l={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return l.PropTypes=l,l}})),l.register("cw87W",(function(e,t){e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}));var a,o=l("fYo6y");!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),a=l("gAtBI");var u;u=l("cjuLU"),l("fYo6y");var s;o=l("fYo6y");s=l("exEpv")(),l("fYo6y"),l("fYo6y");const c=({serviceName:e,serviceUrl:t,statusMessage:n,statusIcon:r,serviceStatus:i})=>(0,u.jsxs)("div",{className:`status-item ${i}`,children:[(0,u.jsx)("div",{className:"status-icon",dangerouslySetInnerHTML:{__html:r}}),(0,u.jsxs)("div",{className:"status-text",children:[(0,u.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:(0,u.jsx)("h3",{className:"service-name",children:e})}),(0,u.jsx)("p",{className:"status-message",children:n})]})]});c.propTypes={serviceStatus:t(s).string.isRequired,serviceName:t(s).string.isRequired,statusMessage:t(s).string.isRequired,statusIcon:t(s).string,serviceUrl:t(s).string},c.defaultProps={serviceUrl:null,statusIcon:""};var f=c;const d={sites:{heading:"Organization and Group Websites",services:{adhoOrg:{displayName:"adho.org",endpointUrl:"https://adho.org/",serviceUrl:"https://adho.org/",test:"testResponseForText",matchText:"Alliance of Digital Humanities Organizations – A Global Coalition of Digital Humanities Organizations"},eadhOrg:{displayName:"eadh.org",endpointUrl:"https://eadh.org/",serviceUrl:"https://eadh.org/",serviceIcon:"",test:"testResponseForText",matchText:"EADH - The European Association for Digital Humanities |"},digHumDe:{displayName:"dig-hum.de",endpointUrl:"https://dig-hum.de/",serviceUrl:"https://dig-hum.de/",serviceIcon:"",test:"testResponseForText",matchText:"digital humanities im deutschsprachigen raum"},humanities:{displayName:"4humanities.org",endpointUrl:"https://4humanities.org",serviceUrl:"https://4humanities.org",serviceIcon:"",test:"testResponseForText",matchText:"4Humanities | Advocating for the Humanities"},cle:{displayName:"cle.world",endpointUrl:"https://cle.world",serviceUrl:"https://cle.world",serviceIcon:"",test:"testResponseForText",matchText:"Cultural Literacy Everywhere"},czadh:{displayName:"www.czadh.cz",endpointUrl:"https://www.czadh.cz",serviceUrl:"https://www.czadh.cz",serviceIcon:"",test:"testResponseForText",matchText:"CzADH █ – Česká asociace pro digitální humanitní vědy"},dhcenternet:{displayName:"dhcenternet.org",endpointUrl:"https://dhcenternet.org/",serviceUrl:"https://dhcenternet.org/",serviceIcon:"",test:"testResponseForText",matchText:"centerNet | An international network of digital humanities centers"},membersAchOrg:{displayName:"members.ach.org",endpointUrl:"https://members.ach.org",serviceUrl:"https://members.ach.org",serviceIcon:"",test:"testResponseForText",matchText:"ACH Membership"},geohumanities:{displayName:"geohumanities.org",endpointUrl:"https://geohumanities.org",serviceUrl:"https://geohumanities.org",serviceIcon:"",test:"testResponseForText",matchText:"GeoHumanities SIG – A Special Interest Group of the ADHO"}}},dhq:{heading:"Digital Humanities Quarterly",services:{dhqWebsite:{displayName:"DHQ Website",endpointUrl:"https://digitalhumanities.org/dhq/",serviceUrl:"https://digitalhumanities.org/dhq/",serviceIcon:"",test:"testResponseForText",matchText:''},dhqWiki:{displayName:"DHQ Wiki",endpointUrl:"https://dhq.wikis.adho.org/index.php?title=Main_Page",serviceUrl:"https://dhq.wikis.adho.org/",serviceIcon:"",test:"testResponseForText",matchText:''},dhqStatic:{displayName:"DHQ File Storage",endpointUrl:"https://dhq-static.digitalhumanities.org/",serviceUrl:"https://dhq-static.digitalhumanities.org/",serviceIcon:"",test:"testResponseForText",matchText:"ADHO :: DHQ Static"}}},digitalHumanitiesDotOrg:{heading:"digitalhumanities.org",services:{companion:{displayName:"A Companion to Digital Humanities",endpointUrl:"https://companions.digitalhumanities.org/DH/",serviceUrl:"https://companions.digitalhumanities.org/DH/",serviceIcon:"",test:"testResponseForText",matchText:"A Companion to Digital Humanities"},companionDLS:{displayName:"A Companion to Digital Literary Studies",endpointUrl:"https://companions.digitalhumanities.org/DLS/",serviceUrl:"https://companions.digitalhumanities.org/DLS/",serviceIcon:"",test:"testResponseForText",matchText:"A Companion to Digital Literary Studies"},dhAbstracts:{displayName:"Digital Humanities Abstracts (1996-2003)",endpointUrl:"https://digitalhumanities.org/dh-abstracts/search",serviceUrl:"https://digitalhumanities.org/dh-abstracts/search",serviceIcon:"",test:"testResponseForText",matchText:"Digital Humanities Abstracts: Search Form"}}},dhConferences:{heading:"ADHO Conference Sites",services:{dh2024:{displayName:"DH2024 Conference Site",endpointUrl:"https://dh2024.adho.org/",serviceUrl:"https://dh2024.adho.org/",test:"testResponseForText",matchText:"DH2024 – Reinvention & Responsibility"},dh2024convalidator:{displayName:"DH2024 DH Convalidator",endpointUrl:"https://dhconvalidator.dh2024.adho.org/",serviceUrl:"https://dhconvalidator.dh2024.adho.org/",test:"testResponseCode200"},dh2023:{displayName:"DH2023 Conference Site",endpointUrl:"https://dh2023.adho.org/",serviceUrl:"https://dh2023.adho.org/",test:"testResponseForText",matchText:"July 10-14 2023, Graz | Austria – DH 2023, July 10-14 2023, Graz | Austria"},dh2021:{displayName:"DH2021 Conference Site",endpointUrl:"https://dh2021.adho.org/",serviceUrl:"https://dh2021.adho.org/",test:"testResponseForText",matchText:"Digital Humanities 2021"},dh2020:{displayName:"DH2020 Conference Site",endpointUrl:"https://dh2020.adho.org/",serviceUrl:"https://dh2020.adho.org/",test:"testResponseForText",matchText:"DH2020"},dh2018:{displayName:"DH2018 Conference Site",endpointUrl:"https://dh2018.adho.org/",serviceUrl:"https://dh2018.adho.org/",test:"testResponseForText",matchText:"DH 2018 – Ciudad de México"},dh2017:{displayName:"DH2017 Conference Site",endpointUrl:"https://dh2017.adho.org/",serviceUrl:"https://dh2017.adho.org/",test:"testResponseForText",matchText:"Digital Humanities 2017 – Montreal, Canada, August 8-11, 2017"}}},dhdConferences:{heading:"DHd Conference Sites",services:{dhd2025:{displayName:"DHd 2025 Conference Site",endpointUrl:"https://dhd2025.dig-hum.de/wp-login.php",serviceUrl:"https://dhd2025.dig-hum.de/wp-login.php",test:"testResponseForText",matchText:'
'},dhd2024:{displayName:"DHd 2024 Conference Site",endpointUrl:"https://dhd2024.dig-hum.de/wp-login.php",serviceUrl:"https://dhd2024.dig-hum.de/wp-login.php",test:"testResponseForText",matchText:''},dhd2024convalidator:{displayName:"DHd 2024 DH Convalidator",endpointUrl:"https://dhconvalidator.dhd2024.dig-hum.de/",serviceUrl:"https://dhconvalidator.dhd2024.dig-hum.de/",test:"testResponseCode200"},dhd2023:{displayName:"DHd 2023 Conference Site",endpointUrl:"https://dhd2023.dig-hum.de/",serviceUrl:"https://dhd2023.dig-hum.de/",test:"testResponseForText",matchText:''},dhd2022:{displayName:"DHd 2022 Conference Site",endpointUrl:"https://dhd2022.dig-hum.de/",serviceUrl:"https://dhd2022.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2022 | Digital Humanities im deutschsprachigen Raum"},dhd2020:{displayName:"DHd 2020 Conference Site",endpointUrl:"https://dhd2020.dig-hum.de/",serviceUrl:"https://dhd2020.dig-hum.de/",test:"testResponseForText",matchText:"DHd2020 - Spielräume | Paderborn, 02.-06.03.2020"},dhd2019:{displayName:"DHd 2019 Conference Site",endpointUrl:"https://dhd2019.dig-hum.de/",serviceUrl:"https://dhd2019.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2019 - multimedial & multimodal"},dhd2017:{displayName:"DHd 2017 Conference Site",endpointUrl:"https://dhd2017.dig-hum.de/",serviceUrl:"https://dhd2017.dig-hum.de/",test:"testResponseForText",matchText:'DHd 2017'},dhd2016:{displayName:"DHd 2016 Conference Site",endpointUrl:"https://dhd2016.dig-hum.de/",serviceUrl:"https://dhd2016.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2016 | DHd 2016"}}},mailListAdminPages:{heading:"Mailing List Archives & Admin UIs",services:{listsDigitalhumanitiesOrg:{displayName:"lists.digitalhumanities.org",endpointUrl:"https://lists.digitalhumanities.org/mailman/",serviceUrl:"https://lists.digitalhumanities.org/mailman/",test:"testResponseForText",matchText:"\nList Index - lists.digitalhumanities.org\n"},listsTeiCOrg:{displayName:"lists.tei-c.org",endpointUrl:"https://lists.tei-c.org/mailman/",serviceUrl:"https://lists.tei-c.org/mailman/",test:"testResponseForText",matchText:"\nList Index - lists.tei-c.org\n"}}},adhoInfra:{heading:"ADHO Internal Infrastructure",services:{nextcloud:{displayName:"ADHO NextCloud",endpointUrl:"https://nextcloud.adho.org/status.php",serviceUrl:"https://nextcloud.adho.org/",test:"testResponseForText",matchText:'"installed":true,"maintenance":false,"needsDbUpgrade":false'},umami:{displayName:"Umami Analytics",endpointUrl:"https://umami.adho.org/",serviceUrl:"https://umami.adho.org/",test:"testResponseForText",matchText:"Umami"},listmonk:{displayName:"listmonk Newsletter Management",endpointUrl:"https://listmonk.adho.org/",serviceUrl:"https://listmonk.adho.org/",test:"testResponseForText",matchText:"listmonk"},mainwp:{displayName:"MainWP",endpointUrl:"https://mainwp.adho.org/",serviceUrl:"https://mainwp.adho.org/",test:"testResponseForText",matchText:"Log In ‹ MainWP — WordPress"},sftpgo:{displayName:"ADHO SFTP Server",endpointUrl:"https://sftp.adho.org/",serviceUrl:"https://sftp.adho.org/",test:"testResponseForText",matchText:''}}}},p={pending:{message:"Checking status..."},up:{icon:'\n \n \n \n ',message:"No detected issues"},maintenance:{icon:'\n \n \n \n \n \n \n \n \n \n \n \n ',message:"Temporarily unavailable for maintenance"},issue:{icon:'\n \n \n \n ',message:"There may be an issue with this site"},fail:{icon:'\n \n \n \n \n ',message:"Site unavailable"},outage:{icon:'\n \n \n \n ',message:"Service is down"}},h=({services:e,serviceStatuses:t})=>(0,u.jsx)("div",{className:"services",children:Object.entries(e).map((([e,n])=>{const r=t[e],i=p[r];return(0,u.jsx)(f,{serviceName:n.displayName,serviceUrl:n.serviceUrl,serviceIcon:n.serviceIcon,serviceStatus:r,statusMessage:i.message,statusIcon:i.icon},e)}))});h.propTypes={services:t(s).object.isRequired,serviceStatuses:t(s).object.isRequired};var m=h,g={};function v(e){return Promise.resolve(200===e.status?"up":"issue")}function y(e,t){return e.text().then((e=>-1!==e.indexOf(t.matchText)?"up":"issue")).catch((()=>"issue"))}function b(e,t){return e.text().then((e=>t.regex.test(e)?"up":"issue")).catch((()=>"issue"))}function x(e){return e.text().then((e=>e.split("\n").pop().match(/^all health checks successful/i)?"up":"outage")).catch((()=>"outage"))}e(g,"testResponseCode200",(()=>v)),e(g,"testResponseForText",(()=>y)),e(g,"testResponseAgainstRegex",(()=>b)),e(g,"testDrupalHealthCheck",(()=>x));const w=({heading:e,services:n})=>{const[r,i]=(0,o.useState)(Object.fromEntries(Object.keys(n).map((e=>[e,"pending"]))));return t(o).useEffect((()=>{Object.keys(n).forEach((e=>{fetch(n[e].endpointUrl,{mode:"cors"}).then((t=>{503!==t.status?200===t.status?g[n[e].test](t.clone(),n[e]).then((t=>{i((n=>({...n,[e]:t})))})):i((t=>({...t,[e]:"fail"}))):i((t=>({...t,[e]:"maintenance"})))})).catch((()=>{i((t=>({...t,[e]:"fail"})))}))}))}),[n]),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("h3",{children:e}),(0,u.jsx)(m,{services:n,serviceStatuses:r})]})};w.propTypes={heading:t(s).string.isRequired,services:t(s).object.isRequired};var k=w;var T=()=>(0,u.jsx)(u.Fragment,{children:Object.keys(d).map((e=>(0,u.jsx)(k,{heading:d[e].heading,services:d[e].services},e)))});t(a).render(t(o).createElement(T),document.querySelector("#root")); \ No newline at end of file +var r,i,a;e(t.exports,"Fragment",(()=>r),(e=>r=e)),e(t.exports,"jsx",(()=>i),(e=>i=e)),e(t.exports,"jsxs",(()=>a),(e=>a=e));var o=l("fYo6y"),u=60103;if(r=60107,"function"==typeof Symbol&&Symbol.for){var s=Symbol.for;u=s("react.element"),r=s("react.fragment")}var c=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,f=Object.prototype.hasOwnProperty,d={key:!0,ref:!0,__self:!0,__source:!0};function p(e,t,n){var r,i={},l=null,a=null;for(r in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(a=t.ref),t)f.call(t,r)&&!d.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:u,type:e,key:l,ref:a,props:i,_owner:c.current}}i=p,a=p})),l.register("exEpv",(function(e,t){var n=l("cw87W");function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,r,i,l,a){if(a!==n){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var l={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return l.PropTypes=l,l}})),l.register("cw87W",(function(e,t){e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}));var a,o=l("fYo6y");!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),a=l("gAtBI");var u;u=l("cjuLU"),l("fYo6y");var s;o=l("fYo6y");s=l("exEpv")(),l("fYo6y"),l("fYo6y");const c=({serviceName:e,serviceUrl:t,statusMessage:n,statusIcon:r,serviceStatus:i})=>(0,u.jsxs)("div",{className:`status-item ${i}`,children:[(0,u.jsx)("div",{className:"status-icon",dangerouslySetInnerHTML:{__html:r}}),(0,u.jsxs)("div",{className:"status-text",children:[(0,u.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:(0,u.jsx)("h3",{className:"service-name",children:e})}),(0,u.jsx)("p",{className:"status-message",children:n})]})]});c.propTypes={serviceStatus:t(s).string.isRequired,serviceName:t(s).string.isRequired,statusMessage:t(s).string.isRequired,statusIcon:t(s).string,serviceUrl:t(s).string},c.defaultProps={serviceUrl:null,statusIcon:""};var f=c;const d={sites:{heading:"Organization and Group Websites",services:{adhoOrg:{displayName:"adho.org",endpointUrl:"https://adho.org/",serviceUrl:"https://adho.org/",test:"testResponseForText",matchText:"Alliance of Digital Humanities Organizations – A Global Coalition of Digital Humanities Organizations"},eadhOrg:{displayName:"eadh.org",endpointUrl:"https://eadh.org/",serviceUrl:"https://eadh.org/",serviceIcon:"",test:"testResponseForText",matchText:"EADH - The European Association for Digital Humanities |"},digHumDe:{displayName:"dig-hum.de",endpointUrl:"https://dig-hum.de/",serviceUrl:"https://dig-hum.de/",serviceIcon:"",test:"testResponseForText",matchText:"digital humanities im deutschsprachigen raum"},humanities:{displayName:"4humanities.org",endpointUrl:"https://4humanities.org",serviceUrl:"https://4humanities.org",serviceIcon:"",test:"testResponseForText",matchText:"4Humanities | Advocating for the Humanities"},cle:{displayName:"cle.world",endpointUrl:"https://cle.world",serviceUrl:"https://cle.world",serviceIcon:"",test:"testResponseForText",matchText:"Cultural Literacy Everywhere"},czadh:{displayName:"www.czadh.cz",endpointUrl:"https://www.czadh.cz",serviceUrl:"https://www.czadh.cz",serviceIcon:"",test:"testResponseForText",matchText:"CzADH █ – Česká asociace pro digitální humanitní vědy"},dhcenternet:{displayName:"dhcenternet.org",endpointUrl:"https://dhcenternet.org/",serviceUrl:"https://dhcenternet.org/",serviceIcon:"",test:"testResponseForText",matchText:"centerNet | An international network of digital humanities centers"},membersAchOrg:{displayName:"members.ach.org",endpointUrl:"https://members.ach.org",serviceUrl:"https://members.ach.org",serviceIcon:"",test:"testResponseForText",matchText:"ACH Membership"},geohumanities:{displayName:"geohumanities.org",endpointUrl:"https://geohumanities.org",serviceUrl:"https://geohumanities.org",serviceIcon:"",test:"testResponseForText",matchText:"GeoHumanities SIG – A Special Interest Group of the ADHO"}}},dhq:{heading:"Digital Humanities Quarterly",services:{dhqWebsite:{displayName:"DHQ Website",endpointUrl:"https://digitalhumanities.org/dhq/",serviceUrl:"https://digitalhumanities.org/dhq/",serviceIcon:"",test:"testResponseForText",matchText:''},dhqWiki:{displayName:"DHQ Wiki",endpointUrl:"https://dhq.wikis.adho.org/index.php?title=Main_Page",serviceUrl:"https://dhq.wikis.adho.org/",serviceIcon:"",test:"testResponseForText",matchText:''},dhqStatic:{displayName:"DHQ File Storage",endpointUrl:"https://dhq-static.digitalhumanities.org/",serviceUrl:"https://dhq-static.digitalhumanities.org/",serviceIcon:"",test:"testResponseForText",matchText:"ADHO :: DHQ Static"}}},digitalHumanitiesDotOrg:{heading:"digitalhumanities.org",services:{companion:{displayName:"A Companion to Digital Humanities",endpointUrl:"https://companions.digitalhumanities.org/DH/",serviceUrl:"https://companions.digitalhumanities.org/DH/",serviceIcon:"",test:"testResponseForText",matchText:"A Companion to Digital Humanities"},companionDLS:{displayName:"A Companion to Digital Literary Studies",endpointUrl:"https://companions.digitalhumanities.org/DLS/",serviceUrl:"https://companions.digitalhumanities.org/DLS/",serviceIcon:"",test:"testResponseForText",matchText:"A Companion to Digital Literary Studies"},dhAbstracts:{displayName:"Digital Humanities Abstracts (1996-2003)",endpointUrl:"https://digitalhumanities.org/dh-abstracts/search",serviceUrl:"https://digitalhumanities.org/dh-abstracts/search",serviceIcon:"",test:"testResponseForText",matchText:"Digital Humanities Abstracts: Search Form"}}},dhConferences:{heading:"ADHO Conference Sites",services:{dh2024:{displayName:"DH2024 Conference Site",endpointUrl:"https://dh2024.adho.org/",serviceUrl:"https://dh2024.adho.org/",test:"testResponseForText",matchText:"DH2024 – Reinvention & Responsibility"},dh2024convalidator:{displayName:"DH2024 DH Convalidator",endpointUrl:"https://dhconvalidator.dh2024.adho.org/",serviceUrl:"https://dhconvalidator.dh2024.adho.org/",test:"testResponseCode200"},dh2023:{displayName:"DH2023 Conference Site",endpointUrl:"https://dh2023.adho.org/",serviceUrl:"https://dh2023.adho.org/",test:"testResponseForText",matchText:"July 10-14 2023, Graz | Austria – DH 2023, July 10-14 2023, Graz | Austria"},dh2021:{displayName:"DH2021 Conference Site",endpointUrl:"https://dh2021.adho.org/",serviceUrl:"https://dh2021.adho.org/",test:"testResponseForText",matchText:"Digital Humanities 2021"},dh2020:{displayName:"DH2020 Conference Site",endpointUrl:"https://dh2020.adho.org/",serviceUrl:"https://dh2020.adho.org/",test:"testResponseForText",matchText:"DH2020"},dh2018:{displayName:"DH2018 Conference Site",endpointUrl:"https://dh2018.adho.org/",serviceUrl:"https://dh2018.adho.org/",test:"testResponseForText",matchText:"DH 2018 – Ciudad de México"},dh2017:{displayName:"DH2017 Conference Site",endpointUrl:"https://dh2017.adho.org/",serviceUrl:"https://dh2017.adho.org/",test:"testResponseForText",matchText:"Digital Humanities 2017 – Montreal, Canada, August 8-11, 2017"}}},dhdConferences:{heading:"DHd Conference Sites",services:{dhd2025:{displayName:"DHd 2025 Conference Site",endpointUrl:"https://dhd2025.dig-hum.de/wp-login.php",serviceUrl:"https://dhd2025.dig-hum.de/wp-login.php",test:"testResponseForText",matchText:''},dhd2024:{displayName:"DHd 2024 Conference Site",endpointUrl:"https://dhd2024.dig-hum.de/wp-login.php",serviceUrl:"https://dhd2024.dig-hum.de/wp-login.php",test:"testResponseForText",matchText:''},dhd2024convalidator:{displayName:"DHd 2024 DH Convalidator",endpointUrl:"https://dhconvalidator.dhd2024.dig-hum.de/",serviceUrl:"https://dhconvalidator.dhd2024.dig-hum.de/",test:"testResponseCode200"},dhd2023:{displayName:"DHd 2023 Conference Site",endpointUrl:"https://dhd2023.dig-hum.de/",serviceUrl:"https://dhd2023.dig-hum.de/",test:"testResponseForText",matchText:''},dhd2022:{displayName:"DHd 2022 Conference Site",endpointUrl:"https://dhd2022.dig-hum.de/",serviceUrl:"https://dhd2022.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2022 | Digital Humanities im deutschsprachigen Raum"},dhd2020:{displayName:"DHd 2020 Conference Site",endpointUrl:"https://dhd2020.dig-hum.de/",serviceUrl:"https://dhd2020.dig-hum.de/",test:"testResponseForText",matchText:"DHd2020 - Spielräume | Paderborn, 02.-06.03.2020"},dhd2019:{displayName:"DHd 2019 Conference Site",endpointUrl:"https://dhd2019.dig-hum.de/",serviceUrl:"https://dhd2019.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2019 - multimedial & multimodal"},dhd2017:{displayName:"DHd 2017 Conference Site",endpointUrl:"https://dhd2017.dig-hum.de/",serviceUrl:"https://dhd2017.dig-hum.de/",test:"testResponseForText",matchText:'DHd 2017'},dhd2016:{displayName:"DHd 2016 Conference Site",endpointUrl:"https://dhd2016.dig-hum.de/",serviceUrl:"https://dhd2016.dig-hum.de/",test:"testResponseForText",matchText:"DHd 2016 | DHd 2016"}}},mailListAdminPages:{heading:"Mailing List Archives & Admin UIs",services:{listsDigitalhumanitiesOrg:{displayName:"lists.digitalhumanities.org",endpointUrl:"https://lists.digitalhumanities.org/mailman/",serviceUrl:"https://lists.digitalhumanities.org/mailman/",test:"testResponseForText",matchText:"\nList Index - lists.digitalhumanities.org\n"},listsTeiCOrg:{displayName:"lists.tei-c.org",endpointUrl:"https://lists.tei-c.org/mailman/",serviceUrl:"https://lists.tei-c.org/mailman/",test:"testResponseForText",matchText:"\nList Index - lists.tei-c.org\n"}}},adhoInfra:{heading:"ADHO Internal Infrastructure",services:{nextcloud:{displayName:"ADHO NextCloud",endpointUrl:"https://nextcloud.adho.org/status.php",serviceUrl:"https://nextcloud.adho.org/",test:"testResponseForText",matchText:'"installed":true,"maintenance":false,"needsDbUpgrade":false'},umami:{displayName:"Umami Analytics",endpointUrl:"https://umami.adho.org/dashboard",serviceUrl:"https://umami.adho.org/",test:"testResponseForText",matchText:"Dashboard | Umami"},listmonk:{displayName:"listmonk Newsletter Management",endpointUrl:"https://listmonk.adho.org/",serviceUrl:"https://listmonk.adho.org/",test:"testResponseForText",matchText:"listmonk"},mainwp:{displayName:"MainWP",endpointUrl:"https://mainwp.adho.org/",serviceUrl:"https://mainwp.adho.org/",test:"testResponseForText",matchText:"Log In ‹ MainWP — WordPress"},sftpgo:{displayName:"ADHO SFTP Server",endpointUrl:"https://sftp.adho.org/",serviceUrl:"https://sftp.adho.org/",test:"testResponseForText",matchText:''}}}},p={pending:{message:"Checking status..."},up:{icon:'\n \n \n \n ',message:"No detected issues"},maintenance:{icon:'\n \n \n \n \n \n \n \n \n \n \n \n ',message:"Temporarily unavailable for maintenance"},issue:{icon:'\n \n \n \n ',message:"There may be an issue with this site"},fail:{icon:'\n \n \n \n \n ',message:"Site unavailable"},outage:{icon:'\n \n \n \n ',message:"Service is down"}},h=({services:e,serviceStatuses:t})=>(0,u.jsx)("div",{className:"services",children:Object.entries(e).map((([e,n])=>{const r=t[e],i=p[r];return(0,u.jsx)(f,{serviceName:n.displayName,serviceUrl:n.serviceUrl,serviceIcon:n.serviceIcon,serviceStatus:r,statusMessage:i.message,statusIcon:i.icon},e)}))});h.propTypes={services:t(s).object.isRequired,serviceStatuses:t(s).object.isRequired};var m=h,g={};function v(e){return Promise.resolve(200===e.status?"up":"issue")}function y(e,t){return e.text().then((e=>-1!==e.indexOf(t.matchText)?"up":"issue")).catch((()=>"issue"))}function b(e,t){return e.text().then((e=>t.regex.test(e)?"up":"issue")).catch((()=>"issue"))}function x(e){return e.text().then((e=>e.split("\n").pop().match(/^all health checks successful/i)?"up":"outage")).catch((()=>"outage"))}e(g,"testResponseCode200",(()=>v)),e(g,"testResponseForText",(()=>y)),e(g,"testResponseAgainstRegex",(()=>b)),e(g,"testDrupalHealthCheck",(()=>x));const w=({heading:e,services:n})=>{const[r,i]=(0,o.useState)(Object.fromEntries(Object.keys(n).map((e=>[e,"pending"]))));return t(o).useEffect((()=>{Object.keys(n).forEach((e=>{fetch(n[e].endpointUrl,{mode:"cors"}).then((t=>{503!==t.status?200===t.status?g[n[e].test](t.clone(),n[e]).then((t=>{i((n=>({...n,[e]:t})))})):i((t=>({...t,[e]:"fail"}))):i((t=>({...t,[e]:"maintenance"})))})).catch((()=>{i((t=>({...t,[e]:"fail"})))}))}))}),[n]),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("h3",{children:e}),(0,u.jsx)(m,{services:n,serviceStatuses:r})]})};w.propTypes={heading:t(s).string.isRequired,services:t(s).object.isRequired};var k=w;var T=()=>(0,u.jsx)(u.Fragment,{children:Object.keys(d).map((e=>(0,u.jsx)(k,{heading:d[e].heading,services:d[e].services},e)))});t(a).render(t(o).createElement(T),document.querySelector("#root")); \ No newline at end of file diff --git a/index.html b/index.html index 9dd75c2..79176b1 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -ADHO Sevices Status Page

Alliance of Digital Humanities Organizations ADHO Status Dashboard

\ No newline at end of file