0% found this document useful (0 votes)
225 views4 pages

Rocket-Loader Min

This document contains code for a JavaScript library that handles lazy loading and preloading of scripts. It includes functions for: - Harvesting scripts from the DOM and pushing them to a stack - Simulating the document ready state to trigger scripts - Proxying inline event handlers to control script execution - Inserting scripts harvested from document.write calls back into the DOM The library allows blocking or non-blocking lazy loading/preloading of scripts with different execution behaviors based on attributes like async, defer, and nomodule.

Uploaded by

Kenan Kılıç
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
225 views4 pages

Rocket-Loader Min

This document contains code for a JavaScript library that handles lazy loading and preloading of scripts. It includes functions for: - Harvesting scripts from the DOM and pushing them to a stack - Simulating the document ready state to trigger scripts - Proxying inline event handlers to control script execution - Inserting scripts harvested from document.write calls back into the DOM The library allows blocking or non-blocking lazy loading/preloading of scripts with different execution behaviors based on attributes like async, defer, and nomodule.

Uploaded by

Kenan Kılıç
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

!

function(){"use strict";function t(){return"cf-


marker-"+Math.random().toString().slice(2)}function e(){for(var
t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];(n=console.warn||
console.log).call.apply(n,[console,"[ROCKET LOADER] "].concat(t));var n}function
n(t,e){var n=e.parentNode;n&&h(t,n,e)}function r(t,e)
{h(t,e,e.childNodes[0])}function o(t){var
e=t.parentNode;e&&e.removeChild(t)}function i(t){var
e=t.namespaceURI===E?"xlink:href":"src";return t.getAttribute(e)}function a(t,e)
{var n=t.type.substr(e.length);return!(n&&!A[n.trim()])&&((!k||!
t.hasAttribute("nomodule"))&&!(!k&&"module"===n))}function c(t){return
a(t,"")}function s(t,e){return function(n){if(e(),t)return t.call(this,n)}}function
u(t,e){t.onload=s(t.onload,e),t.onerror=s(t.onerror,e)}function p(t){var
e=document.createElementNS(t.namespaceURI,"script");e.async=t.hasAttribute("async")
,e.textContent=t.textContent;for(var n=0;n<t.attributes.length;n++){var
r=t.attributes[n];try{r.namespaceURI?
e.setAttributeNS(r.namespaceURI,r.name,r.value):e.setAttribute(r.name,r.value)}catc
h(o){}}return e}function l(t,e){var n=new I(e);t.dispatchEvent(n)}function d(e){var
n=e.namespaceURI===E,r=t();e.setAttribute(r,"");var
i=n?"<svg>"+e.outerHTML+"</svg>":e.outerHTML;L.call(document,i);var
a=document.querySelector("["+r+"]");if(a){a.removeAttribute(r);var
c=n&&a.parentNode;c&&o(c)}return a}function f(t){if(t&&"handleEvent"in t){var
e=t.handleEvent;return"function"==typeof e?e.bind(t):e}return t}function h(t,e,n)
{var r=n?function(t){return e.insertBefore(t,n)}:function(t){return
e.appendChild(t)};Array.prototype.slice.call(t).forEach(r)}function v()
{return/chrome/i.test(navigator.userAgent)&&/google/i.test(navigator.vendor)}functi
on y(t,e){function n(){this.constructor=t}H(t,e),t.prototype=null===e?
Object.create(e):(n.prototype=e.prototype,new n)}function m(t){return t instanceof
Window?["load"]:t instanceof Document?["DOMContentLoaded","readystatechange"]:
[]}function b(t){var e=t.getAttribute(R);if(!e)return null;var
n=e.split(T);return{nonce:n[0],handlerPrefixLength:+n[1],bailout:!
t.hasAttribute("defer")}}function g(t){var
e=B+t.nonce;Array.prototype.forEach.call(document.querySelectorAll("["+e+"]"),funct
ion(n){n.removeAttribute(e),Array.prototype.forEach.call(n.attributes,function(e)
{/^on/.test(e.name)&&"function"!=typeof
n[e.name]&&n.setAttribute(e.name,e.value.substring(t.handlerPrefixLength))})})}func
tion S(){var t=window;"undefined"!=typeof Promise&&(t.__cfQR={done:new
Promise(function(t){return U=t})})}function w(t){var e=new N(t),n=new
C(e);e.harvestScriptsInDocument(),new W(e,{nonce:t,blocking:!
0,docWriteSimulator:n,callback:function(){}}).run()}function x(t){var e=new
N(t),n=new C(e);e.harvestScriptsInDocument();var r=new W(e,{nonce:t,blocking:!
1,docWriteSimulator:n,callback:function(){window.__cfRLUnblockHandlers=!
0,r.removePreloadHints(),P(t)}});r.insertPreloadHints(),M.runOnLoad(function()
{r.run()})}function P(t){var e=new
O(t);M.simulateStateBeforeDeferScriptsActivation(),e.harvestDeferScriptsInDocument(
),new W(e,{nonce:t,blocking:!1,callback:function()
{M.simulateStateAfterDeferScriptsActivation(),U&&U()}}).run()}var
E="http://www.w3.org/2000/svg",A={"application/ecmascript":!
0,"application/javascript":!0,"application/x-ecmascript":!0,"application/x-
javascript":!0,"text/ecmascript":!0,"text/javascript":!0,"text/javascript1.0":!
0,"text/javascript1.1":!0,"text/javascript1.2":!0,"text/javascript1.3":!
0,"text/javascript1.4":!0,"text/javascript1.5":!0,"text/jscript":!
0,"text/livescript":!0,"text/x-ecmascript":!0,"text/x-javascript":!0,module:!
0},k=void 0!==document.createElement("script").noModule,I=function(){var
t=window;return t.__rocketLoaderEventCtor||
Object.defineProperty(t,"__rocketLoaderEventCtor",
{value:Event}),t.__rocketLoaderEventCtor}
(),L=document.write,_=document.writeln,H=Object.setPrototypeOf||{__proto__:
[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in
e)e.hasOwnProperty(n)&&(t[n]=e[n])},D=function(){function t(t)
{this.nonce=t,this.items=[]}return Object.defineProperty(t.prototype,"hasItems",
{get:function(){return this.items.length>0},enumerable:!0,configurable:!
0}),t.prototype.pop=function(){return
this.items.pop()},t.prototype.forEach=function(t){this.items.forEach(function(e)
{var n=e.script;return t(n)})},t.prototype.harvestScripts=function(t,e){var
n=this,r=e.filter,o=e.mutate;Array.prototype.slice.call(t.querySelectorAll("script"
)).filter(r).reverse().forEach(function(t)
{o(t),n.pushScriptOnStack(t)})},t.prototype.pushScriptOnStack=function(t){var
e=t.parentNode,n=this.createPlaceholder(t),r=!!
i(t);e.replaceChild(n,t),this.items.push({script:t,placeholder:n,external:r,async:r
&&t.hasAttribute("async"),executable:c(t)})},t.prototype.hasNonce=function(t)
{return 0===t.type.indexOf(this.nonce)},t.prototype.removeNonce=function(t)
{t.type=t.type.substr(this.nonce.length)},t.prototype.makeNonExecutable=function(t)
{t.type=this.nonce+t.type},t.prototype.isPendingDeferScript=function(t){return
t.hasAttribute("defer")||t.type===this.nonce+"module"&&!t.hasAttribute("async")},t}
(),N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return
y(e,t),e.prototype.harvestScriptsInDocument=function(){var
t=this;this.harvestScripts(document,{filter:function(e){return
t.hasNonce(e)},mutate:function(e){t.isPendingDeferScript(e)||
t.removeNonce(e)}})},e.prototype.harvestScriptsAfterDocWrite=function(t){var
e=this;this.harvestScripts(t,{filter:c,mutate:function(t)
{e.isPendingDeferScript(t)&&e.makeNonExecutable(t)}})},e.prototype.createPlaceholde
r=function(t){return document.createComment(t.outerHTML)},e}(D),O=function(t)
{function e(){return null!==t&&t.apply(this,arguments)||this}return
y(e,t),e.prototype.harvestDeferScriptsInDocument=function(){var
t=this;this.harvestScripts(document,{filter:function(e){return
t.hasNonce(e)&&t.isPendingDeferScript(e)},mutate:function(e){return
t.removeNonce(e)}})},e.prototype.createPlaceholder=function(t){var e=p(t);return
this.makeNonExecutable(e),e},e}(D),C=function(){function t(t)
{this.scriptStack=t}return t.prototype.enable=function(t){var
e=this;this.insertionPointMarker=t,this.buffer="",document.write=function(){for(var
t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e.write(t,!
1)},document.writeln=function(){for(var t=[],n=0;n<arguments.length;n+
+)t[n]=arguments[n];return e.write(t,!
0)}},t.prototype.flushWrittenContentAndDisable=function()
{document.write=L,document.writeln=_,this.buffer.length&&(document.contains(this.in
sertionPointMarker)?this.insertionPointMarker.parentNode===document.head?
this.insertContentInHead():this.insertContentInBody():e("Insertion point marker for
document.write was detached from document:","Markup will not be
inserted"))},t.prototype.insertContentInHead=function(){var t=new DOMParser,e="<!
DOCTYPE
html><head>"+this.buffer+"</head>",o=t.parseFromString(e,"text/html");if(this.scrip
tStack.harvestScriptsAfterDocWrite(o),n(o.head.childNodes,this.insertionPointMarker
),o.body.childNodes.length){for(var
i=Array.prototype.slice.call(o.body.childNodes),a=this.insertionPointMarker.nextSib
ling;a;)i.push(a),a=a.nextSibling;document.body||
L.call(document,"<body>"),r(i,document.body)}},t.prototype.insertContentInBody=func
tion(){var
t=this.insertionPointMarker.parentElement,e=document.createElement(t.tagName);e.inn
erHTML=this.buffer,this.scriptStack.harvestScriptsAfterDocWrite(e),n(e.childNodes,t
his.insertionPointMarker)},t.prototype.write=function(t,e){var
n=document.currentScript;n&&i(n)&&n.hasAttribute("async")?(r=e?_:L).call.apply(r,
[document].concat(t)):this.buffer+=t.map(String).join(e?"\n":"");var r},t}
(),j=function(){function t(){var
t=this;this.simulatedReadyState="loading",this.bypassEventsInProxies=!
1,this.nativeWindowAddEventListener=window.addEventListener;try{Object.defineProper
ty(document,"readyState",{get:function(){return t.simulatedReadyState}})}catch(e)
{}this.setupEventListenerProxy(),this.updateInlineHandlers()}return
t.prototype.runOnLoad=function(t){var
e=this;this.nativeWindowAddEventListener.call(window,"load",function(n){if(!
e.bypassEventsInProxies)return t(n)})},t.prototype.updateInlineHandlers=function()
{this.proxyInlineHandler(document,"onreadystatechange"),this.proxyInlineHandler(win
dow,"onload"),document.body&&this.proxyInlineHandler(document.body,"onload")},t.pro
totype.simulateStateBeforeDeferScriptsActivation=function()
{this.bypassEventsInProxies=!
0,this.simulatedReadyState="interactive",l(document,"readystatechange"),this.bypass
EventsInProxies=!1},t.prototype.simulateStateAfterDeferScriptsActivation=function()
{var t=this;this.bypassEventsInProxies=!
0,l(document,"DOMContentLoaded"),this.simulatedReadyState="complete",l(document,"re
adystatechange"),l(window,"load"),this.bypassEventsInProxies=!
1,window.setTimeout(function(){return t.bypassEventsInProxies=!
0},0)},t.prototype.setupEventListenerProxy=function(){var t=this;("undefined"!
=typeof EventTarget?[EventTarget.prototype]:
[Node.prototype,Window.prototype]).forEach(function(e){return
t.patchEventTargetMethods(e)})},t.prototype.patchEventTargetMethods=function(t){var
e=this,n=t.addEventListener,r=t.removeEventListener;t.addEventListener=function(t,r
){for(var o=[],i=2;i<arguments.length;i++)o[i-2]=arguments[i];var
a=m(this),c=r&&r.__rocketLoaderProxiedHandler;if(!c){var s=f(r);"function"==typeof
s?(c=function(n){if(e.bypassEventsInProxies||a.indexOf(t)<0)return
s.call(this,n)},Object.defineProperty(r,"__rocketLoaderProxiedHandler",
{value:c})):c=r}n.call.apply(n,
[this,t,c].concat(o))},t.removeEventListener=function(t,e){for(var
n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var
i=e&&e.__rocketLoaderProxiedHandler||e;r.call.apply(r,
[this,t,i].concat(n))}},t.prototype.proxyInlineHandler=function(t,e){try{var
n=t[e];if(n&&!n.__rocketLoaderInlineHandlerProxy){var r=this;t[e]=function(t)
{if(r.bypassEventsInProxies)return
n.call(this,t)},Object.defineProperty(t[e],"__rocketLoaderInlineHandlerProxy",
{value:!0})}}catch(o){return
void console.warn("encountered an error when accessing "+e+"
handler:",o.message)}},t}(),M=function(){var t=window;return
t.__rocketLoaderLoadProgressSimulator||
Object.defineProperty(t,"__rocketLoaderLoadProgressSimulator",{value:new
j}),t.__rocketLoaderLoadProgressSimulator}(),W=function(){function t(t,e)
{this.scriptStack=t,this.settings=e,this.preloadHints=[]}return
t.prototype.insertPreloadHints=function(){var
t=this;this.scriptStack.forEach(function(e){if(a(e,t.settings.nonce)){var
n=i(e),r=v()&&e.hasAttribute("integrity");if(n&&!r){var
o=document.createElement("link");o.setAttribute("rel","preload"),o.setAttribute("as
","script"),o.setAttribute("href",n),e.crossOrigin&&o.setAttribute("crossorigin",e.
crossOrigin),document.head.appendChild(o),t.preloadHints.push(o)}}})},t.prototype.r
emovePreloadHints=function(){this.preloadHints.forEach(function(t){return
o(t)})},t.prototype.run=function(){for(var
t=this,e=this;this.scriptStack.hasItems;){var n=function(){var
n=e.settings.docWriteSimulator,r=e.scriptStack.pop();n&&!
r.async&&n.enable(r.placeholder);var o=e.activateScript(r);return o?
r.external&&r.executable&&!r.async?(u(o,function()
{t.finalizeActivation(r),t.run()}),{value:void 0}):void e.finalizeActivation(r):
(n&&n.flushWrittenContentAndDisable(),"continue")}();if("object"==typeof n)return
n.value}this.scriptStack.hasItems||
this.settings.callback()},t.prototype.finalizeActivation=function(t)
{this.settings.docWriteSimulator&&!
t.async&&this.settings.docWriteSimulator.flushWrittenContentAndDisable(),M.updateIn
lineHandlers(),o(t.placeholder)},t.prototype.activateScript=function(t){var
n=t.script,r=t.placeholder,o=t.external,i=t.async,a=r.parentNode;if(!
document.contains(r))return e("Placeholder for script \n"+n.outerHTML+"\n was
detached from document.","Script will not be executed."),null;var
c=this.settings.blocking&&o&&!i?d(n):p(n);return c?(a.insertBefore(c,r),c):
(e("Failed to create activatable copy of script \n"+n.outerHTML+"\n","Script will
not be executed."),null)},t}(),R="data-cf-settings",T="|",B="data-cf-
modified-",U=void 0;!function(){var t=document.currentScript;if(t){var n=b(t);n?
(o(t),g(n),M.updateInlineHandlers(),n.bailout?w(n.nonce):
(S(),x(n.nonce))):e("Activator script doesn't have settings. No scripts will be
executed.")}else e("Can't obtain activator script. No scripts will be executed.")}
()}();

You might also like