]> git.proxmox.com Git - mirror_novnc.git/blobdiff - vendor/browser-es-module-loader/src/browser-es-module-loader.js
Remove legacy conversion of modules
[mirror_novnc.git] / vendor / browser-es-module-loader / src / browser-es-module-loader.js
diff --git a/vendor/browser-es-module-loader/src/browser-es-module-loader.js b/vendor/browser-es-module-loader/src/browser-es-module-loader.js
deleted file mode 100644 (file)
index 9e50b8b..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-import RegisterLoader from 'es-module-loader/core/register-loader.js';
-
-import { baseURI, global, isBrowser } from 'es-module-loader/core/common.js';
-import { resolveIfNotPlain } from 'es-module-loader/core/resolve.js';
-
-var loader;
-
-// <script type="module"> support
-var anonSources = {};
-if (typeof document != 'undefined' && document.getElementsByTagName) {
-  var handleError = function(err) {
-    // dispatch an error event so that we can display in errors in browsers
-    // that don't yet support unhandledrejection
-    if (window.onunhandledrejection === undefined) {
-      try {
-        var evt = new Event('error');
-      } catch (_eventError) {
-        var evt = document.createEvent('Event');
-        evt.initEvent('error', true, true);
-      }
-      evt.message = err.message;
-      if (err.fileName) {
-        evt.filename = err.fileName;
-        evt.lineno = err.lineNumber;
-        evt.colno = err.columnNumber;
-      } else if (err.sourceURL) {
-        evt.filename = err.sourceURL;
-        evt.lineno = err.line;
-        evt.colno = err.column;
-      }
-      evt.error = err;
-      window.dispatchEvent(evt);
-    }
-
-    // throw so it still shows up in the console
-    throw err;
-  }
-
-  var ready = function() {
-    document.removeEventListener('DOMContentLoaded', ready, false );
-
-    var anonCnt = 0;
-
-    var scripts = document.getElementsByTagName('script');
-    for (var i = 0; i < scripts.length; i++) {
-      var script = scripts[i];
-      if (script.type == 'module' && !script.loaded) {
-        script.loaded = true;
-        if (script.src) {
-          loader.import(script.src).catch(handleError);
-        }
-        // anonymous modules supported via a custom naming scheme and registry
-        else {
-          var uri = './<anon' + ++anonCnt + '>.js';
-          if (script.id !== ""){
-            uri = "./" + script.id;
-          }
-
-          var anonName = resolveIfNotPlain(uri, baseURI);
-          anonSources[anonName] = script.innerHTML;
-          loader.import(anonName).catch(handleError);
-        }
-      }
-    }
-  }
-
-  // simple DOM ready
-  if (document.readyState !== 'loading')
-    setTimeout(ready);
-  else
-    document.addEventListener('DOMContentLoaded', ready, false);
-}
-
-function BrowserESModuleLoader(baseKey) {
-  if (baseKey)
-    this.baseKey = resolveIfNotPlain(baseKey, baseURI) || resolveIfNotPlain('./' + baseKey, baseURI);
-
-  RegisterLoader.call(this);
-
-  var loader = this;
-
-  // ensure System.register is available
-  global.System = global.System || {};
-  if (typeof global.System.register == 'function')
-    var prevRegister = global.System.register;
-  global.System.register = function() {
-    loader.register.apply(loader, arguments);
-    if (prevRegister)
-      prevRegister.apply(this, arguments);
-  };
-}
-BrowserESModuleLoader.prototype = Object.create(RegisterLoader.prototype);
-
-// normalize is never given a relative name like "./x", that part is already handled
-BrowserESModuleLoader.prototype[RegisterLoader.resolve] = function(key, parent) {
-  var resolved = RegisterLoader.prototype[RegisterLoader.resolve].call(this, key, parent || this.baseKey) || key;
-  if (!resolved)
-    throw new RangeError('ES module loader does not resolve plain module names, resolving "' + key + '" to ' + parent);
-
-  return resolved;
-};
-
-function xhrFetch(url, resolve, reject) {
-  var xhr = new XMLHttpRequest();
-  var load = function(source) {
-    resolve(xhr.responseText);
-  }
-  var error = function() {
-    reject(new Error('XHR error' + (xhr.status ? ' (' + xhr.status + (xhr.statusText ? ' ' + xhr.statusText  : '') + ')' : '') + ' loading ' + url));
-  }
-
-  xhr.onreadystatechange = function () {
-    if (xhr.readyState === 4) {
-      // in Chrome on file:/// URLs, status is 0
-      if (xhr.status == 0) {
-        if (xhr.responseText) {
-          load();
-        }
-        else {
-          // when responseText is empty, wait for load or error event
-          // to inform if it is a 404 or empty file
-          xhr.addEventListener('error', error);
-          xhr.addEventListener('load', load);
-        }
-      }
-      else if (xhr.status === 200) {
-        load();
-      }
-      else {
-        error();
-      }
-    }
-  };
-  xhr.open("GET", url, true);
-  xhr.send(null);
-}
-
-var WorkerPool = function (script, size) {
-  var current = document.currentScript;
-  // IE doesn't support currentScript
-  if (!current) {
-    // Find an entry with out basename
-    var scripts = document.getElementsByTagName('script');
-    for (var i = 0; i < scripts.length; i++) {
-      if (scripts[i].src.indexOf("browser-es-module-loader.js") !== -1) {
-        current = scripts[i];
-        break;
-      }
-    }
-    if (!current)
-      throw Error("Could not find own <script> element");
-  }
-  script = current.src.substr(0, current.src.lastIndexOf("/")) + "/" + script;
-  this._workers = new Array(size);
-  this._ind = 0;
-  this._size = size;
-  this._jobs = 0;
-  this.onmessage = undefined;
-  this._stopTimeout = undefined;
-  for (var i = 0; i < size; i++) {
-    var wrkr = new Worker(script);
-    wrkr._count = 0;
-    wrkr._ind = i;
-    wrkr.onmessage = this._onmessage.bind(this, wrkr);
-    wrkr.onerror = this._onerror.bind(this);
-    this._workers[i] = wrkr;
-  }
-
-  this._checkJobs();
-};
-WorkerPool.prototype = {
-  postMessage: function (msg) {
-    if (this._stopTimeout !== undefined) {
-      clearTimeout(this._stopTimeout);
-      this._stopTimeout = undefined;
-    }
-    var wrkr = this._workers[this._ind % this._size];
-    wrkr._count++;
-    this._jobs++;
-    wrkr.postMessage(msg);
-    this._ind++;
-  },
-
-  _onmessage: function (wrkr, evt) {
-    wrkr._count--;
-    this._jobs--;
-    this.onmessage(evt, wrkr);
-    this._checkJobs();
-  },
-
-  _onerror: function(err) {
-    try {
-        var evt = new Event('error');
-    } catch (_eventError) {
-        var evt = document.createEvent('Event');
-        evt.initEvent('error', true, true);
-    }
-    evt.message = err.message;
-    evt.filename = err.filename;
-    evt.lineno = err.lineno;
-    evt.colno = err.colno;
-    evt.error = err.error;
-    window.dispatchEvent(evt);
-  },
-
-  _checkJobs: function () {
-    if (this._jobs === 0 && this._stopTimeout === undefined) {
-      // wait for 2s of inactivity before stopping (that should be enough for local loading)
-      this._stopTimeout = setTimeout(this._stop.bind(this), 2000);
-    }
-  },
-
-  _stop: function () {
-    this._workers.forEach(function(wrkr) {
-      wrkr.terminate();
-    });
-  }
-};
-
-var promiseMap = new Map();
-var babelWorker = new WorkerPool('babel-worker.js', 3);
-babelWorker.onmessage = function (evt) {
-    var promFuncs = promiseMap.get(evt.data.key);
-    promFuncs.resolve(evt.data);
-    promiseMap.delete(evt.data.key);
-};
-
-// instantiate just needs to run System.register
-// so we fetch the source, convert into the Babel System module format, then evaluate it
-BrowserESModuleLoader.prototype[RegisterLoader.instantiate] = function(key, processAnonRegister) {
-  var loader = this;
-
-  // load as ES with Babel converting into System.register
-  return new Promise(function(resolve, reject) {
-    // anonymous module
-    if (anonSources[key]) {
-      resolve(anonSources[key])
-      anonSources[key] = undefined;
-    }
-    // otherwise we fetch
-    else {
-      xhrFetch(key, resolve, reject);
-    }
-  })
-  .then(function(source) {
-    // check our cache first
-    var cacheEntry = localStorage.getItem(key);
-    if (cacheEntry) {
-      cacheEntry = JSON.parse(cacheEntry);
-      // TODO: store a hash instead
-      if (cacheEntry.source === source) {
-        return Promise.resolve({key: key, code: cacheEntry.code, source: cacheEntry.source});
-      }
-    }
-    return new Promise(function (resolve, reject) {
-      promiseMap.set(key, {resolve: resolve, reject: reject});
-      babelWorker.postMessage({key: key, source: source});
-    });
-  }).then(function (data) {
-    // evaluate without require, exports and module variables
-    // we leave module in for now to allow module.require access
-    try {
-      var cacheEntry = JSON.stringify({source: data.source, code: data.code});
-      localStorage.setItem(key, cacheEntry);
-    } catch (e) {
-      if (window.console) {
-        window.console.warn('Unable to cache transpiled version of ' + key + ': ' + e);
-      }
-    }
-    (0, eval)(data.code + '\n//# sourceURL=' + data.key + '!transpiled');
-    processAnonRegister();
-  });
-};
-
-// create a default loader instance in the browser
-if (isBrowser)
-  loader = new BrowserESModuleLoader();
-
-export default BrowserESModuleLoader;