weex-loader
Version:
a webpack loader for weex
101 lines (83 loc) • 3.55 kB
JavaScript
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _loaderUtils = require('loader-utils');
var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
var _parser = require('./parser');
var _util = require('./util');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = function (source, inputSourceMap) {
var _this = this;
this.cacheable && this.cacheable();
var callback = this.async();
var loaderQuery = _loaderUtils2.default.getOptions(this);
var type = loaderQuery.type;
var index = loaderQuery.index;
if (index != null && index.match(/^\d+$/)) {
index = parseInt(index);
}
(0, _parser.extractBlocks)(source, type).then(function (result) {
if (index != null) {
result = result[index];
}
var content = result.content.trim();
var map = void 0;
if (_this.sourceMap && (type === 'scripts' || type === 'elements')) {
var contentLineStart = result.line;
// let contentLineCount = 0
var cmap = void 0;
if (inputSourceMap) {
cmap = (0, _util.consumeMap)(_this, source, inputSourceMap);
source = cmap.sourcesContent.join('');
// printSourceWithLine(source)
}
var iterator = (0, _util.splitSourceLine)(content).map(function (input, line) {
// contentLineCount++
line = line + 1;
var originalLine = line + contentLineStart;
var generatedLine = line;
if (cmap) {
// mapping to the original of input source
originalLine = cmap.mapping['line-' + originalLine + '-column-0'].line;
// console.log(originalLine + ':', input)
}
return {
original: {
line: originalLine,
column: 0
},
generated: {
line: generatedLine,
column: 0
}
};
});
// if (type === 'scripts') {
// let lineStart = contentLineStart
// if (cmap) {
// // mapping to the original of input source
// lineStart = cmap.mapping[`line-${lineStart}-column-0`].line
// }
// source = splitSourceLine(source)
// .map((input, line) => {
// line = line + 1
// // console.log(line + ':', input)
// if (line === lineStart
// || line === lineStart + contentLineCount + 1) {
// return input + ' /* generated by weex-loader */'
// } else {
// return input
// }
// }).join('\n')
// }
map = (0, _util.generateMap)(_this, source, iterator);
}
return [content, map];
}).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
content = _ref2[0],
map = _ref2[1];
callback(null, content, map && map.toJSON() || inputSourceMap);
}).catch(function (e) {
callback(e, '');
});
};
;