Skip to content

Commit c1dbbde

Browse files
committed
chore: wip
1 parent 8598729 commit c1dbbde

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

src/extract.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ export async function extractTypeFromSource(filePath: string): Promise<string> {
77
let usedTypes = new Set<string>()
88
let importMap = new Map<string, Set<string>>()
99

10+
// Handle re-exports
11+
const reExportRegex = /export\s*(?:\*|\{[^}]*\})\s*from\s*['"]([^'"]+)['"]/g
12+
let reExportMatch
13+
while ((reExportMatch = reExportRegex.exec(fileContent)) !== null) {
14+
declarations += `${reExportMatch[0]}\n`
15+
}
16+
1017
// Capture all imports
1118
const importRegex = /import\s+(?:(type)\s+)?(?:(\{[^}]+\})|(\w+))(?:\s*,\s*(?:(\{[^}]+\})|(\w+)))?\s+from\s+['"]([^'"]+)['"]/g
1219
let importMatch
@@ -22,7 +29,7 @@ export async function extractTypeFromSource(filePath: string): Promise<string> {
2229
const [name, alias] = t.split(' as ').map(s => s.trim())
2330
return { name: name.replace(/^type\s+/, ''), alias: alias || name.replace(/^type\s+/, '') }
2431
})
25-
types.forEach(({ name, alias }) => {
32+
types.forEach(({ name }) => {
2633
importMap.get(from)!.add(name)
2734
})
2835
}
@@ -80,12 +87,7 @@ export async function extractTypeFromSource(filePath: string): Promise<string> {
8087
}
8188

8289
// Apply final formatting
83-
const formattedDeclarations = formatDeclarations(declarations, false)
84-
85-
console.log(`Unformatted declarations for ${filePath}:`, declarations)
86-
console.log(`Extracted declarations for ${filePath}:`, formattedDeclarations)
87-
88-
return formattedDeclarations
90+
return formatDeclarations(declarations, false)
8991
}
9092

9193
export async function extractConfigTypeFromSource(filePath: string): Promise<string> {
@@ -114,7 +116,7 @@ export async function extractConfigTypeFromSource(filePath: string): Promise<str
114116
declarations += `export declare const ${name}: ${type.trim()}\n`
115117
}
116118

117-
console.log(`Extracted config declarations for ${filePath}:`, declarations)
119+
// console.log(`Extracted config declarations for ${filePath}:`, declarations)
118120
return declarations.trim() + '\n'
119121
} catch (error) {
120122
console.error(`Error extracting config declarations from ${filePath}:`, error)
@@ -133,6 +135,7 @@ export async function extractIndexTypeFromSource(filePath: string): Promise<stri
133135
declarations += `${match[0]}\n`
134136
}
135137

136-
console.log(`Extracted index declarations for ${filePath}:`, declarations)
138+
// console.log(`Extracted index declarations for ${filePath}:`, declarations)
139+
137140
return declarations.trim() + '\n'
138141
}

src/generate.ts

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import type { Result } from 'neverthrow'
21
import type { DtsGenerationConfig, DtsGenerationOption } from './types'
32
import { rm, mkdir } from 'node:fs/promises'
43
import { join, relative, dirname } from 'node:path'
5-
import { err, ok } from 'neverthrow'
64
import { config } from './config'
75
import { writeToFile, getAllTypeScriptFiles, checkIsolatedDeclarations, formatDeclarations } from './utils'
86
import { extractTypeFromSource, extractConfigTypeFromSource, extractIndexTypeFromSource } from './extract'
@@ -17,15 +15,15 @@ export async function generateDeclarationsFromFiles(options: DtsGenerationConfig
1715
}
1816

1917
if (options.clean) {
20-
console.log('Cleaning output directory...')
18+
// console.log('Cleaning output directory...')
2119
await rm(options.outdir, { recursive: true, force: true })
2220
}
2321

2422
const files = await getAllTypeScriptFiles(options.root)
25-
console.log('Found the following TypeScript files:', files)
23+
// console.log('Found the following TypeScript files:', files)
2624

2725
for (const file of files) {
28-
console.log(`Processing file: ${file}`)
26+
// console.log(`Processing file: ${file}`)
2927
const fileDeclarations = await extractTypeFromSource(file)
3028

3129
if (fileDeclarations) {
@@ -38,13 +36,13 @@ export async function generateDeclarationsFromFiles(options: DtsGenerationConfig
3836
// Write the declarations without additional formatting
3937
await writeToFile(outputPath, fileDeclarations)
4038

41-
console.log(`Generated ${outputPath}`)
39+
// console.log(`Generated ${outputPath}`)
4240
} else {
4341
console.warn(`No declarations extracted for ${file}`)
4442
}
4543
}
4644

47-
console.log('Declaration file generation complete')
45+
// console.log('Declaration file generation complete')
4846
} catch (error) {
4947
console.error('Error generating declarations:', error)
5048
}
@@ -53,11 +51,3 @@ export async function generateDeclarationsFromFiles(options: DtsGenerationConfig
5351
export async function generate(options?: DtsGenerationOption): Promise<void> {
5452
await generateDeclarationsFromFiles({ ...config, ...options })
5553
}
56-
57-
function validateOptions(options: unknown): Result<DtsGenerationOption, Error> {
58-
if (typeof options === 'object' && options !== null) {
59-
return ok(options as DtsGenerationOption)
60-
}
61-
62-
return err(new Error('Invalid options'))
63-
}

0 commit comments

Comments
 (0)