UNPKG

motion

Version:

motion - moving development forward

154 lines (112 loc) 3.78 kB
exports.__esModule = true; exports.file = file; exports.app = app; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _gulpUtil = require('gulp-util'); var _gulpUtil2 = _interopRequireDefault(_gulpUtil); var _through2 = require('through2'); var _through22 = _interopRequireDefault(_through2); var _vinylSourcemapsApply = require('vinyl-sourcemaps-apply'); var _vinylSourcemapsApply2 = _interopRequireDefault(_vinylSourcemapsApply); var _replaceExt = require('replace-ext'); var _replaceExt2 = _interopRequireDefault(_replaceExt); var _libRequires = require('../lib/requires'); var _libOnMeta = require('./lib/onMeta'); var _libOnMeta2 = _interopRequireDefault(_libOnMeta); var _libConfig = require('./lib/config'); var _libConfig2 = _interopRequireDefault(_libConfig); var _libWriteStyle = require('../lib/writeStyle'); var _libWriteStyle2 = _interopRequireDefault(_libWriteStyle); var _libFns = require('../lib/fns'); var _libGetMatches = require('../lib/getMatches'); var _libGetMatches2 = _interopRequireDefault(_libGetMatches); function file(opts) { return babelStream({ transformer: motionFile, opts: opts }); } function app(opts) { return babelStream({ transformer: motionApp, opts: opts }); } exports['default'] = { file: file, app: app }; function babelOpts(file, opts) { return Object.assign({}, opts, { filename: file.path, filenameRelative: file.relative, sourceMap: Boolean(file.sourceMap) }); } function motionApp(file) { var res = _libRequires.babel().transform(file.contents.toString(), babelOpts(file, _libConfig2['default'].app())); return { res: res, file: file }; } var babelCoreRequire = /require\(\'(babel\-runtime\/core\-js\/[a-zA-Z0-9]+\/?[a-zA-Z0-9]*\/?[a-zA-Z0-9]*)\'\)/g; var getBabelCoreRequires = function getBabelCoreRequires(src) { return _libGetMatches2['default'](src, babelCoreRequire, 1); }; function motionFile(file) { var track = { imports: [], isExported: false }; var onImports = function onImports(imports) { return track.imports.push(imports); }; var onExports = function onExports(val) { return track.isExported = val; }; var res = _libRequires.babel().transform(file.contents.toString(), babelOpts(file, _libConfig2['default'].file({ log: _libFns.log, onMeta: _libOnMeta2['default'], writeStyle: _libWriteStyle2['default'], onImports: onImports, onExports: onExports }))); var _res$metadata = res.metadata; var usedHelpers = _res$metadata.usedHelpers; var imports = _res$metadata.modules.imports; var importedHelpers = usedHelpers && usedHelpers.map(function (name) { return 'babel-runtime/helpers/' + name; }) || []; var importNames = imports.map(function (i) { return i.source; }); var meta = { imports: [].concat(importNames, track.imports || [], importedHelpers || [], getBabelCoreRequires(res.code)), isExported: track.isExported }; _libFns.log.gulp('meta', meta); return { res: res, meta: meta }; } function babelStream(_ref) { var transformer = _ref.transformer; return _through22['default'].obj(function (file, enc, cb) { if (file.isNull()) { cb(null, file); return; } try { var _transformer = transformer(file); var meta = _transformer.meta; var res = _transformer.res; file.babel = meta; if (file.sourceMap && res.map) { res.map.file = _replaceExt2['default'](res.map.file, '.js'); _vinylSourcemapsApply2['default'](file, res.map); } file.contents = new Buffer(res.code); file.path = _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(); }); }