11namespace ts . projectSystem {
22 import validatePackageName = JsTyping . validatePackageName ;
3- import PackageNameValidationResult = JsTyping . PackageNameValidationResult ;
3+ import NameValidationResult = JsTyping . NameValidationResult ;
44
55 interface InstallerParams {
66 globalTypingsCacheLocation ?: string ;
@@ -948,7 +948,8 @@ namespace ts.projectSystem {
948948 path : "/a/b/app.js" ,
949949 content : `
950950 import * as fs from "fs";
951- import * as commander from "commander";`
951+ import * as commander from "commander";
952+ import * as component from "@ember/component";`
952953 } ;
953954 const cachePath = "/a/cache" ;
954955 const node = {
@@ -959,14 +960,19 @@ namespace ts.projectSystem {
959960 path : cachePath + "/node_modules/@types/commander/index.d.ts" ,
960961 content : "export let y: string"
961962 } ;
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+ } ;
962968 const host = createServerHost ( [ file ] ) ;
963969 const installer = new ( class extends Installer {
964970 constructor ( ) {
965971 super ( host , { globalTypingsCacheLocation : cachePath , typesRegistry : createTypesRegistry ( "node" , "commander" ) } ) ;
966972 }
967973 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 ] ;
970976 executeCommand ( this , host , installedTypings , typingFiles , cb ) ;
971977 }
972978 } ) ( ) ;
@@ -980,9 +986,10 @@ namespace ts.projectSystem {
980986
981987 assert . isTrue ( host . fileExists ( node . path ) , "typings for 'node' should be created" ) ;
982988 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" ) ;
983990
984991 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 ] ) ;
986993 } ) ;
987994
988995 it ( "should redo resolution that resolved to '.js' file after typings are installed" , ( ) => {
@@ -1263,21 +1270,44 @@ namespace ts.projectSystem {
12631270 for ( let i = 0 ; i < 8 ; i ++ ) {
12641271 packageName += packageName ;
12651272 }
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 } ) ;
12671296 } ) ;
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 } ) ;
12701301 } ) ;
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 } ) ;
12731304 } ) ;
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 } ) ;
12761307 } ) ;
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 } ) ;
12811311 } ) ;
12821312 } ) ;
12831313
@@ -1309,7 +1339,7 @@ namespace ts.projectSystem {
13091339 projectService . openClientFile ( f1 . path ) ;
13101340
13111341 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" ) ;
13131343 } ) ;
13141344 } ) ;
13151345
0 commit comments