@jpmorganchase/mosaic-plugins 0.1.0-beta.6 → 0.1.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/$AliasPlugin.js +229 -64
  3. package/dist/$AliasPlugin.js.map +1 -1
  4. package/dist/$CodeModPlugin.js +118 -36
  5. package/dist/$CodeModPlugin.js.map +1 -1
  6. package/dist/$RefPlugin.js +449 -122
  7. package/dist/$RefPlugin.js.map +1 -1
  8. package/dist/$TagPlugin.js +236 -77
  9. package/dist/$TagPlugin.js.map +1 -1
  10. package/dist/BreadcrumbsPlugin.js +114 -42
  11. package/dist/BreadcrumbsPlugin.js.map +1 -1
  12. package/dist/LazyPagePlugin.js +255 -86
  13. package/dist/LazyPagePlugin.js.map +1 -1
  14. package/dist/LocalFolderSavePlugin.js +165 -0
  15. package/dist/LocalFolderSavePlugin.js.map +1 -0
  16. package/dist/NextPrevPagePlugin.js +157 -47
  17. package/dist/NextPrevPagePlugin.js.map +1 -1
  18. package/dist/PagesWithoutFileExtPlugin.js +119 -38
  19. package/dist/PagesWithoutFileExtPlugin.js.map +1 -1
  20. package/dist/ReadingTimePlugin.mjs.map +1 -1
  21. package/dist/SearchIndexPlugin.mjs +268 -0
  22. package/dist/SearchIndexPlugin.mjs.map +1 -0
  23. package/dist/SharedConfigPlugin.js +174 -43
  24. package/dist/SharedConfigPlugin.js.map +1 -1
  25. package/dist/SidebarPlugin.js +319 -87
  26. package/dist/SidebarPlugin.js.map +1 -1
  27. package/dist/SiteMapPlugin.js +90 -38
  28. package/dist/SiteMapPlugin.js.map +1 -1
  29. package/dist/TableOfContentsPlugin.mjs +49 -58
  30. package/dist/TableOfContentsPlugin.mjs.map +1 -1
  31. package/dist/__tests__/BreadcrumbsPlugin.test.js +160 -0
  32. package/dist/__tests__/BreadcrumbsPlugin.test.js.map +1 -0
  33. package/dist/utils/normaliseRefs.js +276 -74
  34. package/dist/utils/normaliseRefs.js.map +1 -1
  35. package/package.json +16 -5
@@ -1,109 +1,341 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- /**
17
- * Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
18
- * sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
19
- */
20
- const SidebarPlugin = {
21
- $beforeSend(mutableFilesystem, { config, serialiser, ignorePages, pageExtensions }, options) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const dirs = yield mutableFilesystem.promises.glob('**', {
24
- onlyDirectories: true,
25
- cwd: '/'
26
- });
27
- for (const dirName of dirs) {
28
- const sidebarFilePath = path_1.default.posix.join(String(dirName), options.filename);
29
- const pages = (yield Promise.all((yield mutableFilesystem.promises.glob(createFileGlob(['*', '*/index'], pageExtensions), {
30
- onlyFiles: true,
31
- cwd: String(dirName),
32
- ignore: ignorePages.map(ignore => `**/${ignore}`)
33
- })).map((pagePath) => __awaiter(this, void 0, void 0, function* () {
34
- return yield serialiser.deserialise(pagePath, yield mutableFilesystem.promises.readFile(pagePath));
35
- }))))
36
- .filter(page => filterFn(page))
37
- .sort((pageA, pageB) => sortFn(pageA, pageB, dirName));
38
- for (let i = 0; i < pages.length; i++) {
39
- setPageRefs(sidebarFilePath, pages[i], i);
40
- setChildPageRefs(pages[i], dirName, i, sidebarFilePath);
41
- addSidebarDataToFrontmatter(pages[i], dirName);
42
- }
43
- yield mutableFilesystem.promises.writeFile(sidebarFilePath, '[]');
44
- }
45
- function setPageRefs(sidebarFilePath, page, i) {
46
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'id', '$ref'], `${page.fullPath}#/route`);
47
- page.sidebar && page.sidebar.label
48
- ? config.setRef(sidebarFilePath, ['pages', `${i}`, 'name', '$ref'], `${page.fullPath}#/sidebar/label`)
49
- : config.setRef(sidebarFilePath, ['pages', `${i}`, 'name', '$ref'], `${page.fullPath}#/title`);
50
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'data', 'link', '$ref'], `${page.fullPath}#/route`);
51
- }
52
- function setChildPageRefs(page, dirName, i, sidebarFilePath) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- if (isSubfolderIndex(page, dirName)) {
55
- const childDirName = path_1.default.posix.dirname(page.fullPath);
56
- const childNodeSidebarPath = path_1.default.posix.join(childDirName, options.filename);
57
- const childPages = (yield Promise.all((yield mutableFilesystem.promises.glob(createFileGlob(['*', '*/index'], pageExtensions), {
58
- onlyFiles: true,
59
- cwd: String(childDirName),
60
- ignore: ignorePages.map(ignore => `**/${ignore}`)
61
- })).map((pagePath) => __awaiter(this, void 0, void 0, function* () {
62
- return yield serialiser.deserialise(pagePath, yield mutableFilesystem.promises.readFile(pagePath));
63
- })))).filter(page => filterFn(page));
64
- if (childPages.length > 1) {
65
- for (let j = 1; j < childPages.length; j++) {
66
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'childNodes', `${j - 1}`, '$ref'], `${childNodeSidebarPath}#/pages/${j}`);
67
- }
68
- }
69
- }
70
- });
1
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithoutHoles(arr) {
7
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _asyncToGenerator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
71
30
  }
72
- function addSidebarDataToFrontmatter(page, dirName) {
73
- const dirNameLevels = String(dirName)
74
- .split('/')
75
- .filter(level => level);
76
- const sidebarRootDir = `/` + dirNameLevels.slice(0, dirNameLevels.length < 3 ? dirNameLevels.length : 3).join(`/`);
77
- config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path_1.default.posix.join(String(sidebarRootDir), options.filename, '#', 'pages'));
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
78
33
  }
34
+ _next(undefined);
79
35
  });
80
- }
81
- };
82
- exports.default = SidebarPlugin;
36
+ };
37
+ }
38
+ function _iterableToArray(iter) {
39
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
40
+ }
41
+ function _nonIterableSpread() {
42
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
+ }
44
+ function _toConsumableArray(arr) {
45
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
46
+ }
47
+ function _unsupportedIterableToArray(o, minLen) {
48
+ if (!o) return;
49
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
50
+ var n = Object.prototype.toString.call(o).slice(8, -1);
51
+ if (n === "Object" && o.constructor) n = o.constructor.name;
52
+ if (n === "Map" || n === "Set") return Array.from(n);
53
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
54
+ }
55
+ import regeneratorRuntime from "regenerator-runtime";
56
+ import path from "path";
83
57
  function createFileGlob(patterns, pageExtensions) {
84
58
  if (Array.isArray(patterns)) {
85
- return patterns.map(pattern => createFileGlob(pattern, pageExtensions));
59
+ return patterns.map(function(pattern) {
60
+ return createFileGlob(pattern, pageExtensions);
61
+ });
86
62
  }
87
63
  if (pageExtensions.length === 1) {
88
- return `${patterns}${pageExtensions[0]}`;
64
+ return "".concat(patterns).concat(pageExtensions[0]);
89
65
  }
90
- return `${patterns}{${pageExtensions.join(',')}}`;
66
+ return "".concat(patterns, "{").concat(pageExtensions.join(","), "}");
91
67
  }
92
68
  function isSubfolderIndex(page, dirName) {
93
- return page.fullPath.split('/').length == String(dirName).split('/').length + 2;
69
+ return page.fullPath.split("/").length === String(dirName).split("/").length + 2;
94
70
  }
95
71
  function sortFn(pageA, pageB, dirName) {
96
72
  // Always pin /index to the front
97
- if (pageA.route === dirName + '/index') {
73
+ var route = "".concat(dirName, "/index");
74
+ if (pageA.route === route) {
98
75
  return -1;
99
76
  }
100
- if (pageB.route === dirName + '/index') {
77
+ if (pageB.route === route) {
101
78
  return 1;
102
79
  }
103
- return ((pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) -
104
- (pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1));
80
+ return (pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) - (pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1);
105
81
  }
106
82
  function filterFn(page) {
107
83
  return !(page.sidebar && page.sidebar.exclude);
108
84
  }
85
+ /**
86
+ * Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
87
+ * sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
88
+ */ var SidebarPlugin = {
89
+ $beforeSend: function $beforeSend(mutableFilesystem, param, options) {
90
+ var config = param.config, serialiser = param.serialiser, ignorePages = param.ignorePages, pageExtensions = param.pageExtensions;
91
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
92
+ var setPageRefs, setChildPageRefs, _setChildPageRefs, addSidebarDataToFrontmatter, dirs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, dirName, sidebarFilePath, pages, i;
93
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
94
+ while(1)switch(_ctx.prev = _ctx.next){
95
+ case 0:
96
+ setPageRefs = function _setPageRefs(sidebarFilePath, page, i) {
97
+ config.setRef(sidebarFilePath, [
98
+ "pages",
99
+ "".concat(i),
100
+ "id",
101
+ "$ref"
102
+ ], "".concat(page.fullPath, "#/route"));
103
+ var label = page.sidebar && page.sidebar.label ? "".concat(page.fullPath, "#/sidebar/label") : "".concat(page.fullPath, "#/title");
104
+ config.setRef(sidebarFilePath, [
105
+ "pages",
106
+ "".concat(i),
107
+ "name",
108
+ "$ref"
109
+ ], label);
110
+ config.setRef(sidebarFilePath, [
111
+ "pages",
112
+ "".concat(i),
113
+ "data",
114
+ "link",
115
+ "$ref"
116
+ ], "".concat(page.fullPath, "#/route"));
117
+ };
118
+ setChildPageRefs = function _setChildPageRefs1(page, dirName, i, sidebarFilePath) {
119
+ return _setChildPageRefs.apply(this, arguments);
120
+ };
121
+ _setChildPageRefs = function __setChildPageRefs() {
122
+ _setChildPageRefs = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(page, dirName, i, sidebarFilePath) {
123
+ var childDirName, childNodeSidebarPath, childPages, j;
124
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
125
+ while(1)switch(_ctx.prev = _ctx.next){
126
+ case 0:
127
+ if (!isSubfolderIndex(page, dirName)) {
128
+ _ctx.next = 11;
129
+ break;
130
+ }
131
+ childDirName = path.posix.dirname(page.fullPath);
132
+ childNodeSidebarPath = path.posix.join(childDirName, options.filename);
133
+ _ctx.t0 = Promise;
134
+ _ctx.next = 6;
135
+ return mutableFilesystem.promises.glob(createFileGlob([
136
+ "*",
137
+ "*/index"
138
+ ], pageExtensions), {
139
+ onlyFiles: true,
140
+ cwd: String(childDirName),
141
+ ignore: ignorePages.map(function(ignore) {
142
+ return "**/".concat(ignore);
143
+ })
144
+ });
145
+ case 6:
146
+ _ctx.t1 = _ctx.sent.map(function() {
147
+ var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(pagePath) {
148
+ var deserialisedPage;
149
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
150
+ while(1)switch(_ctx.prev = _ctx.next){
151
+ case 0:
152
+ _ctx.t0 = serialiser;
153
+ _ctx.t1 = pagePath;
154
+ _ctx.next = 4;
155
+ return mutableFilesystem.promises.readFile(pagePath);
156
+ case 4:
157
+ _ctx.t2 = _ctx.sent;
158
+ _ctx.next = 7;
159
+ return _ctx.t0.deserialise.call(_ctx.t0, _ctx.t1, _ctx.t2);
160
+ case 7:
161
+ deserialisedPage = _ctx.sent;
162
+ return _ctx.abrupt("return", deserialisedPage);
163
+ case 9:
164
+ case "end":
165
+ return _ctx.stop();
166
+ }
167
+ }, _callee);
168
+ }));
169
+ return function(pagePath) {
170
+ return _ref.apply(this, arguments);
171
+ };
172
+ }());
173
+ _ctx.next = 9;
174
+ return _ctx.t0.all.call(_ctx.t0, _ctx.t1);
175
+ case 9:
176
+ childPages = _ctx.sent.filter(function(filterPage) {
177
+ return filterFn(filterPage);
178
+ });
179
+ if (childPages.length > 1) {
180
+ for(j = 1; j < childPages.length; j++){
181
+ config.setRef(sidebarFilePath, [
182
+ "pages",
183
+ "".concat(i),
184
+ "childNodes",
185
+ "".concat(j - 1),
186
+ "$ref"
187
+ ], "".concat(childNodeSidebarPath, "#/pages/").concat(j));
188
+ }
189
+ }
190
+ case 11:
191
+ case "end":
192
+ return _ctx.stop();
193
+ }
194
+ }, _callee);
195
+ }));
196
+ return _setChildPageRefs.apply(this, arguments);
197
+ };
198
+ addSidebarDataToFrontmatter = function _addSidebarDataToFrontmatter(page, dirName) {
199
+ var _posix;
200
+ var dirNameLevels = String(dirName).split("/").filter(function(level) {
201
+ return level;
202
+ });
203
+ var sidebarRootDir = (_posix = path.posix).join.apply(_posix, [
204
+ "/"
205
+ ].concat(_toConsumableArray(dirNameLevels.slice(0, dirNameLevels.length < 3 ? dirNameLevels.length : 3)), [
206
+ "/"
207
+ ]));
208
+ config.setRef(String(page.fullPath), [
209
+ "sidebarData",
210
+ "$ref"
211
+ ], path.posix.join(String(sidebarRootDir), options.filename, "#", "pages"));
212
+ };
213
+ ;
214
+ ;
215
+ ;
216
+ ;
217
+ _ctx.next = 10;
218
+ return mutableFilesystem.promises.glob("**", {
219
+ onlyDirectories: true,
220
+ cwd: "/"
221
+ });
222
+ case 10:
223
+ dirs = _ctx.sent;
224
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
225
+ _ctx.prev = 12;
226
+ _iterator = dirs[Symbol.iterator]();
227
+ case 14:
228
+ if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
229
+ _ctx.next = 30;
230
+ break;
231
+ }
232
+ dirName = _step.value;
233
+ sidebarFilePath = path.posix.join(String(dirName), options.filename);
234
+ _ctx.t0 = Promise;
235
+ _ctx.next = 20;
236
+ return mutableFilesystem.promises.glob(createFileGlob([
237
+ "*",
238
+ "*/index"
239
+ ], pageExtensions), {
240
+ onlyFiles: true,
241
+ cwd: String(dirName),
242
+ ignore: ignorePages.map(function(ignore) {
243
+ return "**/".concat(ignore);
244
+ })
245
+ });
246
+ case 20:
247
+ _ctx.t1 = _ctx.sent.map(function() {
248
+ var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(pagePath) {
249
+ var deserialisedPage;
250
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
251
+ while(1)switch(_ctx.prev = _ctx.next){
252
+ case 0:
253
+ _ctx.t0 = serialiser;
254
+ _ctx.t1 = pagePath;
255
+ _ctx.next = 4;
256
+ return mutableFilesystem.promises.readFile(pagePath);
257
+ case 4:
258
+ _ctx.t2 = _ctx.sent;
259
+ _ctx.next = 7;
260
+ return _ctx.t0.deserialise.call(_ctx.t0, _ctx.t1, _ctx.t2);
261
+ case 7:
262
+ deserialisedPage = _ctx.sent;
263
+ return _ctx.abrupt("return", deserialisedPage);
264
+ case 9:
265
+ case "end":
266
+ return _ctx.stop();
267
+ }
268
+ }, _callee);
269
+ }));
270
+ return function(pagePath) {
271
+ return _ref.apply(this, arguments);
272
+ };
273
+ }());
274
+ _ctx.next = 23;
275
+ return _ctx.t0.all.call(_ctx.t0, _ctx.t1);
276
+ case 23:
277
+ pages = _ctx.sent.filter(function(page) {
278
+ return filterFn(page);
279
+ }).sort(function(pageA, pageB) {
280
+ return sortFn(pageA, pageB, dirName);
281
+ });
282
+ for(i = 0; i < pages.length; i++){
283
+ setPageRefs(sidebarFilePath, pages[i], i);
284
+ setChildPageRefs(pages[i], dirName, i, sidebarFilePath);
285
+ addSidebarDataToFrontmatter(pages[i], dirName);
286
+ }
287
+ _ctx.next = 27;
288
+ return mutableFilesystem.promises.writeFile(sidebarFilePath, "[]");
289
+ case 27:
290
+ _iteratorNormalCompletion = true;
291
+ _ctx.next = 14;
292
+ break;
293
+ case 30:
294
+ _ctx.next = 36;
295
+ break;
296
+ case 32:
297
+ _ctx.prev = 32;
298
+ _ctx.t2 = _ctx["catch"](12);
299
+ _didIteratorError = true;
300
+ _iteratorError = _ctx.t2;
301
+ case 36:
302
+ _ctx.prev = 36;
303
+ _ctx.prev = 37;
304
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
305
+ _iterator.return();
306
+ }
307
+ case 39:
308
+ _ctx.prev = 39;
309
+ if (!_didIteratorError) {
310
+ _ctx.next = 42;
311
+ break;
312
+ }
313
+ throw _iteratorError;
314
+ case 42:
315
+ return _ctx.finish(39);
316
+ case 43:
317
+ return _ctx.finish(36);
318
+ case 44:
319
+ case "end":
320
+ return _ctx.stop();
321
+ }
322
+ }, _callee, null, [
323
+ [
324
+ 12,
325
+ 32,
326
+ 36,
327
+ 44
328
+ ],
329
+ [
330
+ 37,
331
+ ,
332
+ 39,
333
+ 43
334
+ ]
335
+ ]);
336
+ }))();
337
+ }
338
+ };
339
+ export default SidebarPlugin;
340
+
109
341
  //# sourceMappingURL=SidebarPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/SidebarPlugin.ts"],"sourcesContent":["import path from 'path';\nimport type { Plugin as PluginType } from '@jpmorganchase/mosaic-types';\nimport { Page } from '@jpmorganchase/mosaic-types';\n\nfunction createFileGlob(patterns, pageExtensions) {\n if (Array.isArray(patterns)) {\n return patterns.map(pattern => createFileGlob(pattern, pageExtensions));\n }\n if (pageExtensions.length === 1) {\n return `${patterns}${pageExtensions[0]}`;\n }\n return `${patterns}{${pageExtensions.join(',')}}`;\n}\nfunction isSubfolderIndex(page, dirName) {\n return page.fullPath.split('/').length === String(dirName).split('/').length + 2;\n}\n\nfunction sortFn(pageA, pageB, dirName) {\n // Always pin /index to the front\n\n const route = `${dirName}/index`;\n if (pageA.route === route) {\n return -1;\n }\n if (pageB.route === route) {\n return 1;\n }\n return (\n (pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) -\n (pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1)\n );\n}\n\nfunction filterFn(page) {\n return !(page.sidebar && page.sidebar.exclude);\n}\n\ninterface SidebarPluginConfigData {\n dirs: string[];\n refs: { [key: string]: { $$path: (number | string)[]; $$value: string }[] };\n}\n\ninterface SidebarPluginPage extends Page {\n sidebar?: {\n label?: string;\n };\n}\n\ninterface SidebarPluginOptions {\n filename: string;\n}\n\n/**\n * Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the\n * sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.\n */\nconst SidebarPlugin: PluginType<SidebarPluginPage, SidebarPluginOptions, SidebarPluginConfigData> =\n {\n async $beforeSend(\n mutableFilesystem,\n { config, serialiser, ignorePages, pageExtensions },\n options\n ) {\n function setPageRefs(sidebarFilePath: string, page: SidebarPluginPage, i: number) {\n config.setRef(sidebarFilePath, ['pages', `${i}`, 'id', '$ref'], `${page.fullPath}#/route`);\n\n const label =\n page.sidebar && page.sidebar.label\n ? `${page.fullPath}#/sidebar/label`\n : `${page.fullPath}#/title`;\n\n config.setRef(sidebarFilePath, ['pages', `${i}`, 'name', '$ref'], label);\n\n config.setRef(\n sidebarFilePath,\n ['pages', `${i}`, 'data', 'link', '$ref'],\n `${page.fullPath}#/route`\n );\n }\n\n async function setChildPageRefs(page, dirName, i, sidebarFilePath) {\n if (isSubfolderIndex(page, dirName)) {\n const childDirName = path.posix.dirname(page.fullPath);\n const childNodeSidebarPath = path.posix.join(childDirName, options.filename);\n const childPages = (\n await Promise.all(\n (\n (await mutableFilesystem.promises.glob(\n createFileGlob(['*', '*/index'], pageExtensions),\n {\n onlyFiles: true,\n cwd: String(childDirName),\n ignore: ignorePages.map(ignore => `**/${ignore}`)\n }\n )) as string[]\n ).map(async pagePath => {\n const deserialisedPage = await serialiser.deserialise(\n pagePath,\n await mutableFilesystem.promises.readFile(pagePath)\n );\n return deserialisedPage;\n })\n )\n ).filter(filterPage => filterFn(filterPage));\n if (childPages.length > 1) {\n for (let j = 1; j < childPages.length; j++) {\n config.setRef(\n sidebarFilePath,\n ['pages', `${i}`, 'childNodes', `${j - 1}`, '$ref'],\n `${childNodeSidebarPath}#/pages/${j}`\n );\n }\n }\n }\n }\n\n function addSidebarDataToFrontmatter(page, dirName) {\n const dirNameLevels = String(dirName)\n .split('/')\n .filter(level => level);\n const sidebarRootDir = path.posix.join(\n '/',\n ...dirNameLevels.slice(0, dirNameLevels.length < 3 ? dirNameLevels.length : 3),\n '/'\n );\n\n config.setRef(\n String(page.fullPath),\n ['sidebarData', '$ref'],\n path.posix.join(String(sidebarRootDir), options.filename, '#', 'pages')\n );\n }\n\n const dirs = await mutableFilesystem.promises.glob('**', {\n onlyDirectories: true,\n cwd: '/'\n });\n for (const dirName of dirs) {\n const sidebarFilePath = path.posix.join(String(dirName), options.filename);\n const pages = (\n await Promise.all(\n (\n (await mutableFilesystem.promises.glob(\n createFileGlob(['*', '*/index'], pageExtensions),\n {\n onlyFiles: true,\n cwd: String(dirName),\n ignore: ignorePages.map(ignore => `**/${ignore}`)\n }\n )) as string[]\n ).map(async pagePath => {\n const deserialisedPage = await serialiser.deserialise(\n pagePath,\n await mutableFilesystem.promises.readFile(pagePath)\n );\n return deserialisedPage;\n })\n )\n )\n .filter(page => filterFn(page))\n .sort((pageA, pageB) => sortFn(pageA, pageB, dirName));\n\n for (let i = 0; i < pages.length; i++) {\n setPageRefs(sidebarFilePath, pages[i], i);\n setChildPageRefs(pages[i], dirName, i, sidebarFilePath);\n addSidebarDataToFrontmatter(pages[i], dirName);\n }\n await mutableFilesystem.promises.writeFile(sidebarFilePath, '[]');\n }\n }\n };\nexport default SidebarPlugin;\n"],"names":["path","createFileGlob","patterns","pageExtensions","Array","isArray","map","pattern","length","join","isSubfolderIndex","page","dirName","fullPath","split","String","sortFn","pageA","pageB","route","sidebar","priority","filterFn","exclude","SidebarPlugin","$beforeSend","mutableFilesystem","options","config","serialiser","ignorePages","setPageRefs","setChildPageRefs","addSidebarDataToFrontmatter","dirs","sidebarFilePath","pages","i","setRef","label","childDirName","childNodeSidebarPath","childPages","j","posix","dirname","filename","Promise","promises","glob","onlyFiles","cwd","ignore","pagePath","deserialisedPage","readFile","deserialise","all","filter","filterPage","dirNameLevels","level","sidebarRootDir","slice","onlyDirectories","sort","writeFile"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,IAAI,MAAM,MAAM,CAAC;AAIxB,SAASC,cAAc,CAACC,QAAQ,EAAEC,cAAc,EAAE;IAChD,IAAIC,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,EAAE;QAC3B,OAAOA,QAAQ,CAACI,GAAG,CAACC,SAAAA,OAAO;mBAAIN,cAAc,CAACM,OAAO,EAAEJ,cAAc,CAAC;SAAA,CAAC,CAAC;KACzE;IACD,IAAIA,cAAc,CAACK,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,AAAC,EAAA,CAAaL,MAAiB,CAA5BD,QAAQ,CAAqB,CAAA,MAAA,CAAlBC,cAAc,CAAC,CAAC,CAAC,CAAE,CAAC;KAC1C;IACD,OAAO,AAAC,EAAA,CAAcA,MAAwB,CAApCD,QAAQ,EAAC,GAAC,CAA2B,CAAA,MAAC,CAA1BC,cAAc,CAACM,IAAI,CAAC,GAAG,CAAC,EAAC,GAAC,CAAC,CAAC;CACnD;AACD,SAASC,gBAAgB,CAACC,IAAI,EAAEC,OAAO,EAAE;IACvC,OAAOD,IAAI,CAACE,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAACN,MAAM,KAAKO,MAAM,CAACH,OAAO,CAAC,CAACE,KAAK,CAAC,GAAG,CAAC,CAACN,MAAM,GAAG,CAAC,CAAC;CAClF;AAED,SAASQ,MAAM,CAACC,KAAK,EAAEC,KAAK,EAAEN,OAAO,EAAE;IACrC,iCAAiC;IAEjC,IAAMO,KAAK,GAAG,AAAC,EAAA,CAAU,MAAM,CAAdP,OAAO,EAAC,QAAM,CAAC,AAAC;IACjC,IAAIK,KAAK,CAACE,KAAK,KAAKA,KAAK,EAAE;QACzB,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAID,KAAK,CAACC,KAAK,KAAKA,KAAK,EAAE;QACzB,OAAO,CAAC,CAAC;KACV;IACD,OACE,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACE,OAAO,CAACC,QAAQ,GAAGH,KAAK,CAACE,OAAO,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC,GACvE,CAACJ,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACG,OAAO,CAACC,QAAQ,GAAGJ,KAAK,CAACG,OAAO,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC,CACvE;CACH;AAED,SAASC,QAAQ,CAACX,IAAI,EAAE;IACtB,OAAO,CAAC,CAACA,IAAI,CAACS,OAAO,IAAIT,IAAI,CAACS,OAAO,CAACG,OAAO,CAAC,CAAC;CAChD;AAiBD;;;CAGC,GACD,IAAMC,aAAa,GACjB;IACQC,WAAW,EAAjB,SAAMA,WAAW,CACfC,iBAAiB,EACjB,KAAmD,EACnDC,OAAO;YADLC,MAAM,GAAR,KAAmD,CAAjDA,MAAM,EAAEC,UAAU,GAApB,KAAmD,CAAzCA,UAAU,EAAEC,WAAW,GAAjC,KAAmD,CAA7BA,WAAW,EAAE3B,cAAc,GAAjD,KAAmD,CAAhBA,cAAc;eAEjD,wDAAA,mBAAA;gBACS4B,WAAW,EAiBLC,gBAAgB,EAAhBA,iBAAgB,EAoCtBC,2BAA2B,EAiB9BC,IAAI,EAIL,yBAAa,EAAb,iBAAa,EAAb,cAAa,EAAb,SAAa,EAAb,KAAa,EAAPtB,OAAO,EACVuB,eAAe,EACfC,KAAK,EAuBFC,CAAC;;;;wBAnGZ,AAASN,WAAW,GAApB,SAASA,YAAW,CAACI,eAAuB,EAAExB,IAAuB,EAAE0B,CAAS,EAAE;4BAChFT,MAAM,CAACU,MAAM,CAACH,eAAe,EAAE;gCAAC,OAAO;gCAAG,EAAA,CAAI,MAAA,CAAFE,CAAC,CAAE;gCAAE,IAAI;gCAAE,MAAM;6BAAC,EAAE,AAAC,EAAA,CAAgB,MAAO,CAArB1B,IAAI,CAACE,QAAQ,EAAC,SAAO,CAAC,CAAC,CAAC;4BAE3F,IAAM0B,KAAK,GACT5B,IAAI,CAACS,OAAO,IAAIT,IAAI,CAACS,OAAO,CAACmB,KAAK,GAC9B,AAAC,EAAA,CAAgB,MAAe,CAA7B5B,IAAI,CAACE,QAAQ,EAAC,iBAAe,CAAC,GACjC,AAAC,EAAA,CAAgB,MAAO,CAArBF,IAAI,CAACE,QAAQ,EAAC,SAAO,CAAC,AAAC;4BAEhCe,MAAM,CAACU,MAAM,CAACH,eAAe,EAAE;gCAAC,OAAO;gCAAG,EAAA,CAAI,MAAA,CAAFE,CAAC,CAAE;gCAAE,MAAM;gCAAE,MAAM;6BAAC,EAAEE,KAAK,CAAC,CAAC;4BAEzEX,MAAM,CAACU,MAAM,CACXH,eAAe,EACf;gCAAC,OAAO;gCAAG,EAAA,CAAI,MAAA,CAAFE,CAAC,CAAE;gCAAE,MAAM;gCAAE,MAAM;gCAAE,MAAM;6BAAC,EACzC,AAAC,EAAA,CAAgB,MAAO,CAArB1B,IAAI,CAACE,QAAQ,EAAC,SAAO,CAAC,CAC1B,CAAC;yBACH;wBAEcmB,gBAAgB,YAAhBA,kBAAgB,CAACrB,IAAI,EAAEC,OAAO,EAAEyB,CAAC,EAAEF,eAAe;mCAAlDH,iBAAgB;;wBAAhBA,iBAAgB,YAAhBA,kBAAgB;4BAAhBA,iBAAgB,GAA/B,wDAAA,iBAAgCrB,IAAI,EAAEC,OAAO,EAAEyB,CAAC,EAAEF,eAAe,EAAE;oCAEzDK,YAAY,EACZC,oBAAoB,EACpBC,UAAU,EAqBLC,CAAC;;;;gDAxBVjC,CAAAA,gBAAgB,CAACC,IAAI,EAAEC,OAAO,CAAC;;;;4CAC3B4B,YAAY,GAAGxC,IAAI,CAAC4C,KAAK,CAACC,OAAO,CAAClC,IAAI,CAACE,QAAQ,CAAC,CAAC;4CACjD4B,oBAAoB,GAAGzC,IAAI,CAAC4C,KAAK,CAACnC,IAAI,CAAC+B,YAAY,EAAEb,OAAO,CAACmB,QAAQ,CAAC,CAAC;sDAErEC,OAAO;;mDAEFrB,iBAAiB,CAACsB,QAAQ,CAACC,IAAI,CACpChD,cAAc,CAAC;gDAAC,GAAG;gDAAE,SAAS;6CAAC,EAAEE,cAAc,CAAC,EAChD;gDACE+C,SAAS,EAAE,IAAI;gDACfC,GAAG,EAAEpC,MAAM,CAACyB,YAAY,CAAC;gDACzBY,MAAM,EAAEtB,WAAW,CAACxB,GAAG,CAAC8C,SAAAA,MAAM;2DAAI,AAAC,KAAG,CAAS,MAAA,CAAPA,MAAM,CAAE;iDAAA,CAAC;6CAClD,CACF;;sDARH,UASE9C,GAAG;2DAAC,wDAAA,iBAAM+C,QAAQ,EAAI;wDAChBC,gBAAgB;;;;0EAASzB,UAAU;0EACvCwB,QAAQ;;uEACF3B,iBAAiB,CAACsB,QAAQ,CAACO,QAAQ,CAACF,QAAQ,CAAC;;;;uEAFtBxB,QAAW2B,WAAW,gCAGpD;;gEAHKF,gBAAgB,YAGrB,CAAA;6FACMA,gBAAgB;;;;;;iDACxB,EAAA;gEANWD,QAAQ;;;gDAMlB;;mDAhBEN,QAAQU,GAAG,uBAiBhB;;4CAlBGf,UAAU,GAAG,UAmBjBgB,MAAM,CAACC,SAAAA,UAAU;uDAAIrC,QAAQ,CAACqC,UAAU,CAAC;6CAAA,CAAC,CAAA;4CAC5C,IAAIjB,UAAU,CAAClC,MAAM,GAAG,CAAC,EAAE;gDACzB,IAASmC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,CAAClC,MAAM,EAAEmC,CAAC,EAAE,CAAE;oDAC1Cf,MAAM,CAACU,MAAM,CACXH,eAAe,EACf;wDAAC,OAAO;wDAAG,EAAA,CAAI,MAAA,CAAFE,CAAC,CAAE;wDAAE,YAAY;wDAAG,EAAA,CAAQ,MAAA,CAANM,CAAC,GAAG,CAAC,CAAE;wDAAE,MAAM;qDAAC,EACnD,AAAC,EAAA,CAAiCA,MAAC,CAAhCF,oBAAoB,EAAC,UAAQ,CAAI,CAAA,MAAA,CAAFE,CAAC,CAAE,CACtC,CAAC;iDACH;6CACF;;;;;;6BAEJ,EAAA;mCAlCcX,iBAAgB;;wBAoC/B,AAASC,2BAA2B,GAApC,SAASA,4BAA2B,CAACtB,IAAI,EAAEC,OAAO,EAAE;gCAI3BZ,MAAU;4BAHjC,IAAM4D,aAAa,GAAG7C,MAAM,CAACH,OAAO,CAAC,CAClCE,KAAK,CAAC,GAAG,CAAC,CACV4C,MAAM,CAACG,SAAAA,KAAK;uCAAIA,KAAK;6BAAA,CAAC,AAAC;4BAC1B,IAAMC,cAAc,GAAG9D,AApCF,CAoCEA,MAAU,GAAVA,IAAI,CAAC4C,KAAK,CAjB9B,CAiB+BnC,IAAI,CAAfT,KAItB,CAJsBA,MAAU,EAAVA;gCACrB,GAAG;6BAGJ,CAJsBA,MAItB,CAFC,mBAAG4D,aAAa,CAACG,KAAK,CAAC,CAAC,EAAEH,aAAa,CAACpD,MAAM,GAAG,CAAC,GAAGoD,aAAa,CAACpD,MAAM,GAAG,CAAC,CAAC,CAA3EoD,EAFkB5D;gCAGrB,GAAG;6BACJ,CAAA,CAAA,AAAC;4BAEF4B,MAAM,CAACU,MAAM,CACXvB,MAAM,CAACJ,IAAI,CAACE,QAAQ,CAAC,EACrB;gCAAC,aAAa;gCAAE,MAAM;6BAAC,EACvBb,IAAI,CAAC4C,KAAK,CAACnC,IAAI,CAACM,MAAM,CAAC+C,cAAc,CAAC,EAAEnC,OAAO,CAACmB,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CACxE,CAAC;yBACH;;;;;;+BAEkBpB,iBAAiB,CAACsB,QAAQ,CAACC,IAAI,CAAC,IAAI,EAAE;4BACvDe,eAAe,EAAE,IAAI;4BACrBb,GAAG,EAAE,GAAG;yBACT,CAAC;;wBAHIjB,IAAI,YAGR,CAAA;wBACG,yBAAa,SAAb,iBAAa,UAAb,cAAa;;wBAAb,SAAa,GAAIA,IAAI;;4BAArB,yBAAa,IAAb,KAAa,GAAb,SAAa;;;;wBAAPtB,OAAO,GAAb,KAAa,MAAA;wBACVuB,eAAe,GAAGnC,IAAI,CAAC4C,KAAK,CAACnC,IAAI,CAACM,MAAM,CAACH,OAAO,CAAC,EAAEe,OAAO,CAACmB,QAAQ,CAAC,CAAC;kCAEnEC,OAAO;;+BAEFrB,iBAAiB,CAACsB,QAAQ,CAACC,IAAI,CACpChD,cAAc,CAAC;4BAAC,GAAG;4BAAE,SAAS;yBAAC,EAAEE,cAAc,CAAC,EAChD;4BACE+C,SAAS,EAAE,IAAI;4BACfC,GAAG,EAAEpC,MAAM,CAACH,OAAO,CAAC;4BACpBwC,MAAM,EAAEtB,WAAW,CAACxB,GAAG,CAAC8C,SAAAA,MAAM;uCAAI,AAAC,KAAG,CAAS,MAAA,CAAPA,MAAM,CAAE;6BAAA,CAAC;yBAClD,CACF;;kCARH,UASE9C,GAAG;uCAAC,wDAAA,iBAAM+C,QAAQ,EAAI;oCAChBC,gBAAgB;;;;sDAASzB,UAAU;sDACvCwB,QAAQ;;mDACF3B,iBAAiB,CAACsB,QAAQ,CAACO,QAAQ,CAACF,QAAQ,CAAC;;;;mDAFtBxB,QAAW2B,WAAW,gCAGpD;;4CAHKF,gBAAgB,YAGrB,CAAA;yEACMA,gBAAgB;;;;;;6BACxB,EAAA;4CANWD,QAAQ;;;4BAMlB;;+BAhBEN,QAAQU,GAAG,uBAiBhB;;wBAlBGrB,KAAK,GAAG,UAoBXsB,MAAM,CAAC/C,SAAAA,IAAI;mCAAIW,QAAQ,CAACX,IAAI,CAAC;yBAAA,CAAC,CAC9BsD,IAAI,CAAC,SAAChD,KAAK,EAAEC,KAAK;mCAAKF,MAAM,CAACC,KAAK,EAAEC,KAAK,EAAEN,OAAO,CAAC;yBAAA,CAAC,CAAA;wBAExD,IAASyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAAC5B,MAAM,EAAE6B,CAAC,EAAE,CAAE;4BACrCN,WAAW,CAACI,eAAe,EAAEC,KAAK,CAACC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC;4BAC1CL,gBAAgB,CAACI,KAAK,CAACC,CAAC,CAAC,EAAEzB,OAAO,EAAEyB,CAAC,EAAEF,eAAe,CAAC,CAAC;4BACxDF,2BAA2B,CAACG,KAAK,CAACC,CAAC,CAAC,EAAEzB,OAAO,CAAC,CAAC;yBAChD;;+BACKc,iBAAiB,CAACsB,QAAQ,CAACkB,SAAS,CAAC/B,eAAe,EAAE,IAAI,CAAC;;wBA9B9D,yBAAa;;;;;;;;;wBAAb,iBAAa;wBAAb,cAAa;;;;6BAAb,yBAAa,IAAb,SAAa;4BAAb,SAAa;;;;4BAAb,CAAA,iBAAa;;;;8BAAb,cAAa;;;;;;;;;;;;;;;;;;;;;;;SAgCnB,EAAA;KAAA;CACF,AAAC;AACJ,eAAeX,aAAa,CAAC"}
@@ -1,44 +1,96 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const SiteMapPlugin = {
13
- // Merge together all of the individual sitemaps from each source
14
- afterUpdate(mutableFilesystem, { sharedFilesystem, globalConfig }) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- if (!Array.isArray(globalConfig.data.sitemaps)) {
17
- return;
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
18
22
  }
19
- yield sharedFilesystem.promises.writeFile('/sitemap.xml', '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' +
20
- globalConfig.data.sitemaps
21
- .map(items => items
22
- .map(item => `\t<url>\n\t\t<loc>${String(item)}</loc>\n\t\t<changefreq>weekly</changefreq>\n\t\t<priority>0.5</priority>\n\t</url>`)
23
- .join('\n'))
24
- .join('') +
25
- '\n</urlset>');
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
26
27
  });
28
+ };
29
+ }
30
+ import regeneratorRuntime from "regenerator-runtime";
31
+ var SiteMapPlugin = {
32
+ afterUpdate: // Merge together all of the individual sitemaps from each source
33
+ function afterUpdate(_, param) {
34
+ var sharedFilesystem = param.sharedFilesystem, globalConfig = param.globalConfig;
35
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
36
+ var urls, urlSet;
37
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
38
+ while(1)switch(_ctx.prev = _ctx.next){
39
+ case 0:
40
+ if (Array.isArray(globalConfig.data.sitemaps)) {
41
+ _ctx.next = 2;
42
+ break;
43
+ }
44
+ return _ctx.abrupt("return");
45
+ case 2:
46
+ urls = globalConfig.data.sitemaps.map(function(items) {
47
+ return items.map(function(item) {
48
+ return " <url>\n <loc>".concat(String(item), "</loc>\n <changefreq>weekly</changefreq>\n <priority>0.5</priority>\n </url>");
49
+ }).join("\n");
50
+ });
51
+ urlSet = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n '.concat(urls, "\n\n</urlset>");
52
+ _ctx.next = 6;
53
+ return sharedFilesystem.promises.writeFile("/sitemap.xml", urlSet);
54
+ case 6:
55
+ case "end":
56
+ return _ctx.stop();
57
+ }
58
+ }, _callee);
59
+ }))();
27
60
  },
28
- // Store a sitemap for just this source
29
- $beforeSend(mutableFilesystem, { config, ignorePages }, options) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- config.setData({
32
- sitemaps: [
33
- (yield mutableFilesystem.promises.glob('**', {
34
- onlyFiles: true,
35
- ignore: ignorePages.map(ignore => `**/${ignore}`),
36
- cwd: '/'
37
- }))
38
- ]
39
- });
40
- });
61
+ $beforeSend: // Store a sitemap for just this source
62
+ function $beforeSend(mutableFilesystem, param) {
63
+ var config = param.config, ignorePages = param.ignorePages;
64
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
65
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
66
+ while(1)switch(_ctx.prev = _ctx.next){
67
+ case 0:
68
+ _ctx.t0 = config;
69
+ _ctx.next = 3;
70
+ return mutableFilesystem.promises.glob("**", {
71
+ onlyFiles: true,
72
+ ignore: ignorePages.map(function(ignore) {
73
+ return "**/".concat(ignore);
74
+ }),
75
+ cwd: "/"
76
+ });
77
+ case 3:
78
+ _ctx.t1 = _ctx.sent;
79
+ _ctx.t2 = [
80
+ _ctx.t1
81
+ ];
82
+ _ctx.t3 = {
83
+ sitemaps: _ctx.t2
84
+ };
85
+ _ctx.t0.setData.call(_ctx.t0, _ctx.t3);
86
+ case 7:
87
+ case "end":
88
+ return _ctx.stop();
89
+ }
90
+ }, _callee);
91
+ }))();
41
92
  }
42
93
  };
43
- exports.default = SiteMapPlugin;
94
+ export default SiteMapPlugin;
95
+
44
96
  //# sourceMappingURL=SiteMapPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SiteMapPlugin.js","sourceRoot":"","sources":["../src/SiteMapPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,MAAM,aAAa,GAA6C;IAC9D,iEAAiE;IAC3D,WAAW,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE;;YACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC9C,OAAO;aACR;YACD,MAAM,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CACvC,cAAc,EACd,gEAAgE;gBAC9D,YAAY,CAAC,IAAI,CAAC,QAAQ;qBACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CACX,KAAK;qBACF,GAAG,CACF,IAAI,CAAC,EAAE,CACL,qBAAqB,MAAM,CACzB,IAAI,CACL,qFAAqF,CACzF;qBACA,IAAI,CAAC,IAAI,CAAC,CACd;qBACA,IAAI,CAAC,EAAE,CAAC;gBACX,aAAa,CAChB,CAAC;QACJ,CAAC;KAAA;IACD,uCAAuC;IACjC,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO;;YACnE,MAAM,CAAC,OAAO,CAAC;gBACb,QAAQ,EAAE;oBACR,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;wBAC3C,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC;wBACjD,GAAG,EAAE,GAAG;qBACT,CAAC,CAAa;iBAChB;aACF,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC;AAEF,kBAAe,aAAa,CAAC"}
1
+ {"version":3,"sources":["../src/SiteMapPlugin.ts"],"sourcesContent":["import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';\n\ninterface SiteMapPluginConfigData {\n sitemaps: Array<string[]>;\n}\n\nconst SiteMapPlugin: PluginType<Page, unknown, SiteMapPluginConfigData, SiteMapPluginConfigData> = {\n // Merge together all of the individual sitemaps from each source\n async afterUpdate(_, { sharedFilesystem, globalConfig }) {\n if (!Array.isArray(globalConfig.data.sitemaps)) {\n return;\n }\n\n const urls = globalConfig.data.sitemaps.map(items =>\n items\n .map(\n item =>\n `\\t<url>\\n\\t\\t<loc>${String(\n item\n )}</loc>\\n\\t\\t<changefreq>weekly</changefreq>\\n\\t\\t<priority>0.5</priority>\\n\\t</url>`\n )\n .join('\\n')\n );\n\n const urlSet = `<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\\n ${urls}\\n\\n</urlset>`;\n await sharedFilesystem.promises.writeFile('/sitemap.xml', urlSet);\n },\n // Store a sitemap for just this source\n async $beforeSend(mutableFilesystem, { config, ignorePages }) {\n config.setData({\n sitemaps: [\n (await mutableFilesystem.promises.glob('**', {\n onlyFiles: true,\n ignore: ignorePages.map(ignore => `**/${ignore}`),\n cwd: '/'\n })) as Array<string>\n ]\n });\n }\n};\n\nexport default SiteMapPlugin;\n"],"names":["SiteMapPlugin","afterUpdate","_","sharedFilesystem","globalConfig","urls","urlSet","Array","isArray","data","sitemaps","map","items","item","String","join","promises","writeFile","$beforeSend","mutableFilesystem","config","ignorePages","glob","onlyFiles","ignore","cwd","setData"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,aAAa,GAAgF;IAE3FC,WAAW,EADjB,iEAAiE;IACjE,SAAMA,WAAW,CAACC,CAAC,EAAE,KAAkC;YAAhCC,gBAAgB,GAAlB,KAAkC,CAAhCA,gBAAgB,EAAEC,YAAY,GAAhC,KAAkC,CAAdA,YAAY;eAAI,wDAAA,mBAAA;gBAKjDC,IAAI,EAWJC,MAAM;;;;4BAfPC,KAAK,CAACC,OAAO,CAACJ,YAAY,CAACK,IAAI,CAACC,QAAQ,CAAC;;;;;;wBAIxCL,IAAI,GAAGD,YAAY,CAACK,IAAI,CAACC,QAAQ,CAACC,GAAG,CAACC,SAAAA,KAAK;mCAC/CA,KAAK,CACFD,GAAG,CACFE,SAAAA,IAAI;uCACF,AAAC,iBAAkB,CAEjB,MAAmF,CAFhEC,MAAM,CACzBD,IAAI,CACL,EAAC,gFAAmF,CAAC;6BAAA,CACzF,CACAE,IAAI,CAAC,IAAI,CAAC;yBAAA,CACd,CAAC;wBAEIT,MAAM,GAAG,AAAC,iEAA+D,CAAO,MAAa,CAAlBD,IAAI,EAAC,eAAa,CAAC,CAAC;;+BAC/FF,gBAAgB,CAACa,QAAQ,CAACC,SAAS,CAAC,cAAc,EAAEX,MAAM,CAAC;;;;;;SAClE,EAAA;KAAA;IAEKY,WAAW,EADjB,uCAAuC;IACvC,SAAMA,WAAW,CAACC,iBAAiB,EAAE,KAAuB;YAArBC,MAAM,GAAR,KAAuB,CAArBA,MAAM,EAAEC,WAAW,GAArB,KAAuB,CAAbA,WAAW;eAAI,wDAAA,mBAAA;;;;kCAC5DD,MAAM;;+BAEKD,iBAAiB,CAACH,QAAQ,CAACM,IAAI,CAAC,IAAI,EAAE;4BAC3CC,SAAS,EAAE,IAAI;4BACfC,MAAM,EAAEH,WAAW,CAACV,GAAG,CAACa,SAAAA,MAAM;uCAAI,AAAC,KAAG,CAAS,MAAA,CAAPA,MAAM,CAAE;6BAAA,CAAC;4BACjDC,GAAG,EAAE,GAAG;yBACT,CAAC;;;kCALM;;yBAMT;kCAPY;4BACbf,QAAQ;yBAOT;wBARDU,QAAOM,OAAO,uBAQZ,CAAA;;;;;;SACH,EAAA;KAAA;CACF,AAAC;AAEF,eAAe1B,aAAa,CAAC"}