@@ -3,6 +3,7 @@ import * as fs from 'fs'
33import * as crypto from 'crypto'
44import * as path from 'path'
55import * as os from 'os'
6+ import * as semver from 'semver'
67import AdmZip from 'adm-zip'
78
89interface ManifestContent {
@@ -54,21 +55,6 @@ async function ensureDirectoryExists(dirPath: string): Promise<void> {
5455 }
5556}
5657
57- function compareVersions ( v1 : string , v2 : string ) : number {
58- const parts1 = v1 . split ( '.' ) . map ( Number )
59- const parts2 = v2 . split ( '.' ) . map ( Number )
60-
61- for ( let i = 0 ; i < Math . max ( parts1 . length , parts2 . length ) ; i ++ ) {
62- const part1 = parts1 [ i ] || 0
63- const part2 = parts2 [ i ] || 0
64-
65- if ( part1 > part2 ) return 1
66- if ( part1 < part2 ) return - 1
67- }
68-
69- return 0
70- }
71-
7258export async function downloadLanguageServer ( ) : Promise < void > {
7359 const tempDir = path . join ( os . tmpdir ( ) , 'amazonq-download-temp' )
7460 const resourcesDir = path . join ( __dirname , '../packages/amazonq/resources/language-server' )
@@ -102,7 +88,7 @@ export async function downloadLanguageServer(): Promise<void> {
10288
10389 const latestVersion = manifest . versions
10490 . filter ( ( v ) => ! v . isDelisted )
105- . sort ( ( a , b ) => compareVersions ( b . serverVersion , a . serverVersion ) ) [ 0 ]
91+ . sort ( ( a , b ) => semver . compare ( b . serverVersion , a . serverVersion ) ) [ 0 ]
10692
10793 if ( ! latestVersion ) {
10894 throw new Error ( 'No valid version found in manifest' )
0 commit comments