UNPKG

motion

Version:

motion - moving development forward

152 lines (107 loc) 3.73 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.file = file; exports.app = app; exports.motionFile = motionFile; var _gulpUtil = require('gulp-util'); var _gulpUtil2 = _interopRequireDefault(_gulpUtil); var _through = require('through2'); var _through2 = _interopRequireDefault(_through); var _vinylSourcemapsApply = require('vinyl-sourcemaps-apply'); var _vinylSourcemapsApply2 = _interopRequireDefault(_vinylSourcemapsApply); var _replaceExt = require('replace-ext'); var _replaceExt2 = _interopRequireDefault(_replaceExt); var _flintBabelCore = require('flint-babel-core'); var _onMeta = require('./lib/onMeta'); var _onMeta2 = _interopRequireDefault(_onMeta); var _config = require('./lib/config'); var _config2 = _interopRequireDefault(_config); var _writeStyle = require('../lib/writeStyle'); var _writeStyle2 = _interopRequireDefault(_writeStyle); var _fns = require('../lib/fns'); var _getMatches = require('../lib/getMatches'); var _getMatches2 = _interopRequireDefault(_getMatches); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function file(opts) { return babelStream({ transformer: motionFile, opts }); } function app(opts) { return babelStream({ transformer: motionApp, opts }); } exports.default = { file, app }; function babelOpts(file, opts) { return Object.assign({}, opts, { filename: file.path, filenameRelative: file.relative, sourceMap: Boolean(file.sourceMap) }); } function motionApp(file) { let res = (0, _flintBabelCore.transform)(file.contents.toString(), babelOpts(file, _config2.default.app())); return { res, file }; } const babelRuntimeRegex = /require\(\'(babel-runtime[a-z-A-Z0-9\/]*)\'\)/g; const babelRuntimeRequire = src => (0, _getMatches2.default)(src, babelRuntimeRegex, 1); function motionFile(file) { let track = { imports: [], isExported: false }; const onImports = imports => track.imports.push(imports); const onExports = val => track.isExported = val; let res = (0, _flintBabelCore.transform)(file.contents.toString(), babelOpts(file, _config2.default.file({ log: _fns.log, onMeta: _onMeta2.default, writeStyle: _writeStyle2.default, onImports, onExports }))); var _res$metadata = res.metadata; const usedHelpers = _res$metadata.usedHelpers; const imports = _res$metadata.modules.imports; const importedHelpers = usedHelpers && usedHelpers.map(name => `babel-runtime/helpers/${ name }`) || []; const importNames = imports.map(i => i.source); let meta = { imports: _fns._.uniq([].concat(importNames, track.imports || [], importedHelpers || [], babelRuntimeRequire(res.code))), isExported: track.isExported }; _fns.log.gulp('meta', meta); return { res, meta }; } function babelStream(_ref) { let transformer = _ref.transformer; return _through2.default.obj(function (file, enc, cb) { if (file.isNull()) { cb(null, file); return; } try { var _transformer = transformer(file); const meta = _transformer.meta; const res = _transformer.res; file.babel = meta; if (file.sourceMap && res.map) { res.map.file = (0, _replaceExt2.default)(res.map.file, '.js'); (0, _vinylSourcemapsApply2.default)(file, res.map); } file.contents = new Buffer(res.code); file.path = (0, _replaceExt2.default)(file.path, '.js'); this.push(file); } catch (err) { this.emit('error', new _gulpUtil2.default.PluginError('gulp-babel', err, { fileName: file.path, showProperties: false })); } cb(); }); } //# sourceMappingURL=babel.js.map