1
1
#!/usr/bin/env node
2
+
2
3
'use strict'
3
4
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' )
7
7
const globby = require ( 'globby' )
8
+ const docgen = require ( 'react-docgen-typescript' )
8
9
9
10
const GLOB = [ '**/src/**/*.tsx' ]
10
11
const GLOBBY_OPTIONS = {
@@ -22,59 +23,67 @@ const options = {
22
23
23
24
const PRO_COMPONENTS = [ ]
24
25
26
+ const replace = ( text ) =>
27
+ text
28
+ . replaceAll ( '(<' , '(\\<' )
29
+ . replace ( / < C ( .* ) \/ > / g, '`<C$1/>`' )
30
+ . replaceAll ( '\n' , '<br/>' )
31
+
25
32
async function createMdx ( file , filename , name , props ) {
26
- if ( typeof props === 'undefined' ) return
33
+ if ( typeof props === 'undefined' ) {
34
+ return
35
+ }
27
36
28
37
const pro = PRO_COMPONENTS . some ( ( v ) => file . includes ( v ) )
29
38
const relativeFilename = file . replace ( GLOBBY_OPTIONS . cwd , '' ) . replace ( 'coreui-' , '' )
30
39
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`
38
48
39
49
let index = 0
40
50
for ( const [ key , value ] of Object . entries ( props ) . sort ( ) ) {
41
51
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' )
44
54
) {
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
77
56
}
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 ++
78
87
}
79
88
80
89
await fs
0 commit comments