-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathu1.js
64 lines (56 loc) · 1.79 KB
/
u1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
let cachedRepos = null;
export async function repos(){
if (!cachedRepos) {
cachedRepos = {};
const data = await fetch(import.meta.url + '/../repos.json').then(res=>res.json());
const entries = data.forEach(repo=>{
cachedRepos[repo.name] = repo;
});
}
return cachedRepos;
}
export async function latestUrl(url) {
await repos();
return latestUrlCached(url);
/*
url = new URL(url).toString();
const {repo, before, file} = parseUrl(url);
if (!reps[repo]) return;
let vers = reps[repo].release_latest.tag_name.replace('v','');
return before + repo + '@' + vers + '/' + file;
*/
}
export function latestUrlCached(url) { // messy, but makes it easier
if (!url) return;
url = new URL(url).toString();
const {repo, before, file} = parseUrl(url);
if (!cachedRepos[repo]) {
console.log('Repo "' + repo + '" not found');
//throw new Error('Repo "' + repo + '" not found');
return;
}
let vers = cachedRepos[repo].release_latest.tag_name.replace('v','');
return before + repo + '@' + vers + '/' + file;
}
export function parseUrl(url){
const matches = url.match(/(.+u1ui\/)([^@\/]+)(\@[^\/]+)?\/(.*)/);
if (!matches) return;
const [,before, repo, vers, file] = matches;
return {before, repo, vers, file};
}
/*
export async function importJs(repo, version=''){
repo = repo+'.js';
if (version==='latest') {
const all = await repos();
version = all[repo].release_latest.tag_name.replace('v','');
}
if (version) version = '@' + version;
const url = import.meta.url + '/../../' + repo + version + '/' + repo;
return import(url);
}
var x = await importJs('SelectorObserver');
console.log(x)
var xy = await importJs('dialog');
console.log(xy)
*/