@@ -8,6 +8,7 @@ var es6RestParameters = require('jstransform/visitors/es6-rest-param-visitors');
8
8
var es6Templates = require ( 'jstransform/visitors/es6-template-visitors' ) ;
9
9
var react = require ( './transforms/react' ) ;
10
10
var reactDisplayName = require ( './transforms/reactDisplayName' ) ;
11
+ var typesSyntax = require ( 'jstransform/visitors/type-syntax' ) ;
11
12
12
13
/**
13
14
* Map from transformName => orderedListOfVisitors.
@@ -20,13 +21,33 @@ var transformVisitors = {
20
21
'es6-object-short-notation' : es6ObjectShortNotation . visitorList ,
21
22
'es6-rest-params' : es6RestParameters . visitorList ,
22
23
'es6-templates' : es6Templates . visitorList ,
23
- 'react' : react . visitorList . concat ( reactDisplayName . visitorList )
24
+ 'react' : react . visitorList . concat ( reactDisplayName . visitorList ) ,
25
+ 'types' : typesSyntax . visitorList
26
+ } ;
27
+
28
+ var transformSets = {
29
+ 'harmony' : [
30
+ 'es6-arrow-functions' ,
31
+ 'es6-object-concise-method' ,
32
+ 'es6-object-short-notation' ,
33
+ 'es6-classes' ,
34
+ 'es6-rest-params' ,
35
+ 'es6-templates' ,
36
+ 'es6-destructuring'
37
+ ] ,
38
+ 'react' : [
39
+ 'react'
40
+ ] ,
41
+ 'type-annotations' : [
42
+ 'types'
43
+ ]
24
44
} ;
25
45
26
46
/**
27
47
* Specifies the order in which each transform should run.
28
48
*/
29
49
var transformRunOrder = [
50
+ 'types' ,
30
51
'es6-arrow-functions' ,
31
52
'es6-object-concise-method' ,
32
53
'es6-object-short-notation' ,
@@ -54,5 +75,34 @@ function getAllVisitors(excludes) {
54
75
return ret ;
55
76
}
56
77
78
+ /**
79
+ * Given a list of visitor set names, return the ordered list of visitors to be
80
+ * passed to jstransform.
81
+ *
82
+ * @param {array }
83
+ * @return {array }
84
+ */
85
+ function getVisitorsBySet ( sets ) {
86
+ var visitorsToInclude = sets . reduce ( function ( visitors , set ) {
87
+ if ( ! transformSets . hasOwnProperty ( set ) ) {
88
+ throw new Error ( 'Unknown visitor set: ' + set ) ;
89
+ }
90
+ transformSets [ set ] . forEach ( function ( visitor ) {
91
+ visitors [ visitor ] = true ;
92
+ } ) ;
93
+ return visitors ;
94
+ } , { } ) ;
95
+
96
+ var visitorList = [ ] ;
97
+ for ( var i = 0 ; i < transformRunOrder . length ; i ++ ) {
98
+ if ( visitorsToInclude . hasOwnProperty ( transformRunOrder [ i ] ) ) {
99
+ visitorList = visitorList . concat ( transformVisitors [ transformRunOrder [ i ] ] ) ;
100
+ }
101
+ }
102
+
103
+ return visitorList ;
104
+ }
105
+
106
+ exports . getVisitorsBySet = getVisitorsBySet ;
57
107
exports . getAllVisitors = getAllVisitors ;
58
108
exports . transformVisitors = transformVisitors ;
0 commit comments