react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / node_modules / commoner / node_modules / recast / lib / util.js
81169 viewsvar assert = require("assert");1var getFieldValue = require("./types").getFieldValue;2var sourceMap = require("source-map");3var SourceMapConsumer = sourceMap.SourceMapConsumer;4var SourceMapGenerator = sourceMap.SourceMapGenerator;5var hasOwn = Object.prototype.hasOwnProperty;67function getUnionOfKeys() {8var result = {};9var argc = arguments.length;10for (var i = 0; i < argc; ++i) {11var keys = Object.keys(arguments[i]);12var keyCount = keys.length;13for (var j = 0; j < keyCount; ++j) {14result[keys[j]] = true;15}16}17return result;18}19exports.getUnionOfKeys = getUnionOfKeys;2021function comparePos(pos1, pos2) {22return (pos1.line - pos2.line) || (pos1.column - pos2.column);23}24exports.comparePos = comparePos;2526exports.composeSourceMaps = function(formerMap, latterMap) {27if (formerMap) {28if (!latterMap) {29return formerMap;30}31} else {32return latterMap || null;33}3435var smcFormer = new SourceMapConsumer(formerMap);36var smcLatter = new SourceMapConsumer(latterMap);37var smg = new SourceMapGenerator({38file: latterMap.file,39sourceRoot: latterMap.sourceRoot40});4142var sourcesToContents = {};4344smcLatter.eachMapping(function(mapping) {45var origPos = smcFormer.originalPositionFor({46line: mapping.originalLine,47column: mapping.originalColumn48});4950var sourceName = origPos.source;51if (sourceName === null) {52return;53}5455smg.addMapping({56source: sourceName,57original: {58line: origPos.line,59column: origPos.column60},61generated: {62line: mapping.generatedLine,63column: mapping.generatedColumn64},65name: mapping.name66});6768var sourceContent = smcFormer.sourceContentFor(sourceName);69if (sourceContent && !hasOwn.call(sourcesToContents, sourceName)) {70sourcesToContents[sourceName] = sourceContent;71smg.setSourceContent(sourceName, sourceContent);72}73});7475return smg.toJSON();76};777879