Skip to content

Commit 7e8e94c

Browse files
committed
Fix(api): Improve type safety for dynamic import constructor access
1 parent c52a888 commit 7e8e94c

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

app/api/generate-schema-doc/route.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,19 @@ export async function POST(request: Request) {
195195
const LibraryModule: JsonSchemaStaticDocsModule = JsonSchemaStaticDocsLib;
196196
let Constructor: JsonSchemaStaticDocsConstructor | null = null;
197197

198-
// Use the type guard
198+
// Use the type guard first for the direct constructor case
199199
if (isDocConstructor(LibraryModule)) {
200200
Constructor = LibraryModule;
201-
} else if (LibraryModule && typeof LibraryModule === 'object' && LibraryModule.default && isDocConstructor(LibraryModule.default)) {
202-
Constructor = LibraryModule.default;
203-
} else if (LibraryModule && typeof LibraryModule === 'object' && LibraryModule.JsonSchemaStaticDocs && isDocConstructor(LibraryModule.JsonSchemaStaticDocs)) {
204-
Constructor = LibraryModule.JsonSchemaStaticDocs;
205-
} else if (LibraryModule && typeof LibraryModule === 'object' && LibraryModule.DocGenerator && isDocConstructor(LibraryModule.DocGenerator)) {
206-
Constructor = LibraryModule.DocGenerator;
201+
// Check if it's an object before checking properties
202+
} else if (LibraryModule && typeof LibraryModule === 'object') {
203+
// Use 'in' operator for safer property checking
204+
if ('default' in LibraryModule && LibraryModule.default && isDocConstructor(LibraryModule.default)) {
205+
Constructor = LibraryModule.default;
206+
} else if ('JsonSchemaStaticDocs' in LibraryModule && LibraryModule.JsonSchemaStaticDocs && isDocConstructor(LibraryModule.JsonSchemaStaticDocs)) {
207+
Constructor = LibraryModule.JsonSchemaStaticDocs;
208+
} else if ('DocGenerator' in LibraryModule && LibraryModule.DocGenerator && isDocConstructor(LibraryModule.DocGenerator)) {
209+
Constructor = LibraryModule.DocGenerator;
210+
}
207211
}
208212

209213
if (!Constructor) {

0 commit comments

Comments
 (0)