1describe("unittests:: services:: PreProcessFile:", () => { 2 function test(sourceText: string, readImportFile: boolean, detectJavaScriptImports: boolean, expectedPreProcess: ts.PreProcessedFileInfo): void { 3 const resultPreProcess = ts.preProcessFile(sourceText, readImportFile, detectJavaScriptImports); 4 5 assert.equal(resultPreProcess.isLibFile, expectedPreProcess.isLibFile, "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess.isLibFile + ". Actual: " + resultPreProcess.isLibFile); 6 7 checkFileReferenceList("Imported files", expectedPreProcess.importedFiles, resultPreProcess.importedFiles); 8 checkFileReferenceList("Referenced files", expectedPreProcess.referencedFiles, resultPreProcess.referencedFiles); 9 checkFileReferenceList("Type reference directives", expectedPreProcess.typeReferenceDirectives, resultPreProcess.typeReferenceDirectives); 10 checkFileReferenceList("Lib reference directives", expectedPreProcess.libReferenceDirectives, resultPreProcess.libReferenceDirectives); 11 12 assert.deepEqual(resultPreProcess.ambientExternalModules, expectedPreProcess.ambientExternalModules); 13 } 14 15 function checkFileReferenceList(kind: string, expected: ts.FileReference[], actual: ts.FileReference[]) { 16 if (expected === actual) { 17 return; 18 } 19 assert.deepEqual(actual, expected, `Expected [${kind}] ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`); 20 } 21 22 describe("Test preProcessFiles,", () => { 23 it("Correctly return referenced files from triple slash", () => { 24 test("///<reference path = \"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\"/>" + "\n" + "///<reference path=\"refFile3.ts\" />" + "\n" + "///<reference path= \"..\\refFile4d.ts\" />", 25 /*readImportFile*/ true, 26 /*detectJavaScriptImports*/ false, 27 { 28 referencedFiles: [{ fileName: "refFile1.ts", pos: 22, end: 33 }, { fileName: "refFile2.ts", pos: 59, end: 70 }, 29 { fileName: "refFile3.ts", pos: 94, end: 105 }, { fileName: "..\\refFile4d.ts", pos: 131, end: 146 }], 30 importedFiles: <ts.FileReference[]>[], 31 typeReferenceDirectives: [], 32 libReferenceDirectives: [], 33 ambientExternalModules: undefined, 34 isLibFile: false 35 }); 36 }); 37 38 it("Do not return reference path because of invalid triple-slash syntax", () => { 39 test("///<reference path\"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\">" + "\n" + "///<referencepath=\"refFile3.ts\" />" + "\n" + "///<reference pat= \"refFile4d.ts\" />", 40 /*readImportFile*/ true, 41 /*detectJavaScriptImports*/ false, 42 { 43 referencedFiles: <ts.FileReference[]>[], 44 importedFiles: <ts.FileReference[]>[], 45 typeReferenceDirectives: [], 46 libReferenceDirectives: [], 47 ambientExternalModules: undefined, 48 isLibFile: false 49 }); 50 }); 51 52 it("Do not return reference path of non-imports", () => { 53 test("Quill.import('delta');", 54 /*readImportFile*/ true, 55 /*detectJavaScriptImports*/ false, 56 { 57 referencedFiles: <ts.FileReference[]>[], 58 importedFiles: <ts.FileReference[]>[], 59 typeReferenceDirectives: [], 60 libReferenceDirectives: [], 61 ambientExternalModules: undefined, 62 isLibFile: false 63 }); 64 }); 65 66 it("Do not return reference path of nested non-imports", () => { 67 test("a.b.import('c');", 68 /*readImportFile*/ true, 69 /*detectJavaScriptImports*/ false, 70 { 71 referencedFiles: <ts.FileReference[]>[], 72 importedFiles: <ts.FileReference[]>[], 73 typeReferenceDirectives: [], 74 libReferenceDirectives: [], 75 ambientExternalModules: undefined, 76 isLibFile: false 77 }); 78 }); 79 80 it("Correctly return imported files", () => { 81 test("import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\"); import i3= require(\"r3.ts\"); import i4=require(\"r4.ts\"); import i5 = require (\"r5.ts\");", 82 /*readImportFile*/ true, 83 /*detectJavaScriptImports*/ false, 84 { 85 referencedFiles: <ts.FileReference[]>[], 86 typeReferenceDirectives: [], 87 libReferenceDirectives: [], 88 importedFiles: [{ fileName: "r1.ts", pos: 20, end: 25 }, { fileName: "r2.ts", pos: 49, end: 54 }, { fileName: "r3.ts", pos: 78, end: 83 }, 89 { fileName: "r4.ts", pos: 106, end: 111 }, { fileName: "r5.ts", pos: 138, end: 143 }], 90 ambientExternalModules: undefined, 91 isLibFile: false 92 }); 93 }); 94 95 it("Do not return imported files if readImportFiles argument is false", () => { 96 test("import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\"); import i3= require(\"r3.ts\"); import i4=require(\"r4.ts\"); import i5 = require (\"r5.ts\");", 97 /*readImportFile*/ false, 98 /*detectJavaScriptImports*/ false, 99 { 100 referencedFiles: <ts.FileReference[]>[], 101 typeReferenceDirectives: [], 102 libReferenceDirectives: [], 103 importedFiles: <ts.FileReference[]>[], 104 ambientExternalModules: undefined, 105 isLibFile: false 106 }); 107 }); 108 109 it("Do not return import path because of invalid import syntax", () => { 110 test("import i1 require(\"r1.ts\"); import = require(\"r2.ts\") import i3= require(\"r3.ts\"); import i5", 111 /*readImportFile*/ true, 112 /*detectJavaScriptImports*/ false, 113 { 114 referencedFiles: <ts.FileReference[]>[], 115 typeReferenceDirectives: [], 116 libReferenceDirectives: [], 117 importedFiles: [{ fileName: "r3.ts", pos: 73, end: 78 }], 118 ambientExternalModules: undefined, 119 isLibFile: false 120 }); 121 }); 122 123 it("Correctly return referenced files and import files", () => { 124 test("///<reference path=\"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\"/>" + "\n" + "import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\");", 125 /*readImportFile*/ true, 126 /*detectJavaScriptImports*/ false, 127 { 128 referencedFiles: [{ fileName: "refFile1.ts", pos: 20, end: 31 }, { fileName: "refFile2.ts", pos: 57, end: 68 }], 129 typeReferenceDirectives: [], 130 libReferenceDirectives: [], 131 importedFiles: [{ fileName: "r1.ts", pos: 92, end: 97 }, { fileName: "r2.ts", pos: 121, end: 126 }], 132 ambientExternalModules: undefined, 133 isLibFile: false 134 }); 135 }); 136 137 it("Correctly return referenced files and import files even with some invalid syntax", () => { 138 test("///<reference path=\"refFile1.ts\" />" + "\n" + "///<reference path \"refFile2.ts\"/>" + "\n" + "import i1 = require(\"r1.ts\"); import = require(\"r2.ts\"); import i2 = require(\"r3.ts\");", 139 /*readImportFile*/ true, 140 /*detectJavaScriptImports*/ false, 141 { 142 referencedFiles: [{ fileName: "refFile1.ts", pos: 20, end: 31 }], 143 typeReferenceDirectives: [], 144 libReferenceDirectives: [], 145 importedFiles: [{ fileName: "r1.ts", pos: 91, end: 96 }, { fileName: "r3.ts", pos: 148, end: 153 }], 146 ambientExternalModules: undefined, 147 isLibFile: false 148 }); 149 }); 150 151 it("Correctly return ES6 imports", () => { 152 test("import * as ns from \"m1\";" + "\n" + 153 "import def, * as ns from \"m2\";" + "\n" + 154 "import def from \"m3\";" + "\n" + 155 "import {a} from \"m4\";" + "\n" + 156 "import {a as A} from \"m5\";" + "\n" + 157 "import {a as A, b, c as C} from \"m6\";" + "\n" + 158 "import def , {a, b, c as C} from \"m7\";" + "\n", 159 /*readImportFile*/ true, 160 /*detectJavaScriptImports*/ false, 161 { 162 referencedFiles: [], 163 typeReferenceDirectives: [], 164 libReferenceDirectives: [], 165 importedFiles: [ 166 { fileName: "m1", pos: 20, end: 22 }, 167 { fileName: "m2", pos: 51, end: 53 }, 168 { fileName: "m3", pos: 73, end: 75 }, 169 { fileName: "m4", pos: 95, end: 97 }, 170 { fileName: "m5", pos: 122, end: 124 }, 171 { fileName: "m6", pos: 160, end: 162 }, 172 { fileName: "m7", pos: 199, end: 201 } 173 ], 174 ambientExternalModules: undefined, 175 isLibFile: false 176 }); 177 }); 178 179 it("Correctly return ES6 exports", () => { 180 test("export * from \"m1\";" + "\n" + 181 "export {a} from \"m2\";" + "\n" + 182 "export {a as A} from \"m3\";" + "\n" + 183 "export {a as A, b, c as C} from \"m4\";" + "\n", 184 /*readImportFile*/ true, 185 /*detectJavaScriptImports*/ false, 186 { 187 referencedFiles: [], 188 typeReferenceDirectives: [], 189 libReferenceDirectives: [], 190 importedFiles: [ 191 { fileName: "m1", pos: 14, end: 16 }, 192 { fileName: "m2", pos: 36, end: 38 }, 193 { fileName: "m3", pos: 63, end: 65 }, 194 { fileName: "m4", pos: 101, end: 103 }, 195 ], 196 ambientExternalModules: undefined, 197 isLibFile: false 198 }); 199 }); 200 201 it("Correctly handles import types", () => { 202 test("import type * as ns from \"m1\";" + "\n" + 203 "import type def, * as ns from \"m2\";" + "\n" + 204 "import type def from \"m3\";" + "\n" + 205 "import type {a} from \"m4\";" + "\n" + 206 "import type {a as A} from \"m5\";" + "\n" + 207 "import type {a as A, b, c as C} from \"m6\";" + "\n" + 208 "import type def , {a, b, c as C} from \"m7\";" + "\n" + 209 "import type from \"m8\";" + "\n" + 210 "import type T = require(\"m9\");" + "\n" + 211 "import type = require(\"m10\");" + "\n" + 212 "export import type T = require(\"m11\");" + "\n" + 213 "export import type = require(\"m12\");" + "\n", 214 /*readImportFile*/ true, 215 /*detectJavaScriptImports*/ false, 216 { 217 referencedFiles: <ts.FileReference[]>[], 218 typeReferenceDirectives: [], 219 libReferenceDirectives: [], 220 importedFiles: [ 221 { fileName: "m1", pos: 25, end: 27 }, 222 { fileName: "m2", pos: 61, end: 63 }, 223 { fileName: "m3", pos: 88, end: 90 }, 224 { fileName: "m4", pos: 115, end: 117 }, 225 { fileName: "m5", pos: 147, end: 149 }, 226 { fileName: "m6", pos: 190, end: 192 }, 227 { fileName: "m7", pos: 234, end: 236 }, 228 { fileName: "m8", pos: 257, end: 259 }, 229 { fileName: "m9", pos: 287, end: 289 }, 230 { fileName: "m10", pos: 316, end: 319 }, 231 { fileName: "m11", pos: 355, end: 358 }, 232 { fileName: "m12", pos: 392, end: 395 }, 233 ], 234 ambientExternalModules: undefined, 235 isLibFile: false 236 }); 237 }); 238 239 it("Correctly handles export types", () => { 240 test("export type * from \"m1\";" + "\n" + 241 "export type {a} from \"m2\";" + "\n" + 242 "export type {a as A} from \"m3\";" + "\n" + 243 "export type {a as A, b, c as C} from \"m4\";" + "\n", 244 /*readImportFile*/ true, 245 /*detectJavaScriptImports*/ false, 246 { 247 referencedFiles: <ts.FileReference[]>[], 248 typeReferenceDirectives: [], 249 libReferenceDirectives: [], 250 importedFiles: [ 251 { fileName: "m1", pos: 19, end: 21 }, 252 { fileName: "m2", pos: 46, end: 48 }, 253 { fileName: "m3", pos: 78, end: 80 }, 254 { fileName: "m4", pos: 121, end: 123 }, 255 ], 256 ambientExternalModules: undefined, 257 isLibFile: false 258 }); 259 }); 260 261 it("Correctly handles import type node", () => { 262 test("const x: import(\"m1\") = { x: 0, y: 0 };" + "\n" + 263 "let y: import(\"m2\").Bar.I = { a: \"\", b: 0 };" + "\n" + 264 "let shim: typeof import(\"m3\") = { Bar: Bar2 };" + "\n", 265 /*readImportFile*/ true, 266 /*detectJavaScriptImports*/ false, 267 { 268 referencedFiles: [], 269 typeReferenceDirectives: [], 270 libReferenceDirectives: [], 271 importedFiles: [ 272 { fileName: "m1", pos: 16, end: 18 }, 273 { fileName: "m2", pos: 54, end: 56 }, 274 { fileName: "m3", pos: 109, end: 111 }, 275 ], 276 ambientExternalModules: undefined, 277 isLibFile: false 278 }); 279 }); 280 281 it("Correctly return ambient external modules", () => { 282 test(` 283 declare module A {} 284 declare module "B" {} 285 function foo() { 286 } 287 `, 288 /*readImportFile*/ true, 289 /*detectJavaScriptImports*/ false, 290 { 291 referencedFiles: [], 292 typeReferenceDirectives: [], 293 libReferenceDirectives: [], 294 importedFiles: [], 295 ambientExternalModules: ["B"], 296 isLibFile: false 297 }); 298 }); 299 300 it("Correctly handles export import declarations", () => { 301 test("export import a = require(\"m1\");", 302 /*readImportFile*/ true, 303 /*detectJavaScriptImports*/ false, 304 { 305 referencedFiles: [], 306 typeReferenceDirectives: [], 307 libReferenceDirectives: [], 308 importedFiles: [ 309 { fileName: "m1", pos: 26, end: 28 } 310 ], 311 ambientExternalModules: undefined, 312 isLibFile: false 313 }); 314 }); 315 it("Correctly handles export require calls in JavaScript files", () => { 316 test(` 317 export import a = require("m1"); 318 var x = require('m2'); 319 foo(require('m3')); 320 var z = { f: require('m4') } 321 `, 322 /*readImportFile*/ true, 323 /*detectJavaScriptImports*/ true, 324 { 325 referencedFiles: [], 326 typeReferenceDirectives: [], 327 libReferenceDirectives: [], 328 importedFiles: [ 329 { fileName: "m1", pos: 39, end: 41 }, 330 { fileName: "m2", pos: 74, end: 76 }, 331 { fileName: "m3", pos: 105, end: 107 }, 332 { fileName: "m4", pos: 146, end: 148 }, 333 ], 334 ambientExternalModules: undefined, 335 isLibFile: false 336 }); 337 }); 338 it("Correctly handles dependency lists in define([deplist]) calls in JavaScript files", () => { 339 test(` 340 define(["mod1", "mod2"], (m1, m2) => { 341 }); 342 `, 343 /*readImportFile*/ true, 344 /*detectJavaScriptImports*/ true, 345 { 346 referencedFiles: [], 347 typeReferenceDirectives: [], 348 libReferenceDirectives: [], 349 importedFiles: [ 350 { fileName: "mod1", pos: 21, end: 25 }, 351 { fileName: "mod2", pos: 29, end: 33 }, 352 ], 353 ambientExternalModules: undefined, 354 isLibFile: false 355 }); 356 }); 357 358 it("Correctly handles dependency lists in define(modName, [deplist]) calls in JavaScript files", () => { 359 test(` 360 define("mod", ["mod1", "mod2"], (m1, m2) => { 361 }); 362 `, 363 /*readImportFile*/ true, 364 /*detectJavaScriptImports*/ true, 365 { 366 referencedFiles: [], 367 typeReferenceDirectives: [], 368 libReferenceDirectives: [], 369 importedFiles: [ 370 { fileName: "mod1", pos: 28, end: 32 }, 371 { fileName: "mod2", pos: 36, end: 40 }, 372 ], 373 ambientExternalModules: undefined, 374 isLibFile: false 375 }); 376 }); 377 378 it("correctly handles augmentations in external modules - 1", () => { 379 test(` 380 declare module "../Observable" { 381 interface I {} 382 } 383 384 export {} 385 `, 386 /*readImportFile*/ true, 387 /*detectJavaScriptImports*/ false, 388 { 389 referencedFiles: [], 390 typeReferenceDirectives: [], 391 libReferenceDirectives: [], 392 importedFiles: [ 393 { fileName: "../Observable", pos: 28, end: 41 } 394 ], 395 ambientExternalModules: undefined, 396 isLibFile: false 397 }); 398 }); 399 it("correctly handles augmentations in external modules - 2", () => { 400 test(` 401 declare module "../Observable" { 402 interface I {} 403 } 404 405 import * as x from "m"; 406 `, 407 /*readImportFile*/ true, 408 /*detectJavaScriptImports*/ false, 409 { 410 referencedFiles: [], 411 typeReferenceDirectives: [], 412 libReferenceDirectives: [], 413 importedFiles: [ 414 { fileName: "m", pos: 123, end: 124 }, 415 { fileName: "../Observable", pos: 28, end: 41 } 416 ], 417 ambientExternalModules: undefined, 418 isLibFile: false 419 }); 420 }); 421 it("correctly handles augmentations in external modules - 3", () => { 422 test(` 423 declare module "../Observable" { 424 interface I {} 425 } 426 427 import m = require("m"); 428 `, 429 /*readImportFile*/ true, 430 /*detectJavaScriptImports*/ false, 431 { 432 referencedFiles: [], 433 typeReferenceDirectives: [], 434 libReferenceDirectives: [], 435 importedFiles: [ 436 { fileName: "m", pos: 123, end: 124 }, 437 { fileName: "../Observable", pos: 28, end: 41 } 438 ], 439 ambientExternalModules: undefined, 440 isLibFile: false 441 }); 442 }); 443 it("correctly handles augmentations in external modules - 4", () => { 444 test(` 445 declare module "../Observable" { 446 interface I {} 447 } 448 namespace N {} 449 export = N; 450 `, 451 /*readImportFile*/ true, 452 /*detectJavaScriptImports*/ false, 453 { 454 referencedFiles: [], 455 typeReferenceDirectives: [], 456 libReferenceDirectives: [], 457 importedFiles: [ 458 { fileName: "../Observable", pos: 28, end: 41 } 459 ], 460 ambientExternalModules: undefined, 461 isLibFile: false 462 }); 463 }); 464 it("correctly handles augmentations in external modules - 5", () => { 465 test(` 466 declare module "../Observable" { 467 interface I {} 468 } 469 namespace N {} 470 export import IN = N; 471 `, 472 /*readImportFile*/ true, 473 /*detectJavaScriptImports*/ false, 474 { 475 referencedFiles: [], 476 typeReferenceDirectives: [], 477 libReferenceDirectives: [], 478 importedFiles: [ 479 { fileName: "../Observable", pos: 28, end: 41 } 480 ], 481 ambientExternalModules: undefined, 482 isLibFile: false 483 }); 484 }); 485 it("correctly handles augmentations in external modules - 6", () => { 486 test(` 487 declare module "../Observable" { 488 interface I {} 489 } 490 export let x = 1; 491 `, 492 /*readImportFile*/ true, 493 /*detectJavaScriptImports*/ false, 494 { 495 referencedFiles: [], 496 typeReferenceDirectives: [], 497 libReferenceDirectives: [], 498 importedFiles: [ 499 { fileName: "../Observable", pos: 28, end: 41 } 500 ], 501 ambientExternalModules: undefined, 502 isLibFile: false 503 }); 504 }); 505 it ("correctly handles augmentations in ambient external modules - 1", () => { 506 test(` 507 declare module "m1" { 508 export * from "m2"; 509 declare module "augmentation" { 510 interface I {} 511 } 512 } 513 `, 514 /*readImportFile*/ true, 515 /*detectJavaScriptImports*/ false, 516 { 517 referencedFiles: [], 518 typeReferenceDirectives: [], 519 libReferenceDirectives: [], 520 importedFiles: [ 521 { fileName: "m2", pos: 65, end: 67 }, 522 { fileName: "augmentation", pos: 102, end: 114 } 523 ], 524 ambientExternalModules: ["m1"], 525 isLibFile: false 526 }); 527 }); 528 it ("correctly handles augmentations in ambient external modules - 2", () => { 529 test(` 530 namespace M { var x; } 531 import IM = M; 532 declare module "m1" { 533 export * from "m2"; 534 declare module "augmentation" { 535 interface I {} 536 } 537 } 538 `, 539 /*readImportFile*/ true, 540 /*detectJavaScriptImports*/ false, 541 { 542 referencedFiles: [], 543 typeReferenceDirectives: [], 544 libReferenceDirectives: [], 545 importedFiles: [ 546 { fileName: "m2", pos: 127, end: 129 }, 547 { fileName: "augmentation", pos: 164, end: 176 } 548 ], 549 ambientExternalModules: ["m1"], 550 isLibFile: false 551 }); 552 }); 553 it ("correctly recognizes type reference directives", () => { 554 test(` 555 /// <reference path="a"/> 556 /// <reference types="a1"/> 557 /// <reference path="a2"/> 558 /// <reference types="a3"/> 559 `, 560 /*readImportFile*/ true, 561 /*detectJavaScriptImports*/ false, 562 { 563 referencedFiles: [ 564 { pos: 34, end: 35, fileName: "a" }, 565 { pos: 112, end: 114, fileName: "a2" } 566 ], 567 typeReferenceDirectives: [ 568 { pos: 73, end: 75, fileName: "a1" }, 569 { pos: 152, end: 154, fileName: "a3" } 570 ], 571 libReferenceDirectives: [], 572 importedFiles: [], 573 ambientExternalModules: undefined, 574 isLibFile: false 575 }); 576 }); 577 it ("correctly recognizes lib reference directives", () => { 578 test(` 579 /// <reference path="a"/> 580 /// <reference lib="a1"/> 581 /// <reference path="a2"/> 582 /// <reference lib="a3"/> 583 `, 584 /*readImportFile*/ true, 585 /*detectJavaScriptImports*/ false, 586 { 587 referencedFiles: [ 588 { pos: 34, end: 35, fileName: "a" }, 589 { pos: 110, end: 112, fileName: "a2" } 590 ], 591 typeReferenceDirectives: [ 592 ], 593 libReferenceDirectives: [ 594 { pos: 71, end: 73, fileName: "a1" }, 595 { pos: 148, end: 150, fileName: "a3" } 596 ], 597 importedFiles: [], 598 ambientExternalModules: undefined, 599 isLibFile: false 600 }); 601 }); 602 603 it("Correctly handles dynamic imports with template literals", () => { 604 test("const m1 = import('mod1');" + "\n" + 605 "const m2 = import(`mod2`);" + "\n" + 606 "Promise.all([import('mod3'), import(`mod4`)]);" + "\n" + 607 "import(/* webpackChunkName: 'module5' */ `mod5`);" + "\n", 608 /*readImportFile*/ true, 609 /*detectJavaScriptImports*/ false, 610 { 611 referencedFiles: [], 612 typeReferenceDirectives: [], 613 libReferenceDirectives: [], 614 importedFiles: [ 615 { fileName: "mod1", pos: 18, end: 22 }, 616 { fileName: "mod2", pos: 45, end: 49 }, 617 { fileName: "mod3", pos: 74, end: 78 }, 618 { fileName: "mod4", pos: 90, end: 94 }, 619 { fileName: "mod5", pos: 142, end: 146 } 620 ], 621 ambientExternalModules: undefined, 622 isLibFile: false 623 }); 624 }); 625 626 it("Correctly handles require calls with template literals in JS files", () => { 627 test("const m1 = require(`mod1`);" + "\n" + 628 "f(require(`mod2`));" + "\n" + 629 "const a = { x: require(`mod3`) };" + "\n", 630 /*readImportFile*/ true, 631 /*detectJavaScriptImports*/ true, 632 { 633 referencedFiles: [], 634 typeReferenceDirectives: [], 635 libReferenceDirectives: [], 636 importedFiles: [ 637 { fileName: "mod1", pos: 19, end: 23 }, 638 { fileName: "mod2", pos: 38, end: 42 }, 639 { fileName: "mod3", pos: 71, end: 75 } 640 ], 641 ambientExternalModules: undefined, 642 isLibFile: false 643 }); 644 }); 645 646 it("Correctly handles dependency lists in define(modName, [deplist]) calls with template literals in JS files", () => { 647 test("define(`mod`, [`mod1`, `mod2`], (m1, m2) => {});", 648 /*readImportFile*/ true, 649 /*detectJavaScriptImports*/ true, 650 { 651 referencedFiles: [], 652 typeReferenceDirectives: [], 653 libReferenceDirectives: [], 654 importedFiles: [ 655 { fileName: "mod1", pos: 15, end: 19 }, 656 { fileName: "mod2", pos: 23, end: 27 }, 657 ], 658 ambientExternalModules: undefined, 659 isLibFile: false 660 }); 661 }); 662 }); 663}); 664