1111
1212'use strict' ;
1313
14+ const babelRegisterOnly = require ( '../../../babelRegisterOnly' ) ;
1415const constantFolding = require ( './constant-folding' ) ;
1516const extractDependencies = require ( './extract-dependencies' ) ;
1617const inline = require ( './inline' ) ;
1718const invariant = require ( 'fbjs/lib/invariant' ) ;
1819const minify = require ( './minify' ) ;
1920
2021import type { LogEntry } from '../../Logger/Types' ;
21- import type { Ast , SourceMap as MappingsMap } from 'babel-core' ;
22+ import type { Ast , Plugins as BabelPlugins , SourceMap as MappingsMap } from 'babel-core' ;
2223
2324export type TransformedCode = {
2425 code : string ,
@@ -27,15 +28,18 @@ export type TransformedCode = {
2728 map ?: ?MappingsMap ,
2829} ;
2930
30- type Transformer = {
31+ export type Transformer < ExtraOptions : { } = { } > = {
3132 transform : (
3233 filename : string ,
3334 sourceCode : string ,
34- options : ?{ } ,
35- ) => { ast : ?Ast , code : string , map : ?MappingsMap }
35+ options : ExtraOptions & TransformOptions ,
36+ plugins ?: BabelPlugins ,
37+ ) => { ast : ?Ast , code : string , map : ?MappingsMap } ,
38+ getCacheKey : TransformOptionsStrict => string ,
3639} ;
3740
38- export type TransformOptions = { |
41+
42+ export type TransformOptionsStrict = { |
3943 + dev : boolean ,
4044 + generateSourceMaps : boolean ,
4145 + hot : boolean ,
@@ -44,11 +48,20 @@ export type TransformOptions = {|
4448 + projectRoot : string ,
4549| } ;
4650
51+ export type TransformOptions = {
52+ + dev ? : boolean ,
53+ + generateSourceMaps ? : boolean ,
54+ + hot ? : boolean ,
55+ + inlineRequires ?: { + blacklist : { [ string ] : true } } | boolean ,
56+ + platform : string ,
57+ + projectRoot : string ,
58+ } ;
59+
4760export type Options = { |
4861 + dev : boolean ,
4962 + minify : boolean ,
5063 + platform : string ,
51- + transform : TransformOptions ,
64+ + transform : TransformOptionsStrict ,
5265| } ;
5366
5467export type Data = {
@@ -63,7 +76,7 @@ type Callback = (
6376) => mixed ;
6477
6578function transformCode (
66- transformer : Transformer ,
79+ transformer : Transformer < * > ,
6780 filename : string ,
6881 sourceCode : string ,
6982 options : Options ,
@@ -144,8 +157,9 @@ exports.transformAndExtractDependencies = (
144157 options : Options ,
145158 callback : Callback ,
146159) => {
160+ babelRegisterOnly ( [ transform ] ) ;
147161 /* $FlowFixMe: impossible to type a dynamic require */
148- const transformModule = require ( transform ) ;
162+ const transformModule : Transformer < * > = require ( transform ) ;
149163 transformCode ( transformModule , filename , sourceCode , options , callback ) ;
150164} ;
151165
0 commit comments