[skip CI]smart github CDN with custom script
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
const github = (repo) => {
|
||||
const self = {
|
||||
loadScript: (file) => new Promise((resolve, reject) => {
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', `https://raw.githubusercontent.com/${repo}/master/${file}`);
|
||||
xhr.onload = function () {
|
||||
if (xhr.status === 200) {
|
||||
const u = URL.createObjectURL(new Blob([xhr.responseText], {type: 'text/javascript'}));
|
||||
const s = document.createElement('script');
|
||||
s.src = u;
|
||||
s.onload = resolve;
|
||||
s.onerror = reject;
|
||||
document.body.appendChild(s);
|
||||
document.body.removeChild(s);
|
||||
URL.revokeObjectURL(u);
|
||||
} else
|
||||
reject();
|
||||
};
|
||||
xhr.send();
|
||||
}),
|
||||
loadScripts: (...files) => new Promise((resolve, reject) => {
|
||||
if (!files || !files.length)
|
||||
return resolve();
|
||||
self.loadScript(files.splice(0, 1)).then(() => {
|
||||
self.loadScripts(...files).then(resolve);
|
||||
}).catch(reject);
|
||||
})
|
||||
};
|
||||
return self;
|
||||
};
|
||||
Reference in New Issue
Block a user