edoo
1/5/2018 - 1:12 PM

requirejs

requirejs

window.require = (function (modules) {
  var wzrd_URL = 'https://wzrd.in/multi'
  function init (name, _module) {
    var se = document.createElement('script')
    var module = JSON.parse(_module)[name]
    var isJSON = (name.split('.').pop()||'').toUpperCase() === 'JSON'
    if (module.package.version === '---') {
      if (isJSON) {
        se.text = `;(function (module) { module.exports = ${module.bundle} })(window.module);`
      } else {
        se.text = `;(function (module) { ${module.bundle} })(window.module);`
      }
    } else {
      se.text = module.bundle
    }
    if (window.module) var oldModule = window.module
    window.module = {}
    document.head.appendChild(se)
    document.head.removeChild(se)
    if (window.require !== require) {
      module.exports = window.require(name)
      window.require = require
    } else {
      module.exports = window.module.exports
    }
    if (oldModule) window.module = oldModule
    else delete window.module
    return modules[name] = module
  }
  function require (name, version) {
    if (name[0] === '.' || name[0] === '/') var _name = new URL(name, window.location.href).href
    var realname = (_name || name)
    var module = modules[realname]
    if (module) {
      if (version) console.error(`using cached version "${module.package.version}" of "${realname}"`)
      return module.exports
    }
    version = version || 'latest'
    var modulename = `${realname}@${version}:${location.host}`
    var _module = localStorage[modulename]
    if (version === 'latest' && _module && !(require.RELOAD && _name)) {
       var module = JSON.parse(_module)[realname]
       var oldstamp = module.timestamp
       var newstamp = +new Date()
       var age = (newstamp - oldstamp) / (1000*3600)
       if (age > 24) _module = module = null // cache for one day
       else return init(realname, _module).exports
    }
    if (!_module || (require.RELOAD && _name)) {
      var module, _module
      if (_name) {
        _module = ajax(_name)
        module = { [_name]: { package: { version: '---' }, bundle: _module } }
      }
      else {
        _module = wzrd(JSON.stringify({ dependencies: { [name]: version } }))
        module = JSON.parse(_module)
      }
      module[realname].timestamp = +new Date()
      _module = JSON.stringify(module)
      localStorage[modulename] = _module
      if (version === 'latest') {
        version = module[realname].package.version
        modulename = `${realname}@${version}:${location.host}`
        localStorage[modulename] = _module
      }
      console.log(`caching version "${version}" of "${realname}" for one day`)
    }
    return init(realname, _module).exports
  }
  require.cache = modules
  return require
  function ajax (url) {
    var xhr = new XMLHttpRequest()
    xhr.open('GET', `${url}?${Math.random()}`, false)
    xhr.send()
    return xhr.responseText
  }
  function wzrd (json) {
    var xhr = new XMLHttpRequest()
    xhr.open('POST', wzrd_URL, false)
    xhr.send(json)
    return xhr.responseText
  }
})({})