@@ -17,22 +17,24 @@ interface Config {
17
17
* custom cache key
18
18
* if not set, I will combine all transform's cahceKey.
19
19
*/
20
- getCacheKey ?: Transformer < Config > [ 'getCacheKey' ] | Transformer < Config > [ 'getCacheKeyAsync' ] ;
20
+ getCacheKey ?:
21
+ | Transformer < Config > [ 'getCacheKey' ]
22
+ | Transformer < Config > [ 'getCacheKeyAsync' ] ;
21
23
}
22
24
23
- const requireTransformer = ( path : string ) => {
24
- const transformer = ( require ( path ) . default || require ( path ) ) ;
25
+ const requireTransformer = ( path : string , config : Record < string , any > ) => {
26
+ const transformer = require ( path ) . default || require ( path ) ;
25
27
26
28
if ( ! transformer . process && ! transformer . processAsync ) {
27
29
if ( transformer . createTransformer ) {
28
- return transformer . createTransformer ( ) ;
30
+ return transformer . createTransformer ( config || { } ) ;
29
31
}
30
32
31
33
return null ;
32
34
}
33
35
34
36
return transformer ;
35
- }
37
+ } ;
36
38
37
39
const flatTransformers = ( transformers : Config [ 'transformers' ] ) => {
38
40
const containers : any [ ] = [ ] ;
@@ -41,25 +43,24 @@ const flatTransformers = (transformers: Config['transformers']) => {
41
43
let transformerModule ;
42
44
43
45
if ( typeof transformer === 'string' ) {
44
- transformerModule = requireTransformer ( transformer ) ;
46
+ transformerModule = requireTransformer ( transformer , { } ) ;
45
47
46
48
if ( ! transformerModule ) {
47
49
console . error ( `cant load ${ transformer } as a transformer, so skip it` ) ;
48
50
break ;
49
51
}
50
- }
51
- else if ( Array . isArray ( transformer ) ) {
52
+ } else if ( Array . isArray ( transformer ) ) {
52
53
transformerModule = {
53
- ...requireTransformer ( transformer [ 0 ] ) ,
54
- transformerConfig : transformer [ 1 ]
54
+ ...requireTransformer ( transformer [ 0 ] , transformer [ 1 ] ) ,
55
+ transformerConfig : transformer [ 1 ] ,
55
56
} ;
56
57
}
57
58
58
59
containers . push ( transformerModule ) ;
59
60
}
60
61
61
62
return containers ;
62
- }
63
+ } ;
63
64
64
65
const createTransformer = ( ) : Transformer < Config > => {
65
66
let flattenTransformers : any = null ;
@@ -69,49 +70,101 @@ const createTransformer = (): Transformer<Config> => {
69
70
return flattenTransformers ;
70
71
}
71
72
72
- flattenTransformers = flatTransformers ( options . transformerConfig . transformers ) ;
73
+ flattenTransformers = flatTransformers (
74
+ options . transformerConfig . transformers
75
+ ) ;
73
76
74
77
return flattenTransformers ;
75
- }
78
+ } ;
76
79
77
- const constructOptions = < T > ( options : TransformOptions < Config > , config : T ) : TransformOptions < T > => {
80
+ const constructOptions = < T > (
81
+ options : TransformOptions < Config > ,
82
+ config : T
83
+ ) : TransformOptions < T > => {
78
84
return {
79
85
...options ,
80
- transformerConfig : config
86
+ transformerConfig : config ,
81
87
} ;
82
- }
88
+ } ;
83
89
84
90
return {
85
91
canInstrument : true ,
86
- getCacheKey : ( sourceText : string , sourcePath : string , options : TransformOptions < Config > ) : string => {
92
+ getCacheKey : (
93
+ sourceText : string ,
94
+ sourcePath : string ,
95
+ options : TransformOptions < Config >
96
+ ) : string => {
87
97
const transformers = getFlattenTransformers ( options ) ;
88
98
89
99
return transformers . reduce ( ( res : string , transformer : any ) => {
90
- return res + transformer . getCacheKey ?.( sourceText , sourcePath , constructOptions ( options , transformer . transformerConfig ) ) || ''
100
+ return (
101
+ res +
102
+ transformer . getCacheKey ?.(
103
+ sourceText ,
104
+ sourcePath ,
105
+ constructOptions ( options , transformer . transformerConfig )
106
+ ) || ''
107
+ ) ;
91
108
} , '' ) ;
92
109
} ,
93
- process : ( sourceText : string , sourcePath : string , options : TransformOptions < Config > ) : string => {
110
+ process : (
111
+ sourceText : string ,
112
+ sourcePath : string ,
113
+ options : TransformOptions < Config >
114
+ ) : string => {
94
115
const transformers = getFlattenTransformers ( options ) ;
95
116
96
- return transformers . reduce ( ( res : { code : string } , transformer : any ) => {
97
- return transformer . process ?.( res . code ? res . code : res , sourcePath , constructOptions ( options , transformer . transformerConfig ) )
98
- } , { code : sourceText } ) ;
117
+ return transformers . reduce (
118
+ ( res : { code : string } , transformer : any ) => {
119
+ return transformer . process ?.(
120
+ res . code ? res . code : res ,
121
+ sourcePath ,
122
+ constructOptions ( options , transformer . transformerConfig )
123
+ ) ;
124
+ } ,
125
+ { code : sourceText }
126
+ ) ;
99
127
} ,
100
- getCacheKeyAsync : async ( sourceText : string , sourcePath : string , options : TransformOptions < Config > ) => {
128
+ getCacheKeyAsync : async (
129
+ sourceText : string ,
130
+ sourcePath : string ,
131
+ options : TransformOptions < Config >
132
+ ) => {
101
133
const transformers = getFlattenTransformers ( options ) ;
102
134
103
- return await transformers . reduce ( async ( res : string , transformer : any ) => {
104
- return res + await transformer . getCacheKeyAsync ?.( sourceText , sourcePath , constructOptions ( options , transformer . transformerConfig ) ) || ''
105
- } , '' ) ;
135
+ return await transformers . reduce (
136
+ async ( res : string , transformer : any ) => {
137
+ return (
138
+ res +
139
+ ( await transformer . getCacheKeyAsync ?.(
140
+ sourceText ,
141
+ sourcePath ,
142
+ constructOptions ( options , transformer . transformerConfig )
143
+ ) ) || ''
144
+ ) ;
145
+ } ,
146
+ ''
147
+ ) ;
106
148
} ,
107
- processAsync : async ( sourceText : string , sourcePath : string , options : TransformOptions < Config > ) => {
149
+ processAsync : async (
150
+ sourceText : string ,
151
+ sourcePath : string ,
152
+ options : TransformOptions < Config >
153
+ ) => {
108
154
const transformers = getFlattenTransformers ( options ) ;
109
155
110
- return await transformers . reduce ( async ( res : { code : string } , transformer : any ) => {
111
- return await transformer . process ?.( res . code ? res . code : res , sourcePath , constructOptions ( options , transformer . transformerConfig ) ) ;
112
- } , { code : sourceText } ) ;
113
- }
114
- }
115
- }
156
+ return await transformers . reduce (
157
+ async ( res : { code : string } , transformer : any ) => {
158
+ return await transformer . process ?.(
159
+ res . code ? res . code : res ,
160
+ sourcePath ,
161
+ constructOptions ( options , transformer . transformerConfig )
162
+ ) ;
163
+ } ,
164
+ { code : sourceText }
165
+ ) ;
166
+ } ,
167
+ } ;
168
+ } ;
116
169
117
- export default createTransformer ( ) ;
170
+ export default createTransformer ( ) ;
0 commit comments