New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@iframe-resizer/jquery

Package Overview
Dependencies
Maintainers
0
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@iframe-resizer/jquery - npm Package Compare versions

Comparing version 5.3.3-beta.5 to 5.3.3-beta.6

2

index.cjs.js
/*!
* @preserve
*
* @module iframe-resizer/jquery 5.3.3-beta.5 (cjs) - 2025-02-07
* @module iframe-resizer/jquery 5.3.3-beta.6 (cjs) - 2025-02-09
*

@@ -6,0 +6,0 @@ * @license GPL-3.0 for non-commercial use only.

/*!
* @preserve
*
* @module iframe-resizer/jquery 5.3.3-beta.5 (esm) - 2025-02-07
* @module iframe-resizer/jquery 5.3.3-beta.6 (esm) - 2025-02-09
*

@@ -6,0 +6,0 @@ * @license GPL-3.0 for non-commercial use only.

/*!
* @preserve
*
* @module iframe-resizer/jquery 5.3.3-beta.5 (umd) - 2025-02-07
* @module iframe-resizer/jquery 5.3.3-beta.6 (umd) - 2025-02-09
*

@@ -20,3 +20,3 @@ * @license GPL-3.0 for non-commercial use only.

!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="5.3.3-beta.5",i="[iFrameSizer]",t=i.length,n=Object.freeze({max:1,scroll:1,bodyScroll:1,documentElementScroll:1}),o=(e,i,t,n)=>e.addEventListener(i,t,n||!1),r=(e,i,t)=>e.removeEventListener(i,t,!1),a=e=>{if(!e)return"";let i=-559038744,t=1103547984;for(let n,o=0;o<e.length;o++)n=e.codePointAt(o),i=Math.imul(i^n,2246822519),t=Math.imul(t^n,3266489917);return i^=Math.imul(i^t>>>15,1935289751),t^=Math.imul(t^i>>>15,3405138345),i^=t>>>16,t^=i>>>16,(2097152*(t>>>0)+(i>>>11)).toString(36)},s=e=>e.replaceAll(/[A-Za-z]/g,(e=>String.fromCodePoint((e<="Z"?90:122)>=(e=e.codePointAt(0)+19)?e:e-26))),l=["<iy><yi>Puchspk Spjluzl Rlf</><iy><iy>","<iy><yi>Tpzzpun Spjluzl Rlf</><iy><iy>","Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>","<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>."],c=["NWSc3","zvsv","wyv","ibzpulzz","vlt"],d=Object.fromEntries(["2cgs7fdf4xb","1c9ctcccr4z","1q2pc4eebgb","ueokt0969w","w2zxchhgqz","1umuxblj2e5"].map(((e,i)=>[e,Math.max(0,i-1)]))),u=e=>s(l[e]),f=e=>{const i=e[s("spjluzl")];if(!i)return-1;const t=i.split("-");let n=function(e=""){let i=-2;const t=a(s(e));return t in d&&(i=d[t]),i}(t[0]);return 0===n||(e=>e[2]===a(e[0]+e[1]))(t)||(n=-2),n},p="[iframe-resizer]";let m={},h=!1;const g=e=>`${p}[${function(e){return window.top===window.self?`Parent page: ${e}`:window?.parentIFrame?.getId?`${window.parentIFrame.getId()}: ${e}`:`Nested parent page: ${e}`}(e)}]`,y=(e,i,...t)=>window?.console[e](g(i),...t),b=(e,...i)=>!0===(e=>m[e]?m[e].log:h)(e)?y("log",e,...i):null,w=(e,...i)=>y("warn",e,...i),v=(e,i)=>console?.warn((e=>i=>window.chrome?e(i.replaceAll("<br>","\n").replaceAll("<rb>","").replaceAll("</>","").replaceAll("<b>","").replaceAll("<i>","").replaceAll("<u>","")):e(i.replaceAll("<br>","\n").replaceAll(/<[/a-z]+>/gi,"")))((e=>(...i)=>[`${p}[${e}]`,...i].join(" "))(e))(i)),z={},$=Object.freeze({autoResize:!0,bodyBackground:null,bodyMargin:null,bodyPadding:null,checkOrigin:!0,direction:"vertical",inPageLinks:!1,heightCalculationMethod:"auto",id:"iFrameResizer",log:!1,license:void 0,mouseEvents:!0,offsetHeight:null,offsetWidth:null,postMessageTarget:null,sameDomain:!1,scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,waitForLoad:!1,widthCalculationMethod:"auto",onClose:()=>!0,onClosed(){},onInit:!1,onMessage:null,onMouseEnter(){},onMouseLeave(){},onReady:e=>{"function"==typeof z[e.id].onInit&&(v(e.id,"\nDeprecated Option\n\nThe onInit() function is deprecated and has been replaced with onReady(). It will be removed in a future version of iFrame Resizer.\n "),z[e.id].onInit(e))},onResized(){},onScroll:()=>!0}),j={position:null,version:e};function k(n){function a(){W(H),M(P),E("onResized",H)}function s(e){if("border-box"!==e.boxSizing)return 0;return(e.paddingTop?parseInt(e.paddingTop,10):0)+(e.paddingBottom?parseInt(e.paddingBottom,10):0)}function l(e){if("border-box"!==e.boxSizing)return 0;return(e.borderTopWidth?parseInt(e.borderTopWidth,10):0)+(e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0)}const c=e=>D.slice(D.indexOf(":")+7+e);const d=(e,i)=>(t,n)=>{const o={};var r,a;r=function(){C(`Send ${e} (${t})`,`${e}:${i()}`,n)},o[a=n]||(r(),o[a]=requestAnimationFrame((()=>{o[a]=null})))},u=(e,i)=>()=>{let t=!1;const n=i=>()=>{z[d]?t&&t!==i||(e(i,d),t=i,requestAnimationFrame((()=>{t=!1}))):c()},a=n("scroll"),s=n("resize window");function l(e,t){b(d,`${e} listeners for send${i}`),t(window,"scroll",a),t(window,"resize",s)}function c(){l("Remove ",r),u.disconnect(),f.disconnect()}const d=P,u=new ResizeObserver(n("page observed")),f=new ResizeObserver(n("iframe observed"));l("Add ",o),u.observe(document.body,{attributes:!0,childList:!0,subtree:!0}),f.observe(z[d].iframe,{attributes:!0,childList:!1,subtree:!1}),z[d]&&(z[d][`stop${i}`]=c)},f=e=>()=>{e in z[P]&&(z[P][e](),delete z[P][e])},p=d("pageInfo",(function(){const e=document.body.getBoundingClientRect(),i=H.iframe.getBoundingClientRect(),{scrollY:t,scrollX:n,innerHeight:o,innerWidth:r}=window,{clientHeight:a,clientWidth:s}=document.documentElement;return JSON.stringify({iframeHeight:i.height,iframeWidth:i.width,clientHeight:Math.max(a,o||0),clientWidth:Math.max(s,r||0),offsetTop:parseInt(i.top-e.top,10),offsetLeft:parseInt(i.left-e.left,10),scrollTop:t,scrollLeft:n,documentHeight:a,documentWidth:s,windowHeight:o,windowWidth:r})})),m=d("parentInfo",(function(){const{iframe:e}=H,{scrollWidth:i,scrollHeight:t}=document.documentElement,{width:n,height:o,offsetLeft:r,offsetTop:a,pageLeft:s,pageTop:l,scale:c}=window.visualViewport;return JSON.stringify({iframe:e.getBoundingClientRect(),document:{scrollWidth:i,scrollHeight:t},viewport:{width:n,height:o,offsetLeft:r,offsetTop:a,pageLeft:s,pageTop:l,scale:c}})})),h=u(p,"PageInfo"),g=u(m,"ParentInfo"),y=f("stopPageInfo"),$=f("stopParentInfo");function k(e){const i=e.getBoundingClientRect();return S(P),{x:Number(i.left)+Number(j.position.x),y:Number(i.top)+Number(j.position.y)}}function R(e){const i=e?k(H.iframe):{x:0,y:0};b(P,`Reposition requested from iFrame (offset x:${i.x} y:${i.y})`);const t=((e,i)=>({x:e.width+i.x,y:e.height+i.y}))(H,i),n=window.parentIframe||window.parentIFrame;n?function(i,t){i["scrollTo"+(e?"Offset":"")](t.x,t.y)}(n,t):function(e){j.position=e,L(P),b(P,"---")}(t)}function L(e){const{x:i,y:t}=j.position,n=z[e]?.iframe;!1!==E("onScroll",{iframe:n,top:t,left:i,x:i,y:t})?M(e):x()}function A(e){let i={};if(0===H.width&&0===H.height){const e=c(9).split(":");i={x:e[1],y:e[0]}}else i={x:H.width,y:H.height};E(e,{iframe:H.iframe,screenX:Number(i.x),screenY:Number(i.y),type:H.type})}const E=(e,i)=>T(P,e,i);let D=n.data,H={},P=null;"[iFrameResizerChild]Ready"!==D?i===`${D}`.slice(0,t)&&D.slice(t).split(":")[0]in z?(H=function(){const e=D.slice(t).split(":"),i=e[1]?Number(e[1]):0,n=z[e[0]]?.iframe,o=getComputedStyle(n);return{iframe:n,id:e[0],height:i+s(o)+l(o),width:Number(e[2]),type:e[3],msg:e[4]}}(),P=H.id,P?(function(e){if(!z[e])throw new Error(`${H.type} No settings for ${e}. Message was: ${D}`)}(P),function(){const e=H.type in{true:1,false:1,undefined:1};return e&&b(P,"Ignoring init message from meta parent page"),e}()||(b(P,`Received: ${D}`),z[P].loaded=!0,(null!==H.iframe||(w(P,`The iframe (${H.id}) was not found.`),0))&&function(){const{origin:e,sameDomain:i}=n;if(i)return!0;let t=z[P]?.checkOrigin;if(t&&"null"!=`${e}`&&!(t.constructor===Array?function(){let i=0,n=!1;for(b(P,`Checking connection is from allowed list of origins: ${t}`);i<t.length;i++)if(t[i]===e){n=!0;break}return n}():function(){const i=z[P]?.remoteHost;return b(P,`Checking connection is from: ${i}`),e===i}()))throw new Error(`Unexpected message received from: ${e} for ${H.iframe.id}. Message was: ${n.data}. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.`);return!0}()&&function(){switch(z[P]?.firstRun&&z[P]&&(z[P].firstRun=!1),H.type){case"close":I(H.iframe);break;case"message":t=c(6),b(P,`onMessage passed: {iframe: ${H.iframe.id}, message: ${t}}`),E("onMessage",{iframe:H.iframe,message:JSON.parse(t)}),b(P,"---");break;case"mouseenter":A("onMouseEnter");break;case"mouseleave":A("onMouseLeave");break;case"autoResize":z[P].autoResize=JSON.parse(c(9));break;case"scrollBy":!function(){const e=H.width,i=H.height,t=window.parentIframe||window;b(P,`Scroll request received by parent: x: ${e} y: ${i}`),t.scrollBy(e,i)}();break;case"scrollTo":R(!1);break;case"scrollToOffset":R(!0);break;case"pageInfo":p("start",P),h();break;case"parentInfo":m("start",P),g();break;case"pageInfoStop":y();break;case"parentInfoStop":$();break;case"inPageLink":!function(e){const i=e.split("#")[1]||"",t=decodeURIComponent(i);let n=document.getElementById(t)||document.getElementsByName(t)[0];n?function(){const e=k(n);b(P,`Moving to in page link (#${i}) at x: ${e.x} y: ${e.y}`),j.position={x:e.x,y:e.y},L(P),window.location.hash=i,b(P,"--")}():window.top!==window.self?window.parentIFrame?window.parentIFrame.moveToAnchor(i):b(P,`In page link #${i} not found and window.parentIFrame not found`):b(P,`In page link #${i} not found`)}(c(9));break;case"title":!function(e,i){z[i]?.syncTitle&&(z[i].iframe.title=e,b(i,`Set title attribute to: ${e}`))}(H.msg,P);break;case"reset":F(H);break;case"init":a(),function(e){try{z[e].sameDomain=!!z[e]?.iframe?.contentWindow?.iframeChildListener}catch(i){z[e].sameDomain=!1}b(e,`sameDomain: ${z[e].sameDomain}`)}(P),(i=H.msg)!==e&&(void 0!==i?b(P,`Version mismatch (Child: ${i} !== Parent: ${e})`):v(P,"<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n")),N=!0,E("onReady",H.iframe);break;default:if(0===H.width&&0===H.height)return void w(P,`Unsupported message received (${H.type}), this is likely due to the iframe containing a later version of iframe-resizer than the parent page`);if(0===H.width||0===H.height)return void b(P,"Ignoring message with 0 height or width");if(document.hidden)return void b(P,"Page hidden - ignored resize request");a()}var i,t}())):w("","iframeResizer received messageData without id, message was: ",D)):null!==P&&b(P,"Ignored:",D):Object.keys(z).forEach((e=>{z[e].mode>=0&&C("iFrame requested init",O(e),e)}))}function T(e,i,t){let n=null,o=null;if(z[e]){if(n=z[e][i],"function"!=typeof n)throw new TypeError(`${i} on iFrame[${e}] is not a function`);"onClose"===i||"onScroll"===i?o=n(t):setTimeout((()=>n(t)))}return o}function R(e){const{id:i}=e;delete z[i],b(i,"Disconnected from iframe")}function I(e){const{id:i}=e;if(!1!==T(i,"onClose",i)){b(i,`Removing iFrame: ${i}`);try{e.parentNode&&e.remove()}catch(e){w(i,e)}T(i,"onClosed",i),b(i,"---"),R(e)}else b(i,"Close iframe cancelled by onClose event")}function S(e){null===j.position&&(j.position={x:window.scrollX,y:window.scrollY},b(e,`Get page position: ${j.position.x}, ${j.position.y}`))}function x(){j.position=null}function M(e){null!==j.position&&(window.scrollTo(j.position.x,j.position.y),b(e,`Set page position: ${j.position.x}, ${j.position.y}`),x())}function F(e){b(e.id,"Size reset requested by "+("init"===e.type?"parent page":"child page")),S(e.id),W(e),C("reset","reset",e.id)}function W(e){function i(i){const n=`${e[i]}px`;e.iframe.style[i]=n,b(t,`IFrame (${t}) ${i} set to ${n}`)}const{id:t}=e,{sizeHeight:n,sizeWidth:o}=z[t];n&&i("height"),o&&i("width")}function C(e,t,n,o){z[n]&&(z[n]?.postMessageTarget?function(){const{iframe:o,postMessageTarget:r,sameDomain:a,targetOrigin:s}=z[n];if(a)try{return o.contentWindow.iframeChildListener(i+t),void b(n,`[${e}] Sending message to iframe[${n}] (${t}) via sameDomain`)}catch(e){b(n,"Same domain connection failed. Trying cross domain")}b(n,`[${e}] Sending message to iframe[${n}] (${t}) targetOrigin: ${s}`),r.postMessage(i+t,s)}():w(n,`[${e}] IFrame(${n}) not found`),o&&z[n]?.warningTimeout&&(z[n].msgTimeout=setTimeout((function(){if(void 0===z[n])return;const{iframe:e,loaded:i,loadErrorShown:t,waitForLoad:o}=z[n],{sandbox:r}=e;i||t||(z[n].loadErrorShown=!0,v(n,`\n<rb>No response from iFrame</>\n \nThe iframe (<i>${n}</>) has not responded within ${z[n].warningTimeout/1e3} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${o?"\nThe <b>waitForLoad</> option is currently set to <i>'true'</>. If the iframe loads before the JavaScript runs, this option will prevent <i>iframe-resizer</> from initialising. To disable this, set the <b>waitForLoad</> option to <i>'false'</>. \n":""}\n${!(r?.length>0)||r.contains("allow-scripts")&&r.contains("allow-same-origin")?"":"The iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values."}\n\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`))}),z[n].warningTimeout)))}function O(e){const i=z[e];return[e,"8",i.sizeWidth,i.log,"32",!0,i.autoResize,i.bodyMargin,i.heightCalculationMethod,i.bodyBackground,i.bodyPadding,i.tolerance,i.inPageLinks,"child",i.widthCalculationMethod,i.mouseEvents,i.offsetHeight,i.offsetWidth,i.sizeHeight,i.license,j.version,i.mode].join(":")}m=z;let L=0,N=!1,A=!1;const E=i=>t=>{function r(e){if(!e)return{};if("object"!=typeof e)throw new TypeError("Options is not an object");return("sizeWidth"in e||"sizeHeight"in e||"autoResize"in e)&&v(l,'<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>"vertical"</>, <i>"horizontal"</> or <i>"horizontal"</>.\n'),e}function a(e){const i=z[e]?.iframe?.title;return""===i||void 0===i}const l=function(e){if(e&&"string"!=typeof e)throw new TypeError("Invalid id for iFrame. Expected String");var n;return""!==e&&e||(e=function(){let e=i?.id||$.id+L++;return null!==document.getElementById(e)&&(e+=L++),e}(),t.id=e,n=(i||{}).log,h=n,b(e,`Added missing iframe ID: ${e} (${t.src})`)),e}(t.id);return l in z&&"iFrameResizer"in t?w(l,"Ignored iFrame, already setup."):(function(e){var i,n;z[l]={iframe:t,firstRun:!0,remoteHost:t?.src.split("/").slice(0,3).join("/"),...$,...r(e),mode:f(e),syncTitle:a(l)},function(){const{direction:e}=z[l];if("horizontal"===e)return z[l].sizeWidth=!0,z[l].sizeHeight=!1,void b(l,'Direction set to "horizontal"');if("none"===e)return z[l].sizeWidth=!1,z[l].sizeHeight=!1,z[l].autoResize=!1,void b(l,'Direction set to "none"');if("vertical"!==e)throw new TypeError(l,`Direction value of "${e}" is not valid`);b(l,'Direction set to "vertical"')}(),(i=e?.offsetSize||e?.offset)&&("vertical"===z[l].direction?(z[l].offsetHeight=i,b(l,`Offset height set to ${i}`)):(z[l].offsetWidth=i,b(l,`Offset width set to ${i}`))),e?.offset&&v(l,"<rb>Deprecated option</>\n\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>."),null===z[l].postMessageTarget&&(z[l].postMessageTarget=t.contentWindow),z[l].targetOrigin=!0===z[l].checkOrigin?""===(n=z[l].remoteHost)||null!==n.match(/^(about:blank|javascript:|file:\/\/)/)?"*":n:"*"}(i),function(){const{mode:i}=z[l];var t;i<0&&v("Parent",`${u(i+2)}${u(2)}`),A||i<0||(A=!0,t=`v${e} (${(e=>s(c[e]))(i)})`,console.info(`%c[iframe-resizer] ${t}`,"font-weight: bold;"),i<1&&v("Parent",u(3)))}(),H(),function(){switch(b(l,`IFrame scrolling ${z[l]?.scrolling?"enabled":"disabled"} for ${l}`),t.style.overflow=!1===z[l]?.scrolling?"hidden":"auto",z[l]?.scrolling){case"omit":break;case!0:t.scrolling="yes";break;case!1:t.scrolling="no";break;default:t.scrolling=z[l]?z[l].scrolling:"no"}}(),function(){const{bodyMargin:e}=z[l];"number"!=typeof e&&"0"!==e||(z[l].bodyMargin=`${e}px`)}(),function(e){const{id:i}=t,{mode:r,waitForLoad:a}=z[i];-1!==r&&-2!==r&&(o(t,"load",(function(){C("iFrame.onload",`${e}:${N}`,i,!0),function(){const e=z[l]?.firstRun,i=z[l]?.heightCalculationMethod in n;!e&&i&&F({iframe:t,height:0,width:0,type:"init"})}()})),!1===a&&C("init",`${e}:${N}`,i,!0))}(O(l)),function(){if(z[l]){const{iframe:e}=z[l],i={close:I.bind(null,e),disconnect:R.bind(null,e),removeListeners(){v(l,"\n<rb>Deprecated Method Name</>\n\nThe emoveListeners()</> method has been renamed to isconnect()</>.\n"),this.disconnect()},resize:C.bind(null,"Window resize","resize",l),moveToAnchor(e){C("Move to anchor",`moveToAnchor:${e}`,l)},sendMessage(e){C("Send Message",`message:${e=JSON.stringify(e)}`,l)}};e.iframeResizer=i,e.iFrameResizer=i}}()),t?.iFrameResizer};function D(){!1===document.hidden&&(b("document","Trigger event: Visibility change"),function(e,i){const t=e=>z[e]?.autoResize&&!z[e]?.firstRun;Object.keys(z).forEach((function(n){t(n)&&C(e,i,n)}))}("Tab Visible","resize"))}const H=(e=>{let i=!1;return function(){return i?void 0:(i=!0,Reflect.apply(e,this,arguments))}})((()=>{o(window,"message",k),o(document,"visibilitychange",D),window.iframeParentListener=e=>setTimeout((()=>k({data:e,sameDomain:!0})))}));switch(!0){case void 0===window.jQuery:w("","Unable to bind to jQuery, it is not available.");break;case!window.jQuery.fn:w("","Unable to bind to jQuery, it is not fully loaded.");break;case window.jQuery.fn.iframeResize:w("","iframeResize is already assigned to jQuery.fn.");break;default:window.jQuery.fn.iframeResize=function(e){const i=E(e);return this.filter("iframe").each(((e,t)=>i(t))).end()},window.jQuery.fn.iFrameResize=function(e){return w("","Deprecated: Use the iframeResize method instead of iFrameResize"),this.iframeResize(e)}}}));
!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="5.3.3-beta.6",i="[iFrameSizer]",t=i.length,n=Object.freeze({max:1,scroll:1,bodyScroll:1,documentElementScroll:1}),o=(e,i,t,n)=>e.addEventListener(i,t,n||!1),r=(e,i,t)=>e.removeEventListener(i,t,!1),a=e=>{if(!e)return"";let i=-559038744,t=1103547984;for(let n,o=0;o<e.length;o++)n=e.codePointAt(o),i=Math.imul(i^n,2246822519),t=Math.imul(t^n,3266489917);return i^=Math.imul(i^t>>>15,1935289751),t^=Math.imul(t^i>>>15,3405138345),i^=t>>>16,t^=i>>>16,(2097152*(t>>>0)+(i>>>11)).toString(36)},s=e=>e.replaceAll(/[A-Za-z]/g,(e=>String.fromCodePoint((e<="Z"?90:122)>=(e=e.codePointAt(0)+19)?e:e-26))),l=["<iy><yi>Puchspk Spjluzl Rlf</><iy><iy>","<iy><yi>Tpzzpun Spjluzl Rlf</><iy><iy>","Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>","<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>."],c=["NWSc3","zvsv","wyv","ibzpulzz","vlt"],d=Object.fromEntries(["2cgs7fdf4xb","1c9ctcccr4z","1q2pc4eebgb","ueokt0969w","w2zxchhgqz","1umuxblj2e5"].map(((e,i)=>[e,Math.max(0,i-1)]))),u=e=>s(l[e]),f=e=>{const i=e[s("spjluzl")];if(!i)return-1;const t=i.split("-");let n=function(e=""){let i=-2;const t=a(s(e));return t in d&&(i=d[t]),i}(t[0]);return 0===n||(e=>e[2]===a(e[0]+e[1]))(t)||(n=-2),n},p="[iframe-resizer]";let m={},h=!1;const g=e=>`${p}[${function(e){return window.top===window.self?`Parent page: ${e}`:window?.parentIFrame?.getId?`${window.parentIFrame.getId()}: ${e}`:`Nested parent page: ${e}`}(e)}]`,y=(e,i,...t)=>window?.console[e](g(i),...t),b=(e,...i)=>!0===(e=>m[e]?m[e].log:h)(e)?y("log",e,...i):null,w=(e,...i)=>y("warn",e,...i),v=(e,i)=>console?.warn((e=>i=>window.chrome?e(i.replaceAll("<br>","\n").replaceAll("<rb>","").replaceAll("</>","").replaceAll("<b>","").replaceAll("<i>","").replaceAll("<u>","")):e(i.replaceAll("<br>","\n").replaceAll(/<[/a-z]+>/gi,"")))((e=>(...i)=>[`${p}[${e}]`,...i].join(" "))(e))(i)),z={},$=Object.freeze({autoResize:!0,bodyBackground:null,bodyMargin:null,bodyPadding:null,checkOrigin:!0,direction:"vertical",inPageLinks:!1,heightCalculationMethod:"auto",id:"iFrameResizer",log:!1,license:void 0,mouseEvents:!0,offsetHeight:null,offsetWidth:null,postMessageTarget:null,sameDomain:!1,scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,waitForLoad:!1,widthCalculationMethod:"auto",onClose:()=>!0,onClosed(){},onInit:!1,onMessage:null,onMouseEnter(){},onMouseLeave(){},onReady:e=>{"function"==typeof z[e.id].onInit&&(v(e.id,"\nDeprecated Option\n\nThe onInit() function is deprecated and has been replaced with onReady(). It will be removed in a future version of iFrame Resizer.\n "),z[e.id].onInit(e))},onResized(){},onScroll:()=>!0}),j={position:null,version:e};function k(n){function a(){W(H),M(P),E("onResized",H)}function s(e){if("border-box"!==e.boxSizing)return 0;return(e.paddingTop?parseInt(e.paddingTop,10):0)+(e.paddingBottom?parseInt(e.paddingBottom,10):0)}function l(e){if("border-box"!==e.boxSizing)return 0;return(e.borderTopWidth?parseInt(e.borderTopWidth,10):0)+(e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0)}const c=e=>D.slice(D.indexOf(":")+7+e);const d=(e,i)=>(t,n)=>{const o={};var r,a;r=function(){C(`Send ${e} (${t})`,`${e}:${i()}`,n)},o[a=n]||(r(),o[a]=requestAnimationFrame((()=>{o[a]=null})))},u=(e,i)=>()=>{let t=!1;const n=i=>()=>{z[d]?t&&t!==i||(e(i,d),t=i,requestAnimationFrame((()=>{t=!1}))):c()},a=n("scroll"),s=n("resize window");function l(e,t){b(d,`${e} listeners for send${i}`),t(window,"scroll",a),t(window,"resize",s)}function c(){l("Remove ",r),u.disconnect(),f.disconnect()}const d=P,u=new ResizeObserver(n("page observed")),f=new ResizeObserver(n("iframe observed"));l("Add ",o),u.observe(document.body,{attributes:!0,childList:!0,subtree:!0}),f.observe(z[d].iframe,{attributes:!0,childList:!1,subtree:!1}),z[d]&&(z[d][`stop${i}`]=c)},f=e=>()=>{e in z[P]&&(z[P][e](),delete z[P][e])},p=d("pageInfo",(function(){const e=document.body.getBoundingClientRect(),i=H.iframe.getBoundingClientRect(),{scrollY:t,scrollX:n,innerHeight:o,innerWidth:r}=window,{clientHeight:a,clientWidth:s}=document.documentElement;return JSON.stringify({iframeHeight:i.height,iframeWidth:i.width,clientHeight:Math.max(a,o||0),clientWidth:Math.max(s,r||0),offsetTop:parseInt(i.top-e.top,10),offsetLeft:parseInt(i.left-e.left,10),scrollTop:t,scrollLeft:n,documentHeight:a,documentWidth:s,windowHeight:o,windowWidth:r})})),m=d("parentInfo",(function(){const{iframe:e}=H,{scrollWidth:i,scrollHeight:t}=document.documentElement,{width:n,height:o,offsetLeft:r,offsetTop:a,pageLeft:s,pageTop:l,scale:c}=window.visualViewport;return JSON.stringify({iframe:e.getBoundingClientRect(),document:{scrollWidth:i,scrollHeight:t},viewport:{width:n,height:o,offsetLeft:r,offsetTop:a,pageLeft:s,pageTop:l,scale:c}})})),h=u(p,"PageInfo"),g=u(m,"ParentInfo"),y=f("stopPageInfo"),$=f("stopParentInfo");function k(e){const i=e.getBoundingClientRect();return S(P),{x:Number(i.left)+Number(j.position.x),y:Number(i.top)+Number(j.position.y)}}function R(e){const i=e?k(H.iframe):{x:0,y:0};b(P,`Reposition requested from iFrame (offset x:${i.x} y:${i.y})`);const t=((e,i)=>({x:e.width+i.x,y:e.height+i.y}))(H,i),n=window.parentIframe||window.parentIFrame;n?function(i,t){i["scrollTo"+(e?"Offset":"")](t.x,t.y)}(n,t):function(e){j.position=e,L(P),b(P,"---")}(t)}function L(e){const{x:i,y:t}=j.position,n=z[e]?.iframe;!1!==E("onScroll",{iframe:n,top:t,left:i,x:i,y:t})?M(e):x()}function A(e){let i={};if(0===H.width&&0===H.height){const e=c(9).split(":");i={x:e[1],y:e[0]}}else i={x:H.width,y:H.height};E(e,{iframe:H.iframe,screenX:Number(i.x),screenY:Number(i.y),type:H.type})}const E=(e,i)=>T(P,e,i);let D=n.data,H={},P=null;"[iFrameResizerChild]Ready"!==D?i===`${D}`.slice(0,t)&&D.slice(t).split(":")[0]in z?(H=function(){const e=D.slice(t).split(":"),i=e[1]?Number(e[1]):0,n=z[e[0]]?.iframe,o=getComputedStyle(n);return{iframe:n,id:e[0],height:i+s(o)+l(o),width:Number(e[2]),type:e[3],msg:e[4]}}(),P=H.id,P?(function(e){if(!z[e])throw new Error(`${H.type} No settings for ${e}. Message was: ${D}`)}(P),function(){const e=H.type in{true:1,false:1,undefined:1};return e&&b(P,"Ignoring init message from meta parent page"),e}()||(b(P,`Received: ${D}`),z[P].loaded=!0,(null!==H.iframe||(w(P,`The iframe (${H.id}) was not found.`),0))&&function(){const{origin:e,sameDomain:i}=n;if(i)return!0;let t=z[P]?.checkOrigin;if(t&&"null"!=`${e}`&&!(t.constructor===Array?function(){let i=0,n=!1;for(b(P,`Checking connection is from allowed list of origins: ${t}`);i<t.length;i++)if(t[i]===e){n=!0;break}return n}():function(){const i=z[P]?.remoteHost;return b(P,`Checking connection is from: ${i}`),e===i}()))throw new Error(`Unexpected message received from: ${e} for ${H.iframe.id}. Message was: ${n.data}. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.`);return!0}()&&function(){switch(z[P]?.firstRun&&z[P]&&(z[P].firstRun=!1),H.type){case"close":I(H.iframe);break;case"message":t=c(6),b(P,`onMessage passed: {iframe: ${H.iframe.id}, message: ${t}}`),E("onMessage",{iframe:H.iframe,message:JSON.parse(t)}),b(P,"---");break;case"mouseenter":A("onMouseEnter");break;case"mouseleave":A("onMouseLeave");break;case"autoResize":z[P].autoResize=JSON.parse(c(9));break;case"scrollBy":!function(){const e=H.width,i=H.height,t=window.parentIframe||window;b(P,`Scroll request received by parent: x: ${e} y: ${i}`),t.scrollBy(e,i)}();break;case"scrollTo":R(!1);break;case"scrollToOffset":R(!0);break;case"pageInfo":p("start",P),h();break;case"parentInfo":m("start",P),g();break;case"pageInfoStop":y();break;case"parentInfoStop":$();break;case"inPageLink":!function(e){const i=e.split("#")[1]||"",t=decodeURIComponent(i);let n=document.getElementById(t)||document.getElementsByName(t)[0];n?function(){const e=k(n);b(P,`Moving to in page link (#${i}) at x: ${e.x} y: ${e.y}`),j.position={x:e.x,y:e.y},L(P),window.location.hash=i,b(P,"--")}():window.top!==window.self?window.parentIFrame?window.parentIFrame.moveToAnchor(i):b(P,`In page link #${i} not found and window.parentIFrame not found`):b(P,`In page link #${i} not found`)}(c(9));break;case"title":!function(e,i){z[i]?.syncTitle&&(z[i].iframe.title=e,b(i,`Set title attribute to: ${e}`))}(H.msg,P);break;case"reset":F(H);break;case"init":a(),function(e){try{z[e].sameDomain=!!z[e]?.iframe?.contentWindow?.iframeChildListener}catch(i){z[e].sameDomain=!1}b(e,`sameDomain: ${z[e].sameDomain}`)}(P),(i=H.msg)!==e&&(void 0!==i?b(P,`Version mismatch (Child: ${i} !== Parent: ${e})`):v(P,"<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n")),N=!0,E("onReady",H.iframe);break;default:if(0===H.width&&0===H.height)return void w(P,`Unsupported message received (${H.type}), this is likely due to the iframe containing a later version of iframe-resizer than the parent page`);if(0===H.width||0===H.height)return void b(P,"Ignoring message with 0 height or width");if(document.hidden)return void b(P,"Page hidden - ignored resize request");a()}var i,t}())):w("","iframeResizer received messageData without id, message was: ",D)):null!==P&&b(P,"Ignored:",D):Object.keys(z).forEach((e=>{z[e].mode>=0&&C("iFrame requested init",O(e),e)}))}function T(e,i,t){let n=null,o=null;if(z[e]){if(n=z[e][i],"function"!=typeof n)throw new TypeError(`${i} on iFrame[${e}] is not a function`);"onClose"===i||"onScroll"===i?o=n(t):setTimeout((()=>n(t)))}return o}function R(e){const{id:i}=e;delete z[i],b(i,"Disconnected from iframe")}function I(e){const{id:i}=e;if(!1!==T(i,"onClose",i)){b(i,`Removing iFrame: ${i}`);try{e.parentNode&&e.remove()}catch(e){w(i,e)}T(i,"onClosed",i),b(i,"---"),R(e)}else b(i,"Close iframe cancelled by onClose event")}function S(e){null===j.position&&(j.position={x:window.scrollX,y:window.scrollY},b(e,`Get page position: ${j.position.x}, ${j.position.y}`))}function x(){j.position=null}function M(e){null!==j.position&&(window.scrollTo(j.position.x,j.position.y),b(e,`Set page position: ${j.position.x}, ${j.position.y}`),x())}function F(e){b(e.id,"Size reset requested by "+("init"===e.type?"parent page":"child page")),S(e.id),W(e),C("reset","reset",e.id)}function W(e){function i(i){const n=`${e[i]}px`;e.iframe.style[i]=n,b(t,`IFrame (${t}) ${i} set to ${n}`)}const{id:t}=e,{sizeHeight:n,sizeWidth:o}=z[t];n&&i("height"),o&&i("width")}function C(e,t,n,o){z[n]&&(z[n]?.postMessageTarget?function(){const{iframe:o,postMessageTarget:r,sameDomain:a,targetOrigin:s}=z[n];if(a)try{return o.contentWindow.iframeChildListener(i+t),void b(n,`[${e}] Sending message to iframe[${n}] (${t}) via sameDomain`)}catch(e){b(n,"Same domain connection failed. Trying cross domain")}b(n,`[${e}] Sending message to iframe[${n}] (${t}) targetOrigin: ${s}`),r.postMessage(i+t,s)}():w(n,`[${e}] IFrame(${n}) not found`),o&&z[n]?.warningTimeout&&(z[n].msgTimeout=setTimeout((function(){if(void 0===z[n])return;const{iframe:e,loaded:i,loadErrorShown:t,waitForLoad:o}=z[n],{sandbox:r}=e;i||t||(z[n].loadErrorShown=!0,v(n,`\n<rb>No response from iFrame</>\n \nThe iframe (<i>${n}</>) has not responded within ${z[n].warningTimeout/1e3} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${o?"\nThe <b>waitForLoad</> option is currently set to <i>'true'</>. If the iframe loads before the JavaScript runs, this option will prevent <i>iframe-resizer</> from initialising. To disable this, set the <b>waitForLoad</> option to <i>'false'</>. \n":""}\n${!(r?.length>0)||r.contains("allow-scripts")&&r.contains("allow-same-origin")?"":"The iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values."}\n\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`))}),z[n].warningTimeout)))}function O(e){const i=z[e];return[e,"8",i.sizeWidth,i.log,"32",!0,i.autoResize,i.bodyMargin,i.heightCalculationMethod,i.bodyBackground,i.bodyPadding,i.tolerance,i.inPageLinks,"child",i.widthCalculationMethod,i.mouseEvents,i.offsetHeight,i.offsetWidth,i.sizeHeight,i.license,j.version,i.mode].join(":")}m=z;let L=0,N=!1,A=!1;const E=i=>t=>{function r(e){if(!e)return{};if("object"!=typeof e)throw new TypeError("Options is not an object");return("sizeWidth"in e||"sizeHeight"in e||"autoResize"in e)&&v(l,'<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>"vertical"</>, <i>"horizontal"</> or <i>"horizontal"</>.\n'),e}function a(e){const i=z[e]?.iframe?.title;return""===i||void 0===i}const l=function(e){if(e&&"string"!=typeof e)throw new TypeError("Invalid id for iFrame. Expected String");var n;return""!==e&&e||(e=function(){let e=i?.id||$.id+L++;return null!==document.getElementById(e)&&(e+=L++),e}(),t.id=e,n=(i||{}).log,h=n,b(e,`Added missing iframe ID: ${e} (${t.src})`)),e}(t.id);return l in z&&"iFrameResizer"in t?w(l,"Ignored iFrame, already setup."):(function(e){var i,n;z[l]={iframe:t,firstRun:!0,remoteHost:t?.src.split("/").slice(0,3).join("/"),...$,...r(e),mode:f(e),syncTitle:a(l)},function(){const{direction:e}=z[l];if("horizontal"===e)return z[l].sizeWidth=!0,z[l].sizeHeight=!1,void b(l,'Direction set to "horizontal"');if("none"===e)return z[l].sizeWidth=!1,z[l].sizeHeight=!1,z[l].autoResize=!1,void b(l,'Direction set to "none"');if("vertical"!==e)throw new TypeError(l,`Direction value of "${e}" is not valid`);b(l,'Direction set to "vertical"')}(),(i=e?.offsetSize||e?.offset)&&("vertical"===z[l].direction?(z[l].offsetHeight=i,b(l,`Offset height set to ${i}`)):(z[l].offsetWidth=i,b(l,`Offset width set to ${i}`))),e?.offset&&v(l,"<rb>Deprecated option</>\n\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>."),null===z[l].postMessageTarget&&(z[l].postMessageTarget=t.contentWindow),z[l].targetOrigin=!0===z[l].checkOrigin?""===(n=z[l].remoteHost)||null!==n.match(/^(about:blank|javascript:|file:\/\/)/)?"*":n:"*"}(i),function(){const{mode:i}=z[l];var t;i<0&&v("Parent",`${u(i+2)}${u(2)}`),A||i<0||(A=!0,t=`v${e} (${(e=>s(c[e]))(i)})`,console.info(`%c[iframe-resizer] ${t}`,"font-weight: bold;"),i<1&&v("Parent",u(3)))}(),H(),function(){switch(b(l,`IFrame scrolling ${z[l]?.scrolling?"enabled":"disabled"} for ${l}`),t.style.overflow=!1===z[l]?.scrolling?"hidden":"auto",z[l]?.scrolling){case"omit":break;case!0:t.scrolling="yes";break;case!1:t.scrolling="no";break;default:t.scrolling=z[l]?z[l].scrolling:"no"}}(),function(){const{bodyMargin:e}=z[l];"number"!=typeof e&&"0"!==e||(z[l].bodyMargin=`${e}px`)}(),function(e){const{id:i}=t,{mode:r,waitForLoad:a}=z[i];-1!==r&&-2!==r&&(o(t,"load",(function(){C("iFrame.onload",`${e}:${N}`,i,!0),function(){const e=z[l]?.firstRun,i=z[l]?.heightCalculationMethod in n;!e&&i&&F({iframe:t,height:0,width:0,type:"init"})}()})),!1===a&&C("init",`${e}:${N}`,i,!0))}(O(l)),function(){if(z[l]){const{iframe:e}=z[l],i={close:I.bind(null,e),disconnect:R.bind(null,e),removeListeners(){v(l,"\n<rb>Deprecated Method Name</>\n\nThe emoveListeners()</> method has been renamed to isconnect()</>.\n"),this.disconnect()},resize:C.bind(null,"Window resize","resize",l),moveToAnchor(e){C("Move to anchor",`moveToAnchor:${e}`,l)},sendMessage(e){C("Send Message",`message:${e=JSON.stringify(e)}`,l)}};e.iframeResizer=i,e.iFrameResizer=i}}()),t?.iFrameResizer};function D(){!1===document.hidden&&(b("document","Trigger event: Visibility change"),function(e,i){const t=e=>z[e]?.autoResize&&!z[e]?.firstRun;Object.keys(z).forEach((function(n){t(n)&&C(e,i,n)}))}("Tab Visible","resize"))}const H=(e=>{let i=!1;return function(){return i?void 0:(i=!0,Reflect.apply(e,this,arguments))}})((()=>{o(window,"message",k),o(document,"visibilitychange",D),window.iframeParentListener=e=>setTimeout((()=>k({data:e,sameDomain:!0})))}));switch(!0){case void 0===window.jQuery:w("","Unable to bind to jQuery, it is not available.");break;case!window.jQuery.fn:w("","Unable to bind to jQuery, it is not fully loaded.");break;case window.jQuery.fn.iframeResize:w("","iframeResize is already assigned to jQuery.fn.");break;default:window.jQuery.fn.iframeResize=function(e){const i=E(e);return this.filter("iframe").each(((e,t)=>i(t))).end()},window.jQuery.fn.iFrameResize=function(e){return w("","Deprecated: Use the iframeResize method instead of iFrameResize"),this.iframeResize(e)}}}));
//# sourceMappingURL=index.umd.js.map
{
"name": "@iframe-resizer/jquery",
"version": "5.3.3-beta.5",
"version": "5.3.3-beta.6",
"license": "GPL-3.0",

@@ -42,4 +42,4 @@ "homepage": "https://iframe-resizer.com",

"dependencies": {
"@iframe-resizer/core": "5.3.3-beta.5"
"@iframe-resizer/core": "5.3.3-beta.6"
}
}

@@ -25,2 +25,2 @@ [<img src="https://iframe-resizer.com/logo-full.svg" alt="" title="" style="margin-bottom: -20px">](https://iframe-resizer.com)

_iframe-resizer version 5.3.3-beta.5 2025-02-07 - 13:42:57.868Z_
_iframe-resizer version 5.3.3-beta.6 2025-02-09 - 17:41:29.260Z_
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc