From 7198ba04b8b8715f9e1886dcecb39bc783157795 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 4 May 2024 18:58:09 +0530 Subject: [PATCH] fix: dont break transform when there is no space between function and generic parameter (#305) --- src/transform/preprocess.ts | 3 ++- .../unnamed-default-export-without-space/expected.d.ts | 10 ++++++++++ .../unnamed-default-export-without-space/index.d.ts | 9 +++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/testcases/unnamed-default-export-without-space/expected.d.ts create mode 100644 tests/testcases/unnamed-default-export-without-space/index.d.ts diff --git a/src/transform/preprocess.ts b/src/transform/preprocess.ts index 62853c68..14e590b4 100644 --- a/src/transform/preprocess.ts +++ b/src/transform/preprocess.ts @@ -189,7 +189,8 @@ export function preProcess({ sourceFile }: PreProcessInput): PreProcessOutput { nextToken.kind >= ts.SyntaxKind.FirstPunctuation && nextToken.kind <= ts.SyntaxKind.LastPunctuation; if (isPunctuation) { - code.appendLeft(nextToken.getStart(), defaultExport); + const addSpace = code.slice(token.getEnd(), nextToken.getStart()) != " "; + code.appendLeft(nextToken.getStart(), `${addSpace ? " " : ""}${defaultExport}`); } else { code.appendRight(token.getEnd(), ` ${defaultExport}`); } diff --git a/tests/testcases/unnamed-default-export-without-space/expected.d.ts b/tests/testcases/unnamed-default-export-without-space/expected.d.ts new file mode 100644 index 00000000..4d55ac92 --- /dev/null +++ b/tests/testcases/unnamed-default-export-without-space/expected.d.ts @@ -0,0 +1,10 @@ +/** + * @description @TODO + */ +declare function export_default( + object: T, + initializationObject: { + [x in keyof T]: () => Promise; + }, +): Promise; +export { export_default as default }; diff --git a/tests/testcases/unnamed-default-export-without-space/index.d.ts b/tests/testcases/unnamed-default-export-without-space/index.d.ts new file mode 100644 index 00000000..dfd9c91c --- /dev/null +++ b/tests/testcases/unnamed-default-export-without-space/index.d.ts @@ -0,0 +1,9 @@ +/** + * @description @TODO + */ +export default function( + object: T, + initializationObject: { + [x in keyof T]: () => Promise; + }, +): Promise;