PageSourceSearch

https://www.vg.woerth-isar.de/wp-content/plugins/cosmema-captcha/assets/js/shim.min.js?ver=1.0.0

js woerth-isar.de collected 2026-09-25 08:13:09 UTC 14,084 bytes, 19 lines download raw bytes

1/*!
2 * Cosmema Captcha, compatibility layer.
3 *
4 * Emulates window.hcaptcha and window.grecaptcha (including enterprise) so that
5 * existing form integrations keep working unchanged while the self-hosted Cap
6 * captcha does the solving. Tokens handed out are wrapped as
7 * "ccap1.<base64url JSON>", which the plugin recognizes and verifies server side.
8 *
9 * Flow:
10 *   1. This file runs early in the head and intercepts provider scripts that
11 *      are injected by JavaScript (script.src / setAttribute).
12 *   2. Provider scripts point to provider-stub.js#<original url>. The stub calls
13 *      boot() the way the real api.js would: expose the API, auto render,
14 *      invoke the onload callback.
15 *   3. Visible widgets become <cap-widget>, invisible ones and reCAPTCHA v3
16 *      share one background solver (TokenPool).
17 *   4. The Cap widget itself (including WebAssembly) is loaded on demand only.
18 */
19!function(e,t){"use strict";var n=e.CosmemaCaptchaConfig;if(n&&!e.CosmemaCaptcha){var a=66e5,r=new RegExp(n.patterns.hcaptchaHosts,"i"),c=new RegExp(n.patterns.recaptchaHosts,"i");!function(){var t=e.HTMLScriptElement&&e.HTMLScriptElement.prototype;if(t){var n=Object.getOwnPropertyDescriptor(t,"src");n&&n.set&&n.configurable&&Object.defineProperty(t,"src",{configurable:!0,enumerable:n.enumerable,get:n.get,set:function(e){var t=_(e);t!==e&&E("Skript umgeleitet",e),n.set.call(this,t)}});var a=e.Element.prototype.setAttribute;e.Element.prototype.setAttribute=function(t,n){if(this instanceof e.HTMLScriptElement&&"src"===String(t).toLowerCase()){var r=_(n);return r!==n&&E("Skript umgeleitet",n),a.call(this,t,r)}return a.call(this,t,n)}}}();var i=null;A(function(){if(t.querySelector("cap-widget"))L().catch(function(e){C(e.message)});else if(e.MutationObserver){var n=new MutationObserver(function(e){for(var t=0;t<e.length;t++)for(var a=e[t].addedNodes,r=0;r<a.length;r++){var c=a[r];if(1===c.nodeType&&("cap-widget"===c.localName||c.getElementsByTagName("cap-widget").length))return n.disconnect(),void L().catch(function(e){C(e.message)})}});n.observe(t.documentElement,{childList:!0,subtree:!0})}});var o=!1,s=[],u=["pointerdown","keydown","touchstart","focusin"];u.forEach(function(t){e.addEventListener(t,N,{capture:!0,passive:!0})});var l=0;t.addEventListener("submit",function(){l++,N()},!0);var p={solver:null,tokens:[],inflight:null,take:function(e){var t=this;e=e||"",this.prune();for(var n=0;n<this.tokens.length;n++){var a=this.tokens[n];if(a.issuedRound===l&&a.action===e&&Date.now()-a.issuedAt<12e4)return Promise.resolve(a.token)}return U().then(function(){return t.fresh()}).then(function(n){return n.issuedRound=l,n.action=e,n.issuedAt=Date.now(),t.prefetch(),n.token})},fresh:function(){var e=this;this.prune();for(var t=0;t<this.tokens.length;t++)if(-1===this.tokens[t].issuedRound)return Promise.resolve(this.tokens[t]);return this.inflight?this.inflight.then(function(){return e.fresh()}):(this.inflight=this.solve().then(function(t){e.inflight=null;var n={token:t,created:Date.now(),issuedRound:-1};return e.tokens.push(n),n},function(t){throw e.inflight=null,t}),this.inflight)},prefetch:function(){var e=this;this.inflight||this.tokens.some(function(e){return-1===e.issuedRound})||U().then(function(){return e.fresh()}).catch(function(e){E("Vorauslösen fehlgeschlagen",e)})},spend:function(e){this.tokens=this.tokens.filter(function(t){return t.token!==e})},prune:function(){var e=Date.now();this.tokens=this.tokens.filter(function(t){return e-t.created<a})},solve:function(){var e=this;return L().then(function(){return e.solver&&e.solver.isConnected||(e.solver=P({fieldName:"cosmema-captcha-pool"}),e.solver.setAttribute("aria-hidden","true"),e.solver.setAttribute("data-cap-disable-haptics",""),e.solver.style.cssText="display:none!important",t.documentElement.appendChild(e.solver)),e.solver.solve()}).then(function(e){if(!e||!e.token)throw new Error("Captcha-Server hat kein Token geliefert.");return E("Token im Hintergrund gelöst"),e.token})}},h={},f=[],d=0,m=!1,g={noRecaptchaCompat:!1},v=null,b=[],k=!1,y={};A(function(){e.jQuery&&e.jQuery(t).on("submit_success error reset","form",function(e){e.target===this&&Array.prototype.forEach.call(this.getElementsByTagName("cap-widget"),function(e){e.closest("[data-cc-widget]")||"function"==typeof e.reset&&e.reset()})})}),e.CosmemaCaptcha={version:n.version,boot:G,loadCap:L,wrapToken:T,createWidget:P,_widgets:h};var w=e.CosmemaCaptchaPending;
19Array.isArray(w)&&(e.CosmemaCaptchaPending=[],w.forEach(G))}function E(){if(n.debug&&e.console){var t=Array.prototype.slice.call(arguments);t.unshift("[Cosmema Captcha]"),e.console.log.apply(e.console,t)}}function C(t,n){e.console&&e.console.warn("[Cosmema Captcha] "+t,n||"")}function A(e){"loading"===t.readyState?t.addEventListener("DOMContentLoaded",e,{once:!0}):e()}function x(){var t=new Uint8Array(12);return(e.crypto||e.msCrypto).getRandomValues(t),Array.prototype.map.call(t,function(e){return("0"+e.toString(16)).slice(-2)}).join("")}function T(t,n){var a,r,c={t:t};return n&&(c.a=String(n)),"ccap1."+(a=JSON.stringify(c),r=unescape(encodeURIComponent(a)),e.btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""))}function S(e){try{return new URL(String(e),t.baseURI)}catch(e){return null}}function R(e){var t=S(e);if(!t)return null;var a=t.pathname.replace(/\/+$/,"");if(n.providers.hcaptcha&&r.test(t.hostname)&&/^\/1\/(?:api|secure-api)\.js$/.test(a))return"hcaptcha";if(n.providers.recaptcha&&c.test(t.hostname)){if("/recaptcha/api.js"===a)return"recaptcha";if("/recaptcha/enterprise.js"===a)return"recaptcha-enterprise"}return null}function _(e){return R(e)?n.stubUrl+"#"+String(e):e}function L(){return i||(e.CAP_CUSTOM_WASM_URL||(e.CAP_CUSTOM_WASM_URL=n.wasmUrl),e.CAP_PAKO_URL||(e.CAP_PAKO_URL=n.pakoUrl),n.debug&&void 0===e.CAP_DEBUG&&(e.CAP_DEBUG=!0),i=new Promise(function(a,r){if(e.customElements.get("cap-widget"))a();else{var c=t.createElement("script");c.src=n.widgetUrl,c.async=!0,c.setAttribute("data-no-optimize","1"),c.onload=function(){e.customElements.whenDefined("cap-widget").then(function(){a()})},c.onerror=function(){i=null,r(new Error("Cap-Widget konnte nicht geladen werden: "+n.widgetUrl))},(t.head||t.documentElement).appendChild(c)}}))}function P(e){var a=t.createElement("cap-widget");a.setAttribute("data-cap-api-endpoint",n.endpoint),a.setAttribute("data-cap-hidden-field-name",e.fieldName||"cosmema-captcha-raw");var r=e.lang||n.lang;return r&&a.setAttribute("data-cap-lang",r),e.className&&(a.className=e.className),a}function N(){if(!o){o=!0,u.forEach(function(t){e.removeEventListener(t,N,!0)});var t=s;s=[],t.forEach(function(e){e()})}}function U(){return new Promise(function(e){o?e():s.push(e)})}function j(t,n){if(t){var a="function"==typeof t?t:e[t];if("function"==typeof a)try{a(n)}catch(e){C("Fehler im Callback der Seite",e)}}}function O(e,n){var a=t.createElement("textarea");return a.name=e,n&&(a.id=n),a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),a.style.display="none",a}function D(e,n,a,r){var c=function(e){var n="string"==typeof e?t.getElementById(e):e;if(!n||1!==n.nodeType)throw new Error("[Cosmema Captcha] Captcha-Container nicht gefunden: "+e);return n}(n),i=c.getAttribute("data-cc-widget");i&&h[i]&&$(i),a=Object.assign({},function(e){var t={sitekey:"sitekey",theme:"theme",size:"size",tabindex:"tabindex",badge:"badge",action:"action",hl:"hl",callback:"callback","expired-callback":"expired-callback","error-callback":"error-callback","chalexpired-callback":"chalexpired-callback"},n={};return Object.keys(t).forEach(function(a){var r=e.getAttribute("data-"+a);null!==r&&""!==r&&(n[t[a]]=r)}),n}(c),a||{});var o="hcaptcha"!==e,s=o?String(d++):x(),u="invisible"===a.size||!!r.invisible,l={id:s,provider:e,container:c,params:a,invisible:u,token:"",capToken:"",key:"",fields:[],waiters:[],capEl:null,expiryTimer:null,resetting:!1};if(c.setAttribute("data-cc-widget",s),c.classList.add("cosmema-captcha"),function(){if(!m){m=!0;var e=t.createElement("style");e.id="cosmema-captcha-styles",e.textContent=".cosmema-captcha::before,.cosmema-captcha::after{content:none!important;display:none!important}.cosmema-captcha{background:none!important;min-height:0!important}.cosmema-captcha cap-widget{display:block;max-width:100%}cap-widget.cosmema-captcha--compact{--cap-widget-width:200px}cap-widget.cosmema-captcha--dark{--cap-background:#1f2329;--cap-border-color:#3a414b;--cap-color:#f1f1f1;--cap-checkbox-background:#2a2f36;--cap-checkbox-border:1px solid #5b6572;--cap-spinner-color:#f1f1f1;--cap-spinner-background-color:#3a414b}",(t.head||t.documentElement).appendChild(e)}}(),o?l.fields.push(O("g-recaptcha-response","0"===s?"g-recaptcha-response":"g-recaptcha-response-"+s)):(l.fields.push(O("h-captcha-response","h-captcha-response-"+s)),r.noRecaptchaCompat||l.fields.push(O("g-recaptcha-response","g-recaptcha-response-"+s))),!u){var g=P({lang:a.hl,className:"cosmema-captcha__widget"+("dark"===a.theme?" cosmema-captcha--dark":"")+("compact"===a.size?" cosmema-captcha--compact":"")});a.tabindex&&g.setAttribute("tabindex",a.tabindex),g.addEventListener("solve",function(e){M(l,e.detail&&e.detail.token,a.action||"")}),g.addEventListener("error",function(e){var t=e.detail||{};H(l,new Error(t.message||"Captcha fehlgeschlagen")),j(a["error-callback"],t.code||"error")}),g.addEventListener("reset",function(){!l.resetting&&l.token&&(z(l),j(a["expired-callback"]))}),l.capEl=g,c.appendChild(g),L().then(function(){var e=g.querySelector('input[type="hidden"]');e&&e.parentNode.removeChild(e)}).catch(function(e){C(e.message),j(a["error-callback"],"network-error")})}return l.fields.forEach(function(e){c.appendChild(e)}),h[s]=l,f.push(s),E("Widget gerendert",e,s,u?"unsichtbar":"sichtbar"),u&&p.prefetch(),o?Number(s):s}function M(t,n,r){if(n){t.capToken!==n&&(t.solvedRound=l),t.capToken=n,t.token=T(n,r),t.key="E0_"+x(),t.fields.forEach(function(e){e.value=t.token}),t.expiryTimer&&e.clearTimeout(t.expiryTimer),t.invisible&&(t.expiryTimer=e.setTimeout(function(){z(t),j(t.params["expired-callback"])},a));var c=t.waiters;
19t.waiters=[],c.forEach(function(e){e.resolve(t.token)}),j(t.params.callback,t.token)}}function z(t){t.capToken&&p.spend(t.capToken),t.token="",t.capToken="",t.key="",t.fields.forEach(function(e){e.value=""}),t.expiryTimer&&(e.clearTimeout(t.expiryTimer),t.expiryTimer=null)}function H(e,t){var n=e.waiters;e.waiters=[],n.forEach(function(e){e.reject(t)})}function W(e){return null==e||""===e?h[f[0]]||null:h[String(e)]||null}function B(e,t){return new Promise(function(n,a){if(!e.invisible){var r=e.token&&e.solvedRound===l;return r&&!t?(n(e.token),void j(e.params.callback,e.token)):r&&t?(M(e,e.capToken,t),void n(e.token)):(e.token&&K(e),e.waiters.push({resolve:n,reject:a}),void L().then(function(){return e.capEl.solve()}).catch(function(t){H(e,t)}))}var c=t||e.params.action||"";p.take(c+"|"+e.id).then(function(t){h[e.id]&&(M(e,t,c),n(e.token))},function(t){C("Captcha konnte nicht gelöst werden",t),j(e.params["error-callback"],"network-error"),a(t)})})}function K(e){if(e){if(e.resetting=!0,z(e),e.capEl&&"function"==typeof e.capEl.reset)try{e.capEl.reset()}catch(e){}e.resetting=!1}}function $(e){var t=h[e];t&&(K(t),H(t,new Error("Captcha entfernt")),t.capEl&&t.capEl.parentNode&&t.capEl.parentNode.removeChild(t.capEl),t.fields.forEach(function(e){e.parentNode&&e.parentNode.removeChild(e)}),t.container.removeAttribute("data-cc-widget"),delete h[e],f=f.filter(function(t){return t!==e}))}function q(){if(null!==v&&h[v])return h[v];var e=t.createElement("div");return e.className="cosmema-captcha-implicit",e.style.display="none",(t.body||t.documentElement).appendChild(e),v=String(D("recaptcha",e,{size:"invisible"},{invisible:!0})),h[v]}function F(t){return y.hcaptcha||(y.hcaptcha={render:function(e,t){return D("hcaptcha",e,t,g)},execute:function(e,t){e&&"object"==typeof e&&(t=e,e=void 0);var n=W(e);if(!n){var a=new Error("[Cosmema Captcha] Kein hCaptcha-Widget vorhanden.");return t&&t.async?Promise.reject(a):void C(a.message)}var r=B(n,"").then(function(e){return{response:e,key:n.key}});if(t&&t.async)return r;r.catch(function(){})},reset:function(e){K(W(e))},remove:function(e){var t=W(e);t&&$(t.id)},getResponse:function(e){var t=W(e);return t?t.token:""},getRespKey:function(e){var t=W(e);return t?t.key:""},setData:function(){},close:function(){}},e.hcaptcha=y.hcaptcha),g.noRecaptchaCompat="off"===t.get("recaptchacompat"),g.noRecaptchaCompat||e.grecaptcha||(e.grecaptcha=y.hcaptcha),"h-captcha"}function I(){var t,n=e.___grecaptcha_cfg;n&&Array.isArray(n.fns)&&(b=b.concat(n.fns),n.fns=[]),y.recaptcha||(y.recaptcha=((t={render:function(e,t){return D("recaptcha",e,t,{})},execute:function(e,t){return"object"==typeof e&&null!==e&&(t=e,e=void 0),B(("number"==typeof e||"string"==typeof e&&/^\d+$/.test(e)||void 0===e)&&W(e)||q(),t&&t.action?String(t.action):"")},reset:function(e){K(W(e))},getResponse:function(e){var t=W(e);return t?t.token:""},ready:function(t){"function"==typeof t&&(k?e.setTimeout(t,0):b.push(t))}}).enterprise={render:t.render,execute:t.execute,reset:t.reset,getResponse:t.getResponse,ready:t.ready},t)),e.grecaptcha=y.recaptcha,k=!0;var a=b;return b=[],a.forEach(function(t){e.setTimeout(function(){try{t()}catch(e){C("Fehler in grecaptcha.ready",e)}},0)}),"g-recaptcha"}function G(n){var a=String(n||"").indexOf("#"),r=-1===a?"":String(n).slice(a+1),c=R(r),i=S(r);if(c&&i){var o,s=i.searchParams,u=s.get("render")||"onload";o="hcaptcha"===c?"."+F(s):"."+I(),E("Anbieter übernommen",c,r),"onload"===u&&function(e,n,a){A(function(){var r=t.querySelectorAll(n);Array.prototype.forEach.call(r,function(t){if(!t.getAttribute("data-cc-widget")&&t.getAttribute("data-sitekey"))try{D(e,t,{},a)}catch(e){C(e.message)}})})}("hcaptcha"===c?"hcaptcha":"recaptcha",o,"hcaptcha"===c?g:{});var l=s.get("onload");A(function(){e.setTimeout(function(){!function(t){if(t){var n=0;!function a(){if("function"!=typeof e[t])n++<50&&e.setTimeout(a,100);else try{e[t]()}catch(e){C("Fehler im onload-Callback "+t,e)}}()}}(l)},0)})}else C("Unbekanntes Anbieter-Skript",r)}}(window,document);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.