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