11import { resolve } from "path" ;
22import { readJSON } from "fs-extra" ;
33import { minVersion } from "semver" ;
4+ import { getVersionInformation } from "./util/vscode-versions" ;
45
56const extensionDirectory = resolve ( __dirname , ".." ) ;
67
7- async function fetchJson < T > ( url : string ) : Promise < T > {
8- const response = await fetch ( url ) ;
9- if ( ! response . ok ) {
10- throw new Error (
11- `Could not fetch ${ url } : ${ response . status } ${ response . statusText } ` ,
12- ) ;
13- }
14-
15- return ( await response . json ( ) ) as T ;
16- }
17-
18- type VsCodePackageJson = {
19- devDependencies : {
20- electron : string ;
21- } ;
22- } ;
23-
24- async function getVsCodePackageJson (
25- version : string ,
26- ) : Promise < VsCodePackageJson > {
27- return await fetchJson (
28- `https://raw.githubusercontent.com/microsoft/vscode/${ version } /package.json` ,
29- ) ;
30- }
31-
32- export interface ElectronVersion {
33- version : string ;
34- date : string ;
35- node : string ;
36- v8 : string ;
37- uv : string ;
38- zlib : string ;
39- openssl : string ;
40- modules : string ;
41- chrome : string ;
42- files : string [ ] ;
43- body ?: string ;
44- apm ?: string ;
45- }
46-
47- async function getElectronReleases ( ) : Promise < ElectronVersion [ ] > {
48- return await fetchJson ( "https://releases.electronjs.org/releases.json" ) ;
49- }
50-
518async function findVsCodeVersions ( ) {
529 const packageJson = await readJSON (
5310 resolve ( extensionDirectory , "package.json" ) ,
@@ -58,28 +15,9 @@ async function findVsCodeVersions() {
5815 throw new Error ( "Could not find minimum VS Code version" ) ;
5916 }
6017
61- const vsCodePackageJson = await getVsCodePackageJson ( minimumVsCodeVersion ) ;
62- const electronVersion = minVersion ( vsCodePackageJson . devDependencies . electron )
63- ?. version ;
64- if ( ! electronVersion ) {
65- throw new Error ( "Could not find Electron version" ) ;
66- }
67-
68- console . log (
69- `VS Code ${ minimumVsCodeVersion } uses Electron ${ electronVersion } ` ,
70- ) ;
71-
72- const electronReleases = await getElectronReleases ( ) ;
73-
74- const electronRelease = electronReleases . find (
75- ( release ) => release . version === electronVersion ,
76- ) ;
77- if ( ! electronRelease ) {
78- throw new Error ( `Could not find Electron release ${ electronVersion } ` ) ;
79- }
80-
18+ const versionInformation = await getVersionInformation ( minimumVsCodeVersion ) ;
8119 console . log (
82- `Electron ${ electronRelease . version } uses Node ${ electronRelease . node } and Chromium ${ electronRelease . chrome } ` ,
20+ `VS Code ${ versionInformation . vscodeVersion } uses Electron ${ versionInformation . electronVersion } , Node ${ versionInformation . nodeVersion } and Chromium ${ versionInformation . chromiumVersion } ` ,
8321 ) ;
8422}
8523
0 commit comments