UNPKG

9.32 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = _default;
7
8function _convertSourceMap() {
9 const data = _interopRequireDefault(require("convert-source-map"));
10
11 _convertSourceMap = function () {
12 return data;
13 };
14
15 return data;
16}
17
18function _defaults() {
19 const data = _interopRequireDefault(require("lodash/defaults"));
20
21 _defaults = function () {
22 return data;
23 };
24
25 return data;
26}
27
28function _sourceMap() {
29 const data = _interopRequireDefault(require("source-map"));
30
31 _sourceMap = function () {
32 return data;
33 };
34
35 return data;
36}
37
38function _slash() {
39 const data = _interopRequireDefault(require("slash"));
40
41 _slash = function () {
42 return data;
43 };
44
45 return data;
46}
47
48function _makeDir() {
49 const data = require("make-dir");
50
51 _makeDir = function () {
52 return data;
53 };
54
55 return data;
56}
57
58function _path() {
59 const data = _interopRequireDefault(require("path"));
60
61 _path = function () {
62 return data;
63 };
64
65 return data;
66}
67
68function _fs() {
69 const data = _interopRequireDefault(require("fs"));
70
71 _fs = function () {
72 return data;
73 };
74
75 return data;
76}
77
78var util = _interopRequireWildcard(require("./util"));
79
80function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
81
82function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
83
84function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
85
86function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
87
88function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
89
90function _default(_x) {
91 return _ref.apply(this, arguments);
92}
93
94function _ref() {
95 _ref = _asyncToGenerator(function* ({
96 cliOptions,
97 babelOptions
98 }) {
99 function buildResult(fileResults) {
100 const map = new (_sourceMap().default.SourceMapGenerator)({
101 file: cliOptions.sourceMapTarget || _path().default.basename(cliOptions.outFile || "") || "stdout",
102 sourceRoot: babelOptions.sourceRoot
103 });
104 let code = "";
105 let offset = 0;
106
107 for (const result of fileResults) {
108 if (!result) continue;
109 code += result.code + "\n";
110
111 if (result.map) {
112 const consumer = new (_sourceMap().default.SourceMapConsumer)(result.map);
113 const sources = new Set();
114 consumer.eachMapping(function (mapping) {
115 if (mapping.source != null) sources.add(mapping.source);
116 map.addMapping({
117 generated: {
118 line: mapping.generatedLine + offset,
119 column: mapping.generatedColumn
120 },
121 source: mapping.source,
122 original: mapping.source == null ? null : {
123 line: mapping.originalLine,
124 column: mapping.originalColumn
125 }
126 });
127 });
128 sources.forEach(source => {
129 const content = consumer.sourceContentFor(source, true);
130
131 if (content !== null) {
132 map.setSourceContent(source, content);
133 }
134 });
135 offset = code.split("\n").length - 1;
136 }
137 }
138
139 if (babelOptions.sourceMaps === "inline" || !cliOptions.outFile && babelOptions.sourceMaps) {
140 code += "\n" + _convertSourceMap().default.fromObject(map).toComment();
141 }
142
143 return {
144 map: map,
145 code: code
146 };
147 }
148
149 function output(fileResults) {
150 const result = buildResult(fileResults);
151
152 if (cliOptions.outFile) {
153 (0, _makeDir().sync)(_path().default.dirname(cliOptions.outFile));
154
155 if (babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") {
156 const mapLoc = cliOptions.outFile + ".map";
157 result.code = util.addSourceMappingUrl(result.code, mapLoc);
158
159 _fs().default.writeFileSync(mapLoc, JSON.stringify(result.map));
160 }
161
162 _fs().default.writeFileSync(cliOptions.outFile, result.code);
163 } else {
164 process.stdout.write(result.code + "\n");
165 }
166 }
167
168 function readStdin() {
169 return new Promise((resolve, reject) => {
170 let code = "";
171 process.stdin.setEncoding("utf8");
172 process.stdin.on("readable", function () {
173 const chunk = process.stdin.read();
174 if (chunk !== null) code += chunk;
175 });
176 process.stdin.on("end", function () {
177 resolve(code);
178 });
179 process.stdin.on("error", reject);
180 });
181 }
182
183 function stdin() {
184 return _stdin.apply(this, arguments);
185 }
186
187 function _stdin() {
188 _stdin = _asyncToGenerator(function* () {
189 const code = yield readStdin();
190 const res = yield util.transform(cliOptions.filename, code, (0, _defaults().default)({
191 sourceFileName: "stdin"
192 }, babelOptions));
193 output([res]);
194 });
195 return _stdin.apply(this, arguments);
196 }
197
198 function walk(_x2) {
199 return _walk.apply(this, arguments);
200 }
201
202 function _walk() {
203 _walk = _asyncToGenerator(function* (filenames) {
204 const _filenames = [];
205 filenames.forEach(function (filename) {
206 if (!_fs().default.existsSync(filename)) return;
207
208 const stat = _fs().default.statSync(filename);
209
210 if (stat.isDirectory()) {
211 const dirname = filename;
212 util.readdirForCompilable(filename, cliOptions.includeDotfiles, cliOptions.extensions).forEach(function (filename) {
213 _filenames.push(_path().default.join(dirname, filename));
214 });
215 } else {
216 _filenames.push(filename);
217 }
218 });
219 const results = yield Promise.all(_filenames.map(function () {
220 var _ref2 = _asyncToGenerator(function* (filename) {
221 let sourceFilename = filename;
222
223 if (cliOptions.outFile) {
224 sourceFilename = _path().default.relative(_path().default.dirname(cliOptions.outFile), sourceFilename);
225 }
226
227 sourceFilename = (0, _slash().default)(sourceFilename);
228
229 try {
230 return yield util.compile(filename, (0, _defaults().default)({
231 sourceFileName: sourceFilename,
232 sourceMaps: babelOptions.sourceMaps === "inline" ? true : babelOptions.sourceMaps
233 }, babelOptions));
234 } catch (err) {
235 if (!cliOptions.watch) {
236 throw err;
237 }
238
239 console.error(err);
240 return null;
241 }
242 });
243
244 return function (_x4) {
245 return _ref2.apply(this, arguments);
246 };
247 }()));
248 output(results);
249 });
250 return _walk.apply(this, arguments);
251 }
252
253 function files(_x3) {
254 return _files.apply(this, arguments);
255 }
256
257 function _files() {
258 _files = _asyncToGenerator(function* (filenames) {
259 if (!cliOptions.skipInitialBuild) {
260 yield walk(filenames);
261 }
262
263 if (cliOptions.watch) {
264 const chokidar = util.requireChokidar();
265 chokidar.watch(filenames, {
266 disableGlobbing: true,
267 persistent: true,
268 ignoreInitial: true,
269 awaitWriteFinish: {
270 stabilityThreshold: 50,
271 pollInterval: 10
272 }
273 }).on("all", function (type, filename) {
274 if (!util.isCompilableExtension(filename, cliOptions.extensions) && !filenames.includes(filename)) {
275 return;
276 }
277
278 if (type === "add" || type === "change") {
279 if (cliOptions.verbose) {
280 console.log(type + " " + filename);
281 }
282
283 walk(filenames).catch(err => {
284 console.error(err);
285 });
286 }
287 });
288 }
289 });
290 return _files.apply(this, arguments);
291 }
292
293 if (cliOptions.filenames.length) {
294 yield files(cliOptions.filenames);
295 } else {
296 yield stdin();
297 }
298 });
299 return _ref.apply(this, arguments);
300}
\No newline at end of file