Created
January 5, 2018 13:12
-
-
Save zoonderkins/2c473f72d4ddc7a7627a3d345574212a to your computer and use it in GitHub Desktop.
requirejs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
})({}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment