UNPKG

2.14 kBtext/coffeescriptView Raw
1# import dd from 'ddeyes'
2import {
3 transformSync
4 transformFromAst
5} from '@babel/core'
6
7export default (codeOrAst) ->
8
9 transform =
10 if typeof codeOrAst is 'string'
11 then transformSync
12 else (ast, options) ->
13 transformFromAst ast, ''
14 , options
15
16 prefixEsNumber = (_Number) ->
17 if typeof _Number is 'number'
18 then "es#{_Number}"
19 else _Number
20 # targets:
21 # node: true
22
23 options = {
24 (
25 if ops?.presets?
26 then (
27 if Array.isArray ops.presets
28 then (
29 presets:
30 ops.presets.reduce (r, c) ->
31 [
32 r...
33 [
34 "@babel/preset-#{prefixEsNumber c}"
35 ]
36 ]
37 , []
38 )
39 else (
40 presets: (Object.keys ops.presets).reduce (r, k) ->
41 [
42 r...
43 [
44 "@babel/preset-#{prefixEsNumber k}"
45 (
46 if typeof ops.presets["#{k}"] is 'object'
47 then [ ops.presets["#{k}"] ]
48 else []
49 )...
50 ]
51 ]
52 , []
53 )
54 )
55 else {}
56 )...
57 ( do ->
58 conf = plugins: []
59 flag = false
60
61 # runtime
62 if ops?.runtime?
63 flag = true
64 conf.plugins.push [
65 '@babel/plugin-transform-runtime'
66 moduleName: '@babel/runtime'
67 ]
68
69 # regenerator
70 if ops?.regenerator?
71 flag = true
72 conf.plugins.push [
73 '@babel/plugin-transform-regenerator'
74 ]
75
76 # spread
77 if ops?.spread?
78 flag = true
79 conf.plugins.push [
80 '@babel/plugin-transform-spread'
81 ]
82
83 # commonjs
84 if ops?.commonjs?
85 flag = true
86 conf.plugins.push [
87 '@babel/plugin-transform-modules-commonjs'
88 (
89 if typeof ops.commonjs is 'object'
90 then [ ops.commonjs ]
91 else []
92 )...
93 ]
94
95 if flag is false
96 return {}
97 else
98 return conf
99 )...
100 }
101
102 es5 = transform codeOrAst
103 , options
104
105 es5.code