@@ -6,65 +6,34 @@ interface VersionGroup {
66 versions: string [];
77}
88
9- // Fetch and organize versions
10- let response: Response ;
11- if (Astro .params .id ) { // generating nightly docs, skip version fetch
12- // fake response
13- response = {
14- ok: false ,
15- } as Response ;
16- } else {
17- response = await fetch (' https://api.github.com/repos/SkriptLang/Skript/releases?per_page=100' , {
18- headers: {
19- ' Accept' : ' application/vnd.github+json' ,
20- ' X-GitHub-Api-Version' : ' 2022-11-28' ,
21- ' User-Agent' : ' SkriptLang' ,
22- },
9+ const versionPattern = / . *? (\d + \. \d + (?:\. \d + )? ). * / i ;
10+ const allVersions: string [] = (await getCollection (" skriptReleasesJson" ))
11+ .flatMap ((entry : any ) => {
12+ const matches = versionPattern .exec (entry .data .tag_name );
13+ return matches ? [matches [1 ]] : [];
2314 });
24- }
25-
26- let versionGroups: VersionGroup [] = [];
27-
28- if (response .ok ) {
29- const versionPattern = / . *? (\d + \. \d + (?:\. \d + )? ). * / i ;
30- const allVersions: string [] = (await response .json ())
31- .flatMap ((entry : any ) => {
32- const matches = versionPattern .exec (entry .tag_name );
33- return matches ? [matches [1 ]] : [];
34- });
35-
36- const uniqueVersions = [... new Set (allVersions )];
37-
38- // Group by major version (e.g., "2.13")
39- const groupMap = new Map <string , string []>();
40- uniqueVersions .forEach (version => {
41- const parts = version .split (' .' );
42- const major = ` ${parts [0 ]}.${parts [1 ]} ` ;
43- if (! groupMap .has (major )) {
44- groupMap .set (major , []);
45- }
46- groupMap .get (major )! .push (version );
47- });
48-
49- // Convert to array and sort
50- versionGroups = Array .from (groupMap .entries ())
51- .map (([major , versions ]) => ({
52- major ,
53- versions: versions .sort ((a , b ) => b .localeCompare (a , undefined , { numeric: true }))
54- }))
55- .sort ((a , b ) => b .major .localeCompare (a .major , undefined , { numeric: true }));
56- } else {
57- // Fallback
58- const syntaxes: any [] = (await getCollection (" syntaxes" ))
59- .filter (syntax => syntax .id === Astro .params .id || (syntax .id === ' syntaxes' && ! Astro .params .id ))
60- const currentMinor = parseInt (syntaxes [0 ].data .source .version .split (" ." )[1 ]);
61- for (let minor = currentMinor ; minor >= 0 ; minor -- ) {
62- versionGroups .push ({
63- major: ` 2.${minor } ` ,
64- versions: [` 2.${minor } ` ]
65- });
15+ const uniqueVersions = [... new Set (allVersions )];
16+
17+ // Group by major version (e.g., "2.13")
18+ const groupMap = new Map <string , string []>();
19+ uniqueVersions .forEach (version => {
20+ const parts = version .split (' .' );
21+ const major = ` ${parts [0 ]}.${parts [1 ]} ` ;
22+ if (! groupMap .has (major )) {
23+ groupMap .set (major , []);
6624 }
67- }
25+ groupMap .get (major )! .push (version );
26+ });
27+
28+ // Convert to array and sort
29+ let versionGroups: VersionGroup [] = Array .from (groupMap .entries ())
30+ .map (([major , versions ]) => ({
31+ major ,
32+ versions: versions .sort ((a , b ) => b .localeCompare (a , undefined , { numeric: true }))
33+ }))
34+ .sort ((a , b ) => b .major .localeCompare (a .major , undefined , { numeric: true }));
35+ // For older docs (e.g. archives), remove newer versions
36+ versionGroups = versionGroups .slice (versionGroups .findIndex (group => Astro .locals .syntaxesData .version .startsWith (group .major )))
6837
6938const INITIAL_VISIBLE_COUNT = 3 ;
7039---
0 commit comments