{"version":3,"file":"jifiti-sdk.min.js","sources":["../src/lib/config.js","../src/lib/utils/httpRequest.js","../src/lib/browser/sdk.js","../src/lib/utils/windowBehavior.js","../src/lib/api/applicationApi.js","../src/lib/utils/util.js","../src/lib/check-eligibility.js","../src/entry/index-sdk.js"],"sourcesContent":["const jifitiConfig = (clientToken, url) => ({\r\n baseUrl: url,\r\n token: clientToken\r\n});\r\n\r\nexport { jifitiConfig };\r\n\r\n","export default function newHttpRequest(method, url, headers, body) {\r\n const xhr = new window.XMLHttpRequest();\r\n xhr.open(method, url);\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n for (const key in headers || {}) {\r\n if (Object.prototype.hasOwnProperty.call(headers, key)) {\r\n xhr.setRequestHeader(key, headers[key]);\r\n }\r\n }\r\n\r\n let cancelled;\r\n const p = new Promise((resolve, reject) => {\r\n xhr.addEventListener('load', () => {\r\n if (cancelled) {\r\n return;\r\n }\r\n if (xhr.status === 200 || xhr.status === 201) {\r\n let bodyObject;\r\n try {\r\n bodyObject = JSON.parse(xhr.responseText);\r\n } catch (error) {\r\n bodyObject = {};\r\n }\r\n resolve(bodyObject);\r\n } else {\r\n let err = 'error';\r\n try {\r\n err = xhr.responseText ? JSON.parse(xhr.responseText) : {};\r\n } catch (error) {}\r\n err?.message ? reject(err) : reject(new Error(err?.Detail));\r\n }\r\n });\r\n xhr.addEventListener('error', () => {\r\n if (cancelled) {\r\n return;\r\n }\r\n reject(new Error());\r\n });\r\n xhr.send(JSON.stringify(body));\r\n });\r\n const cancel = () => {\r\n cancelled = true;\r\n xhr.abort();\r\n };\r\n return { promise: p, cancel: cancel };\r\n}","import { jifitiConfig } from './../config';\r\nimport { initiateFlow } from './../api/applicationApi';\r\nimport windowBehaviorModule from './../utils/windowBehavior';\r\n\r\nexport default function browserSdk(clientToken) {\r\n const client = {};\r\n let globalSdkConfig;\r\n const copyInitiateFlowRequest = {};\r\n const initiateFlowResponse = {};\r\n let newWin;\r\n\r\n const url = 'https://web-apidev.jifiti.com'; // Please keep \"apidev.jifiti.com\" ( replace from release )\r\n globalSdkConfig = jifitiConfig(clientToken, url);\r\n\r\n validConfig(globalSdkConfig);\r\n\r\n function validConfig(sdkConfig) {\r\n if (!sdkConfig) {\r\n throw new Error('sdkConfig are required to initilize jifiti-Sdk.js');\r\n }\r\n }\r\n\r\n function validRequireParams(request) {\r\n if (!request) {\r\n throw new Error('request are required to call initiateFlow from client at browserSdk module');\r\n }\r\n if (!request['MerchantId']) {\r\n throw new Error('MerchantId is required');\r\n }\r\n if (!request['CompletionMethod']) {\r\n throw new Error('completionMethod is required');\r\n }\r\n if (!request['SourcePageType']) {\r\n throw new Error('SourcePageType is required');\r\n }\r\n\r\n //TODO\r\n // if WindowBehavior !== sameTab -> need callbackURL\r\n // if WindowBehavior === iframe -> need selectorId\r\n }\r\n\r\n const windowBehavior = windowBehaviorModule();\r\n\r\n client.on = (eventName, callback) => {\r\n windowBehavior.addClientEvent(eventName, callback);\r\n };\r\n\r\n client.initiateFlow = initiateFlowRequest => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n validRequireParams(initiateFlowRequest);\r\n } catch (error) {\r\n reject(error);\r\n return;\r\n }\r\n Object.assign(copyInitiateFlowRequest, initiateFlowRequest); // save internal initiate Flow Request\r\n\r\n if (initiateFlowRequest.WindowBehavior === 'NewTab') {\r\n const params =\r\n 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=600px, height=600px';\r\n newWin = open('', '', params);\r\n newWin.document.write(\"