Skip to content

Commit e7b6aa0

Browse files
committed
Case insensitivity, remove lookbehind
1 parent 689efe3 commit e7b6aa0

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

test/node/rewriteRelativeImportExtension.test.js

+4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ testHelper("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension
77
assert.equal(__rewriteRelativeImportExtension("./foo.ts"), "./foo.js");
88
assert.equal(__rewriteRelativeImportExtension("../foo.ts"), "../foo.js");
99
assert.equal(__rewriteRelativeImportExtension("../../foo.ts"), "../../foo.js");
10+
assert.equal(__rewriteRelativeImportExtension("./foo.TS"), "./foo.js");
11+
assert.equal(__rewriteRelativeImportExtension("./foo.Ts"), "./foo.js");
1012
});
1113

1214
test("rewrites other TypeScript extensions", () => {
1315
assert.equal(__rewriteRelativeImportExtension("./foo.mts"), "./foo.mjs");
1416
assert.equal(__rewriteRelativeImportExtension("./foo.cts"), "./foo.cjs");
1517
assert.equal(__rewriteRelativeImportExtension("./foo.tsx"), "./foo.js");
1618
assert.equal(__rewriteRelativeImportExtension("./foo.tsx", true), "./foo.jsx");
19+
assert.equal(__rewriteRelativeImportExtension("./foo.Tsx", true), "./foo.jsx");
1720
});
1821

1922
test("does not rewrite other extensions", () => {
@@ -45,5 +48,6 @@ testHelper("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension
4548
assert.equal(__rewriteRelativeImportExtension("./foo.d.mts"), "./foo.d.mts");
4649
assert.equal(__rewriteRelativeImportExtension("./foo.d.cts"), "./foo.d.cts");
4750
assert.equal(__rewriteRelativeImportExtension("./foo.d.css.ts"), "./foo.d.css.ts");
51+
assert.equal(__rewriteRelativeImportExtension("./foo.D.ts"), "./foo.D.ts");
4852
});
4953
});

tslib.es6.js

+7-6
Original file line numberDiff line numberDiff line change
@@ -350,17 +350,18 @@ export function __disposeResources(env) {
350350

351351
export function __rewriteRelativeImportExtension(path, preserveJsx) {
352352
if (typeof path === "string" && path[0] === "." && (path[1] === "/" || path[1] === "." && path[2] === "/")) {
353-
if (path.substring(path.length - 4) === ".tsx") {
353+
if (path.substring(path.length - 4).toLowerCase() === ".tsx") {
354354
return path.substring(0, path.length - 4) + (preserveJsx ? ".jsx" : ".js");
355355
}
356-
if (path.substring(path.length - 3) === ".ts") {
357-
var dot = path.lastIndexOf(".", path.length - 4);
358-
if (dot >= 0 && (path.substring(dot - 2, dot) === ".d" || path.substring(dot, dot + 2) === ".d")) {
356+
var extMatch = path.match(/\.[cm]?ts$/i);
357+
if (extMatch) {
358+
var ext = extMatch[0].toLowerCase();
359+
var dot = path.lastIndexOf(".", path.length - (ext.length + 1));
360+
if (dot >= 0 && (path.substring(dot - 2, dot).toLowerCase() === ".d" || path.substring(dot, dot + 2).toLowerCase() === ".d")) {
359361
return path;
360362
}
361-
return path.substring(0, path.length - 3) + ".js";
363+
return path.substring(0, path.length - ext.length) + (ext === ".mts" ? ".mjs" : ext === ".cts" ? ".cjs" : ".js");
362364
}
363-
return path.replace(/(?<!\.d)\.[cm]ts$/, function (ext) { return ext === ".mts" ? ".mjs" : ".cjs"; });
364365
}
365366
return path;
366367
}

tslib.es6.mjs

+11-10
Original file line numberDiff line numberDiff line change
@@ -349,17 +349,18 @@ export function __disposeResources(env) {
349349

350350
export function __rewriteRelativeImportExtension(path, preserveJsx) {
351351
if (typeof path === "string" && path[0] === "." && (path[1] === "/" || path[1] === "." && path[2] === "/")) {
352-
if (path.substring(path.length - 4) === ".tsx") {
353-
return path.substring(0, path.length - 4) + (preserveJsx ? ".jsx" : ".js");
354-
}
355-
if (path.substring(path.length - 3) === ".ts") {
356-
var dot = path.lastIndexOf(".", path.length - 4);
357-
if (dot >= 0 && (path.substring(dot - 2, dot) === ".d" || path.substring(dot, dot + 2) === ".d")) {
358-
return path;
352+
if (path.substring(path.length - 4).toLowerCase() === ".tsx") {
353+
return path.substring(0, path.length - 4) + (preserveJsx ? ".jsx" : ".js");
354+
}
355+
var extMatch = path.match(/\.[cm]?ts$/i);
356+
if (extMatch) {
357+
var ext = extMatch[0].toLowerCase();
358+
var dot = path.lastIndexOf(".", path.length - (ext.length + 1));
359+
if (dot >= 0 && (path.substring(dot - 2, dot).toLowerCase() === ".d" || path.substring(dot, dot + 2).toLowerCase() === ".d")) {
360+
return path;
361+
}
362+
return path.substring(0, path.length - ext.length) + (ext === ".mts" ? ".mjs" : ext === ".cts" ? ".cjs" : ".js");
359363
}
360-
return path.substring(0, path.length - 3) + ".js";
361-
}
362-
return path.replace(/(?<!\.d)\.[cm]ts$/, function (ext) { return ext === ".mts" ? ".mjs" : ".cjs"; });
363364
}
364365
return path;
365366
}

tslib.js

+7-6
Original file line numberDiff line numberDiff line change
@@ -398,17 +398,18 @@ var __rewriteRelativeImportExtension;
398398

399399
__rewriteRelativeImportExtension = function (path, preserveJsx) {
400400
if (typeof path === "string" && path[0] === "." && (path[1] === "/" || path[1] === "." && path[2] === "/")) {
401-
if (path.substring(path.length - 4) === ".tsx") {
401+
if (path.substring(path.length - 4).toLowerCase() === ".tsx") {
402402
return path.substring(0, path.length - 4) + (preserveJsx ? ".jsx" : ".js");
403403
}
404-
if (path.substring(path.length - 3) === ".ts") {
405-
var dot = path.lastIndexOf(".", path.length - 4);
406-
if (dot >= 0 && (path.substring(dot - 2, dot) === ".d" || path.substring(dot, dot + 2) === ".d")) {
404+
var extMatch = path.match(/\.[cm]?ts$/i);
405+
if (extMatch) {
406+
var ext = extMatch[0].toLowerCase();
407+
var dot = path.lastIndexOf(".", path.length - (ext.length + 1));
408+
if (dot >= 0 && (path.substring(dot - 2, dot).toLowerCase() === ".d" || path.substring(dot, dot + 2).toLowerCase() === ".d")) {
407409
return path;
408410
}
409-
return path.substring(0, path.length - 3) + ".js";
411+
return path.substring(0, path.length - ext.length) + (ext === ".mts" ? ".mjs" : ext === ".cts" ? ".cjs" : ".js");
410412
}
411-
return path.replace(/(?<!\.d)\.[cm]ts$/, function (ext) { return ext === ".mts" ? ".mjs" : ".cjs"; });
412413
}
413414
return path;
414415
};

0 commit comments

Comments
 (0)