From 3823afe6a95f991fc83e6a124abb592f4d18411c Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 30 Aug 2021 22:06:40 +0100 Subject: [PATCH 1/8] removed docker file --- Dockerfile | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1e72bfcac..000000000 --- a/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -# Start with first build stage - -FROM mhart/alpine-node:14 AS build -WORKDIR /srv/app/ - -# Add dependencies first so that Docker can use the cache as long as the dependencies stay unchanged - -COPY package.json yarn.lock /srv/app/ -RUN yarn install --production --frozen-lockfile - -# Copy source after the dependency step as it's more likely that the source changes - -COPY build.js /srv/app/ -COPY src /srv/app/src -COPY dist /srv/app/dist - -# Start with second build stage - -FROM mhart/alpine-node:14 -EXPOSE 3000 -WORKDIR /srv/app/ - -# Copy the source from the build stage to the second stage - -COPY --from=build /srv/app/ /srv/app/ - -# Run healthcheck against MongoDB, server and API. -# Wait a bit before start to ensure the `yarn build` is done. - -HEALTHCHECK --interval=1m --timeout=45s --start-period=45s CMD [ "/srv/app/src/healthcheck.js" ] - -# Start Ackee - -CMD yarn start From a20fc9a48dadc0be64f1854d246d1824a627a4dc Mon Sep 17 00:00:00 2001 From: Adam Green Date: Wed, 1 Sep 2021 21:24:51 +0100 Subject: [PATCH 2/8] Fixed issue with base URL --- src/ui/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/index.js b/src/ui/index.js index 06ceed729..6dee3d61e 100644 --- a/src/ui/index.js +++ b/src/ui/index.js @@ -9,7 +9,7 @@ const customTracker = require('../utils/customTracker') const signale = require('../utils/signale') const index = () => { - return layout('
', 'favicon.ico', [ 'index.css' ], [ 'index.js' ], { + return layout('
', '/analytics/favicon.ico', [ '/analytics/index.css' ], [ '/analytics/index.js' ], { isDemoMode: config.isDemoMode, customTracker, }) From aa6bf20568f103065086f8c4fdb58152e77b79de Mon Sep 17 00:00:00 2001 From: Adam Green Date: Wed, 1 Sep 2021 21:33:04 +0100 Subject: [PATCH 3/8] updated to support subdomain --- dist/index.js | 2 +- src/ui/scripts/api/links/createHttpLink.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index d17b960c4..0583ae275 100644 --- a/dist/index.js +++ b/dist/index.js @@ -646,4 +646,4 @@ var og="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf( } ${uE} -`;const Lk=e=>u.createElement("div",{className:"card card--wide"},u.createElement("div",{className:"card__inner"},u.createElement(Sy,{type:"h2",size:"medium"},e.headline),u.createElement(wy,{size:1.6}),e.children));Lk.propTypes={headline:yy.string.isRequired,children:yy.oneOfType([yy.arrayOf(yy.node),yy.node]).isRequired};const qk=e=>u.createElement(e.type,{onClick:e.onClick,href:e.href,target:e.target,className:ky({linkItem:!0,"linkItem--disabled":!0===e.disabled,link:!0})},u.createElement("span",{},e.children),null!=e.text&&u.createElement("span",{},e.text));qk.propTypes={type:yy.oneOf(["p","a","button"]).isRequired,href:yy.string,target:yy.string,onClick:yy.func,disabled:yy.bool,text:yy.string,children:yy.node.isRequired};const jk=()=>u.createElement("hr",{className:"line"}),zk=e=>u.createElement(xy,{status:"warning"},`Loading ${e.label}...`),$k=e=>{const t=(()=>{const[e,{loading:t,error:n}]=Qh(Fk);return{mutate:e,loading:t,error:n}})(),n=Ag(),r=gk(),i=Ig(Mk,(e=>e?.permanentTokens),((e=[])=>e),{fetchPolicy:"cache-first",nextFetchPolicy:"cache-first"}),a=(e,t,n,r)=>[...e.map((e=>[u.createElement(qk,{type:"button",text:e.id,onClick:()=>t(e)},e.title),u.createElement(jk)])).flat(),u.createElement(qk,{type:"button",onClick:n},r)],o=u.createElement(zk,{label:"domains"}),s=u.createElement(zk,{label:"events"}),l=u.createElement(zk,{label:"permanent tokens"}),c=a(n.value,(t=>e.addModal(Xg,t)),(()=>e.addModal(Jg)),"New domain"),f=a(r.value,(t=>e.addModal(eb,t)),(()=>e.addModal(Zg)),"New event"),d=a(i.value,(t=>e.addModal(nb,t)),(()=>e.addModal(tb)),"New permanent token");return u.createElement(u.Fragment,{},u.createElement(Lk,{headline:"Account"},u.createElement(qk,{type:"p",disabled:!0,text:Yh},"Version"),u.createElement(jk),u.createElement(qk,{type:"button",onClick:async()=>{await t.mutate({variables:{id:e.token}}),e.reset()}},"Sign Out")),u.createElement(Lk,{headline:"Domains"},...!0===n.status.isInitializing?[o]:c),u.createElement(Lk,{headline:"Events"},...!0===r.status.isInitializing?[s]:f),u.createElement(Lk,{headline:"Permanent Tokens"},...!0===i.status.isInitializing?[l]:d),u.createElement(Lk,{headline:"Donate"},u.createElement(qk,{type:"a",href:"https://github.com/sponsors/electerious",target:"_blank",rel:"noopener"},"Become a GitHub sponsor"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://www.buymeacoffee.com/electerious",target:"_blank",rel:"noopener"},"Buy me a coffee"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://paypal.me/electerious",target:"_blank",rel:"noopener"},"Donate via PayPal")),u.createElement(Lk,{headline:"Help"},u.createElement(qk,{type:"a",href:"https://ackee.electerious.com",target:"_blank",rel:"noopener"},"Website and documentation"),u.createElement(jk),u.createElement(qk,{type:"a",href:Gh,target:"_blank",rel:"noopener"},"Ackee on GitHub"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://github.com/electerious/ackee-tracker",target:"_blank",rel:"noopener"},"Add Ackee to your sites")))};$k.propTypes={reset:yy.func.isRequired,token:yy.string.isRequired,addModal:yy.func.isRequired};const Vk={[mv]:Uw,[yv]:dk,[gv]:pk,[bv]:hk,[Ev]:vk,[wv]:mk,[kv]:Rk,[Sv]:Ck,[_v]:Ik,[xv]:Dk,[Tv]:Pk,[Ov]:Ak,[Nv]:$k},Qk=e=>{const t=Py(e.route),n=Ag();Cg("o",(()=>e.setRoute("/"))),Cg("v",(()=>e.setRoute("/insights/views"))),Cg("p",(()=>e.setRoute("/insights/pages"))),Cg("r",(()=>e.setRoute("/insights/referrers"))),Cg("d",(()=>e.setRoute("/insights/durations"))),Cg("e",(()=>e.setRoute("/insights/events"))),Cg("s",(()=>e.setRoute("/settings"))),Cg("0,1,2,3,4,5,6,7,8,9",((t,{key:r})=>((e,t,n)=>{const r=e[n];null!=r&&t(`/domains/${r.id}`)})(n.value,e.setRoute,r)),[n.value]);const r=n.value.length>0,i=n.value.map(((t,n)=>Kg(t.title,`/domains/${t.id}`,e.route,e.setRoute,((e,t)=>enull==e?"Domains":e.label),i):void 0,Wg((e=>null==e?"Insights":e.label),a),Bg("Settings","/settings",e.route,e.setRoute)].filter(Boolean);return u.createElement("div",{},u.createElement(gE,{modals:e.modals,removeModal:e.removeModal}),u.createElement(Ug,{loading:e.loading,items:o}),u.createElement("main",{className:"content"},u.createElement(Vk[t.key],{reset:e.reset,route:e.route,setRoute:e.setRoute,token:e.token,addModal:e.addModal,filters:e.filters})))},Uk=e=>{const t=e.useErrors();if(!0===(!1===((e,t,n)=>!1!=(null!=e)&&(1!=t.filter(Wm).length>0||(n(),!1)))(e.token,t,e.reset)))return u.createElement(Dy,{setToken:e.setToken});return!0===t.length>0?u.createElement(Ty,{errors:t,reset:e.reset}):u.createElement(u.Fragment,{},u.createElement(ag,{filters:e.filters,setSortingFilter:e.setSortingFilter,setRangeFilter:e.setRangeFilter,setIntervalFilter:e.setIntervalFilter,setViewsTypeFilter:e.setViewsTypeFilter,setReferrersTypeFilter:e.setReferrersTypeFilter,setDevicesTypeFilter:e.setDevicesTypeFilter,setBrowsersTypeFilter:e.setBrowsersTypeFilter,setSizesTypeFilter:e.setSizesTypeFilter,setSystemsTypeFilter:e.setSystemsTypeFilter,route:e.route}),u.createElement(Qk,e))},Bk=class extends u.Component{constructor(e){super(e),this.state={error:void 0}}static getDerivedStateFromError(e){return{error:e}}render(){return!0===(null!=this.state.error)?u.createElement(Ty,{errors:[this.state.error],reset:this.props.reset}):this.props.children}};Bk.propTypes={reset:yy.func.isRequired},!0===window.env.isDemoMode&&console.warn("Ackee runs in demo mode");const{statusLink:Wk,useLoading:Kk,useErrors:Hk}=(()=>{const{link:e,useApolloNetworkStatusReducer:t}=Wh.createNetworkStatusNotifier();return{statusLink:e,useLoading:()=>t(Kh,0)>0,useErrors:()=>t(Hh,[])}})(),Yk=(Gk=[Wk,(Jk=(e,{headers:t})=>({headers:{...t,Authorization:`Bearer ${ev()}`}}),new vd((function(e,t){var n=$c(e,[]);return new Of((function(r){var i;return Promise.resolve(n).then((function(t){return Jk(t,e.getContext())})).then(e.setContext).then((function(){i=t(e).subscribe({next:r.next.bind(r),error:r.error.bind(r),complete:r.complete.bind(r)})})).catch(r.error.bind(r)),function(){i&&i.unsubscribe()}}))}))),new ov({uri:"/api",headers:{"Time-Zone":sv}})],new bh({link:yd(Gk),cache:new uh({})}));var Gk,Jk;yu.render(u.createElement((()=>{const[e,t]=u.useState(Date.now()),n=Kk(),r=Dv(),i=(()=>{const[e,t]=u.useReducer(rv,ev());return{token:e,setToken:u.useCallback((e=>t({type:Xh,token:e})),[t]),resetToken:u.useCallback((()=>t({type:Zh})),[t])}})(),a=(()=>{const[e,t]=u.useReducer(rm,nm);return{modals:e,addModal:u.useCallback(((e,n)=>t({type:Zv,modalId:Xv(),payload:{type:e,props:n}})),[t]),removeModal:u.useCallback((e=>t({type:em,modalId:e})),[t]),resetModals:u.useCallback((()=>t({type:tm})),[t])}})(),o=(()=>{const[e,t]=u.useReducer(Um,$m());return{filters:e,setSortingFilter:u.useCallback((e=>t({type:Im,payload:e})),[t]),setRangeFilter:u.useCallback((e=>t({type:Dm,payload:e})),[t]),setIntervalFilter:u.useCallback((e=>t({type:Pm,payload:e})),[t]),setViewsTypeFilter:u.useCallback((e=>t({type:Am,payload:e})),[t]),setReferrersTypeFilter:u.useCallback((e=>t({type:Fm,payload:e})),[t]),setDevicesTypeFilter:u.useCallback((e=>t({type:Mm,payload:e})),[t]),setBrowsersTypeFilter:u.useCallback((e=>t({type:Lm,payload:e})),[t]),setSizesTypeFilter:u.useCallback((e=>t({type:qm,payload:e})),[t]),setSystemsTypeFilter:u.useCallback((e=>t({type:jm,payload:e})),[t]),resetFilters:u.useCallback((()=>t({type:zm})),[t])}})(),s=u.useCallback((()=>{i.resetToken(),a.resetModals(),o.resetFilters(),Yk.clearStore(),t(Date.now())}),[i.resetToken,a.resetModals,o.resetFilters,Yk.resetStore,t]);var l;return u.useEffect((()=>{if(0!=(!0===navigator.platform.includes("Win")))return document.body.classList.add("customScrollbar"),()=>document.body.classList.remove("customScrollbar")}),[]),l=r.route,u.useEffect((()=>{document.scrollingElement.scrollTop=0}),[l]),u.createElement(Uf,{client:Yk},u.createElement(Bk,{reset:s},u.createElement(Uk,{key:e,reset:s,useErrors:Hk,loading:n,...status,...r,...i,...a,...o})))})),document.querySelector("#main"))}(); +`;const Lk=e=>u.createElement("div",{className:"card card--wide"},u.createElement("div",{className:"card__inner"},u.createElement(Sy,{type:"h2",size:"medium"},e.headline),u.createElement(wy,{size:1.6}),e.children));Lk.propTypes={headline:yy.string.isRequired,children:yy.oneOfType([yy.arrayOf(yy.node),yy.node]).isRequired};const qk=e=>u.createElement(e.type,{onClick:e.onClick,href:e.href,target:e.target,className:ky({linkItem:!0,"linkItem--disabled":!0===e.disabled,link:!0})},u.createElement("span",{},e.children),null!=e.text&&u.createElement("span",{},e.text));qk.propTypes={type:yy.oneOf(["p","a","button"]).isRequired,href:yy.string,target:yy.string,onClick:yy.func,disabled:yy.bool,text:yy.string,children:yy.node.isRequired};const jk=()=>u.createElement("hr",{className:"line"}),zk=e=>u.createElement(xy,{status:"warning"},`Loading ${e.label}...`),$k=e=>{const t=(()=>{const[e,{loading:t,error:n}]=Qh(Fk);return{mutate:e,loading:t,error:n}})(),n=Ag(),r=gk(),i=Ig(Mk,(e=>e?.permanentTokens),((e=[])=>e),{fetchPolicy:"cache-first",nextFetchPolicy:"cache-first"}),a=(e,t,n,r)=>[...e.map((e=>[u.createElement(qk,{type:"button",text:e.id,onClick:()=>t(e)},e.title),u.createElement(jk)])).flat(),u.createElement(qk,{type:"button",onClick:n},r)],o=u.createElement(zk,{label:"domains"}),s=u.createElement(zk,{label:"events"}),l=u.createElement(zk,{label:"permanent tokens"}),c=a(n.value,(t=>e.addModal(Xg,t)),(()=>e.addModal(Jg)),"New domain"),f=a(r.value,(t=>e.addModal(eb,t)),(()=>e.addModal(Zg)),"New event"),d=a(i.value,(t=>e.addModal(nb,t)),(()=>e.addModal(tb)),"New permanent token");return u.createElement(u.Fragment,{},u.createElement(Lk,{headline:"Account"},u.createElement(qk,{type:"p",disabled:!0,text:Yh},"Version"),u.createElement(jk),u.createElement(qk,{type:"button",onClick:async()=>{await t.mutate({variables:{id:e.token}}),e.reset()}},"Sign Out")),u.createElement(Lk,{headline:"Domains"},...!0===n.status.isInitializing?[o]:c),u.createElement(Lk,{headline:"Events"},...!0===r.status.isInitializing?[s]:f),u.createElement(Lk,{headline:"Permanent Tokens"},...!0===i.status.isInitializing?[l]:d),u.createElement(Lk,{headline:"Donate"},u.createElement(qk,{type:"a",href:"https://github.com/sponsors/electerious",target:"_blank",rel:"noopener"},"Become a GitHub sponsor"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://www.buymeacoffee.com/electerious",target:"_blank",rel:"noopener"},"Buy me a coffee"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://paypal.me/electerious",target:"_blank",rel:"noopener"},"Donate via PayPal")),u.createElement(Lk,{headline:"Help"},u.createElement(qk,{type:"a",href:"https://ackee.electerious.com",target:"_blank",rel:"noopener"},"Website and documentation"),u.createElement(jk),u.createElement(qk,{type:"a",href:Gh,target:"_blank",rel:"noopener"},"Ackee on GitHub"),u.createElement(jk),u.createElement(qk,{type:"a",href:"https://github.com/electerious/ackee-tracker",target:"_blank",rel:"noopener"},"Add Ackee to your sites")))};$k.propTypes={reset:yy.func.isRequired,token:yy.string.isRequired,addModal:yy.func.isRequired};const Vk={[mv]:Uw,[yv]:dk,[gv]:pk,[bv]:hk,[Ev]:vk,[wv]:mk,[kv]:Rk,[Sv]:Ck,[_v]:Ik,[xv]:Dk,[Tv]:Pk,[Ov]:Ak,[Nv]:$k},Qk=e=>{const t=Py(e.route),n=Ag();Cg("o",(()=>e.setRoute("/"))),Cg("v",(()=>e.setRoute("/insights/views"))),Cg("p",(()=>e.setRoute("/insights/pages"))),Cg("r",(()=>e.setRoute("/insights/referrers"))),Cg("d",(()=>e.setRoute("/insights/durations"))),Cg("e",(()=>e.setRoute("/insights/events"))),Cg("s",(()=>e.setRoute("/settings"))),Cg("0,1,2,3,4,5,6,7,8,9",((t,{key:r})=>((e,t,n)=>{const r=e[n];null!=r&&t(`/domains/${r.id}`)})(n.value,e.setRoute,r)),[n.value]);const r=n.value.length>0,i=n.value.map(((t,n)=>Kg(t.title,`/domains/${t.id}`,e.route,e.setRoute,((e,t)=>enull==e?"Domains":e.label),i):void 0,Wg((e=>null==e?"Insights":e.label),a),Bg("Settings","/settings",e.route,e.setRoute)].filter(Boolean);return u.createElement("div",{},u.createElement(gE,{modals:e.modals,removeModal:e.removeModal}),u.createElement(Ug,{loading:e.loading,items:o}),u.createElement("main",{className:"content"},u.createElement(Vk[t.key],{reset:e.reset,route:e.route,setRoute:e.setRoute,token:e.token,addModal:e.addModal,filters:e.filters})))},Uk=e=>{const t=e.useErrors();if(!0===(!1===((e,t,n)=>!1!=(null!=e)&&(1!=t.filter(Wm).length>0||(n(),!1)))(e.token,t,e.reset)))return u.createElement(Dy,{setToken:e.setToken});return!0===t.length>0?u.createElement(Ty,{errors:t,reset:e.reset}):u.createElement(u.Fragment,{},u.createElement(ag,{filters:e.filters,setSortingFilter:e.setSortingFilter,setRangeFilter:e.setRangeFilter,setIntervalFilter:e.setIntervalFilter,setViewsTypeFilter:e.setViewsTypeFilter,setReferrersTypeFilter:e.setReferrersTypeFilter,setDevicesTypeFilter:e.setDevicesTypeFilter,setBrowsersTypeFilter:e.setBrowsersTypeFilter,setSizesTypeFilter:e.setSizesTypeFilter,setSystemsTypeFilter:e.setSystemsTypeFilter,route:e.route}),u.createElement(Qk,e))},Bk=class extends u.Component{constructor(e){super(e),this.state={error:void 0}}static getDerivedStateFromError(e){return{error:e}}render(){return!0===(null!=this.state.error)?u.createElement(Ty,{errors:[this.state.error],reset:this.props.reset}):this.props.children}};Bk.propTypes={reset:yy.func.isRequired},!0===window.env.isDemoMode&&console.warn("Ackee runs in demo mode");const{statusLink:Wk,useLoading:Kk,useErrors:Hk}=(()=>{const{link:e,useApolloNetworkStatusReducer:t}=Wh.createNetworkStatusNotifier();return{statusLink:e,useLoading:()=>t(Kh,0)>0,useErrors:()=>t(Hh,[])}})(),Yk=(Gk=[Wk,(Jk=(e,{headers:t})=>({headers:{...t,Authorization:`Bearer ${ev()}`}}),new vd((function(e,t){var n=$c(e,[]);return new Of((function(r){var i;return Promise.resolve(n).then((function(t){return Jk(t,e.getContext())})).then(e.setContext).then((function(){i=t(e).subscribe({next:r.next.bind(r),error:r.error.bind(r),complete:r.complete.bind(r)})})).catch(r.error.bind(r)),function(){i&&i.unsubscribe()}}))}))),new ov({uri:"/analytics/api",headers:{"Time-Zone":sv}})],new bh({link:yd(Gk),cache:new uh({})}));var Gk,Jk;yu.render(u.createElement((()=>{const[e,t]=u.useState(Date.now()),n=Kk(),r=Dv(),i=(()=>{const[e,t]=u.useReducer(rv,ev());return{token:e,setToken:u.useCallback((e=>t({type:Xh,token:e})),[t]),resetToken:u.useCallback((()=>t({type:Zh})),[t])}})(),a=(()=>{const[e,t]=u.useReducer(rm,nm);return{modals:e,addModal:u.useCallback(((e,n)=>t({type:Zv,modalId:Xv(),payload:{type:e,props:n}})),[t]),removeModal:u.useCallback((e=>t({type:em,modalId:e})),[t]),resetModals:u.useCallback((()=>t({type:tm})),[t])}})(),o=(()=>{const[e,t]=u.useReducer(Um,$m());return{filters:e,setSortingFilter:u.useCallback((e=>t({type:Im,payload:e})),[t]),setRangeFilter:u.useCallback((e=>t({type:Dm,payload:e})),[t]),setIntervalFilter:u.useCallback((e=>t({type:Pm,payload:e})),[t]),setViewsTypeFilter:u.useCallback((e=>t({type:Am,payload:e})),[t]),setReferrersTypeFilter:u.useCallback((e=>t({type:Fm,payload:e})),[t]),setDevicesTypeFilter:u.useCallback((e=>t({type:Mm,payload:e})),[t]),setBrowsersTypeFilter:u.useCallback((e=>t({type:Lm,payload:e})),[t]),setSizesTypeFilter:u.useCallback((e=>t({type:qm,payload:e})),[t]),setSystemsTypeFilter:u.useCallback((e=>t({type:jm,payload:e})),[t]),resetFilters:u.useCallback((()=>t({type:zm})),[t])}})(),s=u.useCallback((()=>{i.resetToken(),a.resetModals(),o.resetFilters(),Yk.clearStore(),t(Date.now())}),[i.resetToken,a.resetModals,o.resetFilters,Yk.resetStore,t]);var l;return u.useEffect((()=>{if(0!=(!0===navigator.platform.includes("Win")))return document.body.classList.add("customScrollbar"),()=>document.body.classList.remove("customScrollbar")}),[]),l=r.route,u.useEffect((()=>{document.scrollingElement.scrollTop=0}),[l]),u.createElement(Uf,{client:Yk},u.createElement(Bk,{reset:s},u.createElement(Uk,{key:e,reset:s,useErrors:Hk,loading:n,...status,...r,...i,...a,...o})))})),document.querySelector("#main"))}(); diff --git a/src/ui/scripts/api/links/createHttpLink.js b/src/ui/scripts/api/links/createHttpLink.js index 1836f9c48..9327edb93 100644 --- a/src/ui/scripts/api/links/createHttpLink.js +++ b/src/ui/scripts/api/links/createHttpLink.js @@ -4,7 +4,7 @@ import userTimeZone from '../../../../utils/timeZone' export default () => { return new BatchHttpLink({ - uri: '/api', + uri: '/analytics/api', headers: { 'Time-Zone': userTimeZone, }, From 4765e268ade3a86be39a12f77241e0c2809f53bb Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 6 Sep 2021 15:06:46 +0100 Subject: [PATCH 4/8] Readded docker file --- Dockerfile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..40ff90b5d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +# Start with first build stage + +FROM mhart/alpine-node:14 AS build +WORKDIR /srv/app/ + +# Add dependencies first so that Docker can use the cache as long as the dependencies stay unchanged + +COPY package.json yarn.lock /srv/app/ +RUN yarn install --production --frozen-lockfile + +# Copy source after the dependency step as it's more likely that the source changes + +COPY build.js /srv/app/ +COPY src /srv/app/src +COPY dist /srv/app/dist + +# Start with second build stage + +FROM mhart/alpine-node:14 +EXPOSE 3000 +WORKDIR /srv/app/ + +# Copy the source from the build stage to the second stage + +COPY --from=build /srv/app/ /srv/app/ + +# Run healthcheck against MongoDB, server and API. +# Wait a bit before start to ensure the `yarn build` is done. + +HEALTHCHECK --interval=1m --timeout=45s --start-period=45s CMD [ "/srv/app/src/healthcheck.js" ] + +# Start Ackee + +CMD yarn start \ No newline at end of file From 279cbcedac951689e822f3f1d143d85e96307c3c Mon Sep 17 00:00:00 2001 From: Adam Green Date: Mon, 6 Sep 2021 15:14:52 +0100 Subject: [PATCH 5/8] added base URL configuration --- dist/index.js | 194 ++++++++++----------- src/ui/index.js | 2 +- src/ui/scripts/api/links/createHttpLink.js | 3 +- src/utils/config.js | 1 + 4 files changed, 101 insertions(+), 99 deletions(-) diff --git a/dist/index.js b/dist/index.js index 0583ae275..575b46430 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ object-assign (c) Sindre Sorhus @license MIT - */}var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var s=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=o(e),u=1;u=b},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,i=e[r];if(!(void 0!==i&&0x(o,n))void 0!==l&&0>x(l,o)?(e[r]=l,e[s]=n,r=s):(e[r]=o,e[a]=n,r=a);else{if(!(void 0!==l&&0>x(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],O=[],N=1,R=null,C=3,I=!1,D=!1,P=!1;function A(e){for(var t=S(O);null!==t;){if(null===t.callback)_(O);else{if(!(t.startTime<=e))break;_(O),t.sortIndex=t.expirationTime,k(T,t)}t=S(O)}}function F(e){if(P=!1,A(e),!D)if(null!==S(T))D=!0,n(M);else{var t=S(O);null!==t&&r(F,t.startTime-e)}}function M(e,n){D=!1,P&&(P=!1,i()),I=!0;var a=C;try{for(A(n),R=S(T);null!==R&&(!(R.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=R.callback;if("function"==typeof o){R.callback=null,C=R.priorityLevel;var s=o(R.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?R.callback=s:R===S(T)&&_(T),A(n)}else _(T);R=S(T)}if(null!==R)var l=!0;else{var u=S(O);null!==u&&r(F,u.startTime-n),l=!1}return l}finally{R=null,C=a,I=!1}}var L=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){D||I||(D=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return C},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(C){case 1:case 2:case 3:var t=3;break;default:t=C}var n=C;C=t;try{return e()}finally{C=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=L,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=C;C=e;try{return t()}finally{C=n}},t.unstable_scheduleCallback=function(e,a,o){var s=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0s?(e.sortIndex=o,k(O,e),null===S(T)&&e===S(O)&&(P?i():P=!0,r(F,o-s))):(e.sortIndex=l,k(T,e),D||I||(D=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=C;return function(){var n=C;C=t;try{return e.apply(this,arguments)}finally{C=n}}}})); +n((function(e,t){}));var u=n((function(e){e.exports=l})),c=n((function(e,t){var n,r,i,a;if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,f=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(e){throw setTimeout(f,0),e}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(f,0))},r=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var d=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var v=!1,m=null,y=-1,g=5,b=0;t.unstable_shouldYield=function(){return t.unstable_now()>=b},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,i=e[r];if(!(void 0!==i&&0x(o,n))void 0!==l&&0>x(l,o)?(e[r]=l,e[s]=n,r=s):(e[r]=o,e[a]=n,r=a);else{if(!(void 0!==l&&0>x(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var O=[],T=[],N=1,R=null,C=3,I=!1,D=!1,A=!1;function P(e){for(var t=S(T);null!==t;){if(null===t.callback)_(T);else{if(!(t.startTime<=e))break;_(T),t.sortIndex=t.expirationTime,k(O,t)}t=S(T)}}function F(e){if(A=!1,P(e),!D)if(null!==S(O))D=!0,n(M);else{var t=S(T);null!==t&&r(F,t.startTime-e)}}function M(e,n){D=!1,A&&(A=!1,i()),I=!0;var a=C;try{for(P(n),R=S(O);null!==R&&(!(R.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=R.callback;if("function"==typeof o){R.callback=null,C=R.priorityLevel;var s=o(R.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?R.callback=s:R===S(O)&&_(O),P(n)}else _(O);R=S(O)}if(null!==R)var l=!0;else{var u=S(T);null!==u&&r(F,u.startTime-n),l=!1}return l}finally{R=null,C=a,I=!1}}var L=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){D||I||(D=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return C},t.unstable_getFirstCallbackNode=function(){return S(O)},t.unstable_next=function(e){switch(C){case 1:case 2:case 3:var t=3;break;default:t=C}var n=C;C=t;try{return e()}finally{C=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=L,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=C;C=e;try{return t()}finally{C=n}},t.unstable_scheduleCallback=function(e,a,o){var s=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0s?(e.sortIndex=o,k(T,e),null===S(O)&&e===S(T)&&(A?i():A=!0,r(F,o-s))):(e.sortIndex=l,k(O,e),D||I||(D=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=C;return function(){var n=C;C=t;try{return e.apply(this,arguments)}finally{C=n}}}})); /** @license React v0.20.2 * scheduler.production.min.js * @@ -45,7 +45,7 @@ n((function(e,t){}));var f=n((function(e){e.exports=c})); * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function d(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n