UNPKG

@nuralogix.ai/dfx-api-client

Version:

DeepAffex API JavaScript Client Library

432 lines (423 loc) 144 kB
/* DeepAffex API JavaScript Client Library Copyright Nuralogix, 2025 https://docs.deepaffex.ai/jsapiclient/ Version: 1.0.73 Published on 7/2/2025, 4:57:54 PM */ var AUTHS = /* @__PURE__ */ ((AUTHS2) => { AUTHS2["SEND_RESET"] = "2300"; return AUTHS2; })(AUTHS || {}); var DEVICES = /* @__PURE__ */ ((DEVICES2) => { DEVICES2["TYPES"] = "0900"; return DEVICES2; })(DEVICES || {}); var GENERAL = /* @__PURE__ */ ((GENERAL2) => { GENERAL2["STATUS"] = "0100"; GENERAL2["MIME_TYPES"] = "0101"; return GENERAL2; })(GENERAL || {}); var LICENSES = /* @__PURE__ */ ((LICENSES2) => { LICENSES2["CREATE_LICENSE_ALLOWED_STUDY"] = "1400"; return LICENSES2; })(LICENSES || {}); var MEASUREMENTS = /* @__PURE__ */ ((MEASUREMENTS2) => { MEASUREMENTS2["DATA"] = "0506"; MEASUREMENTS2["SUBSCRIBE_RESULTS"] = "0510"; return MEASUREMENTS2; })(MEASUREMENTS || {}); var ORGANIZATIONS = /* @__PURE__ */ ((ORGANIZATIONS2) => { ORGANIZATIONS2["RETRIEVE"] = "0700"; ORGANIZATIONS2["LOGIN_WITH_TOKEN"] = "0718"; return ORGANIZATIONS2; })(ORGANIZATIONS || {}); var ORGANIZATIONS_PRIVATE = /* @__PURE__ */ ((ORGANIZATIONS_PRIVATE2) => { ORGANIZATIONS_PRIVATE2["LIST"] = "1200"; return ORGANIZATIONS_PRIVATE2; })(ORGANIZATIONS_PRIVATE || {}); var PROFILES = /* @__PURE__ */ ((PROFILES2) => { PROFILES2["CREATE"] = "0400"; return PROFILES2; })(PROFILES || {}); var REPORTS = /* @__PURE__ */ ((REPORTS2) => { REPORTS2["REPORT_READY"] = "1300"; return REPORTS2; })(REPORTS || {}); var STUDIES = /* @__PURE__ */ ((STUDIES2) => { STUDIES2["TYPES"] = "0800"; return STUDIES2; })(STUDIES || {}); var TEMPLATES = /* @__PURE__ */ ((TEMPLATES2) => { TEMPLATES2["LIST_TEMPLATES"] = "1100"; return TEMPLATES2; })(TEMPLATES || {}); var USERS = /* @__PURE__ */ ((USERS2) => { USERS2["CREATE"] = "0200"; return USERS2; })(USERS || {}); const ActionId = { AUTHS, DEVICES, GENERAL, LICENSES, MEASUREMENTS, ORGANIZATIONS, ORGANIZATIONS_PRIVATE, PROFILES, REPORTS, STUDIES, TEMPLATES, USERS }; var DeviceTypeID = /* @__PURE__ */ ((DeviceTypeID2) => { DeviceTypeID2["IPHONE"] = "IPHONE"; DeviceTypeID2["IPAD"] = "IPAD"; DeviceTypeID2["DARWIN"] = "DARWIN"; DeviceTypeID2["ANDROID_PHONE"] = "ANDROID_PHONE"; DeviceTypeID2["WINDOWS"] = "WINDOWS"; DeviceTypeID2["WIN32"] = "WIN32"; DeviceTypeID2["WINDOWS_TABLET"] = "WINDOWS_TABLET"; DeviceTypeID2["LINUX"] = "LINUX"; DeviceTypeID2["DEBIAN"] = "DEBIAN"; return DeviceTypeID2; })(DeviceTypeID || {}); /** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: Apache-2.0 */ const proxyMarker = Symbol("Comlink.proxy"); const createEndpoint = Symbol("Comlink.endpoint"); const releaseProxy = Symbol("Comlink.releaseProxy"); const finalizer = Symbol("Comlink.finalizer"); const throwMarker = Symbol("Comlink.thrown"); const isObject = (val) => (typeof val === "object" && val !== null) || typeof val === "function"; /** * Internal transfer handle to handle objects marked to proxy. */ const proxyTransferHandler = { canHandle: (val) => isObject(val) && val[proxyMarker], serialize(obj) { const { port1, port2 } = new MessageChannel(); expose(obj, port1); return [port2, [port2]]; }, deserialize(port) { port.start(); return wrap(port); }, }; /** * Internal transfer handler to handle thrown exceptions. */ const throwTransferHandler = { canHandle: (value) => isObject(value) && throwMarker in value, serialize({ value }) { let serialized; if (value instanceof Error) { serialized = { isError: true, value: { message: value.message, name: value.name, stack: value.stack, }, }; } else { serialized = { isError: false, value }; } return [serialized, []]; }, deserialize(serialized) { if (serialized.isError) { throw Object.assign(new Error(serialized.value.message), serialized.value); } throw serialized.value; }, }; /** * Allows customizing the serialization of certain values. */ const transferHandlers = new Map([ ["proxy", proxyTransferHandler], ["throw", throwTransferHandler], ]); function isAllowedOrigin(allowedOrigins, origin) { for (const allowedOrigin of allowedOrigins) { if (origin === allowedOrigin || allowedOrigin === "*") { return true; } if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) { return true; } } return false; } function expose(obj, ep = globalThis, allowedOrigins = ["*"]) { ep.addEventListener("message", function callback(ev) { if (!ev || !ev.data) { return; } if (!isAllowedOrigin(allowedOrigins, ev.origin)) { console.warn(`Invalid origin '${ev.origin}' for comlink proxy`); return; } const { id, type, path } = Object.assign({ path: [] }, ev.data); const argumentList = (ev.data.argumentList || []).map(fromWireValue); let returnValue; try { const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj); const rawValue = path.reduce((obj, prop) => obj[prop], obj); switch (type) { case "GET" /* MessageType.GET */: { returnValue = rawValue; } break; case "SET" /* MessageType.SET */: { parent[path.slice(-1)[0]] = fromWireValue(ev.data.value); returnValue = true; } break; case "APPLY" /* MessageType.APPLY */: { returnValue = rawValue.apply(parent, argumentList); } break; case "CONSTRUCT" /* MessageType.CONSTRUCT */: { const value = new rawValue(...argumentList); returnValue = proxy(value); } break; case "ENDPOINT" /* MessageType.ENDPOINT */: { const { port1, port2 } = new MessageChannel(); expose(obj, port2); returnValue = transfer(port1, [port1]); } break; case "RELEASE" /* MessageType.RELEASE */: { returnValue = undefined; } break; default: return; } } catch (value) { returnValue = { value, [throwMarker]: 0 }; } Promise.resolve(returnValue) .catch((value) => { return { value, [throwMarker]: 0 }; }) .then((returnValue) => { const [wireValue, transferables] = toWireValue(returnValue); ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables); if (type === "RELEASE" /* MessageType.RELEASE */) { // detach and deactive after sending release response above. ep.removeEventListener("message", callback); closeEndPoint(ep); if (finalizer in obj && typeof obj[finalizer] === "function") { obj[finalizer](); } } }) .catch((error) => { // Send Serialization Error To Caller const [wireValue, transferables] = toWireValue({ value: new TypeError("Unserializable return value"), [throwMarker]: 0, }); ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables); }); }); if (ep.start) { ep.start(); } } function isMessagePort(endpoint) { return endpoint.constructor.name === "MessagePort"; } function closeEndPoint(endpoint) { if (isMessagePort(endpoint)) endpoint.close(); } function wrap(ep, target) { return createProxy(ep, [], target); } function throwIfProxyReleased(isReleased) { if (isReleased) { throw new Error("Proxy has been released and is not useable"); } } function releaseEndpoint(ep) { return requestResponseMessage(ep, { type: "RELEASE" /* MessageType.RELEASE */, }).then(() => { closeEndPoint(ep); }); } const proxyCounter = new WeakMap(); const proxyFinalizers = "FinalizationRegistry" in globalThis && new FinalizationRegistry((ep) => { const newCount = (proxyCounter.get(ep) || 0) - 1; proxyCounter.set(ep, newCount); if (newCount === 0) { releaseEndpoint(ep); } }); function registerProxy(proxy, ep) { const newCount = (proxyCounter.get(ep) || 0) + 1; proxyCounter.set(ep, newCount); if (proxyFinalizers) { proxyFinalizers.register(proxy, ep, proxy); } } function unregisterProxy(proxy) { if (proxyFinalizers) { proxyFinalizers.unregister(proxy); } } function createProxy(ep, path = [], target = function () { }) { let isProxyReleased = false; const proxy = new Proxy(target, { get(_target, prop) { throwIfProxyReleased(isProxyReleased); if (prop === releaseProxy) { return () => { unregisterProxy(proxy); releaseEndpoint(ep); isProxyReleased = true; }; } if (prop === "then") { if (path.length === 0) { return { then: () => proxy }; } const r = requestResponseMessage(ep, { type: "GET" /* MessageType.GET */, path: path.map((p) => p.toString()), }).then(fromWireValue); return r.then.bind(r); } return createProxy(ep, [...path, prop]); }, set(_target, prop, rawValue) { throwIfProxyReleased(isProxyReleased); // FIXME: ES6 Proxy Handler `set` methods are supposed to return a // boolean. To show good will, we return true asynchronously ¯\_(ツ)_/¯ const [value, transferables] = toWireValue(rawValue); return requestResponseMessage(ep, { type: "SET" /* MessageType.SET */, path: [...path, prop].map((p) => p.toString()), value, }, transferables).then(fromWireValue); }, apply(_target, _thisArg, rawArgumentList) { throwIfProxyReleased(isProxyReleased); const last = path[path.length - 1]; if (last === createEndpoint) { return requestResponseMessage(ep, { type: "ENDPOINT" /* MessageType.ENDPOINT */, }).then(fromWireValue); } // We just pretend that `bind()` didn’t happen. if (last === "bind") { return createProxy(ep, path.slice(0, -1)); } const [argumentList, transferables] = processArguments(rawArgumentList); return requestResponseMessage(ep, { type: "APPLY" /* MessageType.APPLY */, path: path.map((p) => p.toString()), argumentList, }, transferables).then(fromWireValue); }, construct(_target, rawArgumentList) { throwIfProxyReleased(isProxyReleased); const [argumentList, transferables] = processArguments(rawArgumentList); return requestResponseMessage(ep, { type: "CONSTRUCT" /* MessageType.CONSTRUCT */, path: path.map((p) => p.toString()), argumentList, }, transferables).then(fromWireValue); }, }); registerProxy(proxy, ep); return proxy; } function myFlat(arr) { return Array.prototype.concat.apply([], arr); } function processArguments(argumentList) { const processed = argumentList.map(toWireValue); return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))]; } const transferCache = new WeakMap(); function transfer(obj, transfers) { transferCache.set(obj, transfers); return obj; } function proxy(obj) { return Object.assign(obj, { [proxyMarker]: true }); } function toWireValue(value) { for (const [name, handler] of transferHandlers) { if (handler.canHandle(value)) { const [serializedValue, transferables] = handler.serialize(value); return [ { type: "HANDLER" /* WireValueType.HANDLER */, name, value: serializedValue, }, transferables, ]; } } return [ { type: "RAW" /* WireValueType.RAW */, value, }, transferCache.get(value) || [], ]; } function fromWireValue(value) { switch (value.type) { case "HANDLER" /* WireValueType.HANDLER */: return transferHandlers.get(value.name).deserialize(value.value); case "RAW" /* WireValueType.RAW */: return value.value; } } function requestResponseMessage(ep, msg, transfers) { return new Promise((resolve) => { const id = generateUUID(); ep.addEventListener("message", function l(ev) { if (!ev.data || !ev.data.id || ev.data.id !== id) { return; } ep.removeEventListener("message", l); resolve(ev.data); }); if (ep.start) { ep.start(); } ep.postMessage(Object.assign({ id }, msg), transfers); }); } function generateUUID() { return new Array(4) .fill(0) .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)) .join("-"); } const enums = { ActionId, DeviceTypeID }; const createWorker=(workerName)=>{ const blob=new Blob(["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n return createProxy(ep, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}" + "var AUTHS = /* @__PURE__ */ ((AUTHS2) => {\n AUTHS2[\"SEND_RESET\"] = \"2300\";\n return AUTHS2;\n})(AUTHS || {});\nvar DEVICES = /* @__PURE__ */ ((DEVICES2) => {\n DEVICES2[\"TYPES\"] = \"0900\";\n return DEVICES2;\n})(DEVICES || {});\nvar GENERAL = /* @__PURE__ */ ((GENERAL2) => {\n GENERAL2[\"STATUS\"] = \"0100\";\n GENERAL2[\"MIME_TYPES\"] = \"0101\";\n return GENERAL2;\n})(GENERAL || {});\nvar LICENSES = /* @__PURE__ */ ((LICENSES2) => {\n LICENSES2[\"CREATE_LICENSE_ALLOWED_STUDY\"] = \"1400\";\n return LICENSES2;\n})(LICENSES || {});\nvar MEASUREMENTS = /* @__PURE__ */ ((MEASUREMENTS2) => {\n MEASUREMENTS2[\"DATA\"] = \"0506\";\n MEASUREMENTS2[\"SUBSCRIBE_RESULTS\"] = \"0510\";\n return MEASUREMENTS2;\n})(MEASUREMENTS || {});\nvar ORGANIZATIONS = /* @__PURE__ */ ((ORGANIZATIONS2) => {\n ORGANIZATIONS2[\"RETRIEVE\"] = \"0700\";\n ORGANIZATIONS2[\"LOGIN_WITH_TOKEN\"] = \"0718\";\n return ORGANIZATIONS2;\n})(ORGANIZATIONS || {});\nvar ORGANIZATIONS_PRIVATE = /* @__PURE__ */ ((ORGANIZATIONS_PRIVATE2) => {\n ORGANIZATIONS_PRIVATE2[\"LIST\"] = \"1200\";\n return ORGANIZATIONS_PRIVATE2;\n})(ORGANIZATIONS_PRIVATE || {});\nvar PROFILES = /* @__PURE__ */ ((PROFILES2) => {\n PROFILES2[\"CREATE\"] = \"0400\";\n return PROFILES2;\n})(PROFILES || {});\nvar REPORTS = /* @__PURE__ */ ((REPORTS2) => {\n REPORTS2[\"REPORT_READY\"] = \"1300\";\n return REPORTS2;\n})(REPORTS || {});\nvar STUDIES = /* @__PURE__ */ ((STUDIES2) => {\n STUDIES2[\"TYPES\"] = \"0800\";\n return STUDIES2;\n})(STUDIES || {});\nvar TEMPLATES = /* @__PURE__ */ ((TEMPLATES2) => {\n TEMPLATES2[\"LIST_TEMPLATES\"] = \"1100\";\n return TEMPLATES2;\n})(TEMPLATES || {});\nvar USERS = /* @__PURE__ */ ((USERS2) => {\n USERS2[\"CREATE\"] = \"0200\";\n return USERS2;\n})(USERS || {});\nconst ActionId = {\n AUTHS,\n DEVICES,\n GENERAL,\n LICENSES,\n MEASUREMENTS,\n ORGANIZATIONS,\n ORGANIZATIONS_PRIVATE,\n PROFILES,\n REPORTS,\n STUDIES,\n TEMPLATES,\n USERS\n};\nvar DeviceTypeID = /* @__PURE__ */ ((DeviceTypeID2) => {\n DeviceTypeID2[\"IPHONE\"] = \"IPHONE\";\n DeviceTypeID2[\"IPAD\"] = \"IPAD\";\n DeviceTypeID2[\"DARWIN\"] = \"DARWIN\";\n DeviceTypeID2[\"ANDROID_PHONE\"] = \"ANDROID_PHONE\";\n DeviceTypeID2[\"WINDOWS\"] = \"WINDOWS\";\n DeviceTypeID2[\"WIN32\"] = \"WIN32\";\n DeviceTypeID2[\"WINDOWS_TABLET\"] = \"WINDOWS_TABLET\";\n DeviceTypeID2[\"LINUX\"] = \"LINUX\";\n DeviceTypeID2[\"DEBIAN\"] = \"DEBIAN\";\n return DeviceTypeID2;\n})(DeviceTypeID || {});\n\n\n;\n\nvar version = \"1.0.73\";\n\nvar HTTPMethod = /* @__PURE__ */ ((HTTPMethod2) => {\n HTTPMethod2[\"DELETE\"] = \"DELETE\";\n HTTPMethod2[\"GET\"] = \"GET\";\n HTTPMethod2[\"PATCH\"] = \"PATCH\";\n HTTPMethod2[\"POST\"] = \"POST\";\n HTTPMethod2[\"PUT\"] = \"PUT\";\n HTTPMethod2[\"CONNECT\"] = \"CONNECT\";\n return HTTPMethod2;\n})(HTTPMethod || {});\nvar OnBeforeRESTCallErrors = /* @__PURE__ */ ((OnBeforeRESTCallErrors2) => {\n OnBeforeRESTCallErrors2[\"ON_BEFORE_REST_CALL_ERROR\"] = \"ON_BEFORE_REST_CALL_ERROR\";\n return OnBeforeRESTCallErrors2;\n})(OnBeforeRESTCallErrors || {});\nconst isModuleWorker = typeof DedicatedWorkerGlobalScope !== \"undefined\";\nconst _fetch = async ({ baseUrl, urlFragment, method, headers, data }, onAfterRESTCall) => {\n const url = `${baseUrl}/${urlFragment}`;\n let responseBody = {\n Code: \"\",\n Message: \"\"\n };\n try {\n const response = await fetch(url, {\n method,\n cache: \"no-store\",\n credentials: \"include\",\n headers,\n ...data != null && {\n body: JSON.stringify(data)\n }\n });\n const contentType = response.headers.get(\"content-type\");\n const status = response.status.toString();\n responseBody = {\n Code: \"UNSUPPORTED_RESPONSE_CONTENT_TYPE\" /* UNSUPPORTED_RESPONSE_CONTENT_TYPE */,\n Message: \"UNSUPPORTED_RESPONSE_CONTENT_TYPE\" /* UNSUPPORTED_RESPONSE_CONTENT_TYPE */\n };\n if (status === \"503\")\n responseBody = {\n Code: \"SERVICE_UNAVAILABLE\",\n Message: \"Service unavailable\"\n };\n if (status === \"429\")\n responseBody = {\n Code: \"TOO_MANY_REQUESTS\",\n Message: \"Too many requests\"\n };\n if (contentType != null) {\n if (contentType.startsWith(\"application/json;\"))\n responseBody = await response.json();\n if (contentType.startsWith(\"text/plain;\"))\n responseBody = { data: await response.text() };\n }\n let responseHeaders = response.headers;\n if (isModuleWorker) {\n const headersObj = {};\n response.headers.forEach((value, key) => {\n headersObj[key] = value;\n });\n responseHeaders = headersObj;\n }\n setTimeout(() => {\n onAfterRESTCall(\n status,\n status === \"200\" ? void 0 : responseBody\n ).catch(\n (e) => console.error(\"Error running onAfterRESTCall callback\", e)\n );\n }, 0);\n return { status, headers: responseHeaders, body: responseBody };\n } catch (e) {\n if (e instanceof SyntaxError) {\n responseBody = {\n Code: \"SYNTAX_ERROR\" /* SYNTAX_ERROR */,\n Message: \"SYNTAX_ERROR\" /* SYNTAX_ERROR */\n };\n } else {\n responseBody = {\n Code: \"UNEXPECTED_ERROR\" /* UNEXPECTED_ERROR */,\n Message: \"UNEXPECTED_ERROR\" /* UNEXPECTED_ERROR */\n };\n }\n return {\n status: \"UNKNOWN\" /* UNKNOWN */,\n headers: isModuleWorker ? {} : new Headers(),\n body: responseBody\n };\n }\n};\nconst getHeader = () => new Headers({\n \"Content-Type\": \"application/json\"\n});\n\nconst asciiletters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nfunction generateReqId(actionId) {\n let reqId = actionId;\n for (let i = actionId.length; i < 10; i++) {\n reqId += asciiletters.charAt(\n Math.floor(Math.random() * asciiletters.length)\n );\n }\n return reqId;\n}\nfunction bufferToString(arr) {\n let str = \"\";\n for (let i = 0; i < arr.length; i++) {\n str += String.fromCodePoint(arr[i]);\n }\n return str;\n}\nconst getBaseUrl = (url, transport) => {\n return JSON.parse(url)[transport].slice(0, -1);\n};\nconst getHeaders = () => isModuleWorker ? {} : new Headers();\n\nvar __defProp$2 = Object.defineProperty;\nvar __typeError$1 = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$1(\"Cannot \" + msg);\nvar __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _token, __socket, __subProtocol;\nclass WS {\n constructor(parent) {\n __publicField$2(this, \"parent\");\n __privateAdd$1(this, _token, \"\");\n __privateAdd$1(this, __socket);\n __privateAdd$1(this, __subProtocol, \"json\");\n __publicField$2(this, \"onmessage\");\n __publicField$2(this, \"onclose\");\n __publicField$2(this, \"onerror\");\n this.parent = parent;\n this.onmessage = () => {\n };\n this.onclose = () => {\n };\n this.onerror = () => {\n };\n this.onSocketOpen = this.onSocketOpen.bind(this);\n this.onSocketMessage = this.onSocketMessage.bind(this);\n }\n /**\n * Opens a socket connection\n */\n connect(token) {\n __privateSet$1(this, _token, token);\n __privateSet$1(this, __socket, new WebSocket(\n getBaseUrl(this.parent.getUrl(), \"wss\"),\n __privateGet$1(this, __subProtocol)\n ));\n __privateGet$1(this, __socket).binaryType = \"arraybuffer\";\n __privateGet$1(this, __socket).onopen = this.onSocketOpen;\n __privateGet$1(this, __socket).onmessage = this.onSocketMessage;\n __privateGet$1(this, __socket).onclose = this.onclose;\n __privateGet$1(this, __socket).onerror = this.onerror;\n }\n /**\n * Closes the socket connection\n */\n disconnect() {\n __privateGet$1(this, __socket).close();\n }\n onSocketOpen(e) {\n this.sendMessage(ActionId.ORGANIZATIONS.LOGIN_WITH_TOKEN, { Token: __privateGet$1(this, _token) });\n }\n onSocketMessage(e) {\n if (e.data instanceof ArrayBuffer) {\n const result = new Uint8Array(e.data);\n const requestId = bufferToString(result.slice(0, 10));\n const status = bufferToString(result.slice(10, 13));\n const message = JSON.parse(bufferToString(result.slice(13)));\n const actionId = requestId.slice(0, 4);\n this.onmessage(requestId, status, message, actionId);\n }\n }\n /**\n * Sends a message\n *\n * @param actionId End point action ID\n * @param data message body\n * @returns message\n */\n sendMessage(actionId, data) {\n const actionPadded = `${actionId}`.padStart(4, \"0\");\n const requestId = generateReqId(actionPadded);\n if (actionId === ActionId.MEASUREMENTS.SUBSCRIBE_RESULTS) data.RequestID = requestId;\n const stringifiedDate = JSON.stringify(data);\n const message = new Uint8Array(4 + 10 + stringifiedDate.length);\n message.set(\n Uint8Array.from(actionPadded, (x) => x.codePointAt(0)),\n 0\n );\n message.set(\n Uint8Array.from(requestId, (x) => x.codePointAt(0)),\n 4\n );\n message.set(\n Uint8Array.from(stringifiedDate, (x) => x.codePointAt(0)),\n 4 + 10\n );\n __privateGet$1(this, __socket).send(message);\n }\n}\n_token = new WeakMap();\n__socket = new WeakMap();\n__subProtocol = new WeakMap();\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + \"\" , value);\nclass Main {\n /** @internal */\n constructor(parent) {\n __publicField$1(this, \"parent\");\n this.parent = parent;\n }\n async onBeforeRESTCall() {\n try {\n await this.parent.onBeforeRESTCall();\n return {\n Code: \"SUCCESS\",\n Message: \"SUCCESS\"\n };\n } catch (e) {\n return {\n Code: OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR,\n Message: OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR\n };\n }\n }\n getDefaults(method) {\n return {\n baseUrl: getBaseUrl(this.parent.getUrl(), \"http\"),\n method: HTTPMethod[method],\n headers: getHeader()\n };\n }\n getHeaderWithDeviceToken() {\n const headers = getHeader();\n headers.set(\n \"Authorization\",\n `Bearer ${this.parent.getSession().deviceToken}`\n );\n return headers;\n }\n getHeaderWithUserToken() {\n const headers = getHeader();\n headers.set(\n \"Authorization\",\n `Bearer ${this.parent.getSession().userToken}`\n );\n return headers;\n }\n getHeaderWithSessionEnabled() {\n const headers = getHeader();\n headers.set(\"x-nura-session\", \"true\");\n return headers;\n }\n}\n\nclass General extends Main {\n /**\n * An endpoint that propagates the current API health status and\n * other information. This can be used during an apps initial boot\n * process to determine the accessibility of the API and propagate\n * a general status message to users.\n *\n * Endpoint Action ID = 100\n */\n async status() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n urlFragment: \"status\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Returns a list of system-wide accepted Mime types and their IDs.\n *\n * Endpoint Action ID = 101\n */\n async listAcceptedMimeTypes() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n urlFragment: \"mimes\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Retrieves a list of available User Roles.\n *\n * Endpoint Action ID = 102\n */\n async listAvailableUserRoles() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: this.getHeaderWithDeviceToken(),\n urlFragment: \"roles\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Retrieves a list of available status codes that can be used throughout\n * the application to update the StatusID field of various resources.\n *\n * Endpoint Action ID = 104\n */\n async listAvailableStatuses() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"statuses\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Checks validity of your Token and returns its encoded info.\n *\n * Endpoint Action ID = 107\n */\n async verifyToken(token) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: new Headers({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n }),\n urlFragment: \"auth\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Return the list of regions available for clusters.\n *\n * Endpoint Action ID = 108\n */\n async regions() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n urlFragment: \"regions\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Retrieve consent.\n *\n * Endpoint Action ID = 109\n */\n async retrieveConsent() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"consents\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Create consent.\n *\n * Endpoint Action ID = 110\n */\n async createConsent(data) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.POST),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"consents\",\n data\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Update consent.\n *\n * Endpoint Action ID = 111\n */\n async updateConsent(data) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.PATCH),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"consents\",\n data\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Return the list of regions available for clusters.\n *\n * Endpoint Action ID = 113\n */\n async getRolesInteractionTree() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"roles-interaction-tree\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Retrieve a user Prescription\n *\n * Endpoint Action ID = 114\n */\n async getPrescription(prescriptionId) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n urlFragment: `prescription/${prescriptionId}`\n },\n this.parent.onAfterRESTCall\n );\n }\n}\n\nclass Users extends Main {\n /**\n * Creates a new user in the organization, checking for existing user\n * details against the user list. Email + Password OR PhoneNumber fields\n * are required. If both are provided, Email + Password will be used to\n * create User account. The rest of the fields are optional.\n * Endpoint Action ID = 200\n */\n async create(data, tokenType) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.POST),\n headers: tokenType === \"device\" ? this.getHeaderWithDeviceToken() : this.getHeaderWithUserToken(),\n urlFragment: \"users\",\n data\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Logs a user into a new session using Email, Password and optionally an MFAToken and responds with a User Token.\n * The Token must be passed to every subsequent API call to the server.\n *\n * Note: you need to obtain a Device Token first to be able to login through this endpoint.\n *\n * Note: MFAToken token is mandatory when Multi-factor authentication is enabled for this user.\n *\n * Endpoint Action ID = 201\n */\n async login(data) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n const { status, body, headers } = await _fetch(\n {\n ...this.getDefaults(HTTPMethod.POST),\n headers: this.getHeaderWithDeviceToken(),\n urlFragment: \"users/auth\",\n data\n },\n this.parent.onAfterRESTCall\n );\n if (status === \"200\") {\n this.parent.setSession({\n userToken: body.Token,\n userRefreshToken: body.RefreshToken\n });\n }\n return { status, body, headers };\n }\n /**\n * Retrieves User account information based on the provided User Token.\n *\n * Endpoint Action ID = 202\n */\n async retrieve() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.GET),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"users\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Removes the entire user account, profiles, and all measurement\n * data associated with it. The account to be deleted is derived\n * from the User Token.\n *\n * Endpoint Action ID = 206\n */\n async remove() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.DELETE),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"users\"\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Updates a user's account information with new details. This\n * endpoint will only update fields supplied to it, hence sending\n * only First Name or Last Name will exclusively update those values.\n *\n * Endpoint Action ID = 208\n */\n async update(data) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.PATCH),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"users\",\n data\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Password reset, sends email to user\n *\n * Endpoint Action ID = 209\n */\n async sendReset(email, identifier) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.PATCH),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"users/sendreset\",\n data: {\n Email: email,\n Identifier: identifier\n }\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Resets User's password\n *\n * Endpoint Action ID = 210\n */\n async resetPassword(data) {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code === OnBeforeRESTCallErrors.ON_BEFORE_REST_CALL_ERROR) {\n return { status: Code, body: { Code, Message }, headers: getHeaders() };\n }\n return await _fetch(\n {\n ...this.getDefaults(HTTPMethod.PATCH),\n headers: this.getHeaderWithUserToken(),\n urlFragment: \"users/reset\",\n data\n },\n this.parent.onAfterRESTCall\n );\n }\n /**\n * Retrieves User's Role.\n *\n * Endpoint Action ID = 211\n */\n async retrieveUserRole() {\n const { Code, Message } = await this.onBeforeRESTCall();\n if (Code