Skip to content

Instantly share code, notes, and snippets.

@zoonderkins
Created January 5, 2018 13:12
Show Gist options
  • Save zoonderkins/2c473f72d4ddc7a7627a3d345574212a to your computer and use it in GitHub Desktop.
Save zoonderkins/2c473f72d4ddc7a7627a3d345574212a to your computer and use it in GitHub Desktop.
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
}
})({})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment