Skip to content

Commit b315d32

Browse files
committed
extract develop util functions into different file
1 parent 40d036c commit b315d32

3 files changed

Lines changed: 128 additions & 120 deletions

File tree

public/develop.js

Lines changed: 11 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,15 @@
1-
(async () => {
2-
3-
const URL = "ornithemc.net";
4-
const META = "meta." + URL;
5-
const VERSION = "v3";
6-
7-
8-
function makeMetaUrl(...pathComponents) {
9-
let url = META + "/" + VERSION;
10-
for (const pathComponent of pathComponents) {
11-
url += "/";
12-
url += pathComponent;
13-
}
14-
return "https://" + url;
15-
}
16-
17-
async function getFromMeta(...pathComponents) {
18-
const response = await fetch(makeMetaUrl(...pathComponents));
19-
return response.json();
20-
}
21-
22-
async function getMinecraftVersionsMeta() {
23-
return await getFromMeta("versions", "game");
24-
}
25-
26-
async function getFeatherVersionMeta(mcVersion) {
27-
return await getFromMeta("versions", "feather", mcVersion);
28-
}
29-
30-
async function getRavenVersionMeta(mcVersion) {
31-
return await getFromMeta("versions", "raven", mcVersion);
32-
}
33-
34-
async function getSparrowVersionMeta(mcVersion) {
35-
return await getFromMeta("versions", "sparrow", mcVersion);
36-
}
37-
38-
async function getNestsVersionMeta(mcVersion) {
39-
return await getFromMeta("versions", "nests", mcVersion);
40-
}
41-
42-
async function getLoaderVersionsMeta(loader) {
43-
return await getFromMeta("versions", loader + "-loader");
44-
}
45-
46-
async function getOslVersionsMeta() {
47-
return await getFromMeta("versions", "osl");
48-
}
49-
50-
function compareVersion(sv1, sv2) {
51-
function rec(v1, v2) {
52-
if (v1.length === 0 && v2.length === 0) return 0;
53-
if (v1.length === 0) return 1;
54-
if (v2.length === 0) return -1;
55-
const [head1, ...tail1] = v1;
56-
const [head2, ...tail2] = v2;
57-
const ih1 = parseInt(head1);
58-
const ih2 = parseInt(head2);
59-
if (ih1 < ih2) return 1;
60-
if (ih1 > ih2) return -1;
61-
return rec(tail1, tail2);
62-
}
63-
64-
return rec(sv1.split("."), sv2.split("."));
65-
}
66-
67-
async function getMinecraftVersions() {
68-
return await getMinecraftVersionsMeta()
69-
.then(l => l.map(v => v.version));
70-
}
71-
72-
async function getMinecraftStableVersions() {
73-
return await getMinecraftVersionsMeta()
74-
.then(l => l.filter(v => v.stable))
75-
.then(l => l.map(v => v.version));
76-
}
77-
78-
async function getLatestFeatherBuild(mcVersion) {
79-
return await getFeatherVersionMeta(mcVersion)
80-
.then(l => l.sort((e1, e2) => e2.build - e1.build))
81-
.then(s => { console.log(s); return s; })
82-
.then(([head, ..._]) => head)
83-
.then(e => e !== undefined ? e.build : null);
84-
}
85-
86-
async function getLatestRavenBuild(mcVersion) {
87-
return await getRavenVersionMeta(mcVersion)
88-
.then(l => l.sort((e1, e2) => e2.build - e1.build))
89-
.then(([head, ..._]) => head)
90-
.then(e => e !== undefined ? e.build : null);
91-
}
92-
93-
async function getLatestSparrowBuild(mcVersion) {
94-
return await getSparrowVersionMeta(mcVersion)
95-
.then(l => l.sort((e1, e2) => e2.build - e1.build))
96-
.then(([head, ..._]) => head)
97-
.then(e => e !== undefined ? e.build : null);
98-
}
99-
100-
async function getLatestNestsBuild(mcVersion) {
101-
return await getNestsVersionMeta(mcVersion)
102-
.then(l => l.sort((e1, e2) => e2.build - e1.build))
103-
.then(([head, ..._]) => head)
104-
.then(e => e !== undefined ? e.build : null);
105-
}
106-
107-
async function getLatestLoader(loader) {
108-
return await getLoaderVersionsMeta(loader)
109-
.then(l => l.filter(e => e.stable))
110-
.then(([head, ..._]) => head)
111-
.then(e => e.version);
112-
}
113-
114-
async function getLatestOsl() {
115-
return await getOslVersionsMeta()
116-
.then(l => l.sort((e1, e2) => compareVersion(e1.version, e2.version)))
117-
.then(([head, ..._]) => head)
118-
.then(e => e.version);
119-
}
1+
import {
2+
getMinecraftStableVersions,
3+
getMinecraftVersions,
4+
getLatestLoader,
5+
getLatestOsl,
6+
getLatestFeatherBuild,
7+
getLatestRavenBuild,
8+
getLatestSparrowBuild,
9+
getLatestNestsBuild
10+
} from "./meta_maven_utils.js";
12011

12+
(async () => {
12113
const minecraftStableVersions = await getMinecraftStableVersions();
12214
const minecraftAllVersions = await getMinecraftVersions();
12315

public/meta_maven_utils.js

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
const URL = "ornithemc.net";
2+
const META = "meta." + URL;
3+
const VERSION = "v3";
4+
5+
function makeMetaUrl(...pathComponents) {
6+
let url = META + "/" + VERSION;
7+
for (const pathComponent of pathComponents) {
8+
url += "/";
9+
url += pathComponent;
10+
}
11+
return "https://" + url;
12+
}
13+
14+
async function getFromMeta(...pathComponents) {
15+
const response = await fetch(makeMetaUrl(...pathComponents));
16+
return response.json();
17+
}
18+
19+
async function getMinecraftVersionsMeta() {
20+
return await getFromMeta("versions", "game");
21+
}
22+
23+
async function getFeatherVersionMeta(mcVersion) {
24+
return await getFromMeta("versions", "feather", mcVersion);
25+
}
26+
27+
async function getRavenVersionMeta(mcVersion) {
28+
return await getFromMeta("versions", "raven", mcVersion);
29+
}
30+
31+
async function getSparrowVersionMeta(mcVersion) {
32+
return await getFromMeta("versions", "sparrow", mcVersion);
33+
}
34+
35+
async function getNestsVersionMeta(mcVersion) {
36+
return await getFromMeta("versions", "nests", mcVersion);
37+
}
38+
39+
async function getLoaderVersionsMeta(loader) {
40+
return await getFromMeta("versions", loader + "-loader");
41+
}
42+
43+
async function getOslVersionsMeta() {
44+
return await getFromMeta("versions", "osl");
45+
}
46+
47+
function compareVersion(sv1, sv2) {
48+
function rec(v1, v2) {
49+
if (v1.length === 0 && v2.length === 0) return 0;
50+
if (v1.length === 0) return 1;
51+
if (v2.length === 0) return -1;
52+
const [head1, ...tail1] = v1;
53+
const [head2, ...tail2] = v2;
54+
const ih1 = parseInt(head1);
55+
const ih2 = parseInt(head2);
56+
if (ih1 < ih2) return 1;
57+
if (ih1 > ih2) return -1;
58+
return rec(tail1, tail2);
59+
}
60+
61+
return rec(sv1.split("."), sv2.split("."));
62+
}
63+
64+
export async function getMinecraftVersions() {
65+
return await getMinecraftVersionsMeta()
66+
.then(l => l.map(v => v.version));
67+
}
68+
69+
export async function getMinecraftStableVersions() {
70+
return await getMinecraftVersionsMeta()
71+
.then(l => l.filter(v => v.stable))
72+
.then(l => l.map(v => v.version));
73+
}
74+
75+
export async function getLatestFeatherBuild(mcVersion) {
76+
return await getFeatherVersionMeta(mcVersion)
77+
.then(l => l.sort((e1, e2) => e2.build - e1.build))
78+
.then(s => { console.log(s); return s; })
79+
.then(([head, ..._]) => head)
80+
.then(e => e !== undefined ? e.build : null);
81+
}
82+
83+
export async function getLatestRavenBuild(mcVersion) {
84+
return await getRavenVersionMeta(mcVersion)
85+
.then(l => l.sort((e1, e2) => e2.build - e1.build))
86+
.then(([head, ..._]) => head)
87+
.then(e => e !== undefined ? e.build : null);
88+
}
89+
90+
export async function getLatestSparrowBuild(mcVersion) {
91+
return await getSparrowVersionMeta(mcVersion)
92+
.then(l => l.sort((e1, e2) => e2.build - e1.build))
93+
.then(([head, ..._]) => head)
94+
.then(e => e !== undefined ? e.build : null);
95+
}
96+
97+
export async function getLatestNestsBuild(mcVersion) {
98+
return await getNestsVersionMeta(mcVersion)
99+
.then(l => l.sort((e1, e2) => e2.build - e1.build))
100+
.then(([head, ..._]) => head)
101+
.then(e => e !== undefined ? e.build : null);
102+
}
103+
104+
export async function getLatestLoader(loader) {
105+
return await getLoaderVersionsMeta(loader)
106+
.then(l => l.filter(e => e.stable))
107+
.then(([head, ..._]) => head)
108+
.then(e => e.version);
109+
}
110+
111+
export async function getLatestOsl() {
112+
return await getOslVersionsMeta()
113+
.then(l => l.sort((e1, e2) => compareVersion(e1.version, e2.version)))
114+
.then(([head, ..._]) => head)
115+
.then(e => e.version);
116+
}

src/pages/develop.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import Layout from "../layouts/Layout.astro";
33
---
44

5-
<script src="/develop.js" defer></script>
5+
<script type="module" src="/develop.js" defer></script>
66

77
<Layout title="Develop - OrnitheMC">
88
<main class="flex flex-col gap-4">

0 commit comments

Comments
 (0)