{"version":3,"file":"js-captcha-integration-core.min.js","mappings":"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","sources":["webpack://javascript-captcha/./packaging/src_temp/es5_build_src/es6/helpers.js","webpack://javascript-captcha/./packaging/src_temp/es5_build_src/es6/resource-strings.js","webpack://javascript-captcha/./packaging/src_temp/es5_build_src/es6/exceptions/bd-clientside-not-existing-exception.js","webpack://javascript-captcha/./packaging/src_temp/es5_build_src/es6/js-captcha-integration-core.js"],"sourcesContent":["/*\r\nCopyright Captcha, Inc. 2004-2023. All rights reserved.\r\n\r\nBotDetect, BotDetect CAPTCHA, Lanap, Lanap CAPTCHA, Lanap BotDetect, \r\nLanap BotDetect CAPTCHA, Lanapsoft, Lanapsoft CAPTCHA, \r\nLanapsoft BotDetect, Lanapsoft BotDetect CAPTCHA, and Lanap Software \r\nare trademarks of Captcha, Inc. All other product, brand, and company \r\nnames are mentioned for identification purposes only and are trademarks \r\nor registered trademarks of their respective owners.\r\n\r\nCaptcha, Inc. - formerly: Lanapsoft, Inc. / Lanap, Inc.\r\n*/\r\n\r\nfunction getBaseUrlFromUrl(url) {\r\n let baseUrl = null;\r\n if (url.indexOf('http') === 0) {\r\n const urlParts = url.split('/');\r\n baseUrl = urlParts[0] + '//' + urlParts[2];\r\n }\r\n return baseUrl;\r\n}\r\n\r\nfunction getClientBaseUrl() {\r\n const url = window.location.href;\r\n const baseUrl = getBaseUrlFromUrl(url);\r\n return baseUrl;\r\n}\r\n\r\nfunction detectIE9() {\r\n let detected = false;\r\n if (navigator && navigator.userAgent) {\r\n const userAgent = navigator.userAgent;\r\n if (userAgent.indexOf('MSIE') !== -1) {\r\n const parts = userAgent.split('MSIE');\r\n const version = parseInt(parts[1]);\r\n if (version === 9) {\r\n detected = true;\r\n }\r\n }\r\n }\r\n return detected;\r\n}\r\n\r\nfunction detectCrossDomainRequest(backendUrl) {\r\n let detected = false;\r\n const clientBaseUrl = getClientBaseUrl();\r\n const backendBaseUrl = getBaseUrlFromUrl(backendUrl);\r\n if ((clientBaseUrl !== null) && (backendBaseUrl !== null) \r\n && (clientBaseUrl !== backendBaseUrl)) {\r\n detected = true;\r\n }\r\n return detected;\r\n}\r\n\r\nfunction httpGetWithXMLHttpRequest(url, successCallback, errorCallback) {\r\n const xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function() {\r\n if ((xhr.readyState === 4) && (xhr.status === 200)) {\r\n successCallback(xhr.responseText);\r\n }\r\n\r\n if ((xhr.readyState === 4) && (xhr.status !== 200)) {\r\n if (typeof errorCallback === 'function') {\r\n errorCallback(xhr);\r\n }\r\n }\r\n };\r\n if (typeof errorCallback === 'function') {\r\n xhr.addEventListener('error', function() {\r\n errorCallback(xhr);\r\n });\r\n }\r\n xhr.open('GET', url, true);\r\n xhr.send();\r\n}\r\n\r\nfunction httpGetWithXDomainRequest(url, successCallback, errorCallback) {\r\n console.log('IE9-crossdomain');\r\n const xdr = new XDomainRequest();\r\n xdr.open('GET', url);\r\n xdr.onprogress = function() {};\r\n xdr.onload = function() {\r\n successCallback(xdr.responseText);\r\n };\r\n if (typeof errorCallback === 'function') {\r\n xdr.onerror = function() {\r\n errorCallback(xdr);\r\n };\r\n }\r\n setTimeout(function() {\r\n xdr.send();\r\n }, 0);\r\n}\r\n\r\n// get captcha endpoint handler from configured captchaEndpointUrl value,\r\n// the expected result will be:\r\n// simple-captcha-endpoint.ashx -- for asp.net backend\r\n// simple-captcha-endpoint -- for java backend\r\n// simple-captcha-endpoint.php -- for php backend\r\n// or a custom path that user configured on backend\r\nfunction getCaptchaEndpointHandler(configuredCaptchaEndpointUrl) {\r\n const splited = configuredCaptchaEndpointUrl.split('/');\r\n return splited[splited.length - 1];\r\n}\r\n\r\n// get backend base url from configured captchaEndpointUrl value\r\nfunction getBackendBaseUrl(configuredCaptchaEndpointUrl, captchaEndpointHandler) {\r\n let lastIndex = configuredCaptchaEndpointUrl.lastIndexOf(captchaEndpointHandler);\r\n return configuredCaptchaEndpointUrl.substring(0, lastIndex);\r\n}\r\n\r\nconst helpers = {\r\n string: {\r\n format: function() {\r\n let str = arguments[0];\r\n for (const index in arguments) {\r\n const regex = new RegExp(\"\\\\{\" + (index - 1) + \"\\\\}\", \"g\");\r\n str = str.replace(regex, arguments[index]);\r\n }\r\n return str;\r\n }\r\n },\r\n\r\n time: {\r\n currentTimestamp: function() {\r\n const currentTime = Date.now ? Date.now() : new Date().getTime();\r\n return currentTime;\r\n }\r\n },\r\n\r\n sanitizer: {\r\n sanitize: function(input) {\r\n input = input.replace(/[^a-zA-Z0-9\\.\\-\\_\\~\\!\\$\\&\\(\\)\\*\\+\\,\\;\\=\\:\\@\\%\\#\\/\\?]/gim, '');\r\n return input;\r\n }\r\n },\r\n\r\n dom: {\r\n createScriptElement: function(id, source, callback) {\r\n const script = document.createElement('script');\r\n script.id = id;\r\n script.src = source;\r\n \r\n if (typeof callback === 'function') {\r\n script.onload = callback;\r\n }\r\n \r\n return script;\r\n }\r\n },\r\n\r\n object: {\r\n mergeObjects: function(target, source) {\r\n let merged = {};\r\n for (let key in target) {\r\n const value = source[key];\r\n merged[key] = (value === void 0) ? target[key] : value;\r\n }\r\n return merged;\r\n },\r\n\r\n isEmptyObject: function(obj) {\r\n if (obj) {\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n },\r\n\r\n ajax: {\r\n get: function(url, successCallback, errorCallback) {\r\n if (detectIE9() && detectCrossDomainRequest(url)) {\r\n // for cross-domain on IE9 support\r\n httpGetWithXDomainRequest(url, successCallback, errorCallback);\r\n } else {\r\n httpGetWithXMLHttpRequest(url, successCallback, errorCallback);\r\n }\r\n }\r\n },\r\n\r\n url: {\r\n createUrl(url, params) {\r\n let p = [];\r\n for (let pKey in params) {\r\n if (typeof pKey === 'string') {\r\n const pValue = params[pKey];\r\n if ((pValue !== null) && (pValue !== '')) {\r\n p.push(pKey + '=' + pValue);\r\n }\r\n }\r\n }\r\n const paramsPattern = /\\?+/g;\r\n return paramsPattern.test(url) ? (url + '&' + p.join('&')) : (url + '?' + p.join('&')); \r\n },\r\n\r\n changeRelativeToAbsoluteUrls(originalCaptchaHtml, configuredCaptchaEndpointUrl) {\r\n const captchaEndpointHandler = getCaptchaEndpointHandler(configuredCaptchaEndpointUrl);\r\n const backendUrl = getBackendBaseUrl(configuredCaptchaEndpointUrl, captchaEndpointHandler);\r\n \r\n const relativeUrls = originalCaptchaHtml.match(/(src|href)=\\\"([^\"]+)\\\"/g);\r\n let relativeUrl, absoluteUrl,\r\n changedCaptchaHtml = originalCaptchaHtml;\r\n \r\n for (let i = 0; i < relativeUrls.length; i++) {\r\n relativeUrl = relativeUrls[i].slice(0, -1).replace(/src=\\\"|href=\\\"/, '');\r\n absoluteUrl = relativeUrl.replace(/.*\\?get=/, backendUrl + captchaEndpointHandler + '?get=');\r\n changedCaptchaHtml = changedCaptchaHtml.replace(relativeUrl, absoluteUrl);\r\n }\r\n \r\n return changedCaptchaHtml;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default helpers;\r\n","/*\r\nCopyright Captcha, Inc. 2004-2023. All rights reserved.\r\n\r\nBotDetect, BotDetect CAPTCHA, Lanap, Lanap CAPTCHA, Lanap BotDetect, \r\nLanap BotDetect CAPTCHA, Lanapsoft, Lanapsoft CAPTCHA, \r\nLanapsoft BotDetect, Lanapsoft BotDetect CAPTCHA, and Lanap Software \r\nare trademarks of Captcha, Inc. All other product, brand, and company \r\nnames are mentioned for identification purposes only and are trademarks \r\nor registered trademarks of their respective owners.\r\n\r\nCaptcha, Inc. - formerly: Lanapsoft, Inc. / Lanap, Inc.\r\n*/\r\n\r\nconst resourceStrings = {\r\n bd_client_side_not_existing: `BotDetect client-side instance doesn't exist.`,\r\n\r\n invalid_captcha_settings: `Invalid captcha settings!\r\n The JavaScript Captcha Plugin requires the three \"captchaFormId\", \"captchaEndpointUrl\", and \"languageTag\" properties to be set.\r\n For example:\r\n var captcha = createCaptchaInstance({\r\n captchaFormId: 'your_form',\r\n languageTag: 'en-US',\r\n captchaEndpointUrl: 'https://your-app-backend-hostname.your-domain.com/simple-captcha-endpoint-url'\r\n });\r\n `,\r\n \r\n captcha_tag_not_found: `Could not find captcha tag! \r\n Please add element in your HTML template.`,\r\n\r\n captcha_error: `
\r\n Captcha Error: please check the JavaScript console and app logs in order to find more details.
`\r\n}\r\n\r\nexport default resourceStrings;\r\n","/*\r\nCopyright Captcha, Inc. 2004-2023. All rights reserved.\r\n\r\nBotDetect, BotDetect CAPTCHA, Lanap, Lanap CAPTCHA, Lanap BotDetect, \r\nLanap BotDetect CAPTCHA, Lanapsoft, Lanapsoft CAPTCHA, \r\nLanapsoft BotDetect, Lanapsoft BotDetect CAPTCHA, and Lanap Software \r\nare trademarks of Captcha, Inc. All other product, brand, and company \r\nnames are mentioned for identification purposes only and are trademarks \r\nor registered trademarks of their respective owners.\r\n\r\nCaptcha, Inc. - formerly: Lanapsoft, Inc. / Lanap, Inc.\r\n*/\r\n\r\nimport resourceStrings from '../resource-strings';\r\n\r\nexport default class BdClientSideNotExistingException extends Error {\r\n constructor() {\r\n super(resourceStrings.bd_client_side_not_existing)\r\n }\r\n}\r\n","/*\r\nCopyright Captcha, Inc. 2004-2023. All rights reserved.\r\n\r\nBotDetect, BotDetect CAPTCHA, Lanap, Lanap CAPTCHA, Lanap BotDetect, \r\nLanap BotDetect CAPTCHA, Lanapsoft, Lanapsoft CAPTCHA, \r\nLanapsoft BotDetect, Lanapsoft BotDetect CAPTCHA, and Lanap Software \r\nare trademarks of Captcha, Inc. All other product, brand, and company \r\nnames are mentioned for identification purposes only and are trademarks \r\nor registered trademarks of their respective owners.\r\n\r\nCaptcha, Inc. - formerly: Lanapsoft, Inc. / Lanap, Inc.\r\n*/\r\n\r\n// BotDetect CAPTCHA JavaScript Integration Core -- ES6\r\n\r\nimport helpers from './helpers';\r\nimport resourceStrings from './resource-strings';\r\nimport BdClientSideNotExistingException from './exceptions/bd-clientside-not-existing-exception';\r\n\r\nconst defaultSettings = {\r\n captchaFormId: '', // form identifier that has to match one of the values in the bdc-config.xml\r\n languageTag: '', // language tag\r\n captchaEndpointUrl: '' // captcha endpoint url on your app's backend\r\n};\r\n\r\nconst defaultIntegrationType = '0'; // unknown integration type\r\n\r\nclass JsCaptchaIntegrationCore {\r\n\r\n static get releaseNo() {\r\n return '4.5.0';\r\n }\r\n\r\n constructor(settings) {\r\n const mergedSettings = helpers.object.mergeObjects(defaultSettings, settings);\r\n this._settings = sanitizeSettings(mergedSettings);\r\n }\r\n\r\n get settings() {\r\n return this._settings;\r\n }\r\n\r\n get captchaEndpointUrl() {\r\n return this.settings.captchaEndpointUrl;\r\n }\r\n\r\n get captchaFormId() {\r\n return this.settings.captchaFormId;\r\n }\r\n\r\n get languageTag() {\r\n return this.settings.languageTag;\r\n }\r\n\r\n set integrationType(type) {\r\n this._integrationType = type;\r\n }\r\n\r\n get integrationType() {\r\n return (this._integrationType === void 0) ?\r\n defaultIntegrationType\r\n : this._integrationType;\r\n }\r\n\r\n getCaptchaData() {\r\n return getBdClientSideInstance(this).getCaptchaData();\r\n }\r\n\r\n reloadCaptcha() {\r\n getBdClientSideInstance(this).reloadCaptcha();\r\n }\r\n\r\n getHtml(successCallback, errorCallback) {\r\n const userSpecifiedLanguageTag = this.languageTag;\r\n\r\n const self = this;\r\n const url = helpers.url.createUrl(this.captchaEndpointUrl, {\r\n get: 'html',\r\n c: this.captchaFormId,\r\n l: userSpecifiedLanguageTag,\r\n ji: false, // disable script include\r\n _: helpers.time.currentTimestamp()\r\n });\r\n\r\n helpers.ajax.get(url, \r\n function(captchaHtml) {\r\n captchaHtml = helpers.url.changeRelativeToAbsoluteUrls(captchaHtml, self.captchaEndpointUrl);\r\n successCallback(captchaHtml);\r\n loadScriptInclude(self, userSpecifiedLanguageTag);\r\n },\r\n function() {\r\n if (typeof errorCallback === 'function') {\r\n errorCallback(resourceStrings.captcha_error);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n\r\n// private functions\r\n\r\nfunction sanitizeSettings(settings) {\r\n let sanitized = {};\r\n for (let key in settings) {\r\n const value = settings[key];\r\n sanitized[key] = helpers.sanitizer.sanitize(value);\r\n }\r\n return sanitized;\r\n}\r\n\r\nfunction getBdClientSideInstance(jsc) {\r\n if (window.botdetect === void 0) {\r\n throw new BdClientSideNotExistingException();\r\n }\r\n\r\n return window.botdetect.getInstanceByCaptchaFormId(jsc.captchaFormId);\r\n}\r\n\r\nfunction loadScriptInclude(jsc, userSpecifiedLanguageTag) {\r\n // remove included script if it exists\r\n const scriptId = 'script_include_' + jsc.captchaFormId;\r\n const includedScript = document.getElementById(scriptId);\r\n if (includedScript) {\r\n includedScript.parentNode.removeChild(includedScript);\r\n }\r\n\r\n // include new script to body\r\n const captchaId = document.getElementById('BDC_VCID_' + jsc.captchaFormId).value;\r\n const scriptIncludeUrl = helpers.url.createUrl(jsc.captchaEndpointUrl, {\r\n get: 'script-include',\r\n c: jsc.captchaFormId,\r\n l: userSpecifiedLanguageTag,\r\n t: captchaId,\r\n cs: jsc.integrationType\r\n });\r\n const scriptIncludeElement = helpers.dom.createScriptElement(scriptId, scriptIncludeUrl);\r\n document.body.appendChild(scriptIncludeElement);\r\n}\r\n\r\nfunction createJsCaptchaIntegrationCoreInstance(settings) {\r\n return new JsCaptchaIntegrationCore(settings);\r\n}\r\n\r\nfunction getJsCaptchaIntegrationCoreReleaseNo() {\r\n return JsCaptchaIntegrationCore.releaseNo;\r\n}\r\n\r\n(function(window) {\r\n window.JsCaptchaIntegrationCore = JsCaptchaIntegrationCore;\r\n window.createJsCaptchaIntegrationCoreInstance = createJsCaptchaIntegrationCoreInstance;\r\n window.getJsCaptchaIntegrationCoreReleaseNo = getJsCaptchaIntegrationCoreReleaseNo;\r\n})(window);\r\n\r\nexport { \r\n JsCaptchaIntegrationCore, \r\n createJsCaptchaIntegrationCoreInstance,\r\n getJsCaptchaIntegrationCoreReleaseNo\r\n};\r\n"],"names":["getBaseUrlFromUrl","url","baseUrl","indexOf","urlParts","split","currentTimestamp","Date","now","getTime","sanitize","input","replace","createScriptElement","id","source","callback","script","document","createElement","src","onload","mergeObjects","target","merged","key","value","isEmptyObject","obj","hasOwnProperty","get","successCallback","errorCallback","backendUrl","detected","clientBaseUrl","backendBaseUrl","navigator","userAgent","parts","parseInt","detectIE9","window","location","href","console","log","xdr","XDomainRequest","open","onprogress","responseText","onerror","setTimeout","send","httpGetWithXDomainRequest","xhr","XMLHttpRequest","onreadystatechange","readyState","status","addEventListener","httpGetWithXMLHttpRequest","createUrl","params","p","pKey","pValue","push","test","join","changeRelativeToAbsoluteUrls","originalCaptchaHtml","configuredCaptchaEndpointUrl","relativeUrl","absoluteUrl","captchaEndpointHandler","splited","length","getCaptchaEndpointHandler","lastIndex","lastIndexOf","substring","getBackendBaseUrl","relativeUrls","match","changedCaptchaHtml","i","slice","BdClientSideNotExistingException","_Error","_inherits","_super","_classCallCheck","call","resourceStrings","_wrapNativeSuper","Error","defaultSettings","captchaFormId","languageTag","captchaEndpointUrl","JsCaptchaIntegrationCore","settings","mergedSettings","helpers","this","_settings","sanitized","sanitizeSettings","_integrationType","set","type","getBdClientSideInstance","getCaptchaData","reloadCaptcha","userSpecifiedLanguageTag","self","c","l","ji","_","captchaHtml","jsc","scriptId","includedScript","getElementById","parentNode","removeChild","captchaId","scriptIncludeUrl","t","cs","integrationType","scriptIncludeElement","body","appendChild","loadScriptInclude","botdetect","getInstanceByCaptchaFormId","createJsCaptchaIntegrationCoreInstance","getJsCaptchaIntegrationCoreReleaseNo","releaseNo"],"sourceRoot":""}