|
@@ -59,9 +59,38 @@ async function _getNpmVersions(): Promise<string[]> {
|
|
|
]);
|
|
|
|
|
|
const validVersions = versions.filter((v) => !brokenVersions.has(v));
|
|
|
+
|
|
|
+ validVersions.sort((v1, v2) => -compareSemanticVersions(v1, v2));
|
|
|
+
|
|
|
return validVersions;
|
|
|
}
|
|
|
|
|
|
+function compareSemanticVersions(version1: string, version2: string): number {
|
|
|
+ const v1 = version1.split(/[.]/);
|
|
|
+ const v2 = version2.split(/[.]/);
|
|
|
+ for (let i = 0; i < Math.min(v1.length, v2.length); i++) {
|
|
|
+ const isNumber = /^\d+$/.test(v1[i]) && /^\d+$/.test(v2[i]);
|
|
|
+
|
|
|
+ if (isNumber) {
|
|
|
+ const n1 = parseInt(v1[i]);
|
|
|
+ const n2 = parseInt(v2[i]);
|
|
|
+ if (n1 < n2) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ if (n1 > n2) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const compare = v1[i].localeCompare(v2[i]);
|
|
|
+ if (compare !== 0) {
|
|
|
+ return compare;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return v1.length - v2.length;
|
|
|
+}
|
|
|
+
|
|
|
export async function getVsCodeCommitId(
|
|
|
monacoEditorVersion: string
|
|
|
): Promise<string | undefined> {
|