diff --git a/Jakefile.js b/Jakefile.js
index b68e869aaee5d..1544ccec0a3aa 100644
--- a/Jakefile.js
+++ b/Jakefile.js
@@ -795,7 +795,7 @@ compileFile(
/*prereqs*/[builtLocalDirectory, tscFile, tsserverLibraryFile].concat(libraryTargets).concat(servicesSources).concat(harnessSources),
/*prefixes*/[],
/*useBuiltCompiler:*/ true,
- /*opts*/ { types: ["node", "mocha", "chai"], lib: "es6" });
+ /*opts*/ { types: ["node", "mocha"], lib: "es6" });
var internalTests = "internal/";
diff --git a/package-lock.json b/package-lock.json
index 6c44ab023b9aa..5dc35c5bb26bf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"integrity": "sha1-z6I7xYQPkQTOMqZedNt+epdLvuE=",
"dev": true,
"requires": {
- "acorn": "5.1.2",
+ "acorn": "5.2.1",
"css": "2.2.1",
"normalize-path": "2.1.1",
"source-map": "0.5.7",
@@ -18,9 +18,9 @@
},
"dependencies": {
"acorn": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz",
- "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
"dev": true
}
}
@@ -42,13 +42,13 @@
"dev": true,
"requires": {
"@types/insert-module-globals": "7.0.0",
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/chai": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.4.tgz",
- "integrity": "sha512-cvU0HomQ7/aGDQJZsbtJXqBQ7w4J4TqLB0Z/h8mKrpRjfeZEvTbygkfJEb7fWdmwpIeDeFmIVwAEqS0OYuUv3Q==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.7.tgz",
+ "integrity": "sha512-OsFOcyJH0SViMMHzDKZdapG8sfoH7qcpYgKhgyw9xn5MgkCvAplkf0FUaRFB+HTrVH6gQ/GU7sbIUDM1usVEUA==",
"dev": true
},
"@types/colors": {
@@ -58,9 +58,9 @@
"dev": true
},
"@types/convert-source-map": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.0.tgz",
- "integrity": "sha512-4OHKJEw70U59CN24TLRxU3W+B/9GPp0P6g+eNIsObZLAIqw6NTEBorkjIpei4xsvUCx+YzFwUtt4MBZbfSLvbQ==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha512-laiDIXqqthjJlyAMYAXOtN3N8+UlbM+KvZi4BaY5ZOekmVkBs/UxfK5O0HWeJVG2eW8F+Mu2ww13fTX+kY1FlQ==",
"dev": true
},
"@types/del": {
@@ -72,6 +72,12 @@
"@types/glob": "5.0.33"
}
},
+ "@types/events": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz",
+ "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==",
+ "dev": true
+ },
"@types/glob": {
"version": "5.0.33",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz",
@@ -79,56 +85,56 @@
"dev": true,
"requires": {
"@types/minimatch": "3.0.1",
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/gulp": {
- "version": "3.8.33",
- "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-3.8.33.tgz",
- "integrity": "sha512-3UpA2pkKO40cNPe/8bxMQFWSASR9Jx67JfN9Z2Cf6ogfDMwXgEHm2XjKmuLYEtrp1IHYApOWlYMLYNgtTJgSAw==",
+ "version": "3.8.35",
+ "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-3.8.35.tgz",
+ "integrity": "sha512-h9clNJu8X6+zW74ZLa5zhh5HP0LxnvlelVXdXby6pM/DDEj/gKqmmFXKwjzvupZKlMpof02jr6c3JokPbHXQgg==",
"dev": true,
"requires": {
- "@types/node": "8.0.46",
- "@types/orchestrator": "0.3.0",
+ "@types/node": "8.0.54",
+ "@types/orchestrator": "0.3.2",
"@types/vinyl": "2.0.1"
}
},
"@types/gulp-concat": {
- "version": "0.0.31",
- "resolved": "https://registry.npmjs.org/@types/gulp-concat/-/gulp-concat-0.0.31.tgz",
- "integrity": "sha512-F14zRcKn15HC59RXRlHpcxj79WoLjkJBJBPfN0NBZOgkRCfDZYVu8rs0Y/CH4CJGUbbc/nHczD2LmepDS+ARaA==",
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/gulp-concat/-/gulp-concat-0.0.32.tgz",
+ "integrity": "sha512-CUCFADlITzzBfBa2bdGzhKtvBr4eFh+evb+4igVbvPoO5RyPfHifmyQlZl6lM7q19+OKncRlFXDU7B4X9Ayo2g==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/gulp-help": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/@types/gulp-help/-/gulp-help-0.0.33.tgz",
- "integrity": "sha1-ZejGUSQQkiVTf6OQA8S6UfT9GsU=",
+ "version": "0.0.34",
+ "resolved": "https://registry.npmjs.org/@types/gulp-help/-/gulp-help-0.0.34.tgz",
+ "integrity": "sha512-MkW7psZznxxJg2MBk2P2qHE+T8jEZVFz3FG/qGjUYazkyJt7hBJWx5Nuewmay5RVNtUvSWPrdZLr/WTXY3T/6A==",
"dev": true,
"requires": {
- "@types/gulp": "3.8.33",
- "@types/node": "8.0.46",
- "@types/orchestrator": "0.3.0"
+ "@types/gulp": "3.8.35",
+ "@types/node": "8.0.54",
+ "@types/orchestrator": "0.3.2"
}
},
"@types/gulp-newer": {
- "version": "0.0.30",
- "resolved": "https://registry.npmjs.org/@types/gulp-newer/-/gulp-newer-0.0.30.tgz",
- "integrity": "sha1-bqn7oVsFdr5CTpl31IlCAEZKFR4=",
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/@types/gulp-newer/-/gulp-newer-0.0.31.tgz",
+ "integrity": "sha512-e7J/Zv5Wd7CC0WpuA2syWVitgwrkG0u221e41w7r07XUR6hMH6kHPkq9tUrusHkbeW8QbuLbis5fODOwQCyggQ==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/gulp-sourcemaps": {
- "version": "0.0.31",
- "resolved": "https://registry.npmjs.org/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.31.tgz",
- "integrity": "sha512-kJD1byVNx+sdQlaBzZpSGeFH/4l99TXTY4XSGW+aRk27eOnVyk6VknXJpsb1Jk5E4ThKxZ8GYy6ais7MtprK1w==",
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.32.tgz",
+ "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/insert-module-globals": {
@@ -137,16 +143,16 @@
"integrity": "sha512-zudCJPwluh1VUDB6Gl/OQdRp+fYy3+47huJB/JMQubMS2p+sH18MCVK4WUz3FqaWLB12yh5ELxVR/+tqwlm/qA==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/merge2": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/merge2/-/merge2-1.1.2.tgz",
- "integrity": "sha512-Xy54xPmFQ8oAx0S3ku46i/zXE4dvfxl5M8n4p2M62IwxPau8IpobiRtL4jkrUzX6Kgeyb34BHOh0i70SDjKHeA==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@types/merge2/-/merge2-1.1.4.tgz",
+ "integrity": "sha512-GjaXY4OultxbaOOk7lCLO7xvEcFpdjExC605YmfI6X29vhHKpJfMWKCDZd3x+BITrZaXKg97DgV/SdGVSwdzxA==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/minimatch": {
@@ -162,58 +168,53 @@
"dev": true
},
"@types/mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha512-XA4vNO6GCBz8Smq0hqSRo4yRWMqr4FPQrWjhJt6nKskzly4/p87SfuJMFYGRyYb6jo2WNIQU2FDBsY5r1BibUA==",
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz",
+ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/mocha": {
- "version": "2.2.43",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz",
- "integrity": "sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==",
+ "version": "2.2.44",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz",
+ "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==",
"dev": true
},
"@types/node": {
- "version": "8.0.46",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.46.tgz",
- "integrity": "sha512-rRkP4kb5JYIfAoRKaDbcdPZBcTNOgzSApyzhPN9e6rhViSJAWQGlSXIX5gc75iR02jikhpzy3usu31wMHllfFw==",
- "dev": true
+ "version": "8.0.54",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz",
+ "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.1.0"
+ }
},
"@types/orchestrator": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@types/orchestrator/-/orchestrator-0.3.0.tgz",
- "integrity": "sha1-v4ShaZyTMNT+ic2BJj6PwJ+zKXg=",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@types/orchestrator/-/orchestrator-0.3.2.tgz",
+ "integrity": "sha512-cKB4yTX0wGaRCSkdHDX2fkGQbMAA8UOshC2U7DQky1CE5o+5q2iQQ8VkbPbE/88uaTtsusvBPMcCX7dgmjxBhQ==",
"dev": true,
"requires": {
- "@types/node": "8.0.46",
- "@types/q": "0.0.37"
- },
- "dependencies": {
- "@types/q": {
- "version": "0.0.37",
- "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.37.tgz",
- "integrity": "sha512-vjFGX1zMTMz/kUp3xgfJcxMVLkMWVMrdlyc0RwVyve1y9jxwqNaT8wTcv6M51ylq2a/zn5lm8g7qPSoIS4uvZQ==",
- "dev": true
- }
+ "@types/node": "8.0.54",
+ "@types/q": "1.0.6"
}
},
"@types/q": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.5.tgz",
- "integrity": "sha512-sudQPADzmQjXYS1fS2TxbWA/N/vbbfaO4Y7luPaAEyRWZVXC8jHwKV8KgNDbT7IHQaONNZWy9BYsodxY7IyDXQ==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.6.tgz",
+ "integrity": "sha512-LSx7jkcXoXWB+kkfwG5zc9Okbgn51BrjLMtKwbmnqfQlCGttTnTxvDVwQanHxkK6CLKb9yEfxQ1ID6pqDpeURw==",
"dev": true
},
"@types/run-sequence": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/run-sequence/-/run-sequence-0.0.29.tgz",
- "integrity": "sha1-atD3ODE24TklMi5p/EHbd7MLIHU=",
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/run-sequence/-/run-sequence-0.0.30.tgz",
+ "integrity": "sha512-XwGr1b4yCGUILKeBkzmeWcxmGHQ0vFFFpA6D6y1yLO6gKmYorF+PHqdU5KG+nWt38OvtrkDptmrSmlHX/XtpLw==",
"dev": true,
"requires": {
- "@types/gulp": "3.8.33",
- "@types/node": "8.0.46"
+ "@types/gulp": "3.8.35",
+ "@types/node": "8.0.54"
}
},
"@types/through2": {
@@ -222,7 +223,7 @@
"integrity": "sha1-H/LoihAN+1sUDnu5h5HxGUQA0TE=",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/vinyl": {
@@ -231,16 +232,26 @@
"integrity": "sha512-Joudabfn2ZofU2usW04y8OLmN75u7ZQkW0MCT3AnoBf5oUBp5iQ3Pgfz9+y1RdWkzhCPZo9/wBJ7FMWW2JrY0g==",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "@types/node": "8.0.54"
}
},
"@types/xml2js": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.0.tgz",
- "integrity": "sha512-3gw0UqFMq7PsfMDwsawD0/L48soXfzOEh0NSAWVO99IZXnhx9LD3nOldHIpGYzZBsrS9NV2vaRFvEdWe+UweXQ==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.2.tgz",
+ "integrity": "sha512-8aKUBSj3oGcnuiBmDLm3BIk09RYg01mz9HlQ2u4aS17oJ25DxjQrEUVGFSBVNOfM45pQW4OjcBPplq6r/exJdA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.0.54"
+ }
+ },
+ "JSONStream": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
+ "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
"dev": true,
"requires": {
- "@types/node": "8.0.46"
+ "jsonparse": "1.3.1",
+ "through": "2.3.8"
}
},
"abbrev": {
@@ -351,9 +362,9 @@
"dev": true
},
"array-slice": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz",
- "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
"dev": true
},
"array-union": {
@@ -384,9 +395,9 @@
"dev": true
},
"asn1.js": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz",
- "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=",
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
+ "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
"dev": true,
"requires": {
"bn.js": "4.11.8",
@@ -498,9 +509,9 @@
"integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
"dev": true,
"requires": {
+ "JSONStream": "1.3.1",
"combine-source-map": "0.7.2",
"defined": "1.0.0",
- "JSONStream": "1.3.1",
"through2": "2.0.3",
"umd": "3.0.1"
}
@@ -526,6 +537,7 @@
"integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==",
"dev": true,
"requires": {
+ "JSONStream": "1.3.1",
"assert": "1.4.1",
"browser-pack": "6.0.2",
"browser-resolve": "1.11.2",
@@ -535,7 +547,7 @@
"concat-stream": "1.5.2",
"console-browserify": "1.1.0",
"constants-browserify": "1.0.0",
- "crypto-browserify": "3.11.1",
+ "crypto-browserify": "3.12.0",
"defined": "1.0.0",
"deps-sort": "2.0.0",
"domain-browser": "1.1.7",
@@ -547,7 +559,6 @@
"https-browserify": "1.0.0",
"inherits": "2.0.3",
"insert-module-globals": "7.0.1",
- "JSONStream": "1.3.1",
"labeled-stream-splicer": "2.0.0",
"module-deps": "4.1.1",
"os-browserify": "0.3.0",
@@ -573,35 +584,12 @@
"util": "0.10.3",
"vm-browserify": "0.0.4",
"xtend": "4.0.1"
- },
- "dependencies": {
- "browserify-zlib": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dev": true,
- "requires": {
- "pako": "1.0.6"
- }
- },
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
- "dev": true
- },
- "pako": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
- "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
- "dev": true
- }
}
},
"browserify-aes": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz",
- "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
+ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
"dev": true,
"requires": {
"buffer-xor": "1.0.3",
@@ -618,7 +606,7 @@
"integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
"dev": true,
"requires": {
- "browserify-aes": "1.0.8",
+ "browserify-aes": "1.1.1",
"browserify-des": "1.0.0",
"evp_bytestokey": "1.0.3"
}
@@ -659,6 +647,15 @@
"parse-asn1": "5.1.0"
}
},
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "1.0.6"
+ }
+ },
"buffer": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz",
@@ -737,7 +734,7 @@
"deep-eql": "3.0.1",
"get-func-name": "2.0.0",
"pathval": "1.1.0",
- "type-detect": "4.0.3"
+ "type-detect": "4.0.5"
}
},
"chalk": {
@@ -791,9 +788,9 @@
}
},
"clone": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
- "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
"dev": true
},
"clone-buffer": {
@@ -820,9 +817,9 @@
}
},
"color-convert": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
- "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"dev": true,
"requires": {
"color-name": "1.1.3"
@@ -930,9 +927,9 @@
"dev": true
},
"convert-source-map": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
- "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
"dev": true
},
"core-util-is": {
@@ -978,9 +975,9 @@
}
},
"crypto-browserify": {
- "version": "3.11.1",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz",
- "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"dev": true,
"requires": {
"browserify-cipher": "1.0.0",
@@ -992,7 +989,8 @@
"inherits": "2.0.3",
"pbkdf2": "3.0.14",
"public-encrypt": "4.0.0",
- "randombytes": "2.0.5"
+ "randombytes": "2.0.5",
+ "randomfill": "1.0.3"
}
},
"css": {
@@ -1033,7 +1031,7 @@
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"dev": true,
"requires": {
- "es5-ext": "0.10.31"
+ "es5-ext": "0.10.37"
}
},
"date-now": {
@@ -1080,7 +1078,7 @@
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
"dev": true,
"requires": {
- "type-detect": "4.0.3"
+ "type-detect": "4.0.5"
}
},
"deep-is": {
@@ -1095,7 +1093,7 @@
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"dev": true,
"requires": {
- "clone": "1.0.2"
+ "clone": "1.0.3"
}
},
"defined": {
@@ -1162,13 +1160,21 @@
"dev": true
},
"detective": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz",
- "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz",
+ "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==",
"dev": true,
"requires": {
- "acorn": "4.0.13",
+ "acorn": "5.2.1",
"defined": "1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ }
}
},
"diff": {
@@ -1271,23 +1277,23 @@
}
},
"es5-ext": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.31.tgz",
- "integrity": "sha1-e7k4yVp/G59ygJLcCcQe3MOY7v4=",
+ "version": "0.10.37",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
+ "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
"dev": true,
"requires": {
- "es6-iterator": "2.0.1",
+ "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1"
}
},
"es6-iterator": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz",
- "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.31",
+ "es5-ext": "0.10.37",
"es6-symbol": "3.1.1"
}
},
@@ -1304,7 +1310,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.31"
+ "es5-ext": "0.10.37"
}
},
"es6-weak-map": {
@@ -1314,8 +1320,8 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.31",
- "es6-iterator": "2.0.1",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1"
}
},
@@ -1375,7 +1381,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.31"
+ "es5-ext": "0.10.37"
}
},
"events": {
@@ -1755,7 +1761,7 @@
"dev": true,
"requires": {
"homedir-polyfill": "1.0.1",
- "ini": "1.3.4",
+ "ini": "1.3.5",
"is-windows": "0.2.0",
"which": "1.3.0"
}
@@ -1861,7 +1867,7 @@
"chalk": "1.1.3",
"deprecated": "0.0.1",
"gulp-util": "3.0.8",
- "interpret": "1.0.4",
+ "interpret": "1.1.0",
"liftoff": "2.3.0",
"minimist": "1.2.0",
"orchestrator": "0.3.8",
@@ -2099,40 +2105,6 @@
"concat-with-sourcemaps": "1.0.4",
"through2": "2.0.3",
"vinyl": "2.1.0"
- },
- "dependencies": {
- "clone": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
- "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
- "dev": true
- },
- "clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
- "dev": true
- },
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
- "dev": true
- },
- "vinyl": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
- "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
- "dev": true,
- "requires": {
- "clone": "2.1.1",
- "clone-buffer": "1.0.0",
- "clone-stats": "1.0.0",
- "cloneable-readable": "1.0.0",
- "remove-trailing-separator": "1.1.0",
- "replace-ext": "1.0.0"
- }
- }
}
},
"gulp-help": {
@@ -2209,7 +2181,7 @@
"@gulp-sourcemaps/identity-map": "1.0.1",
"@gulp-sourcemaps/map-sources": "1.0.0",
"acorn": "4.0.13",
- "convert-source-map": "1.5.0",
+ "convert-source-map": "1.5.1",
"css": "2.2.1",
"debug-fabulous": "0.2.1",
"detect-newline": "2.1.0",
@@ -2232,7 +2204,7 @@
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
"requires": {
- "clone": "1.0.2",
+ "clone": "1.0.3",
"clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
@@ -2240,9 +2212,9 @@
}
},
"gulp-typescript": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.2.2.tgz",
- "integrity": "sha1-t+Xh08s193LlPmBAJmAYJuK+d/w=",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.2.3.tgz",
+ "integrity": "sha512-Np2sJXgtDUwIAoMtlJ9uXsVmpu1FWXlKZw164hLuo56uJa7qo5W2KZ0yAYiYH/HUsaz5L0O2toMOcLIokpFCPg==",
"dev": true,
"requires": {
"gulp-util": "3.0.8",
@@ -2326,7 +2298,7 @@
"integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
"dev": true,
"requires": {
- "convert-source-map": "1.5.0",
+ "convert-source-map": "1.5.1",
"graceful-fs": "4.1.11",
"strip-bom": "2.0.0",
"through2": "2.0.3",
@@ -2404,7 +2376,7 @@
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
"requires": {
- "clone": "1.0.2",
+ "clone": "1.0.3",
"clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
@@ -2467,6 +2439,17 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
"integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
"dev": true
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
}
}
},
@@ -2480,9 +2463,9 @@
}
},
"handlebars": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
- "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
"dev": true,
"requires": {
"async": "1.5.2",
@@ -2642,9 +2625,9 @@
"dev": true
},
"ini": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
- "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
"inline-source-map": {
@@ -2662,10 +2645,10 @@
"integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
"dev": true,
"requires": {
+ "JSONStream": "1.3.1",
"combine-source-map": "0.7.2",
"concat-stream": "1.5.2",
- "is-buffer": "1.1.5",
- "JSONStream": "1.3.1",
+ "is-buffer": "1.1.6",
"lexical-scope": "1.2.0",
"process": "0.11.10",
"through2": "2.0.3",
@@ -2673,9 +2656,9 @@
}
},
"interpret": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
- "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
"dev": true
},
"is-absolute": {
@@ -2695,9 +2678,9 @@
"dev": true
},
"is-buffer": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
- "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
"is-builtin-module": {
@@ -2775,13 +2758,13 @@
"integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
"dev": true,
"requires": {
- "is-path-inside": "1.0.0"
+ "is-path-inside": "1.0.1"
}
},
"is-path-inside": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
- "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
"requires": {
"path-is-inside": "1.0.2"
@@ -2896,7 +2879,7 @@
"escodegen": "1.8.1",
"esprima": "2.7.3",
"glob": "5.0.15",
- "handlebars": "4.0.10",
+ "handlebars": "4.0.11",
"js-yaml": "3.10.0",
"mkdirp": "0.5.1",
"nopt": "3.0.6",
@@ -3020,16 +3003,6 @@
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
"dev": true
},
- "JSONStream": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
- "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
- "dev": true,
- "requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
- }
- },
"kew": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
@@ -3042,7 +3015,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "1.1.6"
}
},
"labeled-stream-splicer": {
@@ -3454,7 +3427,7 @@
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"dev": true,
"requires": {
- "es5-ext": "0.10.31"
+ "es5-ext": "0.10.37"
}
},
"make-error": {
@@ -3504,7 +3477,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.31",
+ "es5-ext": "0.10.37",
"es6-weak-map": "2.0.2",
"event-emitter": "0.3.5",
"is-promise": "2.1.0",
@@ -3668,14 +3641,14 @@
"integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
"dev": true,
"requires": {
+ "JSONStream": "1.3.1",
"browser-resolve": "1.11.2",
"cached-path-relative": "1.0.1",
"concat-stream": "1.5.2",
"defined": "1.0.0",
- "detective": "4.5.0",
+ "detective": "4.7.0",
"duplexer2": "0.1.4",
"inherits": "2.0.3",
- "JSONStream": "1.3.1",
"parents": "1.0.1",
"readable-stream": "2.3.3",
"resolve": "1.1.7",
@@ -3802,7 +3775,7 @@
"dev": true,
"requires": {
"array-each": "1.0.1",
- "array-slice": "1.0.0",
+ "array-slice": "1.1.0",
"for-own": "1.0.0",
"isobject": "3.0.1"
},
@@ -3915,6 +3888,12 @@
"integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=",
"dev": true
},
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
@@ -3927,6 +3906,12 @@
"integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
"dev": true
},
+ "pako": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "dev": true
+ },
"parents": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
@@ -3942,8 +3927,8 @@
"integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
"dev": true,
"requires": {
- "asn1.js": "4.9.1",
- "browserify-aes": "1.0.8",
+ "asn1.js": "4.9.2",
+ "browserify-aes": "1.1.1",
"create-hash": "1.1.3",
"evp_bytestokey": "1.0.3",
"pbkdf2": "3.0.14"
@@ -4204,7 +4189,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -4215,7 +4200,7 @@
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -4229,6 +4214,16 @@
"safe-buffer": "5.1.1"
}
},
+ "randomfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz",
+ "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==",
+ "dev": true,
+ "requires": {
+ "randombytes": "2.0.5",
+ "safe-buffer": "5.1.1"
+ }
+ },
"read-only-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
@@ -4515,12 +4510,20 @@
}
},
"source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz",
+ "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==",
"dev": true,
"requires": {
- "source-map": "0.5.7"
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"source-map-url": {
@@ -4811,7 +4814,7 @@
"integrity": "sha1-YcxHp2wavTGV8UUn+XjViulMUgQ=",
"dev": true,
"requires": {
- "es5-ext": "0.10.31",
+ "es5-ext": "0.10.37",
"next-tick": "1.0.0"
}
},
@@ -4849,7 +4852,7 @@
"dev": true,
"requires": {
"arrify": "1.0.1",
- "chalk": "2.2.0",
+ "chalk": "2.3.0",
"diff": "3.3.1",
"make-error": "1.3.0",
"minimist": "1.2.0",
@@ -4866,13 +4869,13 @@
"integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
"dev": true,
"requires": {
- "color-convert": "1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz",
- "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dev": true,
"requires": {
"ansi-styles": "3.2.0",
@@ -4886,6 +4889,15 @@
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -4938,15 +4950,15 @@
"requires": {
"babel-code-frame": "6.26.0",
"builtin-modules": "1.1.1",
- "chalk": "2.2.0",
+ "chalk": "2.3.0",
"commander": "2.11.0",
"diff": "3.3.1",
"glob": "7.1.2",
"minimatch": "3.0.4",
- "resolve": "1.4.0",
+ "resolve": "1.5.0",
"semver": "5.4.1",
"tslib": "1.8.0",
- "tsutils": "2.12.1"
+ "tsutils": "2.13.0"
},
"dependencies": {
"ansi-styles": {
@@ -4955,13 +4967,13 @@
"integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
"dev": true,
"requires": {
- "color-convert": "1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz",
- "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dev": true,
"requires": {
"ansi-styles": "3.2.0",
@@ -4976,9 +4988,9 @@
"dev": true
},
"resolve": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
- "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
"dev": true,
"requires": {
"path-parse": "1.0.5"
@@ -5002,9 +5014,9 @@
}
},
"tsutils": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.1.tgz",
- "integrity": "sha1-9Nlc4zkciXHkblTEzw7bCiHdWyQ=",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.13.0.tgz",
+ "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==",
"dev": true,
"requires": {
"tslib": "1.8.0"
@@ -5026,9 +5038,9 @@
}
},
"type-detect": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz",
- "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz",
+ "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==",
"dev": true
},
"typedarray": {
@@ -5038,9 +5050,9 @@
"dev": true
},
"typescript": {
- "version": "2.7.0-dev.20171020",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171020.tgz",
- "integrity": "sha512-Sy1F2YVw7nj2pcMP2bE6YK5dviaY2WRJb12t27EUiW4wkD8GiaZ0sgNBdTKRcvTNFJ8KXjwnl+Ysi5+J5BlcHw==",
+ "version": "2.7.0-dev.20171203",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171203.tgz",
+ "integrity": "sha512-FyhV7OvieIXzjktOb9YmixEIR8olL8IrnonCmJQWGnj8Wt6eoQQKQlkXWPy8mpwEaSIXw/nQO0NpGQ+nWokhRw==",
"dev": true
},
"uglify-js": {
@@ -5165,14 +5177,37 @@
}
},
"vinyl": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
- "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
+ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
"dev": true,
"requires": {
- "clone": "1.0.2",
- "clone-stats": "0.0.1",
- "replace-ext": "0.0.1"
+ "clone": "2.1.1",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ }
}
},
"vinyl-fs": {
diff --git a/package.json b/package.json
index e329db05d85a2..b3c76e6d515c6 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,6 @@
},
"devDependencies": {
"@types/browserify": "latest",
- "@types/chai": "latest",
"@types/colors": "latest",
"@types/convert-source-map": "latest",
"@types/del": "latest",
@@ -53,7 +52,6 @@
"xml2js": "^0.4.19",
"browser-resolve": "^1.11.2",
"browserify": "latest",
- "chai": "latest",
"convert-source-map": "latest",
"del": "latest",
"gulp": "3.X",
diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index 58866194026a9..1919a47873ede 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -295,7 +295,7 @@ namespace FourSlash {
const host = new Utils.MockParseConfigHost(baseDir, /*ignoreCase*/ false, this.inputFiles);
const configJsonObj = ts.parseConfigFileTextToJson(configFileName, this.inputFiles.get(configFileName));
- assert.isTrue(configJsonObj.config !== undefined);
+ assert(configJsonObj.config !== undefined);
const { options, errors } = ts.parseJsonConfigFileContent(configJsonObj.config, host, baseDir);
@@ -437,7 +437,7 @@ namespace FourSlash {
public goToEachMarker(action: () => void) {
const markers = this.getMarkers();
- assert(markers.length);
+ assert(markers.length !== 0);
for (const marker of markers) {
this.goToMarker(marker);
action();
@@ -446,7 +446,7 @@ namespace FourSlash {
public goToEachRange(action: () => void) {
const ranges = this.getRanges();
- assert(ranges.length);
+ assert(ranges.length !== 0);
for (const range of ranges) {
this.goToRangeStart(range);
action();
@@ -793,7 +793,7 @@ namespace FourSlash {
}
const entries = this.getCompletionListAtCaret().entries;
- assert.isTrue(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`);
+ assert(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`);
ts.zipWith(entries, items, (entry, item) => {
assert.equal(entry.name, item, `Unexpected item in completion list`);
});
@@ -947,7 +947,7 @@ namespace FourSlash {
public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) {
const details = this.getCompletionEntryDetails(entryName);
- assert(details, "no completion entry available");
+ assert.isDefined(details, "no completion entry available");
assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text"));
@@ -1082,7 +1082,7 @@ namespace FourSlash {
public verifyRangesReferenceEachOther(ranges?: Range[]) {
ranges = ranges || this.getRanges();
- assert(ranges.length);
+ assert(ranges.length !== 0);
for (const range of ranges) {
this.verifyReferencesOf(range, ranges);
}
@@ -1368,7 +1368,6 @@ Actual: ${stringify(fullActual)}`);
public verifyCurrentParameterIsVariable(isVariable: boolean) {
const signature = this.getActiveSignatureHelpItem();
- assert.isOk(signature);
assert.equal(isVariable, signature.isVariadic);
}
@@ -2019,7 +2018,7 @@ Actual: ${stringify(fullActual)}`);
const implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition);
if (negative) {
- assert.isTrue(implementations && implementations.length > 0, "Expected at least one implementation but got 0");
+ assert(implementations && implementations.length > 0, "Expected at least one implementation but got 0");
}
else {
assert.isUndefined(implementations, "Expected implementation list to be empty but implementations returned");
@@ -3110,7 +3109,7 @@ Actual: ${stringify(fullActual)}`);
if (spanIndex !== undefined) {
const span = this.getTextSpanForRangeAtIndex(spanIndex);
- assert.isTrue(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
+ assert(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
}
assert.equal(item.hasAction, hasAction);
diff --git a/src/harness/harness.ts b/src/harness/harness.ts
index f4a58352b1661..0b361f8db389b 100644
--- a/src/harness/harness.ts
+++ b/src/harness/harness.ts
@@ -23,18 +23,60 @@
///
///
///
-///
-
// Block scoped definitions work poorly for global variables, temporarily enable var
/* tslint:disable:no-var-keyword */
-// this will work in the browser via browserify
-var _chai: typeof chai = require("chai");
-var assert: typeof _chai.assert = _chai.assert;
-// chai's builtin `assert.isFalse` is featureful but slow - we don't use those features,
-// so we'll just overwrite it as an alterative to migrating a bunch of code off of chai
-assert.isFalse = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); };
+function assert(expr: boolean, msg?: string | (() => string)): void {
+ if (!expr) {
+ throw new Error(typeof msg === "string" ? msg : msg());
+ }
+}
+namespace assert {
+ export function isFalse(expr: boolean, msg = "Expected value to be false."): void {
+ assert(!expr, msg);
+ }
+ export function equal(a: T, b: T, msg = "Expected values to be equal."): void {
+ assert(a === b, msg);
+ }
+ export function notEqual(a: T, b: T, msg = "Expected values to not be equal."): void {
+ assert(a !== b, msg);
+ }
+ export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void {
+ assert(x !== undefined && x !== null, msg);
+ }
+ export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void {
+ assert(x === undefined, msg);
+ }
+ export function deepEqual(a: T, b: T, msg?: string): void {
+ assert(isDeepEqual(a, b), msg || (() => `Expected values to be deeply equal:\nExpected:\n${JSON.stringify(a, undefined, 4)}\nActual:\n${JSON.stringify(b, undefined, 4)}`));
+ }
+ export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void {
+ assert(a.length === length, msg);
+ }
+ export function throws(cb: () => void, msg = "Expected callback to throw"): void {
+ let threw = false;
+ try {
+ cb();
+ }
+ catch {
+ threw = true;
+ }
+ assert(threw, msg);
+ }
+
+ function isDeepEqual(a: T, b: T): boolean {
+ if (a === b) {
+ return true;
+ }
+ if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
+ return false;
+ }
+ const aKeys = Object.keys(a).sort();
+ const bKeys = Object.keys(b).sort();
+ return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key]));
+ }
+}
declare var __dirname: string; // Node-specific
var global: NodeJS.Global = Function("return this").call(undefined);
@@ -347,8 +389,8 @@ namespace Utils {
return;
}
- assert(array1, "array1");
- assert(array2, "array2");
+ assert(!!array1, "array1");
+ assert(!!array2, "array2");
assert.equal(array1.length, array2.length, "array1.length !== array2.length");
@@ -371,8 +413,8 @@ namespace Utils {
return;
}
- assert(node1, "node1");
- assert(node2, "node2");
+ assert(!!node1, "node1");
+ assert(!!node2, "node2");
assert.equal(node1.pos, node2.pos, "node1.pos !== node2.pos");
assert.equal(node1.end, node2.end, "node1.end !== node2.end");
assert.equal(node1.kind, node2.kind, "node1.kind !== node2.kind");
@@ -402,8 +444,8 @@ namespace Utils {
return;
}
- assert(array1, "array1");
- assert(array2, "array2");
+ assert(!!array1, "array1");
+ assert(!!array2, "array2");
assert.equal(array1.pos, array2.pos, "array1.pos !== array2.pos");
assert.equal(array1.end, array2.end, "array1.end !== array2.end");
assert.equal(array1.length, array2.length, "array1.length !== array2.length");
@@ -1259,7 +1301,7 @@ namespace Harness {
function findResultCodeFile(fileName: string) {
const sourceFile = result.program.getSourceFile(fileName);
- assert(sourceFile, "Program has no source file with name '" + fileName + "'");
+ assert.isDefined(sourceFile, "Program has no source file with name '" + fileName + "'");
// Is this file going to be emitted separately
let sourceFileName: string;
const outFile = options.outFile || options.out;
@@ -1942,7 +1984,7 @@ namespace Harness {
const data = testUnitData[i];
if (ts.getBaseFileName(data.name).toLowerCase() === "tsconfig.json") {
const configJson = ts.parseJsonText(data.name, data.content);
- assert.isTrue(configJson.endOfFileToken !== undefined);
+ assert(configJson.endOfFileToken !== undefined);
let baseDir = ts.normalizePath(ts.getDirectoryPath(data.name));
if (rootDir) {
baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir);
diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts
index d4b5a9c2a16db..c81875139e5a9 100644
--- a/src/harness/harnessLanguageService.ts
+++ b/src/harness/harnessLanguageService.ts
@@ -174,8 +174,7 @@ namespace Harness.LanguageService {
*/
public positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter {
const script: ScriptInfo = this.getScriptInfo(fileName);
- assert.isOk(script);
-
+ assert(!!script);
return ts.computeLineAndCharacterOfPosition(script.getLineMap(), position);
}
}
@@ -360,7 +359,7 @@ namespace Harness.LanguageService {
classification: parseInt(result[i + 1])
};
- assert.isTrue(t.length > 0, "Result length should be greater than 0, got :" + t.length);
+ assert(t.length > 0, "Result length should be greater than 0, got :" + t.length);
position += t.length;
}
const finalLexState = parseInt(result[result.length - 1]);
diff --git a/src/harness/sourceMapRecorder.ts b/src/harness/sourceMapRecorder.ts
index 606d4e67acdf3..5ab8407067ed2 100644
--- a/src/harness/sourceMapRecorder.ts
+++ b/src/harness/sourceMapRecorder.ts
@@ -285,10 +285,10 @@ namespace Harness.SourceMapRecorder {
}
export function recordNewSourceFileSpan(sourceMapSpan: ts.SourceMapSpan, newSourceFileCode: string) {
- assert.isTrue(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario");
+ assert(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario");
recordSourceMapSpan(sourceMapSpan);
- assert.isTrue(spansOnSingleLine.length === 1);
+ assert(spansOnSingleLine.length === 1);
sourceMapRecorder.WriteLine("-------------------------------------------------------------------");
sourceMapRecorder.WriteLine("emittedFile:" + jsFile.fileName);
sourceMapRecorder.WriteLine("sourceFile:" + sourceMapSources[spansOnSingleLine[0].sourceMapSpan.sourceIndex]);
@@ -331,7 +331,7 @@ namespace Harness.SourceMapRecorder {
function getMarkerId(markerIndex: number) {
let markerId = "";
if (spanMarkerContinues) {
- assert.isTrue(markerIndex === 0);
+ assert(markerIndex === 0);
markerId = "1->";
}
else {
diff --git a/src/harness/tsconfig.json b/src/harness/tsconfig.json
index db38b95ba6a85..7353f3f7efccf 100644
--- a/src/harness/tsconfig.json
+++ b/src/harness/tsconfig.json
@@ -5,7 +5,7 @@
"outFile": "../../built/local/run.js",
"declaration": false,
"types": [
- "node", "mocha", "chai"
+ "node", "mocha"
],
"lib": [
"es6",
diff --git a/src/harness/unittests/commandLineParsing.ts b/src/harness/unittests/commandLineParsing.ts
index 82c2af7f64e4f..5f0cc2acc7845 100644
--- a/src/harness/unittests/commandLineParsing.ts
+++ b/src/harness/unittests/commandLineParsing.ts
@@ -12,7 +12,7 @@ namespace ts {
const parsedErrors = parsed.errors;
const expectedErrors = expectedParsedCommandLine.errors;
- assert.isTrue(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
+ assert(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
for (let i = 0; i < parsedErrors.length; i++) {
const parsedError = parsedErrors[i];
const expectedError = expectedErrors[i];
@@ -23,7 +23,7 @@ namespace ts {
const parsedFileNames = parsed.fileNames;
const expectedFileNames = expectedParsedCommandLine.fileNames;
- assert.isTrue(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
+ assert(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
for (let i = 0; i < parsedFileNames.length; i++) {
const parsedFileName = parsedFileNames[i];
const expectedFileName = expectedFileNames[i];
diff --git a/src/harness/unittests/compileOnSave.ts b/src/harness/unittests/compileOnSave.ts
index a64d7bdd2a57f..808e03a06895b 100644
--- a/src/harness/unittests/compileOnSave.ts
+++ b/src/harness/unittests/compileOnSave.ts
@@ -25,7 +25,7 @@ namespace ts.projectSystem {
const actualResultSingleProjectFileNameList = actualResultSingleProject.fileNames.sort();
const expectedResultSingleProjectFileNameList = map(expectedResultSingleProject.files, f => f.path).sort();
- assert.isTrue(
+ assert(
arrayIsEqualTo(actualResultSingleProjectFileNameList, expectedResultSingleProjectFileNameList),
`For project ${actualResultSingleProject.projectFileName}, the actual result is ${actualResultSingleProjectFileNameList}, while expected ${expectedResultSingleProjectFileNameList}`);
}
@@ -563,7 +563,7 @@ namespace ts.projectSystem {
session.executeCommand(compileFileRequest);
const expectedEmittedFileName = "/a/b/f1.js";
- assert.isTrue(host.fileExists(expectedEmittedFileName));
+ assert(host.fileExists(expectedEmittedFileName));
assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`);
});
@@ -600,11 +600,11 @@ namespace ts.projectSystem {
session.executeCommand(emitRequest);
const expectedOutFileName = "/a/b/dist.js";
- assert.isTrue(host.fileExists(expectedOutFileName));
+ assert(host.fileExists(expectedOutFileName));
const outFileContent = host.readFile(expectedOutFileName);
- assert.isTrue(outFileContent.indexOf(file1.content) !== -1);
- assert.isTrue(outFileContent.indexOf(file2.content) === -1);
- assert.isTrue(outFileContent.indexOf(file3.content) === -1);
+ assert(outFileContent.indexOf(file1.content) !== -1);
+ assert(outFileContent.indexOf(file2.content) === -1);
+ assert(outFileContent.indexOf(file3.content) === -1);
});
it("should use project root as current directory so that compile on save results in correct file mapping", () => {
@@ -634,19 +634,19 @@ namespace ts.projectSystem {
// Verify js file
const expectedOutFileName = "/root/TypeScriptProject3/TypeScriptProject3/" + outFileName;
- assert.isTrue(host.fileExists(expectedOutFileName));
+ assert(host.fileExists(expectedOutFileName));
const outFileContent = host.readFile(expectedOutFileName);
verifyContentHasString(outFileContent, file1.content);
verifyContentHasString(outFileContent, `//# ${"sourceMappingURL"}=${outFileName}.map`); // Sometimes tools can sometimes see this line as a source mapping url comment, so we obfuscate it a little
// Verify map file
const expectedMapFileName = expectedOutFileName + ".map";
- assert.isTrue(host.fileExists(expectedMapFileName));
+ assert(host.fileExists(expectedMapFileName));
const mapFileContent = host.readFile(expectedMapFileName);
verifyContentHasString(mapFileContent, `"sources":["${inputFileName}"]`);
function verifyContentHasString(content: string, str: string) {
- assert.isTrue(stringContains(content, str), `Expected "${content}" to have "${str}"`);
+ assert(stringContains(content, str), `Expected "${content}" to have "${str}"`);
}
});
});
diff --git a/src/harness/unittests/configurationExtension.ts b/src/harness/unittests/configurationExtension.ts
index 5a1b155fbcfad..ebe5b63105940 100644
--- a/src/harness/unittests/configurationExtension.ts
+++ b/src/harness/unittests/configurationExtension.ts
@@ -113,7 +113,7 @@ namespace ts {
const caseSensitiveHost = new Utils.MockParseConfigHost(caseSensitiveBasePath, /*useCaseSensitiveFileNames*/ true, testContents);
function verifyDiagnostics(actual: Diagnostic[], expected: {code: number, category: DiagnosticCategory, messageText: string}[]) {
- assert.isTrue(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
+ assert(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
for (let i = 0; i < actual.length; i++) {
const actualError = actual[i];
const expectedError = expected[i];
diff --git a/src/harness/unittests/convertCompilerOptionsFromJson.ts b/src/harness/unittests/convertCompilerOptionsFromJson.ts
index 2a8f1fe3a8940..9f5ca179efdb6 100644
--- a/src/harness/unittests/convertCompilerOptionsFromJson.ts
+++ b/src/harness/unittests/convertCompilerOptionsFromJson.ts
@@ -16,7 +16,7 @@ namespace ts {
assert.equal(parsedCompilerOptions, expectedCompilerOptions);
const expectedErrors = expectedResult.errors;
- assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
+ assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
@@ -42,15 +42,15 @@ namespace ts {
const actualErrors = filter(actualParseErrors, error => error.code !== Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code);
const expectedErrors = expectedResult.errors;
- assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
+ assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
- assert(actualError.file);
- assert(actualError.start);
- assert(actualError.length);
+ assert.isDefined(actualError.file);
+ assert(actualError.start > 0);
+ assert(actualError.length > 0);
}
}
diff --git a/src/harness/unittests/convertTypeAcquisitionFromJson.ts b/src/harness/unittests/convertTypeAcquisitionFromJson.ts
index be1ada10a972c..ddeec6b9869d8 100644
--- a/src/harness/unittests/convertTypeAcquisitionFromJson.ts
+++ b/src/harness/unittests/convertTypeAcquisitionFromJson.ts
@@ -17,16 +17,16 @@ namespace ts {
function verifyErrors(actualErrors: Diagnostic[], expectedResult: ExpectedResult, hasLocation?: boolean) {
const expectedErrors = expectedResult.errors;
- assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
+ assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
if (hasLocation) {
- assert(actualError.file);
- assert(actualError.start);
- assert(actualError.length);
+ assert.isDefined(actualError.file);
+ assert(actualError.start > 0);
+ assert(actualError.length > 0);
}
}
}
diff --git a/src/harness/unittests/extractRanges.ts b/src/harness/unittests/extractRanges.ts
index 493c9639c3d08..08bae357f0e17 100644
--- a/src/harness/unittests/extractRanges.ts
+++ b/src/harness/unittests/extractRanges.ts
@@ -39,7 +39,7 @@ namespace ts {
assert.equal(end, expectedRange.end, "incorrect end of range");
}
else {
- assert.isTrue(!result.targetRange, `expected range to extract to be undefined`);
+ assert(!result.targetRange, `expected range to extract to be undefined`);
}
}
diff --git a/src/harness/unittests/hostNewLineSupport.ts b/src/harness/unittests/hostNewLineSupport.ts
index 95a05f101f7d8..ac5031ed56bb1 100644
--- a/src/harness/unittests/hostNewLineSupport.ts
+++ b/src/harness/unittests/hostNewLineSupport.ts
@@ -47,7 +47,7 @@ namespace ts {
assert(!result.emitSkipped, "emit was skipped");
assert(result.outputFiles.length === 1, "a number of files other than 1 was output");
assert(result.outputFiles[0].name === "input.js", `Expected output file name input.js, but got ${result.outputFiles[0].name}`);
- assert(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
+ assert.isDefined(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
assert(!result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /[^\r]\n/ : /\r\n/), "expected not to find inappropriate newlines");
}
diff --git a/src/harness/unittests/incrementalParser.ts b/src/harness/unittests/incrementalParser.ts
index c71b89d3da68d..2facc4aa152e7 100644
--- a/src/harness/unittests/incrementalParser.ts
+++ b/src/harness/unittests/incrementalParser.ts
@@ -66,7 +66,7 @@ namespace ts {
assertSameDiagnostics(newTree, incrementalNewTree);
// There should be no reused nodes between two trees that are fully parsed.
- assert.isTrue(reusedElements(oldTree, newTree) === 0);
+ assert(reusedElements(oldTree, newTree) === 0);
assert.equal(newTree.fileName, incrementalNewTree.fileName, "newTree.fileName !== incrementalNewTree.fileName");
assert.equal(newTree.text, incrementalNewTree.text, "newTree.text !== incrementalNewTree.text");
diff --git a/src/harness/unittests/jsDocParsing.ts b/src/harness/unittests/jsDocParsing.ts
index b7215f5ea3539..51647c4636855 100644
--- a/src/harness/unittests/jsDocParsing.ts
+++ b/src/harness/unittests/jsDocParsing.ts
@@ -7,7 +7,7 @@ namespace ts {
function parsesCorrectly(name: string, content: string) {
it(name, () => {
const typeAndDiagnostics = ts.parseJSDocTypeExpressionForTests(content);
- assert.isTrue(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
+ assert(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
Harness.Baseline.runBaseline("JSDocParsing/TypeExpressions.parsesCorrectly." + name + ".json",
() => Utils.sourceFileToJSON(typeAndDiagnostics.jsDocTypeExpression.type));
@@ -17,7 +17,7 @@ namespace ts {
function parsesIncorrectly(name: string, content: string) {
it(name, () => {
const type = ts.parseJSDocTypeExpressionForTests(content);
- assert.isTrue(!type || type.diagnostics.length > 0);
+ assert(!type || type.diagnostics.length > 0);
});
}
@@ -106,7 +106,7 @@ namespace ts {
function parsesIncorrectly(name: string, content: string) {
it(name, () => {
const type = parseIsolatedJSDocComment(content);
- assert.isTrue(!type || type.diagnostics.length > 0);
+ assert(!type || type.diagnostics.length > 0);
});
}
diff --git a/src/harness/unittests/languageService.ts b/src/harness/unittests/languageService.ts
index 1407a518617f8..a24a124e27c15 100644
--- a/src/harness/unittests/languageService.ts
+++ b/src/harness/unittests/languageService.ts
@@ -45,7 +45,7 @@ export function Component(x: Config): any;`
readDirectory: noop as any,
});
const definitions = languageService.getDefinitionAtPosition("foo.ts", 160); // 160 is the latter `vueTemplateHtml` position
- expect(definitions).to.exist; // tslint:disable-line no-unused-expression
+ assert.isDefined(definitions);
});
});
}
\ No newline at end of file
diff --git a/src/harness/unittests/moduleResolution.ts b/src/harness/unittests/moduleResolution.ts
index de79ba06cf9b3..f77030aa183f9 100644
--- a/src/harness/unittests/moduleResolution.ts
+++ b/src/harness/unittests/moduleResolution.ts
@@ -4,9 +4,9 @@ namespace ts {
export function checkResolvedModule(expected: ResolvedModuleFull, actual: ResolvedModuleFull): boolean {
if (!expected === !actual) {
if (expected) {
- assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
- assert.isTrue(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
- assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
+ assert(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
+ assert(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
+ assert(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
}
return true;
}
@@ -14,7 +14,7 @@ namespace ts {
}
export function checkResolvedModuleWithFailedLookupLocations(actual: ResolvedModuleWithFailedLookupLocations, expectedResolvedModule: ResolvedModuleFull, expectedFailedLookupLocations: string[]): void {
- assert.isTrue(actual.resolvedModule !== undefined, "module should be resolved");
+ assert(actual.resolvedModule !== undefined, "module should be resolved");
checkResolvedModule(actual.resolvedModule, expectedResolvedModule);
assert.deepEqual(actual.failedLookupLocations, expectedFailedLookupLocations);
}
@@ -58,7 +58,7 @@ namespace ts {
realpath,
directoryExists: path => directories.has(path),
fileExists: path => {
- assert.isTrue(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
+ assert(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
return map.has(path);
}
};
@@ -351,7 +351,7 @@ namespace ts {
// try to get file using a relative name
for (const relativeFileName of relativeNamesToCheck) {
- assert.isTrue(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
+ assert(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
}
}
@@ -1074,7 +1074,7 @@ import b = require("./moduleB");
assert.equal(diagnostics1.length, 1, "expected one diagnostic");
createProgram(names, {}, compilerHost, program1);
- assert.isTrue(program1.structureIsReused === StructureIsReused.Completely);
+ assert(program1.structureIsReused === StructureIsReused.Completely);
const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics();
assert.equal(diagnostics2.length, 1, "expected one diagnostic");
assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic");
diff --git a/src/harness/unittests/programMissingFiles.ts b/src/harness/unittests/programMissingFiles.ts
index ce8abc232e746..8d4e8a246b92b 100644
--- a/src/harness/unittests/programMissingFiles.ts
+++ b/src/harness/unittests/programMissingFiles.ts
@@ -6,7 +6,7 @@ namespace ts {
const map = arrayToSet(expected) as Map;
for (const missing of missingPaths) {
const value = map.get(missing);
- assert.isTrue(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
+ assert(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
map.set(missing, false);
}
const notFound = mapDefinedIter(map.keys(), k => map.get(k) === true ? k : undefined);
diff --git a/src/harness/unittests/projectErrors.ts b/src/harness/unittests/projectErrors.ts
index dae465a3ef333..d146b3af0806a 100644
--- a/src/harness/unittests/projectErrors.ts
+++ b/src/harness/unittests/projectErrors.ts
@@ -5,7 +5,7 @@
namespace ts.projectSystem {
describe("Project errors", () => {
function checkProjectErrors(projectFiles: server.ProjectFilesWithTSDiagnostics, expectedErrors: ReadonlyArray): void {
- assert.isTrue(projectFiles !== undefined, "missing project files");
+ assert(projectFiles !== undefined, "missing project files");
checkProjectErrorsWorker(projectFiles.projectErrors, expectedErrors);
}
@@ -15,7 +15,7 @@ namespace ts.projectSystem {
for (let i = 0; i < errors.length; i++) {
const actualMessage = flattenDiagnosticMessageText(errors[i].messageText, "\n");
const expectedMessage = expectedErrors[i];
- assert.isTrue(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
+ assert(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
}
}
}
@@ -24,7 +24,7 @@ namespace ts.projectSystem {
assert.equal(errors ? errors.length : 0, expectedErrors.length, `expected ${expectedErrors.length} error in the list`);
if (expectedErrors.length) {
zipWith(errors, expectedErrors, ({ message: actualMessage }, expectedMessage) => {
- assert.isTrue(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
+ assert(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
});
}
}
@@ -137,13 +137,13 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
- assert.isTrue(configuredProject !== undefined, "should find configured project");
+ assert(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, [
"'{' expected."
]);
- assert.isNotNull(projectErrors[0].file);
+ assert.isDefined(projectErrors[0].file);
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
}
// fix config and trigger watcher
@@ -151,7 +151,7 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
- assert.isTrue(configuredProject !== undefined, "should find configured project");
+ assert(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, []);
@@ -182,7 +182,7 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
- assert.isTrue(configuredProject !== undefined, "should find configured project");
+ assert(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, []);
@@ -192,13 +192,13 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
- assert.isTrue(configuredProject !== undefined, "should find configured project");
+ assert(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, [
"'{' expected."
]);
- assert.isNotNull(projectErrors[0].file);
+ assert.isDefined(projectErrors[0].file);
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
}
});
diff --git a/src/harness/unittests/reuseProgramStructure.ts b/src/harness/unittests/reuseProgramStructure.ts
index fdccc8a7795f1..45fe7383c31d8 100644
--- a/src/harness/unittests/reuseProgramStructure.ts
+++ b/src/harness/unittests/reuseProgramStructure.ts
@@ -193,14 +193,14 @@ namespace ts {
function checkCache(caption: string, program: Program, fileName: string, expectedContent: Map, getCache: (f: SourceFile) => Map, entryChecker: (expected: T, original: T) => boolean): void {
const file = program.getSourceFile(fileName);
- assert.isTrue(file !== undefined, `cannot find file ${fileName}`);
+ assert(file !== undefined, `cannot find file ${fileName}`);
const cache = getCache(file);
if (expectedContent === undefined) {
- assert.isTrue(cache === undefined, `expected ${caption} to be undefined`);
+ assert(cache === undefined, `expected ${caption} to be undefined`);
}
else {
- assert.isTrue(cache !== undefined, `expected ${caption} to be set`);
- assert.isTrue(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
+ assert(cache !== undefined, `expected ${caption} to be set`);
+ assert(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
}
}
@@ -329,7 +329,7 @@ namespace ts {
const options: CompilerOptions = { target, noLib: true };
const program1 = newProgram(files, ["a.ts"], options);
- assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
+ assert(program1.getMissingFilePaths().length !== 0);
const program2 = updateProgram(program1, ["a.ts"], options, noop);
assert.deepEqual(program1.getMissingFilePaths(), program2.getMissingFilePaths());
@@ -341,11 +341,11 @@ namespace ts {
const options: CompilerOptions = { target, noLib: true };
const program1 = newProgram(files, ["a.ts"], options);
- assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
+ assert(program1.getMissingFilePaths().length !== 0);
const newTexts: NamedSourceText[] = files.concat([{ name: "non-existing-file.ts", text: SourceText.New("", "", `var x = 1`) }]);
const program2 = updateProgram(program1, ["a.ts"], options, noop, newTexts);
- assert.deepEqual(emptyArray, program2.getMissingFilePaths());
+ assert.lengthOf(program2.getMissingFilePaths(), 0);
assert.equal(StructureIsReused.Not, program1.structureIsReused);
});
@@ -826,12 +826,12 @@ namespace ts {
updateProgramText(files, root, "const x = 1;");
});
assert.equal(program1.structureIsReused, StructureIsReused.Completely);
- assert.deepEqual(program2.getSemanticDiagnostics(), emptyArray);
+ assert.lengthOf(program2.getSemanticDiagnostics(), 0);
});
it("Target changes -> redirect broken", () => {
const program1 = createRedirectProgram();
- assert.deepEqual(program1.getSemanticDiagnostics(), emptyArray);
+ assert.lengthOf(program1.getSemanticDiagnostics(), 0);
const program2 = updateRedirectProgram(program1, files => {
updateProgramText(files, axIndex, "export default class X { private x: number; private y: number; }");
@@ -860,7 +860,7 @@ namespace ts {
updateProgramText(files, bxPackage, JSON.stringify({ name: "x", version: "1.2.3" }));
});
assert.equal(program1.structureIsReused, StructureIsReused.Not);
- assert.deepEqual(program2.getSemanticDiagnostics(), []);
+ assert.lengthOf(program2.getSemanticDiagnostics(), 0);
});
});
});
@@ -888,7 +888,7 @@ namespace ts {
/*hasInvalidatedResolution*/ returnFalse,
/*hasChangedAutomaticTypeDirectiveNames*/ false
);
- assert.isTrue(actual);
+ assert(actual);
}
function duplicate(options: CompilerOptions): CompilerOptions;
diff --git a/src/harness/unittests/services/colorization.ts b/src/harness/unittests/services/colorization.ts
index 17d4132e9e544..b03285d333339 100644
--- a/src/harness/unittests/services/colorization.ts
+++ b/src/harness/unittests/services/colorization.ts
@@ -50,7 +50,7 @@ describe("Colorization", () => {
const actualEntry = getEntryAtPosition(result, actualEntryPosition);
- assert(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
+ assert.isDefined(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
assert.equal(actualEntry.classification, expectedEntry.classification, "Classification class does not match expected. Expected: " + ts.TokenClass[expectedEntry.classification] + ", Actual: " + ts.TokenClass[actualEntry.classification]);
assert.equal(actualEntry.length, expectedEntry.value.length, "Classification length does not match expected. Expected: " + ts.TokenClass[expectedEntry.value.length] + ", Actual: " + ts.TokenClass[actualEntry.length]);
}
diff --git a/src/harness/unittests/services/patternMatcher.ts b/src/harness/unittests/services/patternMatcher.ts
index fef382e8a3b03..62946afde37f4 100644
--- a/src/harness/unittests/services/patternMatcher.ts
+++ b/src/harness/unittests/services/patternMatcher.ts
@@ -140,25 +140,25 @@ describe("PatternMatcher", () => {
it("PreferCaseSensitiveCamelCaseMatchToLongPattern1", () => {
const match = getFirstMatch("FogBar", "FBB");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("PreferCaseSensitiveCamelCaseMatchToLongPattern2", () => {
const match = getFirstMatch("FogBar", "FoooB");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("CamelCaseMatchPartiallyUnmatched", () => {
const match = getFirstMatch("FogBarBaz", "FZ");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("CamelCaseMatchCompletelyUnmatched", () => {
const match = getFirstMatch("FogBarBaz", "ZZ");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("TwoUppercaseCharacters", () => {
@@ -220,7 +220,7 @@ describe("PatternMatcher", () => {
it("PreferCaseSensitiveMiddleUnderscore3", () => {
const match = getFirstMatch("Fog_Bar", "F__B");
- assert.isTrue(undefined === match);
+ assert(undefined === match);
});
it("PreferCaseSensitiveMiddleUnderscore4", () => {
@@ -264,25 +264,25 @@ describe("PatternMatcher", () => {
it("AllLowerPattern1", () => {
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventargs");
- assert.isTrue(undefined !== match);
+ assert(undefined !== match);
});
it("AllLowerPattern2", () => {
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventarrrgh");
- assert.isTrue(undefined === match);
+ assert(undefined === match);
});
it("AllLowerPattern3", () => {
const match = getFirstMatch("ABCDEFGH", "bcd");
- assert.isTrue(undefined !== match);
+ assert(undefined !== match);
});
it("AllLowerPattern4", () => {
const match = getFirstMatch("AbcdefghijEfgHij", "efghij");
- assert.isTrue(undefined === match);
+ assert(undefined === match);
});
});
@@ -370,13 +370,13 @@ describe("PatternMatcher", () => {
it("BlankPattern", () => {
const matches = getAllMatches("AddMetadataReference", "");
- assert.isTrue(matches === undefined);
+ assert(matches === undefined);
});
it("WhitespaceOnlyPattern", () => {
const matches = getAllMatches("AddMetadataReference", " ");
- assert.isTrue(matches === undefined);
+ assert(matches === undefined);
});
it("EachWordSeparately1", () => {
@@ -403,13 +403,13 @@ describe("PatternMatcher", () => {
it("MixedCasing", () => {
const matches = getAllMatches("AddMetadataReference", "mEta");
- assert.isTrue(matches === undefined);
+ assert(matches === undefined);
});
it("MixedCasing2", () => {
const matches = getAllMatches("AddMetadataReference", "Data");
- assert.isTrue(matches === undefined);
+ assert(matches === undefined);
});
it("AsteriskSplit", () => {
@@ -421,7 +421,7 @@ describe("PatternMatcher", () => {
it("LowercaseSubstring1", () => {
const matches = getAllMatches("Operator", "a");
- assert.isTrue(matches === undefined);
+ assert(matches === undefined);
});
it("LowercaseSubstring2", () => {
@@ -441,7 +441,7 @@ describe("PatternMatcher", () => {
it("DottedPattern2", () => {
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "C.Q");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("DottedPattern3", () => {
@@ -464,13 +464,13 @@ describe("PatternMatcher", () => {
it("DottedPattern6", () => {
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "F.F.B.B.Quux");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
it("DottedPattern7", () => {
let match = getFirstMatch("UIElement", "UIElement");
match = getFirstMatch("GetKeyword", "UIElement");
- assert.isTrue(match === undefined);
+ assert(match === undefined);
});
});
@@ -508,8 +508,8 @@ describe("PatternMatcher", () => {
}
function assertInRange(val: number, low: number, high: number) {
- assert.isTrue(val >= low);
- assert.isTrue(val <= high);
+ assert(val >= low);
+ assert(val <= high);
}
function verifyBreakIntoCharacterSpans(original: string, ...parts: string[]): void {
@@ -521,6 +521,6 @@ describe("PatternMatcher", () => {
}
function assertContainsKind(kind: ts.PatternMatchKind, results: ts.PatternMatch[]) {
- assert.isTrue(ts.forEach(results, r => r.kind === kind));
+ assert(ts.forEach(results, r => r.kind === kind));
}
});
diff --git a/src/harness/unittests/services/preProcessFile.ts b/src/harness/unittests/services/preProcessFile.ts
index 1e13bc3e3456a..acbb8edd67ca3 100644
--- a/src/harness/unittests/services/preProcessFile.ts
+++ b/src/harness/unittests/services/preProcessFile.ts
@@ -18,7 +18,7 @@ describe("PreProcessFile:", () => {
return;
}
if (!expected) {
- assert.isTrue(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
+ assert(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
}
assert.equal(actual.length, expected.length, `[${kind}] Actual array's length does not match expected length. Expected files: ${JSON.stringify(expected)}, actual files: ${JSON.stringify(actual)}`);
diff --git a/src/harness/unittests/session.ts b/src/harness/unittests/session.ts
index 5cde1e9d2eaa2..9912294d1d265 100644
--- a/src/harness/unittests/session.ts
+++ b/src/harness/unittests/session.ts
@@ -1,7 +1,5 @@
///
-const expect: typeof _chai.expect = _chai.expect;
-
namespace ts.server {
let lastWrittenToHost: string;
const mockHost: ServerHost = {
@@ -82,7 +80,7 @@ namespace ts.server {
}
};
- expect(() => session.executeCommand(req)).to.throw();
+ assert.throws(() => session.executeCommand(req));
});
it("should output an error response when a command does not exist", () => {
const req: protocol.Request = {
@@ -101,7 +99,7 @@ namespace ts.server {
request_seq: 0,
success: false
};
- expect(lastSent).to.deep.equal(expected);
+ assert.deepEqual(lastSent, expected);
});
it("should return a tuple containing the response and if a response is required on success", () => {
const req: protocol.ConfigureRequest = {
@@ -116,17 +114,18 @@ namespace ts.server {
}
};
- expect(session.executeCommand(req)).to.deep.equal({
+ assert.deepEqual(session.executeCommand(req), {
responseRequired: false
});
- expect(lastSent).to.deep.equal({
+ const expected: protocol.Response = {
command: CommandNames.Configure,
type: "response",
success: true,
request_seq: 0,
seq: 0,
body: undefined
- });
+ };
+ assert.deepEqual(lastSent, expected);
});
it("should handle literal types in request", () => {
const configureRequest: protocol.ConfigureRequest = {
@@ -297,14 +296,15 @@ namespace ts.server {
session.onMessage(JSON.stringify(req));
- expect(lastSent).to.deep.equal({
+ const expected: protocol.ConfigureResponse = {
command: CommandNames.Configure,
type: "response",
success: true,
request_seq: 0,
seq: 0,
body: undefined
- });
+ };
+ assert.deepEqual(lastSent, expected);
});
});
@@ -316,9 +316,9 @@ namespace ts.server {
const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`;
session.send = Session.prototype.send;
- assert(session.send);
- expect(session.send(msg)).to.not.exist; // tslint:disable-line no-unused-expression
- expect(lastWrittenToHost).to.equal(resultMsg);
+ assert.isDefined(session.send);
+ session.send(msg);
+ assert.equal(lastWrittenToHost, resultMsg);
});
});
@@ -335,11 +335,7 @@ namespace ts.server {
session.addProtocolHandler(command, () => result);
- expect(session.executeCommand({
- command,
- seq: 0,
- type: "request"
- })).to.deep.equal(result);
+ assert.deepEqual(session.executeCommand({ command, seq: 0, type: "request" }), result);
});
it("throws when a duplicate handler is passed", () => {
const respBody = {
@@ -353,8 +349,7 @@ namespace ts.server {
session.addProtocolHandler(command, () => resp);
- expect(() => session.addProtocolHandler(command, () => resp))
- .to.throw(`Protocol handler already exists for command "${command}"`);
+ assert.throws(() => session.addProtocolHandler(command, () => resp), `Protocol handler already exists for command "${command}"`);
});
});
@@ -367,12 +362,13 @@ namespace ts.server {
session.event(info, evt);
- expect(lastSent).to.deep.equal({
+ const expected: protocol.Event = {
type: "event",
seq: 0,
event: evt,
body: info
- });
+ };
+ assert.deepEqual(lastSent, expected);
});
});
@@ -387,14 +383,15 @@ namespace ts.server {
session.output(body, command, /*reqSeq*/ 0);
- expect(lastSent).to.deep.equal({
+ const expected: protocol.Response = {
seq: 0,
request_seq: 0,
type: "response",
command,
body,
success: true
- });
+ };
+ assert.deepEqual(lastSent, expected);
});
});
});
@@ -455,14 +452,16 @@ namespace ts.server {
session.onMessage(JSON.stringify(request));
const lastSent = session.lastSent as protocol.Response;
- expect(lastSent).to.contain({
+ assert.deepEqual({ ...lastSent, message: undefined }, {
+ request_seq: 0,
seq: 0,
type: "response",
command,
- success: false
+ success: false,
+ message: undefined,
});
- expect(lastSent.message).has.string("myMessage").and.has.string("f1");
+ assert(ts.stringContains(lastSent.message, "myMessage") && ts.stringContains(lastSent.message, "f1"));
});
});
@@ -502,23 +501,24 @@ namespace ts.server {
session.output(body, command, /*reqSeq*/ 0);
- expect(session.lastSent).to.deep.equal({
+ const expected: protocol.Response = {
seq: 0,
request_seq: 0,
type: "response",
command,
body,
success: true
- });
+ };
+ assert.deepEqual(session.lastSent, expected);
});
it("can add and respond to new protocol handlers", () => {
const session = new TestSession();
- expect(session.executeCommand({
+ assert.deepEqual(session.executeCommand({
seq: 0,
type: "request",
command: session.customHandler
- })).to.deep.equal({
+ }), {
response: undefined,
responseRequired: true
});
@@ -528,8 +528,7 @@ namespace ts.server {
new class extends TestSession {
constructor() {
super();
- assert(this.projectService);
- expect(this.projectService).to.be.instanceOf(ProjectService);
+ assert(this.projectService instanceof ProjectService);
}
}();
});
@@ -653,9 +652,9 @@ namespace ts.server {
// Add an event handler
cli.on("testevent", (eventinfo) => {
- expect(eventinfo).to.equal(toEvent);
+ assert.equal(eventinfo, toEvent);
responses++;
- expect(responses).to.equal(1);
+ assert.equal(responses, 1);
});
// Trigger said event from the server
@@ -665,8 +664,8 @@ namespace ts.server {
cli.execute("echo", toEcho, (resp) => {
assert(resp.success, resp.message);
responses++;
- expect(responses).to.equal(2);
- expect(resp.body).to.deep.equal(toEcho);
+ assert.equal(responses, 2);
+ assert.deepEqual(resp.body, toEcho);
});
// Queue a configure command
@@ -678,7 +677,7 @@ namespace ts.server {
}, (resp) => {
assert(resp.success, resp.message);
responses++;
- expect(responses).to.equal(3);
+ assert.equal(responses, 3);
done();
});
diff --git a/src/harness/unittests/textStorage.ts b/src/harness/unittests/textStorage.ts
index aa8231aa31af4..78a736487ccfc 100644
--- a/src/harness/unittests/textStorage.ts
+++ b/src/harness/unittests/textStorage.ts
@@ -33,20 +33,20 @@ namespace ts.textStorage {
for (let offset = 0; offset < end - start; offset++) {
const pos1 = ts1.lineOffsetToPosition(line + 1, offset + 1);
const pos2 = ts2.lineOffsetToPosition(line + 1, offset + 1);
- assert.isTrue(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
+ assert(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
}
const {start: start1, length: length1 } = ts1.lineToTextSpan(line);
const {start: start2, length: length2 } = ts2.lineToTextSpan(line);
- assert.isTrue(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
- assert.isTrue(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
+ assert(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
+ assert(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
}
for (let pos = 0; pos < f.content.length; pos++) {
const { line: line1, offset: offset1 } = ts1.positionToLineOffset(pos);
const { line: line2, offset: offset2 } = ts2.positionToLineOffset(pos);
- assert.isTrue(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
- assert.isTrue(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
+ assert(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
+ assert(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
}
});
@@ -55,16 +55,16 @@ namespace ts.textStorage {
const ts1 = new server.TextStorage(host, server.asNormalizedPath(f.path));
ts1.getSnapshot();
- assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
+ assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
ts1.edit(0, 5, " ");
- assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
+ assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
ts1.useText();
- assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
+ assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
ts1.getLineInfo(0);
- assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
+ assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
});
});
}
diff --git a/src/harness/unittests/tscWatchMode.ts b/src/harness/unittests/tscWatchMode.ts
index 8087d038b7e23..00d7e17d60ef2 100644
--- a/src/harness/unittests/tscWatchMode.ts
+++ b/src/harness/unittests/tscWatchMode.ts
@@ -106,7 +106,7 @@ namespace ts.tscWatch {
function assertWatchDiagnosticAt(host: WatchedSystem, outputAt: number, diagnosticMessage: DiagnosticMessage) {
const output = host.getOutput()[outputAt];
- assert.isTrue(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
+ assert(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
}
function getWatchDiagnosticWithoutDate(host: WatchedSystem, diagnosticMessage: DiagnosticMessage) {
@@ -1516,11 +1516,11 @@ namespace ts.tscWatch {
function verifyEmittedFiles(host: WatchedSystem, emittedFiles: EmittedFile[]) {
for (const { path, content, shouldBeWritten } of emittedFiles) {
if (shouldBeWritten) {
- assert.isTrue(host.fileExists(path), `Expected file ${path} to be present`);
+ assert(host.fileExists(path), `Expected file ${path} to be present`);
assert.equal(host.readFile(path), content, `Contents of file ${path} do not match`);
}
else {
- assert.isNotTrue(host.fileExists(path), `Expected file ${path} to be absent`);
+ assert(!host.fileExists(path), `Expected file ${path} to be absent`);
}
}
}
@@ -1696,7 +1696,7 @@ namespace ts.tscWatch {
return false;
}
fileExistsIsCalled = true;
- assert.isTrue(fileName.indexOf("/f2.") !== -1);
+ assert(fileName.indexOf("/f2.") !== -1);
return originalFileExists.call(host, fileName);
};
@@ -1711,7 +1711,7 @@ namespace ts.tscWatch {
getDiagnosticModuleNotFoundOfFile(watch(), root, "f2")
]);
- assert.isTrue(fileExistsIsCalled);
+ assert(fileExistsIsCalled);
}
{
let fileExistsCalled = false;
@@ -1720,7 +1720,7 @@ namespace ts.tscWatch {
return false;
}
fileExistsCalled = true;
- assert.isTrue(fileName.indexOf("/f1.") !== -1);
+ assert(fileName.indexOf("/f1.") !== -1);
return originalFileExists.call(host, fileName);
};
@@ -1731,7 +1731,7 @@ namespace ts.tscWatch {
host.runQueuedTimeoutCallbacks();
checkOutputErrors(host, [f1IsNotModule, cannotFindFoo]);
- assert.isTrue(fileExistsCalled);
+ assert(fileExistsCalled);
}
});
@@ -1764,7 +1764,7 @@ namespace ts.tscWatch {
const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD });
- assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
+ assert(fileExistsCalledForBar, "'fileExists' should be called");
checkOutputErrors(host, [
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
], /*isInitial*/ true);
@@ -1774,7 +1774,7 @@ namespace ts.tscWatch {
host.reloadFS(files.concat(imported));
host.runQueuedTimeoutCallbacks();
- assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
+ assert(fileExistsCalledForBar, "'fileExists' should be called.");
checkOutputErrors(host, emptyArray);
});
@@ -1806,13 +1806,13 @@ namespace ts.tscWatch {
const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD });
- assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
+ assert(fileExistsCalledForBar, "'fileExists' should be called");
checkOutputErrors(host, emptyArray, /*isInitial*/ true);
fileExistsCalledForBar = false;
host.reloadFS(files);
host.runQueuedTimeoutCallbacks();
- assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
+ assert(fileExistsCalledForBar, "'fileExists' should be called.");
checkOutputErrors(host, [
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
]);
@@ -1820,7 +1820,7 @@ namespace ts.tscWatch {
fileExistsCalledForBar = false;
host.reloadFS(filesWithImported);
host.checkTimeoutQueueLengthAndRun(1);
- assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
+ assert(fileExistsCalledForBar, "'fileExists' should be called.");
checkOutputErrors(host, emptyArray);
});
@@ -2023,7 +2023,7 @@ declare module "fs" {
checkProgramActualFiles(watch(), mapDefined(files, f => f === configFile ? undefined : f.path));
const outputFile1 = changeExtension((outputFolder + getBaseFileName(file1.path)), ".js");
- assert.isTrue(host.fileExists(outputFile1));
+ assert(host.fileExists(outputFile1));
assert.equal(host.readFile(outputFile1), file1.content + host.newLine);
});
});
diff --git a/src/harness/unittests/tsconfigParsing.ts b/src/harness/unittests/tsconfigParsing.ts
index 8d56360bba50b..0f03b5630b3c3 100644
--- a/src/harness/unittests/tsconfigParsing.ts
+++ b/src/harness/unittests/tsconfigParsing.ts
@@ -11,20 +11,20 @@ namespace ts {
function assertParseError(jsonText: string) {
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
assert.deepEqual(parsed.config, {});
- assert.isTrue(undefined !== parsed.error);
+ assert(undefined !== parsed.error);
}
function assertParseErrorWithExcludesKeyword(jsonText: string) {
{
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
const parsedCommand = ts.parseJsonConfigFileContent(parsed.config, ts.sys, "tests/cases/unittests");
- assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
+ assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
}
{
const parsed = ts.parseJsonText("/apath/tsconfig.json", jsonText);
const parsedCommand = ts.parseJsonSourceFileConfigFileContent(parsed, ts.sys, "tests/cases/unittests");
- assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
+ assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
}
}
@@ -44,26 +44,26 @@ namespace ts {
function assertParseFileList(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedFileList: string[]) {
{
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
- assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
+ assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
}
{
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
- assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
+ assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
}
}
function assertParseFileDiagnostics(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedDiagnosticCode: number, noLocation?: boolean) {
{
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
- assert.isTrue(parsed.errors.length >= 0);
- assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
+ assert(parsed.errors.length >= 0);
+ assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
}
{
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
- assert.isTrue(parsed.errors.length >= 0);
- assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
+ assert(parsed.errors.length >= 0);
+ assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
if (!noLocation) {
- assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
+ assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
}
}
}
@@ -241,7 +241,7 @@ namespace ts {
},
files: ["file1.ts"]
};
- assert.isTrue(diagnostics.length === 2);
+ assert(diagnostics.length === 2);
assert.equal(JSON.stringify(configJsonObject), JSON.stringify(expectedResult));
});
diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts
index 8e0dfe36c2f77..44924f4d63ff4 100644
--- a/src/harness/unittests/tsserverProjectSystem.ts
+++ b/src/harness/unittests/tsserverProjectSystem.ts
@@ -468,8 +468,8 @@ namespace ts.projectSystem {
assert.equal(outputs[index], server.formatMessage(expectedEvent, nullLogger, Utils.byteLength, session.host.newLine));
if (isMostRecent) {
- assert.strictEqual(events.length, index + 1, JSON.stringify(events));
- assert.strictEqual(outputs.length, index + 1, JSON.stringify(outputs));
+ assert.equal(events.length, index + 1, JSON.stringify(events));
+ assert.equal(outputs.length, index + 1, JSON.stringify(outputs));
}
}
@@ -572,8 +572,8 @@ namespace ts.projectSystem {
const projectService = createProjectService(host);
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
- assert(configFileName, "should find config file");
- assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
+ assert.isDefined(configFileName, "should find config file");
+ assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
checkNumberOfInferredProjects(projectService, 0);
checkNumberOfConfiguredProjects(projectService, 1);
@@ -612,8 +612,8 @@ namespace ts.projectSystem {
const projectService = createProjectService(host);
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
- assert(configFileName, "should find config file");
- assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
+ assert.isDefined(configFileName, "should find config file");
+ assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
checkNumberOfInferredProjects(projectService, 0);
checkNumberOfConfiguredProjects(projectService, 1);
@@ -821,7 +821,7 @@ namespace ts.projectSystem {
host.reloadFS([file1, commonFile2, libFile]);
host.runQueuedTimeoutCallbacks();
checkNumberOfInferredProjects(projectService, 1);
- assert.strictEqual(projectService.inferredProjects[0], project, "Inferred project should be same");
+ assert.equal(projectService.inferredProjects[0], project, "Inferred project should be same");
checkProjectRootFiles(project, [file1.path]);
checkProjectActualFiles(project, [file1.path, libFile.path, commonFile2.path]);
diags = session.executeCommand(getErrRequest).response as server.protocol.Diagnostic[];
@@ -1024,11 +1024,11 @@ namespace ts.projectSystem {
projectService.openExternalProject({ rootFiles: toExternalFiles([file1.path]), options: {}, projectFileName: proj1name });
const proj1 = projectService.findProject(proj1name);
- assert.isTrue(proj1.languageServiceEnabled);
+ assert(proj1.languageServiceEnabled);
projectService.openExternalProject({ rootFiles: toExternalFiles([file2.path]), options: {}, projectFileName: proj2name });
const proj2 = projectService.findProject(proj2name);
- assert.isTrue(proj2.languageServiceEnabled);
+ assert(proj2.languageServiceEnabled);
projectService.openExternalProject({ rootFiles: toExternalFiles([file3.path]), options: {}, projectFileName: proj3name });
const proj3 = projectService.findProject(proj3name);
@@ -1100,18 +1100,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
const project = projectService.configuredProjects.get(configFile.path);
- assert.isTrue(project.hasOpenRef()); // file1
+ assert(project.hasOpenRef()); // file1
projectService.closeClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.isFalse(project.hasOpenRef()); // No open files
assert.isFalse(project.isClosed());
projectService.openClientFile(file2.path);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
- assert.isTrue(project.hasOpenRef()); // file2
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
+ assert(project.hasOpenRef()); // file2
assert.isFalse(project.isClosed());
});
@@ -1134,18 +1134,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
const project = projectService.configuredProjects.get(configFile.path);
- assert.isTrue(project.hasOpenRef()); // file1
+ assert(project.hasOpenRef()); // file1
projectService.closeClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
projectService.openClientFile(libFile.path);
checkNumberOfConfiguredProjects(projectService, 0);
assert.isFalse(project.hasOpenRef()); // No files + project closed
- assert.isTrue(project.isClosed());
+ assert(project.isClosed());
});
it("should not close external project with no open files", () => {
@@ -1233,28 +1233,28 @@ namespace ts.projectSystem {
// open client file - should not lead to creation of inferred project
projectService.openClientFile(file1.path, file1.content);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
- assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
- assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
+ assert.equal(projectService.configuredProjects.get(config1.path), proj1);
+ assert.equal(projectService.configuredProjects.get(config2.path), proj2);
projectService.openClientFile(file3.path, file3.content);
checkNumberOfProjects(projectService, { configuredProjects: 2, inferredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
- assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
+ assert.equal(projectService.configuredProjects.get(config1.path), proj1);
+ assert.equal(projectService.configuredProjects.get(config2.path), proj2);
projectService.closeExternalProject(externalProjectName);
// open file 'file1' from configured project keeps project alive
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
+ assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.closeClientFile(file3.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
+ assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.closeClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
+ assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.openClientFile(file2.path, file2.content);
@@ -1286,14 +1286,14 @@ namespace ts.projectSystem {
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
// should contain completions for string
- assert.isTrue(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
+ assert(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
assert.isFalse(completions1.entries.some(e => e.name === "toExponential"), "should not contain 'toExponential'");
service.closeClientFile(f2.path);
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
// should contain completions for string
assert.isFalse(completions2.entries.some(e => e.name === "charAt"), "should not contain 'charAt'");
- assert.isTrue(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
+ assert(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
});
it("clear mixed content file after closing", () => {
@@ -1317,7 +1317,7 @@ namespace ts.projectSystem {
checkProjectActualFiles(service.externalProjects[0], [f1.path, f2.path, libFile.path]);
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
- assert.isTrue(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
+ assert(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
service.closeClientFile(f2.path);
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
@@ -1387,16 +1387,16 @@ namespace ts.projectSystem {
});
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
projectService.closeExternalProject(externalProjectName);
// configured project is alive since file is still open
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
projectService.closeClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
@@ -1910,7 +1910,7 @@ namespace ts.projectSystem {
// The configured project should now be updated to include html file
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
+ assert.equal(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
// Open HTML file
@@ -2176,18 +2176,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project1 = projectService.configuredProjects.get(tsconfig1.path);
- assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
+ assert(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
assert.equal(project1.getScriptInfo(file2.path).containingProjects.length, 1, "containing projects count");
assert.isFalse(project1.isClosed());
projectService.openClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
- assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
- assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
+ assert(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
+ assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.isFalse(project1.isClosed());
const project2 = projectService.configuredProjects.get(tsconfig2.path);
- assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
+ assert(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
assert.isFalse(project2.isClosed());
assert.equal(project1.getScriptInfo(file1.path).containingProjects.length, 2, `${file1.path} containing projects count`);
@@ -2196,9 +2196,9 @@ namespace ts.projectSystem {
projectService.closeClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 3"); // No files
- assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
- assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
- assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
+ assert(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
+ assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
+ assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.isFalse(project1.isClosed());
assert.isFalse(project2.isClosed());
@@ -2206,18 +2206,18 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 4"); // No files
assert.isFalse(project2.hasOpenRef(), "Has open ref count in project2 - 4"); // No files
- assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
- assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
+ assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
+ assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.isFalse(project1.isClosed());
assert.isFalse(project2.isClosed());
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
+ assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.isUndefined(projectService.configuredProjects.get(tsconfig2.path));
- assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
+ assert(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
assert.isFalse(project1.isClosed());
- assert.isTrue(project2.isClosed());
+ assert(project2.isClosed());
});
it("Open ref of configured project when open file gets added to the project as part of configured file update", () => {
@@ -2255,7 +2255,7 @@ namespace ts.projectSystem {
checkOpenFiles(projectService, files);
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
const configProject1 = projectService.configuredProjects.get(configFile.path);
- assert.isTrue(configProject1.hasOpenRef()); // file1 and file3
+ assert(configProject1.hasOpenRef()); // file1 and file3
checkProjectActualFiles(configProject1, [file1.path, file3.path, configFile.path]);
const inferredProject1 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject1, [file2.path]);
@@ -2272,7 +2272,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject3 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject3, [file4.path]);
- assert.strictEqual(inferredProject3, inferredProject2);
+ assert.equal(inferredProject3, inferredProject2);
projectService.closeClientFile(file1.path);
projectService.closeClientFile(file2.path);
@@ -2298,7 +2298,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject5 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject4, [file4.path]);
- assert.strictEqual(inferredProject5, inferredProject4);
+ assert.equal(inferredProject5, inferredProject4);
const file5: FileOrFolder = {
path: "/file5.ts",
@@ -2307,13 +2307,13 @@ namespace ts.projectSystem {
host.reloadFS(files.concat(configFile, file5));
projectService.openClientFile(file5.path);
verifyScriptInfosAreUndefined([file1, file2, file3]);
- assert.strictEqual(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
+ assert.equal(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
assert.isDefined(projectService.getScriptInfoForPath(file5.path as Path));
checkOpenFiles(projectService, [file4, file5]);
checkNumberOfConfiguredProjects(projectService, 0);
function verifyScriptInfos() {
- infos.forEach(info => assert.strictEqual(projectService.getScriptInfoForPath(info.path), info));
+ infos.forEach(info => assert.equal(projectService.getScriptInfoForPath(info.path), info));
}
function verifyScriptInfosAreUndefined(files: FileOrFolder[]) {
@@ -2325,7 +2325,7 @@ namespace ts.projectSystem {
function verifyConfiguredProjectStateAfterUpdate(hasOpenRef: boolean) {
checkNumberOfConfiguredProjects(projectService, 1);
const configProject2 = projectService.configuredProjects.get(configFile.path);
- assert.strictEqual(configProject2, configProject1);
+ assert.equal(configProject2, configProject1);
checkProjectActualFiles(configProject2, [file1.path, file2.path, file3.path, configFile.path]);
assert.equal(configProject2.hasOpenRef(), hasOpenRef);
}
@@ -2364,7 +2364,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
const configuredProject = projectService.configuredProjects.get(configFile.path);
- assert.isTrue(configuredProject.hasOpenRef()); // file1 and file3
+ assert(configuredProject.hasOpenRef()); // file1 and file3
checkProjectActualFiles(configuredProject, [file1.path, file3.path, configFile.path]);
const inferredProject1 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject1, [file2.path]);
@@ -2376,23 +2376,23 @@ namespace ts.projectSystem {
configFile.content = "{}";
host.reloadFS(files.concat(configFile));
// Time out is not yet run so there is project update pending
- assert.isTrue(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
+ assert(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
projectService.openClientFile(file4.path);
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
- assert.isTrue(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
- assert.strictEqual(projectService.inferredProjects[0], inferredProject1);
+ assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
+ assert(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
+ assert.equal(projectService.inferredProjects[0], inferredProject1);
const inferredProject2 = projectService.inferredProjects[1];
checkProjectActualFiles(inferredProject2, [file4.path]);
host.runQueuedTimeoutCallbacks();
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
- assert.isTrue(configuredProject.hasOpenRef()); // file2
+ assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
+ assert(configuredProject.hasOpenRef()); // file2
checkProjectActualFiles(configuredProject, [file1.path, file2.path, file3.path, configFile.path]);
- assert.strictEqual(projectService.inferredProjects[0], inferredProject2);
+ assert.equal(projectService.inferredProjects[0], inferredProject2);
checkProjectActualFiles(inferredProject2, [file4.path]);
});
@@ -2427,7 +2427,7 @@ namespace ts.projectSystem {
options: {}
});
service.checkNumberOfProjects({ externalProjects: 1 });
- assert.isTrue(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
+ assert(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
service.openExternalProject({
projectFileName,
@@ -2464,12 +2464,12 @@ namespace ts.projectSystem {
projectService.openClientFile(f1.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const project = projectService.configuredProjects.get(config.path);
- assert.isTrue(project.hasOpenRef()); // f1
+ assert(project.hasOpenRef()); // f1
assert.isFalse(project.isClosed());
projectService.closeClientFile(f1.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config.path), project);
+ assert.equal(projectService.configuredProjects.get(config.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
@@ -2488,7 +2488,7 @@ namespace ts.projectSystem {
projectService.openClientFile(f4.path);
projectService.checkNumberOfProjects({ inferredProjects: 1 });
assert.isFalse(project.hasOpenRef()); // No files
- assert.isTrue(project.isClosed());
+ assert(project.isClosed());
for (const f of [f1, f2, f3]) {
// All the script infos should not be present since the project is closed and orphan script infos are collected
@@ -2540,7 +2540,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project = configuredProjectAt(projectService, 0);
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
- assert.isTrue(!!lastEvent, "should receive event");
+ assert(!!lastEvent, "should receive event");
assert.equal(lastEvent.data.project, project, "project name");
assert.equal(lastEvent.data.project.getProjectName(), config.path, "config path");
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
@@ -2548,9 +2548,9 @@ namespace ts.projectSystem {
host.reloadFS([f1, f2, configWithExclude]);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.isTrue(project.languageServiceEnabled, "Language service enabled");
+ assert(project.languageServiceEnabled, "Language service enabled");
assert.equal(lastEvent.data.project, project, "project");
- assert.isTrue(lastEvent.data.languageServiceEnabled, "Language service state");
+ assert(lastEvent.data.languageServiceEnabled, "Language service state");
});
it("syntactic features work even if language service is disabled", () => {
@@ -2592,7 +2592,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project = configuredProjectAt(projectService, 0);
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
- assert.isTrue(!!lastEvent, "should receive event");
+ assert(!!lastEvent, "should receive event");
assert.equal(lastEvent.data.project, project, "project name");
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
@@ -2747,7 +2747,7 @@ namespace ts.projectSystem {
host.runQueuedTimeoutCallbacks();
watchedRecursiveDirectories.pop();
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path));
checkWatchedDirectories(host, [], /*recursive*/ false);
@@ -2756,7 +2756,7 @@ namespace ts.projectSystem {
// On next file open the files file2a should be closed and not watched any more
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
+ assert.equal(projectService.configuredProjects.get(configFile.path), project);
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
checkWatchedFiles(host, [libFile.path, configFile.path]);
checkWatchedDirectories(host, [], /*recursive*/ false);
@@ -2979,7 +2979,7 @@ namespace ts.projectSystem {
});
projectService.checkNumberOfProjects({ externalProjects: 1 });
const typeAcquisition = projectService.externalProjects[0].getTypeAcquisition();
- assert.isTrue(typeAcquisition.enable, "Typine acquisition should be enabled");
+ assert(typeAcquisition.enable, "Typine acquisition should be enabled");
});
});
@@ -3050,7 +3050,7 @@ namespace ts.projectSystem {
const localFunctionNavToRequst = makeSessionRequest(CommandNames.Navto, { searchValue: "foo", file: file1.path, projectFileName: configFile.path });
const items2 = session.executeCommand(localFunctionNavToRequst).response as protocol.NavtoItem[];
- assert.isTrue(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
+ assert(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
});
});
@@ -3264,18 +3264,18 @@ namespace ts.projectSystem {
projectService.openClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const project = projectService.configuredProjects.get(config.path);
- assert.isTrue(project.hasOpenRef()); // f
+ assert(project.hasOpenRef()); // f
projectService.closeClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config.path), project);
+ assert.equal(projectService.configuredProjects.get(config.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
projectService.openClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
- assert.strictEqual(projectService.configuredProjects.get(config.path), project);
- assert.isTrue(project.hasOpenRef()); // f
+ assert.equal(projectService.configuredProjects.get(config.path), project);
+ assert(project.hasOpenRef()); // f
assert.isFalse(project.isClosed());
});
});
@@ -3872,16 +3872,16 @@ namespace ts.projectSystem {
{ file: file2.path }
);
let errorResult = session.executeCommand(file2GetErrRequest).response;
- assert.isTrue(errorResult.length === 0);
+ assert(errorResult.length === 0);
const closeFileRequest = makeSessionRequest(CommandNames.Close, { file: file1.path });
session.executeCommand(closeFileRequest);
errorResult = session.executeCommand(file2GetErrRequest).response;
- assert.isTrue(errorResult.length !== 0);
+ assert(errorResult.length !== 0);
openFilesForSession([file1], session);
errorResult = session.executeCommand(file2GetErrRequest).response;
- assert.isTrue(errorResult.length === 0);
+ assert(errorResult.length === 0);
});
it("should be turned on for js-only external projects", () => {
@@ -3917,7 +3917,7 @@ namespace ts.projectSystem {
{ file: dTsFile.path }
);
const errorResult = session.executeCommand(dTsFileGetErrRequest).response;
- assert.isTrue(errorResult.length === 0);
+ assert(errorResult.length === 0);
});
it("should be turned on for js-only external projects with skipLibCheck=false", () => {
@@ -3953,7 +3953,7 @@ namespace ts.projectSystem {
{ file: dTsFile.path }
);
const errorResult = session.executeCommand(dTsFileGetErrRequest).response;
- assert.isTrue(errorResult.length === 0);
+ assert(errorResult.length === 0);
});
it("should not report bind errors for declaration files with skipLibCheck=true", () => {
@@ -3984,14 +3984,14 @@ namespace ts.projectSystem {
{ file: dTsFile1.path }
);
const error1Result = session.executeCommand(dTsFile1GetErrRequest).response;
- assert.isTrue(error1Result.length === 0);
+ assert(error1Result.length === 0);
const dTsFile2GetErrRequest = makeSessionRequest(
CommandNames.SemanticDiagnosticsSync,
{ file: dTsFile2.path }
);
const error2Result = session.executeCommand(dTsFile2GetErrRequest).response;
- assert.isTrue(error2Result.length === 0);
+ assert(error2Result.length === 0);
});
it("should report semanitc errors for loose JS files with '// @ts-check' and skipLibCheck=true", () => {
@@ -4012,7 +4012,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = session.executeCommand(getErrRequest).response;
- assert.isTrue(errorResult.length === 1);
+ assert(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
@@ -4039,7 +4039,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = session.executeCommand(getErrRequest).response;
- assert.isTrue(errorResult.length === 1);
+ assert(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
@@ -4068,7 +4068,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = session.executeCommand(getErrRequest).response;
- assert.isTrue(errorResult.length === 1);
+ assert(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
});
@@ -4096,7 +4096,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject = projectService.inferredProjects[0];
- assert.isTrue(inferredProject.containsFile(file1.path));
+ assert(inferredProject.containsFile(file1.path));
});
it("should be able to handle @types if input file list is empty", () => {
@@ -4236,7 +4236,7 @@ namespace ts.projectSystem {
arguments: { file: f1.path }
});
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
- assert.strictEqual(info.getSnapshot(), snap);
+ assert.equal(info.getSnapshot(), snap);
// reload from temp file
session.executeCommandSeq({
@@ -4244,7 +4244,7 @@ namespace ts.projectSystem {
arguments: { file: f1.path, tmpfile: tmp.path }
});
checkScriptInfoAndProjects(0, tmp.content, "contents of temp file");
- assert.notStrictEqual(info.getSnapshot(), snap);
+ assert.notEqual(info.getSnapshot(), snap);
// reload from own file
session.executeCommandSeq({
@@ -4252,11 +4252,11 @@ namespace ts.projectSystem {
arguments: { file: f1.path }
});
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
- assert.notStrictEqual(info.getSnapshot(), snap);
+ assert.notEqual(info.getSnapshot(), snap);
function checkScriptInfoAndProjects(inferredProjects: number, contentsOfInfo: string, captionForContents: string) {
checkNumberOfProjects(projectService, { inferredProjects });
- assert.strictEqual(projectService.getScriptInfo(f1.path), info);
+ assert.equal(projectService.getScriptInfo(f1.path), info);
checkScriptInfoContents(contentsOfInfo, captionForContents);
}
@@ -4515,7 +4515,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { projectFileName: projectName }
}).response as ReadonlyArray;
- assert.isTrue(diags.length === 0);
+ assert(diags.length === 0);
session.executeCommand({
type: "request",
@@ -4529,7 +4529,7 @@ namespace ts.projectSystem {
seq: 4,
arguments: { projectFileName: projectName }
}).response as ReadonlyArray;
- assert.isTrue(diagsAfterUpdate.length === 0);
+ assert(diagsAfterUpdate.length === 0);
});
it("for external project", () => {
@@ -4556,7 +4556,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { projectFileName }
}).response as ReadonlyArray;
- assert.isTrue(diags.length === 0);
+ assert(diags.length === 0);
session.executeCommand({
type: "request",
@@ -4574,7 +4574,7 @@ namespace ts.projectSystem {
seq: 4,
arguments: { projectFileName }
}).response as ReadonlyArray;
- assert.isTrue(diagsAfterUpdate.length === 0);
+ assert(diagsAfterUpdate.length === 0);
});
});
@@ -4758,7 +4758,7 @@ namespace ts.projectSystem {
isCancellationRequested: () => false,
setRequest: requestId => {
if (expectedRequestId === undefined) {
- assert.isTrue(false, "unexpected call");
+ assert(false, "unexpected call");
}
assert.equal(requestId, expectedRequestId);
},
@@ -5017,7 +5017,7 @@ namespace ts.projectSystem {
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
const firstOccurence = highlightResponse[0];
- assert.isTrue(firstOccurence.isInString, "Highlights should be marked with isInString");
+ assert(firstOccurence.isInString, "Highlights should be marked with isInString");
}
{
@@ -5026,7 +5026,7 @@ namespace ts.projectSystem {
{ file: file1.path, line: 3, offset: 13 }
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
- assert.isTrue(highlightResponse.length === 2);
+ assert(highlightResponse.length === 2);
const firstOccurence = highlightResponse[0];
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on property name");
}
@@ -5037,7 +5037,7 @@ namespace ts.projectSystem {
{ file: file1.path, line: 4, offset: 14 }
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
- assert.isTrue(highlightResponse.length === 2);
+ assert(highlightResponse.length === 2);
const firstOccurence = highlightResponse[0];
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on indexer");
}
@@ -5061,13 +5061,13 @@ namespace ts.projectSystem {
let project = projectService.inferredProjects[0];
let options = project.getCompilationSettings();
- assert.isTrue(options.maxNodeModuleJsDepth === 2);
+ assert(options.maxNodeModuleJsDepth === 2);
// Assert the option sticks
projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES2016 });
project = projectService.inferredProjects[0];
options = project.getCompilationSettings();
- assert.isTrue(options.maxNodeModuleJsDepth === 2);
+ assert(options.maxNodeModuleJsDepth === 2);
});
it("should return to normal state when all js root files are removed from project", () => {
@@ -5090,7 +5090,7 @@ namespace ts.projectSystem {
projectService.openClientFile(file2.path);
project = projectService.inferredProjects[0];
- assert.isTrue(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
+ assert(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
projectService.closeClientFile(file2.path);
project = projectService.inferredProjects[0];
@@ -5134,7 +5134,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
}).response as ReadonlyArray;
- assert.isTrue(diags.length === 2);
+ assert(diags.length === 2);
configFile.content = configFileContentWithoutCommentLine;
host.reloadFS([file, configFile]);
@@ -5145,7 +5145,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
}).response as ReadonlyArray;
- assert.isTrue(diagsAfterEdit.length === 2);
+ assert(diagsAfterEdit.length === 2);
verifyDiagnostic(diags[0], diagsAfterEdit[0]);
verifyDiagnostic(diags[1], diagsAfterEdit[1]);
@@ -5271,7 +5271,7 @@ namespace ts.projectSystem {
function verifyCalledOn(callback: CalledMaps, name: string) {
const calledMap = calledMaps[callback];
const result = calledMap.get(name);
- assert.isTrue(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
+ assert(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
}
function verifyNoCall(callback: CalledMaps) {
@@ -5283,7 +5283,7 @@ namespace ts.projectSystem {
const calledMap = calledMaps[callback];
ts.TestFSWithWatch.verifyMapSize(callback, calledMap, arrayFrom(expectedKeys.keys()));
expectedKeys.forEach((called, name) => {
- assert.isTrue(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
+ assert(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
assert.equal(calledMap.get(name).length, called, `${callback} is expected to be called ${called} times with ${name}. Actual entry: ${calledMap.get(name)}`);
});
}
@@ -5356,10 +5356,10 @@ namespace ts.projectSystem {
try {
// trigger synchronization to make sure that LSHost will try to find 'f2' module on disk
verifyImportedDiagnostics();
- assert.isTrue(false, `should not find file '${imported.path}'`);
+ assert(false, `should not find file '${imported.path}'`);
}
catch (e) {
- assert.isTrue(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
+ assert(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
}
const f2Lookups = getLocationsForModuleLookup("f2");
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f2Lookups, 1);
@@ -5544,7 +5544,7 @@ namespace ts.projectSystem {
callsTrackingHost.verifyNoHostCallsExceptFileExistsOnce(["/a/b/models/tsconfig.json", "/a/b/models/jsconfig.json"]);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(tsconfigFile.path), project);
+ assert.equal(projectService.configuredProjects.get(tsconfigFile.path), project);
});
describe("WatchDirectories for config file with", () => {
@@ -5631,7 +5631,7 @@ namespace ts.projectSystem {
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
+ assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
verifyProjectAndWatchedDirectories();
callsTrackingHost.clear();
@@ -5640,7 +5640,7 @@ namespace ts.projectSystem {
assert.equal(configFile2, configFileName);
checkNumberOfConfiguredProjects(projectService, 1);
- assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
+ assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
verifyProjectAndWatchedDirectories();
callsTrackingHost.verifyNoHostCalls();
@@ -5842,7 +5842,7 @@ namespace ts.projectSystem {
forEach(actual, f => {
assert.isFalse(seen.has(f), `${caption}: Found duplicate ${f}. Actual: ${actual} Expected: ${expected}`);
seen.set(f, true);
- assert.isTrue(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
+ assert(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
});
}
@@ -6313,7 +6313,7 @@ namespace ts.projectSystem {
else {
// file2 addition wont be detected
projectFiles.pop();
- assert.isTrue(host.fileExists(file2.path));
+ assert(host.fileExists(file2.path));
}
verifyProject();
@@ -6380,7 +6380,7 @@ namespace ts.projectSystem {
assert.equal(projectChangedEvents.length, expectedEvents.length, `Incorrect number of events Actual: ${eventsToString(projectChangedEvents)} Expected: ${eventsToString(expectedEvents)}`);
forEach(projectChangedEvents, (actualEvent, i) => {
const expectedEvent = expectedEvents[i];
- assert.strictEqual(actualEvent.eventName, expectedEvent.eventName);
+ assert.equal(actualEvent.eventName, expectedEvent.eventName);
verifyFiles("openFiles", actualEvent.data.openFiles, expectedEvent.data.openFiles);
});
diff --git a/src/harness/unittests/typingsInstaller.ts b/src/harness/unittests/typingsInstaller.ts
index d0038902ae760..adf99094f761f 100644
--- a/src/harness/unittests/typingsInstaller.ts
+++ b/src/harness/unittests/typingsInstaller.ts
@@ -292,7 +292,7 @@ namespace ts.projectSystem {
typeAcquisition: { enable: true, include: ["jquery"] }
});
- assert.isTrue(enqueueIsCalled, "expected enqueueIsCalled to be true");
+ assert(enqueueIsCalled, "expected enqueueIsCalled to be true");
installer.installAll(/*expectedCount*/ 1);
// auto is set in type acquisition - use it even if project contains only .ts files
@@ -598,7 +598,7 @@ namespace ts.projectSystem {
installer.executePendingCommands();
// expected all typings file to exist
for (const f of typingFiles) {
- assert.isTrue(host.fileExists(f.path), `expected file ${f.path} to exist`);
+ assert(host.fileExists(f.path), `expected file ${f.path} to exist`);
}
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { externalProjects: 1 });
@@ -934,8 +934,8 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/1);
- assert.isTrue(host.fileExists(node.path), "typings for 'node' should be created");
- assert.isTrue(host.fileExists(commander.path), "typings for 'commander' should be created");
+ assert(host.fileExists(node.path), "typings for 'node' should be created");
+ assert(host.fileExists(commander.path), "typings for 'commander' should be created");
checkProjectActualFiles(service.inferredProjects[0], [file.path, node.path, commander.path]);
});
@@ -1076,7 +1076,7 @@ namespace ts.projectSystem {
projectService.openClientFile(f1.path);
installer.checkPendingCommands(/*expectedCount*/ 0);
- assert.isTrue(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name");
+ assert(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name");
});
});
@@ -1225,7 +1225,7 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
- assert.isTrue(seenTelemetryEvent);
+ assert(seenTelemetryEvent);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
@@ -1276,10 +1276,10 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
- assert.isTrue(!!beginEvent);
- assert.isTrue(!!endEvent);
- assert.isTrue(beginEvent.eventId === endEvent.eventId);
- assert.isTrue(endEvent.installSuccess);
+ assert(!!beginEvent);
+ assert(!!endEvent);
+ assert(beginEvent.eventId === endEvent.eventId);
+ assert(endEvent.installSuccess);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
@@ -1322,9 +1322,9 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
- assert.isTrue(!!beginEvent);
- assert.isTrue(!!endEvent);
- assert.isTrue(beginEvent.eventId === endEvent.eventId);
+ assert(!!beginEvent);
+ assert(!!endEvent);
+ assert(beginEvent.eventId === endEvent.eventId);
assert.isFalse(endEvent.installSuccess);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path]);
diff --git a/src/harness/unittests/versionCache.ts b/src/harness/unittests/versionCache.ts
index bbd23f25dac32..60b478d4869ce 100644
--- a/src/harness/unittests/versionCache.ts
+++ b/src/harness/unittests/versionCache.ts
@@ -34,7 +34,7 @@ var p:Point=new Point();
var q:Point=p;`;
const { lines } = server.LineIndex.linesFromText(testContent);
- assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
+ assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
const lineIndex = new server.LineIndex();
lineIndex.load(lines);
@@ -94,7 +94,7 @@ that was purple at the tips
and grew 1cm per day`;
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
- assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
+ assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
const lineIndex = new server.LineIndex();
lineIndex.load(lines);
@@ -203,10 +203,10 @@ and grew 1cm per day`;
const testFileName = "src/compiler/scanner.ts";
testContent = Harness.IO.readFile(testFileName);
const totalChars = testContent.length;
- assert.isTrue(totalChars > 0, "Failed to read test file.");
+ assert(totalChars > 0, "Failed to read test file.");
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
- assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
+ assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
lineIndex = new server.LineIndex();
lineIndex.load(lines);
diff --git a/src/harness/virtualFileSystemWithWatch.ts b/src/harness/virtualFileSystemWithWatch.ts
index 581b86c042dbb..d410fec9206a3 100644
--- a/src/harness/virtualFileSystemWithWatch.ts
+++ b/src/harness/virtualFileSystemWithWatch.ts
@@ -139,7 +139,7 @@ interface Array {}`
function checkMapKeys(caption: string, map: Map, expectedKeys: ReadonlyArray) {
verifyMapSize(caption, map, expectedKeys);
for (const name of expectedKeys) {
- assert.isTrue(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
+ assert(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
}
}