@jpmorganchase/mosaic-plugins 0.1.0-beta.23 → 0.1.0-beta.25
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.d.ts +5 -0
- package/dist/SidebarPlugin.js +64 -27
- package/dist/SidebarPlugin.js.map +1 -1
- package/package.json +8 -7
- package/dist/NextPrevPagePlugin.d.ts +0 -22
- package/dist/NextPrevPagePlugin.js +0 -50
- package/dist/NextPrevPagePlugin.js.map +0 -1
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.d.ts
CHANGED
|
@@ -19,6 +19,11 @@ interface SidebarPluginOptions {
|
|
|
19
19
|
/**
|
|
20
20
|
* Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
|
|
21
21
|
* sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
|
|
22
|
+
*
|
|
23
|
+
* Additionally, add to frontmatter
|
|
24
|
+
* navigation -> prev -> { title, route }
|
|
25
|
+
* navigation -> next -> { title, route }
|
|
26
|
+
* to define the previous/next page in the page sequence, as defined by sidebar label and priority
|
|
22
27
|
*/
|
|
23
28
|
declare const SidebarPlugin: PluginType<SidebarPluginPage, SidebarPluginOptions, SidebarPluginConfigData>;
|
|
24
29
|
export default SidebarPlugin;
|
package/dist/SidebarPlugin.js
CHANGED
|
@@ -11,18 +11,6 @@ function createFileGlob(patterns, pageExtensions) {
|
|
|
11
11
|
}
|
|
12
12
|
return `${patterns}{${pageExtensions.join(',')}}`;
|
|
13
13
|
}
|
|
14
|
-
function sortPagesByPriority(pageA, pageB, dirName) {
|
|
15
|
-
// Always pin /index to the front
|
|
16
|
-
const route = `${dirName}/index`;
|
|
17
|
-
if (pageA.route === route) {
|
|
18
|
-
return -1;
|
|
19
|
-
}
|
|
20
|
-
if (pageB.route === route) {
|
|
21
|
-
return 1;
|
|
22
|
-
}
|
|
23
|
-
return ((pageB.sidebar && pageB.sidebar.priority ? pageB.sidebar.priority : -1) -
|
|
24
|
-
(pageA.sidebar && pageA.sidebar.priority ? pageA.sidebar.priority : -1));
|
|
25
|
-
}
|
|
26
14
|
function getPageLevel(page) {
|
|
27
15
|
return page.route.split('/').length - 2;
|
|
28
16
|
}
|
|
@@ -31,10 +19,14 @@ function sortByPathLevel(pathA, pathB) {
|
|
|
31
19
|
const pathBLevel = pathB.split('/').length;
|
|
32
20
|
return pathBLevel - pathALevel;
|
|
33
21
|
}
|
|
34
|
-
const filterPages = page => !(page.sidebar && page.sidebar.exclude);
|
|
35
22
|
/**
|
|
36
23
|
* Sorts the pages in a folder by priority and then exports a JSON file (name: `options.filename`) with the
|
|
37
24
|
* sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
|
|
25
|
+
*
|
|
26
|
+
* Additionally, add to frontmatter
|
|
27
|
+
* navigation -> prev -> { title, route }
|
|
28
|
+
* navigation -> next -> { title, route }
|
|
29
|
+
* to define the previous/next page in the page sequence, as defined by sidebar label and priority
|
|
38
30
|
*/
|
|
39
31
|
const SidebarPlugin = {
|
|
40
32
|
async $beforeSend(mutableFilesystem, { config, serialiser, ignorePages, pageExtensions }, options) {
|
|
@@ -47,9 +39,6 @@ const SidebarPlugin = {
|
|
|
47
39
|
cwd: String(dirName),
|
|
48
40
|
ignore: ignorePages.map(ignore => `**/${ignore}`)
|
|
49
41
|
})).map(async (pagePath) => await serialiser.deserialise(pagePath, await mutableFilesystem.promises.readFile(pagePath))));
|
|
50
|
-
pageList = pageList
|
|
51
|
-
.filter(page => filterPages(page))
|
|
52
|
-
.sort((pageA, pageB) => sortPagesByPriority(pageA, pageB, dirName));
|
|
53
42
|
return pageList;
|
|
54
43
|
}
|
|
55
44
|
/**
|
|
@@ -66,6 +55,7 @@ const SidebarPlugin = {
|
|
|
66
55
|
const level = getPageLevel(page);
|
|
67
56
|
const newChildNode = {
|
|
68
57
|
id,
|
|
58
|
+
fullPath: page.fullPath,
|
|
69
59
|
name,
|
|
70
60
|
priority,
|
|
71
61
|
data: { level, link: page.route },
|
|
@@ -119,31 +109,78 @@ const SidebarPlugin = {
|
|
|
119
109
|
config.setRef(String(page.fullPath), ['sidebarData', '$ref'], path.posix.join(dirName, options.filename, '#', 'pages'));
|
|
120
110
|
});
|
|
121
111
|
}
|
|
112
|
+
const createNavigationRefs = (currPage, prevPage, nextPage) => {
|
|
113
|
+
if (prevPage) {
|
|
114
|
+
config.setRef(currPage, ['navigation', 'prev', 'title', '$ref'], `${prevPage}#/title`);
|
|
115
|
+
config.setRef(currPage, ['navigation', 'prev', 'route', '$ref'], `${prevPage}#/route`);
|
|
116
|
+
}
|
|
117
|
+
if (nextPage) {
|
|
118
|
+
config.setRef(currPage, ['navigation', 'next', 'title', '$ref'], `${nextPage}#/title`);
|
|
119
|
+
config.setRef(currPage, ['navigation', 'next', 'route', '$ref'], `${nextPage}#/route`);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
function addNavigationToFrontmatter(pages) {
|
|
123
|
+
let prevParentPage, nextParentPage;
|
|
124
|
+
const getLastPage = pages => {
|
|
125
|
+
if (pages[pages.length - 1].childNodes?.length) {
|
|
126
|
+
return getLastPage(pages[pages.length - 1].childNodes);
|
|
127
|
+
}
|
|
128
|
+
return pages[pages.length - 1];
|
|
129
|
+
};
|
|
130
|
+
const lastPage = getLastPage(pages);
|
|
131
|
+
const isFirstPage = page => page === pages[0];
|
|
132
|
+
const isLastPage = page => page === lastPage;
|
|
133
|
+
function recursiveAddNavigation(pages) {
|
|
134
|
+
pages.forEach((page, pageIndex) => {
|
|
135
|
+
const { fullPath: currPage } = page;
|
|
136
|
+
let prevPage, nextPage;
|
|
137
|
+
prevPage = prevParentPage;
|
|
138
|
+
prevParentPage = isFirstPage(page) ? undefined : pages[pageIndex].fullPath;
|
|
139
|
+
if (page.childNodes?.length) {
|
|
140
|
+
nextPage = page.childNodes[0].fullPath;
|
|
141
|
+
nextParentPage =
|
|
142
|
+
pageIndex < pages.length - 1 ? pages[pageIndex + 1].fullPath : nextParentPage;
|
|
143
|
+
}
|
|
144
|
+
else if (pageIndex < pages.length - 1) {
|
|
145
|
+
nextPage = pages[pageIndex + 1].fullPath;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
nextPage = isLastPage(page) ? undefined : nextParentPage;
|
|
149
|
+
}
|
|
150
|
+
createNavigationRefs(currPage, prevPage, nextPage);
|
|
151
|
+
recursiveAddNavigation(page.childNodes);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
recursiveAddNavigation(pages);
|
|
155
|
+
}
|
|
122
156
|
const rootUserJourneys = await mutableFilesystem.promises.glob('**', {
|
|
123
157
|
onlyDirectories: true,
|
|
124
158
|
cwd: '/',
|
|
125
159
|
deep: sidebarRootLevel
|
|
126
160
|
});
|
|
127
|
-
|
|
128
|
-
function
|
|
129
|
-
const
|
|
130
|
-
if (page.childNodes) {
|
|
131
|
-
const
|
|
132
|
-
|
|
161
|
+
const removeExcludedPages = page => !(page.sidebar && page.sidebar.exclude);
|
|
162
|
+
function sortPagesByPriority(sidebarData) {
|
|
163
|
+
const pagesByPriority = sidebarData.map(page => {
|
|
164
|
+
if (page.childNodes.length > 1) {
|
|
165
|
+
const pagesByPriority = page.childNodes.sort((pageA, pageB) => (pageB.priority ? pageB.priority : -1) - (pageA.priority ? pageA.priority : -1));
|
|
166
|
+
sortPagesByPriority(page.childNodes);
|
|
167
|
+
return { ...page, childNodes: pagesByPriority };
|
|
133
168
|
}
|
|
134
169
|
else {
|
|
135
|
-
page;
|
|
170
|
+
return page;
|
|
136
171
|
}
|
|
137
172
|
});
|
|
138
|
-
return
|
|
173
|
+
return pagesByPriority;
|
|
139
174
|
}
|
|
140
175
|
await Promise.all(rootUserJourneys.map(async (dirName) => {
|
|
141
176
|
const sidebarFilePath = path.posix.join(String(dirName), options.filename);
|
|
142
|
-
|
|
177
|
+
let pages = await createPageList(dirName);
|
|
178
|
+
pages = pages.filter(page => removeExcludedPages(page));
|
|
143
179
|
const groupMap = createGroupMap(pages);
|
|
144
180
|
const sidebarData = linkGroupMap(groupMap, dirName);
|
|
145
|
-
const
|
|
146
|
-
|
|
181
|
+
const pagesByPriority = sortPagesByPriority(sidebarData);
|
|
182
|
+
addNavigationToFrontmatter(pagesByPriority);
|
|
183
|
+
await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: pagesByPriority }));
|
|
147
184
|
addSidebarDataToFrontmatter(pages, dirName);
|
|
148
185
|
}));
|
|
149
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,0CAA0C;AAC1C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,SAAS,cAAc,CAAC,QAAQ,EAAE,cAAc;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;KACzE;IACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C;IACD,OAAO,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"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"}
|
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.25",
|
|
4
4
|
"author": "",
|
|
5
5
|
"description": "Mosaic plugins for core file system",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -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.25",
|
|
37
|
+
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.25",
|
|
38
|
+
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.25",
|
|
39
|
+
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.25",
|
|
40
|
+
"@jpmorganchase/mosaic-types": "^0.1.0-beta.25",
|
|
40
41
|
"@types/github-slugger": "^1.3.0",
|
|
41
42
|
"@vcarl/remark-headings": "^0.1.0",
|
|
42
43
|
"fs-extra": "^10.1.0",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
|
|
2
|
-
interface NextPrevPluginPage extends Page {
|
|
3
|
-
nextPrev: {
|
|
4
|
-
[key: string]: string[];
|
|
5
|
-
};
|
|
6
|
-
refs: {
|
|
7
|
-
[key: string]: {
|
|
8
|
-
$$path: (number | string)[];
|
|
9
|
-
$$value: string;
|
|
10
|
-
}[];
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
interface NextPrevPluginOptions {
|
|
14
|
-
indexFirst?: boolean;
|
|
15
|
-
sortBy?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Sorts the pages in a folder alphabetically and then embeds a `navigation` property to the metadata with ordered
|
|
19
|
-
* next/prev pages
|
|
20
|
-
*/
|
|
21
|
-
declare const NextPrevPlugin: PluginType<NextPrevPluginPage, NextPrevPluginOptions>;
|
|
22
|
-
export default NextPrevPlugin;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { escapeRegExp } from 'lodash-es';
|
|
2
|
-
function createFileGlob(url, pageExtensions) {
|
|
3
|
-
if (pageExtensions.length === 1) {
|
|
4
|
-
return `${url}${pageExtensions[0]}`;
|
|
5
|
-
}
|
|
6
|
-
return `${url}{${pageExtensions.join(',')}}`;
|
|
7
|
-
}
|
|
8
|
-
function createSortFn(pageExtensions, { sortBy: _sortBy, indexFirst }) {
|
|
9
|
-
const indexRegExp = indexFirst && new RegExp(`index${pageExtensions.map(escapeRegExp).join('|')}$`);
|
|
10
|
-
// TODO: Switch out the algorithm here, based on `sortBy`
|
|
11
|
-
return function sortFn(fullPathA, fullPathB) {
|
|
12
|
-
// Always pin /index to the front
|
|
13
|
-
if (indexFirst && indexRegExp.test(fullPathA)) {
|
|
14
|
-
return -1;
|
|
15
|
-
}
|
|
16
|
-
return fullPathA.localeCompare(fullPathB);
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Sorts the pages in a folder alphabetically and then embeds a `navigation` property to the metadata with ordered
|
|
21
|
-
* next/prev pages
|
|
22
|
-
*/
|
|
23
|
-
const NextPrevPlugin = {
|
|
24
|
-
async $beforeSend(mutableFilesystem, { config, pageExtensions, ignorePages }, { indexFirst, sortBy }) {
|
|
25
|
-
const pageDirs = (await mutableFilesystem.promises.glob('**', {
|
|
26
|
-
onlyDirectories: true,
|
|
27
|
-
ignore: ignorePages.map(ignore => `**/${ignore}`),
|
|
28
|
-
cwd: '/'
|
|
29
|
-
}));
|
|
30
|
-
for (const dirName of pageDirs) {
|
|
31
|
-
const pages = (await mutableFilesystem.promises.glob(createFileGlob('*', pageExtensions), {
|
|
32
|
-
onlyFiles: true,
|
|
33
|
-
cwd: dirName,
|
|
34
|
-
ignore: ignorePages
|
|
35
|
-
})).sort(createSortFn(pageExtensions, { indexFirst, sortBy }));
|
|
36
|
-
for (let i = 0; i < pages.length; i++) {
|
|
37
|
-
if (i > 0) {
|
|
38
|
-
config.setRef(pages[i], ['navigation', 'prev', 'title', '$ref'], `${pages[i - 1]}#/title`);
|
|
39
|
-
config.setRef(pages[i], ['navigation', 'prev', 'fullPath', '$ref'], `${pages[i - 1]}#/route`);
|
|
40
|
-
}
|
|
41
|
-
if (i < pages.length - 1) {
|
|
42
|
-
config.setRef(pages[i], ['navigation', 'next', 'title', '$ref'], `${pages[i + 1]}#/title`);
|
|
43
|
-
config.setRef(pages[i], ['navigation', 'next', 'fullPath', '$ref'], `${pages[i + 1]}#/route`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
export default NextPrevPlugin;
|
|
50
|
-
//# sourceMappingURL=NextPrevPagePlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NextPrevPagePlugin.js","sourceRoot":"","sources":["../src/NextPrevPagePlugin.ts"],"names":[],"mappings":"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"}
|