@@ -19,56 +19,48 @@ import type {
19
19
} from './types' ;
20
20
21
21
type FileTypeOptions = { |
22
- syntax : string ,
23
- plugins : Array < string >
22
+ + syntax : string ,
23
+ // eslint-disable-next-line no-undef
24
+ + plugins ?: $ReadOnlyArray < string >
24
25
| } ;
25
26
26
- const getFiletypeOptions = ( cssSourceFilePath : string , filetypes : Object ) : ? ( string | FileTypeOptions ) = > {
27
+ const getFiletypeOptions = ( cssSourceFilePath : string , filetypes : { [ key : string ] : FileTypeOptions } ) : ? FileTypeOptions => {
27
28
const extension = cssSourceFilePath . substr ( cssSourceFilePath . lastIndexOf ( '.' ) ) ;
28
29
const filetype = filetypes ? filetypes [ extension ] : null ;
29
30
30
31
return filetype ;
31
32
} ;
32
33
33
- const getSyntax = ( filetypeOptions : ? ( string | FileTypeOptions ) ) => {
34
+ const getSyntax = ( filetypeOptions : FileTypeOptions ) : ? ( Function | Object ) = > {
34
35
if ( ! filetypeOptions ) {
35
36
return null ;
36
37
}
37
38
38
- if ( typeof filetypeOptions === 'string' ) {
39
- // eslint-disable-next-line import/no-dynamic-require, global-require
40
- return require ( filetypeOptions ) ;
41
- }
42
-
43
- if ( typeof filetypeOptions === 'object' ) {
44
- // eslint-disable-next-line import/no-dynamic-require, global-require
45
- return require ( filetypeOptions . syntax ) ;
46
- }
47
-
48
- return null ;
39
+ // eslint-disable-next-line import/no-dynamic-require, global-require
40
+ return require ( filetypeOptions . syntax ) ;
49
41
} ;
50
42
51
- const getExtraPlugins = ( filetypeOptions : ?( string | FileTypeOptions ) ) : Array < any > => {
52
- if ( ! filetypeOptions ) {
43
+ // eslint-disable-next-line no-undef
44
+ const getExtraPlugins = ( filetypeOptions : ?FileTypeOptions ) : $ReadOnlyArray < any > => {
45
+ if ( ! filetypeOptions || ! filetypeOptions . plugins ) {
53
46
return [ ] ;
54
47
}
55
48
56
- if ( typeof filetypeOptions === 'object' ) {
57
- return filetypeOptions . plugins . map ( ( plugin ) => {
58
- // eslint-disable-next-line import/no-dynamic-require, global-require
59
- return require ( plugin ) ;
60
- } ) ;
61
- }
62
-
63
- return [ ] ;
49
+ return filetypeOptions . plugins . map ( ( plugin ) => {
50
+ // eslint-disable-next-line import/no-dynamic-require, global-require
51
+ return require ( plugin ) ;
52
+ } ) ;
64
53
} ;
65
54
66
- const getTokens = ( runner , cssSourceFilePath : string , filetypeOptions : ?( string | FileTypeOptions ) ) : StyleModuleMapType => {
55
+ const getTokens = ( runner , cssSourceFilePath : string , filetypeOptions : ?FileTypeOptions ) : StyleModuleMapType => {
67
56
const options : Object = {
68
- from : cssSourceFilePath ,
69
- syntax : getSyntax ( filetypeOptions )
57
+ from : cssSourceFilePath
70
58
} ;
71
59
60
+ if ( filetypeOptions ) {
61
+ options . syntax = getSyntax ( filetypeOptions ) ;
62
+ }
63
+
72
64
const lazyResult = runner
73
65
. process ( readFileSync ( cssSourceFilePath , 'utf-8' ) , options ) ;
74
66
0 commit comments