1
1
'use server' ;
2
2
3
3
type Assets = {
4
+ '1215' : null | React . ReactElement ;
4
5
'1211' : null | React . ReactElement ;
5
6
'121' : null | React . ReactElement ;
6
7
'1206' : null | React . ReactElement ;
7
- '1205' : null | React . ReactElement ;
8
8
'1204' : null | React . ReactElement ;
9
- '1203' : null | React . ReactElement ;
10
9
'1202' : null | React . ReactElement ;
11
10
'1201' : null | React . ReactElement ;
12
11
'120' : null | React . ReactElement ;
13
12
'1194' : null | React . ReactElement ;
14
- '1193' : null | React . ReactElement ;
15
- '1192' : null | React . ReactElement ;
16
- '1191' : null | React . ReactElement ;
17
- '119' : null | React . ReactElement ;
18
13
} ;
19
14
20
15
// Releases are fetched and stripped to nearly the first 15 releases because
21
16
// the first few releases meet our format requirements so can be
22
17
// easy to parse.
18
+ // these versions, overall, only support these versions: 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.4, 1.20.6, 1.21, 1.21.5
23
19
export async function getReleases ( total : number = 30 ) {
24
20
try {
25
21
const headers = process . env . GITHUB_PAT
@@ -30,10 +26,14 @@ export async function getReleases(total: number = 30) {
30
26
{ method : 'GET' , headers, next : { revalidate : 300 } } ,
31
27
) ;
32
28
const releases = await response . json ( ) ;
33
- return releases . slice (
34
- 0 ,
35
- releases . findIndex ( ( r : any ) => r . name === 'Release 1.20.2-1.1.4' ) ,
29
+ const fixedReleases = releases . map ( ( r : any ) =>
30
+ r . name === 'Release 1.2' ? { ...r , name : 'Release 1.2.0' } : r ,
36
31
) ;
32
+ return fixedReleases ;
33
+ // return fixedReleases.slice(
34
+ // 0,
35
+ // fixedReleases.findIndex((r: any) => r.name === 'Release 1.20.2-1.1.4'),
36
+ // );
37
37
} catch {
38
38
throw new Error ( 'Failed to fetch from API' ) ;
39
39
}
@@ -84,20 +84,15 @@ export async function getParsedReleases() {
84
84
85
85
let downloads = 0 ;
86
86
let assetsData : Assets = {
87
+ '1215' : null ,
87
88
'1211' : null ,
88
89
'121' : null ,
89
90
'1206' : null ,
90
- '1205' : null ,
91
91
'1204' : null ,
92
- '1203' : null ,
93
92
'1202' : null ,
94
93
'1201' : null ,
95
94
'120' : null ,
96
95
'1194' : null ,
97
- '1193' : null ,
98
- '1192' : null ,
99
- '1191' : null ,
100
- '119' : null ,
101
96
} ;
102
97
103
98
release . assets . forEach ( ( asset : any ) => {
@@ -106,18 +101,16 @@ export async function getParsedReleases() {
106
101
let assetName = asset . name ;
107
102
let assetURL = asset . browser_download_url ;
108
103
109
- if ( assetName . includes ( '1.21.1' ) ) {
104
+ if ( assetName . includes ( '1.21.5' ) ) {
105
+ assetsData [ '1215' ] = assetURL ;
106
+ } else if ( assetName . includes ( '1.21.1' ) ) {
110
107
assetsData [ '1211' ] = assetURL ;
111
108
} else if ( assetName . includes ( '1.21' ) ) {
112
109
assetsData [ '121' ] = assetURL ;
113
110
} else if ( assetName . includes ( '1.20.6' ) ) {
114
111
assetsData [ '1206' ] = assetURL ;
115
- } else if ( assetName . includes ( '1.20.5' ) ) {
116
- assetsData [ '1205' ] = assetURL ;
117
112
} else if ( assetName . includes ( '1.20.4' ) ) {
118
113
assetsData [ '1204' ] = assetURL ;
119
- } else if ( assetName . includes ( '1.20.3' ) ) {
120
- assetsData [ '1203' ] = assetURL ;
121
114
} else if ( assetName . includes ( '1.20.2' ) ) {
122
115
assetsData [ '1202' ] = assetURL ;
123
116
} else if ( assetName . includes ( '1.20.1' ) ) {
@@ -126,14 +119,6 @@ export async function getParsedReleases() {
126
119
assetsData [ '120' ] = assetURL ;
127
120
} else if ( assetName . includes ( '1.19.4' ) ) {
128
121
assetsData [ '1194' ] = assetURL ;
129
- } else if ( assetName . includes ( '1.19.3' ) ) {
130
- assetsData [ '1193' ] = assetURL ;
131
- } else if ( assetName . includes ( '1.19.2' ) ) {
132
- assetsData [ '1192' ] = assetURL ;
133
- } else if ( assetName . includes ( '1.19.1' ) ) {
134
- assetsData [ '1191' ] = assetURL ;
135
- } else if ( assetName . includes ( '1.19' ) ) {
136
- assetsData [ '119' ] = assetURL ;
137
122
}
138
123
} ) ;
139
124
@@ -147,14 +132,22 @@ export async function getParsedReleases() {
147
132
148
133
const mappings = await getCCMappings ( ) ;
149
134
150
- Object . entries ( mappings ) . forEach ( ( [ key , value ] : any ) => {
151
- const version = key . replaceAll ( '.' , '' ) ;
152
- const mappedVersion =
153
- typeof value === 'string' ? value . replaceAll ( '.' , '' ) : null ;
154
-
155
- if ( mappedVersion !== null && mappings [ version ] !== mappedVersion ) {
156
- parsedReleases [ 0 ] [ version ] = parsedReleases [ 0 ] [ mappedVersion ] ;
157
- }
135
+ Object . entries ( mappings ) . forEach ( ( [ versionKey , mappedVersion ] ) => {
136
+ const key = versionKey . replaceAll ( '.' , '' ) ;
137
+ const mappedKey =
138
+ typeof mappedVersion === 'string'
139
+ ? mappedVersion . replaceAll ( '.' , '' )
140
+ : null ;
141
+
142
+ parsedReleases . forEach ( ( release : any ) => {
143
+ if ( mappedKey && release [ mappedKey ] && ! release [ key ] ) {
144
+ // Copy the download URL from the mapped version
145
+ release [ key ] = release [ mappedKey ] ;
146
+ } else if ( ! mappedKey ) {
147
+ // If not mapped (null), ensure it's explicitly set to null
148
+ release [ key ] = null ;
149
+ }
150
+ } ) ;
158
151
} ) ;
159
152
160
153
return parsedReleases ;
0 commit comments