@@ -5,16 +5,23 @@ const classes = getTypesClasses(types)
55function getTypesClasses ( types ) {
66 let classes = { }
77 const rawClasses = types . replace ( / ( \n | \r ) / ig, '' )
8- . match ( / ( e x p o r t d e c l a r e | d e c l a r e c l a s s ) .* ?( } ) / g)
8+ . split ( 'declare' )
9+ . filter ( rawClass => rawClass . includes ( 'class' ) )
10+
911 rawClasses . forEach ( rawClass => {
10- const name = rawClass . match ( / (?< = c l a s s \s + ) .* ?(? = \s + e x t e n d s ) / gs) [ 0 ]
12+ const name = rawClass . match ( / (?< = c l a s s \s + ) .* ?(? = \s + ) / gs) [ 0 ]
13+
14+ const propsRaw = rawClass
15+ . substring ( rawClass . indexOf ( '{' ) + 1 , rawClass . lastIndexOf ( '}' ) )
16+ . replace ( / { ( ( ) ( [ ^ } ] ) ) + } / ig, 'custom' )
17+
1118
12- const propsRaw = rawClass . substring ( rawClass . indexOf ( '{' ) + 1 , rawClass . indexOf ( '}' ) )
1319 let props = propsRaw . match ( / ( [ a - z A - Z ? ] + : ) .* ?(? = [ a - z A - Z ? ] + : | $ ) / g)
14- if ( props ) {
15- props = props . map ( prop => prop . trim ( ) )
16- }
1720
21+ if ( props ) {
22+ props = props . map ( prop => prop . trim ( ) . replace ( '?' , '' ) )
23+ }
24+
1825 classes [ name ] = {
1926 isExported : rawClass . includes ( 'export' ) ,
2027 extend : rawClass . match ( / (?< = e x t e n d s \s + ) .* ?(? = \s + { ) / gs) [ 0 ] ,
@@ -24,7 +31,8 @@ function getTypesClasses (types) {
2431 Object . entries ( classes ) . forEach ( ( [ key , value ] ) => {
2532 if ( value . extend !== 'Vue' ) {
2633 const props = classes [ key ] . props || [ ]
27- classes [ key ] . props = [ ...props , ...( classes [ value . extend ] . props ) ]
34+ const extend = classes [ value . extend ] . props || [ ]
35+ classes [ key ] . props = [ ...props , ...extend ]
2836 }
2937 } )
3038 return classes
0 commit comments