UNPKG

9.24 kBJavaScriptView Raw
1'use strict';
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports.tasks = exports.task = exports.coffee2 = exports.babel = void 0;
8var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9var _coffeescript = _interopRequireDefault(require("coffeescript"));
10var _path2 = _interopRequireDefault(require("path"));
11var _rollupPluginutils = require("rollup-pluginutils");
12var _fs = _interopRequireDefault(require("fs"));
13var _babylon = require("babylon");
14var _traverse = _interopRequireDefault(require("@babel/traverse"));
15var _generator = _interopRequireDefault(require("@babel/generator"));
16var _types = require("@babel/types");
17var _cfx = _interopRequireDefault(require("cfx.babel"));
18var _del = _interopRequireDefault(require("del"));
19var _gulpRename = _interopRequireDefault(require("gulp-rename"));
20var _gulpBetterRollup = _interopRequireDefault(require("gulp-better-rollup"));
21var _rollupPluginCleanup = _interopRequireDefault(require("rollup-plugin-cleanup"));
22function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
23function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24function formatError(source, filename, err) {
25 var carets, col, first_column, first_line, l, last_column, last_line, lines;
26 var _err$location = err.location;
27 first_line = _err$location.first_line;
28 last_line = _err$location.last_line;
29 first_column = _err$location.first_column;
30 last_column = _err$location.last_column;
31 if (last_line == null) {
32 last_line = first_line;
33 }
34 lines = source.split('\n');
35 l = lines[first_line];
36 lines[first_line] = l.substring(0, first_column) + '\x1B[91m' + l.substring(first_column);
37 l = lines[last_line];
38 if (first_line === last_line) {
39 col = last_column + 6;
40 } else {
41 col = last_column;
42 }
43 lines[last_line] = l.substring(0, col) + '\x1B[39m' + l.substring(col);
44 lines = lines.slice(first_line, last_line + 1);
45 carets = Array(first_column + 1).join(' ') + "\x1B[91m".concat(Array(last_column + 2 - first_column).join('^'), "\x1B[39m");
46 lines.push(carets);
47 return "".concat(filename, ":").concat(first_line + 1, ":").concat(first_column + 1, ": ").concat(err.name, ": ").concat(err.message, "\n").concat(lines.join('\n'), "\n");
48}
49var ASTToCode, getAST, _rCFPath, ricffAST;
50_rCFPath = function rCFPath(filePath) {
51 var fileObj, getFileObj;
52 getFileObj = function getFileObj(file) {
53 return _objectSpread({
54 exists: _fs["default"].existsSync(file)
55 }, _path2["default"].parse(file));
56 };
57 fileObj = getFileObj(filePath);
58 if (!fileObj.exists) {
59 fileObj = {
60 coffee: function () {
61 var _path;
62 _path = _path2["default"].format({
63 root: _path2["default"].join(fileObj.root, fileObj.dir + '/'),
64 name: fileObj.base,
65 ext: '.coffee'
66 });
67 return {
68 path: _path,
69 obj: getFileObj(_path)
70 };
71 }(),
72 js: function () {
73 var _path;
74 _path = _path2["default"].format({
75 root: _path2["default"].join(fileObj.root, fileObj.dir + '/'),
76 name: fileObj.base,
77 ext: '.js'
78 });
79 return {
80 path: _path,
81 obj: getFileObj(_path)
82 };
83 }()
84 };
85 if (fileObj.coffee.obj.exists) {
86 return _rCFPath(fileObj.coffee.path);
87 }
88 if (fileObj.js.obj.exists) {
89 return _rCFPath(fileObj.js.path);
90 }
91 return null;
92 } else {
93 if (fileObj.ext !== '') {
94 return filePath;
95 } else {
96 return _rCFPath(_path2["default"].join(filePath, 'index.coffee'));
97 }
98 }
99};
100ricffAST = function ricffAST(ast) {
101 var dirname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __dirname;
102 (0, _traverse["default"])(ast, {
103 ImportDeclaration: function ImportDeclaration(_ast) {
104 var currentNode, fileParseObj, filePath;
105 currentNode = _ast.node;
106 fileParseObj = _path2["default"].parse(currentNode.source.value);
107 if (fileParseObj.root === '' && fileParseObj.dir === '') {
108 return;
109 }
110 filePath = _rCFPath(_path2["default"].join(dirname, currentNode.source.value));
111 if (filePath != null) {
112 _ast.node.source = (0, _types.StringLiteral)(filePath);
113 }
114 }
115 });
116 return ast;
117};
118getAST = function getAST(source) {
119 return (0, _babylon.parse)(source, {
120 sourceType: 'module',
121 plugins: ['objectRestSpread', 'asyncGenerators']
122 });
123};
124ASTToCode = function ASTToCode(ast) {
125 var es = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
126 var opts = arguments.length > 2 ? arguments[2] : undefined;
127 if (es === false) {
128 return (0, _cfx["default"])(ast, opts);
129 } else {
130 return (0, _generator["default"])(ast).code;
131 }
132};
133var sourceMap;
134sourceMap = function sourceMap(out) {
135 if (out.v3SourceMap) {
136 return JSON.parse(out.v3SourceMap);
137 } else {
138 return null;
139 }
140};
141var coffee2 = function coffee2() {
142 var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
143 var filter;
144 if (opts.bare == null) {
145 opts.bare = true;
146 }
147 if (opts.sourceMap == null) {
148 opts.sourceMap = true;
149 }
150 filter = (0, _rollupPluginutils.createFilter)(opts.include, opts.exclude);
151 return {
152 name: 'coffee2',
153 transform: function transform(code, id) {
154 var _code, err, out;
155 if (!filter(id)) {
156 return {
157 code: code
158 };
159 }
160 if (_path2["default"].extname(id) !== '.coffee') {
161 return {
162 code: code
163 };
164 }
165 try {
166 out = _coffeescript["default"].compile(code, {
167 filename: id,
168 bare: opts.bare,
169 sourceMap: opts.sourceMap
170 });
171 } catch (error) {
172 err = error;
173 if (err.location != null) {
174 err.formattedMessage = formatError(code, id, err);
175 }
176 throw err;
177 }
178 _code = ASTToCode(ricffAST(getAST(out.js), _path2["default"].dirname(id)));
179 return {
180 code: _code,
181 map: sourceMap(out)
182 };
183 }
184 };
185};
186exports.coffee2 = coffee2;
187var babel = function babel() {
188 var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
189 var filter;
190 filter = (0, _rollupPluginutils.createFilter)(opts.include, opts.exclude);
191 return {
192 name: 'babel',
193 transform: function transform(code, id) {
194 var _code;
195 if (!filter(id)) {
196 return {
197 code: code
198 };
199 }
200 if (_path2["default"].extname(id) !== '.js') {
201 return {
202 code: code
203 };
204 }
205 _code = ASTToCode(getAST(code), false, opts.opts);
206 return _code;
207 }
208 };
209};
210exports.babel = babel;
211var tasks;
212exports.tasks = tasks;
213exports.tasks = tasks = {
214 clean: function clean(_dirs) {
215 return function (cb) {
216 var dirs;
217 dirs = Array.isArray(_dirs) ? _dirs : [_dirs];
218 return (0, _del["default"])(dirs, cb);
219 };
220 },
221 buildEs: function buildEs(gulp, _ref) {
222 var index = _ref.index,
223 dest = _ref.dest;
224 return function () {
225 return gulp.src(index).pipe((0, _gulpBetterRollup["default"])({
226 plugins: [coffee2({
227 bare: true,
228 sourceMap: true
229 }), (0, _rollupPluginCleanup["default"])()]
230 }, 'es')).pipe((0, _gulpRename["default"])('index.js')).pipe(gulp.dest(dest));
231 };
232 },
233 buildCjs: function buildCjs(gulp, _ref2) {
234 var index = _ref2.index,
235 dest = _ref2.dest;
236 return function () {
237 return gulp.src(index).pipe((0, _gulpBetterRollup["default"])({
238 plugins: [babel(), (0, _rollupPluginCleanup["default"])()]
239 }, 'cjs')).pipe((0, _gulpRename["default"])('index.js')).pipe(gulp.dest(dest));
240 };
241 },
242 build: function build(series) {
243 return series('buildEs', 'buildCjs');
244 },
245 rebuild: function rebuild(series) {
246 return series('clean', 'build');
247 }
248};
249var gulp = function gulp(_ref3) {
250 var gulp = _ref3.gulp,
251 series = _ref3.series,
252 join = _ref3.join;
253 gulp.task('clean', tasks.clean(join('../dist')));
254 gulp.task('buildEs', tasks.buildEs(gulp, {
255 index: join('../src/index.coffee'),
256 dest: join('../dist/es')
257 }));
258 gulp.task('buildCjs', tasks.buildCjs(gulp, {
259 index: join('../dist/es/index.js'),
260 dest: join('../dist')
261 }));
262 gulp.task('build', tasks.build(series));
263 return gulp.task('rebuild', tasks.rebuild(series));
264};
265exports.task = gulp;