diff --git a/scripts/importTypescript.js b/scripts/importTypescript.js index 722b267bc5..f962d86951 100644 --- a/scripts/importTypescript.js +++ b/scripts/importTypescript.js @@ -5,6 +5,7 @@ const path = require('path'); const fs = require('fs'); +const child_process = require('child_process'); const TYPESCRIPT_LIB_SOURCE = path.join(__dirname, '../node_modules/typescript/lib'); const TYPESCRIPT_LIB_DESTINATION = path.join(__dirname, '../src/lib'); @@ -17,6 +18,14 @@ const TYPESCRIPT_LIB_DESTINATION = path.join(__dirname, '../src/lib'); } importLibs(); + const npmLsOutput = JSON.parse(child_process.execSync("npm ls typescript --depth=0 --json=true").toString()); + const typeScriptDependencyVersion = npmLsOutput.dependencies.typescript.version; + + fs.writeFileSync( + path.join(TYPESCRIPT_LIB_DESTINATION, 'typescriptServicesMetadata.ts'), + `export const typescriptVersion = "${typeScriptDependencyVersion}";\n` + ); + var tsServices = fs.readFileSync(path.join(TYPESCRIPT_LIB_SOURCE, 'typescriptServices.js')).toString(); // Ensure we never run into the node system... diff --git a/src/lib/typescriptServicesMetadata.ts b/src/lib/typescriptServicesMetadata.ts new file mode 100644 index 0000000000..433e642ee7 --- /dev/null +++ b/src/lib/typescriptServicesMetadata.ts @@ -0,0 +1 @@ +export const typescriptVersion = "3.5.1"; diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 62da8db94c..a5d9f1a68f 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -5,6 +5,7 @@ 'use strict'; import * as mode from './tsMode'; +import { typescriptVersion } from './lib/typescriptServicesMetadata'; // do not import the whole typescriptServices here import Emitter = monaco.Emitter; import IEvent = monaco.IEvent; @@ -204,6 +205,7 @@ function createAPI(): typeof monaco.languages.typescript { NewLineKind: NewLineKind, ScriptTarget: ScriptTarget, ModuleResolutionKind: ModuleResolutionKind, + typescriptVersion, typescriptDefaults: typescriptDefaults, javascriptDefaults: javascriptDefaults, getTypeScriptWorker: getTypeScriptWorker, diff --git a/src/monaco.d.ts b/src/monaco.d.ts index 2a3bab0c97..59fc8e1cd6 100644 --- a/src/monaco.d.ts +++ b/src/monaco.d.ts @@ -166,6 +166,8 @@ declare module monaco.languages.typescript { setEagerModelSync(value: boolean): void; } + export var typescriptVersion: string; + export var typescriptDefaults: LanguageServiceDefaults; export var javascriptDefaults: LanguageServiceDefaults;