11#!/usr/bin/env node
2+
23'use strict'
34
4- const docgen = require ( 'react-docgen-typescript' )
5- const fs = require ( 'fs' ) . promises
6- const path = require ( 'path' )
5+ const fs = require ( 'node:fs' ) . promises
6+ const path = require ( 'node:path' )
77const globby = require ( 'globby' )
8+ const docgen = require ( 'react-docgen-typescript' )
89
910const GLOB = [ '**/src/**/*.tsx' ]
1011const GLOBBY_OPTIONS = {
@@ -22,59 +23,67 @@ const options = {
2223
2324const PRO_COMPONENTS = [ ]
2425
26+ const replace = ( text ) =>
27+ text
28+ . replaceAll ( '(<' , '(\\<' )
29+ . replace ( / < C ( .* ) \/ > / g, '`<C$1/>`' )
30+ . replaceAll ( '\n' , '<br/>' )
31+
2532async function createMdx ( file , filename , name , props ) {
26- if ( typeof props === 'undefined' ) return
33+ if ( typeof props === 'undefined' ) {
34+ return
35+ }
2736
2837 const pro = PRO_COMPONENTS . some ( ( v ) => file . includes ( v ) )
2938 const relativeFilename = file . replace ( GLOBBY_OPTIONS . cwd , '' ) . replace ( 'coreui-' , '' )
3039
31- let content = `
32- \`\`\`jsx
33- import { ${ name } } from '@coreui/${ relativeFilename . split ( '/' ) [ 1 ] } ${ pro ? '-pro' : '' } '
34- // or
35- import ${ name } from '@coreui${ relativeFilename . replace ( '.tsx' , '' ) } '
36- \`\`\`\n
37- `
40+ let content = `\n`
41+ content += `\`\`\`jsx\n`
42+ content += `import { ${ name } } from '@coreui/${ relativeFilename . split ( '/' ) [ 1 ] } ${
43+ pro ? '-pro' : ''
44+ } '\n`
45+ content += `// or\n`
46+ content += `import ${ name } from '@coreui${ relativeFilename . replace ( '.tsx' , '' ) } '\n`
47+ content += `\`\`\`\n\n`
3848
3949 let index = 0
4050 for ( const [ key , value ] of Object . entries ( props ) . sort ( ) ) {
4151 if (
42- ! value . parent . fileName . includes ( '@types/react/index.d.ts' ) &&
43- typeof value . tags . ignore === 'undefined'
52+ value . parent . fileName . includes ( '@types/react/index.d.ts' ) ||
53+ value . parent . fileName . includes ( '@types/react/ts5.0/index.d.ts' )
4454 ) {
45- if ( index === 0 ) {
46- content += `| Property | Description | Type | Default |\n`
47- content += `| --- | --- | --- | --- |\n`
48- }
49- let name = value . name || ''
50- const since = value . tags . since ? ` **_${ value . tags . since } +_**` : ''
51- const deprecated = value . tags . deprecated ? ` **_Deprecated ${ value . tags . deprecated } +_**` : ''
52- const description = value . description || '-'
53- const type = value . type
54- ? value . type . name . includes ( 'ReactElement' )
55- ? 'ReactElement'
56- : value . type . name
57- : ''
58- const defaultValue = value . defaultValue
59- ? value . defaultValue . value . replace ( 'undefined' , '-' )
60- : '-'
61- const types = [ ]
62- type . split ( ' | ' ) . map ( ( element ) => {
63- types . push ( `\`${ element . replace ( / " / g, "'" ) } \`` )
64- } )
65-
66- const replace = ( text ) =>
67- text
68- . replaceAll ( '(<' , '(\\<' )
69- . replace ( / < C ( .* ) \/ > / g, '`<C$1/>`' )
70- . replaceAll ( '\n' , '<br/>' )
71-
72- content += `| **${ name } **${ since } ${ deprecated } | ${ replace ( description ) } | ${ types . join (
73- ' \\| ' ,
74- ) } | ${ replace ( defaultValue ) } |\n`
75- console . log ( `${ filename } - ${ key } ` )
76- index ++
55+ continue
7756 }
57+
58+ if ( value . tags . ignore === '' ) {
59+ continue
60+ }
61+
62+ if ( index === 0 ) {
63+ content += `| Property | Description | Type | Default |\n`
64+ content += `| --- | --- | --- | --- |\n`
65+ }
66+ let name = value . name || ''
67+ const since = value . tags . since ? ` **_${ value . tags . since } +_**` : ''
68+ const deprecated = value . tags . deprecated ? ` **_Deprecated ${ value . tags . deprecated } +_**` : ''
69+ const description = value . description || '-'
70+ const type = value . type
71+ ? ( value . type . name . includes ( 'ReactElement' )
72+ ? 'ReactElement'
73+ : value . type . name )
74+ : ''
75+ const defaultValue = value . defaultValue
76+ ? value . defaultValue . value . replace ( 'undefined' , '-' )
77+ : '-'
78+ const types = [ ]
79+ type . split ( ' | ' ) . map ( ( element ) => {
80+ types . push ( `\`${ element . replace ( / " / g, "'" ) } \`` )
81+ } )
82+
83+ content += `| **${ name } **${ since } ${ deprecated } | ${ replace ( description ) } | ${ types . join (
84+ ' \\| ' ,
85+ ) } | ${ replace ( defaultValue ) } |\n`
86+ index ++
7887 }
7988
8089 await fs
0 commit comments