grunt-systemjs-builder
Version:
grunt task for building projects based on systemjs
181 lines (120 loc) • 4.47 kB
JavaScript
/* */
"format cjs";
;
exports.__esModule = true;
exports.register = register;
exports.polyfill = polyfill;
exports.transformFile = transformFile;
exports.transformFileSync = transformFileSync;
exports.parse = parse;
// istanbul ignore next
function _interopRequire(obj) { return obj && obj.__esModule ? obj["default"] : obj; }
// istanbul ignore next
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _lodashLangIsFunction = require("lodash/lang/isFunction");
var _lodashLangIsFunction2 = _interopRequireDefault(_lodashLangIsFunction);
var _transformation = require("../transformation");
var _transformation2 = _interopRequireDefault(_transformation);
var _babylon = require("babylon");
var babylon = _interopRequireWildcard(_babylon);
var _util = require("../util");
var util = _interopRequireWildcard(_util);
var _fs = require("fs");
var _fs2 = _interopRequireDefault(_fs);
var _types = require("../types");
var t = _interopRequireWildcard(_types);
exports.util = util;
exports.acorn = babylon;
exports.transform = _transformation2["default"];
exports.pipeline = _transformation.pipeline;
exports.canCompile = _util.canCompile;
var _transformationFile = require("../transformation/file");
exports.File = _interopRequire(_transformationFile);
var _transformationFileOptionsConfig = require("../transformation/file/options/config");
exports.options = _interopRequire(_transformationFileOptionsConfig);
var _transformationPlugin = require("../transformation/plugin");
exports.Plugin = _interopRequire(_transformationPlugin);
var _transformationTransformer = require("../transformation/transformer");
exports.Transformer = _interopRequire(_transformationTransformer);
var _transformationPipeline = require("../transformation/pipeline");
exports.Pipeline = _interopRequire(_transformationPipeline);
var _traversal = require("../traversal");
exports.traverse = _interopRequire(_traversal);
var _toolsBuildExternalHelpers = require("../tools/build-external-helpers");
exports.buildExternalHelpers = _interopRequire(_toolsBuildExternalHelpers);
var _package = require("../../package");
exports.version = _package.version;
exports.types = t;
/**
* Register Babel and polyfill globally.
*/
function register(opts) {
var callback = require("./register/node-polyfill");
if (opts != null) callback(opts);
return callback;
}
/**
* Register polyfill globally.
*/
function polyfill() {
require("../polyfill");
}
/**
* Asynchronously transform `filename` with optional `opts`, calls `callback` when complete.
*/
function transformFile(filename, opts, callback) {
if (_lodashLangIsFunction2["default"](opts)) {
callback = opts;
opts = {};
}
opts.filename = filename;
_fs2["default"].readFile(filename, function (err, code) {
if (err) return callback(err);
var result;
try {
result = _transformation2["default"](code, opts);
} catch (err) {
return callback(err);
}
callback(null, result);
});
}
/**
* Synchronous form of `transformFile`.
*/
function transformFileSync(filename) {
var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
opts.filename = filename;
return _transformation2["default"](_fs2["default"].readFileSync(filename, "utf8"), opts);
}
/**
* Parse script with Babel's parser.
*/
function parse(code) {
var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
opts.allowHashBang = true;
opts.sourceType = "module";
opts.ecmaVersion = Infinity;
opts.plugins = {
jsx: true,
flow: true
};
opts.features = {};
for (var key in _transformation2["default"].pipeline.transformers) {
opts.features[key] = true;
}
var ast = babylon.parse(code, opts);
if (opts.onToken) {
// istanbul ignore next
var _opts$onToken;
(_opts$onToken = opts.onToken).push.apply(_opts$onToken, ast.tokens);
}
if (opts.onComment) {
// istanbul ignore next
var _opts$onComment;
(_opts$onComment = opts.onComment).push.apply(_opts$onComment, ast.comments);
}
return ast.program;
}