@jpmorganchase/mosaic-plugins 0.1.0-beta.22 → 0.1.0-beta.23

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.
@@ -1,8 +1,7 @@
1
1
  import path from 'path';
2
- import { sidebarDataLayoutSchema } from '@jpmorganchase/mosaic-schemas';
3
2
  import { cloneDeep } from 'lodash-es';
4
- // What level the sidebar.json files are created
5
- const UserJourneyRootLevel = 2;
3
+ // Which level does sidebar creation start
4
+ const sidebarRootLevel = 1;
6
5
  function createFileGlob(patterns, pageExtensions) {
7
6
  if (Array.isArray(patterns)) {
8
7
  return patterns.map(pattern => createFileGlob(pattern, pageExtensions));
@@ -32,10 +31,7 @@ function sortByPathLevel(pathA, pathB) {
32
31
  const pathBLevel = pathB.split('/').length;
33
32
  return pathBLevel - pathALevel;
34
33
  }
35
- function filterPages(page) {
36
- return (!(page.sidebar && page.sidebar.exclude) &&
37
- sidebarDataLayoutSchema.safeParse(page.layout).success);
38
- }
34
+ const filterPages = page => !(page.sidebar && page.sidebar.exclude);
39
35
  /**
40
36
  * Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
41
37
  * sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
@@ -63,11 +59,18 @@ const SidebarPlugin = {
63
59
  function createGroupMap(pages) {
64
60
  return pages.reduce((result, page) => {
65
61
  const name = page.sidebar?.label || page.title;
62
+ const priority = page.sidebar?.priority;
66
63
  const id = page.route;
67
64
  const isGroup = /\/index$/.test(page.route);
68
65
  const groupPath = path.posix.dirname(page.fullPath);
69
66
  const level = getPageLevel(page);
70
- const newChildNode = { id, name, data: { level, link: page.route }, childNodes: [] };
67
+ const newChildNode = {
68
+ id,
69
+ name,
70
+ priority,
71
+ data: { level, link: page.route },
72
+ childNodes: []
73
+ };
71
74
  if (isGroup) {
72
75
  result[groupPath] = {
73
76
  ...newChildNode,
@@ -110,40 +113,38 @@ const SidebarPlugin = {
110
113
  * Link each page to a sidebar.json file via ref
111
114
  * @param pages - sidebar pages
112
115
  * @param dirName - root path of sidebar
113
- * @param maxLevel - max level
114
116
  */
115
- function addSidebarDataToFrontmatter(pages, dirName, maxLevel = Infinity) {
117
+ function addSidebarDataToFrontmatter(pages, dirName) {
116
118
  pages.forEach(page => {
117
- const pageLevel = getPageLevel(page);
118
- // A page can only have one sidebar but different levels have different sidebars
119
- // this enables us to support a root index that contains all pages
120
- if (pageLevel <= maxLevel) {
121
- // set Ref for pages below root and not above root
122
- config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path.posix.join(dirName, options.filename, '#', 'pages'));
123
- }
119
+ config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path.posix.join(dirName, options.filename, '#', 'pages'));
124
120
  });
125
121
  }
126
122
  const rootUserJourneys = await mutableFilesystem.promises.glob('**', {
127
123
  onlyDirectories: true,
128
124
  cwd: '/',
129
- deep: UserJourneyRootLevel
125
+ deep: sidebarRootLevel
130
126
  });
127
+ //Map into Sidebar Groups and sort children according to priority, priority = 1 has the highest priority
128
+ function sortSidebarGroups(sidebarData) {
129
+ const sortedGroupedPages = sidebarData.map(page => {
130
+ if (page.childNodes) {
131
+ const sortedPages = page.childNodes.sort((a, b) => b.priority - a.priority);
132
+ return { ...page, childNodes: sortedPages };
133
+ }
134
+ else {
135
+ page;
136
+ }
137
+ });
138
+ return sortedGroupedPages;
139
+ }
131
140
  await Promise.all(rootUserJourneys.map(async (dirName) => {
132
141
  const sidebarFilePath = path.posix.join(String(dirName), options.filename);
133
142
  const pages = await createPageList(dirName);
134
143
  const groupMap = createGroupMap(pages);
135
144
  const sidebarData = linkGroupMap(groupMap, dirName);
136
- await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: sidebarData }));
137
- const dirNameLevel = dirName.split('/').length - 1;
138
- let maxLevel;
139
- // Add the sidebar frontmatter to each page, via ref
140
- // e.g /mosaic/docs/sidebar.json -> /mosaic/docs/index.mdx
141
- // The root directory contains it's own sidebar.json with everything inside it
142
- // /mosaic/sidebar.json > /mosaic/index.mdx
143
- if (dirNameLevel < UserJourneyRootLevel) {
144
- maxLevel = UserJourneyRootLevel - 1;
145
- }
146
- addSidebarDataToFrontmatter(pages, dirName, maxLevel);
145
+ const sidebarDataOrdered = sortSidebarGroups(sidebarData);
146
+ await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: sidebarDataOrdered }));
147
+ addSidebarDataToFrontmatter(pages, dirName);
147
148
  }));
148
149
  }
149
150
  };
@@ -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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"}
@@ -3,6 +3,15 @@ import remarkParse from 'remark-parse';
3
3
  import { unified } from 'unified';
4
4
  import remarkStringify from 'remark-stringify';
5
5
  import remarkHeadings from '@vcarl/remark-headings';
6
+ const getValue = (path, obj) => path.split('.').reduce((acc, c) => acc && acc[c], obj);
7
+ const parsePageHeading = (page, heading) => {
8
+ let parsedHeading = heading.trim();
9
+ if (parsedHeading.indexOf('{meta') === 0) {
10
+ const metaPath = parsedHeading.replace(/^{meta\./, '').replace(/\}$/, '');
11
+ parsedHeading = getValue(metaPath, page).trim();
12
+ }
13
+ return parsedHeading;
14
+ };
6
15
  /**
7
16
  * Calculates table of contents from page headings
8
17
  */
@@ -17,7 +26,7 @@ const TableOfContentsPlugin = {
17
26
  const items = headings
18
27
  .filter(heading => heading.depth >= minRank && heading.depth <= maxRank)
19
28
  .map(validHeading => {
20
- const text = validHeading.value.trim();
29
+ const text = parsePageHeading(page, validHeading.value);
21
30
  return {
22
31
  level: validHeading.depth,
23
32
  id: slugger.slug(text),
@@ -1 +1 @@
1
- {"version":3,"file":"TableOfContentsPlugin.js","sourceRoot":"","sources":["../src/TableOfContentsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AAcpD;;GAEG;AACH,MAAM,qBAAqB,GAAwE;IACjG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAA8C,CAAC;gBAC3E,MAAM,KAAK,GAAc,QAAQ;qBAC9B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;qBACvE,GAAG,CAAC,YAAY,CAAC,EAAE;oBAClB,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvC,OAAO;wBACL,KAAK,EAAE,YAAY,CAAC,KAAK;wBACzB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;wBACtB,IAAI;qBACL,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACL,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"TableOfContentsPlugin.js","sourceRoot":"","sources":["../src/TableOfContentsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AAcpD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvF,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACzC,IAAI,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1E,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KACjD;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAwE;IACjG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAA8C,CAAC;gBAC3E,MAAM,KAAK,GAAc,QAAQ;qBAC9B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;qBACvE,GAAG,CAAC,YAAY,CAAC,EAAE;oBAClB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;oBACxD,OAAO;wBACL,KAAK,EAAE,YAAY,CAAC,KAAK;wBACzB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;wBACtB,IAAI;qBACL,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACL,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jpmorganchase/mosaic-plugins",
3
- "version": "0.1.0-beta.22",
3
+ "version": "0.1.0-beta.23",
4
4
  "author": "",
5
5
  "description": "Mosaic plugins for core file system",
6
6
  "license": "Apache-2.0",
@@ -13,7 +13,7 @@
13
13
  }
14
14
  },
15
15
  "engines": {
16
- "node": ">= 16.0.0"
16
+ "node": "^14.18.0 || >=16.10.0 || >=18.0.0"
17
17
  },
18
18
  "files": [
19
19
  "dist"
@@ -32,11 +32,11 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@apidevtools/json-schema-ref-parser": "^9.0.9",
35
- "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.22",
36
- "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.22",
37
- "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.22",
38
- "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.22",
39
- "@jpmorganchase/mosaic-types": "^0.1.0-beta.22",
35
+ "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.23",
36
+ "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.23",
37
+ "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.23",
38
+ "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.23",
39
+ "@jpmorganchase/mosaic-types": "^0.1.0-beta.23",
40
40
  "@types/github-slugger": "^1.3.0",
41
41
  "@vcarl/remark-headings": "^0.1.0",
42
42
  "fs-extra": "^10.1.0",