@careevolution/mydatahelps-js 3.17.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MyDataHelps.d.ts +4 -5
- package/MyDataHelps.js +304 -276
- package/MyDataHelps.min.js +1 -1
- package/MyDataHelps.min.js.map +1 -1
- package/assets/MyDataHelps-CJt5Kdo2.css +1 -0
- package/assets/MyDataHelps.min-CJt5Kdo2.css +1 -0
- package/package.json +9 -6
- package/types.d.ts +31 -17
package/MyDataHelps.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=[],t=[];!function(n,s){if(n&&"undefined"!=typeof document){var r,a=!0===s.prepend?"prepend":"append",o=!0===s.singleTag,i="string"==typeof s.container?document.querySelector(s.container):document.getElementsByTagName("head")[0];if(o){var d=e.indexOf(i);-1===d&&(d=e.push(i)-1,t[d]={}),r=t[d]&&t[d][a]?t[d][a]:t[d][a]=u()}else r=u();65279===n.charCodeAt(0)&&(n=n.substring(1)),r.styleSheet?r.styleSheet.cssText+=n:r.appendChild(document.createTextNode(n))}function u(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),s.attributes)for(var t=Object.keys(s.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],s.attributes[t[n]]);var r="prepend"===a?"afterbegin":"beforeend";return i.insertAdjacentElement(r,e),e}}('body.no-scroll{height:100%;overflow:hidden!important;position:fixed!important;width:100%}#mydatahelps-survey-modal{background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0}#mydatahelps-survey-modal .mydatahelps-survey{background:#fff;border-radius:5px;box-sizing:border-box;height:calc(100% - 32px);margin:16px auto;max-width:768px;overflow:hidden;position:relative;z-index:5002}#mydatahelps-survey-modal .mydatahelps-survey iframe{border:none;bottom:0;height:100%;left:0;opacity:0;position:absolute;right:0;top:0;width:100%}#mydatahelps-survey-modal.loaded .mydatahelps-survey iframe{opacity:1}@media (max-width:768px){#mydatahelps-survey-modal .mydatahelps-survey{border-radius:0;height:100%;margin-bottom:0;margin-top:0}}#mydatahelps-survey-modal .mydatahelps-survey .loader{-webkit-animation:load3 1.4s linear infinite;animation:load3 1.4s linear infinite;background:#fff;background:-moz-linear-gradient(left,#bbb 10%,hsla(0,0%,100%,0) 42%);background:-webkit-linear-gradient(left,#bbb 10%,hsla(0,0%,100%,0) 42%);background:-o-linear-gradient(left,#bbb 10%,hsla(0,0%,100%,0) 42%);background:-ms-linear-gradient(left,#bbb 10%,hsla(0,0%,100%,0) 42%);background:linear-gradient(90deg,#bbb 10%,hsla(0,0%,100%,0) 42%);border-radius:50%;font-size:5px;height:11em;left:calc(50% - 5.5em);position:absolute;text-indent:-9999em;top:calc(50% - 5.5em);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);width:11em;z-index:1}#mydatahelps-survey-modal .mydatahelps-survey .loader:before{background:#bbb;border-radius:100% 0 0 0;content:"";height:50%;left:0;position:absolute;top:0;width:50%}#mydatahelps-survey-modal .mydatahelps-survey .loader:after{background:#fff;border-radius:50%;bottom:0;content:"";height:75%;left:0;margin:auto;position:absolute;right:0;top:0;width:75%}#mydatahelps-survey-modal.loaded .mydatahelps-survey .loader{display:none}@-webkit-keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}',{});var n=function(e,t,n,s){return new(n||(n=Promise))((function(r,a){function o(e){try{d(s.next(e))}catch(e){a(e)}}function i(e){try{d(s.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}d((s=s.apply(e,t||[])).next())}))};class s{constructor(){if(this.acceptableParentDomains=["localhost","careevolution.com","internal","b3-deploys.com","mydatahelps.org","platform.joinallofus.org","careevolution.dev","ce.dev","mydatahelps.dev"],this.accessTokenRenewalBufferSeconds=120,this.unsupportedActions=["SetHeight","ResearchKit"],this.supportedEvents=["surveyDidFinish","applicationDidBecomeVisible","externalAccountSyncComplete","tokenWillExpire"],this.supportedLanguages=[],this.currentMessageID=1,this.messageHandlers=[],this.registeredEventHandlers={},this.refreshTokenPromise=null,this.standaloneMode=!1,this.handleConnectExternalAccountResponse())return;let e,t=this,n=function(){let e=document.location.ancestorOrigins;if(e&&e[0])return e[0];return"*"}();function s(e){if("*"===e)return!0;let n=new URL(e);for(let e=0;e<t.acceptableParentDomains.length;e++)if(n.hostname===t.acceptableParentDomains[e]||n.hostname.endsWith("."+t.acceptableParentDomains[e]))return!0;return!1}s(n)||console.log("Detected unsupported parent origin domain."),e=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.ResearchKit?{GetDelegatedAccessToken:function(e){window.parent.postMessage({name:"GetDelegatedAccessToken",messageID:e.messageID},n)},GetCurrentSurveyAnswers:function(e){window.parent.postMessage({name:"GetCurrentSurveyAnswers",messageID:e.messageID},n)},GetStepConfiguration:function(e){window.parent.postMessage({name:"GetStepConfiguration",messageID:e.messageID},n)},GetSurveyContext:function(e){window.parent.postMessage({name:"GetSurveyContext",messageID:e.messageID},n)},CompleteStep:function(e){window.parent.postMessage({name:"CompleteStep",messageID:e.messageID,answer:e.answer},n)}}:{GetDelegatedAccessToken:function(e){window.parent.postMessage({name:"GetDelegatedAccessToken",messageID:e.messageID},n)},GetDeviceInfo:function(e){window.parent.postMessage({name:"GetDeviceInfo",messageID:e.messageID},n)},StartParticipantSurvey:function(e){window.parent.postMessage({name:"StartParticipantSurvey",messageID:e.messageID,surveyName:e.surveyName},n)},OpenExternalLink:function(e){window.parent.postMessage({name:"OpenExternalUrl",url:e},n)},OpenEmbeddedLink:function(e){window.parent.postMessage({name:"OpenEmbeddedUrl",url:e},n)},OpenExternalApplication:function(e){window.parent.postMessage({name:"OpenApplication",messageID:e.messageID,url:e.url,modal:e.modal},n)},Dismiss:function(){window.parent.postMessage({name:"Dismiss"},n)},PopNavigation:function(){window.parent.postMessage({name:"Back"},n)},ShowTab:function(e){window.parent.postMessage({name:"ShowTab",tabKey:e},n)},ShowParticipantDashboard:function(e){window.parent.postMessage({name:"ShowParticipantDashboard",dashboardKey:e.dashboardKey,modal:e.modal},n)},ShowParticipantWebVisualization:function(e){window.parent.postMessage({name:"ShowParticipantWebVisualization",visualizationKey:e.visualizationKey,parameters:e.parameters,modal:e.modal},n)},ShowParticipantWebVisualizationPDF:function(e){window.parent.postMessage({name:"ShowParticipantWebVisualizationPDF",visualizationKey:e.visualizationKey,parameters:e.parameters,modal:e.modal,landscape:e.landscape,htmlViewerZoom:e.htmlViewerZoom},n)},DeleteProviderAccount:function(e){window.parent.postMessage({name:"DeleteProviderAccount",messageID:e.messageID,accountID:e.accountID},n)},ConnectExternalAccount:function(e){window.parent.postMessage({name:"ConnectExternalAccount",externalAccountProviderID:e.externalAccountProviderID,messageID:e.messageID,openNewWindow:e.openNewWindow,width:e.width,height:e.height},n)},ShowProject:function(e){window.parent.postMessage({name:"ShowProject",code:e.code},n)},JoinProject:function(e){window.parent.postMessage({name:"JoinProject",code:e.code},n)},GetCurrentSurveyAnswers:function(e){window.parent.postMessage({name:"GetCurrentSurveyAnswers",messageID:e.messageID},n)},GetStepConfiguration:function(e){window.parent.postMessage({name:"GetStepConfiguration",messageID:e.messageID},n)},CompleteStep:function(e){window.parent.postMessage({name:"CompleteStep",messageID:e.messageID,answer:e.answer},n)}},window.webkit&&window.webkit.messageHandlers&&function(){for(let t in e)if(window.webkit.messageHandlers[t])return!0;for(let e in t.unsupportedActions)if(window.webkit.messageHandlers[t.unsupportedActions[e]])return!0;return!1}()||(window.webkit={messageHandlers:{}}),function(e){for(let t in e)if(!window.webkit.messageHandlers[t])try{window.webkit.messageHandlers[t]={postMessage:e[t]}}catch(e){return void console.log("Unable to add missing actions on this platform: "+e)}}(e),window.addEventListener("message",(function(e){if(!function(e){return!(!t.isStandaloneMode()||e.origin!==window.location.origin)||("*"===n?s(e.origin):e.origin===n)}(e))throw console.error("message.origin '"+e.origin+"' is not allowed."),"message.origin '"+e.origin+"' is not allowed.";e.data.messageID?t.setActionResult(e.data):t.triggerEvent(e.data)}),!1)}startSurvey(e){if(this.isStandaloneMode())this.startDelegatedSurvey(`${this.baseUrl}/survey?surveyName=${encodeURIComponent(e)}`);else if(window.webkit.messageHandlers.StartParticipantSurvey){let t=this.nextMessageID();window.webkit.messageHandlers.StartParticipantSurvey.postMessage({messageID:t,surveyName:e})}}completeStep(e){if(null==e&&(e=""),"string"!=typeof e&&(e=JSON.stringify(e)),window.webkit.messageHandlers.ResearchKit)window.webkit.messageHandlers.ResearchKit.postMessage(e);else if(window.webkit.messageHandlers.CompleteStep){let t=this.nextMessageID();window.webkit.messageHandlers.CompleteStep.postMessage({messageID:t,answer:e})}}querySurveyAnswers(e){(e=Object.assign({},e)).hasOwnProperty("surveyName")&&(e.surveyName=s.reduceArrayAndEscape(e.surveyName)),e.hasOwnProperty("stepIdentifier")&&(e.stepIdentifier=s.reduceArrayAndEscape(e.stepIdentifier)),e.hasOwnProperty("resultIdentifier")&&(e.resultIdentifier=s.reduceArrayAndEscape(e.resultIdentifier)),e.hasOwnProperty("answer")&&(e.answer=s.reduceArrayAndEscape(e.answer)),e.hasOwnProperty("before")&&(e.before=s.convertDateToIsoString(e.before)),e.hasOwnProperty("after")&&(e.after=s.convertDateToIsoString(e.after));const t="surveyanswers?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}deleteSurveyResult(e){const t="surveyresults/"+encodeURIComponent(e),n=this;return this.connect().then((function(){return n.makeRequest(t,"DELETE",null)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}querySurveyTasks(e){(e=Object.assign({},e)).hasOwnProperty("status")&&(e.status=s.reduceArrayAndEscape(e.status)),e.hasOwnProperty("surveyName")&&(e.surveyName=s.reduceArrayAndEscape(e.surveyName));const t="surveytasks?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryInboxItems(e){(e=((e,t)=>{for(const n of Object.keys(t)){const s=t[n];void 0!==s&&(e[n]=s)}return e})({},e)).hasOwnProperty("type")&&(e.type=s.reduceArrayAndEscape(e.type)),e.hasOwnProperty("status")&&(e.status=s.reduceArrayAndEscape(e.status));const t="inbox?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}getInboxItem(e){const t=`inbox/${e}`,n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}updateInboxItem(e,t){const n=`inbox/${e}/${t}`,r=this;return this.connect().then((function(){return r.makeRequest(n,"PUT",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}startEmbeddedSurvey(e,t,n){n||(n=this.getCurrentLanguage());let s=this.getBaseUrl()+"mydatahelps/"+e+"/surveylink/"+t+"?lang="+n;return this.startEmbeddedSurveyInternal(s)}openExternalUrl(e){window.webkit.messageHandlers.OpenExternalLink&&window.webkit.messageHandlers.OpenExternalLink.postMessage(e)}openEmbeddedUrl(e){window.webkit.messageHandlers.OpenEmbeddedLink&&window.webkit.messageHandlers.OpenEmbeddedLink.postMessage(e)}showTab(e){window.webkit.messageHandlers.ShowTab&&window.webkit.messageHandlers.ShowTab.postMessage(e)}openApplication(e,t){if(window.webkit.messageHandlers.OpenExternalApplication){let n=this.nextMessageID();window.webkit.messageHandlers.OpenExternalApplication.postMessage({messageID:n,url:e,modal:!(!t||!t.modal)})}}dismiss(){window.webkit.messageHandlers.Dismiss&&window.webkit.messageHandlers.Dismiss.postMessage({})}back(){window.webkit.messageHandlers.PopNavigation&&window.webkit.messageHandlers.PopNavigation.postMessage({})}showDashboard(e,t){window.webkit.messageHandlers.ShowParticipantDashboard&&window.webkit.messageHandlers.ShowParticipantDashboard.postMessage({dashboardKey:e,modal:!(!t||!t.modal),title:t&&t.title?t.title:void 0})}showWebVisualization(e,t,n){window.webkit.messageHandlers.ShowParticipantWebVisualization&&window.webkit.messageHandlers.ShowParticipantWebVisualization.postMessage({visualizationKey:e,parameters:t,modal:!(!n||!n.modal),title:n&&n.title?n.title:void 0})}showWebVisualizationPdf(e,t,n){window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF&&window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF.postMessage({visualizationKey:e,parameters:t,landscape:!(!n||!n.landscape),htmlViewerZoom:n&&n.htmlViewerZoom})}showProject(e){window.webkit.messageHandlers.ShowProject&&window.webkit.messageHandlers.ShowProject.postMessage({code:e})}joinProject(e){window.webkit.messageHandlers.JoinProject&&window.webkit.messageHandlers.JoinProject.postMessage({code:e})}on(e,t){if(!this.supportedEvents.includes(e))throw new Error(e+" is not a supported event type.");this.registeredEventHandlers[e]||(this.registeredEventHandlers[e]=[]),this.registeredEventHandlers[e].push(t)}off(e,t){if(!this.supportedEvents.includes(e))throw new Error(e+" is not a supported event type.");if(!this.registeredEventHandlers[e])return;let n=this.registeredEventHandlers[e].indexOf(t);-1!==n&&this.registeredEventHandlers[e].splice(n,1)}triggerEvent(e){let t=e.type;this.supportedEvents.includes(t)&&this.registeredEventHandlers[t]&&this.registeredEventHandlers[t].forEach((function(t){t(e)}))}setActionResult(e){this.messageHandlers[e.messageID](e)}getParticipantInfo(){const e=this;return this.connect().then((function(){return e.makeRequest("participant","GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}persistParticipantInfo(e,t){const s=this;return this.connect().then((function(){return s.makeRequest("participant","PUT",{demographics:e,customFields:t})})).then((function(e){return n(this,void 0,void 0,(function*(){if(!e.ok)throw(yield e.json()).message;return e.json()}))})).catch((function(e){console.log("Unable to persist participant: "+e)}))}getProjectInfo(){const e=this;return this.connect().then((function(){return e.makeRequest("project","GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}getDeviceDataPoint(e){const t="devicedata/"+e,n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}deleteDeviceDataPoint(e){const t="devicedata/"+e,n=this;return this.connect().then((function(){return n.makeRequest(t,"DELETE",null)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}queryDeviceData(e){(e=Object.assign({},e)).hasOwnProperty("type")&&(e.type=s.reduceArrayAndEscape(e.type)),e.hasOwnProperty("observedBefore")&&(e.observedBefore=s.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=s.convertDateToIsoString(e.observedAfter));const t="devicedata?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}persistDeviceData(e){const t=this;return this.connect().then((function(){return t.makeRequest("devicedata","POST",e)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}queryDeviceDataV2(e){(e=Object.assign({},e)).hasOwnProperty("observedBefore")&&(e.observedBefore=s.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=s.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=s.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=s.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=s.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=s.convertDateToIsoString(e.modifiedAfter));const t="devicedata?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null,"v2")})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryDeviceDataV2Aggregate(e){(e=Object.assign({},e)).hasOwnProperty("aggregateFunctions")&&(e.aggregateFunctions=s.reduceArrayAndEscape(e.aggregateFunctions)),e.hasOwnProperty("observedBefore")&&(e.observedBefore=s.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=s.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=s.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=s.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=s.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=s.convertDateToIsoString(e.modifiedAfter));const t="devicedata/aggregate?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null,"v2")})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryDeviceDataV2DailySleep(e){(e=Object.assign({},e)).hasOwnProperty("observedBefore")&&(e.observedBefore=s.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=s.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=s.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=s.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=s.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=s.convertDateToIsoString(e.modifiedAfter));const t="devicedata/aggregate/dailysleep?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null,"v2")})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}getExternalAccountProviders(e,t,n,r){let a={};e&&(a.search=e),t&&(a.category=t),n&&(a.pageSize=n),r&&(a.pageNumber=r);const o="externalaccountproviders?"+new URLSearchParams(a).toString(),i=this;return this.connect().then((function(){return i.makeRequest(o,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}connectExternalAccount(e,t){return new Promise(((n,a)=>{const o=r.nextMessageID();if(r.messageHandlers[o]=function(e){e&&e.success?n():a(e.errorMessage)},this.standaloneMode){let n=(null==t?void 0:t.standaloneModeFinalRedirectPath)||window.location.href;const r=this;let i;if(null==t?void 0:t.openNewWindow){n=`${n.split("?")[0]}?connectExternalAccount=true&messageID=${o}&success=%SUCCESSVALUE%`;let e=null;if((null==t?void 0:t.width)&&(null==t?void 0:t.height)){const n=null==t?void 0:t.width,s=null==t?void 0:t.height;e="width="+n+",height="+s+",top="+(window.top.outerHeight/2+window.top.screenY-s/2)+",left="+(window.top.outerWidth/2+window.top.screenX-n/2)}i=window.open(`${this.baseUrl}home/loading`,"providerauth",e)}const d=new URLSearchParams({finalRedirectPath:n}).toString(),u="externalaccountproviders/"+e+"/connect?"+d;this.connect().then((function(){return r.makeRequest(u,"POST",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.text()})).then((function(e){i?i.location=e.replace(/['"]+/g,""):window.top.location=e.replace(/['"]+/g,"")})).catch((function(e){a(e)}))}else window.webkit.messageHandlers.ConnectExternalAccount&&window.webkit.messageHandlers.ConnectExternalAccount.postMessage(Object.assign({externalAccountProviderID:e,messageID:o},t))}))}getExternalAccounts(){const e=this;return this.connect().then((function(){return e.makeRequest("externalaccounts","GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}refreshExternalAccount(e){const t="externalaccounts/refresh/"+e,n=this;return this.connect().then((function(){return n.makeRequest(t,"POST",null)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}deleteExternalAccount(e){const t="externalaccounts/delete/"+encodeURIComponent(e),n=this;return this.isStandaloneMode()?this.connect().then((function(){return n.makeRequest(t,"DELETE",null)})).then((function(e){return s.validateResponse(e)})):new Promise((function(t,s){if(window.webkit.messageHandlers.DeleteProviderAccount){const r=n.nextMessageID();n.messageHandlers[r]=function(e){e.success?t(e):s(e)},window.webkit.messageHandlers.DeleteProviderAccount.postMessage({messageID:r,accountID:e})}else s()}))}queryNotifications(e){(e=Object.assign({},e)).hasOwnProperty("sentBefore")&&(e.sentBefore=s.convertDateToIsoString(e.sentBefore)),e.hasOwnProperty("sentAfter")&&(e.sentAfter=s.convertDateToIsoString(e.sentAfter));const t="notifications?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryFitbitDailySummaries(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=s.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=s.convertDateToIsoString(e.endDate));const t="fitbit/dailySummaries?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryFitbitSleepLogs(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=s.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=s.convertDateToIsoString(e.endDate));const t="fitbit/sleepLogs?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryAppleHealthActivitySummaries(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=s.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=s.convertDateToIsoString(e.endDate));const t="appleHealth/activitySummaries?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryAppleHealthWorkouts(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=s.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=s.convertDateToIsoString(e.endDate));const t="appleHealth/workouts?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}uploadFile(e,t){if(e.size>209715200)throw new Error("File size exceeds the maximum allowed size of 200MB.");const n=this,r="files?category="+t+"&fileName="+encodeURIComponent(e.name);return this.connect().then((function(){return n.makeRequest(r,"POST",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()})).then((function(t){return fetch(t.preSignedUrl,{method:"PUT",body:e,headers:{"Content-Type":e.type,"x-amz-server-side-encryption":"AES256"}})})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}queryFiles(e){const t="files?"+new URLSearchParams(e).toString(),n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}getFileDownloadUrl(e){if(!e)throw new Error("Please specify the key of the file to download.");const t="files/download?key="+e,n=this;return this.connect().then((function(){return n.makeRequest(t,"GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}deleteFile(e){if(!e)throw new Error("Please specify the key of the file to delete.");const t="files?key="+e,n=this;return this.connect().then((function(){return n.makeRequest(t,"DELETE",null)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}connect(){const e=this;let t=function(){e.token=null,e.refreshTokenPromise=new Promise((function(n,s){let r=e.nextMessageID();e.messageHandlers[r]=function(a){a.success?(e.tokenExpires=Date.now()+1e3*a.data.expires_in,e.token=a.data,e.baseUrl=a.baseUrl,setTimeout(t,1e3*(a.data.expires_in-e.accessTokenRenewalBufferSeconds)),n(null)):(e.token=null,s(a.message)),e.messageHandlers[r]=null,e.refreshTokenPromise=null},window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({messageID:r})}))};if(this.token&&Date.now()<this.tokenExpires)return Promise.resolve();if(this.isStandaloneMode()){let e=this.token?"access token is expired or invalid":"access token must be explicitly provided using the setParticipantAccess method";return console.log(e),Promise.reject(e)}return this.refreshTokenPromise||t(),this.refreshTokenPromise}setParticipantAccessToken(e,t){this.enableStandaloneMode(),this.token=e,t&&(this.baseUrl=t),this.tokenExpires=Date.now()+1e3*this.token.expires_in;const n=this;setTimeout((function(){n.triggerEvent({type:"tokenWillExpire"})}),1e3*(this.token.expires_in-this.accessTokenRenewalBufferSeconds))}isStandaloneMode(){return this.standaloneMode}enableStandaloneMode(){this.standaloneMode=!0,window.webkit&&(window.webkit.messageHandlers={})}setStatusBarStyle(e){window.webkit.messageHandlers.SetStatusBarStyle&&window.webkit.messageHandlers.SetStatusBarStyle.postMessage({style:e})}getDeviceInfo(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetDeviceInfo){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetDeviceInfo.postMessage({messageID:n})}else n()}))}setSupportedLanguages(e){this.supportedLanguages.length=0;for(let t=0;t<e.length;t++)this.supportedLanguages.push(e[t].replace("_","-"))}getStepConfiguration(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetStepConfiguration){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetStepConfiguration.postMessage({messageID:n})}else n()}))}getSurveyContext(){let e=this;return new Promise((function(t,n){e.isStandaloneMode()&&t(null),e.getDeviceInfo().then((function(s){if("Web"!==s.platform)t({surveyMode:"Survey"});else if(window.webkit.messageHandlers.GetSurveyContext){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetSurveyContext.postMessage({messageID:n})}else n()})).catch((function(e){n()}))}))}getCurrentSurveyAnswers(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetCurrentSurveyAnswers){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetCurrentSurveyAnswers.postMessage({messageID:n})}else n()}))}setCurrentLanguage(e){let t=this.getSupportedLanguage(e);t?this.language=t:console.warn(`language ${e} not supported`)}getCurrentLanguage(){let e,t=new URLSearchParams(window.location.search);if(t.has("lang")){if(e=this.getSupportedLanguage(t.get("lang")),e)return e;console.warn(`language ${t.get("lang")} not supported`)}return this.language||navigator.language}showGoogleFitSettings(){window.webkit.messageHandlers.ShowGoogleFitSettings&&window.webkit.messageHandlers.ShowGoogleFitSettings.postMessage({})}requestReview(e){window.webkit.messageHandlers.RequestReview&&window.webkit.messageHandlers.RequestReview.postMessage({cooldownDays:e})}trackCustomEvent(e){const t=this;return this.connect().then((function(){return t.makeRequest("customevents","POST",e)})).then((function(e){return s.validateResponse(e)})).then((function(){}))}getDataCollectionSettings(){const e=this;return this.connect().then((function(){return e.makeRequest("datacollectionsettings","GET",null)})).then((function(e){return s.validateResponse(e)})).then((function(e){return e.json()}))}invokeCustomApi(e,t,n,r){if(e.includes("?"))throw new Error('Cannot include query parameters directly in the "customApi" string. Provide as an argument for "queryParameters" instead.');let a="custom/"+e;if(t=t.toUpperCase(),null!=n&&("GET"===t||"DELETE"===t)){let e=new URLSearchParams(n).toString();a+="?"+e,n=null}const o=this;return this.connect().then((function(){return o.makeRequest(a,t,n)})).then((function(e){return s.validateResponse(e)})).then((function(e){return r?e.json():void 0}))}nextMessageID(){return this.currentMessageID++}getBaseUrl(){return this.baseUrl||"https://mydatahelps.org/"}makeUrl(e,t){if(!this.baseUrl)throw console.error("Cannot use makeUrl without MyDataHelps.baseUrl."),"Cannot use makeUrl without MyDataHelps.baseUrl.";return this.baseUrl+"api/"+t+"/delegated/"+e}makeRequest(e,t,n,s="v1"){if(!this.token||!this.token.access_token)throw"No access_token available for request authorization.";let r=this.makeUrl(e,s),a=new Headers;a.append("Authorization","Bearer "+this.token.access_token),a.append("Accept","application/json, text/javascript, */*; q=0.01"),a.append("Accept-Language",this.getCurrentLanguage()),n&&a.append("Content-Type","application/json");let o={method:t,headers:a};return n&&(o.body=JSON.stringify(n)),fetch(r,o)}getSupportedLanguage(e){return e=e.replace("_","-"),0===this.supportedLanguages.length||this.supportedLanguages.find((t=>t===e))||e.indexOf("-")>0&&(e=e.substring(0,e.indexOf("-")),this.supportedLanguages.find((t=>t===e)))?e:void 0}static validateResponse(e){if(!e.ok)throw e.statusText;return e}static escapeParam(e){return String(e).replace("\\","\\\\").replace(",","\\,")}static reduceArrayAndEscape(e){if(Array.isArray(e)){return e.map((function(e){return s.escapeParam(e)})).join(",")}return this.escapeParam(e)}static convertDateToIsoString(e){let t=new Date(e);if(isNaN(t.getTime()))throw"Cannot interpret parameter as Date";return t.toISOString()}startEmbeddedSurveyInternal(e){let t="mydatahelps-survey-modal",n=this;return new Promise((function(s,r){if(document.getElementById(t))return void r("Survey already in progress");window.addEventListener("message",(function e(r){if(r.origin!==new URL(n.getBaseUrl()).origin)return;let a=document.getElementById("mydatahelps-survey-frame").contentWindow;r.source===a&&("SurveyWindowInitialized"===r.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===r.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s(r.data)))}),!0);let a=document.createElement("div");a.className="mydatahelps-survey-modal",a.id=t,a.innerHTML="<div class='mydatahelps-survey'><div class='loader'>Loading...</div><iframe id='mydatahelps-survey-frame' allow='camera' sandbox='allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts' src='"+e+"'></iframe></div>",document.body.append(a),document.body.className+=" no-scroll"}))}startDelegatedSurvey(e){let t="mydatahelps-survey-modal",n=this;if(document.getElementById(t))return;window.addEventListener("message",(function e(s){if(s.origin!==new URL(n.getBaseUrl()).origin)return;let r=document.getElementById("mydatahelps-survey-frame").contentWindow;s.source===r&&("GetDelegatedAccessToken"===s.data.name?n.getParticipantInfo().then((e=>{r.postMessage({name:"DelegatedAccessTokenResponse",accessToken:n.token,baseUrl:n.baseUrl,participantID:e.participantID},"*")})):"SurveyWindowInitialized"===s.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===s.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s.data.type="surveyDidFinish",n.triggerEvent(s.data)))}),!0);let s=document.createElement("div");s.className="mydatahelps-survey-modal",s.id=t,s.innerHTML=`<div class='mydatahelps-survey'><div class='loader'>Loading...</div><iframe id='mydatahelps-survey-frame' allow='camera' sandbox='allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts' src='${e}&lang=${n.getCurrentLanguage()}'></iframe></div>`,document.body.append(s),document.body.className+=" no-scroll"}handleConnectExternalAccountResponse(){const e=new URLSearchParams(window.location.search);if(window.opener&&e.get("connectExternalAccount")&&e.get("messageID")&&e.get("success"))return window.opener.postMessage({name:"ConnectExternalAccountResponse",messageID:parseInt(e.get("messageID")),success:"true"===e.get("success")},window.location.origin),window.close(),!0}}const r=new s;window.MyDataHelps=r,window.RKStudioClient={},window.RKStudioClient.setActionResult=function(e){window.MyDataHelps.setActionResult(e)};export{s as MyDataHelps,r as default};
|
|
1
|
+
function e(e,t,n,s){return new(n||(n=Promise))((function(t,r){function o(e){try{i(s.next(e))}catch(e){r(e)}}function a(e){try{i(s.throw(e))}catch(e){r(e)}}function i(e){var s;e.done?t(e.value):(s=e.value,s instanceof n?s:new n((function(e){e(s)}))).then(o,a)}i((s=s.apply(e,[])).next())}))}class t{startSurvey(e){if(this.isStandaloneMode())this.startDelegatedSurvey(`${this.baseUrl}/survey?surveyName=${encodeURIComponent(e)}`);else if(window.webkit.messageHandlers.StartParticipantSurvey){let t=this.nextMessageID();window.webkit.messageHandlers.StartParticipantSurvey.postMessage({messageID:t,surveyName:e})}}completeStep(e){if(null==e&&(e=""),"string"!=typeof e&&(e=JSON.stringify(e)),window.webkit.messageHandlers.ResearchKit)window.webkit.messageHandlers.ResearchKit.postMessage(e);else if(window.webkit.messageHandlers.CompleteStep){let t=this.nextMessageID();window.webkit.messageHandlers.CompleteStep.postMessage({messageID:t,answer:e})}}querySurveyAnswers(e){(e=Object.assign({},e)).hasOwnProperty("surveyName")&&(e.surveyName=t.reduceArrayAndEscape(e.surveyName)),e.hasOwnProperty("stepIdentifier")&&(e.stepIdentifier=t.reduceArrayAndEscape(e.stepIdentifier)),e.hasOwnProperty("resultIdentifier")&&(e.resultIdentifier=t.reduceArrayAndEscape(e.resultIdentifier)),e.hasOwnProperty("answer")&&(e.answer=t.reduceArrayAndEscape(e.answer)),e.hasOwnProperty("before")&&(e.before=t.convertDateToIsoString(e.before)),e.hasOwnProperty("after")&&(e.after=t.convertDateToIsoString(e.after));const n="surveyanswers?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}deleteSurveyResult(e){const n="surveyresults/"+encodeURIComponent(e),s=this;return this.connect().then((function(){return s.makeRequest(n,"DELETE",null)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}querySurveyTasks(e){(e=Object.assign({},e)).hasOwnProperty("status")&&(e.status=t.reduceArrayAndEscape(e.status)),e.hasOwnProperty("surveyName")&&(e.surveyName=t.reduceArrayAndEscape(e.surveyName));const n="surveytasks?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryInboxItems(e){(e=((e,t)=>{for(const n of Object.keys(t)){const s=t[n];void 0!==s&&(e[n]=s)}return e})({},e)).hasOwnProperty("type")&&(e.type=t.reduceArrayAndEscape(e.type)),e.hasOwnProperty("status")&&(e.status=t.reduceArrayAndEscape(e.status));const n="inbox?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}getInboxItem(e){const n=`inbox/${e}`,s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}updateInboxItem(e,n){const s=`inbox/${e}/${n}`,r=this;return this.connect().then((function(){return r.makeRequest(s,"PUT",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}startEmbeddedSurvey(e,t,n){n||(n=this.getCurrentLanguage());let s=this.baseUrl+"mydatahelps/"+e+"/surveylink/"+t+"?lang="+n;return this.startEmbeddedSurveyInternal(s)}openExternalUrl(e){window.webkit.messageHandlers.OpenExternalLink&&window.webkit.messageHandlers.OpenExternalLink.postMessage(e)}openEmbeddedUrl(e){window.webkit.messageHandlers.OpenEmbeddedLink&&window.webkit.messageHandlers.OpenEmbeddedLink.postMessage(e)}showTab(e){window.webkit.messageHandlers.ShowTab&&window.webkit.messageHandlers.ShowTab.postMessage(e)}openApplication(e,t){if(window.webkit.messageHandlers.OpenExternalApplication){let n=this.nextMessageID();window.webkit.messageHandlers.OpenExternalApplication.postMessage({messageID:n,url:e,modal:!(!t||!t.modal)})}}dismiss(){window.webkit.messageHandlers.Dismiss&&window.webkit.messageHandlers.Dismiss.postMessage({})}back(){window.webkit.messageHandlers.PopNavigation&&window.webkit.messageHandlers.PopNavigation.postMessage({})}showDashboard(e,t){window.webkit.messageHandlers.ShowParticipantDashboard&&window.webkit.messageHandlers.ShowParticipantDashboard.postMessage({dashboardKey:e,modal:!(!t||!t.modal),title:t&&t.title?t.title:void 0})}showWebVisualization(e,t,n){window.webkit.messageHandlers.ShowParticipantWebVisualization&&window.webkit.messageHandlers.ShowParticipantWebVisualization.postMessage({visualizationKey:e,parameters:t,modal:!(!n||!n.modal),title:n&&n.title?n.title:void 0})}showWebVisualizationPdf(e,t,n){window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF&&window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF.postMessage({visualizationKey:e,parameters:t,landscape:!(!n||!n.landscape),htmlViewerZoom:n&&n.htmlViewerZoom})}showProject(e){window.webkit.messageHandlers.ShowProject&&window.webkit.messageHandlers.ShowProject.postMessage({code:e})}joinProject(e){window.webkit.messageHandlers.JoinProject&&window.webkit.messageHandlers.JoinProject.postMessage({code:e})}on(e,t){if(!this.supportedEvents.includes(e))throw new Error(e+" is not a supported event type.");this.registeredEventHandlers[e]||(this.registeredEventHandlers[e]=[]),this.registeredEventHandlers[e].push(t)}off(e,t){if(!this.supportedEvents.includes(e))throw new Error(e+" is not a supported event type.");if(!this.registeredEventHandlers[e])return;let n=this.registeredEventHandlers[e].indexOf(t);-1!==n&&this.registeredEventHandlers[e].splice(n,1)}triggerEvent(e){let t=e.type;this.supportedEvents.includes(t)&&this.registeredEventHandlers[t]&&this.registeredEventHandlers[t].forEach((function(t){t(e)}))}setActionResult(e){this.messageHandlers[e.messageID](e)}getParticipantInfo(){const e=this;return this.connect().then((function(){return e.makeRequest("participant","GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}persistParticipantInfo(t,n){const s=this;return this.connect().then((function(){return s.makeRequest("participant","PUT",{demographics:t,customFields:n})})).then((function(t){return e(this,0,void 0,(function*(){if(!t.ok)throw(yield t.json()).message;return t.json()}))})).catch((function(e){console.log("Unable to persist participant: "+e)}))}getProjectInfo(){const e=this;return this.connect().then((function(){return e.makeRequest("project","GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}getDeviceDataPoint(e){const n="devicedata/"+e,s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}deleteDeviceDataPoint(e){const n="devicedata/"+e,s=this;return this.connect().then((function(){return s.makeRequest(n,"DELETE",null)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}queryDeviceData(e){(e=Object.assign({},e)).hasOwnProperty("type")&&(e.type=t.reduceArrayAndEscape(e.type)),e.hasOwnProperty("observedBefore")&&(e.observedBefore=t.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=t.convertDateToIsoString(e.observedAfter));const n="devicedata?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}persistDeviceData(e){const n=this;return this.connect().then((function(){return n.makeRequest("devicedata","POST",e)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}queryDeviceDataV2(e){(e=Object.assign({},e)).hasOwnProperty("observedBefore")&&(e.observedBefore=t.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=t.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=t.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=t.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=t.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=t.convertDateToIsoString(e.modifiedAfter));const n="devicedata?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null,"v2")})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryDeviceDataV2Aggregate(e){(e=Object.assign({},e)).hasOwnProperty("aggregateFunctions")&&(e.aggregateFunctions=t.reduceArrayAndEscape(e.aggregateFunctions)),e.hasOwnProperty("observedBefore")&&(e.observedBefore=t.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=t.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=t.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=t.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=t.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=t.convertDateToIsoString(e.modifiedAfter));const n="devicedata/aggregate?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null,"v2")})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryDeviceDataV2DailySleep(e){(e=Object.assign({},e)).hasOwnProperty("observedBefore")&&(e.observedBefore=t.convertDateToIsoString(e.observedBefore)),e.hasOwnProperty("observedAfter")&&(e.observedAfter=t.convertDateToIsoString(e.observedAfter)),e.hasOwnProperty("insertedBefore")&&(e.insertedBefore=t.convertDateToIsoString(e.insertedBefore)),e.hasOwnProperty("insertedAfter")&&(e.insertedAfter=t.convertDateToIsoString(e.insertedAfter)),e.hasOwnProperty("modifiedBefore")&&(e.modifiedBefore=t.convertDateToIsoString(e.modifiedBefore)),e.hasOwnProperty("modifiedAfter")&&(e.modifiedAfter=t.convertDateToIsoString(e.modifiedAfter));const n="devicedata/aggregate/dailysleep?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null,"v2")})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}getExternalAccountProviders(e,n,s,r){let o={};e&&(o.search=e),n&&(o.category=n),s&&(o.pageSize=s),r&&(o.pageNumber=r);const a="externalaccountproviders?"+new URLSearchParams(o).toString(),i=this;return this.connect().then((function(){return i.makeRequest(a,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}connectExternalAccount(e,s){return new Promise(((r,o)=>{const a=n.nextMessageID();if(n.messageHandlers[a]=function(e){e&&e.success?r():o(e.errorMessage)},this.standaloneMode){let n=(null==s?void 0:s.standaloneModeFinalRedirectPath)||window.location.href;const r=this;let i;if(null==s?void 0:s.openNewWindow){n=`${n.split("?")[0]}?connectExternalAccount=true&messageID=${a}&success=%SUCCESSVALUE%`;let e=null;if((null==s?void 0:s.width)&&(null==s?void 0:s.height)){const t=null==s?void 0:s.width,n=null==s?void 0:s.height;e="width="+t+",height="+n+",top="+(window.top.outerHeight/2+window.top.screenY-n/2)+",left="+(window.top.outerWidth/2+window.top.screenX-t/2)}i=window.open(`${this.baseUrl}home/loading`,"providerauth",e)}const c=new URLSearchParams({finalRedirectPath:n}).toString(),u="externalaccountproviders/"+e+"/connect?"+c;this.connect().then((function(){return r.makeRequest(u,"POST",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.text()})).then((function(e){i?i.location=e.replace(/['"]+/g,""):window.top.location=e.replace(/['"]+/g,"")})).catch((function(e){o(e)}))}else window.webkit.messageHandlers.ConnectExternalAccount&&window.webkit.messageHandlers.ConnectExternalAccount.postMessage(Object.assign({externalAccountProviderID:e,messageID:a},s))}))}getExternalAccounts(){const e=this;return this.connect().then((function(){return e.makeRequest("externalaccounts","GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}refreshExternalAccount(e){const n="externalaccounts/refresh/"+e,s=this;return this.connect().then((function(){return s.makeRequest(n,"POST",null)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}deleteExternalAccount(e){const n="externalaccounts/delete/"+encodeURIComponent(e),s=this;return this.isStandaloneMode()?this.connect().then((function(){return s.makeRequest(n,"DELETE",null)})).then((function(e){return t.validateResponse(e)})):new Promise((function(t,n){if(window.webkit.messageHandlers.DeleteProviderAccount){const r=s.nextMessageID();s.messageHandlers[r]=function(e){e.success?t(e):n(e)},window.webkit.messageHandlers.DeleteProviderAccount.postMessage({messageID:r,accountID:e})}else n()}))}queryNotifications(e){(e=Object.assign({},e)).hasOwnProperty("sentBefore")&&(e.sentBefore=t.convertDateToIsoString(e.sentBefore)),e.hasOwnProperty("sentAfter")&&(e.sentAfter=t.convertDateToIsoString(e.sentAfter));const n="notifications?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryFitbitDailySummaries(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=t.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=t.convertDateToIsoString(e.endDate));const n="fitbit/dailySummaries?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryFitbitSleepLogs(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=t.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=t.convertDateToIsoString(e.endDate));const n="fitbit/sleepLogs?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryAppleHealthActivitySummaries(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=t.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=t.convertDateToIsoString(e.endDate));const n="appleHealth/activitySummaries?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryAppleHealthWorkouts(e){(e=Object.assign({},e)).hasOwnProperty("startDate")&&(e.startDate=t.convertDateToIsoString(e.startDate)),e.hasOwnProperty("endDate")&&(e.endDate=t.convertDateToIsoString(e.endDate));const n="appleHealth/workouts?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}uploadFile(e,n){if(e.size>209715200)throw new Error("File size exceeds the maximum allowed size of 200MB.");const s=this,r="files?category="+n+"&fileName="+encodeURIComponent(e.name);return this.connect().then((function(){return s.makeRequest(r,"POST",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()})).then((function(t){return fetch(t.preSignedUrl,{method:"PUT",body:e,headers:{"Content-Type":e.type,"x-amz-server-side-encryption":"AES256"}})})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}queryFiles(e){const n="files?"+new URLSearchParams(e).toString(),s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}getFileDownloadUrl(e){if(!e)throw new Error("Please specify the key of the file to download.");const n="files/download?key="+e,s=this;return this.connect().then((function(){return s.makeRequest(n,"GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}deleteFile(e){if(!e)throw new Error("Please specify the key of the file to delete.");const n="files?key="+e,s=this;return this.connect().then((function(){return s.makeRequest(n,"DELETE",null)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}connect(){const e=this;let t=function(){e.token=null,e.refreshTokenPromise=new Promise((function(n,s){let r=e.nextMessageID();e.messageHandlers[r]=function(o){o.success?(e.tokenExpires=Date.now()+1e3*o.data.expires_in,e.token=o.data,e.baseUrl=o.baseUrl,setTimeout(t,1e3*(o.data.expires_in-e.accessTokenRenewalBufferSeconds)),n(null)):(e.token=null,s(o.message)),e.messageHandlers[r]=null,e.refreshTokenPromise=null},window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({messageID:r})}))};if(this.token&&Date.now()<this.tokenExpires)return Promise.resolve();if(this.isStandaloneMode()){let e=this.token?"access token is expired or invalid":"access token must be explicitly provided using the setParticipantAccess method";return console.log(e),Promise.reject(e)}return this.refreshTokenPromise||t(),this.refreshTokenPromise}setParticipantAccessToken(e,t){this.enableStandaloneMode(),this.token=e,t&&(this.baseUrl=t),this.tokenExpires=Date.now()+1e3*this.token.expires_in;const n=this;setTimeout((function(){n.triggerEvent({type:"tokenWillExpire"})}),1e3*(this.token.expires_in-this.accessTokenRenewalBufferSeconds))}isStandaloneMode(){return this.standaloneMode}enableStandaloneMode(){this.standaloneMode=!0,window.webkit&&(window.webkit.messageHandlers={})}setStatusBarStyle(e){window.webkit.messageHandlers.SetStatusBarStyle&&window.webkit.messageHandlers.SetStatusBarStyle.postMessage({style:e})}getDeviceInfo(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetDeviceInfo){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetDeviceInfo.postMessage({messageID:n})}else n()}))}setSupportedLanguages(e){this.supportedLanguages.length=0;for(let t=0;t<e.length;t++)this.supportedLanguages.push(e[t].replace("_","-"))}getStepConfiguration(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetStepConfiguration){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetStepConfiguration.postMessage({messageID:n})}else n()}))}getSurveyContext(){let e=this;return new Promise((function(t,n){e.isStandaloneMode()&&t(null),e.getDeviceInfo().then((function(s){if("Web"!==s.platform)t({surveyMode:"Survey"});else if(window.webkit.messageHandlers.GetSurveyContext){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetSurveyContext.postMessage({messageID:n})}else n()})).catch((function(e){n()}))}))}getCurrentSurveyAnswers(){let e=this;return new Promise((function(t,n){if(e.isStandaloneMode())t(null);else if(window.webkit.messageHandlers.GetCurrentSurveyAnswers){let n=e.nextMessageID();e.messageHandlers[n]=function(e){t(e.data)},window.webkit.messageHandlers.GetCurrentSurveyAnswers.postMessage({messageID:n})}else n()}))}setCurrentLanguage(e){if(e){let t=this.getSupportedLanguage(e);t?this.language=t:console.warn(`language ${e} not supported`)}else this.language=e}getCurrentLanguage(){let e,t=new URLSearchParams(window.location.search);if(t.has("lang")){if(e=this.getSupportedLanguage(t.get("lang")),e)return e;console.warn(`language ${t.get("lang")} not supported`)}return this.language||navigator.language}showGoogleFitSettings(){window.webkit.messageHandlers.ShowGoogleFitSettings&&window.webkit.messageHandlers.ShowGoogleFitSettings.postMessage({})}requestReview(e){window.webkit.messageHandlers.RequestReview&&window.webkit.messageHandlers.RequestReview.postMessage({cooldownDays:e})}trackCustomEvent(e){const n=this;return this.connect().then((function(){return n.makeRequest("customevents","POST",e)})).then((function(e){return t.validateResponse(e)})).then((function(){}))}getDataCollectionSettings(){const e=this;return this.connect().then((function(){return e.makeRequest("datacollectionsettings","GET",null)})).then((function(e){return t.validateResponse(e)})).then((function(e){return e.json()}))}invokeCustomApi(e,n,s,r){if(e.includes("?"))throw new Error('Cannot include query parameters directly in the "customApi" string. Provide as an argument for "queryParameters" instead.');let o="custom/"+e;if(n=n.toUpperCase(),null!=s&&("GET"===n||"DELETE"===n)){let e=new URLSearchParams(s).toString();o+="?"+e,s=null}const a=this;return this.connect().then((function(){return a.makeRequest(o,n,s)})).then((function(e){return t.validateResponse(e)})).then((function(e){return r?e.json():void 0}))}constructor(){if(this.baseUrl="https://mydatahelps.org/",this.acceptableParentDomains=["localhost","careevolution.com","internal","b3-deploys.com","mydatahelps.org","platform.joinallofus.org","careevolution.dev","ce.dev","mydatahelps.dev"],this.accessTokenRenewalBufferSeconds=120,this.unsupportedActions=["SetHeight","ResearchKit"],this.supportedEvents=["surveyDidFinish","applicationDidBecomeVisible","externalAccountSyncComplete","tokenWillExpire"],this.supportedLanguages=[],this.currentMessageID=1,this.messageHandlers=[],this.registeredEventHandlers={},this.refreshTokenPromise=null,this.standaloneMode=!1,this.handleConnectExternalAccountResponse())return;let e,t=this,n=function(){let e=document.location.ancestorOrigins;if(e&&e[0])return e[0];return"*"}();function s(e){if("*"===e)return!0;let n=new URL(e);for(let e=0;e<t.acceptableParentDomains.length;e++)if(n.hostname===t.acceptableParentDomains[e]||n.hostname.endsWith("."+t.acceptableParentDomains[e]))return!0;return!1}s(n)||console.log("Detected unsupported parent origin domain."),e=window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.ResearchKit?{GetDelegatedAccessToken:function(e){window.parent.postMessage({name:"GetDelegatedAccessToken",messageID:e.messageID},n)},OpenExternalLink:function(e){window.parent.postMessage({name:"OpenExternalUrl",url:e},n)},OpenEmbeddedLink:function(e){window.parent.postMessage({name:"OpenEmbeddedUrl",url:e},n)},GetCurrentSurveyAnswers:function(e){window.parent.postMessage({name:"GetCurrentSurveyAnswers",messageID:e.messageID},n)},GetStepConfiguration:function(e){window.parent.postMessage({name:"GetStepConfiguration",messageID:e.messageID},n)},GetSurveyContext:function(e){window.parent.postMessage({name:"GetSurveyContext",messageID:e.messageID},n)},CompleteStep:function(e){window.parent.postMessage({name:"CompleteStep",messageID:e.messageID,answer:e.answer},n)}}:{GetDelegatedAccessToken:function(e){window.parent.postMessage({name:"GetDelegatedAccessToken",messageID:e.messageID},n)},GetDeviceInfo:function(e){window.parent.postMessage({name:"GetDeviceInfo",messageID:e.messageID},n)},StartParticipantSurvey:function(e){window.parent.postMessage({name:"StartParticipantSurvey",messageID:e.messageID,surveyName:e.surveyName},n)},OpenExternalLink:function(e){window.parent.postMessage({name:"OpenExternalUrl",url:e},n)},OpenEmbeddedLink:function(e){window.parent.postMessage({name:"OpenEmbeddedUrl",url:e},n)},OpenExternalApplication:function(e){window.parent.postMessage({name:"OpenApplication",messageID:e.messageID,url:e.url,modal:e.modal},n)},Dismiss:function(){window.parent.postMessage({name:"Dismiss"},n)},PopNavigation:function(){window.parent.postMessage({name:"Back"},n)},ShowTab:function(e){window.parent.postMessage({name:"ShowTab",tabKey:e},n)},ShowParticipantDashboard:function(e){window.parent.postMessage({name:"ShowParticipantDashboard",dashboardKey:e.dashboardKey,modal:e.modal},n)},ShowParticipantWebVisualization:function(e){window.parent.postMessage({name:"ShowParticipantWebVisualization",visualizationKey:e.visualizationKey,parameters:e.parameters,modal:e.modal},n)},ShowParticipantWebVisualizationPDF:function(e){window.parent.postMessage({name:"ShowParticipantWebVisualizationPDF",visualizationKey:e.visualizationKey,parameters:e.parameters,modal:e.modal,landscape:e.landscape,htmlViewerZoom:e.htmlViewerZoom},n)},DeleteProviderAccount:function(e){window.parent.postMessage({name:"DeleteProviderAccount",messageID:e.messageID,accountID:e.accountID},n)},ConnectExternalAccount:function(e){window.parent.postMessage({name:"ConnectExternalAccount",externalAccountProviderID:e.externalAccountProviderID,messageID:e.messageID,openNewWindow:e.openNewWindow,width:e.width,height:e.height},n)},ShowProject:function(e){window.parent.postMessage({name:"ShowProject",code:e.code},n)},JoinProject:function(e){window.parent.postMessage({name:"JoinProject",code:e.code},n)},GetCurrentSurveyAnswers:function(e){window.parent.postMessage({name:"GetCurrentSurveyAnswers",messageID:e.messageID},n)},GetStepConfiguration:function(e){window.parent.postMessage({name:"GetStepConfiguration",messageID:e.messageID},n)},CompleteStep:function(e){window.parent.postMessage({name:"CompleteStep",messageID:e.messageID,answer:e.answer},n)}},window.webkit&&window.webkit.messageHandlers&&function(){for(let t in e)if(window.webkit.messageHandlers[t])return!0;for(let e in t.unsupportedActions)if(window.webkit.messageHandlers[t.unsupportedActions[e]])return!0;return!1}()||(window.webkit={messageHandlers:{}}),function(e){for(let t in e)if(!window.webkit.messageHandlers[t])try{window.webkit.messageHandlers[t]={postMessage:e[t]}}catch(e){return void console.log("Unable to add missing actions on this platform: "+e)}}(e),window.addEventListener("message",(function(e){if(!function(e){return!(!t.isStandaloneMode()||e.origin!==window.location.origin)||("*"===n?s(e.origin):e.origin===n)}(e))throw console.error("message.origin '"+e.origin+"' is not allowed."),"message.origin '"+e.origin+"' is not allowed.";e.data.messageID?t.setActionResult(e.data):t.triggerEvent(e.data)}),!1)}nextMessageID(){return this.currentMessageID++}makeUrl(e,t){if(!this.baseUrl)throw console.error("Cannot use makeUrl without MyDataHelps.baseUrl."),"Cannot use makeUrl without MyDataHelps.baseUrl.";return this.baseUrl+"api/"+t+"/delegated/"+e}makeRequest(e,t,n,s="v1"){if(!this.token||!this.token.access_token)throw"No access_token available for request authorization.";let r=this.makeUrl(e,s),o=new Headers;o.append("Authorization","Bearer "+this.token.access_token),o.append("Accept","application/json, text/javascript, */*; q=0.01"),o.append("Accept-Language",this.getCurrentLanguage()),n&&o.append("Content-Type","application/json");let a={method:t,headers:o};return n&&(a.body=JSON.stringify(n)),fetch(r,a)}getSupportedLanguage(e){return e=e.replace("_","-"),0===this.supportedLanguages.length||this.supportedLanguages.find((t=>t===e))||e.indexOf("-")>0&&(e=e.substring(0,e.indexOf("-")),this.supportedLanguages.find((t=>t===e)))?e:void 0}static validateResponse(e){if(!e.ok)throw e.statusText;return e}static escapeParam(e){return String(e).replace("\\","\\\\").replace(",","\\,")}static reduceArrayAndEscape(e){if(Array.isArray(e)){return e.map((function(e){return t.escapeParam(e)})).join(",")}return this.escapeParam(e)}static convertDateToIsoString(e){let t=new Date(e);if(isNaN(t.getTime()))throw"Cannot interpret parameter as Date";return t.toISOString()}startEmbeddedSurveyInternal(e){let t="mydatahelps-survey-modal",n=this;return new Promise((function(s,r){if(document.getElementById(t))return void r("Survey already in progress");window.addEventListener("message",(function e(r){if(r.origin!==new URL(n.baseUrl).origin)return;let o=document.getElementById("mydatahelps-survey-frame").contentWindow;r.source===o&&("SurveyWindowInitialized"===r.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===r.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s(r.data)))}),!0);let o=document.createElement("div");o.className="mydatahelps-survey-modal",o.id=t,o.innerHTML="<div class='mydatahelps-survey'><div class='loader'>Loading...</div><iframe id='mydatahelps-survey-frame' allow='camera' sandbox='allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts' src='"+e+"'></iframe></div>",document.body.append(o),document.body.className+=" no-scroll"}))}startDelegatedSurvey(e){let t="mydatahelps-survey-modal",n=this;if(document.getElementById(t))return;window.addEventListener("message",(function e(s){if(s.origin!==new URL(n.baseUrl).origin)return;let r=document.getElementById("mydatahelps-survey-frame").contentWindow;s.source===r&&("GetDelegatedAccessToken"===s.data.name?n.getParticipantInfo().then((e=>{r.postMessage({name:"DelegatedAccessTokenResponse",accessToken:n.token,baseUrl:n.baseUrl,participantID:e.participantID},"*")})):"SurveyWindowInitialized"===s.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===s.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s.data.type="surveyDidFinish",n.triggerEvent(s.data)))}),!0);let s=document.createElement("div");s.className="mydatahelps-survey-modal",s.id=t,s.innerHTML=`<div class='mydatahelps-survey'><div class='loader'>Loading...</div><iframe id='mydatahelps-survey-frame' allow='camera' sandbox='allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts' src='${e}&lang=${n.getCurrentLanguage()}'></iframe></div>`,document.body.append(s),document.body.className+=" no-scroll"}handleConnectExternalAccountResponse(){const e=new URLSearchParams(window.location.search);if(window.opener&&e.get("connectExternalAccount")&&e.get("messageID")&&e.get("success"))return window.opener.postMessage({name:"ConnectExternalAccountResponse",messageID:parseInt(e.get("messageID")),success:"true"===e.get("success")},window.location.origin),window.close(),!0}}const n=new t;window.MyDataHelps=n,window.RKStudioClient={},window.RKStudioClient.setActionResult=function(e){window.MyDataHelps.setActionResult(e)};export{t as MyDataHelps,n as default};
|
|
2
2
|
//# sourceMappingURL=MyDataHelps.min.js.map
|