1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = _default;
|
7 |
|
8 | function _convertSourceMap() {
|
9 | const data = _interopRequireDefault(require("convert-source-map"));
|
10 |
|
11 | _convertSourceMap = function () {
|
12 | return data;
|
13 | };
|
14 |
|
15 | return data;
|
16 | }
|
17 |
|
18 | function _defaults() {
|
19 | const data = _interopRequireDefault(require("lodash/defaults"));
|
20 |
|
21 | _defaults = function () {
|
22 | return data;
|
23 | };
|
24 |
|
25 | return data;
|
26 | }
|
27 |
|
28 | function _sourceMap() {
|
29 | const data = _interopRequireDefault(require("source-map"));
|
30 |
|
31 | _sourceMap = function () {
|
32 | return data;
|
33 | };
|
34 |
|
35 | return data;
|
36 | }
|
37 |
|
38 | function _slash() {
|
39 | const data = _interopRequireDefault(require("slash"));
|
40 |
|
41 | _slash = function () {
|
42 | return data;
|
43 | };
|
44 |
|
45 | return data;
|
46 | }
|
47 |
|
48 | function _makeDir() {
|
49 | const data = require("make-dir");
|
50 |
|
51 | _makeDir = function () {
|
52 | return data;
|
53 | };
|
54 |
|
55 | return data;
|
56 | }
|
57 |
|
58 | function _path() {
|
59 | const data = _interopRequireDefault(require("path"));
|
60 |
|
61 | _path = function () {
|
62 | return data;
|
63 | };
|
64 |
|
65 | return data;
|
66 | }
|
67 |
|
68 | function _fs() {
|
69 | const data = _interopRequireDefault(require("fs"));
|
70 |
|
71 | _fs = function () {
|
72 | return data;
|
73 | };
|
74 |
|
75 | return data;
|
76 | }
|
77 |
|
78 | var util = _interopRequireWildcard(require("./util"));
|
79 |
|
80 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
81 |
|
82 | function _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 |
|
84 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
85 |
|
86 | function 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 |
|
88 | function _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 |
|
90 | function _default(_x) {
|
91 | return _ref.apply(this, arguments);
|
92 | }
|
93 |
|
94 | function _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 |