From 11cf80cb88f5340715674bdf1fdc6930d5a0a10f Mon Sep 17 00:00:00 2001 From: Perryvw Date: Mon, 1 Aug 2022 22:22:29 +0200 Subject: [PATCH 1/2] Fix import expression --- src/transformation/visitors/modules/import.ts | 5 +++-- src/transpilation/resolve.ts | 4 ++-- test/unit/modules/modules.spec.ts | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/transformation/visitors/modules/import.ts b/src/transformation/visitors/modules/import.ts index 7a320d558..66432fb44 100644 --- a/src/transformation/visitors/modules/import.ts +++ b/src/transformation/visitors/modules/import.ts @@ -167,6 +167,7 @@ export const transformImportEqualsDeclaration: FunctionVisitor = (node, context) => { importLuaLibFeature(context, LuaLibFeature.Promise); - const importPath = node.arguments.map(a => context.transformExpression(a)); - return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", node), importPath, node); + const moduleRequire = + node.arguments.length > 0 ? createModuleRequire(context, node.arguments[0], node) : lua.createNilLiteral(); + return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", node), [moduleRequire], node); }; diff --git a/src/transpilation/resolve.ts b/src/transpilation/resolve.ts index ccf0bdfa4..1e5a88131 100644 --- a/src/transpilation/resolve.ts +++ b/src/transpilation/resolve.ts @@ -260,7 +260,7 @@ function isBuildModeLibrary(program: ts.Program) { function findRequiredPaths(code: string): string[] { // Find all require("") paths in a lua code string const paths: string[] = []; - const pattern = /(^|\s|;|=)require\("(.+?)"\)/g; + const pattern = /(^|\s|;|=|\()require\("(.+?)"\)/g; // eslint-disable-next-line @typescript-eslint/ban-types let match: RegExpExecArray | null; while ((match = pattern.exec(code))) { @@ -277,7 +277,7 @@ function replaceRequireInCode(file: ProcessedFile, originalRequire: string, newR const escapedRequire = originalRequire.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"); file.code = file.code.replace( - new RegExp(`(^|\\s|;|=)require\\("${escapedRequire}"\\)`), + new RegExp(`(^|\\s|;|=|\\()require\\("${escapedRequire}"\\)`), `$1require("${requirePath}")` ); } diff --git a/test/unit/modules/modules.spec.ts b/test/unit/modules/modules.spec.ts index 73f7c5be1..502040d23 100644 --- a/test/unit/modules/modules.spec.ts +++ b/test/unit/modules/modules.spec.ts @@ -289,5 +289,6 @@ test("import expression", () => { ` .addExtraFile("module.ts", 'export function foo() { return "foo"; }') .setOptions({ module: ts.ModuleKind.ESNext }) + .expectToEqual({ result: "foo" }) .expectToMatchJsResult(); }); From 4e89a423b1fbd2014035972f51861459ab6da9e0 Mon Sep 17 00:00:00 2001 From: Perryvw Date: Wed, 3 Aug 2022 21:21:04 +0200 Subject: [PATCH 2/2] removed incorrect assert --- test/unit/modules/modules.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unit/modules/modules.spec.ts b/test/unit/modules/modules.spec.ts index 502040d23..bbe978226 100644 --- a/test/unit/modules/modules.spec.ts +++ b/test/unit/modules/modules.spec.ts @@ -289,6 +289,5 @@ test("import expression", () => { ` .addExtraFile("module.ts", 'export function foo() { return "foo"; }') .setOptions({ module: ts.ModuleKind.ESNext }) - .expectToEqual({ result: "foo" }) - .expectToMatchJsResult(); + .expectToEqual({ result: "foo" }); });