diff --git a/package.json b/package.json index f98739de..6b68aab1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-docgen-typescript", - "version": "0.0.13", + "version": "0.0.14", "description": "", "main": "lib/index.js", "scripts": { diff --git a/src/__tests__/docgenConverter.spec.ts b/src/__tests__/docgenConverter.spec.ts index f4348ac2..2e8522b4 100644 --- a/src/__tests__/docgenConverter.spec.ts +++ b/src/__tests__/docgenConverter.spec.ts @@ -6,7 +6,7 @@ import { StyleguidistComponent } from '../propTypesParser'; describe('docgenConverter', () => { it('Should work with class Component', () => { - const result = convertToDocgen({ + const result = convertToDocgen('', { components: [ { name: 'name1', @@ -34,7 +34,7 @@ describe('docgenConverter', () => { }); it('Should work with functional StatelessComponent', () => { - const result = convertToDocgen({ + const result = convertToDocgen('', { components: [ { name: 'name1', @@ -66,7 +66,7 @@ describe('docgenConverter', () => { let warnCallCount = 0; console.warn = () => warnCallCount++; try { - result = convertToDocgen({ + result = convertToDocgen('', { components: [ { name: 'name1', @@ -91,7 +91,7 @@ describe('docgenConverter', () => { let warnCallCount = 0; console.warn = () => warnCallCount++; try { - result = convertToDocgen({ + result = convertToDocgen('', { components: [ { name: 'name1', @@ -109,4 +109,10 @@ describe('docgenConverter', () => { assert.equal('name1', result.displayName); assert.equal('comment1', result.description); }); + + it('Should return empty object if there are no components', () => { + const result = convertToDocgen('/root/MyComponent.tsx', { components: [] }); + assert.isOk(result); + assert.equal(result.displayName, 'MyComponent'); + }) }); \ No newline at end of file diff --git a/src/docgenConverter.ts b/src/docgenConverter.ts index 802e2a2f..8af2ded0 100644 --- a/src/docgenConverter.ts +++ b/src/docgenConverter.ts @@ -1,11 +1,16 @@ +import * as path from 'path'; import { FileDoc, InterfaceDoc, MemberDoc } from './model'; import { StyleguidistComponent, StyleguidistProps, PropItem } from './propTypesParser'; -export function convertToDocgen(doc: FileDoc): StyleguidistComponent | null { +export function convertToDocgen(filePath: string, doc: FileDoc): StyleguidistComponent { const components = doc.components; if (components.length === 0) { - return null; + return { + displayName: path.basename(filePath, path.extname(filePath)), + description: '', + props: {}, + }; } const comp = components[0]; diff --git a/src/propTypesParser.ts b/src/propTypesParser.ts index df0d9a42..d32ac523 100644 --- a/src/propTypesParser.ts +++ b/src/propTypesParser.ts @@ -28,5 +28,5 @@ export interface PropItemType { */ export function parse(filePath: string): StyleguidistComponent { const doc = getFileDocumentation(filePath); - return convertToDocgen(doc); + return convertToDocgen(filePath, doc); } \ No newline at end of file