1 | 'use strict';
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | Object.defineProperty(exports, "__esModule", {
|
5 | value: true
|
6 | });
|
7 | exports.tasks = exports.task = exports.coffee2 = exports.babel = void 0;
|
8 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
9 | var _coffeescript = _interopRequireDefault(require("coffeescript"));
|
10 | var _path2 = _interopRequireDefault(require("path"));
|
11 | var _rollupPluginutils = require("rollup-pluginutils");
|
12 | var _fs = _interopRequireDefault(require("fs"));
|
13 | var _babylon = require("babylon");
|
14 | var _traverse = _interopRequireDefault(require("@babel/traverse"));
|
15 | var _generator = _interopRequireDefault(require("@babel/generator"));
|
16 | var _types = require("@babel/types");
|
17 | var _cfx = _interopRequireDefault(require("cfx.babel"));
|
18 | var _del = _interopRequireDefault(require("del"));
|
19 | var _gulpRename = _interopRequireDefault(require("gulp-rename"));
|
20 | var _gulpBetterRollup = _interopRequireDefault(require("gulp-better-rollup"));
|
21 | var _rollupPluginCleanup = _interopRequireDefault(require("rollup-plugin-cleanup"));
|
22 | function 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; }
|
23 | function _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; }
|
24 | function 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 | }
|
49 | var 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 | };
|
100 | ricffAST = 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 | };
|
118 | getAST = function getAST(source) {
|
119 | return (0, _babylon.parse)(source, {
|
120 | sourceType: 'module',
|
121 | plugins: ['objectRestSpread', 'asyncGenerators']
|
122 | });
|
123 | };
|
124 | ASTToCode = 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 | };
|
133 | var sourceMap;
|
134 | sourceMap = function sourceMap(out) {
|
135 | if (out.v3SourceMap) {
|
136 | return JSON.parse(out.v3SourceMap);
|
137 | } else {
|
138 | return null;
|
139 | }
|
140 | };
|
141 | var 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 | };
|
186 | exports.coffee2 = coffee2;
|
187 | var 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 | };
|
210 | exports.babel = babel;
|
211 | var tasks;
|
212 | exports.tasks = tasks;
|
213 | exports.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 | };
|
249 | var 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 | };
|
265 | exports.task = gulp;
|