/
IndexMapGenerator.js
72 lines (53 loc) · 2 KB
/
IndexMapGenerator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _lodash = _interopRequireDefault(require("lodash"));
var _xml = _interopRequireDefault(require("xml"));
var _moment = _interopRequireDefault(require("moment"));
var _url = _interopRequireDefault(require("url"));
var _path = _interopRequireDefault(require("path"));
var _utils = _interopRequireDefault(require("./utils"));
var XMLNS_DECLS = {
_attr: {
xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9"
}
};
var SiteMapIndexGenerator =
/*#__PURE__*/
function () {
function SiteMapIndexGenerator(options) {
options = options || {};
this.types = options.types;
}
var _proto = SiteMapIndexGenerator.prototype;
_proto.getXml = function getXml(options) {
var urlElements = this.generateSiteMapUrlElements(options);
var data = {
// Concat the elements to the _attr declaration
sitemapindex: [XMLNS_DECLS].concat(urlElements) // Return the xml
};
return _utils.default.getDeclarations(options) + (0, _xml.default)(data);
};
_proto.generateSiteMapUrlElements = function generateSiteMapUrlElements(_ref) {
var _this = this;
var sources = _ref.sources,
siteUrl = _ref.siteUrl,
pathPrefix = _ref.pathPrefix,
resourcesOutput = _ref.resourcesOutput;
return _lodash.default.map(sources, function (source) {
var filePath = resourcesOutput.replace(/:resource/, source.name).replace(/^\//, "");
var siteMapUrl = _url.default.resolve(siteUrl, _path.default.join(pathPrefix, filePath));
var lastModified = _this.types[source.sitemap].lastModified || (0, _moment.default)(new Date(), _moment.default.ISO_8601).toISOString();
return {
sitemap: [{
loc: siteMapUrl
}, {
lastmod: (0, _moment.default)(lastModified).toISOString()
}]
};
});
};
return SiteMapIndexGenerator;
}();
exports.default = SiteMapIndexGenerator;