page-loader-ivan
Version:
Web page loader
63 lines (48 loc) • 4.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.localLinks = exports.links = undefined;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _cheerio = require('cheerio');
var _cheerio2 = _interopRequireDefault(_cheerio);
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('page-loader:parser');
var sourcesTag = [{
tag: 'script',
src: 'src'
}, {
tag: 'link',
src: 'href'
}, {
tag: 'img',
src: 'src'
}];
var links = exports.links = function links(html) {
var $ = _cheerio2.default.load(html);
var arr = [];
sourcesTag.forEach(function (srcTag) {
$(srcTag.tag).each(function (i, element) {
var src = $(element).attr(srcTag.src);
if (src) {
arr.push(src);
debug('found a link %s', src);
}
});
});
return arr;
};
var isLocalLink = function isLocalLink(link) {
return !_url2.default.parse(link).hostname && !!_path2.default.parse(link).ext;
};
var localLinks = exports.localLinks = function localLinks(html) {
var arr = links(html).filter(isLocalLink);
debug('found %d local links', arr.length);
return arr;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZXIuanMiXSwibmFtZXMiOlsiZGVidWciLCJzb3VyY2VzVGFnIiwidGFnIiwic3JjIiwibGlua3MiLCJodG1sIiwiJCIsImNoZWVyaW8iLCJsb2FkIiwiYXJyIiwiZm9yRWFjaCIsInNyY1RhZyIsImVhY2giLCJpIiwiZWxlbWVudCIsImF0dHIiLCJwdXNoIiwiaXNMb2NhbExpbmsiLCJ1cmwiLCJwYXJzZSIsImxpbmsiLCJob3N0bmFtZSIsInBhdGgiLCJleHQiLCJsb2NhbExpbmtzIiwiZmlsdGVyIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFFBQVEscUJBQVksb0JBQVosQ0FBZDs7QUFFQSxJQUFNQyxhQUFhLENBQ2pCO0FBQ0VDLE9BQUssUUFEUDtBQUVFQyxPQUFLO0FBRlAsQ0FEaUIsRUFLakI7QUFDRUQsT0FBSyxNQURQO0FBRUVDLE9BQUs7QUFGUCxDQUxpQixFQVNqQjtBQUNFRCxPQUFLLEtBRFA7QUFFRUMsT0FBSztBQUZQLENBVGlCLENBQW5COztBQWNPLElBQU1DLHdCQUFRLFNBQVJBLEtBQVEsQ0FBQ0MsSUFBRCxFQUFVO0FBQzdCLE1BQU1DLElBQUlDLGtCQUFRQyxJQUFSLENBQWFILElBQWIsQ0FBVjtBQUNBLE1BQU1JLE1BQU0sRUFBWjtBQUNBUixhQUFXUyxPQUFYLENBQW1CLFVBQUNDLE1BQUQsRUFBWTtBQUM3QkwsTUFBRUssT0FBT1QsR0FBVCxFQUFjVSxJQUFkLENBQW1CLFVBQUNDLENBQUQsRUFBSUMsT0FBSixFQUFnQjtBQUNqQyxVQUFNWCxNQUFNRyxFQUFFUSxPQUFGLEVBQVdDLElBQVgsQ0FBZ0JKLE9BQU9SLEdBQXZCLENBQVo7QUFDQSxVQUFJQSxHQUFKLEVBQVM7QUFDUE0sWUFBSU8sSUFBSixDQUFTYixHQUFUO0FBQ0FILGNBQU0saUJBQU4sRUFBeUJHLEdBQXpCO0FBQ0Q7QUFDRixLQU5EO0FBT0QsR0FSRDtBQVNBLFNBQU9NLEdBQVA7QUFDRCxDQWJNOztBQWVQLElBQU1RLGNBQWMsU0FBZEEsV0FBYztBQUFBLFNBQ2xCLENBQUNDLGNBQUlDLEtBQUosQ0FBVUMsSUFBVixFQUFnQkMsUUFBakIsSUFBNkIsQ0FBQyxDQUFDQyxlQUFLSCxLQUFMLENBQVdDLElBQVgsRUFBaUJHLEdBRDlCO0FBQUEsQ0FBcEI7O0FBR08sSUFBTUMsa0NBQWEsU0FBYkEsVUFBYSxDQUFDbkIsSUFBRCxFQUFVO0FBQ2xDLE1BQU1JLE1BQU1MLE1BQU1DLElBQU4sRUFBWW9CLE1BQVosQ0FBbUJSLFdBQW5CLENBQVo7QUFDQWpCLFFBQU0sc0JBQU4sRUFBOEJTLElBQUlpQixNQUFsQztBQUNBLFNBQU9qQixHQUFQO0FBQ0QsQ0FKTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGNoZWVyaW8gZnJvbSAnY2hlZXJpbyc7XG5pbXBvcnQgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgZGVidWcgPSBjcmVhdGVEZWJ1ZygncGFnZS1sb2FkZXI6cGFyc2VyJyk7XG5cbmNvbnN0IHNvdXJjZXNUYWcgPSBbXG4gIHtcbiAgICB0YWc6ICdzY3JpcHQnLFxuICAgIHNyYzogJ3NyYycsXG4gIH0sXG4gIHtcbiAgICB0YWc6ICdsaW5rJyxcbiAgICBzcmM6ICdocmVmJyxcbiAgfSxcbiAge1xuICAgIHRhZzogJ2ltZycsXG4gICAgc3JjOiAnc3JjJyxcbiAgfV07XG5cbmV4cG9ydCBjb25zdCBsaW5rcyA9IChodG1sKSA9PiB7XG4gIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQoaHRtbCk7XG4gIGNvbnN0IGFyciA9IFtdO1xuICBzb3VyY2VzVGFnLmZvckVhY2goKHNyY1RhZykgPT4ge1xuICAgICQoc3JjVGFnLnRhZykuZWFjaCgoaSwgZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3Qgc3JjID0gJChlbGVtZW50KS5hdHRyKHNyY1RhZy5zcmMpO1xuICAgICAgaWYgKHNyYykge1xuICAgICAgICBhcnIucHVzaChzcmMpO1xuICAgICAgICBkZWJ1ZygnZm91bmQgYSBsaW5rICVzJywgc3JjKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBhcnI7XG59O1xuXG5jb25zdCBpc0xvY2FsTGluayA9IGxpbmsgPT5cbiAgIXVybC5wYXJzZShsaW5rKS5ob3N0bmFtZSAmJiAhIXBhdGgucGFyc2UobGluaykuZXh0O1xuXG5leHBvcnQgY29uc3QgbG9jYWxMaW5rcyA9IChodG1sKSA9PiB7XG4gIGNvbnN0IGFyciA9IGxpbmtzKGh0bWwpLmZpbHRlcihpc0xvY2FsTGluayk7XG4gIGRlYnVnKCdmb3VuZCAlZCBsb2NhbCBsaW5rcycsIGFyci5sZW5ndGgpO1xuICByZXR1cm4gYXJyO1xufTtcbiJdfQ==