@jpmorganchase/mosaic-plugins 0.1.0-beta.9 → 0.1.0-beta.90

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 (81) hide show
  1. package/dist/$AliasPlugin.d.ts +10 -0
  2. package/dist/$AliasPlugin.js +34 -46
  3. package/dist/$AliasPlugin.js.map +1 -1
  4. package/dist/$CodeModPlugin.d.ts +7 -0
  5. package/dist/$CodeModPlugin.js +12 -28
  6. package/dist/$CodeModPlugin.js.map +1 -1
  7. package/dist/$RefPlugin.d.ts +31 -0
  8. package/dist/$RefPlugin.js +109 -108
  9. package/dist/$RefPlugin.js.map +1 -1
  10. package/dist/$TagPlugin.d.ts +28 -0
  11. package/dist/$TagPlugin.js +24 -44
  12. package/dist/$TagPlugin.js.map +1 -1
  13. package/dist/BreadcrumbsPlugin.d.ts +19 -0
  14. package/dist/BreadcrumbsPlugin.js +81 -37
  15. package/dist/BreadcrumbsPlugin.js.map +1 -1
  16. package/dist/BrokenLinksPlugin.d.ts +10 -0
  17. package/dist/BrokenLinksPlugin.js +80 -0
  18. package/dist/BrokenLinksPlugin.js.map +1 -0
  19. package/dist/DocumentAssetsPlugin.d.ts +28 -0
  20. package/dist/DocumentAssetsPlugin.js +144 -0
  21. package/dist/DocumentAssetsPlugin.js.map +1 -0
  22. package/dist/FragmentPlugin.d.ts +3 -0
  23. package/dist/FragmentPlugin.js +64 -0
  24. package/dist/FragmentPlugin.js.map +1 -0
  25. package/dist/LazyPagePlugin.d.ts +14 -0
  26. package/dist/LazyPagePlugin.js +45 -79
  27. package/dist/LazyPagePlugin.js.map +1 -1
  28. package/dist/PagesWithoutFileExtPlugin.d.ts +9 -0
  29. package/dist/PagesWithoutFileExtPlugin.js +14 -29
  30. package/dist/PagesWithoutFileExtPlugin.js.map +1 -1
  31. package/dist/PropsTablePlugin.d.ts +6 -0
  32. package/dist/PropsTablePlugin.js +88 -0
  33. package/dist/PropsTablePlugin.js.map +1 -0
  34. package/dist/PublicAssetsPlugin.d.ts +18 -0
  35. package/dist/PublicAssetsPlugin.js +27 -0
  36. package/dist/PublicAssetsPlugin.js.map +1 -0
  37. package/dist/ReadingTimePlugin.d.ts +10 -0
  38. package/dist/ReadingTimePlugin.js +39 -0
  39. package/dist/ReadingTimePlugin.js.map +1 -0
  40. package/dist/SearchIndexPlugin.d.ts +56 -0
  41. package/dist/SearchIndexPlugin.js +154 -0
  42. package/dist/SearchIndexPlugin.js.map +1 -0
  43. package/dist/SharedConfigPlugin.d.ts +14 -0
  44. package/dist/SharedConfigPlugin.js +124 -32
  45. package/dist/SharedConfigPlugin.js.map +1 -1
  46. package/dist/SidebarPlugin.d.ts +45 -0
  47. package/dist/SidebarPlugin.js +276 -87
  48. package/dist/SidebarPlugin.js.map +1 -1
  49. package/dist/SiteMapPlugin.d.ts +9 -0
  50. package/dist/SiteMapPlugin.js +20 -34
  51. package/dist/SiteMapPlugin.js.map +1 -1
  52. package/dist/TableOfContentsPlugin.d.ts +26 -0
  53. package/dist/TableOfContentsPlugin.js +67 -0
  54. package/dist/TableOfContentsPlugin.js.map +1 -0
  55. package/dist/utils/PluginError.d.ts +7 -0
  56. package/dist/utils/PluginError.js +13 -0
  57. package/dist/utils/PluginError.js.map +1 -0
  58. package/dist/utils/createPageTest.d.ts +1 -0
  59. package/dist/utils/createPageTest.js +8 -0
  60. package/dist/utils/createPageTest.js.map +1 -0
  61. package/dist/utils/mergePageContent.d.ts +16 -0
  62. package/dist/utils/mergePageContent.js +23 -0
  63. package/dist/utils/mergePageContent.js.map +1 -0
  64. package/dist/utils/normaliseRefs.d.ts +1 -0
  65. package/dist/utils/normaliseRefs.js +52 -69
  66. package/dist/utils/normaliseRefs.js.map +1 -1
  67. package/dist/utils/sortSidebarData.d.ts +29 -0
  68. package/dist/utils/sortSidebarData.js +47 -0
  69. package/dist/utils/sortSidebarData.js.map +1 -0
  70. package/package.json +45 -27
  71. package/CHANGELOG.md +0 -109
  72. package/dist/LocalFolderSavePlugin.js +0 -48
  73. package/dist/LocalFolderSavePlugin.js.map +0 -1
  74. package/dist/NextPrevPagePlugin.js +0 -63
  75. package/dist/NextPrevPagePlugin.js.map +0 -1
  76. package/dist/ReadingTimePlugin.mjs +0 -119
  77. package/dist/ReadingTimePlugin.mjs.map +0 -1
  78. package/dist/SearchIndexPlugin.mjs +0 -268
  79. package/dist/SearchIndexPlugin.mjs.map +0 -1
  80. package/dist/TableOfContentsPlugin.mjs +0 -131
  81. package/dist/TableOfContentsPlugin.mjs.map +0 -1
@@ -1,18 +1,7 @@
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"));
1
+ import path from 'path';
2
+ import { sidebarSortConfigSchema } from '@jpmorganchase/mosaic-schemas';
3
+ import { cloneDeep, escapeRegExp } from 'lodash-es';
4
+ import { isDataNode, isGroupNode, sortSidebarData } from './utils/sortSidebarData.js';
16
5
  function createFileGlob(patterns, pageExtensions) {
17
6
  if (Array.isArray(patterns)) {
18
7
  return patterns.map(pattern => createFileGlob(pattern, pageExtensions));
@@ -22,92 +11,292 @@ function createFileGlob(patterns, pageExtensions) {
22
11
  }
23
12
  return `${patterns}{${pageExtensions.join(',')}}`;
24
13
  }
25
- function isSubfolderIndex(page, dirName) {
26
- return page.fullPath.split('/').length === String(dirName).split('/').length + 2;
14
+ function getPageLevel(page) {
15
+ return page.route.split('/').length - 2;
27
16
  }
28
- function sortFn(pageA, pageB, dirName) {
29
- // Always pin /index to the front
30
- const route = `${dirName}/index`;
31
- if (pageA.route === route) {
32
- return -1;
33
- }
34
- if (pageB.route === route) {
35
- return 1;
36
- }
37
- return ((pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) -
38
- (pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1));
17
+ function sortByPathLevel(pathA, pathB) {
18
+ const pathALevel = pathA.split('/').length;
19
+ const pathBLevel = pathB.split('/').length;
20
+ return pathBLevel - pathALevel;
39
21
  }
40
- function filterFn(page) {
41
- return !(page.sidebar && page.sidebar.exclude);
22
+ /**
23
+ * Given the sharedSortConfig
24
+ * 1. find the field specified by 'field' in the sort config
25
+ * 2. transform the field value into the type specified by 'dataType'
26
+ * @param page
27
+ * @param sharedSortConfig
28
+ * @returns transformed field value
29
+ */
30
+ function getSortFieldData(page, sharedSortConfig) {
31
+ let fieldData;
32
+ if (sharedSortConfig !== undefined) {
33
+ const { field, dataType = 'string' } = sharedSortConfig;
34
+ field
35
+ .replace(/^(?:\.\.\/|\.\/)+/, '')
36
+ .split('/')
37
+ .forEach(part => {
38
+ const source = fieldData === undefined ? page : fieldData;
39
+ if (Object.prototype.hasOwnProperty.call(source, part)) {
40
+ fieldData = source[part];
41
+ }
42
+ });
43
+ switch (dataType) {
44
+ case 'date':
45
+ fieldData = new Date(fieldData).getTime(); // call getTime to convert to a number
46
+ break;
47
+ case 'string':
48
+ fieldData = String(fieldData);
49
+ break;
50
+ case 'number':
51
+ fieldData = Number(fieldData);
52
+ break;
53
+ default:
54
+ fieldData = String(fieldData);
55
+ }
56
+ }
57
+ return fieldData;
42
58
  }
59
+ const createPageTest = (ignorePages, pageExtensions) => {
60
+ const extTest = new RegExp(`${pageExtensions.map(ext => escapeRegExp(ext)).join('|')}$`);
61
+ const ignoreTest = new RegExp(`${ignorePages.map(ignore => escapeRegExp(ignore)).join('|')}$`);
62
+ return file => !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');
63
+ };
43
64
  /**
44
- * Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
65
+ * Directories create groups of pages, the index file within that group is assigned GROUP_DEFAULT_PRIORITY
66
+ * to ensure it comes first. This can be overriden by the metadata to move the position of the default page.
67
+ */
68
+ const GROUP_DEFAULT_PRIORITY = 999;
69
+ /**
70
+ * Sorts the pages in a folder by priority and then exports a JSON file with the
45
71
  * sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
72
+ *
73
+ * Additionally, add to frontmatter
74
+ * navigation -> prev -> { title, route }
75
+ * navigation -> next -> { title, route }
76
+ * to define the previous/next page in the page sequence, as defined by sidebar label and priority
46
77
  */
47
78
  const SidebarPlugin = {
48
- $beforeSend(mutableFilesystem, { config, serialiser, ignorePages, pageExtensions }, options) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- function setPageRefs(sidebarFilePath, page, i) {
51
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'id', '$ref'], `${page.fullPath}#/route`);
52
- const label = page.sidebar && page.sidebar.label
53
- ? `${page.fullPath}#/sidebar/label`
54
- : `${page.fullPath}#/title`;
55
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'name', '$ref'], label);
56
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'data', 'link', '$ref'], `${page.fullPath}#/route`);
79
+ async $afterSource(pages, { ignorePages = [], pageExtensions = [] }) {
80
+ for (const page of pages) {
81
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
82
+ if (!isNonHiddenPage(page.fullPath)) {
83
+ continue;
57
84
  }
58
- function setChildPageRefs(page, dirName, i, sidebarFilePath) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- if (isSubfolderIndex(page, dirName)) {
61
- const childDirName = path_1.default.posix.dirname(page.fullPath);
62
- const childNodeSidebarPath = path_1.default.posix.join(childDirName, options.filename);
63
- const childPages = (yield Promise.all((yield mutableFilesystem.promises.glob(createFileGlob(['*', '*/index'], pageExtensions), {
64
- onlyFiles: true,
65
- cwd: String(childDirName),
66
- ignore: ignorePages.map(ignore => `**/${ignore}`)
67
- })).map((pagePath) => __awaiter(this, void 0, void 0, function* () {
68
- const deserialisedPage = yield serialiser.deserialise(pagePath, yield mutableFilesystem.promises.readFile(pagePath));
69
- return deserialisedPage;
70
- })))).filter(filterPage => filterFn(filterPage));
71
- if (childPages.length > 1) {
72
- for (let j = 1; j < childPages.length; j++) {
73
- config.setRef(sidebarFilePath, ['pages', `${i}`, 'childNodes', `${j - 1}`, '$ref'], `${childNodeSidebarPath}#/pages/${j}`);
74
- }
75
- }
76
- }
85
+ let sidebar = {
86
+ label: page.title,
87
+ groupLabel: page?.sidebar?.label || page.title,
88
+ ...page?.sidebar
89
+ };
90
+ page.sidebar = sidebar;
91
+ }
92
+ return pages;
93
+ },
94
+ async $beforeSend(mutableFilesystem, { config, serialiser, ignorePages, pageExtensions }, { filename = 'sidebar.json', rootDirGlob = '*' }) {
95
+ /**
96
+ * Create a list of pages that should be used to build a sidebar.json
97
+ * @param dirName - root path of sidebar
98
+ */
99
+ async function createPageList(rootDir) {
100
+ const isChildOfRootDir = pagePath => {
101
+ const pageDir = path.dirname(pagePath);
102
+ return pageDir.indexOf(rootDir) === 0;
103
+ };
104
+ const pagePaths = (await mutableFilesystem.promises.glob(createFileGlob(['**'], pageExtensions), {
105
+ cwd: String(rootDir),
106
+ ignore: ignorePages.map(ignore => `**/${ignore}`)
107
+ }));
108
+ const filteredPagePaths = pagePaths.filter(isChildOfRootDir);
109
+ const pageList = await Promise.all(filteredPagePaths.map(async (pagePath) => {
110
+ return mutableFilesystem.promises.readFile(pagePath).then(serializedContent => {
111
+ return serialiser.deserialise(pagePath, serializedContent);
77
112
  });
113
+ }));
114
+ return pageList;
115
+ }
116
+ /**
117
+ * Group the pages into parent/child hierarchy
118
+ * @param pages - sidebar pages
119
+ */
120
+ function createGroupMap(pages) {
121
+ const sortConfigPages = {};
122
+ return pages.reduce((result, page) => {
123
+ const name = page.sidebar?.label || page.title;
124
+ const sharedSortConfig = page?.sharedConfig?.sidebar?.sort;
125
+ if (sharedSortConfig) {
126
+ try {
127
+ sidebarSortConfigSchema.parse(sharedSortConfig);
128
+ sortConfigPages[`${path.posix.dirname(page.fullPath)}`] = sharedSortConfig;
129
+ }
130
+ catch (e) {
131
+ /**
132
+ * Don't throw a PluginError here as this will stop the sidebar being generated.
133
+ * Plugins need a way to log errors/warnings without exceptions
134
+ */
135
+ console.error(`[Mosaic] SidebarPlugin - Invalid sidebar sort config found in ${page.fullPath}`);
136
+ }
137
+ }
138
+ const priority = page.sidebar?.priority;
139
+ const isGroupDefaultPage = /\/index$/.test(page.route);
140
+ const groupPath = path.posix.dirname(page.fullPath);
141
+ let newChildNode = {
142
+ id: page.route,
143
+ kind: 'data',
144
+ fullPath: page.fullPath,
145
+ name,
146
+ priority: isGroupDefaultPage ? priority || GROUP_DEFAULT_PRIORITY : priority,
147
+ data: { level: getPageLevel(page), link: page.route }
148
+ };
149
+ const currentChildNodes = Object.prototype.hasOwnProperty.call(result, groupPath)
150
+ ? result[groupPath].childNodes
151
+ : [];
152
+ let newGroupNode = {
153
+ ...result[groupPath],
154
+ id: path.posix.dirname(page.route),
155
+ kind: 'group',
156
+ childNodes: [...currentChildNodes, newChildNode]
157
+ };
158
+ if (isGroupDefaultPage) {
159
+ newGroupNode = {
160
+ ...newGroupNode,
161
+ name: page.sidebar?.groupLabel || name,
162
+ priority
163
+ };
164
+ }
165
+ if (!isGroupDefaultPage && sortConfigPages[groupPath] !== undefined) {
166
+ const fieldData = getSortFieldData(page, sortConfigPages[groupPath]);
167
+ newChildNode.sharedSortConfig = {
168
+ ...sortConfigPages[groupPath],
169
+ fieldData
170
+ };
171
+ }
172
+ result[groupPath] = newGroupNode;
173
+ return result;
174
+ }, {});
175
+ }
176
+ /**
177
+ * Link the group map to their parents
178
+ * @param groupMap - unlinked groups of pages
179
+ * @param dirName - root path of sidebar
180
+ */
181
+ function linkGroupMap(groupMap, dirName) {
182
+ const linkedGroupMap = cloneDeep(groupMap);
183
+ const sortedGroupMapKeys = Object.keys(linkedGroupMap).sort(sortByPathLevel);
184
+ sortedGroupMapKeys.forEach(groupPath => {
185
+ let parentGroupPath = path.posix.dirname(groupPath);
186
+ if (linkedGroupMap[parentGroupPath] === undefined) {
187
+ return;
188
+ }
189
+ linkedGroupMap[parentGroupPath].childNodes = [
190
+ ...linkedGroupMap[parentGroupPath].childNodes,
191
+ linkedGroupMap[groupPath]
192
+ ];
193
+ });
194
+ return [linkedGroupMap[dirName]];
195
+ }
196
+ /**
197
+ * Link each page to a sidebar.json file via ref
198
+ * @param pages - sidebar pages
199
+ * @param dirName - root path of sidebar
200
+ */
201
+ function addSidebarDataToFrontmatter(pages, dirName) {
202
+ pages.forEach(page => {
203
+ config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path.posix.join(dirName, filename, '#', 'pages'));
204
+ });
205
+ }
206
+ const createNavigationRefs = (rootDir, currPage, prevPage, nextPage) => {
207
+ if (prevPage) {
208
+ config.setRef(currPage, ['navigation', 'prev', 'title', '$ref'], `${prevPage}#/title`);
209
+ config.setRef(currPage, ['navigation', 'prev', 'route', '$ref'], `${prevPage}#/route`);
210
+ const parentPath = path.posix.dirname(prevPage);
211
+ if (parentPath !== rootDir) {
212
+ config.setRef(currPage, ['navigation', 'prev', 'group', '$ref'], `${parentPath}#/sidebar/groupLabel`);
213
+ }
78
214
  }
79
- function addSidebarDataToFrontmatter(page, dirName) {
80
- const dirNameLevels = String(dirName)
81
- .split('/')
82
- .filter(level => level);
83
- const sidebarRootDir = path_1.default.posix.join('/', ...dirNameLevels.slice(0, dirNameLevels.length < 3 ? dirNameLevels.length : 3), '/');
84
- config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path_1.default.posix.join(String(sidebarRootDir), options.filename, '#', 'pages'));
215
+ if (nextPage) {
216
+ config.setRef(currPage, ['navigation', 'next', 'title', '$ref'], `${nextPage}#/title`);
217
+ config.setRef(currPage, ['navigation', 'next', 'route', '$ref'], `${nextPage}#/route`);
218
+ const parentPath = path.posix.dirname(nextPage);
219
+ if (parentPath !== rootDir) {
220
+ config.setRef(currPage, ['navigation', 'next', 'group', '$ref'], `${parentPath}#/sidebar/groupLabel`);
221
+ }
85
222
  }
86
- const dirs = yield mutableFilesystem.promises.glob('**', {
87
- onlyDirectories: true,
88
- cwd: '/'
89
- });
90
- for (const dirName of dirs) {
91
- const sidebarFilePath = path_1.default.posix.join(String(dirName), options.filename);
92
- const pages = (yield Promise.all((yield mutableFilesystem.promises.glob(createFileGlob(['*', '*/index'], pageExtensions), {
93
- onlyFiles: true,
94
- cwd: String(dirName),
95
- ignore: ignorePages.map(ignore => `**/${ignore}`)
96
- })).map((pagePath) => __awaiter(this, void 0, void 0, function* () {
97
- const deserialisedPage = yield serialiser.deserialise(pagePath, yield mutableFilesystem.promises.readFile(pagePath));
98
- return deserialisedPage;
99
- }))))
100
- .filter(page => filterFn(page))
101
- .sort((pageA, pageB) => sortFn(pageA, pageB, dirName));
102
- for (let i = 0; i < pages.length; i++) {
103
- setPageRefs(sidebarFilePath, pages[i], i);
104
- setChildPageRefs(pages[i], dirName, i, sidebarFilePath);
105
- addSidebarDataToFrontmatter(pages[i], dirName);
223
+ };
224
+ function addNavigationToFrontmatter(pages, rootDir) {
225
+ const getRelativeDataNode = (node, position) => {
226
+ let targetNode = node;
227
+ if (isGroupNode(node)) {
228
+ targetNode = node.childNodes[position === 'previous' ? node.childNodes.length - 1 : 0];
106
229
  }
107
- yield mutableFilesystem.promises.writeFile(sidebarFilePath, '[]');
230
+ return isGroupNode(targetNode) ? getRelativeDataNode(targetNode, position) : targetNode;
231
+ };
232
+ const isLastPage = page => {
233
+ const lastPage = getRelativeDataNode(pages, 'previous');
234
+ return page === lastPage;
235
+ };
236
+ let prevParentPage = [];
237
+ let nextParentPage = [];
238
+ function recursiveAddNavigation(pages) {
239
+ let nextPage, prevPage;
240
+ pages.forEach((page, pageIndex) => {
241
+ if (isLastPage(page)) {
242
+ nextPage = undefined;
243
+ }
244
+ else if (pageIndex === pages.length - 1) {
245
+ nextPage = nextParentPage.pop();
246
+ }
247
+ else {
248
+ nextPage = getRelativeDataNode(pages[pageIndex + 1], 'next');
249
+ }
250
+ if (pageIndex === 0) {
251
+ prevPage = prevParentPage.pop();
252
+ }
253
+ else {
254
+ prevPage = getRelativeDataNode(pages[pageIndex - 1], 'previous');
255
+ }
256
+ if (isDataNode(page)) {
257
+ createNavigationRefs(rootDir, page.fullPath, prevPage?.fullPath, nextPage?.fullPath);
258
+ }
259
+ else {
260
+ if (nextPage) {
261
+ nextParentPage.push(nextPage);
262
+ }
263
+ if (prevPage) {
264
+ prevParentPage.push(prevPage);
265
+ }
266
+ recursiveAddNavigation(page.childNodes);
267
+ }
268
+ });
108
269
  }
270
+ recursiveAddNavigation(pages);
271
+ }
272
+ const rootUserJourneys = await mutableFilesystem.promises.glob(rootDirGlob, {
273
+ onlyDirectories: true,
274
+ extglob: true,
275
+ cwd: '/'
109
276
  });
277
+ const removeExcludedPages = page => !(page.sidebar && page.sidebar.exclude);
278
+ await Promise.all(rootUserJourneys.map(async (rootDir) => {
279
+ const sidebarFilePath = path.posix.join(String(rootDir), filename);
280
+ const pages = await createPageList(rootDir);
281
+ const includedPages = pages.filter(page => removeExcludedPages(page));
282
+ const groupMap = createGroupMap(includedPages);
283
+ const sidebarData = linkGroupMap(groupMap, rootDir);
284
+ if (sidebarData[0] === undefined) {
285
+ console.warn(`[Mosaic] SidebarPlugin - Unable to create a Sidebar grouping for ${rootDir}`);
286
+ console.log('[Mosaic] SidebarPlugin - likely you have a directory without an index file');
287
+ return;
288
+ }
289
+ const sortedRootSidebar = sortSidebarData(sidebarData);
290
+ addNavigationToFrontmatter(sortedRootSidebar, rootDir);
291
+ if (isGroupNode(sortedRootSidebar[0])) {
292
+ await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: sortedRootSidebar[0].childNodes }));
293
+ }
294
+ else {
295
+ console.warn(`[Mosaic] SidebarPlugin - Unable to sort Sidebar grouping for ${rootDir}`);
296
+ }
297
+ addSidebarDataToFrontmatter(pages, rootDir);
298
+ }));
110
299
  }
111
300
  };
112
- exports.default = SidebarPlugin;
301
+ export default SidebarPlugin;
113
302
  //# 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,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface SiteMapPluginConfigData {
3
+ sitemaps: Array<string[]>;
4
+ }
5
+ interface SiteMapPluginOptions {
6
+ siteUrl: string;
7
+ }
8
+ declare const SiteMapPlugin: PluginType<Page, SiteMapPluginOptions, SiteMapPluginConfigData, SiteMapPluginConfigData>;
9
+ export default SiteMapPlugin;
@@ -1,42 +1,28 @@
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 });
1
+ import path from 'path';
12
2
  const SiteMapPlugin = {
13
3
  // Merge together all of the individual sitemaps from each source
14
- afterUpdate(_, { sharedFilesystem, globalConfig }) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- if (!Array.isArray(globalConfig.data.sitemaps)) {
17
- return;
18
- }
19
- const urls = globalConfig.data.sitemaps.map(items => items
20
- .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>`)
21
- .join('\n'));
22
- const urlSet = `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n ${urls}\n\n</urlset>`;
23
- yield sharedFilesystem.promises.writeFile('/sitemap.xml', urlSet);
24
- });
4
+ async afterUpdate(_, { sharedFilesystem, globalConfig }, { siteUrl }) {
5
+ if (!Array.isArray(globalConfig.data.sitemaps)) {
6
+ return;
7
+ }
8
+ const urls = globalConfig.data.sitemaps.map(items => items
9
+ .map(item => `\t<url>\n\t\t<loc>${new URL(path.posix.join(path.posix.dirname(item), path.posix.basename(item, path.posix.extname(item))), siteUrl)}</loc>\n\t\t<changefreq>weekly</changefreq>\n\t\t<priority>0.5</priority>\n\t</url>`)
10
+ .join('\n'));
11
+ const urlSet = `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n ${urls}\n\n</urlset>`;
12
+ await sharedFilesystem.promises.writeFile('/sitemap.xml', urlSet);
25
13
  },
26
14
  // Store a sitemap for just this source
27
- $beforeSend(mutableFilesystem, { config, ignorePages }) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- config.setData({
30
- sitemaps: [
31
- (yield mutableFilesystem.promises.glob('**', {
32
- onlyFiles: true,
33
- ignore: ignorePages.map(ignore => `**/${ignore}`),
34
- cwd: '/'
35
- }))
36
- ]
37
- });
15
+ async $beforeSend(mutableFilesystem, { config, ignorePages }) {
16
+ config.setData({
17
+ sitemaps: [
18
+ (await mutableFilesystem.promises.glob('**', {
19
+ onlyFiles: true,
20
+ ignore: ignorePages.map(ignore => `**/${ignore}`),
21
+ cwd: '/'
22
+ }))
23
+ ]
38
24
  });
39
25
  }
40
26
  };
41
- exports.default = SiteMapPlugin;
27
+ export default SiteMapPlugin;
42
28
  //# sourceMappingURL=SiteMapPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SiteMapPlugin.js","sourceRoot":"","sources":["../src/SiteMapPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;AAMA,MAAM,aAAa,GAAgF;IACjG,iEAAiE;IAC3D,WAAW,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE;;YACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC9C,OAAO;aACR;YAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAClD,KAAK;iBACF,GAAG,CACF,IAAI,CAAC,EAAE,CACL,qBAAqB,MAAM,CACzB,IAAI,CACL,qFAAqF,CACzF;iBACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;YAEF,MAAM,MAAM,GAAG,kEAAkE,IAAI,eAAe,CAAC;YACrG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC;KAAA;IACD,uCAAuC;IACjC,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;;YAC1D,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,CAAkB;iBACrB;aACF,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC;AAEF,kBAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SiteMapPlugin.js","sourceRoot":"","sources":["../src/SiteMapPlugin.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,MAAM,aAAa,GAKf;IACF,iEAAiE;IACjE,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAClD,KAAK;aACF,GAAG,CACF,IAAI,CAAC,EAAE,CACL,qBAAqB,IAAI,GAAG,CAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACpD,EACD,OAAO,CACR,qFAAqF,CACzF;aACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QAEF,MAAM,MAAM,GAAG,kEAAkE,IAAI,eAAe,CAAC;QACrG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IACD,uCAAuC;IACvC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QAC1D,MAAM,CAAC,OAAO,CAAC;YACb,QAAQ,EAAE;gBACR,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC3C,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC;oBACjD,GAAG,EAAE,GAAG;iBACT,CAAC,CAAkB;aACrB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ import type { Heading as MarkdownHeading, Root } from 'mdast';
3
+ type TOCItem = {
4
+ level: number;
5
+ id: string;
6
+ text: string;
7
+ };
8
+ interface TableOfContentsPluginPage extends Page {
9
+ tableOfContents?: TOCItem[];
10
+ }
11
+ type Rank = MarkdownHeading['depth'];
12
+ interface TableOfContentsPluginOptions {
13
+ minRank: Rank;
14
+ maxRank: Rank;
15
+ }
16
+ interface Heading {
17
+ depth: number;
18
+ value: string;
19
+ data?: any;
20
+ }
21
+ export declare const getHeadings: (root: Root) => Heading[];
22
+ /**
23
+ * Calculates table of contents from page headings
24
+ */
25
+ declare const TableOfContentsPlugin: PluginType<TableOfContentsPluginPage, TableOfContentsPluginOptions>;
26
+ export default TableOfContentsPlugin;
@@ -0,0 +1,67 @@
1
+ import Slugger from 'github-slugger';
2
+ import remarkParse from 'remark-parse';
3
+ import { unified } from 'unified';
4
+ import remarkStringify from 'remark-stringify';
5
+ import { visit } from 'unist-util-visit';
6
+ import { toString } from 'mdast-util-to-string';
7
+ const getValue = (path, obj) => path.split('.').reduce((acc, c) => acc && acc[c], obj);
8
+ const parsePageHeading = (page, heading) => {
9
+ let parsedHeading = heading.trim();
10
+ if (parsedHeading.indexOf('{meta') === 0) {
11
+ const metaPath = parsedHeading.replace(/^{meta\./, '').replace(/\}$/, '');
12
+ parsedHeading = getValue(metaPath, page).trim();
13
+ }
14
+ return parsedHeading;
15
+ };
16
+ export const getHeadings = (root) => {
17
+ const headingList = [];
18
+ visit(root, 'heading', node => {
19
+ const heading = {
20
+ depth: node.depth,
21
+ value: toString(node, { includeImageAlt: false })
22
+ };
23
+ // Other remark plugins can store arbitrary data
24
+ // inside a node's `data` property, such as a
25
+ // custom heading id.
26
+ const data = node?.data;
27
+ if (data) {
28
+ heading.data = data;
29
+ }
30
+ headingList.push(heading);
31
+ });
32
+ return headingList;
33
+ };
34
+ const remarkHeadings = () => (tree, vfile) => {
35
+ // eslint-disable-next-line no-param-reassign
36
+ vfile.data.headings = getHeadings(tree);
37
+ };
38
+ /**
39
+ * Calculates table of contents from page headings
40
+ */
41
+ const TableOfContentsPlugin = {
42
+ async $afterSource(pages, _, { minRank, maxRank }) {
43
+ const processor = unified().use(remarkParse).use(remarkStringify).use(remarkHeadings);
44
+ for (const page of pages) {
45
+ const slugger = new Slugger();
46
+ if (page.content) {
47
+ const vfile = await processor.process(page.content);
48
+ const headings = vfile.data.headings;
49
+ const items = headings
50
+ .filter(heading => heading.depth >= minRank && heading.depth <= maxRank)
51
+ .map(validHeading => {
52
+ const text = parsePageHeading(page, validHeading.value);
53
+ return {
54
+ depth: validHeading.depth,
55
+ level: validHeading.depth - minRank,
56
+ id: slugger.slug(text),
57
+ text
58
+ };
59
+ });
60
+ page.tableOfContents = items;
61
+ }
62
+ }
63
+ return pages;
64
+ }
65
+ };
66
+ export default TableOfContentsPlugin;
67
+ //# sourceMappingURL=TableOfContentsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableOfContentsPlugin.js","sourceRoot":"","sources":["../src/TableOfContentsPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export default class PluginError extends Error {
2
+ fullPath: string;
3
+ lifecycleMethod: string;
4
+ pluginModulePath: string;
5
+ pluginName: string;
6
+ constructor(message: string, fullPath?: string);
7
+ }
@@ -0,0 +1,13 @@
1
+ export default class PluginError extends Error {
2
+ fullPath;
3
+ lifecycleMethod;
4
+ pluginModulePath;
5
+ pluginName;
6
+ constructor(message, fullPath) {
7
+ super(message);
8
+ this.name = 'PluginError';
9
+ this.fullPath = fullPath;
10
+ Object.setPrototypeOf(this, PluginError.prototype);
11
+ }
12
+ }
13
+ //# sourceMappingURL=PluginError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginError.js","sourceRoot":"","sources":["../../src/utils/PluginError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK;IAC5C,QAAQ,CAAS;IACjB,eAAe,CAAS;IACxB,gBAAgB,CAAS;IACzB,UAAU,CAAS;IACnB,YAAY,OAAe,EAAE,QAAiB;QAC5C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF"}