1describe("unittests:: core paths", () => { 2 it("normalizeSlashes", () => { 3 assert.strictEqual(ts.normalizeSlashes("a"), "a"); 4 assert.strictEqual(ts.normalizeSlashes("a/b"), "a/b"); 5 assert.strictEqual(ts.normalizeSlashes("a\\b"), "a/b"); 6 assert.strictEqual(ts.normalizeSlashes("\\\\server\\path"), "//server/path"); 7 }); 8 it("getRootLength", () => { 9 assert.strictEqual(ts.getRootLength("a"), 0); 10 assert.strictEqual(ts.getRootLength("/"), 1); 11 assert.strictEqual(ts.getRootLength("/path"), 1); 12 assert.strictEqual(ts.getRootLength("c:"), 2); 13 assert.strictEqual(ts.getRootLength("c:d"), 0); 14 assert.strictEqual(ts.getRootLength("c:/"), 3); 15 assert.strictEqual(ts.getRootLength("c:\\"), 3); 16 assert.strictEqual(ts.getRootLength("//server"), 8); 17 assert.strictEqual(ts.getRootLength("//server/share"), 9); 18 assert.strictEqual(ts.getRootLength("\\\\server"), 8); 19 assert.strictEqual(ts.getRootLength("\\\\server\\share"), 9); 20 assert.strictEqual(ts.getRootLength("file:///"), 8); 21 assert.strictEqual(ts.getRootLength("file:///path"), 8); 22 assert.strictEqual(ts.getRootLength("file:///c:"), 10); 23 assert.strictEqual(ts.getRootLength("file:///c:d"), 8); 24 assert.strictEqual(ts.getRootLength("file:///c:/path"), 11); 25 assert.strictEqual(ts.getRootLength("file:///c%3a"), 12); 26 assert.strictEqual(ts.getRootLength("file:///c%3ad"), 8); 27 assert.strictEqual(ts.getRootLength("file:///c%3a/path"), 13); 28 assert.strictEqual(ts.getRootLength("file:///c%3A"), 12); 29 assert.strictEqual(ts.getRootLength("file:///c%3Ad"), 8); 30 assert.strictEqual(ts.getRootLength("file:///c%3A/path"), 13); 31 assert.strictEqual(ts.getRootLength("file://localhost"), 16); 32 assert.strictEqual(ts.getRootLength("file://localhost/"), 17); 33 assert.strictEqual(ts.getRootLength("file://localhost/path"), 17); 34 assert.strictEqual(ts.getRootLength("file://localhost/c:"), 19); 35 assert.strictEqual(ts.getRootLength("file://localhost/c:d"), 17); 36 assert.strictEqual(ts.getRootLength("file://localhost/c:/path"), 20); 37 assert.strictEqual(ts.getRootLength("file://localhost/c%3a"), 21); 38 assert.strictEqual(ts.getRootLength("file://localhost/c%3ad"), 17); 39 assert.strictEqual(ts.getRootLength("file://localhost/c%3a/path"), 22); 40 assert.strictEqual(ts.getRootLength("file://localhost/c%3A"), 21); 41 assert.strictEqual(ts.getRootLength("file://localhost/c%3Ad"), 17); 42 assert.strictEqual(ts.getRootLength("file://localhost/c%3A/path"), 22); 43 assert.strictEqual(ts.getRootLength("file://server"), 13); 44 assert.strictEqual(ts.getRootLength("file://server/"), 14); 45 assert.strictEqual(ts.getRootLength("file://server/path"), 14); 46 assert.strictEqual(ts.getRootLength("file://server/c:"), 14); 47 assert.strictEqual(ts.getRootLength("file://server/c:d"), 14); 48 assert.strictEqual(ts.getRootLength("file://server/c:/d"), 14); 49 assert.strictEqual(ts.getRootLength("file://server/c%3a"), 14); 50 assert.strictEqual(ts.getRootLength("file://server/c%3ad"), 14); 51 assert.strictEqual(ts.getRootLength("file://server/c%3a/d"), 14); 52 assert.strictEqual(ts.getRootLength("file://server/c%3A"), 14); 53 assert.strictEqual(ts.getRootLength("file://server/c%3Ad"), 14); 54 assert.strictEqual(ts.getRootLength("file://server/c%3A/d"), 14); 55 assert.strictEqual(ts.getRootLength("http://server"), 13); 56 assert.strictEqual(ts.getRootLength("http://server/path"), 14); 57 }); 58 it("isUrl", () => { 59 assert.isFalse(ts.isUrl("a")); 60 assert.isFalse(ts.isUrl("/")); 61 assert.isFalse(ts.isUrl("c:")); 62 assert.isFalse(ts.isUrl("c:d")); 63 assert.isFalse(ts.isUrl("c:/")); 64 assert.isFalse(ts.isUrl("c:\\")); 65 assert.isFalse(ts.isUrl("//server")); 66 assert.isFalse(ts.isUrl("//server/share")); 67 assert.isFalse(ts.isUrl("\\\\server")); 68 assert.isFalse(ts.isUrl("\\\\server\\share")); 69 assert.isTrue(ts.isUrl("file:///path")); 70 assert.isTrue(ts.isUrl("file:///c:")); 71 assert.isTrue(ts.isUrl("file:///c:d")); 72 assert.isTrue(ts.isUrl("file:///c:/path")); 73 assert.isTrue(ts.isUrl("file://server")); 74 assert.isTrue(ts.isUrl("file://server/path")); 75 assert.isTrue(ts.isUrl("http://server")); 76 assert.isTrue(ts.isUrl("http://server/path")); 77 }); 78 it("isRootedDiskPath", () => { 79 assert.isFalse(ts.isRootedDiskPath("a")); 80 assert.isTrue(ts.isRootedDiskPath("/")); 81 assert.isTrue(ts.isRootedDiskPath("c:")); 82 assert.isFalse(ts.isRootedDiskPath("c:d")); 83 assert.isTrue(ts.isRootedDiskPath("c:/")); 84 assert.isTrue(ts.isRootedDiskPath("c:\\")); 85 assert.isTrue(ts.isRootedDiskPath("//server")); 86 assert.isTrue(ts.isRootedDiskPath("//server/share")); 87 assert.isTrue(ts.isRootedDiskPath("\\\\server")); 88 assert.isTrue(ts.isRootedDiskPath("\\\\server\\share")); 89 assert.isFalse(ts.isRootedDiskPath("file:///path")); 90 assert.isFalse(ts.isRootedDiskPath("file:///c:")); 91 assert.isFalse(ts.isRootedDiskPath("file:///c:d")); 92 assert.isFalse(ts.isRootedDiskPath("file:///c:/path")); 93 assert.isFalse(ts.isRootedDiskPath("file://server")); 94 assert.isFalse(ts.isRootedDiskPath("file://server/path")); 95 assert.isFalse(ts.isRootedDiskPath("http://server")); 96 assert.isFalse(ts.isRootedDiskPath("http://server/path")); 97 }); 98 it("getDirectoryPath", () => { 99 assert.strictEqual(ts.getDirectoryPath(""), ""); 100 assert.strictEqual(ts.getDirectoryPath("a"), ""); 101 assert.strictEqual(ts.getDirectoryPath("a/b"), "a"); 102 assert.strictEqual(ts.getDirectoryPath("/"), "/"); 103 assert.strictEqual(ts.getDirectoryPath("/a"), "/"); 104 assert.strictEqual(ts.getDirectoryPath("/a/"), "/"); 105 assert.strictEqual(ts.getDirectoryPath("/a/b"), "/a"); 106 assert.strictEqual(ts.getDirectoryPath("/a/b/"), "/a"); 107 assert.strictEqual(ts.getDirectoryPath("c:"), "c:"); 108 assert.strictEqual(ts.getDirectoryPath("c:d"), ""); 109 assert.strictEqual(ts.getDirectoryPath("c:/"), "c:/"); 110 assert.strictEqual(ts.getDirectoryPath("c:/path"), "c:/"); 111 assert.strictEqual(ts.getDirectoryPath("c:/path/"), "c:/"); 112 assert.strictEqual(ts.getDirectoryPath("//server"), "//server"); 113 assert.strictEqual(ts.getDirectoryPath("//server/"), "//server/"); 114 assert.strictEqual(ts.getDirectoryPath("//server/share"), "//server/"); 115 assert.strictEqual(ts.getDirectoryPath("//server/share/"), "//server/"); 116 assert.strictEqual(ts.getDirectoryPath("\\\\server"), "//server"); 117 assert.strictEqual(ts.getDirectoryPath("\\\\server\\"), "//server/"); 118 assert.strictEqual(ts.getDirectoryPath("\\\\server\\share"), "//server/"); 119 assert.strictEqual(ts.getDirectoryPath("\\\\server\\share\\"), "//server/"); 120 assert.strictEqual(ts.getDirectoryPath("file:///"), "file:///"); 121 assert.strictEqual(ts.getDirectoryPath("file:///path"), "file:///"); 122 assert.strictEqual(ts.getDirectoryPath("file:///path/"), "file:///"); 123 assert.strictEqual(ts.getDirectoryPath("file:///c:"), "file:///c:"); 124 assert.strictEqual(ts.getDirectoryPath("file:///c:d"), "file:///"); 125 assert.strictEqual(ts.getDirectoryPath("file:///c:/"), "file:///c:/"); 126 assert.strictEqual(ts.getDirectoryPath("file:///c:/path"), "file:///c:/"); 127 assert.strictEqual(ts.getDirectoryPath("file:///c:/path/"), "file:///c:/"); 128 assert.strictEqual(ts.getDirectoryPath("file://server"), "file://server"); 129 assert.strictEqual(ts.getDirectoryPath("file://server/"), "file://server/"); 130 assert.strictEqual(ts.getDirectoryPath("file://server/path"), "file://server/"); 131 assert.strictEqual(ts.getDirectoryPath("file://server/path/"), "file://server/"); 132 assert.strictEqual(ts.getDirectoryPath("http://server"), "http://server"); 133 assert.strictEqual(ts.getDirectoryPath("http://server/"), "http://server/"); 134 assert.strictEqual(ts.getDirectoryPath("http://server/path"), "http://server/"); 135 assert.strictEqual(ts.getDirectoryPath("http://server/path/"), "http://server/"); 136 }); 137 it("getBaseFileName", () => { 138 assert.strictEqual(ts.getBaseFileName(""), ""); 139 assert.strictEqual(ts.getBaseFileName("a"), "a"); 140 assert.strictEqual(ts.getBaseFileName("a/"), "a"); 141 assert.strictEqual(ts.getBaseFileName("/"), ""); 142 assert.strictEqual(ts.getBaseFileName("/a"), "a"); 143 assert.strictEqual(ts.getBaseFileName("/a/"), "a"); 144 assert.strictEqual(ts.getBaseFileName("/a/b"), "b"); 145 assert.strictEqual(ts.getBaseFileName("c:"), ""); 146 assert.strictEqual(ts.getBaseFileName("c:d"), "c:d"); 147 assert.strictEqual(ts.getBaseFileName("c:/"), ""); 148 assert.strictEqual(ts.getBaseFileName("c:\\"), ""); 149 assert.strictEqual(ts.getBaseFileName("c:/path"), "path"); 150 assert.strictEqual(ts.getBaseFileName("c:/path/"), "path"); 151 assert.strictEqual(ts.getBaseFileName("//server"), ""); 152 assert.strictEqual(ts.getBaseFileName("//server/"), ""); 153 assert.strictEqual(ts.getBaseFileName("//server/share"), "share"); 154 assert.strictEqual(ts.getBaseFileName("//server/share/"), "share"); 155 assert.strictEqual(ts.getBaseFileName("file:///"), ""); 156 assert.strictEqual(ts.getBaseFileName("file:///path"), "path"); 157 assert.strictEqual(ts.getBaseFileName("file:///path/"), "path"); 158 assert.strictEqual(ts.getBaseFileName("file:///c:"), ""); 159 assert.strictEqual(ts.getBaseFileName("file:///c:/"), ""); 160 assert.strictEqual(ts.getBaseFileName("file:///c:d"), "c:d"); 161 assert.strictEqual(ts.getBaseFileName("file:///c:/d"), "d"); 162 assert.strictEqual(ts.getBaseFileName("file:///c:/d/"), "d"); 163 assert.strictEqual(ts.getBaseFileName("http://server"), ""); 164 assert.strictEqual(ts.getBaseFileName("http://server/"), ""); 165 assert.strictEqual(ts.getBaseFileName("http://server/a"), "a"); 166 assert.strictEqual(ts.getBaseFileName("http://server/a/"), "a"); 167 assert.strictEqual(ts.getBaseFileName("/path/a.ext", ".ext", /*ignoreCase*/ false), "a"); 168 assert.strictEqual(ts.getBaseFileName("/path/a.ext", ".EXT", /*ignoreCase*/ true), "a"); 169 assert.strictEqual(ts.getBaseFileName("/path/a.ext", "ext", /*ignoreCase*/ false), "a"); 170 assert.strictEqual(ts.getBaseFileName("/path/a.b", ".ext", /*ignoreCase*/ false), "a.b"); 171 assert.strictEqual(ts.getBaseFileName("/path/a.b", [".b", ".c"], /*ignoreCase*/ false), "a"); 172 assert.strictEqual(ts.getBaseFileName("/path/a.c", [".b", ".c"], /*ignoreCase*/ false), "a"); 173 assert.strictEqual(ts.getBaseFileName("/path/a.d", [".b", ".c"], /*ignoreCase*/ false), "a.d"); 174 }); 175 it("getAnyExtensionFromPath", () => { 176 assert.strictEqual(ts.getAnyExtensionFromPath(""), ""); 177 assert.strictEqual(ts.getAnyExtensionFromPath(".ext"), ".ext"); 178 assert.strictEqual(ts.getAnyExtensionFromPath("a.ext"), ".ext"); 179 assert.strictEqual(ts.getAnyExtensionFromPath("/a.ext"), ".ext"); 180 assert.strictEqual(ts.getAnyExtensionFromPath("a.ext/"), ".ext"); 181 assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", ".ext", /*ignoreCase*/ false), ".ext"); 182 assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", ".EXT", /*ignoreCase*/ true), ".ext"); 183 assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", "ext", /*ignoreCase*/ false), ".ext"); 184 assert.strictEqual(ts.getAnyExtensionFromPath("a.b", ".ext", /*ignoreCase*/ false), ""); 185 assert.strictEqual(ts.getAnyExtensionFromPath("a.b", [".b", ".c"], /*ignoreCase*/ false), ".b"); 186 assert.strictEqual(ts.getAnyExtensionFromPath("a.c", [".b", ".c"], /*ignoreCase*/ false), ".c"); 187 assert.strictEqual(ts.getAnyExtensionFromPath("a.d", [".b", ".c"], /*ignoreCase*/ false), ""); 188 }); 189 it("getPathComponents", () => { 190 assert.deepEqual(ts.getPathComponents(""), [""]); 191 assert.deepEqual(ts.getPathComponents("a"), ["", "a"]); 192 assert.deepEqual(ts.getPathComponents("./a"), ["", ".", "a"]); 193 assert.deepEqual(ts.getPathComponents("/"), ["/"]); 194 assert.deepEqual(ts.getPathComponents("/a"), ["/", "a"]); 195 assert.deepEqual(ts.getPathComponents("/a/"), ["/", "a"]); 196 assert.deepEqual(ts.getPathComponents("c:"), ["c:"]); 197 assert.deepEqual(ts.getPathComponents("c:d"), ["", "c:d"]); 198 assert.deepEqual(ts.getPathComponents("c:/"), ["c:/"]); 199 assert.deepEqual(ts.getPathComponents("c:/path"), ["c:/", "path"]); 200 assert.deepEqual(ts.getPathComponents("//server"), ["//server"]); 201 assert.deepEqual(ts.getPathComponents("//server/"), ["//server/"]); 202 assert.deepEqual(ts.getPathComponents("//server/share"), ["//server/", "share"]); 203 assert.deepEqual(ts.getPathComponents("file:///"), ["file:///"]); 204 assert.deepEqual(ts.getPathComponents("file:///path"), ["file:///", "path"]); 205 assert.deepEqual(ts.getPathComponents("file:///c:"), ["file:///c:"]); 206 assert.deepEqual(ts.getPathComponents("file:///c:d"), ["file:///", "c:d"]); 207 assert.deepEqual(ts.getPathComponents("file:///c:/"), ["file:///c:/"]); 208 assert.deepEqual(ts.getPathComponents("file:///c:/path"), ["file:///c:/", "path"]); 209 assert.deepEqual(ts.getPathComponents("file://server"), ["file://server"]); 210 assert.deepEqual(ts.getPathComponents("file://server/"), ["file://server/"]); 211 assert.deepEqual(ts.getPathComponents("file://server/path"), ["file://server/", "path"]); 212 assert.deepEqual(ts.getPathComponents("http://server"), ["http://server"]); 213 assert.deepEqual(ts.getPathComponents("http://server/"), ["http://server/"]); 214 assert.deepEqual(ts.getPathComponents("http://server/path"), ["http://server/", "path"]); 215 }); 216 it("reducePathComponents", () => { 217 assert.deepEqual(ts.reducePathComponents([]), []); 218 assert.deepEqual(ts.reducePathComponents([""]), [""]); 219 assert.deepEqual(ts.reducePathComponents(["", "."]), [""]); 220 assert.deepEqual(ts.reducePathComponents(["", ".", "a"]), ["", "a"]); 221 assert.deepEqual(ts.reducePathComponents(["", "a", "."]), ["", "a"]); 222 assert.deepEqual(ts.reducePathComponents(["", ".."]), ["", ".."]); 223 assert.deepEqual(ts.reducePathComponents(["", "..", ".."]), ["", "..", ".."]); 224 assert.deepEqual(ts.reducePathComponents(["", "..", ".", ".."]), ["", "..", ".."]); 225 assert.deepEqual(ts.reducePathComponents(["", "a", ".."]), [""]); 226 assert.deepEqual(ts.reducePathComponents(["", "..", "a"]), ["", "..", "a"]); 227 assert.deepEqual(ts.reducePathComponents(["/"]), ["/"]); 228 assert.deepEqual(ts.reducePathComponents(["/", "."]), ["/"]); 229 assert.deepEqual(ts.reducePathComponents(["/", ".."]), ["/"]); 230 assert.deepEqual(ts.reducePathComponents(["/", "a", ".."]), ["/"]); 231 }); 232 it("combinePaths", () => { 233 assert.strictEqual(ts.combinePaths("/", "/node_modules/@types"), "/node_modules/@types"); 234 assert.strictEqual(ts.combinePaths("/a/..", ""), "/a/.."); 235 assert.strictEqual(ts.combinePaths("/a/..", "b"), "/a/../b"); 236 assert.strictEqual(ts.combinePaths("/a/..", "b/"), "/a/../b/"); 237 assert.strictEqual(ts.combinePaths("/a/..", "/"), "/"); 238 assert.strictEqual(ts.combinePaths("/a/..", "/b"), "/b"); 239 }); 240 it("resolvePath", () => { 241 assert.strictEqual(ts.resolvePath(""), ""); 242 assert.strictEqual(ts.resolvePath("."), ""); 243 assert.strictEqual(ts.resolvePath("./"), ""); 244 assert.strictEqual(ts.resolvePath(".."), ".."); 245 assert.strictEqual(ts.resolvePath("../"), "../"); 246 assert.strictEqual(ts.resolvePath("/"), "/"); 247 assert.strictEqual(ts.resolvePath("/."), "/"); 248 assert.strictEqual(ts.resolvePath("/./"), "/"); 249 assert.strictEqual(ts.resolvePath("/../"), "/"); 250 assert.strictEqual(ts.resolvePath("/a"), "/a"); 251 assert.strictEqual(ts.resolvePath("/a/"), "/a/"); 252 assert.strictEqual(ts.resolvePath("/a/."), "/a"); 253 assert.strictEqual(ts.resolvePath("/a/./"), "/a/"); 254 assert.strictEqual(ts.resolvePath("/a/./b"), "/a/b"); 255 assert.strictEqual(ts.resolvePath("/a/./b/"), "/a/b/"); 256 assert.strictEqual(ts.resolvePath("/a/.."), "/"); 257 assert.strictEqual(ts.resolvePath("/a/../"), "/"); 258 assert.strictEqual(ts.resolvePath("/a/../b"), "/b"); 259 assert.strictEqual(ts.resolvePath("/a/../b/"), "/b/"); 260 assert.strictEqual(ts.resolvePath("/a/..", "b"), "/b"); 261 assert.strictEqual(ts.resolvePath("/a/..", "/"), "/"); 262 assert.strictEqual(ts.resolvePath("/a/..", "b/"), "/b/"); 263 assert.strictEqual(ts.resolvePath("/a/..", "/b"), "/b"); 264 assert.strictEqual(ts.resolvePath("/a/.", "b"), "/a/b"); 265 assert.strictEqual(ts.resolvePath("/a/.", "."), "/a"); 266 assert.strictEqual(ts.resolvePath("a", "b", "c"), "a/b/c"); 267 assert.strictEqual(ts.resolvePath("a", "b", "/c"), "/c"); 268 assert.strictEqual(ts.resolvePath("a", "b", "../c"), "a/c"); 269 }); 270 it("getPathRelativeTo", () => { 271 assert.strictEqual(ts.getRelativePathFromDirectory("/", "/", /*ignoreCase*/ false), ""); 272 assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/a", /*ignoreCase*/ false), ""); 273 assert.strictEqual(ts.getRelativePathFromDirectory("/a/", "/a", /*ignoreCase*/ false), ""); 274 assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/", /*ignoreCase*/ false), ".."); 275 assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/b", /*ignoreCase*/ false), "../b"); 276 assert.strictEqual(ts.getRelativePathFromDirectory("/a/b", "/b", /*ignoreCase*/ false), "../../b"); 277 assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/b", /*ignoreCase*/ false), "../../../b"); 278 assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/b/c", /*ignoreCase*/ false), "../../../b/c"); 279 assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/a/b", /*ignoreCase*/ false), ".."); 280 assert.strictEqual(ts.getRelativePathFromDirectory("c:", "d:", /*ignoreCase*/ false), "d:/"); 281 assert.strictEqual(ts.getRelativePathFromDirectory("file:///", "file:///", /*ignoreCase*/ false), ""); 282 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///a", /*ignoreCase*/ false), ""); 283 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/", "file:///a", /*ignoreCase*/ false), ""); 284 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///", /*ignoreCase*/ false), ".."); 285 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///b", /*ignoreCase*/ false), "../b"); 286 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b", "file:///b", /*ignoreCase*/ false), "../../b"); 287 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///b", /*ignoreCase*/ false), "../../../b"); 288 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///b/c", /*ignoreCase*/ false), "../../../b/c"); 289 assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///a/b", /*ignoreCase*/ false), ".."); 290 assert.strictEqual(ts.getRelativePathFromDirectory("file:///c:", "file:///d:", /*ignoreCase*/ false), "file:///d:/"); 291 }); 292 it("toFileNameLowerCase", () => { 293 assert.strictEqual( 294 ts.toFileNameLowerCase("/user/UserName/projects/Project/file.ts"), 295 "/user/username/projects/project/file.ts" 296 ); 297 assert.strictEqual( 298 ts.toFileNameLowerCase("/user/UserName/projects/projectß/file.ts"), 299 "/user/username/projects/projectß/file.ts" 300 ); 301 assert.strictEqual( 302 ts.toFileNameLowerCase("/user/UserName/projects/İproject/file.ts"), 303 "/user/username/projects/İproject/file.ts" 304 ); 305 assert.strictEqual( 306 ts.toFileNameLowerCase("/user/UserName/projects/ı/file.ts"), 307 "/user/username/projects/ı/file.ts" 308 ); 309 }); 310}); 311