UNPKG

4.46 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.register = register;
5exports.polyfill = polyfill;
6exports.transformFile = transformFile;
7exports.transformFileSync = transformFileSync;
8exports.parse = parse;
9// istanbul ignore next
10
11function _interopRequire(obj) { return obj && obj.__esModule ? obj["default"] : obj; }
12
13// istanbul ignore next
14
15function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
16
17// istanbul ignore next
18
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20
21var _lodashLangIsFunction = require("lodash/lang/isFunction");
22
23var _lodashLangIsFunction2 = _interopRequireDefault(_lodashLangIsFunction);
24
25var _transformation = require("../transformation");
26
27var _transformation2 = _interopRequireDefault(_transformation);
28
29var _flintBabylon = require("flint-babylon");
30
31var babylon = _interopRequireWildcard(_flintBabylon);
32
33var _util = require("../util");
34
35var util = _interopRequireWildcard(_util);
36
37var _fs = require("fs");
38
39var _fs2 = _interopRequireDefault(_fs);
40
41var _types = require("../types");
42
43var t = _interopRequireWildcard(_types);
44
45exports.util = util;
46exports.acorn = babylon;
47exports.transform = _transformation2["default"];
48exports.pipeline = _transformation.pipeline;
49exports.canCompile = _util.canCompile;
50
51var _transformationFile = require("../transformation/file");
52
53exports.File = _interopRequire(_transformationFile);
54
55var _transformationFileOptionsConfig = require("../transformation/file/options/config");
56
57exports.options = _interopRequire(_transformationFileOptionsConfig);
58
59var _transformationPlugin = require("../transformation/plugin");
60
61exports.Plugin = _interopRequire(_transformationPlugin);
62
63var _transformationTransformer = require("../transformation/transformer");
64
65exports.Transformer = _interopRequire(_transformationTransformer);
66
67var _transformationPipeline = require("../transformation/pipeline");
68
69exports.Pipeline = _interopRequire(_transformationPipeline);
70
71var _traversal = require("../traversal");
72
73exports.traverse = _interopRequire(_traversal);
74
75var _toolsBuildExternalHelpers = require("../tools/build-external-helpers");
76
77exports.buildExternalHelpers = _interopRequire(_toolsBuildExternalHelpers);
78
79var _package = require("../../package");
80
81exports.version = _package.version;
82exports.types = t;
83
84/**
85 * Register Babel and polyfill globally.
86 */
87
88function register(opts) {
89 var callback = require("./register/node-polyfill");
90 if (opts != null) callback(opts);
91 return callback;
92}
93
94/**
95 * Register polyfill globally.
96 */
97
98function polyfill() {
99 require("../polyfill");
100}
101
102/**
103 * Asynchronously transform `filename` with optional `opts`, calls `callback` when complete.
104 */
105
106function transformFile(filename, opts, callback) {
107 if (_lodashLangIsFunction2["default"](opts)) {
108 callback = opts;
109 opts = {};
110 }
111
112 opts.filename = filename;
113
114 _fs2["default"].readFile(filename, function (err, code) {
115 if (err) return callback(err);
116
117 var result;
118
119 try {
120 result = _transformation2["default"](code, opts);
121 } catch (err) {
122 return callback(err);
123 }
124
125 callback(null, result);
126 });
127}
128
129/**
130 * Synchronous form of `transformFile`.
131 */
132
133function transformFileSync(filename) {
134 var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
135
136 opts.filename = filename;
137 return _transformation2["default"](_fs2["default"].readFileSync(filename, "utf8"), opts);
138}
139
140/**
141 * Parse script with Babel's parser.
142 */
143
144function parse(code) {
145 var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
146
147 opts.allowHashBang = true;
148 opts.sourceType = "module";
149 opts.ecmaVersion = Infinity;
150 opts.plugins = {
151 jsx: true,
152 flow: true
153 };
154 opts.features = {};
155
156 for (var key in _transformation2["default"].pipeline.transformers) {
157 opts.features[key] = true;
158 }
159
160 var ast = babylon.parse(code, opts);
161
162 if (opts.onToken) {
163 // istanbul ignore next
164
165 var _opts$onToken;
166
167 (_opts$onToken = opts.onToken).push.apply(_opts$onToken, ast.tokens);
168 }
169
170 if (opts.onComment) {
171 // istanbul ignore next
172
173 var _opts$onComment;
174
175 (_opts$onComment = opts.onComment).push.apply(_opts$onComment, ast.comments);
176 }
177
178 return ast.program;
179}
\No newline at end of file