0
0
mirror of https://github.com/Doodle3D/Doodle3D-API synced 2024-06-02 21:54:33 +02:00
Doodle3D-API/jspm_packages/npm/babel-core@5.6.20/lib/babel/transformation/pipeline.js
2015-07-15 15:06:18 +02:00

229 lines
5.7 KiB
JavaScript

/* */
"format cjs";
"use strict";
var _toolsProtectJs2 = require("./../tools/protect.js");
var _toolsProtectJs3 = _interopRequireDefault(_toolsProtectJs2);
exports.__esModule = true;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _filePluginManager = require("./file/plugin-manager");
var _filePluginManager2 = _interopRequireDefault(_filePluginManager);
var _helpersNormalizeAst = require("../helpers/normalize-ast");
var _helpersNormalizeAst2 = _interopRequireDefault(_helpersNormalizeAst);
var _plugin = require("./plugin");
var _plugin2 = _interopRequireDefault(_plugin);
var _lodashObjectAssign = require("lodash/object/assign");
var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign);
var _helpersObject = require("../helpers/object");
var _helpersObject2 = _interopRequireDefault(_helpersObject);
var _file = require("./file");
var _file2 = _interopRequireDefault(_file);
_toolsProtectJs3["default"](module);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* [Please add a description.]
*/
var Pipeline = (function () {
function Pipeline() {
_classCallCheck(this, Pipeline);
this.transformers = _helpersObject2["default"]();
this.namespaces = _helpersObject2["default"]();
this.deprecated = _helpersObject2["default"]();
this.aliases = _helpersObject2["default"]();
this.filters = [];
}
/**
* [Please add a description.]
*/
Pipeline.prototype.addTransformers = function addTransformers(transformers) {
for (var key in transformers) {
this.addTransformer(key, transformers[key]);
}
return this;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.addTransformer = function addTransformer(key, plugin) {
if (this.transformers[key]) throw new Error(); // todo: error
var namespace = key.split(".")[0];
this.namespaces[namespace] = this.namespaces[namespace] || [];
this.namespaces[namespace].push(key);
this.namespaces[key] = namespace;
if (typeof plugin === "function") {
plugin = _filePluginManager2["default"].memoisePluginContainer(plugin);
plugin.key = key;
plugin.metadata.optional = true;
if (key === "react.displayName") {
plugin.metadata.optional = false;
}
} else {
plugin = new _plugin2["default"](key, plugin);
}
this.transformers[key] = plugin;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.addAliases = function addAliases(names) {
_lodashObjectAssign2["default"](this.aliases, names);
return this;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.addDeprecated = function addDeprecated(names) {
_lodashObjectAssign2["default"](this.deprecated, names);
return this;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.addFilter = function addFilter(filter) {
this.filters.push(filter);
return this;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.canTransform = function canTransform(plugin, fileOpts) {
if (plugin.metadata.plugin) {
return true;
}
var _arr = this.filters;
for (var _i = 0; _i < _arr.length; _i++) {
var filter = _arr[_i];
var result = filter(plugin, fileOpts);
if (result != null) return result;
}
return true;
};
/**
* [Please add a description.]
*/
Pipeline.prototype.analyze = function analyze(code) {
var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
opts.code = false;
return this.transform(code, opts);
};
/**
* [Please add a description.]
*/
Pipeline.prototype.pretransform = function pretransform(code, opts) {
var file = new _file2["default"](opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.parseCode(code);
return file;
});
};
/**
* [Please add a description.]
*/
Pipeline.prototype.transform = function transform(code, opts) {
var file = new _file2["default"](opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.parseCode(code);
return file.transform();
});
};
/**
* [Please add a description.]
*/
Pipeline.prototype.transformFromAst = function transformFromAst(ast, code, opts) {
ast = _helpersNormalizeAst2["default"](ast);
var file = new _file2["default"](opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.addAst(ast);
return file.transform();
});
};
/**
* [Please add a description.]
*/
Pipeline.prototype._ensureTransformerNames = function _ensureTransformerNames(type, rawKeys) {
var keys = [];
for (var i = 0; i < rawKeys.length; i++) {
var key = rawKeys[i];
var deprecatedKey = this.deprecated[key];
var aliasKey = this.aliases[key];
if (aliasKey) {
keys.push(aliasKey);
} else if (deprecatedKey) {
// deprecated key, remap it to the new one
console.error("[BABEL] The transformer " + key + " has been renamed to " + deprecatedKey);
rawKeys.push(deprecatedKey);
} else if (this.transformers[key]) {
// valid key
keys.push(key);
} else if (this.namespaces[key]) {
// namespace, append all transformers within this namespace
keys = keys.concat(this.namespaces[key]);
} else {
// invalid key
throw new ReferenceError("Unknown transformer " + key + " specified in " + type);
}
}
return keys;
};
return Pipeline;
})();
exports["default"] = Pipeline;
module.exports = exports["default"];