From 10d9089cd3fb01647f96b0f893382828bb727c87 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 21 Oct 2024 21:34:33 +0200 Subject: [PATCH] chore: wip --- src/extract.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index ea5375c..859f4b3 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -177,7 +177,7 @@ function processTypeDeclaration(declaration: string): string { logDebug(`Processing type declaration: ${declaration}`) const lines = declaration.split('\n') const typeName = lines[0].split('type')[1].split('=')[0].trim() - const typeBody = lines.slice(1).join('\n').trim() + const typeBody = lines.slice(1).join('\n').trim().replace(/;$/, '') const result = `export declare type ${typeName} = ${typeBody}` logDebug(`Processed type declaration: ${result}`) return result @@ -186,11 +186,19 @@ function processTypeDeclaration(declaration: string): string { function processFunctionDeclaration(declaration: string): string { logDebug(`Processing function declaration: ${declaration}`) const functionSignature = declaration.split('{')[0].trim() - const result = `export declare ${functionSignature.replace('export ', '')};` + const asyncKeyword = functionSignature.includes('async') ? 'async ' : '' + const functionName = functionSignature.replace('export ', '').replace('async ', '').split('(')[0].trim() + const params = functionSignature.split('(')[1].split(')')[0].trim() + const result = `export declare ${asyncKeyword}function ${functionName}(${params}): ${getReturnType(declaration)};` logDebug(`Processed function declaration: ${result}`) return result } +function getReturnType(declaration: string): string { + const returnTypeMatch = declaration.match(/:\s*([^\s{]+)/) + return returnTypeMatch ? returnTypeMatch[1] : 'void' +} + function cleanOutput(output: string): string { logDebug('Cleaning output') @@ -211,6 +219,7 @@ function cleanOutput(output: string): string { .replace(/;\s*\/\/\s*/g, '; // ') .replace(/;\s*\}/g, ';\n}') .replace(/;\s*\/\/\s*/g, '; // ') + .replace(/export declare async function/g, 'export declare function') .trim() logDebug('Cleaned output:', result)