@careevolution/mydatahelps-js 3.11.0 → 3.11.1

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 CHANGED
@@ -55,7 +55,7 @@ export declare class MyDataHelps {
55
55
  getDeviceInfo(): Promise<Model.DeviceInfo>;
56
56
  setSupportedLanguages(languages: string[]): void;
57
57
  getStepConfiguration(): Promise<Model.StepConfiguration>;
58
- getSurveyContext(): Promise<unknown>;
58
+ getSurveyContext(): Promise<Model.SurveyContext>;
59
59
  getCurrentSurveyAnswers(): Promise<Model.CurrentSurveyAnswer[]>;
60
60
  setCurrentLanguage(language: string): void;
61
61
  getCurrentLanguage(): string;
package/MyDataHelps.js CHANGED
@@ -1050,18 +1050,23 @@ class MyDataHelps {
1050
1050
  if (mdh.isStandaloneMode()) {
1051
1051
  resolve(null);
1052
1052
  }
1053
- else if (window.webkit.messageHandlers.GetSurveyContext) {
1054
- let messageID = mdh.nextMessageID();
1055
- mdh.messageHandlers[messageID] = function (surveyContextResponse) {
1056
- resolve(surveyContextResponse.data);
1057
- };
1058
- window.webkit.messageHandlers.GetSurveyContext.postMessage({ messageID: messageID });
1059
- }
1060
- else {
1061
- // if no handler is registered we are running outside a WebViewStep or in a non-web platform
1062
- // and can just return Survey mode
1063
- resolve({ surveyMode: "Survey" });
1064
- }
1053
+ mdh.getDeviceInfo().then(function (deviceInfo) {
1054
+ if (deviceInfo.platform !== "Web") {
1055
+ resolve({ surveyMode: "Survey" });
1056
+ }
1057
+ else if (window.webkit.messageHandlers.GetSurveyContext) {
1058
+ let messageID = mdh.nextMessageID();
1059
+ mdh.messageHandlers[messageID] = function (surveyContextResponse) {
1060
+ resolve(surveyContextResponse.data);
1061
+ };
1062
+ window.webkit.messageHandlers.GetSurveyContext.postMessage({ messageID: messageID });
1063
+ }
1064
+ else {
1065
+ reject();
1066
+ }
1067
+ }).catch(function (error) {
1068
+ reject();
1069
+ });
1065
1070
  });
1066
1071
  }
1067
1072
  getCurrentSurveyAnswers() {
@@ -1,2 +1,2 @@
1
- var e=[],t=[];!function(n,s){if(n&&"undefined"!=typeof document){var a,r=!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]={}),a=t[d]&&t[d][r]?t[d][r]:t[d][r]=l()}else a=l();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function l(){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 a="prepend"===r?"afterbegin":"beforeend";return i.insertAdjacentElement(a,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(a,r){function o(e){try{d(s.next(e))}catch(e){r(e)}}function i(e){try{d(s.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?a(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.apiBasePath="api/v1/delegated/",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}`,a=this;return this.connect().then((function(){return a.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(){}))}getExternalAccountProviders(e,t,n,a){let r={};e&&(r.search=e),t&&(r.category=t),n&&(r.pageSize=n),a&&(r.pageNumber=a);const o="externalaccountproviders?"+new URLSearchParams(r).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,r)=>{const o=a.nextMessageID();if(a.messageHandlers[o]=function(e){e&&e.success?n():r(e.errorMessage)},this.standaloneMode){let n=(null==t?void 0:t.standaloneModeFinalRedirectPath)||window.location.href;const a=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(),l="externalaccountproviders/"+e+"/connect?"+d;this.connect().then((function(){return a.makeRequest(l,"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){r(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 a=n.nextMessageID();n.messageHandlers[a]=function(e){e.success?t(e):s(e)},window.webkit.messageHandlers.DeleteProviderAccount.postMessage({messageID:a,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()}))}connect(){const e=this;let t=function(){e.token=null,e.refreshTokenPromise=new Promise((function(n,s){let a=e.nextMessageID();e.messageHandlers[a]=function(r){r.success?(e.tokenExpires=Date.now()+1e3*r.data.expires_in,e.token=r.data,e.baseUrl=r.baseUrl,setTimeout(t,1e3*(r.data.expires_in-e.accessTokenRenewalBufferSeconds)),n(null)):(e.token=null,s(r.message)),e.messageHandlers[a]=null,e.refreshTokenPromise=null},window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({messageID:a})}))};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){if(e.isStandaloneMode())t(null);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 t({surveyMode:"Survey"})}))}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,a){if(e.includes("?"))throw new Error('Cannot include query parameters directly in the "customApi" string. Provide as an argument for "queryParameters" instead.');let r="custom/"+e;if(t=t.toUpperCase(),null!=n&&("GET"===t||"DELETE"===t)){let e=new URLSearchParams(n).toString();r+="?"+e,n=null}const o=this;return this.connect().then((function(){return o.makeRequest(r,t,n)})).then((function(e){return s.validateResponse(e)})).then((function(e){return a?e.json():void 0}))}nextMessageID(){return this.currentMessageID++}getBaseUrl(){return this.baseUrl||"https://mydatahelps.org/"}makeUrl(e){if(!this.baseUrl)throw console.error("Cannot use makeUrl without MyDataHelps.baseUrl."),"Cannot use makeUrl without MyDataHelps.baseUrl.";return this.baseUrl+this.apiBasePath+e}makeRequest(e,t,n){if(!this.token||!this.token.access_token)throw"No access_token available for request authorization.";let s=this.makeUrl(e),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 r={method:t,headers:a};return n&&(r.body=JSON.stringify(n)),fetch(s,r)}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,a){if(document.getElementById(t))return void a("Survey already in progress");window.addEventListener("message",(function e(a){if(a.origin!==new URL(n.getBaseUrl()).origin)return;let r=document.getElementById("mydatahelps-survey-frame").contentWindow;a.source===r&&("SurveyWindowInitialized"===a.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===a.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s(a.data)))}),!0);let r=document.createElement("div");r.className="mydatahelps-survey-modal",r.id=t,r.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(r),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 a=document.getElementById("mydatahelps-survey-frame").contentWindow;s.source===a&&("GetDelegatedAccessToken"===s.data.name?n.getParticipantInfo().then((e=>{a.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 a=new s;window.MyDataHelps=a,window.RKStudioClient={},window.RKStudioClient.setActionResult=function(e){window.MyDataHelps.setActionResult(e)};export{s as MyDataHelps,a as default};
1
+ var e=[],t=[];!function(n,s){if(n&&"undefined"!=typeof document){var a,r=!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]={}),a=t[d]&&t[d][r]?t[d][r]:t[d][r]=l()}else a=l();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function l(){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 a="prepend"===r?"afterbegin":"beforeend";return i.insertAdjacentElement(a,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(a,r){function o(e){try{d(s.next(e))}catch(e){r(e)}}function i(e){try{d(s.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?a(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.apiBasePath="api/v1/delegated/",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}`,a=this;return this.connect().then((function(){return a.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(){}))}getExternalAccountProviders(e,t,n,a){let r={};e&&(r.search=e),t&&(r.category=t),n&&(r.pageSize=n),a&&(r.pageNumber=a);const o="externalaccountproviders?"+new URLSearchParams(r).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,r)=>{const o=a.nextMessageID();if(a.messageHandlers[o]=function(e){e&&e.success?n():r(e.errorMessage)},this.standaloneMode){let n=(null==t?void 0:t.standaloneModeFinalRedirectPath)||window.location.href;const a=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(),l="externalaccountproviders/"+e+"/connect?"+d;this.connect().then((function(){return a.makeRequest(l,"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){r(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 a=n.nextMessageID();n.messageHandlers[a]=function(e){e.success?t(e):s(e)},window.webkit.messageHandlers.DeleteProviderAccount.postMessage({messageID:a,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()}))}connect(){const e=this;let t=function(){e.token=null,e.refreshTokenPromise=new Promise((function(n,s){let a=e.nextMessageID();e.messageHandlers[a]=function(r){r.success?(e.tokenExpires=Date.now()+1e3*r.data.expires_in,e.token=r.data,e.baseUrl=r.baseUrl,setTimeout(t,1e3*(r.data.expires_in-e.accessTokenRenewalBufferSeconds)),n(null)):(e.token=null,s(r.message)),e.messageHandlers[a]=null,e.refreshTokenPromise=null},window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({messageID:a})}))};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,a){if(e.includes("?"))throw new Error('Cannot include query parameters directly in the "customApi" string. Provide as an argument for "queryParameters" instead.');let r="custom/"+e;if(t=t.toUpperCase(),null!=n&&("GET"===t||"DELETE"===t)){let e=new URLSearchParams(n).toString();r+="?"+e,n=null}const o=this;return this.connect().then((function(){return o.makeRequest(r,t,n)})).then((function(e){return s.validateResponse(e)})).then((function(e){return a?e.json():void 0}))}nextMessageID(){return this.currentMessageID++}getBaseUrl(){return this.baseUrl||"https://mydatahelps.org/"}makeUrl(e){if(!this.baseUrl)throw console.error("Cannot use makeUrl without MyDataHelps.baseUrl."),"Cannot use makeUrl without MyDataHelps.baseUrl.";return this.baseUrl+this.apiBasePath+e}makeRequest(e,t,n){if(!this.token||!this.token.access_token)throw"No access_token available for request authorization.";let s=this.makeUrl(e),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 r={method:t,headers:a};return n&&(r.body=JSON.stringify(n)),fetch(s,r)}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,a){if(document.getElementById(t))return void a("Survey already in progress");window.addEventListener("message",(function e(a){if(a.origin!==new URL(n.getBaseUrl()).origin)return;let r=document.getElementById("mydatahelps-survey-frame").contentWindow;a.source===r&&("SurveyWindowInitialized"===a.data.name?document.getElementById(t).className+=" loaded":"SurveyFinished"===a.data.name&&(document.getElementById(t).remove(),document.body.className=document.body.className.replace("no-scroll",""),window.removeEventListener("message",e,!0),s(a.data)))}),!0);let r=document.createElement("div");r.className="mydatahelps-survey-modal",r.id=t,r.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(r),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 a=document.getElementById("mydatahelps-survey-frame").contentWindow;s.source===a&&("GetDelegatedAccessToken"===s.data.name?n.getParticipantInfo().then((e=>{a.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 a=new s;window.MyDataHelps=a,window.RKStudioClient={},window.RKStudioClient.setActionResult=function(e){window.MyDataHelps.setActionResult(e)};export{s as MyDataHelps,a as default};
2
2
  //# sourceMappingURL=MyDataHelps.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyDataHelps.min.js","sources":["../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../MyDataHelps.js"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// @ts-ignore : let rollup handle CSS injection\nimport \"../MyDataHelps.css\";\nexport class MyDataHelps {\n constructor() {\n this.acceptableParentDomains = [\n 'localhost',\n 'careevolution.com',\n 'internal',\n 'b3-deploys.com',\n 'mydatahelps.org',\n 'platform.joinallofus.org',\n 'careevolution.dev',\n 'ce.dev',\n 'mydatahelps.dev'\n ];\n this.accessTokenRenewalBufferSeconds = 120;\n this.apiBasePath = 'api/v1/delegated/';\n this.unsupportedActions = [\"SetHeight\", \"ResearchKit\"];\n this.supportedEvents = [\"surveyDidFinish\", \"applicationDidBecomeVisible\", \"externalAccountSyncComplete\", \"tokenWillExpire\"];\n this.supportedLanguages = [];\n this.currentMessageID = 1;\n this.messageHandlers = [];\n this.registeredEventHandlers = {};\n this.refreshTokenPromise = null;\n this.standaloneMode = false;\n if (this.handleConnectExternalAccountResponse()) {\n return;\n }\n let mdh = this;\n let applicationHost = getParentOrigin();\n let supportedActions;\n function getParentOrigin() {\n let ancestorOrigins = document.location.ancestorOrigins;\n if (ancestorOrigins && ancestorOrigins[0]) {\n return ancestorOrigins[0];\n }\n return '*';\n }\n function acceptableOrigin(origin) {\n if (origin === '*')\n return true;\n let sourceURL = new URL(origin);\n for (let k = 0; k < mdh.acceptableParentDomains.length; k++) {\n if (sourceURL.hostname === mdh.acceptableParentDomains[k] || sourceURL.hostname.endsWith(\".\" + mdh.acceptableParentDomains[k])) {\n return true;\n }\n }\n return false;\n }\n function validateWindowMessageOrigin(message) {\n if (mdh.isStandaloneMode() && message.origin === window.location.origin) {\n return true;\n }\n if (applicationHost === \"*\") {\n return acceptableOrigin(message.origin);\n }\n return message.origin === applicationHost;\n }\n function addActions(actions) {\n for (let action in actions) {\n if (!window.webkit.messageHandlers[action]) {\n try {\n window.webkit.messageHandlers[action] = { postMessage: actions[action] };\n }\n catch (error) {\n console.log(\"Unable to add missing actions on this platform: \" + error);\n return;\n }\n }\n }\n }\n function receiveWindowMessage(message) {\n if (!validateWindowMessageOrigin(message)) {\n // todo: this can generate tons of console errors when hosting some apps within webappstep (youtube content, for example )\n console.error(\"message.origin '\" + message.origin + \"' is not allowed.\");\n throw \"message.origin '\" + message.origin + \"' is not allowed.\";\n }\n if (message.data.messageID) {\n mdh.setActionResult(message.data);\n }\n else {\n mdh.triggerEvent(message.data);\n }\n }\n function windowHasAnyActions() {\n for (let action in supportedActions) {\n if (window.webkit.messageHandlers[action]) {\n return true;\n }\n }\n for (let action in mdh.unsupportedActions) {\n if (window.webkit.messageHandlers[mdh.unsupportedActions[action]]) {\n return true;\n }\n }\n return false;\n }\n if (!acceptableOrigin(applicationHost)) {\n console.log(\"Detected unsupported parent origin domain.\");\n }\n if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ResearchKit) {\n // Presence of ResearchKit handler indicates the SDK is being used from within a WebViewStep. For pre-SDK backwards compatiblity,\n // WebViewStep setup registers the following handlers: GetDeviceInfo, DeleteProviderAccount, ConnectExternalAccount\n // ShowParticipantWebVisualizationPDF, ResearchKit\n supportedActions = {\n \"GetDelegatedAccessToken\": function (data) {\n window.parent.postMessage({\n name: 'GetDelegatedAccessToken',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetCurrentSurveyAnswers\": function (data) {\n window.parent.postMessage({\n name: 'GetCurrentSurveyAnswers',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetStepConfiguration\": function (data) {\n window.parent.postMessage({\n name: 'GetStepConfiguration',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetSurveyContext\": function (data) {\n window.parent.postMessage({\n name: 'GetSurveyContext',\n messageID: data.messageID\n }, applicationHost);\n },\n \"CompleteStep\": function (data) {\n window.parent.postMessage({\n name: 'CompleteStep',\n messageID: data.messageID,\n answer: data.answer\n }, applicationHost);\n }\n };\n }\n else {\n supportedActions = {\n \"GetDelegatedAccessToken\": function (data) {\n window.parent.postMessage({\n name: 'GetDelegatedAccessToken',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetDeviceInfo\": function (data) {\n window.parent.postMessage({ name: 'GetDeviceInfo', messageID: data.messageID }, applicationHost);\n },\n \"StartParticipantSurvey\": function (data) {\n window.parent.postMessage({\n name: 'StartParticipantSurvey',\n messageID: data.messageID,\n surveyName: data.surveyName\n }, applicationHost);\n },\n \"OpenExternalLink\": function (data) {\n window.parent.postMessage({ name: 'OpenExternalUrl', url: data }, applicationHost);\n },\n \"OpenEmbeddedLink\": function (data) {\n window.parent.postMessage({ name: 'OpenEmbeddedUrl', url: data }, applicationHost);\n },\n \"OpenExternalApplication\": function (data) {\n window.parent.postMessage({\n name: 'OpenApplication',\n messageID: data.messageID,\n url: data.url,\n modal: data.modal\n }, applicationHost);\n },\n \"Dismiss\": function () {\n window.parent.postMessage({ name: 'Dismiss' }, applicationHost);\n },\n \"PopNavigation\": function () {\n window.parent.postMessage({ name: 'Back' }, applicationHost);\n },\n \"ShowTab\": function (data) {\n window.parent.postMessage({ name: 'ShowTab', tabKey: data }, applicationHost);\n },\n \"ShowParticipantDashboard\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantDashboard',\n dashboardKey: data.dashboardKey,\n modal: data.modal\n }, applicationHost);\n },\n \"ShowParticipantWebVisualization\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantWebVisualization',\n visualizationKey: data.visualizationKey,\n parameters: data.parameters,\n modal: data.modal\n }, applicationHost);\n },\n \"ShowParticipantWebVisualizationPDF\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantWebVisualizationPDF',\n visualizationKey: data.visualizationKey,\n parameters: data.parameters,\n modal: data.modal,\n landscape: data.landscape,\n htmlViewerZoom: data.htmlViewerZoom\n }, applicationHost);\n },\n \"DeleteProviderAccount\": function (data) {\n window.parent.postMessage({\n name: 'DeleteProviderAccount',\n messageID: data.messageID,\n accountID: data.accountID\n }, applicationHost);\n },\n \"ConnectExternalAccount\": function (data) {\n window.parent.postMessage({\n name: 'ConnectExternalAccount',\n externalAccountProviderID: data.externalAccountProviderID,\n messageID: data.messageID,\n openNewWindow: data.openNewWindow,\n width: data.width,\n height: data.height\n }, applicationHost);\n },\n \"ShowProject\": function (data) {\n window.parent.postMessage({ name: 'ShowProject', code: data.code }, applicationHost);\n },\n \"JoinProject\": function (data) {\n window.parent.postMessage({ name: 'JoinProject', code: data.code }, applicationHost);\n },\n \"GetCurrentSurveyAnswers\": function (data) {\n window.parent.postMessage({\n name: 'GetCurrentSurveyAnswers',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetStepConfiguration\": function (data) {\n window.parent.postMessage({\n name: 'GetStepConfiguration',\n messageID: data.messageID\n }, applicationHost);\n },\n \"CompleteStep\": function (data) {\n window.parent.postMessage({\n name: 'CompleteStep',\n messageID: data.messageID,\n answer: data.answer\n }, applicationHost);\n }\n };\n }\n if (!window.webkit || !window.webkit.messageHandlers || !windowHasAnyActions()) {\n window.webkit = {\n messageHandlers: {}\n };\n }\n addActions(supportedActions);\n window.addEventListener(\"message\", receiveWindowMessage, false);\n }\n // Surveys\n startSurvey(surveyName) {\n if (this.isStandaloneMode()) {\n this.startDelegatedSurvey(`${this.baseUrl}/survey?surveyName=${encodeURIComponent(surveyName)}`);\n }\n else if (window.webkit.messageHandlers.StartParticipantSurvey) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.StartParticipantSurvey.postMessage({\n messageID: messageID,\n surveyName: surveyName\n });\n }\n }\n completeStep(answer) {\n if (answer === undefined || answer === null)\n answer = '';\n if (typeof answer !== 'string') {\n answer = JSON.stringify(answer);\n }\n if (window.webkit.messageHandlers.ResearchKit) {\n window.webkit.messageHandlers.ResearchKit.postMessage(answer);\n }\n else if (window.webkit.messageHandlers.CompleteStep) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.CompleteStep.postMessage({\n messageID: messageID,\n answer: answer\n });\n }\n }\n querySurveyAnswers(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"surveyName\")) {\n queryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n }\n if (queryParameters.hasOwnProperty(\"stepIdentifier\")) {\n queryParameters.stepIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.stepIdentifier);\n }\n if (queryParameters.hasOwnProperty(\"resultIdentifier\")) {\n queryParameters.resultIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.resultIdentifier);\n }\n if (queryParameters.hasOwnProperty(\"answer\")) {\n queryParameters.answer = MyDataHelps.reduceArrayAndEscape(queryParameters.answer);\n }\n if (queryParameters.hasOwnProperty(\"before\")) {\n queryParameters.before = MyDataHelps.convertDateToIsoString(queryParameters.before);\n }\n if (queryParameters.hasOwnProperty(\"after\")) {\n queryParameters.after = MyDataHelps.convertDateToIsoString(queryParameters.after);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'surveyanswers?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n deleteSurveyResult(resultID) {\n const endpoint = 'surveyresults/' + encodeURIComponent(resultID);\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n querySurveyTasks(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"status\")) {\n queryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status);\n }\n if (queryParameters.hasOwnProperty(\"surveyName\")) {\n queryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'surveytasks?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryInboxItems(queryParameters) {\n const assignDefined = (target, source) => {\n for (const key of Object.keys(source)) {\n const value = source[key];\n if (value !== undefined) {\n target[key] = value;\n }\n }\n return target;\n };\n queryParameters = assignDefined({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"type\")) {\n queryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type);\n }\n if (queryParameters.hasOwnProperty(\"status\")) {\n queryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'inbox?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n getInboxItem(id) {\n const endpoint = `inbox/${id}`;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n updateInboxItem(id, update) {\n const endpoint = `inbox/${id}/${update}`;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'PUT', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n startEmbeddedSurvey(linkIdentifier, surveyName, language) {\n if (!language) {\n language = this.getCurrentLanguage();\n }\n let surveyUrl = this.getBaseUrl() + \"mydatahelps/\" + linkIdentifier + '/surveylink/' + surveyName + \"?lang=\" + language;\n return this.startEmbeddedSurveyInternal(surveyUrl);\n }\n // Navigation\n openExternalUrl(url) {\n if (window.webkit.messageHandlers.OpenExternalLink) {\n window.webkit.messageHandlers.OpenExternalLink.postMessage(url);\n }\n }\n openEmbeddedUrl(url) {\n if (window.webkit.messageHandlers.OpenEmbeddedLink) {\n window.webkit.messageHandlers.OpenEmbeddedLink.postMessage(url);\n }\n }\n showTab(tabKey) {\n if (window.webkit.messageHandlers.ShowTab) {\n window.webkit.messageHandlers.ShowTab.postMessage(tabKey);\n }\n }\n openApplication(url, options) {\n if (window.webkit.messageHandlers.OpenExternalApplication) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.OpenExternalApplication.postMessage({\n messageID: messageID,\n url: url,\n modal: !!(options && options.modal)\n });\n }\n }\n dismiss() {\n if (window.webkit.messageHandlers.Dismiss) {\n window.webkit.messageHandlers.Dismiss.postMessage({});\n }\n }\n back() {\n if (window.webkit.messageHandlers.PopNavigation) {\n window.webkit.messageHandlers.PopNavigation.postMessage({});\n }\n }\n showDashboard(dashboardKey, options) {\n if (window.webkit.messageHandlers.ShowParticipantDashboard) {\n window.webkit.messageHandlers.ShowParticipantDashboard.postMessage({\n dashboardKey: dashboardKey,\n modal: !!(options && options.modal),\n title: options && options.title ? options.title : undefined\n });\n }\n }\n showWebVisualization(visualizationKey, parameters, options) {\n if (window.webkit.messageHandlers.ShowParticipantWebVisualization) {\n window.webkit.messageHandlers.ShowParticipantWebVisualization.postMessage({\n visualizationKey: visualizationKey,\n parameters: parameters,\n modal: !!(options && options.modal),\n title: options && options.title ? options.title : undefined\n });\n }\n }\n showWebVisualizationPdf(visualizationKey, parameters, options) {\n if (window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF) {\n window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF.postMessage({\n visualizationKey: visualizationKey,\n parameters: parameters,\n landscape: !!(options && options.landscape),\n htmlViewerZoom: options && options.htmlViewerZoom\n });\n }\n }\n showProject(projectCode) {\n if (window.webkit.messageHandlers.ShowProject) {\n window.webkit.messageHandlers.ShowProject.postMessage({ code: projectCode });\n }\n }\n joinProject(projectCode) {\n if (window.webkit.messageHandlers.JoinProject) {\n window.webkit.messageHandlers.JoinProject.postMessage({ code: projectCode });\n }\n }\n //Events\n on(eventName, callback) {\n if (!this.supportedEvents.includes(eventName)) {\n throw new Error(eventName + \" is not a supported event type.\");\n }\n if (!this.registeredEventHandlers[eventName]) {\n this.registeredEventHandlers[eventName] = [];\n }\n this.registeredEventHandlers[eventName].push(callback);\n }\n off(eventName, callback) {\n if (!this.supportedEvents.includes(eventName)) {\n throw new Error(eventName + \" is not a supported event type.\");\n }\n if (!this.registeredEventHandlers[eventName])\n return;\n let eventHandlerIndex = this.registeredEventHandlers[eventName].indexOf(callback);\n if (eventHandlerIndex !== -1) {\n this.registeredEventHandlers[eventName].splice(eventHandlerIndex, 1);\n }\n }\n triggerEvent(event) {\n let eventName = event.type;\n if (this.supportedEvents.includes(eventName) && this.registeredEventHandlers[eventName]) {\n this.registeredEventHandlers[eventName].forEach(function (handler) {\n handler(event);\n });\n }\n }\n setActionResult(data) {\n this.messageHandlers[data.messageID](data);\n }\n // Participant Info\n getParticipantInfo() {\n const mdh = this;\n const endpoint = 'participant';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n persistParticipantInfo(demographics, customFields) {\n const endpoint = 'participant';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'PUT', { demographics, customFields });\n })\n .then(function (response) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!response.ok) {\n var errorJson = yield response.json();\n throw errorJson.message;\n }\n return response.json();\n });\n })\n .catch(function (error) {\n console.log(\"Unable to persist participant: \" + error);\n });\n }\n getProjectInfo() {\n const mdh = this;\n const endpoint = 'project';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Device Data\n getDeviceDataPoint(id) {\n const endpoint = 'devicedata/' + id;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n deleteDeviceDataPoint(id) {\n const endpoint = 'devicedata/' + id;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n queryDeviceData(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"type\")) {\n queryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type);\n }\n if (queryParameters.hasOwnProperty(\"observedBefore\")) {\n queryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n }\n if (queryParameters.hasOwnProperty(\"observedAfter\")) {\n queryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'devicedata?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n persistDeviceData(deviceDataPoints) {\n const endpoint = 'devicedata';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', deviceDataPoints);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n // External Accounts\n getExternalAccountProviders(search, category, pageSize, pageNumber) {\n let searchParameters = {};\n if (!!search)\n searchParameters.search = search;\n if (!!category)\n searchParameters.category = category;\n if (!!pageSize)\n searchParameters.pageSize = pageSize;\n if (!!pageNumber)\n searchParameters.pageNumber = pageNumber;\n const queryString = new URLSearchParams(searchParameters).toString();\n const endpoint = 'externalaccountproviders?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n connectExternalAccount(externalAccountProviderID, options) {\n return new Promise((resolve, reject) => {\n const messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (connectProviderAccountResponse) {\n if (connectProviderAccountResponse && connectProviderAccountResponse.success) {\n resolve();\n }\n else {\n reject(connectProviderAccountResponse.errorMessage);\n }\n };\n if (this.standaloneMode) {\n let standaloneModeFinalRedirectPath = (options === null || options === void 0 ? void 0 : options.standaloneModeFinalRedirectPath) || window.location.href;\n const mdh = this;\n // DEV: Safari blocks popups in AJAX responses. Work-around is to open a blank window before the request and set the URL later\n let providerAuthWindow;\n if (options === null || options === void 0 ? void 0 : options.openNewWindow) {\n standaloneModeFinalRedirectPath = `${standaloneModeFinalRedirectPath.split('?')[0]}?connectExternalAccount=true&messageID=${messageID}&success=%SUCCESSVALUE%`;\n let windowFeatures = null;\n if ((options === null || options === void 0 ? void 0 : options.width) && (options === null || options === void 0 ? void 0 : options.height)) {\n const w = options === null || options === void 0 ? void 0 : options.width;\n const h = options === null || options === void 0 ? void 0 : options.height;\n const y = window.top.outerHeight / 2 + window.top.screenY - (h / 2);\n const x = window.top.outerWidth / 2 + window.top.screenX - (w / 2);\n windowFeatures = \"width=\" + w + \",height=\" + h + \",top=\" + y + \",left=\" + x;\n }\n providerAuthWindow = window.open(`${this.baseUrl}home/loading`, 'providerauth', windowFeatures);\n }\n const searchParameters = { finalRedirectPath: standaloneModeFinalRedirectPath };\n const queryString = new URLSearchParams(searchParameters).toString();\n const endpoint = \"externalaccountproviders/\" + externalAccountProviderID + \"/connect?\" + queryString;\n this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.text();\n })\n .then(function (redirectUrl) {\n if (providerAuthWindow) {\n providerAuthWindow.location = redirectUrl.replace(/['\"]+/g, '');\n }\n else {\n window.top.location = redirectUrl.replace(/['\"]+/g, '');\n }\n })\n .catch(function (error) {\n reject(error);\n });\n }\n else if (window.webkit.messageHandlers.ConnectExternalAccount) {\n window.webkit.messageHandlers.ConnectExternalAccount.postMessage(Object.assign({ externalAccountProviderID: externalAccountProviderID, messageID: messageID }, options));\n }\n });\n }\n getExternalAccounts() {\n const endpoint = 'externalaccounts';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n refreshExternalAccount(accountID) {\n const endpoint = 'externalaccounts/refresh/' + accountID;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n deleteExternalAccount(accountID) {\n const endpoint = 'externalaccounts/delete/' + encodeURIComponent(accountID);\n const mdh = this;\n if (this.isStandaloneMode()) {\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n });\n }\n return new Promise(function (resolve, reject) {\n if (window.webkit.messageHandlers.DeleteProviderAccount) {\n const messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (deleteProviderAccountResponse) {\n if (!deleteProviderAccountResponse.success) {\n reject(deleteProviderAccountResponse);\n }\n else {\n resolve(deleteProviderAccountResponse);\n }\n };\n window.webkit.messageHandlers.DeleteProviderAccount.postMessage({\n messageID: messageID,\n accountID: accountID\n });\n }\n else {\n reject();\n }\n });\n }\n // Notifications\n queryNotifications(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"sentBefore\")) {\n queryParameters.sentBefore = MyDataHelps.convertDateToIsoString(queryParameters.sentBefore);\n }\n if (queryParameters.hasOwnProperty(\"sentAfter\")) {\n queryParameters.sentAfter = MyDataHelps.convertDateToIsoString(queryParameters.sentAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'notifications?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Fitbit\n queryFitbitDailySummaries(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'fitbit/dailySummaries?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryFitbitSleepLogs(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'fitbit/sleepLogs?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // AppleHealth\n queryAppleHealthActivitySummaries(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'appleHealth/activitySummaries?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryAppleHealthWorkouts(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'appleHealth/workouts?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Authorization\n connect() {\n const mdh = this;\n let refreshDelegatedAccessToken = function () {\n mdh.token = null;\n mdh.refreshTokenPromise = new Promise(function (resolve, reject) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (tokenResponse) {\n if (tokenResponse.success) {\n mdh.tokenExpires = Date.now() + (tokenResponse.data.expires_in * 1000);\n mdh.token = tokenResponse.data;\n mdh.baseUrl = tokenResponse.baseUrl;\n setTimeout(refreshDelegatedAccessToken, ((tokenResponse.data.expires_in - mdh.accessTokenRenewalBufferSeconds) * 1000));\n resolve(null);\n }\n else {\n mdh.token = null;\n reject(tokenResponse.message);\n }\n mdh.messageHandlers[messageID] = null;\n mdh.refreshTokenPromise = null;\n };\n window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({ messageID: messageID });\n });\n };\n if (this.token && Date.now() < this.tokenExpires) {\n return Promise.resolve();\n }\n if (this.isStandaloneMode()) {\n let error = this.token ? \"access token is expired or invalid\" : \"access token must be explicitly provided using the setParticipantAccess method\";\n console.log(error);\n return Promise.reject(error);\n }\n if (!this.refreshTokenPromise) {\n refreshDelegatedAccessToken();\n }\n // Re-use promise if refresh already in progress\n return this.refreshTokenPromise;\n }\n setParticipantAccessToken(token, baseUrl) {\n this.enableStandaloneMode();\n this.token = token;\n if (baseUrl) {\n this.baseUrl = baseUrl;\n }\n this.tokenExpires = Date.now() + (this.token.expires_in * 1000);\n const mdh = this;\n setTimeout(function () {\n mdh.triggerEvent({ type: \"tokenWillExpire\" });\n }, ((this.token.expires_in - this.accessTokenRenewalBufferSeconds) * 1000));\n }\n // Miscellaneous\n isStandaloneMode() {\n return this.standaloneMode;\n }\n enableStandaloneMode() {\n this.standaloneMode = true;\n if (window.webkit) {\n window.webkit.messageHandlers = {};\n }\n }\n setStatusBarStyle(style) {\n if (window.webkit.messageHandlers.SetStatusBarStyle) {\n window.webkit.messageHandlers.SetStatusBarStyle.postMessage({ style: style });\n }\n }\n getDeviceInfo() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetDeviceInfo) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (deviceInfoResponse) {\n resolve(deviceInfoResponse.data);\n };\n window.webkit.messageHandlers.GetDeviceInfo.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n setSupportedLanguages(languages) {\n this.supportedLanguages.length = 0;\n for (let i = 0; i < languages.length; i++) {\n this.supportedLanguages.push(languages[i].replace(\"_\", \"-\"));\n }\n }\n getStepConfiguration() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetStepConfiguration) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (stepConfigurationResponse) {\n resolve(stepConfigurationResponse.data);\n };\n window.webkit.messageHandlers.GetStepConfiguration.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n getSurveyContext() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetSurveyContext) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (surveyContextResponse) {\n resolve(surveyContextResponse.data);\n };\n window.webkit.messageHandlers.GetSurveyContext.postMessage({ messageID: messageID });\n }\n else {\n // if no handler is registered we are running outside a WebViewStep or in a non-web platform\n // and can just return Survey mode\n resolve({ surveyMode: \"Survey\" });\n }\n });\n }\n getCurrentSurveyAnswers() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetCurrentSurveyAnswers) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (currentSurveyAnswersResponse) {\n resolve(currentSurveyAnswersResponse.data);\n };\n window.webkit.messageHandlers.GetCurrentSurveyAnswers.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n setCurrentLanguage(language) {\n let supportedLanguage = this.getSupportedLanguage(language);\n if (supportedLanguage) {\n this.language = supportedLanguage;\n }\n else {\n console.warn(`language ${language} not supported`);\n }\n }\n getCurrentLanguage() {\n let searchParams = new URLSearchParams(window.location.search);\n let lang;\n if (searchParams.has(\"lang\")) {\n lang = this.getSupportedLanguage(searchParams.get(\"lang\"));\n if (lang) {\n return lang;\n }\n else {\n console.warn(`language ${searchParams.get(\"lang\")} not supported`);\n }\n }\n return this.language || navigator.language;\n }\n showGoogleFitSettings() {\n if (window.webkit.messageHandlers.ShowGoogleFitSettings) {\n window.webkit.messageHandlers.ShowGoogleFitSettings.postMessage({});\n }\n }\n requestReview(cooldownDays) {\n if (window.webkit.messageHandlers.RequestReview) {\n window.webkit.messageHandlers.RequestReview.postMessage({ cooldownDays: cooldownDays });\n }\n }\n trackCustomEvent(event) {\n const endpoint = 'customevents';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', event);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n getDataCollectionSettings() {\n const mdh = this;\n const endpoint = 'datacollectionsettings';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n invokeCustomApi(customApi, method, queryParameters, jsonResponse) {\n if (customApi.includes('?')) {\n throw new Error(\"Cannot include query parameters directly in the \\\"customApi\\\" string. Provide as an argument for \\\"queryParameters\\\" instead.\");\n }\n let endpoint = 'custom/' + customApi;\n method = method.toUpperCase();\n if (queryParameters !== null && queryParameters !== undefined && (method === 'GET' || method === 'DELETE')) {\n let parameterString = new URLSearchParams(queryParameters).toString();\n endpoint += \"?\" + parameterString;\n queryParameters = null;\n }\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, method, queryParameters);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return jsonResponse ? response.json() : undefined;\n });\n }\n nextMessageID() {\n return this.currentMessageID++;\n }\n getBaseUrl() {\n return this.baseUrl || 'https://mydatahelps.org/';\n }\n makeUrl(endpoint) {\n if (!this.baseUrl) {\n console.error(\"Cannot use makeUrl without MyDataHelps.baseUrl.\");\n throw \"Cannot use makeUrl without MyDataHelps.baseUrl.\";\n }\n return this.baseUrl + this.apiBasePath + endpoint;\n }\n makeRequest(endpoint, method, body) {\n if (!this.token || !this.token.access_token) {\n throw \"No access_token available for request authorization.\";\n }\n let url = this.makeUrl(endpoint);\n let headers = new Headers();\n headers.append('Authorization', 'Bearer ' + this.token.access_token);\n headers.append('Accept', 'application/json, text/javascript, */*; q=0.01');\n headers.append('Accept-Language', this.getCurrentLanguage());\n if (!!body) {\n headers.append('Content-Type', 'application/json');\n }\n let init = {\n method: method,\n headers: headers\n };\n if (!!body) {\n init.body = JSON.stringify(body);\n }\n return fetch(url, init);\n }\n getSupportedLanguage(language) {\n language = language.replace(\"_\", \"-\");\n if (this.supportedLanguages.length === 0) {\n return language;\n }\n else {\n if (this.supportedLanguages.find((l) => l === language)) {\n return language;\n }\n else if (language.indexOf(\"-\") > 0) {\n language = language.substring(0, language.indexOf(\"-\"));\n if (this.supportedLanguages.find((l) => l === language)) {\n return language;\n }\n }\n }\n }\n static validateResponse(response) {\n if (!response.ok) {\n throw response.statusText;\n }\n return response;\n }\n static escapeParam(param) {\n return String(param)\n .replace(\"\\\\\", \"\\\\\\\\\")\n .replace(\",\", \"\\\\,\");\n }\n static reduceArrayAndEscape(param) {\n if (Array.isArray(param)) {\n let escapedParams = param.map(function (elem) {\n return MyDataHelps.escapeParam(elem);\n });\n return escapedParams.join(\",\");\n }\n return this.escapeParam(param);\n }\n static convertDateToIsoString(date) {\n let paramAsDate = new Date(date);\n if (isNaN(paramAsDate.getTime())) {\n throw \"Cannot interpret parameter as Date\";\n }\n return paramAsDate.toISOString();\n }\n startEmbeddedSurveyInternal(surveyUrl) {\n let mdhSurveyModalId = 'mydatahelps-survey-modal';\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (document.getElementById(mdhSurveyModalId)) {\n reject(\"Survey already in progress\");\n return;\n }\n window.addEventListener(\"message\", function listener(message) {\n if (message.origin !== new URL(mdh.getBaseUrl()).origin) {\n return;\n }\n let frame = document.getElementById('mydatahelps-survey-frame').contentWindow;\n if (message.source !== frame) {\n return;\n }\n if (message.data.name === 'SurveyWindowInitialized') {\n document.getElementById(mdhSurveyModalId).className += \" loaded\";\n }\n else if (message.data.name === 'SurveyFinished') {\n document.getElementById(mdhSurveyModalId).remove();\n document.body.className = document.body.className.replace(\"no-scroll\", \"\");\n window.removeEventListener(\"message\", listener, true);\n resolve(message.data);\n }\n }, true);\n let surveyModal = document.createElement('div');\n surveyModal.className = 'mydatahelps-survey-modal';\n surveyModal.id = mdhSurveyModalId;\n surveyModal.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='\" + surveyUrl + \"'></iframe></div>\";\n document.body.append(surveyModal);\n document.body.className += ' no-scroll';\n });\n }\n startDelegatedSurvey(surveyUrl) {\n let mdhSurveyModalId = 'mydatahelps-survey-modal';\n let mdh = this;\n if (document.getElementById(mdhSurveyModalId)) {\n return;\n }\n window.addEventListener(\"message\", function listener(message) {\n if (message.origin !== new URL(mdh.getBaseUrl()).origin) {\n return;\n }\n let frame = document.getElementById('mydatahelps-survey-frame').contentWindow;\n if (message.source !== frame) {\n return;\n }\n if (message.data.name === 'GetDelegatedAccessToken') {\n mdh.getParticipantInfo().then((participant) => {\n frame.postMessage({ name: \"DelegatedAccessTokenResponse\", accessToken: mdh.token, baseUrl: mdh.baseUrl, participantID: participant.participantID }, '*');\n });\n }\n else if (message.data.name === 'SurveyWindowInitialized') {\n document.getElementById(mdhSurveyModalId).className += \" loaded\";\n }\n else if (message.data.name === 'SurveyFinished') {\n document.getElementById(mdhSurveyModalId).remove();\n document.body.className = document.body.className.replace(\"no-scroll\", \"\");\n window.removeEventListener(\"message\", listener, true);\n message.data.type = 'surveyDidFinish';\n mdh.triggerEvent(message.data);\n }\n }, true);\n let surveyModal = document.createElement('div');\n surveyModal.className = 'mydatahelps-survey-modal';\n surveyModal.id = mdhSurveyModalId;\n surveyModal.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='${surveyUrl}&lang=${mdh.getCurrentLanguage()}'></iframe></div>`;\n document.body.append(surveyModal);\n document.body.className += ' no-scroll';\n }\n handleConnectExternalAccountResponse() {\n const params = new URLSearchParams(window.location.search);\n if (window.opener && params.get('connectExternalAccount') && params.get('messageID') && params.get('success')) {\n window.opener.postMessage({\n name: 'ConnectExternalAccountResponse',\n messageID: parseInt(params.get('messageID')),\n success: params.get('success') === 'true'\n }, window.location.origin);\n window.close();\n return true;\n }\n }\n}\n//iOS/Android directly invoke window.MyDataHelps and window.RKStudioClient\n//so it's necessary to explicitly ensure they are present on the window\nconst mdh = new MyDataHelps();\nwindow.MyDataHelps = mdh;\n// For backwards compatibility\nwindow.RKStudioClient = {};\nwindow.RKStudioClient.setActionResult = function (data) {\n window.MyDataHelps.setActionResult(data);\n};\nexport default mdh;\nexport * from './types';\n"],"names":["e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","MyDataHelps","constructor","this","acceptableParentDomains","accessTokenRenewalBufferSeconds","apiBasePath","unsupportedActions","supportedEvents","supportedLanguages","currentMessageID","messageHandlers","registeredEventHandlers","refreshTokenPromise","standaloneMode","handleConnectExternalAccountResponse","supportedActions","mdh","applicationHost","ancestorOrigins","location","getParentOrigin","acceptableOrigin","origin","sourceURL","URL","k","hostname","endsWith","console","log","window","webkit","ResearchKit","GetDelegatedAccessToken","data","parent","postMessage","name","messageID","GetCurrentSurveyAnswers","GetStepConfiguration","GetSurveyContext","CompleteStep","answer","GetDeviceInfo","StartParticipantSurvey","surveyName","OpenExternalLink","url","OpenEmbeddedLink","OpenExternalApplication","modal","Dismiss","PopNavigation","ShowTab","tabKey","ShowParticipantDashboard","dashboardKey","ShowParticipantWebVisualization","visualizationKey","parameters","ShowParticipantWebVisualizationPDF","landscape","htmlViewerZoom","DeleteProviderAccount","accountID","ConnectExternalAccount","externalAccountProviderID","openNewWindow","width","height","ShowProject","code","JoinProject","action","windowHasAnyActions","actions","error","addActions","addEventListener","message","isStandaloneMode","validateWindowMessageOrigin","setActionResult","triggerEvent","startSurvey","startDelegatedSurvey","baseUrl","encodeURIComponent","nextMessageID","completeStep","JSON","stringify","querySurveyAnswers","queryParameters","assign","hasOwnProperty","reduceArrayAndEscape","stepIdentifier","resultIdentifier","before","convertDateToIsoString","after","endpoint","URLSearchParams","toString","connect","makeRequest","response","validateResponse","json","deleteSurveyResult","resultID","querySurveyTasks","status","queryInboxItems","target","source","key","undefined","assignDefined","type","getInboxItem","id","updateInboxItem","update","startEmbeddedSurvey","linkIdentifier","language","getCurrentLanguage","surveyUrl","getBaseUrl","startEmbeddedSurveyInternal","openExternalUrl","openEmbeddedUrl","showTab","openApplication","options","dismiss","back","showDashboard","title","showWebVisualization","showWebVisualizationPdf","showProject","projectCode","joinProject","on","eventName","callback","includes","Error","off","eventHandlerIndex","splice","event","forEach","handler","getParticipantInfo","persistParticipantInfo","demographics","customFields","ok","catch","getProjectInfo","getDeviceDataPoint","deleteDeviceDataPoint","queryDeviceData","observedBefore","observedAfter","persistDeviceData","deviceDataPoints","getExternalAccountProviders","search","category","pageSize","pageNumber","searchParameters","connectExternalAccount","connectProviderAccountResponse","success","errorMessage","standaloneModeFinalRedirectPath","href","providerAuthWindow","split","windowFeatures","w","h","top","outerHeight","screenY","outerWidth","screenX","open","queryString","finalRedirectPath","text","redirectUrl","replace","getExternalAccounts","refreshExternalAccount","deleteExternalAccount","deleteProviderAccountResponse","queryNotifications","sentBefore","sentAfter","queryFitbitDailySummaries","startDate","endDate","queryFitbitSleepLogs","queryAppleHealthActivitySummaries","queryAppleHealthWorkouts","refreshDelegatedAccessToken","token","tokenResponse","tokenExpires","Date","now","expires_in","setTimeout","setParticipantAccessToken","enableStandaloneMode","setStatusBarStyle","style","SetStatusBarStyle","getDeviceInfo","deviceInfoResponse","setSupportedLanguages","languages","getStepConfiguration","stepConfigurationResponse","getSurveyContext","surveyContextResponse","surveyMode","getCurrentSurveyAnswers","currentSurveyAnswersResponse","setCurrentLanguage","supportedLanguage","getSupportedLanguage","warn","lang","searchParams","has","get","navigator","showGoogleFitSettings","ShowGoogleFitSettings","requestReview","cooldownDays","RequestReview","trackCustomEvent","getDataCollectionSettings","invokeCustomApi","customApi","method","jsonResponse","toUpperCase","parameterString","makeUrl","body","access_token","headers","Headers","append","init","fetch","find","l","static","statusText","param","String","Array","isArray","map","elem","escapeParam","join","date","paramAsDate","isNaN","getTime","toISOString","mdhSurveyModalId","getElementById","listener","frame","contentWindow","className","remove","removeEventListener","surveyModal","innerHTML","participant","accessToken","participantID","params","opener","parseInt","close","RKStudioClient"],"mappings":"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"}
1
+ {"version":3,"file":"MyDataHelps.min.js","sources":["../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../MyDataHelps.js"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// @ts-ignore : let rollup handle CSS injection\nimport \"../MyDataHelps.css\";\nexport class MyDataHelps {\n constructor() {\n this.acceptableParentDomains = [\n 'localhost',\n 'careevolution.com',\n 'internal',\n 'b3-deploys.com',\n 'mydatahelps.org',\n 'platform.joinallofus.org',\n 'careevolution.dev',\n 'ce.dev',\n 'mydatahelps.dev'\n ];\n this.accessTokenRenewalBufferSeconds = 120;\n this.apiBasePath = 'api/v1/delegated/';\n this.unsupportedActions = [\"SetHeight\", \"ResearchKit\"];\n this.supportedEvents = [\"surveyDidFinish\", \"applicationDidBecomeVisible\", \"externalAccountSyncComplete\", \"tokenWillExpire\"];\n this.supportedLanguages = [];\n this.currentMessageID = 1;\n this.messageHandlers = [];\n this.registeredEventHandlers = {};\n this.refreshTokenPromise = null;\n this.standaloneMode = false;\n if (this.handleConnectExternalAccountResponse()) {\n return;\n }\n let mdh = this;\n let applicationHost = getParentOrigin();\n let supportedActions;\n function getParentOrigin() {\n let ancestorOrigins = document.location.ancestorOrigins;\n if (ancestorOrigins && ancestorOrigins[0]) {\n return ancestorOrigins[0];\n }\n return '*';\n }\n function acceptableOrigin(origin) {\n if (origin === '*')\n return true;\n let sourceURL = new URL(origin);\n for (let k = 0; k < mdh.acceptableParentDomains.length; k++) {\n if (sourceURL.hostname === mdh.acceptableParentDomains[k] || sourceURL.hostname.endsWith(\".\" + mdh.acceptableParentDomains[k])) {\n return true;\n }\n }\n return false;\n }\n function validateWindowMessageOrigin(message) {\n if (mdh.isStandaloneMode() && message.origin === window.location.origin) {\n return true;\n }\n if (applicationHost === \"*\") {\n return acceptableOrigin(message.origin);\n }\n return message.origin === applicationHost;\n }\n function addActions(actions) {\n for (let action in actions) {\n if (!window.webkit.messageHandlers[action]) {\n try {\n window.webkit.messageHandlers[action] = { postMessage: actions[action] };\n }\n catch (error) {\n console.log(\"Unable to add missing actions on this platform: \" + error);\n return;\n }\n }\n }\n }\n function receiveWindowMessage(message) {\n if (!validateWindowMessageOrigin(message)) {\n // todo: this can generate tons of console errors when hosting some apps within webappstep (youtube content, for example )\n console.error(\"message.origin '\" + message.origin + \"' is not allowed.\");\n throw \"message.origin '\" + message.origin + \"' is not allowed.\";\n }\n if (message.data.messageID) {\n mdh.setActionResult(message.data);\n }\n else {\n mdh.triggerEvent(message.data);\n }\n }\n function windowHasAnyActions() {\n for (let action in supportedActions) {\n if (window.webkit.messageHandlers[action]) {\n return true;\n }\n }\n for (let action in mdh.unsupportedActions) {\n if (window.webkit.messageHandlers[mdh.unsupportedActions[action]]) {\n return true;\n }\n }\n return false;\n }\n if (!acceptableOrigin(applicationHost)) {\n console.log(\"Detected unsupported parent origin domain.\");\n }\n if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ResearchKit) {\n // Presence of ResearchKit handler indicates the SDK is being used from within a WebViewStep. For pre-SDK backwards compatiblity,\n // WebViewStep setup registers the following handlers: GetDeviceInfo, DeleteProviderAccount, ConnectExternalAccount\n // ShowParticipantWebVisualizationPDF, ResearchKit\n supportedActions = {\n \"GetDelegatedAccessToken\": function (data) {\n window.parent.postMessage({\n name: 'GetDelegatedAccessToken',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetCurrentSurveyAnswers\": function (data) {\n window.parent.postMessage({\n name: 'GetCurrentSurveyAnswers',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetStepConfiguration\": function (data) {\n window.parent.postMessage({\n name: 'GetStepConfiguration',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetSurveyContext\": function (data) {\n window.parent.postMessage({\n name: 'GetSurveyContext',\n messageID: data.messageID\n }, applicationHost);\n },\n \"CompleteStep\": function (data) {\n window.parent.postMessage({\n name: 'CompleteStep',\n messageID: data.messageID,\n answer: data.answer\n }, applicationHost);\n }\n };\n }\n else {\n supportedActions = {\n \"GetDelegatedAccessToken\": function (data) {\n window.parent.postMessage({\n name: 'GetDelegatedAccessToken',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetDeviceInfo\": function (data) {\n window.parent.postMessage({ name: 'GetDeviceInfo', messageID: data.messageID }, applicationHost);\n },\n \"StartParticipantSurvey\": function (data) {\n window.parent.postMessage({\n name: 'StartParticipantSurvey',\n messageID: data.messageID,\n surveyName: data.surveyName\n }, applicationHost);\n },\n \"OpenExternalLink\": function (data) {\n window.parent.postMessage({ name: 'OpenExternalUrl', url: data }, applicationHost);\n },\n \"OpenEmbeddedLink\": function (data) {\n window.parent.postMessage({ name: 'OpenEmbeddedUrl', url: data }, applicationHost);\n },\n \"OpenExternalApplication\": function (data) {\n window.parent.postMessage({\n name: 'OpenApplication',\n messageID: data.messageID,\n url: data.url,\n modal: data.modal\n }, applicationHost);\n },\n \"Dismiss\": function () {\n window.parent.postMessage({ name: 'Dismiss' }, applicationHost);\n },\n \"PopNavigation\": function () {\n window.parent.postMessage({ name: 'Back' }, applicationHost);\n },\n \"ShowTab\": function (data) {\n window.parent.postMessage({ name: 'ShowTab', tabKey: data }, applicationHost);\n },\n \"ShowParticipantDashboard\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantDashboard',\n dashboardKey: data.dashboardKey,\n modal: data.modal\n }, applicationHost);\n },\n \"ShowParticipantWebVisualization\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantWebVisualization',\n visualizationKey: data.visualizationKey,\n parameters: data.parameters,\n modal: data.modal\n }, applicationHost);\n },\n \"ShowParticipantWebVisualizationPDF\": function (data) {\n window.parent.postMessage({\n name: 'ShowParticipantWebVisualizationPDF',\n visualizationKey: data.visualizationKey,\n parameters: data.parameters,\n modal: data.modal,\n landscape: data.landscape,\n htmlViewerZoom: data.htmlViewerZoom\n }, applicationHost);\n },\n \"DeleteProviderAccount\": function (data) {\n window.parent.postMessage({\n name: 'DeleteProviderAccount',\n messageID: data.messageID,\n accountID: data.accountID\n }, applicationHost);\n },\n \"ConnectExternalAccount\": function (data) {\n window.parent.postMessage({\n name: 'ConnectExternalAccount',\n externalAccountProviderID: data.externalAccountProviderID,\n messageID: data.messageID,\n openNewWindow: data.openNewWindow,\n width: data.width,\n height: data.height\n }, applicationHost);\n },\n \"ShowProject\": function (data) {\n window.parent.postMessage({ name: 'ShowProject', code: data.code }, applicationHost);\n },\n \"JoinProject\": function (data) {\n window.parent.postMessage({ name: 'JoinProject', code: data.code }, applicationHost);\n },\n \"GetCurrentSurveyAnswers\": function (data) {\n window.parent.postMessage({\n name: 'GetCurrentSurveyAnswers',\n messageID: data.messageID\n }, applicationHost);\n },\n \"GetStepConfiguration\": function (data) {\n window.parent.postMessage({\n name: 'GetStepConfiguration',\n messageID: data.messageID\n }, applicationHost);\n },\n \"CompleteStep\": function (data) {\n window.parent.postMessage({\n name: 'CompleteStep',\n messageID: data.messageID,\n answer: data.answer\n }, applicationHost);\n }\n };\n }\n if (!window.webkit || !window.webkit.messageHandlers || !windowHasAnyActions()) {\n window.webkit = {\n messageHandlers: {}\n };\n }\n addActions(supportedActions);\n window.addEventListener(\"message\", receiveWindowMessage, false);\n }\n // Surveys\n startSurvey(surveyName) {\n if (this.isStandaloneMode()) {\n this.startDelegatedSurvey(`${this.baseUrl}/survey?surveyName=${encodeURIComponent(surveyName)}`);\n }\n else if (window.webkit.messageHandlers.StartParticipantSurvey) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.StartParticipantSurvey.postMessage({\n messageID: messageID,\n surveyName: surveyName\n });\n }\n }\n completeStep(answer) {\n if (answer === undefined || answer === null)\n answer = '';\n if (typeof answer !== 'string') {\n answer = JSON.stringify(answer);\n }\n if (window.webkit.messageHandlers.ResearchKit) {\n window.webkit.messageHandlers.ResearchKit.postMessage(answer);\n }\n else if (window.webkit.messageHandlers.CompleteStep) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.CompleteStep.postMessage({\n messageID: messageID,\n answer: answer\n });\n }\n }\n querySurveyAnswers(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"surveyName\")) {\n queryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n }\n if (queryParameters.hasOwnProperty(\"stepIdentifier\")) {\n queryParameters.stepIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.stepIdentifier);\n }\n if (queryParameters.hasOwnProperty(\"resultIdentifier\")) {\n queryParameters.resultIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.resultIdentifier);\n }\n if (queryParameters.hasOwnProperty(\"answer\")) {\n queryParameters.answer = MyDataHelps.reduceArrayAndEscape(queryParameters.answer);\n }\n if (queryParameters.hasOwnProperty(\"before\")) {\n queryParameters.before = MyDataHelps.convertDateToIsoString(queryParameters.before);\n }\n if (queryParameters.hasOwnProperty(\"after\")) {\n queryParameters.after = MyDataHelps.convertDateToIsoString(queryParameters.after);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'surveyanswers?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n deleteSurveyResult(resultID) {\n const endpoint = 'surveyresults/' + encodeURIComponent(resultID);\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n querySurveyTasks(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"status\")) {\n queryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status);\n }\n if (queryParameters.hasOwnProperty(\"surveyName\")) {\n queryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'surveytasks?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryInboxItems(queryParameters) {\n const assignDefined = (target, source) => {\n for (const key of Object.keys(source)) {\n const value = source[key];\n if (value !== undefined) {\n target[key] = value;\n }\n }\n return target;\n };\n queryParameters = assignDefined({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"type\")) {\n queryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type);\n }\n if (queryParameters.hasOwnProperty(\"status\")) {\n queryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'inbox?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n getInboxItem(id) {\n const endpoint = `inbox/${id}`;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n updateInboxItem(id, update) {\n const endpoint = `inbox/${id}/${update}`;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'PUT', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n startEmbeddedSurvey(linkIdentifier, surveyName, language) {\n if (!language) {\n language = this.getCurrentLanguage();\n }\n let surveyUrl = this.getBaseUrl() + \"mydatahelps/\" + linkIdentifier + '/surveylink/' + surveyName + \"?lang=\" + language;\n return this.startEmbeddedSurveyInternal(surveyUrl);\n }\n // Navigation\n openExternalUrl(url) {\n if (window.webkit.messageHandlers.OpenExternalLink) {\n window.webkit.messageHandlers.OpenExternalLink.postMessage(url);\n }\n }\n openEmbeddedUrl(url) {\n if (window.webkit.messageHandlers.OpenEmbeddedLink) {\n window.webkit.messageHandlers.OpenEmbeddedLink.postMessage(url);\n }\n }\n showTab(tabKey) {\n if (window.webkit.messageHandlers.ShowTab) {\n window.webkit.messageHandlers.ShowTab.postMessage(tabKey);\n }\n }\n openApplication(url, options) {\n if (window.webkit.messageHandlers.OpenExternalApplication) {\n let messageID = this.nextMessageID();\n window.webkit.messageHandlers.OpenExternalApplication.postMessage({\n messageID: messageID,\n url: url,\n modal: !!(options && options.modal)\n });\n }\n }\n dismiss() {\n if (window.webkit.messageHandlers.Dismiss) {\n window.webkit.messageHandlers.Dismiss.postMessage({});\n }\n }\n back() {\n if (window.webkit.messageHandlers.PopNavigation) {\n window.webkit.messageHandlers.PopNavigation.postMessage({});\n }\n }\n showDashboard(dashboardKey, options) {\n if (window.webkit.messageHandlers.ShowParticipantDashboard) {\n window.webkit.messageHandlers.ShowParticipantDashboard.postMessage({\n dashboardKey: dashboardKey,\n modal: !!(options && options.modal),\n title: options && options.title ? options.title : undefined\n });\n }\n }\n showWebVisualization(visualizationKey, parameters, options) {\n if (window.webkit.messageHandlers.ShowParticipantWebVisualization) {\n window.webkit.messageHandlers.ShowParticipantWebVisualization.postMessage({\n visualizationKey: visualizationKey,\n parameters: parameters,\n modal: !!(options && options.modal),\n title: options && options.title ? options.title : undefined\n });\n }\n }\n showWebVisualizationPdf(visualizationKey, parameters, options) {\n if (window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF) {\n window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF.postMessage({\n visualizationKey: visualizationKey,\n parameters: parameters,\n landscape: !!(options && options.landscape),\n htmlViewerZoom: options && options.htmlViewerZoom\n });\n }\n }\n showProject(projectCode) {\n if (window.webkit.messageHandlers.ShowProject) {\n window.webkit.messageHandlers.ShowProject.postMessage({ code: projectCode });\n }\n }\n joinProject(projectCode) {\n if (window.webkit.messageHandlers.JoinProject) {\n window.webkit.messageHandlers.JoinProject.postMessage({ code: projectCode });\n }\n }\n //Events\n on(eventName, callback) {\n if (!this.supportedEvents.includes(eventName)) {\n throw new Error(eventName + \" is not a supported event type.\");\n }\n if (!this.registeredEventHandlers[eventName]) {\n this.registeredEventHandlers[eventName] = [];\n }\n this.registeredEventHandlers[eventName].push(callback);\n }\n off(eventName, callback) {\n if (!this.supportedEvents.includes(eventName)) {\n throw new Error(eventName + \" is not a supported event type.\");\n }\n if (!this.registeredEventHandlers[eventName])\n return;\n let eventHandlerIndex = this.registeredEventHandlers[eventName].indexOf(callback);\n if (eventHandlerIndex !== -1) {\n this.registeredEventHandlers[eventName].splice(eventHandlerIndex, 1);\n }\n }\n triggerEvent(event) {\n let eventName = event.type;\n if (this.supportedEvents.includes(eventName) && this.registeredEventHandlers[eventName]) {\n this.registeredEventHandlers[eventName].forEach(function (handler) {\n handler(event);\n });\n }\n }\n setActionResult(data) {\n this.messageHandlers[data.messageID](data);\n }\n // Participant Info\n getParticipantInfo() {\n const mdh = this;\n const endpoint = 'participant';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n persistParticipantInfo(demographics, customFields) {\n const endpoint = 'participant';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'PUT', { demographics, customFields });\n })\n .then(function (response) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!response.ok) {\n var errorJson = yield response.json();\n throw errorJson.message;\n }\n return response.json();\n });\n })\n .catch(function (error) {\n console.log(\"Unable to persist participant: \" + error);\n });\n }\n getProjectInfo() {\n const mdh = this;\n const endpoint = 'project';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Device Data\n getDeviceDataPoint(id) {\n const endpoint = 'devicedata/' + id;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n deleteDeviceDataPoint(id) {\n const endpoint = 'devicedata/' + id;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n queryDeviceData(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"type\")) {\n queryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type);\n }\n if (queryParameters.hasOwnProperty(\"observedBefore\")) {\n queryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n }\n if (queryParameters.hasOwnProperty(\"observedAfter\")) {\n queryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'devicedata?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n persistDeviceData(deviceDataPoints) {\n const endpoint = 'devicedata';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', deviceDataPoints);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n // External Accounts\n getExternalAccountProviders(search, category, pageSize, pageNumber) {\n let searchParameters = {};\n if (!!search)\n searchParameters.search = search;\n if (!!category)\n searchParameters.category = category;\n if (!!pageSize)\n searchParameters.pageSize = pageSize;\n if (!!pageNumber)\n searchParameters.pageNumber = pageNumber;\n const queryString = new URLSearchParams(searchParameters).toString();\n const endpoint = 'externalaccountproviders?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n connectExternalAccount(externalAccountProviderID, options) {\n return new Promise((resolve, reject) => {\n const messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (connectProviderAccountResponse) {\n if (connectProviderAccountResponse && connectProviderAccountResponse.success) {\n resolve();\n }\n else {\n reject(connectProviderAccountResponse.errorMessage);\n }\n };\n if (this.standaloneMode) {\n let standaloneModeFinalRedirectPath = (options === null || options === void 0 ? void 0 : options.standaloneModeFinalRedirectPath) || window.location.href;\n const mdh = this;\n // DEV: Safari blocks popups in AJAX responses. Work-around is to open a blank window before the request and set the URL later\n let providerAuthWindow;\n if (options === null || options === void 0 ? void 0 : options.openNewWindow) {\n standaloneModeFinalRedirectPath = `${standaloneModeFinalRedirectPath.split('?')[0]}?connectExternalAccount=true&messageID=${messageID}&success=%SUCCESSVALUE%`;\n let windowFeatures = null;\n if ((options === null || options === void 0 ? void 0 : options.width) && (options === null || options === void 0 ? void 0 : options.height)) {\n const w = options === null || options === void 0 ? void 0 : options.width;\n const h = options === null || options === void 0 ? void 0 : options.height;\n const y = window.top.outerHeight / 2 + window.top.screenY - (h / 2);\n const x = window.top.outerWidth / 2 + window.top.screenX - (w / 2);\n windowFeatures = \"width=\" + w + \",height=\" + h + \",top=\" + y + \",left=\" + x;\n }\n providerAuthWindow = window.open(`${this.baseUrl}home/loading`, 'providerauth', windowFeatures);\n }\n const searchParameters = { finalRedirectPath: standaloneModeFinalRedirectPath };\n const queryString = new URLSearchParams(searchParameters).toString();\n const endpoint = \"externalaccountproviders/\" + externalAccountProviderID + \"/connect?\" + queryString;\n this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.text();\n })\n .then(function (redirectUrl) {\n if (providerAuthWindow) {\n providerAuthWindow.location = redirectUrl.replace(/['\"]+/g, '');\n }\n else {\n window.top.location = redirectUrl.replace(/['\"]+/g, '');\n }\n })\n .catch(function (error) {\n reject(error);\n });\n }\n else if (window.webkit.messageHandlers.ConnectExternalAccount) {\n window.webkit.messageHandlers.ConnectExternalAccount.postMessage(Object.assign({ externalAccountProviderID: externalAccountProviderID, messageID: messageID }, options));\n }\n });\n }\n getExternalAccounts() {\n const endpoint = 'externalaccounts';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n refreshExternalAccount(accountID) {\n const endpoint = 'externalaccounts/refresh/' + accountID;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n deleteExternalAccount(accountID) {\n const endpoint = 'externalaccounts/delete/' + encodeURIComponent(accountID);\n const mdh = this;\n if (this.isStandaloneMode()) {\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'DELETE', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n });\n }\n return new Promise(function (resolve, reject) {\n if (window.webkit.messageHandlers.DeleteProviderAccount) {\n const messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (deleteProviderAccountResponse) {\n if (!deleteProviderAccountResponse.success) {\n reject(deleteProviderAccountResponse);\n }\n else {\n resolve(deleteProviderAccountResponse);\n }\n };\n window.webkit.messageHandlers.DeleteProviderAccount.postMessage({\n messageID: messageID,\n accountID: accountID\n });\n }\n else {\n reject();\n }\n });\n }\n // Notifications\n queryNotifications(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"sentBefore\")) {\n queryParameters.sentBefore = MyDataHelps.convertDateToIsoString(queryParameters.sentBefore);\n }\n if (queryParameters.hasOwnProperty(\"sentAfter\")) {\n queryParameters.sentAfter = MyDataHelps.convertDateToIsoString(queryParameters.sentAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'notifications?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Fitbit\n queryFitbitDailySummaries(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'fitbit/dailySummaries?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryFitbitSleepLogs(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'fitbit/sleepLogs?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // AppleHealth\n queryAppleHealthActivitySummaries(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'appleHealth/activitySummaries?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryAppleHealthWorkouts(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"startDate\")) {\n queryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n }\n if (queryParameters.hasOwnProperty(\"endDate\")) {\n queryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'appleHealth/workouts?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n // Authorization\n connect() {\n const mdh = this;\n let refreshDelegatedAccessToken = function () {\n mdh.token = null;\n mdh.refreshTokenPromise = new Promise(function (resolve, reject) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (tokenResponse) {\n if (tokenResponse.success) {\n mdh.tokenExpires = Date.now() + (tokenResponse.data.expires_in * 1000);\n mdh.token = tokenResponse.data;\n mdh.baseUrl = tokenResponse.baseUrl;\n setTimeout(refreshDelegatedAccessToken, ((tokenResponse.data.expires_in - mdh.accessTokenRenewalBufferSeconds) * 1000));\n resolve(null);\n }\n else {\n mdh.token = null;\n reject(tokenResponse.message);\n }\n mdh.messageHandlers[messageID] = null;\n mdh.refreshTokenPromise = null;\n };\n window.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({ messageID: messageID });\n });\n };\n if (this.token && Date.now() < this.tokenExpires) {\n return Promise.resolve();\n }\n if (this.isStandaloneMode()) {\n let error = this.token ? \"access token is expired or invalid\" : \"access token must be explicitly provided using the setParticipantAccess method\";\n console.log(error);\n return Promise.reject(error);\n }\n if (!this.refreshTokenPromise) {\n refreshDelegatedAccessToken();\n }\n // Re-use promise if refresh already in progress\n return this.refreshTokenPromise;\n }\n setParticipantAccessToken(token, baseUrl) {\n this.enableStandaloneMode();\n this.token = token;\n if (baseUrl) {\n this.baseUrl = baseUrl;\n }\n this.tokenExpires = Date.now() + (this.token.expires_in * 1000);\n const mdh = this;\n setTimeout(function () {\n mdh.triggerEvent({ type: \"tokenWillExpire\" });\n }, ((this.token.expires_in - this.accessTokenRenewalBufferSeconds) * 1000));\n }\n // Miscellaneous\n isStandaloneMode() {\n return this.standaloneMode;\n }\n enableStandaloneMode() {\n this.standaloneMode = true;\n if (window.webkit) {\n window.webkit.messageHandlers = {};\n }\n }\n setStatusBarStyle(style) {\n if (window.webkit.messageHandlers.SetStatusBarStyle) {\n window.webkit.messageHandlers.SetStatusBarStyle.postMessage({ style: style });\n }\n }\n getDeviceInfo() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetDeviceInfo) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (deviceInfoResponse) {\n resolve(deviceInfoResponse.data);\n };\n window.webkit.messageHandlers.GetDeviceInfo.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n setSupportedLanguages(languages) {\n this.supportedLanguages.length = 0;\n for (let i = 0; i < languages.length; i++) {\n this.supportedLanguages.push(languages[i].replace(\"_\", \"-\"));\n }\n }\n getStepConfiguration() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetStepConfiguration) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (stepConfigurationResponse) {\n resolve(stepConfigurationResponse.data);\n };\n window.webkit.messageHandlers.GetStepConfiguration.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n getSurveyContext() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n mdh.getDeviceInfo().then(function (deviceInfo) {\n if (deviceInfo.platform !== \"Web\") {\n resolve({ surveyMode: \"Survey\" });\n }\n else if (window.webkit.messageHandlers.GetSurveyContext) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (surveyContextResponse) {\n resolve(surveyContextResponse.data);\n };\n window.webkit.messageHandlers.GetSurveyContext.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n }).catch(function (error) {\n reject();\n });\n });\n }\n getCurrentSurveyAnswers() {\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (mdh.isStandaloneMode()) {\n resolve(null);\n }\n else if (window.webkit.messageHandlers.GetCurrentSurveyAnswers) {\n let messageID = mdh.nextMessageID();\n mdh.messageHandlers[messageID] = function (currentSurveyAnswersResponse) {\n resolve(currentSurveyAnswersResponse.data);\n };\n window.webkit.messageHandlers.GetCurrentSurveyAnswers.postMessage({ messageID: messageID });\n }\n else {\n reject();\n }\n });\n }\n setCurrentLanguage(language) {\n let supportedLanguage = this.getSupportedLanguage(language);\n if (supportedLanguage) {\n this.language = supportedLanguage;\n }\n else {\n console.warn(`language ${language} not supported`);\n }\n }\n getCurrentLanguage() {\n let searchParams = new URLSearchParams(window.location.search);\n let lang;\n if (searchParams.has(\"lang\")) {\n lang = this.getSupportedLanguage(searchParams.get(\"lang\"));\n if (lang) {\n return lang;\n }\n else {\n console.warn(`language ${searchParams.get(\"lang\")} not supported`);\n }\n }\n return this.language || navigator.language;\n }\n showGoogleFitSettings() {\n if (window.webkit.messageHandlers.ShowGoogleFitSettings) {\n window.webkit.messageHandlers.ShowGoogleFitSettings.postMessage({});\n }\n }\n requestReview(cooldownDays) {\n if (window.webkit.messageHandlers.RequestReview) {\n window.webkit.messageHandlers.RequestReview.postMessage({ cooldownDays: cooldownDays });\n }\n }\n trackCustomEvent(event) {\n const endpoint = 'customevents';\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'POST', event);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function () {\n return;\n });\n }\n getDataCollectionSettings() {\n const mdh = this;\n const endpoint = 'datacollectionsettings';\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n invokeCustomApi(customApi, method, queryParameters, jsonResponse) {\n if (customApi.includes('?')) {\n throw new Error(\"Cannot include query parameters directly in the \\\"customApi\\\" string. Provide as an argument for \\\"queryParameters\\\" instead.\");\n }\n let endpoint = 'custom/' + customApi;\n method = method.toUpperCase();\n if (queryParameters !== null && queryParameters !== undefined && (method === 'GET' || method === 'DELETE')) {\n let parameterString = new URLSearchParams(queryParameters).toString();\n endpoint += \"?\" + parameterString;\n queryParameters = null;\n }\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, method, queryParameters);\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return jsonResponse ? response.json() : undefined;\n });\n }\n nextMessageID() {\n return this.currentMessageID++;\n }\n getBaseUrl() {\n return this.baseUrl || 'https://mydatahelps.org/';\n }\n makeUrl(endpoint) {\n if (!this.baseUrl) {\n console.error(\"Cannot use makeUrl without MyDataHelps.baseUrl.\");\n throw \"Cannot use makeUrl without MyDataHelps.baseUrl.\";\n }\n return this.baseUrl + this.apiBasePath + endpoint;\n }\n makeRequest(endpoint, method, body) {\n if (!this.token || !this.token.access_token) {\n throw \"No access_token available for request authorization.\";\n }\n let url = this.makeUrl(endpoint);\n let headers = new Headers();\n headers.append('Authorization', 'Bearer ' + this.token.access_token);\n headers.append('Accept', 'application/json, text/javascript, */*; q=0.01');\n headers.append('Accept-Language', this.getCurrentLanguage());\n if (!!body) {\n headers.append('Content-Type', 'application/json');\n }\n let init = {\n method: method,\n headers: headers\n };\n if (!!body) {\n init.body = JSON.stringify(body);\n }\n return fetch(url, init);\n }\n getSupportedLanguage(language) {\n language = language.replace(\"_\", \"-\");\n if (this.supportedLanguages.length === 0) {\n return language;\n }\n else {\n if (this.supportedLanguages.find((l) => l === language)) {\n return language;\n }\n else if (language.indexOf(\"-\") > 0) {\n language = language.substring(0, language.indexOf(\"-\"));\n if (this.supportedLanguages.find((l) => l === language)) {\n return language;\n }\n }\n }\n }\n static validateResponse(response) {\n if (!response.ok) {\n throw response.statusText;\n }\n return response;\n }\n static escapeParam(param) {\n return String(param)\n .replace(\"\\\\\", \"\\\\\\\\\")\n .replace(\",\", \"\\\\,\");\n }\n static reduceArrayAndEscape(param) {\n if (Array.isArray(param)) {\n let escapedParams = param.map(function (elem) {\n return MyDataHelps.escapeParam(elem);\n });\n return escapedParams.join(\",\");\n }\n return this.escapeParam(param);\n }\n static convertDateToIsoString(date) {\n let paramAsDate = new Date(date);\n if (isNaN(paramAsDate.getTime())) {\n throw \"Cannot interpret parameter as Date\";\n }\n return paramAsDate.toISOString();\n }\n startEmbeddedSurveyInternal(surveyUrl) {\n let mdhSurveyModalId = 'mydatahelps-survey-modal';\n let mdh = this;\n return new Promise(function (resolve, reject) {\n if (document.getElementById(mdhSurveyModalId)) {\n reject(\"Survey already in progress\");\n return;\n }\n window.addEventListener(\"message\", function listener(message) {\n if (message.origin !== new URL(mdh.getBaseUrl()).origin) {\n return;\n }\n let frame = document.getElementById('mydatahelps-survey-frame').contentWindow;\n if (message.source !== frame) {\n return;\n }\n if (message.data.name === 'SurveyWindowInitialized') {\n document.getElementById(mdhSurveyModalId).className += \" loaded\";\n }\n else if (message.data.name === 'SurveyFinished') {\n document.getElementById(mdhSurveyModalId).remove();\n document.body.className = document.body.className.replace(\"no-scroll\", \"\");\n window.removeEventListener(\"message\", listener, true);\n resolve(message.data);\n }\n }, true);\n let surveyModal = document.createElement('div');\n surveyModal.className = 'mydatahelps-survey-modal';\n surveyModal.id = mdhSurveyModalId;\n surveyModal.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='\" + surveyUrl + \"'></iframe></div>\";\n document.body.append(surveyModal);\n document.body.className += ' no-scroll';\n });\n }\n startDelegatedSurvey(surveyUrl) {\n let mdhSurveyModalId = 'mydatahelps-survey-modal';\n let mdh = this;\n if (document.getElementById(mdhSurveyModalId)) {\n return;\n }\n window.addEventListener(\"message\", function listener(message) {\n if (message.origin !== new URL(mdh.getBaseUrl()).origin) {\n return;\n }\n let frame = document.getElementById('mydatahelps-survey-frame').contentWindow;\n if (message.source !== frame) {\n return;\n }\n if (message.data.name === 'GetDelegatedAccessToken') {\n mdh.getParticipantInfo().then((participant) => {\n frame.postMessage({ name: \"DelegatedAccessTokenResponse\", accessToken: mdh.token, baseUrl: mdh.baseUrl, participantID: participant.participantID }, '*');\n });\n }\n else if (message.data.name === 'SurveyWindowInitialized') {\n document.getElementById(mdhSurveyModalId).className += \" loaded\";\n }\n else if (message.data.name === 'SurveyFinished') {\n document.getElementById(mdhSurveyModalId).remove();\n document.body.className = document.body.className.replace(\"no-scroll\", \"\");\n window.removeEventListener(\"message\", listener, true);\n message.data.type = 'surveyDidFinish';\n mdh.triggerEvent(message.data);\n }\n }, true);\n let surveyModal = document.createElement('div');\n surveyModal.className = 'mydatahelps-survey-modal';\n surveyModal.id = mdhSurveyModalId;\n surveyModal.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='${surveyUrl}&lang=${mdh.getCurrentLanguage()}'></iframe></div>`;\n document.body.append(surveyModal);\n document.body.className += ' no-scroll';\n }\n handleConnectExternalAccountResponse() {\n const params = new URLSearchParams(window.location.search);\n if (window.opener && params.get('connectExternalAccount') && params.get('messageID') && params.get('success')) {\n window.opener.postMessage({\n name: 'ConnectExternalAccountResponse',\n messageID: parseInt(params.get('messageID')),\n success: params.get('success') === 'true'\n }, window.location.origin);\n window.close();\n return true;\n }\n }\n}\n//iOS/Android directly invoke window.MyDataHelps and window.RKStudioClient\n//so it's necessary to explicitly ensure they are present on the window\nconst mdh = new MyDataHelps();\nwindow.MyDataHelps = mdh;\n// For backwards compatibility\nwindow.RKStudioClient = {};\nwindow.RKStudioClient.setActionResult = function (data) {\n window.MyDataHelps.setActionResult(data);\n};\nexport default mdh;\nexport * from './types';\n"],"names":["e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","MyDataHelps","constructor","this","acceptableParentDomains","accessTokenRenewalBufferSeconds","apiBasePath","unsupportedActions","supportedEvents","supportedLanguages","currentMessageID","messageHandlers","registeredEventHandlers","refreshTokenPromise","standaloneMode","handleConnectExternalAccountResponse","supportedActions","mdh","applicationHost","ancestorOrigins","location","getParentOrigin","acceptableOrigin","origin","sourceURL","URL","k","hostname","endsWith","console","log","window","webkit","ResearchKit","GetDelegatedAccessToken","data","parent","postMessage","name","messageID","GetCurrentSurveyAnswers","GetStepConfiguration","GetSurveyContext","CompleteStep","answer","GetDeviceInfo","StartParticipantSurvey","surveyName","OpenExternalLink","url","OpenEmbeddedLink","OpenExternalApplication","modal","Dismiss","PopNavigation","ShowTab","tabKey","ShowParticipantDashboard","dashboardKey","ShowParticipantWebVisualization","visualizationKey","parameters","ShowParticipantWebVisualizationPDF","landscape","htmlViewerZoom","DeleteProviderAccount","accountID","ConnectExternalAccount","externalAccountProviderID","openNewWindow","width","height","ShowProject","code","JoinProject","action","windowHasAnyActions","actions","error","addActions","addEventListener","message","isStandaloneMode","validateWindowMessageOrigin","setActionResult","triggerEvent","startSurvey","startDelegatedSurvey","baseUrl","encodeURIComponent","nextMessageID","completeStep","JSON","stringify","querySurveyAnswers","queryParameters","assign","hasOwnProperty","reduceArrayAndEscape","stepIdentifier","resultIdentifier","before","convertDateToIsoString","after","endpoint","URLSearchParams","toString","connect","makeRequest","response","validateResponse","json","deleteSurveyResult","resultID","querySurveyTasks","status","queryInboxItems","target","source","key","undefined","assignDefined","type","getInboxItem","id","updateInboxItem","update","startEmbeddedSurvey","linkIdentifier","language","getCurrentLanguage","surveyUrl","getBaseUrl","startEmbeddedSurveyInternal","openExternalUrl","openEmbeddedUrl","showTab","openApplication","options","dismiss","back","showDashboard","title","showWebVisualization","showWebVisualizationPdf","showProject","projectCode","joinProject","on","eventName","callback","includes","Error","off","eventHandlerIndex","splice","event","forEach","handler","getParticipantInfo","persistParticipantInfo","demographics","customFields","ok","catch","getProjectInfo","getDeviceDataPoint","deleteDeviceDataPoint","queryDeviceData","observedBefore","observedAfter","persistDeviceData","deviceDataPoints","getExternalAccountProviders","search","category","pageSize","pageNumber","searchParameters","connectExternalAccount","connectProviderAccountResponse","success","errorMessage","standaloneModeFinalRedirectPath","href","providerAuthWindow","split","windowFeatures","w","h","top","outerHeight","screenY","outerWidth","screenX","open","queryString","finalRedirectPath","text","redirectUrl","replace","getExternalAccounts","refreshExternalAccount","deleteExternalAccount","deleteProviderAccountResponse","queryNotifications","sentBefore","sentAfter","queryFitbitDailySummaries","startDate","endDate","queryFitbitSleepLogs","queryAppleHealthActivitySummaries","queryAppleHealthWorkouts","refreshDelegatedAccessToken","token","tokenResponse","tokenExpires","Date","now","expires_in","setTimeout","setParticipantAccessToken","enableStandaloneMode","setStatusBarStyle","style","SetStatusBarStyle","getDeviceInfo","deviceInfoResponse","setSupportedLanguages","languages","getStepConfiguration","stepConfigurationResponse","getSurveyContext","deviceInfo","platform","surveyMode","surveyContextResponse","getCurrentSurveyAnswers","currentSurveyAnswersResponse","setCurrentLanguage","supportedLanguage","getSupportedLanguage","warn","lang","searchParams","has","get","navigator","showGoogleFitSettings","ShowGoogleFitSettings","requestReview","cooldownDays","RequestReview","trackCustomEvent","getDataCollectionSettings","invokeCustomApi","customApi","method","jsonResponse","toUpperCase","parameterString","makeUrl","body","access_token","headers","Headers","append","init","fetch","find","l","static","statusText","param","String","Array","isArray","map","elem","escapeParam","join","date","paramAsDate","isNaN","getTime","toISOString","mdhSurveyModalId","getElementById","listener","frame","contentWindow","className","remove","removeEventListener","surveyModal","innerHTML","participant","accessToken","participantID","params","opener","parseInt","close","RKStudioClient"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@careevolution/mydatahelps-js",
3
- "version": "3.11.0",
3
+ "version": "3.11.1",
4
4
  "description": "MyDataHelps client to be used by external applications for integrations inside the MyDataHelps platform",
5
5
  "type": "module",
6
6
  "types": "MyDataHelps.d.ts",