11/// <reference path="../harness.ts" />
22/// <reference path="./tsserverProjectSystem.ts" />
33/// <reference path="../../server/typingsInstaller/typingsInstaller.ts" />
4+ /// <reference path="../../services/semver.ts" />
45
56namespace ts . projectSystem {
67 import TI = server . typingsInstaller ;
@@ -10,13 +11,24 @@ namespace ts.projectSystem {
1011 interface InstallerParams {
1112 globalTypingsCacheLocation ?: string ;
1213 throttleLimit ?: number ;
13- typesRegistry ?: Map < void > ;
14+ typesRegistry ?: Map < MapLike < string > > ;
1415 }
1516
16- function createTypesRegistry ( ...list : string [ ] ) : Map < void > {
17- const map = createMap < void > ( ) ;
17+ function createTypesRegistry ( ...list : string [ ] ) : Map < MapLike < string > > {
18+ const versionMap = {
19+ "latest" : "1.3.0" ,
20+ "ts2.0" : "1.0.0" ,
21+ "ts2.1" : "1.0.0" ,
22+ "ts2.2" : "1.2.0" ,
23+ "ts2.3" : "1.3.0" ,
24+ "ts2.4" : "1.3.0" ,
25+ "ts2.5" : "1.3.0" ,
26+ "ts2.6" : "1.3.0" ,
27+ "ts2.7" : "1.3.0"
28+ } ;
29+ const map = createMap < MapLike < string > > ( ) ;
1830 for ( const l of list ) {
19- map . set ( l , undefined ) ;
31+ map . set ( l , versionMap ) ;
2032 }
2133 return map ;
2234 }
@@ -51,7 +63,7 @@ namespace ts.projectSystem {
5163 const logs : string [ ] = [ ] ;
5264 return {
5365 log ( message ) {
54- logs . push ( message ) ;
66+ logs . push ( message ) ;
5567 } ,
5668 finish ( ) {
5769 return logs ;
@@ -1149,15 +1161,25 @@ namespace ts.projectSystem {
11491161 "types-registry" : "^0.1.317"
11501162 } ,
11511163 devDependencies : {
1152- "@types/jquery" : "^3.2.16"
1164+ "@types/jquery" : "^1.3.0"
1165+ }
1166+ } )
1167+ } ;
1168+ const cacheLockConfig = {
1169+ path : "/a/data/package-lock.json" ,
1170+ content : JSON . stringify ( {
1171+ dependencies : {
1172+ "@types/jquery" : {
1173+ version : "1.3.0"
1174+ }
11531175 }
11541176 } )
11551177 } ;
11561178 const jquery = {
11571179 path : "/a/data/node_modules/@types/jquery/index.d.ts" ,
11581180 content : "declare const $: { x: number }"
11591181 } ;
1160- const host = createServerHost ( [ file1 , packageJson , timestamps , cacheConfig , jquery ] ) ;
1182+ const host = createServerHost ( [ file1 , packageJson , timestamps , cacheConfig , cacheLockConfig , jquery ] ) ;
11611183 const installer = new ( class extends Installer {
11621184 constructor ( ) {
11631185 super ( host , { typesRegistry : createTypesRegistry ( "jquery" ) } ) ;
@@ -1299,7 +1321,7 @@ namespace ts.projectSystem {
12991321 content : ""
13001322 } ;
13011323 const host = createServerHost ( [ f , node ] ) ;
1302- const cache = createMapFromTemplate < JsTyping . CachedTyping > ( { node : { typingLocation : node . path , timestamp : Date . now ( ) } } ) ;
1324+ const cache = createMapFromTemplate < JsTyping . CachedTyping > ( { node : { typingLocation : node . path , timestamp : Date . now ( ) , version : new Semver ( 1 , 0 , 0 , /*isPrerelease*/ false ) } } ) ;
13031325 const logger = trackingLogger ( ) ;
13041326 const result = JsTyping . discoverTypings ( host , logger . log , [ f . path ] , getDirectoryPath ( < Path > f . path ) , emptySafeList , cache , { enable : true } , [ "fs" , "bar" ] ) ;
13051327 assert . deepEqual ( logger . finish ( ) , [
@@ -1359,8 +1381,8 @@ namespace ts.projectSystem {
13591381 } ;
13601382 const host = createServerHost ( [ app ] ) ;
13611383 const cache = createMapFromTemplate < JsTyping . CachedTyping > ( {
1362- node : { typingLocation : node . path , timestamp : Date . now ( ) } ,
1363- commander : { typingLocation : commander . path , timestamp : date . getTime ( ) }
1384+ node : { typingLocation : node . path , timestamp : Date . now ( ) , version : new Semver ( 1 , 0 , 0 , /*isPrerelease*/ false ) } ,
1385+ commander : { typingLocation : commander . path , timestamp : date . getTime ( ) , version : new Semver ( 1 , 0 , 0 , /*isPrerelease*/ false ) }
13641386 } ) ;
13651387 const logger = trackingLogger ( ) ;
13661388 const result = JsTyping . discoverTypings ( host , logger . log , [ app . path ] , getDirectoryPath ( < Path > app . path ) , emptySafeList , cache , { enable : true } , [ "http" , "commander" ] ) ;
@@ -1433,12 +1455,22 @@ namespace ts.projectSystem {
14331455 path : "/a/package.json" ,
14341456 content : JSON . stringify ( { dependencies : { commander : "1.0.0" } } )
14351457 } ;
1458+ const packageLockFile = {
1459+ path : "/a/cache/package-lock.json" ,
1460+ content : JSON . stringify ( {
1461+ dependencies : {
1462+ "@types/commander" : {
1463+ version : "1.0.0"
1464+ }
1465+ }
1466+ } )
1467+ } ;
14361468 const cachePath = "/a/cache/" ;
14371469 const commander = {
14381470 path : cachePath + "node_modules/@types/commander/index.d.ts" ,
14391471 content : "export let x: number"
14401472 } ;
1441- const host = createServerHost ( [ f1 , packageFile ] ) ;
1473+ const host = createServerHost ( [ f1 , packageFile , packageLockFile ] ) ;
14421474 let beginEvent : server . BeginInstallTypes ;
14431475 let endEvent : server . EndInstallTypes ;
14441476 const installer = new ( class extends Installer {
0 commit comments