@careevolution/mydatahelps-js 3.17.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MyDataHelps.d.ts +4 -5
- package/MyDataHelps.js +304 -276
- package/MyDataHelps.min.js +1 -1
- package/MyDataHelps.min.js.map +1 -1
- package/assets/MyDataHelps-CJt5Kdo2.css +1 -0
- package/assets/MyDataHelps.min-CJt5Kdo2.css +1 -0
- package/package.json +9 -6
- package/types.d.ts +31 -17
package/MyDataHelps.min.js.map
CHANGED
|
@@ -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.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 // Device Data V2\n queryDeviceDataV2(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\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 if (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n queryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n }\n if (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n queryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n }\n if (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n queryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n }\n if (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n queryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\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, 'v2');\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryDeviceDataV2Aggregate(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\n if (queryParameters.hasOwnProperty(\"aggregateFunctions\")) {\n queryParameters.aggregateFunctions = MyDataHelps.reduceArrayAndEscape(queryParameters.aggregateFunctions);\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 if (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n queryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n }\n if (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n queryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n }\n if (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n queryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n }\n if (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n queryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'devicedata/aggregate?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null, 'v2');\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryDeviceDataV2DailySleep(queryParameters) {\n queryParameters = Object.assign({}, queryParameters);\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 if (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n queryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n }\n if (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n queryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n }\n if (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n queryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n }\n if (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n queryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\n }\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'devicedata/aggregate/dailysleep?' + queryString;\n const mdh = this;\n return this\n .connect()\n .then(function () {\n return mdh.makeRequest(endpoint, 'GET', null, 'v2');\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\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 // Files\n uploadFile(file, category) {\n if (file.size > 200 * 1024 * 1024) {\n throw new Error(\"File size exceeds the maximum allowed size of 200MB.\");\n }\n const mdh = this;\n const endpoint = 'files?category=' + category + '&fileName=' + encodeURIComponent(file.name);\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 (response) {\n return response.json();\n })\n .then(function (json) {\n return fetch(json.preSignedUrl, {\n method: 'PUT',\n body: file,\n headers: {\n 'Content-Type': file.type,\n 'x-amz-server-side-encryption': 'AES256'\n }\n });\n })\n .then(function (response) {\n return MyDataHelps.validateResponse(response);\n })\n .then(function (response) {\n return response.json();\n });\n }\n queryFiles(queryParameters) {\n const queryString = new URLSearchParams(queryParameters).toString();\n const endpoint = 'files?' + 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 getFileDownloadUrl(key) {\n if (!key)\n throw new Error(\"Please specify the key of the file to download.\");\n const endpoint = 'files/download?key=' + key;\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 deleteFile(key) {\n if (!key)\n throw new Error(\"Please specify the key of the file to delete.\");\n const endpoint = 'files?key=' + key;\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 // 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, apiVersion) {\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 + 'api/' + apiVersion + '/delegated/' + endpoint;\n }\n makeRequest(endpoint, method, body, apiVersion = \"v1\") {\n if (!this.token || !this.token.access_token) {\n throw \"No access_token available for request authorization.\";\n }\n let url = this.makeUrl(endpoint, apiVersion);\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","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","queryDeviceDataV2","insertedBefore","insertedAfter","modifiedBefore","modifiedAfter","queryDeviceDataV2Aggregate","aggregateFunctions","queryDeviceDataV2DailySleep","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","uploadFile","file","size","fetch","preSignedUrl","method","body","headers","queryFiles","getFileDownloadUrl","deleteFile","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","jsonResponse","toUpperCase","parameterString","makeUrl","apiVersion","access_token","Headers","append","init","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/tslib/tslib.es6.js","../../src/MyDataHelps.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","// @ts-ignore : let rollup handle CSS injection\nimport \"../MyDataHelps.css\";\n\nimport * as Model from \"./types\";\nimport { StringMap } from \"./types\";\n\nexport class MyDataHelps {\n\n\tbaseUrl: string = 'https://mydatahelps.org/';\n\tlanguage: string;\n\ttoken: Model.Token;\n\ttokenExpires: number;\n\n\t// Surveys\n\n\tstartSurvey(surveyName: string): void {\n\t\tif (this.isStandaloneMode()) {\n\t\t\tthis.startDelegatedSurvey(`${this.baseUrl}/survey?surveyName=${encodeURIComponent(surveyName)}`);\n\t\t}\n\t\telse if (window.webkit.messageHandlers.StartParticipantSurvey) {\n\t\t\tlet messageID = this.nextMessageID();\n\t\t\twindow.webkit.messageHandlers.StartParticipantSurvey.postMessage({\n\t\t\t\tmessageID: messageID,\n\t\t\t\tsurveyName: surveyName\n\t\t\t});\n\t\t}\n\t}\n\n\tcompleteStep(answer: any): void {\n\t\tif (answer === undefined || answer === null) answer = '';\n\t\tif (typeof answer !== 'string') {\n\t\t\tanswer = JSON.stringify(answer);\n\t\t}\n\t\tif (window.webkit.messageHandlers.ResearchKit) {\n\t\t\twindow.webkit.messageHandlers.ResearchKit.postMessage(answer);\n\t\t}\n\t\telse if (window.webkit.messageHandlers.CompleteStep) {\n\t\t\tlet messageID = this.nextMessageID();\n\t\t\twindow.webkit.messageHandlers.CompleteStep.postMessage({\n\t\t\t\tmessageID: messageID,\n\t\t\t\tanswer: answer\n\t\t\t});\n\t\t}\n\t}\n\n\tquerySurveyAnswers(queryParameters: Model.SurveyAnswersQuery): Promise<Model.SurveyAnswersPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"surveyName\")) {\n\t\t\tqueryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"stepIdentifier\")) {\n\t\t\tqueryParameters.stepIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.stepIdentifier);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"resultIdentifier\")) {\n\t\t\tqueryParameters.resultIdentifier = MyDataHelps.reduceArrayAndEscape(queryParameters.resultIdentifier);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"answer\")) {\n\t\t\tqueryParameters.answer = MyDataHelps.reduceArrayAndEscape(queryParameters.answer);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"before\")) {\n\t\t\tqueryParameters.before = MyDataHelps.convertDateToIsoString(queryParameters.before);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"after\")) {\n\t\t\tqueryParameters.after = MyDataHelps.convertDateToIsoString(queryParameters.after);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'surveyanswers?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tdeleteSurveyResult(resultID: string): Promise<void> {\n\t\tconst endpoint = 'surveyresults/' + encodeURIComponent(resultID);\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'DELETE', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\tquerySurveyTasks(queryParameters: Model.SurveyTaskQueryParameters): Promise<Model.SurveyTasksPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"status\")) {\n\t\t\tqueryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status) as Model.SurveyTaskStatus;\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"surveyName\")) {\n\t\t\tqueryParameters.surveyName = MyDataHelps.reduceArrayAndEscape(queryParameters.surveyName);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'surveytasks?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryInboxItems(queryParameters: Model.InboxItemQueryParameters): Promise<Model.InboxItemsPage> {\n\t\tconst assignDefined = (target: any, source: any): any => {\n\t\t\tfor (const key of Object.keys(source)) {\n\t\t\t\tconst value = source[key];\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\ttarget[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn target;\n\t\t};\n\n\t\tqueryParameters = assignDefined({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"type\")) {\n\t\t\tqueryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type) as Model.InboxItemType;\n\t\t}\n\n\t\tif (queryParameters.hasOwnProperty(\"status\")) {\n\t\t\tqueryParameters.status = MyDataHelps.reduceArrayAndEscape(queryParameters.status) as Model.InboxItemStatus;\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'inbox?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tgetInboxItem(id: Model.Guid): Promise<Model.InboxItem> {\n\t\tconst endpoint = `inbox/${id}`;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tupdateInboxItem(id: Model.Guid, update: Model.InboxItemUpdate): Promise<Model.InboxItemUpdateResult> {\n\t\tconst endpoint = `inbox/${id}/${update}`;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'PUT', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tstartEmbeddedSurvey(linkIdentifier: string, surveyName: string, language: string): Promise<any> {\n\t\tif (!language) {\n\t\t\tlanguage = this.getCurrentLanguage();\n\t\t}\n\t\tlet surveyUrl = this.baseUrl + \"mydatahelps/\" + linkIdentifier + '/surveylink/' + surveyName + \"?lang=\" + language;\n\t\treturn this.startEmbeddedSurveyInternal(surveyUrl);\n\t}\n\n\t// Navigation\n\n\topenExternalUrl(url: string): void {\n\t\tif (window.webkit.messageHandlers.OpenExternalLink) {\n\t\t\twindow.webkit.messageHandlers.OpenExternalLink.postMessage(url);\n\t\t}\n\t}\n\n\topenEmbeddedUrl(url: string): void {\n\t\tif (window.webkit.messageHandlers.OpenEmbeddedLink) {\n\t\t\twindow.webkit.messageHandlers.OpenEmbeddedLink.postMessage(url);\n\t\t}\n\t}\n\n\tshowTab(tabKey: string): void {\n\t\tif (window.webkit.messageHandlers.ShowTab) {\n\t\t\twindow.webkit.messageHandlers.ShowTab.postMessage(tabKey);\n\t\t}\n\t}\n\n\topenApplication(url: string, options?: Model.OpenApplicationOptions): void {\n\t\tif (window.webkit.messageHandlers.OpenExternalApplication) {\n\t\t\tlet messageID = this.nextMessageID();\n\t\t\twindow.webkit.messageHandlers.OpenExternalApplication.postMessage({\n\t\t\t\tmessageID: messageID,\n\t\t\t\turl: url,\n\t\t\t\tmodal: !!(options && options.modal)\n\t\t\t});\n\t\t}\n\t}\n\n\tdismiss(): void {\n\t\tif (window.webkit.messageHandlers.Dismiss) {\n\t\t\twindow.webkit.messageHandlers.Dismiss.postMessage({});\n\t\t}\n\t}\n\n\tback(): void {\n\t\tif (window.webkit.messageHandlers.PopNavigation) {\n\t\t\twindow.webkit.messageHandlers.PopNavigation.postMessage({});\n\t\t}\n\t}\n\n\tshowDashboard(dashboardKey: string, options?: Model.ShowDashboardOptions): void {\n\t\tif (window.webkit.messageHandlers.ShowParticipantDashboard) {\n\t\t\twindow.webkit.messageHandlers.ShowParticipantDashboard.postMessage({\n\t\t\t\tdashboardKey: dashboardKey,\n\t\t\t\tmodal: !!(options && options.modal),\n\t\t\t\ttitle: options && options.title ? options.title : undefined\n\t\t\t});\n\t\t}\n\t}\n\n\tshowWebVisualization(visualizationKey: string, parameters: object, options: Model.ShowWebVisualizationOptions): void {\n\t\tif (window.webkit.messageHandlers.ShowParticipantWebVisualization) {\n\t\t\twindow.webkit.messageHandlers.ShowParticipantWebVisualization.postMessage({\n\t\t\t\tvisualizationKey: visualizationKey,\n\t\t\t\tparameters: parameters,\n\t\t\t\tmodal: !!(options && options.modal),\n\t\t\t\ttitle: options && options.title ? options.title : undefined\n\t\t\t});\n\t\t}\n\t}\n\n\tshowWebVisualizationPdf(visualizationKey: string, parameters: object, options: Model.ShowWebVisualizationPdfOptions): void {\n\t\tif (window.webkit.messageHandlers.ShowParticipantWebVisualizationPDF) {\n\t\t\twindow.webkit.messageHandlers.ShowParticipantWebVisualizationPDF.postMessage({\n\t\t\t\tvisualizationKey: visualizationKey,\n\t\t\t\tparameters: parameters,\n\t\t\t\tlandscape: !!(options && options.landscape),\n\t\t\t\thtmlViewerZoom: options && options.htmlViewerZoom\n\t\t\t});\n\t\t}\n\t}\n\n\tshowProject(projectCode: string): void {\n\t\tif (window.webkit.messageHandlers.ShowProject) {\n\t\t\twindow.webkit.messageHandlers.ShowProject.postMessage({ code: projectCode });\n\t\t}\n\t}\n\n\tjoinProject(projectCode: string): void {\n\t\tif (window.webkit.messageHandlers.JoinProject) {\n\t\t\twindow.webkit.messageHandlers.JoinProject.postMessage({ code: projectCode });\n\t\t}\n\t}\n\n\t//Events\n\n\ton(eventName: Model.EventName, callback: (EventData) => void): void {\n\n\t\tif (!this.supportedEvents.includes(eventName)) {\n\t\t\tthrow new Error(eventName + \" is not a supported event type.\");\n\t\t}\n\n\t\tif (!this.registeredEventHandlers[eventName]) {\n\t\t\tthis.registeredEventHandlers[eventName] = [];\n\t\t}\n\n\t\tthis.registeredEventHandlers[eventName].push(callback);\n\t}\n\n\toff(eventName: Model.EventName, callback: (EventData) => void): void {\n\n\t\tif (!this.supportedEvents.includes(eventName)) {\n\t\t\tthrow new Error(eventName + \" is not a supported event type.\");\n\t\t}\n\n\t\tif (!this.registeredEventHandlers[eventName]) return;\n\n\t\tlet eventHandlerIndex = this.registeredEventHandlers[eventName].indexOf(callback);\n\n\t\tif (eventHandlerIndex !== -1) {\n\t\t\tthis.registeredEventHandlers[eventName].splice(eventHandlerIndex, 1);\n\t\t}\n\t}\n\n\ttriggerEvent(event: Model.EventData): void {\n\t\tlet eventName = event.type;\n\t\tif (this.supportedEvents.includes(eventName) && this.registeredEventHandlers[eventName]) {\n\t\t\tthis.registeredEventHandlers[eventName].forEach(function (handler) {\n\t\t\t\thandler(event);\n\t\t\t});\n\t\t}\n\t}\n\n\tsetActionResult(data: Model.EventData): void {\n\t\tthis.messageHandlers[data.messageID](data);\n\t}\n\n\t// Participant Info\n\n\tgetParticipantInfo(): Promise<Model.ParticipantInfo> {\n\t\tconst mdh = this;\n\t\tconst endpoint = 'participant';\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tpersistParticipantInfo(demographics: Partial<Model.ParticipantDemographics>, customFields: StringMap): Promise<Model.ParticipantInfo> {\n\t\tconst endpoint = 'participant';\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'PUT', { demographics, customFields });\n\t\t\t})\n\t\t\t.then(async function (response) {\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tvar errorJson = await response.json();\n\t\t\t\t\tthrow errorJson.message;\n\t\t\t\t}\n\t\t\t\treturn response.json();\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tconsole.log(\"Unable to persist participant: \" + error);\n\t\t\t});\n\t}\n\n\tgetProjectInfo(): Promise<Model.ProjectInfo> {\n\t\tconst mdh = this;\n\t\tconst endpoint = 'project';\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\t// Device Data\n\n\tgetDeviceDataPoint(id: Model.Guid): Promise<Model.DeviceDataPoint> {\n\t\tconst endpoint = 'devicedata/' + id;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tdeleteDeviceDataPoint(id: Model.Guid): Promise<void> {\n\t\tconst endpoint = 'devicedata/' + id;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'DELETE', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\tqueryDeviceData(queryParameters: Model.DeviceDataPointQuery): Promise<Model.DeviceDataPointsPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"type\")) {\n\t\t\tqueryParameters.type = MyDataHelps.reduceArrayAndEscape(queryParameters.type);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedBefore\")) {\n\t\t\tqueryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedAfter\")) {\n\t\t\tqueryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'devicedata?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tpersistDeviceData(deviceDataPoints: Model.PersistableDeviceDataPoint[]): Promise<void> {\n\t\tconst endpoint = 'devicedata';\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'POST', deviceDataPoints);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\t// Device Data V2\n\n\tqueryDeviceDataV2(queryParameters: Model.DeviceDataV2Query): Promise<Model.DeviceDataV2Page> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"observedBefore\")) {\n\t\t\tqueryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedAfter\")) {\n\t\t\tqueryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n\t\t\tqueryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n\t\t\tqueryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n\t\t\tqueryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n\t\t\tqueryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'devicedata?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null, 'v2');\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryDeviceDataV2Aggregate(queryParameters: Model.DeviceDataV2AggregateQuery): Promise<Model.DeviceDataV2AggregatePage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"aggregateFunctions\")) {\n\t\t\tqueryParameters.aggregateFunctions = MyDataHelps.reduceArrayAndEscape(queryParameters.aggregateFunctions);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedBefore\")) {\n\t\t\tqueryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedAfter\")) {\n\t\t\tqueryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n\t\t\tqueryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n\t\t\tqueryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n\t\t\tqueryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n\t\t\tqueryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'devicedata/aggregate?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null, 'v2');\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryDeviceDataV2DailySleep(queryParameters: Model.DeviceDataV2AggregateQuery): Promise<Model.DeviceDataV2DailySleepPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"observedBefore\")) {\n\t\t\tqueryParameters.observedBefore = MyDataHelps.convertDateToIsoString(queryParameters.observedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"observedAfter\")) {\n\t\t\tqueryParameters.observedAfter = MyDataHelps.convertDateToIsoString(queryParameters.observedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedBefore\")) {\n\t\t\tqueryParameters.insertedBefore = MyDataHelps.convertDateToIsoString(queryParameters.insertedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"insertedAfter\")) {\n\t\t\tqueryParameters.insertedAfter = MyDataHelps.convertDateToIsoString(queryParameters.insertedAfter);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedBefore\")) {\n\t\t\tqueryParameters.modifiedBefore = MyDataHelps.convertDateToIsoString(queryParameters.modifiedBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"modifiedAfter\")) {\n\t\t\tqueryParameters.modifiedAfter = MyDataHelps.convertDateToIsoString(queryParameters.modifiedAfter);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'devicedata/aggregate/dailysleep?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null, 'v2');\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\t// External Accounts\n\n\tgetExternalAccountProviders(search: string | null, category: string | null, pageSize: number, pageNumber: number): Promise<Model.ExternalAccountProvidersPage> {\n\t\tlet searchParameters: any = {};\n\t\tif (!!search) searchParameters.search = search;\n\t\tif (!!category) searchParameters.category = category;\n\t\tif (!!pageSize) searchParameters.pageSize = pageSize;\n\t\tif (!!pageNumber) searchParameters.pageNumber = pageNumber;\n\n\t\tconst queryString = new URLSearchParams(searchParameters).toString();\n\t\tconst endpoint = 'externalaccountproviders?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tconnectExternalAccount(externalAccountProviderID: number, options?: Model.ConnectExternalAccountOptions): Promise<void> {\n\t\treturn new Promise<void>((resolve, reject) => {\n\n\t\t\tconst messageID = mdh.nextMessageID();\n\t\t\tmdh.messageHandlers[messageID] = function (connectProviderAccountResponse) {\n\t\t\t\tif (connectProviderAccountResponse && connectProviderAccountResponse.success) {\n\t\t\t\t\tresolve();\n\t\t\t\t} else {\n\t\t\t\t\treject(connectProviderAccountResponse.errorMessage)\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (this.standaloneMode) {\n\t\t\t\tlet standaloneModeFinalRedirectPath = options?.standaloneModeFinalRedirectPath || window.location.href;\n\t\t\t\tconst mdh = this;\n\n\t\t\t\t// DEV: Safari blocks popups in AJAX responses. Work-around is to open a blank window before the request and set the URL later\n\t\t\t\tlet providerAuthWindow;\n\t\t\t\tif (options?.openNewWindow) {\n\t\t\t\t\tstandaloneModeFinalRedirectPath = `${standaloneModeFinalRedirectPath.split('?')[0]}?connectExternalAccount=true&messageID=${messageID}&success=%SUCCESSVALUE%`;\n\t\t\t\t\tlet windowFeatures = null;\n\t\t\t\t\tif (options?.width && options?.height) {\n\t\t\t\t\t\tconst w = options?.width;\n\t\t\t\t\t\tconst h = options?.height;\n\t\t\t\t\t\tconst y = window.top.outerHeight / 2 + window.top.screenY - (h / 2);\n\t\t\t\t\t\tconst x = window.top.outerWidth / 2 + window.top.screenX - (w / 2);\n\t\t\t\t\t\twindowFeatures = \"width=\" + w + \",height=\" + h + \",top=\" + y + \",left=\" + x;\n\t\t\t\t\t}\n\t\t\t\t\tproviderAuthWindow = window.open(`${this.baseUrl}home/loading`, 'providerauth', windowFeatures);\n\t\t\t\t}\n\n\t\t\t\tconst searchParameters = { finalRedirectPath: standaloneModeFinalRedirectPath };\n\t\t\t\tconst queryString = new URLSearchParams(searchParameters).toString();\n\t\t\t\tconst endpoint = \"externalaccountproviders/\" + externalAccountProviderID + \"/connect?\" + queryString;\n\n\t\t\t\tthis\n\t\t\t\t\t.connect()\n\t\t\t\t\t.then(function () {\n\t\t\t\t\t\treturn mdh.makeRequest(endpoint, 'POST', null);\n\t\t\t\t\t})\n\t\t\t\t\t.then(function (response) {\n\t\t\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t\t\t})\n\t\t\t\t\t.then(function (response) {\n\t\t\t\t\t\treturn response.text();\n\t\t\t\t\t})\n\t\t\t\t\t.then(function (redirectUrl) {\n\t\t\t\t\t\tif (providerAuthWindow) {\n\t\t\t\t\t\t\tproviderAuthWindow.location = redirectUrl.replace(/['\"]+/g, '');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.top.location = redirectUrl.replace(/['\"]+/g, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch(function (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t});\n\t\t\t} else if (window.webkit.messageHandlers.ConnectExternalAccount) {\n\t\t\t\twindow.webkit.messageHandlers.ConnectExternalAccount.postMessage({\n\t\t\t\t\texternalAccountProviderID: externalAccountProviderID,\n\t\t\t\t\tmessageID: messageID,\n\t\t\t\t\t...options\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tgetExternalAccounts(): Promise<Model.ExternalAccount[]> {\n\t\tconst endpoint = 'externalaccounts';\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\trefreshExternalAccount(accountID: number): Promise<void> {\n\t\tconst endpoint = 'externalaccounts/refresh/' + accountID;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'POST', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\tdeleteExternalAccount(accountID: number): Promise<any> {\n\t\tconst endpoint = 'externalaccounts/delete/' + encodeURIComponent(accountID);\n\t\tconst mdh = this;\n\n\t\tif (this.isStandaloneMode()) {\n\t\t\treturn this\n\t\t\t\t.connect()\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn mdh.makeRequest(endpoint, 'DELETE', null);\n\t\t\t\t})\n\t\t\t\t.then(function (response) {\n\t\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t\t});\n\t\t}\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (window.webkit.messageHandlers.DeleteProviderAccount) {\n\t\t\t\tconst messageID = mdh.nextMessageID();\n\t\t\t\tmdh.messageHandlers[messageID] = function (deleteProviderAccountResponse) {\n\t\t\t\t\tif (!deleteProviderAccountResponse.success) {\n\t\t\t\t\t\treject(deleteProviderAccountResponse)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(deleteProviderAccountResponse);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\twindow.webkit.messageHandlers.DeleteProviderAccount.postMessage({\n\t\t\t\t\tmessageID: messageID,\n\t\t\t\t\taccountID: accountID\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t}\n\n\t// Notifications\n\n\tqueryNotifications(queryParameters: Model.NotificationQueryParameters): Promise<Model.NotificationsPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"sentBefore\")) {\n\t\t\tqueryParameters.sentBefore = MyDataHelps.convertDateToIsoString(queryParameters.sentBefore);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"sentAfter\")) {\n\t\t\tqueryParameters.sentAfter = MyDataHelps.convertDateToIsoString(queryParameters.sentAfter);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'notifications?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\t// Fitbit\n\n\tqueryFitbitDailySummaries(queryParameters: Model.FitbitQuery): Promise<Model.FitbitDailySummariesPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"startDate\")) {\n\t\t\tqueryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"endDate\")) {\n\t\t\tqueryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'fitbit/dailySummaries?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryFitbitSleepLogs(queryParameters: Model.FitbitQuery): Promise<Model.FitbitSleepLogsPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"startDate\")) {\n\t\t\tqueryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"endDate\")) {\n\t\t\tqueryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'fitbit/sleepLogs?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\t// AppleHealth\n\n\tqueryAppleHealthActivitySummaries(queryParameters: Model.AppleHealthQuery): Promise<Model.AppleHealthActivitySummaryPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"startDate\")) {\n\t\t\tqueryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"endDate\")) {\n\t\t\tqueryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'appleHealth/activitySummaries?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryAppleHealthWorkouts(queryParameters: Model.AppleHealthQuery): Promise<Model.AppleHealthWorkoutPage> {\n\t\tqueryParameters = Object.assign({}, queryParameters);\n\n\t\tif (queryParameters.hasOwnProperty(\"startDate\")) {\n\t\t\tqueryParameters.startDate = MyDataHelps.convertDateToIsoString(queryParameters.startDate);\n\t\t}\n\t\tif (queryParameters.hasOwnProperty(\"endDate\")) {\n\t\t\tqueryParameters.endDate = MyDataHelps.convertDateToIsoString(queryParameters.endDate);\n\t\t}\n\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'appleHealth/workouts?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\t// Files\n\n\tuploadFile(file: File, category: string): Promise<Model.DownloadedFile> {\n\n\t\tif (file.size > 200 * 1024 * 1024) {\n\t\t\tthrow new Error(\"File size exceeds the maximum allowed size of 200MB.\");\n\t\t}\n\n\t\tconst mdh = this;\n\t\tconst endpoint = 'files?category=' + category + '&fileName=' + encodeURIComponent(file.name);\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'POST', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t})\n\t\t\t.then(function (json) {\n\t\t\t\treturn fetch(json.preSignedUrl, {\n\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\tbody: file,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': file.type,\n\t\t\t\t\t\t'x-amz-server-side-encryption': 'AES256'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tqueryFiles(queryParameters: Model.UploadedFileQuery): Promise<Model.UploadedFilesPage> {\n\t\tconst queryString = new URLSearchParams(queryParameters as Record<string, any>).toString();\n\t\tconst endpoint = 'files?' + queryString;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tgetFileDownloadUrl(key: string): Promise<Model.DownloadedFile> {\n\n\t\tif (!key) throw new Error(\"Please specify the key of the file to download.\");\n\n\t\tconst endpoint = 'files/download?key=' + key;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tdeleteFile(key: string): Promise<void> {\n\n\t\tif (!key) throw new Error(\"Please specify the key of the file to delete.\");\n\n\t\tconst endpoint = 'files?key=' + key;\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'DELETE', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\t// Authorization\n\n\tconnect(): Promise<void> {\n\t\tconst mdh = this;\n\t\tlet refreshDelegatedAccessToken = function () {\n\t\t\tmdh.token = null;\n\n\t\t\tmdh.refreshTokenPromise = new Promise(function (resolve, reject) {\n\t\t\t\tlet messageID = mdh.nextMessageID();\n\t\t\t\tmdh.messageHandlers[messageID] = function (tokenResponse) {\n\t\t\t\t\tif (tokenResponse.success) {\n\t\t\t\t\t\tmdh.tokenExpires = Date.now() + (tokenResponse.data.expires_in * 1000);\n\t\t\t\t\t\tmdh.token = tokenResponse.data;\n\t\t\t\t\t\tmdh.baseUrl = tokenResponse.baseUrl;\n\t\t\t\t\t\tsetTimeout(refreshDelegatedAccessToken, ((tokenResponse.data.expires_in - mdh.accessTokenRenewalBufferSeconds) * 1000));\n\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmdh.token = null;\n\t\t\t\t\t\treject(tokenResponse.message);\n\t\t\t\t\t}\n\t\t\t\t\tmdh.messageHandlers[messageID] = null;\n\t\t\t\t\tmdh.refreshTokenPromise = null;\n\t\t\t\t};\n\n\t\t\t\twindow.webkit.messageHandlers.GetDelegatedAccessToken.postMessage({ messageID: messageID });\n\t\t\t});\n\t\t};\n\n\t\tif (this.token && Date.now() < this.tokenExpires) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tif (this.isStandaloneMode()) {\n\t\t\tlet error = this.token ? \"access token is expired or invalid\" : \"access token must be explicitly provided using the setParticipantAccess method\";\n\t\t\tconsole.log(error);\n\t\t\treturn Promise.reject(error);\n\t\t}\n\n\t\tif (!this.refreshTokenPromise) {\n\t\t\trefreshDelegatedAccessToken();\n\t\t}\n\n\t\t// Re-use promise if refresh already in progress\n\t\treturn this.refreshTokenPromise;\n\t}\n\n\tsetParticipantAccessToken(token: Model.Token, baseUrl?: string): void {\n\t\tthis.enableStandaloneMode();\n\t\tthis.token = token;\n\t\tif (baseUrl) {\n\t\t\tthis.baseUrl = baseUrl;\n\t\t}\n\t\tthis.tokenExpires = Date.now() + (this.token.expires_in * 1000);\n\t\tconst mdh = this;\n\t\tsetTimeout(function () {\n\t\t\tmdh.triggerEvent({ type: \"tokenWillExpire\" });\n\t\t}, ((this.token.expires_in - this.accessTokenRenewalBufferSeconds) * 1000));\n\t}\n\n\t// Miscellaneous\n\n\tisStandaloneMode() {\n\t\treturn this.standaloneMode;\n\t}\n\n\tenableStandaloneMode() {\n\t\tthis.standaloneMode = true;\n\t\tif (window.webkit) {\n\t\t\twindow.webkit.messageHandlers = {};\n\t\t}\n\t}\n\n\tsetStatusBarStyle(style: Model.StatusBarStyle): void {\n\t\tif (window.webkit.messageHandlers.SetStatusBarStyle) {\n\t\t\twindow.webkit.messageHandlers.SetStatusBarStyle.postMessage({ style: style });\n\t\t}\n\t}\n\n\tgetDeviceInfo(): Promise<Model.DeviceInfo> {\n\t\tlet mdh = this;\n\t\treturn new Promise<Model.DeviceInfo>(function (resolve, reject) {\n\t\t\tif (mdh.isStandaloneMode()) {\n\t\t\t\tresolve(null);\n\t\t\t} else if (window.webkit.messageHandlers.GetDeviceInfo) {\n\t\t\t\tlet messageID = mdh.nextMessageID();\n\t\t\t\tmdh.messageHandlers[messageID] = function (deviceInfoResponse) {\n\t\t\t\t\tresolve(deviceInfoResponse.data);\n\t\t\t\t};\n\t\t\t\twindow.webkit.messageHandlers.GetDeviceInfo.postMessage({ messageID: messageID });\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t}\n\n\tsetSupportedLanguages(languages: string[]) {\n\t\tthis.supportedLanguages.length = 0;\n\t\tfor (let i = 0; i < languages.length; i++) {\n\t\t\tthis.supportedLanguages.push(languages[i].replace(\"_\", \"-\"));\n\t\t}\n\t}\n\n\tgetStepConfiguration(): Promise<Model.StepConfiguration> {\n\t\tlet mdh = this;\n\t\treturn new Promise<Model.StepConfiguration>(function (resolve, reject) {\n\t\t\tif (mdh.isStandaloneMode()) {\n\t\t\t\tresolve(null);\n\t\t\t} else if (window.webkit.messageHandlers.GetStepConfiguration) {\n\t\t\t\tlet messageID = mdh.nextMessageID();\n\t\t\t\tmdh.messageHandlers[messageID] = function (stepConfigurationResponse) {\n\t\t\t\t\tresolve(stepConfigurationResponse.data);\n\t\t\t\t};\n\t\t\t\twindow.webkit.messageHandlers.GetStepConfiguration.postMessage({ messageID: messageID });\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSurveyContext(): Promise<Model.SurveyContext> {\n\t\tlet mdh = this;\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (mdh.isStandaloneMode()) {\n\t\t\t\tresolve(null);\n\t\t\t}\n\t\t\tmdh.getDeviceInfo().then(function (deviceInfo) {\n\t\t\t\tif (deviceInfo.platform !== \"Web\") {\n\t\t\t\t\tresolve({ surveyMode: \"Survey\" });\n\t\t\t\t}\n\t\t\t\telse if (window.webkit.messageHandlers.GetSurveyContext) {\n\t\t\t\t\tlet messageID = mdh.nextMessageID();\n\t\t\t\t\tmdh.messageHandlers[messageID] = function (surveyContextResponse) {\n\t\t\t\t\t\tresolve(surveyContextResponse.data);\n\t\t\t\t\t};\n\t\t\t\t\twindow.webkit.messageHandlers.GetSurveyContext.postMessage({ messageID: messageID });\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t}).catch(function (error) {\n\t\t\t\treject();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetCurrentSurveyAnswers(): Promise<Model.CurrentSurveyAnswer[]> {\n\t\tlet mdh = this;\n\t\treturn new Promise<Model.CurrentSurveyAnswer[]>(function (resolve, reject) {\n\t\t\tif (mdh.isStandaloneMode()) {\n\t\t\t\tresolve(null);\n\t\t\t} else if (window.webkit.messageHandlers.GetCurrentSurveyAnswers) {\n\t\t\t\tlet messageID = mdh.nextMessageID();\n\t\t\t\tmdh.messageHandlers[messageID] = function (currentSurveyAnswersResponse) {\n\t\t\t\t\tresolve(currentSurveyAnswersResponse.data);\n\t\t\t\t};\n\t\t\t\twindow.webkit.messageHandlers.GetCurrentSurveyAnswers.postMessage({ messageID: messageID });\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t}\n\n\tsetCurrentLanguage(language: string) {\n\t\tif (language) {\n\t\t\tlet supportedLanguage = this.getSupportedLanguage(language);\n\t\t\tif (supportedLanguage) {\n\t\t\t\tthis.language = supportedLanguage;\n\t\t\t} else {\n\t\t\t\tconsole.warn(`language ${language} not supported`);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.language = language;\n\t\t}\n\t}\n\n\tgetCurrentLanguage(): string {\n\t\tlet searchParams = new URLSearchParams(window.location.search);\n\t\tlet lang;\n\t\tif (searchParams.has(\"lang\")) {\n\t\t\tlang = this.getSupportedLanguage(searchParams.get(\"lang\"));\n\t\t\tif (lang) {\n\t\t\t\treturn lang;\n\t\t\t} else {\n\t\t\t\tconsole.warn(`language ${searchParams.get(\"lang\")} not supported`);\n\t\t\t}\n\t\t}\n\t\treturn this.language || navigator.language;\n\t}\n\n\tshowGoogleFitSettings(): void {\n\t\tif (window.webkit.messageHandlers.ShowGoogleFitSettings) {\n\t\t\twindow.webkit.messageHandlers.ShowGoogleFitSettings.postMessage({});\n\t\t}\n\t}\n\n\trequestReview(cooldownDays?: number): void {\n\t\tif (window.webkit.messageHandlers.RequestReview) {\n\t\t\twindow.webkit.messageHandlers.RequestReview.postMessage({ cooldownDays: cooldownDays });\n\t\t}\n\t}\n\n\ttrackCustomEvent(event: Model.CustomEventInfo): Promise<void> {\n\t\tconst endpoint = 'customevents';\n\t\tconst mdh = this;\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'POST', event);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn;\n\t\t\t});\n\t}\n\n\tgetDataCollectionSettings(): Promise<Model.DataCollectionSettings> {\n\t\tconst mdh = this;\n\t\tconst endpoint = 'datacollectionsettings';\n\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, 'GET', null);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t});\n\t}\n\n\tinvokeCustomApi(customApi: string, method: string, queryParameters: string | string[][] | Record<string, string> | URLSearchParams | null | undefined, jsonResponse: boolean): Promise<any> {\n\t\tif (customApi.includes('?')) {\n\t\t\tthrow new Error(\"Cannot include query parameters directly in the \\\"customApi\\\" string. Provide as an argument for \\\"queryParameters\\\" instead.\");\n\t\t}\n\n\t\tlet endpoint = 'custom/' + customApi;\n\t\tmethod = method.toUpperCase();\n\t\tif (queryParameters !== null && queryParameters !== undefined && (method === 'GET' || method === 'DELETE')) {\n\t\t\tlet parameterString = new URLSearchParams(queryParameters).toString();\n\t\t\tendpoint += \"?\" + parameterString;\n\t\t\tqueryParameters = null;\n\t\t}\n\n\t\tconst mdh = this;\n\t\treturn this\n\t\t\t.connect()\n\t\t\t.then(function () {\n\t\t\t\treturn mdh.makeRequest(endpoint, method, queryParameters);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn MyDataHelps.validateResponse(response);\n\t\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\treturn jsonResponse ? response.json() : undefined;\n\t\t\t});\n\t}\n\n\tconstructor() {\n\t\tif (this.handleConnectExternalAccountResponse()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet mdh = this;\n\t\tlet applicationHost = getParentOrigin();\n\t\tlet supportedActions;\n\n\t\tfunction getParentOrigin(): string {\n\t\t\tlet ancestorOrigins = document.location.ancestorOrigins;\n\t\t\tif (ancestorOrigins && ancestorOrigins[0]) {\n\t\t\t\treturn ancestorOrigins[0];\n\t\t\t}\n\n\t\t\treturn '*';\n\t\t}\n\n\t\tfunction acceptableOrigin(origin) {\n\t\t\tif (origin === '*') return true;\n\n\t\t\tlet sourceURL = new URL(origin);\n\t\t\tfor (let k = 0; k < mdh.acceptableParentDomains.length; k++) {\n\t\t\t\tif (sourceURL.hostname === mdh.acceptableParentDomains[k] || sourceURL.hostname.endsWith(\".\" + mdh.acceptableParentDomains[k])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction validateWindowMessageOrigin(message) {\n\t\t\tif (mdh.isStandaloneMode() && message.origin === window.location.origin) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (applicationHost === \"*\") {\n\t\t\t\treturn acceptableOrigin(message.origin);\n\t\t\t}\n\n\t\t\treturn message.origin === applicationHost;\n\t\t}\n\n\t\tfunction addActions(actions) {\n\t\t\tfor (let action in actions) {\n\t\t\t\tif (!window.webkit.messageHandlers[action]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twindow.webkit.messageHandlers[action] = { postMessage: actions[action] };\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.log(\"Unable to add missing actions on this platform: \" + error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction receiveWindowMessage(message) {\n\t\t\tif (!validateWindowMessageOrigin(message)) {\n\t\t\t\t// todo: this can generate tons of console errors when hosting some apps within webappstep (youtube content, for example )\n\t\t\t\tconsole.error(\"message.origin '\" + message.origin + \"' is not allowed.\");\n\t\t\t\tthrow \"message.origin '\" + message.origin + \"' is not allowed.\";\n\t\t\t}\n\n\t\t\tif (message.data.messageID) {\n\t\t\t\tmdh.setActionResult(message.data);\n\t\t\t} else {\n\t\t\t\tmdh.triggerEvent(message.data);\n\t\t\t}\n\t\t}\n\n\t\tfunction windowHasAnyActions() {\n\t\t\tfor (let action in supportedActions) {\n\t\t\t\tif (window.webkit.messageHandlers[action]) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let action in mdh.unsupportedActions) {\n\t\t\t\tif (window.webkit.messageHandlers[mdh.unsupportedActions[action]]) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!acceptableOrigin(applicationHost)) {\n\t\t\tconsole.log(\"Detected unsupported parent origin domain.\");\n\t\t}\n\n\t\tif (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ResearchKit) {\n\t\t\t// Presence of ResearchKit handler indicates the SDK is being used from within a WebViewStep. For pre-SDK backwards compatiblity,\n\t\t\t// WebViewStep setup registers the following handlers: GetDeviceInfo, DeleteProviderAccount, ConnectExternalAccount\n\t\t\t// ShowParticipantWebVisualizationPDF, ResearchKit\n\t\t\tsupportedActions = {\n\t\t\t\t\"GetDelegatedAccessToken\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetDelegatedAccessToken',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"OpenExternalLink\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'OpenExternalUrl',\n\t\t\t\t\t\turl: data\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"OpenEmbeddedLink\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'OpenEmbeddedUrl',\n\t\t\t\t\t\turl: data\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetCurrentSurveyAnswers\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetCurrentSurveyAnswers',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetStepConfiguration\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetStepConfiguration',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetSurveyContext\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetSurveyContext',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost);\n\t\t\t\t},\n\t\t\t\t\"CompleteStep\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'CompleteStep',\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\tanswer: data.answer\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tsupportedActions = {\n\t\t\t\t\"GetDelegatedAccessToken\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetDelegatedAccessToken',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetDeviceInfo\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'GetDeviceInfo', messageID: data.messageID }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"StartParticipantSurvey\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'StartParticipantSurvey',\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\tsurveyName: data.surveyName\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"OpenExternalLink\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'OpenExternalUrl', url: data }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"OpenEmbeddedLink\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'OpenEmbeddedUrl', url: data }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"OpenExternalApplication\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'OpenApplication',\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\turl: data.url,\n\t\t\t\t\t\tmodal: data.modal\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"Dismiss\": function () {\n\t\t\t\t\twindow.parent.postMessage({ name: 'Dismiss' }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"PopNavigation\": function () {\n\t\t\t\t\twindow.parent.postMessage({ name: 'Back' }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ShowTab\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'ShowTab', tabKey: data }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ShowParticipantDashboard\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'ShowParticipantDashboard',\n\t\t\t\t\t\tdashboardKey: data.dashboardKey,\n\t\t\t\t\t\tmodal: data.modal\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ShowParticipantWebVisualization\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'ShowParticipantWebVisualization',\n\t\t\t\t\t\tvisualizationKey: data.visualizationKey,\n\t\t\t\t\t\tparameters: data.parameters,\n\t\t\t\t\t\tmodal: data.modal\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ShowParticipantWebVisualizationPDF\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'ShowParticipantWebVisualizationPDF',\n\t\t\t\t\t\tvisualizationKey: data.visualizationKey,\n\t\t\t\t\t\tparameters: data.parameters,\n\t\t\t\t\t\tmodal: data.modal,\n\t\t\t\t\t\tlandscape: data.landscape,\n\t\t\t\t\t\thtmlViewerZoom: data.htmlViewerZoom\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"DeleteProviderAccount\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'DeleteProviderAccount',\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\taccountID: data.accountID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ConnectExternalAccount\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'ConnectExternalAccount',\n\t\t\t\t\t\texternalAccountProviderID: data.externalAccountProviderID,\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\topenNewWindow: data.openNewWindow,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"ShowProject\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'ShowProject', code: data.code }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"JoinProject\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({ name: 'JoinProject', code: data.code }, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetCurrentSurveyAnswers\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetCurrentSurveyAnswers',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"GetStepConfiguration\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'GetStepConfiguration',\n\t\t\t\t\t\tmessageID: data.messageID\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t},\n\t\t\t\t\"CompleteStep\": function (data) {\n\t\t\t\t\twindow.parent.postMessage({\n\t\t\t\t\t\tname: 'CompleteStep',\n\t\t\t\t\t\tmessageID: data.messageID,\n\t\t\t\t\t\tanswer: data.answer\n\t\t\t\t\t}, applicationHost)\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif (!window.webkit || !window.webkit.messageHandlers || !windowHasAnyActions()) {\n\t\t\twindow.webkit = {\n\t\t\t\tmessageHandlers: {}\n\t\t\t};\n\t\t}\n\n\t\taddActions(supportedActions);\n\n\t\twindow.addEventListener(\"message\", receiveWindowMessage, false);\n\t}\n\n\tprivate readonly acceptableParentDomains = [\n\t\t'localhost',\n\t\t'careevolution.com',\n\t\t'internal',\n\t\t'b3-deploys.com',\n\t\t'mydatahelps.org',\n\t\t'platform.joinallofus.org',\n\t\t'careevolution.dev',\n\t\t'ce.dev',\n\t\t'mydatahelps.dev'\n\t];\n\n\tprivate readonly accessTokenRenewalBufferSeconds = 120;\n\tprivate readonly unsupportedActions = [\"SetHeight\", \"ResearchKit\"];\n\tprivate readonly supportedEvents = [\"surveyDidFinish\", \"applicationDidBecomeVisible\", \"externalAccountSyncComplete\", \"tokenWillExpire\"];\n\tprivate readonly supportedLanguages = [];\n\n\tprivate currentMessageID = 1;\n\tprivate messageHandlers = [];\n\tprivate registeredEventHandlers = {};\n\tprivate refreshTokenPromise = null;\n\tprivate standaloneMode = false;\n\n\tprivate nextMessageID() {\n\t\treturn this.currentMessageID++;\n\t}\n\n\tprivate makeUrl(endpoint, apiVersion) {\n\t\tif (!this.baseUrl) {\n\t\t\tconsole.error(\"Cannot use makeUrl without MyDataHelps.baseUrl.\");\n\t\t\tthrow \"Cannot use makeUrl without MyDataHelps.baseUrl.\";\n\t\t}\n\n\t\treturn this.baseUrl + 'api/' + apiVersion + '/delegated/' + endpoint;\n\t}\n\n\tprivate makeRequest(endpoint, method, body, apiVersion = \"v1\") {\n\t\tif (!this.token || !this.token.access_token) {\n\t\t\tthrow \"No access_token available for request authorization.\";\n\t\t}\n\n\t\tlet url = this.makeUrl(endpoint, apiVersion);\n\n\t\tlet headers = new Headers();\n\t\theaders.append('Authorization', 'Bearer ' + this.token.access_token);\n\t\theaders.append('Accept', 'application/json, text/javascript, */*; q=0.01');\n\t\theaders.append('Accept-Language', this.getCurrentLanguage());\n\t\tif (!!body) {\n\t\t\theaders.append('Content-Type', 'application/json');\n\t\t}\n\n\t\tlet init: any = {\n\t\t\tmethod: method,\n\t\t\theaders: headers\n\t\t};\n\t\tif (!!body) {\n\t\t\tinit.body = JSON.stringify(body);\n\t\t}\n\n\t\treturn fetch(url, init);\n\t}\n\n\tprivate getSupportedLanguage(language: string): string {\n\t\tlanguage = language.replace(\"_\", \"-\");\n\t\tif (this.supportedLanguages.length === 0) {\n\t\t\treturn language;\n\t\t} else {\n\t\t\tif (this.supportedLanguages.find((l) => l === language)) {\n\t\t\t\treturn language;\n\t\t\t} else if (language.indexOf(\"-\") > 0) {\n\t\t\t\tlanguage = language.substring(0, language.indexOf(\"-\"));\n\t\t\t\tif (this.supportedLanguages.find((l) => l === language)) {\n\t\t\t\t\treturn language;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static validateResponse(response) {\n\t\tif (!response.ok) {\n\t\t\tthrow response.statusText;\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tprivate static escapeParam(param) {\n\t\treturn String(param)\n\t\t\t.replace(\"\\\\\", \"\\\\\\\\\")\n\t\t\t.replace(\",\", \"\\\\,\");\n\t}\n\n\tprivate static reduceArrayAndEscape(param) {\n\t\tif (Array.isArray(param)) {\n\t\t\tlet escapedParams = param.map(function (elem) {\n\t\t\t\treturn MyDataHelps.escapeParam(elem);\n\t\t\t});\n\t\t\treturn escapedParams.join(\",\");\n\t\t}\n\n\t\treturn this.escapeParam(param);\n\t}\n\n\tprivate static convertDateToIsoString(date) {\n\t\tlet paramAsDate = new Date(date);\n\t\tif (isNaN(paramAsDate.getTime())) {\n\t\t\tthrow \"Cannot interpret parameter as Date\";\n\t\t}\n\n\t\treturn paramAsDate.toISOString();\n\t}\n\n\tprivate startEmbeddedSurveyInternal(surveyUrl) {\n\t\tlet mdhSurveyModalId = 'mydatahelps-survey-modal';\n\t\tlet mdh = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (document.getElementById(mdhSurveyModalId)) {\n\t\t\t\treject(\"Survey already in progress\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.addEventListener(\"message\", function listener(message) {\n\t\t\t\tif (message.origin !== new URL(mdh.baseUrl).origin) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet frame = (document.getElementById('mydatahelps-survey-frame') as HTMLFrameElement).contentWindow;\n\t\t\t\tif (message.source !== frame) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (message.data.name === 'SurveyWindowInitialized') {\n\t\t\t\t\tdocument.getElementById(mdhSurveyModalId).className += \" loaded\";\n\t\t\t\t} else if (message.data.name === 'SurveyFinished') {\n\t\t\t\t\tdocument.getElementById(mdhSurveyModalId).remove();\n\t\t\t\t\tdocument.body.className = document.body.className.replace(\"no-scroll\", \"\");\n\t\t\t\t\twindow.removeEventListener(\"message\", listener, true);\n\t\t\t\t\tresolve(message.data);\n\t\t\t\t}\n\t\t\t}, true);\n\n\t\t\tlet surveyModal = document.createElement('div');\n\t\t\tsurveyModal.className = 'mydatahelps-survey-modal';\n\t\t\tsurveyModal.id = mdhSurveyModalId;\n\t\t\tsurveyModal.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\t\t\tdocument.body.append(surveyModal);\n\t\t\tdocument.body.className += ' no-scroll';\n\t\t});\n\t}\n\n\tprivate startDelegatedSurvey(surveyUrl) {\n\t\tlet mdhSurveyModalId = 'mydatahelps-survey-modal';\n\t\tlet mdh = this;\n\n\t\tif (document.getElementById(mdhSurveyModalId)) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.addEventListener(\"message\", function listener(message) {\n\t\t\tif (message.origin !== new URL(mdh.baseUrl).origin) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet frame = (document.getElementById('mydatahelps-survey-frame') as HTMLFrameElement).contentWindow;\n\t\t\tif (message.source !== frame) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (message.data.name === 'GetDelegatedAccessToken') {\n\t\t\t\tmdh.getParticipantInfo().then((participant) => {\n\t\t\t\t\tframe.postMessage({ name: \"DelegatedAccessTokenResponse\", accessToken: mdh.token, baseUrl: mdh.baseUrl, participantID: participant.participantID }, '*');\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (message.data.name === 'SurveyWindowInitialized') {\n\t\t\t\tdocument.getElementById(mdhSurveyModalId).className += \" loaded\";\n\t\t\t}\n\t\t\telse if (message.data.name === 'SurveyFinished') {\n\t\t\t\tdocument.getElementById(mdhSurveyModalId).remove();\n\t\t\t\tdocument.body.className = document.body.className.replace(\"no-scroll\", \"\");\n\t\t\t\twindow.removeEventListener(\"message\", listener, true);\n\t\t\t\tmessage.data.type = 'surveyDidFinish';\n\t\t\t\tmdh.triggerEvent(message.data);\n\t\t\t}\n\t\t}, true);\n\n\t\tlet surveyModal = document.createElement('div');\n\t\tsurveyModal.className = 'mydatahelps-survey-modal';\n\t\tsurveyModal.id = mdhSurveyModalId;\n\t\tsurveyModal.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\t\tdocument.body.append(surveyModal);\n\t\tdocument.body.className += ' no-scroll';\n\t}\n\n\tprivate handleConnectExternalAccountResponse() {\n\t\tconst params = new URLSearchParams(window.location.search);\n\t\tif (window.opener && params.get('connectExternalAccount') && params.get('messageID') && params.get('success')) {\n\t\t\twindow.opener.postMessage({\n\t\t\t\tname: 'ConnectExternalAccountResponse',\n\t\t\t\tmessageID: parseInt(params.get('messageID')),\n\t\t\t\tsuccess: params.get('success') === 'true'\n\t\t\t}, window.location.origin);\n\t\t\twindow.close();\n\t\t\treturn true;\n\t\t}\n\t}\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();\n\nwindow.MyDataHelps = mdh;\n\n// For backwards compatibility\nwindow.RKStudioClient = {};\nwindow.RKStudioClient.setActionResult = function (data) {\n\twindow.MyDataHelps.setActionResult(data);\n};\n\nexport default mdh;\nexport * from './types';\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","MyDataHelps","startSurvey","surveyName","this","isStandaloneMode","startDelegatedSurvey","baseUrl","encodeURIComponent","window","webkit","messageHandlers","StartParticipantSurvey","messageID","nextMessageID","postMessage","completeStep","answer","JSON","stringify","ResearchKit","CompleteStep","querySurveyAnswers","queryParameters","Object","assign","hasOwnProperty","reduceArrayAndEscape","stepIdentifier","resultIdentifier","before","convertDateToIsoString","after","endpoint","URLSearchParams","toString","mdh","connect","makeRequest","response","validateResponse","json","deleteSurveyResult","resultID","querySurveyTasks","status","queryInboxItems","target","source","key","keys","undefined","assignDefined","type","getInboxItem","id","updateInboxItem","update","startEmbeddedSurvey","linkIdentifier","language","getCurrentLanguage","surveyUrl","startEmbeddedSurveyInternal","openExternalUrl","url","OpenExternalLink","openEmbeddedUrl","OpenEmbeddedLink","showTab","tabKey","ShowTab","openApplication","options","OpenExternalApplication","modal","dismiss","Dismiss","back","PopNavigation","showDashboard","dashboardKey","ShowParticipantDashboard","title","showWebVisualization","visualizationKey","parameters","ShowParticipantWebVisualization","showWebVisualizationPdf","ShowParticipantWebVisualizationPDF","landscape","htmlViewerZoom","showProject","projectCode","ShowProject","code","joinProject","JoinProject","on","eventName","callback","supportedEvents","includes","Error","registeredEventHandlers","push","off","eventHandlerIndex","indexOf","splice","triggerEvent","event","forEach","handler","setActionResult","data","getParticipantInfo","persistParticipantInfo","demographics","customFields","ok","message","catch","error","console","log","getProjectInfo","getDeviceDataPoint","deleteDeviceDataPoint","queryDeviceData","observedBefore","observedAfter","persistDeviceData","deviceDataPoints","queryDeviceDataV2","insertedBefore","insertedAfter","modifiedBefore","modifiedAfter","queryDeviceDataV2Aggregate","aggregateFunctions","queryDeviceDataV2DailySleep","getExternalAccountProviders","search","category","pageSize","pageNumber","searchParameters","connectExternalAccount","externalAccountProviderID","connectProviderAccountResponse","success","errorMessage","standaloneMode","standaloneModeFinalRedirectPath","location","href","providerAuthWindow","openNewWindow","split","windowFeatures","width","height","w","h","top","outerHeight","screenY","outerWidth","screenX","open","queryString","finalRedirectPath","text","redirectUrl","replace","ConnectExternalAccount","getExternalAccounts","refreshExternalAccount","accountID","deleteExternalAccount","DeleteProviderAccount","deleteProviderAccountResponse","queryNotifications","sentBefore","sentAfter","queryFitbitDailySummaries","startDate","endDate","queryFitbitSleepLogs","queryAppleHealthActivitySummaries","queryAppleHealthWorkouts","uploadFile","file","size","name","fetch","preSignedUrl","method","body","headers","queryFiles","getFileDownloadUrl","deleteFile","refreshDelegatedAccessToken","token","refreshTokenPromise","tokenResponse","tokenExpires","Date","now","expires_in","setTimeout","accessTokenRenewalBufferSeconds","GetDelegatedAccessToken","setParticipantAccessToken","enableStandaloneMode","setStatusBarStyle","style","SetStatusBarStyle","getDeviceInfo","GetDeviceInfo","deviceInfoResponse","setSupportedLanguages","languages","supportedLanguages","length","i","getStepConfiguration","GetStepConfiguration","stepConfigurationResponse","getSurveyContext","deviceInfo","platform","surveyMode","GetSurveyContext","surveyContextResponse","getCurrentSurveyAnswers","GetCurrentSurveyAnswers","currentSurveyAnswersResponse","setCurrentLanguage","supportedLanguage","getSupportedLanguage","warn","lang","searchParams","has","get","navigator","showGoogleFitSettings","ShowGoogleFitSettings","requestReview","cooldownDays","RequestReview","trackCustomEvent","getDataCollectionSettings","invokeCustomApi","customApi","jsonResponse","toUpperCase","parameterString","constructor","acceptableParentDomains","unsupportedActions","currentMessageID","handleConnectExternalAccountResponse","supportedActions","applicationHost","ancestorOrigins","document","getParentOrigin","acceptableOrigin","origin","sourceURL","URL","k","hostname","endsWith","parent","action","windowHasAnyActions","actions","addActions","addEventListener","validateWindowMessageOrigin","makeUrl","apiVersion","access_token","Headers","append","init","find","l","substring","statusText","escapeParam","param","String","Array","isArray","map","elem","join","date","paramAsDate","isNaN","getTime","toISOString","mdhSurveyModalId","getElementById","listener","frame","contentWindow","className","remove","removeEventListener","surveyModal","createElement","innerHTML","participant","accessToken","participantID","params","opener","parseInt","close","RKStudioClient"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
body.no-scroll{overflow:hidden!important;position:fixed!important;height:100%;width:100%;}#mydatahelps-survey-modal{position:fixed;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.5);}#mydatahelps-survey-modal .mydatahelps-survey{margin:0px auto;z-index:5002;position:relative;max-width:768px;height:calc(100% - 32px);box-sizing:border-box;margin-top:16px;margin-bottom:16px;border-radius:5px;overflow:hidden;background:#FFF;}#mydatahelps-survey-modal .mydatahelps-survey iframe{position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;border:none;opacity:0;}#mydatahelps-survey-modal.loaded .mydatahelps-survey iframe{opacity:1;}@media (max-width:768px){#mydatahelps-survey-modal .mydatahelps-survey{height:100%;margin-top:0;margin-bottom:0;border-radius:0;}}#mydatahelps-survey-modal .mydatahelps-survey .loader{font-size:5px;text-indent:-9999em;width:11em;height:11em;position:absolute;top:calc(50% - 5.5em);left:calc(50% - 5.5em);border-radius:50%;background:#ffffff;background:-moz-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-webkit-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-o-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-ms-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:linear-gradient(to right,#bbb 10%,rgba(255,255,255,0) 42%);-webkit-animation:load3 1.4s infinite linear;animation:load3 1.4s infinite linear;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);z-index:1;}#mydatahelps-survey-modal .mydatahelps-survey .loader:before{width:50%;height:50%;background:#bbb;border-radius:100% 0 0 0;position:absolute;top:0;left:0;content:'';}#mydatahelps-survey-modal .mydatahelps-survey .loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0;}#mydatahelps-survey-modal.loaded .mydatahelps-survey .loader{display:none;}@-webkit-keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg);}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
body.no-scroll{overflow:hidden!important;position:fixed!important;height:100%;width:100%;}#mydatahelps-survey-modal{position:fixed;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.5);}#mydatahelps-survey-modal .mydatahelps-survey{margin:0px auto;z-index:5002;position:relative;max-width:768px;height:calc(100% - 32px);box-sizing:border-box;margin-top:16px;margin-bottom:16px;border-radius:5px;overflow:hidden;background:#FFF;}#mydatahelps-survey-modal .mydatahelps-survey iframe{position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;border:none;opacity:0;}#mydatahelps-survey-modal.loaded .mydatahelps-survey iframe{opacity:1;}@media (max-width:768px){#mydatahelps-survey-modal .mydatahelps-survey{height:100%;margin-top:0;margin-bottom:0;border-radius:0;}}#mydatahelps-survey-modal .mydatahelps-survey .loader{font-size:5px;text-indent:-9999em;width:11em;height:11em;position:absolute;top:calc(50% - 5.5em);left:calc(50% - 5.5em);border-radius:50%;background:#ffffff;background:-moz-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-webkit-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-o-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:-ms-linear-gradient(left,#bbb 10%,rgba(255,255,255,0) 42%);background:linear-gradient(to right,#bbb 10%,rgba(255,255,255,0) 42%);-webkit-animation:load3 1.4s infinite linear;animation:load3 1.4s infinite linear;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);z-index:1;}#mydatahelps-survey-modal .mydatahelps-survey .loader:before{width:50%;height:50%;background:#bbb;border-radius:100% 0 0 0;position:absolute;top:0;left:0;content:'';}#mydatahelps-survey-modal .mydatahelps-survey .loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0;}#mydatahelps-survey-modal.loaded .mydatahelps-survey .loader{display:none;}@-webkit-keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes load3{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg);}}
|
package/package.json
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@careevolution/mydatahelps-js",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.18.0",
|
|
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",
|
|
7
7
|
"main": "MyDataHelps.js",
|
|
8
8
|
"module": "MyDataHelps.js",
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "
|
|
10
|
+
"build": "rollup -c"
|
|
11
11
|
},
|
|
12
12
|
"author": "CareEvolution",
|
|
13
13
|
"license": "Apache-2.0",
|
|
14
14
|
"homepage": "https://developer.mydatahelps.org/sdk/",
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"rollup": "^
|
|
16
|
+
"@rollup/plugin-commonjs": "^26.0.1",
|
|
17
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
18
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
19
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
20
|
+
"rollup": "^4.18.0",
|
|
17
21
|
"rollup-plugin-copy": "^3.4.0",
|
|
18
|
-
"rollup-plugin-
|
|
19
|
-
"
|
|
20
|
-
"typescript": "~4.8.4"
|
|
22
|
+
"rollup-plugin-import-css": "^3.5.0",
|
|
23
|
+
"typescript": "^5.4.5"
|
|
21
24
|
},
|
|
22
25
|
"keywords": [
|
|
23
26
|
"MDH",
|