@jpmorganchase/mosaic-plugins 0.1.0-beta.22 → 0.1.0-beta.24
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.
- package/dist/$AliasPlugin.js +1 -1
- package/dist/$AliasPlugin.js.map +1 -1
- package/dist/SearchIndexPlugin.d.ts +3 -2
- package/dist/SearchIndexPlugin.js +33 -10
- package/dist/SearchIndexPlugin.js.map +1 -1
- package/dist/SharedConfigPlugin.js +1 -1
- package/dist/SharedConfigPlugin.js.map +1 -1
- package/dist/SidebarPlugin.js +32 -45
- package/dist/SidebarPlugin.js.map +1 -1
- package/dist/TableOfContentsPlugin.js +10 -1
- package/dist/TableOfContentsPlugin.js.map +1 -1
- package/package.json +9 -8
package/dist/$AliasPlugin.js
CHANGED
|
@@ -34,7 +34,7 @@ const $AliasPlugin = {
|
|
|
34
34
|
}
|
|
35
35
|
for (const fullPath in config.data.aliases) {
|
|
36
36
|
for (const alias of config.data.aliases[fullPath]) {
|
|
37
|
-
const aliasPath = path.resolve(path.dirname(fullPath), alias).toLowerCase();
|
|
37
|
+
const aliasPath = path.posix.resolve(path.dirname(fullPath), alias).toLowerCase();
|
|
38
38
|
const aliasDir = path.dirname(aliasPath);
|
|
39
39
|
if (!(await mutableFilesystem.promises.exists(aliasDir))) {
|
|
40
40
|
await mutableFilesystem.promises.mkdir(aliasDir, {
|
package/dist/$AliasPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$AliasPlugin.js","sourceRoot":"","sources":["../src/$AliasPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,SAAS,cAAc,CAAC,WAAW,EAAE,cAAc;IACjD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,EAAE,CACZ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAMD;;;GAGG;AACH,MAAM,YAAY,GAAgC;IAChD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEpE,kGAAkG;QAClG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACnC,SAAS;aACV;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAChD;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE;QAC7C,sGAAsG;QACtG,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YACxB,OAAO;SACR;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"$AliasPlugin.js","sourceRoot":"","sources":["../src/$AliasPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,SAAS,cAAc,CAAC,WAAW,EAAE,cAAc;IACjD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,EAAE,CACZ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAMD;;;GAGG;AACH,MAAM,YAAY,GAAgC;IAChD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEpE,kGAAkG;QAClG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACnC,SAAS;aACV;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAChD;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE;QAC7C,sGAAsG;QACtG,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YACxB,OAAO;SACR;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;oBACxD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;wBAC/C,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;oBACzD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC/D;qBAAM;oBACL,OAAO,CAAC,IAAI,CACV,UAAU,SAAS,2GAA2G,CAC/H,CAAC;iBACH;aACF;SACF;IACH,CAAC;CACF,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -3,10 +3,11 @@ interface SearchIndexPluginOptions {
|
|
|
3
3
|
maxLineLength?: number;
|
|
4
4
|
maxLineCount?: number;
|
|
5
5
|
keys?: string[];
|
|
6
|
+
disabled?: boolean;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
|
-
* Creates a search-data.json file that contains all the information
|
|
9
|
-
* to generate a search index
|
|
9
|
+
* Creates a search-data.json file that contains all the information
|
|
10
|
+
* from each page that is required to generate a search index.
|
|
10
11
|
*/
|
|
11
12
|
declare const SearchIndexPlugin: PluginType<Page, SearchIndexPluginOptions>;
|
|
12
13
|
export default SearchIndexPlugin;
|
|
@@ -42,11 +42,16 @@ const optimizeContentForSearch = async ({ content, title, maxLineLength, maxLine
|
|
|
42
42
|
return sentences;
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
45
|
-
* Creates a search-data.json file that contains all the information
|
|
46
|
-
* to generate a search index
|
|
45
|
+
* Creates a search-data.json file that contains all the information
|
|
46
|
+
* from each page that is required to generate a search index.
|
|
47
47
|
*/
|
|
48
48
|
const SearchIndexPlugin = {
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* For each source, parse the data we want to add to the search index and
|
|
51
|
+
* save it to the global config (to be saved to the filesystem later when
|
|
52
|
+
* all sources have been loaded).
|
|
53
|
+
*/
|
|
54
|
+
async $beforeSend(mutableFilesystem, { config, serialiser, ignorePages }, { maxLineLength, maxLineCount, keys }) {
|
|
50
55
|
const pages = await Promise.all((await mutableFilesystem.promises.glob('**', {
|
|
51
56
|
onlyFiles: true,
|
|
52
57
|
ignore: ignorePages.map(ignore => `**/${ignore}`),
|
|
@@ -62,17 +67,35 @@ const SearchIndexPlugin = {
|
|
|
62
67
|
maxLineLength,
|
|
63
68
|
maxLineCount
|
|
64
69
|
});
|
|
65
|
-
const
|
|
66
|
-
title: page.title,
|
|
67
|
-
content,
|
|
68
|
-
route: page.route
|
|
69
|
-
};
|
|
70
|
+
const required = { title: page.title, route: page.route };
|
|
70
71
|
if (keys && keys.length > 0) {
|
|
71
72
|
const extendedResults = keys.reduce((acc, key) => ({ ...acc, [key]: page[key] }), {});
|
|
72
|
-
return { ...
|
|
73
|
+
return { ...required, ...extendedResults };
|
|
73
74
|
}
|
|
74
|
-
return
|
|
75
|
+
return { ...required, content };
|
|
75
76
|
}));
|
|
77
|
+
/**
|
|
78
|
+
* Convert the searchData into an object where each page has a unique key (the
|
|
79
|
+
* route) so that the "merge" in `config.setData()` will correctly combine all
|
|
80
|
+
* the results from multiple sources.
|
|
81
|
+
*/
|
|
82
|
+
const searchDataKeyedByRoute = searchData.reduce((acc, curr) => ({
|
|
83
|
+
...acc,
|
|
84
|
+
[curr.route]: curr
|
|
85
|
+
}), {});
|
|
86
|
+
config.setData({
|
|
87
|
+
searchIndices: searchDataKeyedByRoute
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Once we have all the sources' search data added to `globalConfig`, convert it
|
|
92
|
+
* to JSON and save it to the filesystem.
|
|
93
|
+
*/
|
|
94
|
+
async afterUpdate(_, { sharedFilesystem, globalConfig }) {
|
|
95
|
+
if (!globalConfig.data.searchIndices)
|
|
96
|
+
return;
|
|
97
|
+
const globalSearchIndices = globalConfig.data.searchIndices;
|
|
98
|
+
const searchData = Object.values(globalSearchIndices);
|
|
76
99
|
await sharedFilesystem.promises.writeFile('/search-data.json', JSON.stringify(searchData));
|
|
77
100
|
}
|
|
78
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchIndexPlugin.js","sourceRoot":"","sources":["../src/SearchIndexPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchIndexPlugin.js","sourceRoot":"","sources":["../src/SearchIndexPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const SharedConfigPlugin = {
|
|
|
24
24
|
await mutableFilesystem.promises.writeFile(sharedConfigFile, '{}');
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
|
-
const baseDir = path.resolve(path.dirname(String(pagePath)), '../');
|
|
27
|
+
const baseDir = path.posix.resolve(path.dirname(String(pagePath)), '../');
|
|
28
28
|
config.setAliases(path.join(baseDir, options.filename), [sharedConfigFile]);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharedConfigPlugin.js","sourceRoot":"","sources":["../src/SharedConfigPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,SAAS,cAAc,CAAC,GAAG,EAAE,cAAc;IACzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC;IACD,OAAO,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,CAAC;AAUD;;;GAGG;AACH,MAAM,kBAAkB,GAAkE;IACxF,KAAK,CAAC,WAAW,CACf,iBAAiB,EACjB,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,EACnD,OAAO;QAEP,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CACrD,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,EAC1C;YACE,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,GAAG,EAAE,GAAG;SACT,CACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAErF,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CACvC,MAAM,CAAC,QAAQ,CAAC,EAChB,MAAM,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC5D,CAAC;YACF,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACzF,MAAM,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aACpE;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SharedConfigPlugin.js","sourceRoot":"","sources":["../src/SharedConfigPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,SAAS,cAAc,CAAC,GAAG,EAAE,cAAc;IACzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC;IACD,OAAO,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,CAAC;AAUD;;;GAGG;AACH,MAAM,kBAAkB,GAAkE;IACxF,KAAK,CAAC,WAAW,CACf,iBAAiB,EACjB,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,EACnD,OAAO;QAEP,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CACrD,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,EAC1C;YACE,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,GAAG,EAAE,GAAG;SACT,CACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAErF,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CACvC,MAAM,CAAC,QAAQ,CAAC,EAChB,MAAM,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC5D,CAAC;YACF,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACzF,MAAM,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aACpE;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE1E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;aAC7E;SACF;IACH,CAAC;CACF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
package/dist/SidebarPlugin.js
CHANGED
|
@@ -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
|
-
//
|
|
5
|
-
const
|
|
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));
|
|
@@ -12,18 +11,6 @@ function createFileGlob(patterns, pageExtensions) {
|
|
|
12
11
|
}
|
|
13
12
|
return `${patterns}{${pageExtensions.join(',')}}`;
|
|
14
13
|
}
|
|
15
|
-
function sortPagesByPriority(pageA, pageB, dirName) {
|
|
16
|
-
// Always pin /index to the front
|
|
17
|
-
const route = `${dirName}/index`;
|
|
18
|
-
if (pageA.route === route) {
|
|
19
|
-
return -1;
|
|
20
|
-
}
|
|
21
|
-
if (pageB.route === route) {
|
|
22
|
-
return 1;
|
|
23
|
-
}
|
|
24
|
-
return ((pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) -
|
|
25
|
-
(pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1));
|
|
26
|
-
}
|
|
27
14
|
function getPageLevel(page) {
|
|
28
15
|
return page.route.split('/').length - 2;
|
|
29
16
|
}
|
|
@@ -32,10 +19,6 @@ function sortByPathLevel(pathA, pathB) {
|
|
|
32
19
|
const pathBLevel = pathB.split('/').length;
|
|
33
20
|
return pathBLevel - pathALevel;
|
|
34
21
|
}
|
|
35
|
-
function filterPages(page) {
|
|
36
|
-
return (!(page.sidebar && page.sidebar.exclude) &&
|
|
37
|
-
sidebarDataLayoutSchema.safeParse(page.layout).success);
|
|
38
|
-
}
|
|
39
22
|
/**
|
|
40
23
|
* Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
|
|
41
24
|
* sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
|
|
@@ -51,9 +34,6 @@ const SidebarPlugin = {
|
|
|
51
34
|
cwd: String(dirName),
|
|
52
35
|
ignore: ignorePages.map(ignore => `**/${ignore}`)
|
|
53
36
|
})).map(async (pagePath) => await serialiser.deserialise(pagePath, await mutableFilesystem.promises.readFile(pagePath))));
|
|
54
|
-
pageList = pageList
|
|
55
|
-
.filter(page => filterPages(page))
|
|
56
|
-
.sort((pageA, pageB) => sortPagesByPriority(pageA, pageB, dirName));
|
|
57
37
|
return pageList;
|
|
58
38
|
}
|
|
59
39
|
/**
|
|
@@ -63,11 +43,18 @@ const SidebarPlugin = {
|
|
|
63
43
|
function createGroupMap(pages) {
|
|
64
44
|
return pages.reduce((result, page) => {
|
|
65
45
|
const name = page.sidebar?.label || page.title;
|
|
46
|
+
const priority = page.sidebar?.priority;
|
|
66
47
|
const id = page.route;
|
|
67
48
|
const isGroup = /\/index$/.test(page.route);
|
|
68
49
|
const groupPath = path.posix.dirname(page.fullPath);
|
|
69
50
|
const level = getPageLevel(page);
|
|
70
|
-
const newChildNode = {
|
|
51
|
+
const newChildNode = {
|
|
52
|
+
id,
|
|
53
|
+
name,
|
|
54
|
+
priority,
|
|
55
|
+
data: { level, link: page.route },
|
|
56
|
+
childNodes: []
|
|
57
|
+
};
|
|
71
58
|
if (isGroup) {
|
|
72
59
|
result[groupPath] = {
|
|
73
60
|
...newChildNode,
|
|
@@ -110,40 +97,40 @@ const SidebarPlugin = {
|
|
|
110
97
|
* Link each page to a sidebar.json file via ref
|
|
111
98
|
* @param pages - sidebar pages
|
|
112
99
|
* @param dirName - root path of sidebar
|
|
113
|
-
* @param maxLevel - max level
|
|
114
100
|
*/
|
|
115
|
-
function addSidebarDataToFrontmatter(pages, dirName
|
|
101
|
+
function addSidebarDataToFrontmatter(pages, dirName) {
|
|
116
102
|
pages.forEach(page => {
|
|
117
|
-
|
|
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
|
-
}
|
|
103
|
+
config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path.posix.join(dirName, options.filename, '#', 'pages'));
|
|
124
104
|
});
|
|
125
105
|
}
|
|
126
106
|
const rootUserJourneys = await mutableFilesystem.promises.glob('**', {
|
|
127
107
|
onlyDirectories: true,
|
|
128
108
|
cwd: '/',
|
|
129
|
-
deep:
|
|
109
|
+
deep: sidebarRootLevel
|
|
130
110
|
});
|
|
111
|
+
const removeExcludedPages = page => !(page.sidebar && page.sidebar.exclude);
|
|
112
|
+
function sortPagesByPriority(sidebarData) {
|
|
113
|
+
const pagesByPriority = sidebarData.map(page => {
|
|
114
|
+
if (page.childNodes.length > 1) {
|
|
115
|
+
const pagesByPriority = page.childNodes.sort((pageA, pageB) => (pageB.priority ? pageB.priority : -1) - (pageA.priority ? pageA.priority : -1));
|
|
116
|
+
sortPagesByPriority(page.childNodes);
|
|
117
|
+
return { ...page, childNodes: pagesByPriority };
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return page;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return pagesByPriority;
|
|
124
|
+
}
|
|
131
125
|
await Promise.all(rootUserJourneys.map(async (dirName) => {
|
|
132
126
|
const sidebarFilePath = path.posix.join(String(dirName), options.filename);
|
|
133
|
-
|
|
127
|
+
let pages = await createPageList(dirName);
|
|
128
|
+
pages = pages.filter(page => removeExcludedPages(page));
|
|
134
129
|
const groupMap = createGroupMap(pages);
|
|
135
130
|
const sidebarData = linkGroupMap(groupMap, dirName);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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);
|
|
131
|
+
const pagesByPriority = sortPagesByPriority(sidebarData);
|
|
132
|
+
await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: pagesByPriority }));
|
|
133
|
+
addSidebarDataToFrontmatter(pages, dirName);
|
|
147
134
|
}));
|
|
148
135
|
}
|
|
149
136
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,
|
|
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
|
|
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,
|
|
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.
|
|
3
|
+
"version": "0.1.0-beta.24",
|
|
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
|
+
"node": "^14.18.0 || >=16.10.0 || >=18.0.0"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist"
|
|
@@ -25,18 +25,19 @@
|
|
|
25
25
|
},
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
|
28
|
-
"url": "git@github.com:jpmorganchase/mosaic.git"
|
|
28
|
+
"url": "git@github.com:jpmorganchase/mosaic.git",
|
|
29
|
+
"directory": "packages/plugins"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@types/fs-extra": "^9.0.13"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
34
35
|
"@apidevtools/json-schema-ref-parser": "^9.0.9",
|
|
35
|
-
"@jpmorganchase/mosaic-schemas": "^0.1.0-beta.
|
|
36
|
-
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.
|
|
37
|
-
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.
|
|
38
|
-
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.
|
|
39
|
-
"@jpmorganchase/mosaic-types": "^0.1.0-beta.
|
|
36
|
+
"@jpmorganchase/mosaic-schemas": "^0.1.0-beta.24",
|
|
37
|
+
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.24",
|
|
38
|
+
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.24",
|
|
39
|
+
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.24",
|
|
40
|
+
"@jpmorganchase/mosaic-types": "^0.1.0-beta.24",
|
|
40
41
|
"@types/github-slugger": "^1.3.0",
|
|
41
42
|
"@vcarl/remark-headings": "^0.1.0",
|
|
42
43
|
"fs-extra": "^10.1.0",
|