Advertisement
volond

jspower module-injector

Sep 11th, 2022
735
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.88 KB | Source Code | 0 0
  1. // ---------------- jspower module-injector ------------------ \\
  2. /*
  3.  * fetchSync,SyncPromise
  4.  *
  5.  * 2019-09-06
  6.  *
  7.  * By Shmuel Friedman
  8.  * https://github.com/shmuelf/PowerJS
  9.  * Public Domain.
  10.  * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
  11.  */
  12. (function() {
  13.     var jspower = window.jspower = window.jspower || {};
  14.     if (jspower.injector) return;
  15.     jspower.injector = {fetchSync,SyncPromise};
  16.  
  17.     jspower.injector.importSync = url => fetchSync(url)
  18.         .then(text => eval(text), r => console.error(r));
  19.  
  20.     let fetchedUrls = {};
  21.     function fetchSync(url) {
  22.         return fetchedUrls[url] ||
  23.             (   fetchedUrls[url] = new SyncPromise((res,rej)=>{
  24.                     let resp;
  25.                     var oReq = new XMLHttpRequest();
  26.                     //oReq.addEventListener("load", e => res(oReq.responseText));
  27.                     oReq.addEventListener("error", e => rej(oReq.responseText));
  28.                     oReq.open("GET", url, false);
  29.                     oReq.send();
  30.                     if (oReq.responseText)
  31.                         res(oReq.responseText);
  32.                 })
  33.             );
  34.     }
  35.     function SyncPromise(f) {
  36.         let that = this;
  37.         let _cb;
  38.         let _rejcb;
  39.         let resolved;
  40.         let rejected;
  41.         this.then = function(cb,rejcb) {
  42.             _cb = cb;
  43.             _rejcb = rejcb;
  44.             if (resolved !== null && resolved != undefined)
  45.                 return Promise.resolve(_cb(resolved)||resolved);
  46.             else if (rejected !== null && rejected != undefined)
  47.                 return Promise.reject(_rejcb(rejected)||rejected);
  48.             else
  49.                 return Promise.resolve(that);
  50.         };
  51.         let res = (v) => {
  52.             if ((resolved !== null && resolved != undefined) || (rejected !== null && rejected != undefined)) return;
  53.             resolved = v !== null && v != undefined ? v : true;
  54.             if (_cb) _cb(v);
  55.         };
  56.         let rej = (v) => {
  57.             if ((resolved !== null && resolved != undefined) || (rejected !== null && rejected != undefined)) return;
  58.             rejected = v !== null && v != undefined ? v : true;
  59.             if (_rejcb) _rejcb(v);
  60.         };
  61.         /*let ret = */
  62.         f(res, rej);
  63.         return that;
  64.     }
  65.  
  66.     window.imports = jspower.injector.importSync;
  67.     //imports('https://raw.githubusercontent.com/shmuelf/PowerJS/master/src/power-scrapping.js');
  68.     //imports('http://code.jquery.com/jquery-latest.min.js').then(() => window.$$3 = jQuery.noConflict());
  69.     //imports('https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js');
  70.  
  71.     //following one's from Maciej Bukowski at https://stackoverflow.com/a/38700405/6553339
  72.     jspower.injector.importCors = url => fetch(url)
  73.         .then(response => response.text())
  74.         .then(text => eval(text))
  75.         .catch(r => console.error(r));
  76. })();
Tags: snippets
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement