kigiri / -import

draft for simple import lib for browser console

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

-import

draft for simple import lib for browser console

var $import = (function () {
  function getJSON(url, cb) {
    var xhr = new XMLHttpRequest();

    xhr.open('get', url, true);
    xhr.responseType = 'json';
    xhr.onload = function() {
      if (xhr.status === 200) {
        cb(xhr.response);
      }
    };
    xhr.send();
  }

  function injectPackage(src) {
    console.log("injecting source from", src);
    var s = document.createElement('script');
    s.src = src;
    document.getElementsByTagName('head')[0].appendChild(s);
  }

  function loadPackage(url) {
    url = url.replace("github", "cdn.rawgit") +"/master/";
    console.log(url);
    getJSON(url +"bower.json", function (packageData) {
      injectPackage(url + packageData.main);
    });
  }

  return function (packageName) {
    getJSON("https://bower-component-list.herokuapp.com", function (bowerData) {
      function importFn(packageName) {
        var i = -1;

        while (++i < bowerData.length) {
          if (bowerData[i].name === packageName) {
            console.log("loading package data...");
            return loadPackage(bowerData[i].website);
          }
        }
        console.log("package", packageName, "not found");
      }
      importFn(packageName);
      $import = importFn;
    });
    return "downloading component list...";
  };
})();

Usage :

$import('lodash');

About

draft for simple import lib for browser console

License:MIT License