1
1
namespace ts . projectSystem {
2
2
import validatePackageName = JsTyping . validatePackageName ;
3
- import PackageNameValidationResult = JsTyping . PackageNameValidationResult ;
3
+ import NameValidationResult = JsTyping . NameValidationResult ;
4
4
5
5
interface InstallerParams {
6
6
globalTypingsCacheLocation ?: string ;
@@ -948,7 +948,8 @@ namespace ts.projectSystem {
948
948
path : "/a/b/app.js" ,
949
949
content : `
950
950
import * as fs from "fs";
951
- import * as commander from "commander";`
951
+ import * as commander from "commander";
952
+ import * as component from "@ember/component";`
952
953
} ;
953
954
const cachePath = "/a/cache" ;
954
955
const node = {
@@ -959,14 +960,19 @@ namespace ts.projectSystem {
959
960
path : cachePath + "/node_modules/@types/commander/index.d.ts" ,
960
961
content : "export let y: string"
961
962
} ;
963
+ const emberComponentDirectory = "ember__component" ;
964
+ const emberComponent = {
965
+ path : `${ cachePath } /node_modules/@types/${ emberComponentDirectory } /index.d.ts` ,
966
+ content : "export let x: number"
967
+ } ;
962
968
const host = createServerHost ( [ file ] ) ;
963
969
const installer = new ( class extends Installer {
964
970
constructor ( ) {
965
971
super ( host , { globalTypingsCacheLocation : cachePath , typesRegistry : createTypesRegistry ( "node" , "commander" ) } ) ;
966
972
}
967
973
installWorker ( _requestId : number , _args : string [ ] , _cwd : string , cb : TI . RequestCompletedAction ) {
968
- const installedTypings = [ "@types/node" , "@types/commander" ] ;
969
- const typingFiles = [ node , commander ] ;
974
+ const installedTypings = [ "@types/node" , "@types/commander" , `@types/ ${ emberComponentDirectory } ` ] ;
975
+ const typingFiles = [ node , commander , emberComponent ] ;
970
976
executeCommand ( this , host , installedTypings , typingFiles , cb ) ;
971
977
}
972
978
} ) ( ) ;
@@ -980,9 +986,10 @@ namespace ts.projectSystem {
980
986
981
987
assert . isTrue ( host . fileExists ( node . path ) , "typings for 'node' should be created" ) ;
982
988
assert . isTrue ( host . fileExists ( commander . path ) , "typings for 'commander' should be created" ) ;
989
+ assert . isTrue ( host . fileExists ( emberComponent . path ) , "typings for 'commander' should be created" ) ;
983
990
984
991
host . checkTimeoutQueueLengthAndRun ( 2 ) ;
985
- checkProjectActualFiles ( service . inferredProjects [ 0 ] , [ file . path , node . path , commander . path ] ) ;
992
+ checkProjectActualFiles ( service . inferredProjects [ 0 ] , [ file . path , node . path , commander . path , emberComponent . path ] ) ;
986
993
} ) ;
987
994
988
995
it ( "should redo resolution that resolved to '.js' file after typings are installed" , ( ) => {
@@ -1263,21 +1270,44 @@ namespace ts.projectSystem {
1263
1270
for ( let i = 0 ; i < 8 ; i ++ ) {
1264
1271
packageName += packageName ;
1265
1272
}
1266
- assert . equal ( validatePackageName ( packageName ) , PackageNameValidationResult . NameTooLong ) ;
1273
+ assert . equal ( validatePackageName ( packageName ) , NameValidationResult . NameTooLong ) ;
1274
+ } ) ;
1275
+ it ( "package name cannot start with dot" , ( ) => {
1276
+ assert . equal ( validatePackageName ( ".foo" ) , NameValidationResult . NameStartsWithDot ) ;
1277
+ } ) ;
1278
+ it ( "package name cannot start with underscore" , ( ) => {
1279
+ assert . equal ( validatePackageName ( "_foo" ) , NameValidationResult . NameStartsWithUnderscore ) ;
1280
+ } ) ;
1281
+ it ( "package non URI safe characters are not supported" , ( ) => {
1282
+ assert . equal ( validatePackageName ( " scope " ) , NameValidationResult . NameContainsNonURISafeCharacters ) ;
1283
+ assert . equal ( validatePackageName ( "; say ‘Hello from TypeScript!’ #" ) , NameValidationResult . NameContainsNonURISafeCharacters ) ;
1284
+ assert . equal ( validatePackageName ( "a/b/c" ) , NameValidationResult . NameContainsNonURISafeCharacters ) ;
1285
+ } ) ;
1286
+ it ( "scoped package name is supported" , ( ) => {
1287
+ assert . equal ( validatePackageName ( "@scope/bar" ) , NameValidationResult . Ok ) ;
1288
+ } ) ;
1289
+ it ( "scoped name in scoped package name cannot start with dot" , ( ) => {
1290
+ assert . deepEqual ( validatePackageName ( "@.scope/bar" ) , { name : ".scope" , isScopeName : true , result : NameValidationResult . NameStartsWithDot } ) ;
1291
+ assert . deepEqual ( validatePackageName ( "@.scope/.bar" ) , { name : ".scope" , isScopeName : true , result : NameValidationResult . NameStartsWithDot } ) ;
1292
+ } ) ;
1293
+ it ( "scope name in scoped package name cannot start with underscore" , ( ) => {
1294
+ assert . deepEqual ( validatePackageName ( "@_scope/bar" ) , { name : "_scope" , isScopeName : true , result : NameValidationResult . NameStartsWithUnderscore } ) ;
1295
+ assert . deepEqual ( validatePackageName ( "@_scope/_bar" ) , { name : "_scope" , isScopeName : true , result : NameValidationResult . NameStartsWithUnderscore } ) ;
1267
1296
} ) ;
1268
- it ( "name cannot start with dot" , ( ) => {
1269
- assert . equal ( validatePackageName ( ".foo" ) , PackageNameValidationResult . NameStartsWithDot ) ;
1297
+ it ( "scope name in scoped package name with non URI safe characters are not supported" , ( ) => {
1298
+ assert . deepEqual ( validatePackageName ( "@ scope /bar" ) , { name : " scope " , isScopeName : true , result : NameValidationResult . NameContainsNonURISafeCharacters } ) ;
1299
+ assert . deepEqual ( validatePackageName ( "@; say ‘Hello from TypeScript!’ #/bar" ) , { name : "; say ‘Hello from TypeScript!’ #" , isScopeName : true , result : NameValidationResult . NameContainsNonURISafeCharacters } ) ;
1300
+ assert . deepEqual ( validatePackageName ( "@ scope / bar " ) , { name : " scope " , isScopeName : true , result : NameValidationResult . NameContainsNonURISafeCharacters } ) ;
1270
1301
} ) ;
1271
- it ( "name cannot start with underscore " , ( ) => {
1272
- assert . equal ( validatePackageName ( "_foo " ) , PackageNameValidationResult . NameStartsWithUnderscore ) ;
1302
+ it ( "package name in scoped package name cannot start with dot " , ( ) => {
1303
+ assert . deepEqual ( validatePackageName ( "@scope/.bar " ) , { name : ".bar" , isScopeName : false , result : NameValidationResult . NameStartsWithDot } ) ;
1273
1304
} ) ;
1274
- it ( "scoped packages not supported " , ( ) => {
1275
- assert . equal ( validatePackageName ( "@scope/bar " ) , PackageNameValidationResult . ScopedPackagesNotSupported ) ;
1305
+ it ( "package name in scoped package name cannot start with underscore " , ( ) => {
1306
+ assert . deepEqual ( validatePackageName ( "@scope/_bar " ) , { name : "_bar" , isScopeName : false , result : NameValidationResult . NameStartsWithUnderscore } ) ;
1276
1307
} ) ;
1277
- it ( "non URI safe characters are not supported" , ( ) => {
1278
- assert . equal ( validatePackageName ( " scope " ) , PackageNameValidationResult . NameContainsNonURISafeCharacters ) ;
1279
- assert . equal ( validatePackageName ( "; say ‘Hello from TypeScript!’ #" ) , PackageNameValidationResult . NameContainsNonURISafeCharacters ) ;
1280
- assert . equal ( validatePackageName ( "a/b/c" ) , PackageNameValidationResult . NameContainsNonURISafeCharacters ) ;
1308
+ it ( "package name in scoped package name with non URI safe characters are not supported" , ( ) => {
1309
+ assert . deepEqual ( validatePackageName ( "@scope/ bar " ) , { name : " bar " , isScopeName : false , result : NameValidationResult . NameContainsNonURISafeCharacters } ) ;
1310
+ assert . deepEqual ( validatePackageName ( "@scope/; say ‘Hello from TypeScript!’ #" ) , { name : "; say ‘Hello from TypeScript!’ #" , isScopeName : false , result : NameValidationResult . NameContainsNonURISafeCharacters } ) ;
1281
1311
} ) ;
1282
1312
} ) ;
1283
1313
@@ -1309,7 +1339,7 @@ namespace ts.projectSystem {
1309
1339
projectService . openClientFile ( f1 . path ) ;
1310
1340
1311
1341
installer . checkPendingCommands ( /*expectedCount*/ 0 ) ;
1312
- assert . isTrue ( messages . indexOf ( "Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters" ) > 0 , "should find package with invalid name" ) ;
1342
+ assert . isTrue ( messages . indexOf ( "'; say ‘Hello from TypeScript!’ #':: Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters" ) > 0 , "should find package with invalid name" ) ;
1313
1343
} ) ;
1314
1344
} ) ;
1315
1345
0 commit comments