@jpmorganchase/mosaic-plugins 0.1.0-beta.53 → 0.1.0-beta.54
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/SidebarPlugin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Plugin as PluginType, Page } from '@jpmorganchase/mosaic-types';
|
|
2
|
+
import { type SortConfig } from '@jpmorganchase/mosaic-schemas';
|
|
2
3
|
interface SidebarPluginConfigData {
|
|
3
4
|
dirs: string[];
|
|
4
5
|
refs: {
|
|
@@ -12,6 +13,11 @@ export interface SidebarPluginPage extends Page {
|
|
|
12
13
|
sidebar?: {
|
|
13
14
|
label?: string;
|
|
14
15
|
};
|
|
16
|
+
sharedConfig: {
|
|
17
|
+
sidebar: {
|
|
18
|
+
sort: SortConfig;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
15
21
|
}
|
|
16
22
|
interface SidebarPluginOptions {
|
|
17
23
|
/**
|
package/dist/SidebarPlugin.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
+
import { sidebarSortConfigSchema } from '@jpmorganchase/mosaic-schemas';
|
|
2
3
|
import { cloneDeep } from 'lodash-es';
|
|
4
|
+
import { sortSidebarData } from './utils/sortSidebarData.js';
|
|
3
5
|
function createFileGlob(patterns, pageExtensions) {
|
|
4
6
|
if (Array.isArray(patterns)) {
|
|
5
7
|
return patterns.map(pattern => createFileGlob(pattern, pageExtensions));
|
|
@@ -17,6 +19,43 @@ function sortByPathLevel(pathA, pathB) {
|
|
|
17
19
|
const pathBLevel = pathB.split('/').length;
|
|
18
20
|
return pathBLevel - pathALevel;
|
|
19
21
|
}
|
|
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;
|
|
58
|
+
}
|
|
20
59
|
/**
|
|
21
60
|
* Sorts the pages in a folder by priority and then exports a JSON file with the
|
|
22
61
|
* sidebar tree from that directory downwards and adds sidebar data into frontmatter for each page.
|
|
@@ -50,12 +89,27 @@ const SidebarPlugin = {
|
|
|
50
89
|
return pageList;
|
|
51
90
|
}
|
|
52
91
|
/**
|
|
53
|
-
* Group the pages into parent/child
|
|
92
|
+
* Group the pages into parent/child hierarchy
|
|
54
93
|
* @param pages - sidebar pages
|
|
55
94
|
*/
|
|
56
95
|
function createGroupMap(pages) {
|
|
96
|
+
const sortConfigPages = {};
|
|
57
97
|
return pages.reduce((result, page) => {
|
|
58
98
|
const name = page.sidebar?.label || page.title;
|
|
99
|
+
const sharedSortConfig = page?.sharedConfig?.sidebar?.sort;
|
|
100
|
+
if (sharedSortConfig) {
|
|
101
|
+
try {
|
|
102
|
+
sidebarSortConfigSchema.parse(sharedSortConfig);
|
|
103
|
+
sortConfigPages[`${path.posix.dirname(page.fullPath)}`] = sharedSortConfig;
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
/**
|
|
107
|
+
* Don't throw a PluginError here as this will stop the sidebar being generated.
|
|
108
|
+
* Plugins need a way to log errors/warnings without exceptions
|
|
109
|
+
*/
|
|
110
|
+
console.error(`[Mosaic] SidebarPlugin - Invalid sidebar sort config found in ${page.fullPath}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
59
113
|
const priority = page.sidebar?.priority;
|
|
60
114
|
const id = page.route;
|
|
61
115
|
const isGroup = /\/index$/.test(page.route);
|
|
@@ -69,6 +123,13 @@ const SidebarPlugin = {
|
|
|
69
123
|
data: { level, link: page.route },
|
|
70
124
|
childNodes: []
|
|
71
125
|
};
|
|
126
|
+
if (!isGroup && sortConfigPages[`${path.posix.dirname(page.fullPath)}`] !== undefined) {
|
|
127
|
+
const fieldData = getSortFieldData(page, sortConfigPages[`${path.posix.dirname(page.fullPath)}`]);
|
|
128
|
+
newChildNode.sharedSortConfig = {
|
|
129
|
+
...sortConfigPages[`${path.posix.dirname(page.fullPath)}`],
|
|
130
|
+
fieldData
|
|
131
|
+
};
|
|
132
|
+
}
|
|
72
133
|
if (isGroup) {
|
|
73
134
|
result[groupPath] = {
|
|
74
135
|
...newChildNode,
|
|
@@ -169,17 +230,6 @@ const SidebarPlugin = {
|
|
|
169
230
|
cwd: '/'
|
|
170
231
|
});
|
|
171
232
|
const removeExcludedPages = page => !(page.sidebar && page.sidebar.exclude);
|
|
172
|
-
function sortPagesByPriority(sidebarData) {
|
|
173
|
-
const pagesByPriority = sidebarData.map(page => {
|
|
174
|
-
if (page.childNodes?.length > 1) {
|
|
175
|
-
const pagesByPriority = page.childNodes.sort((pageA, pageB) => (pageB.priority ? pageB.priority : -1) - (pageA.priority ? pageA.priority : -1));
|
|
176
|
-
sortPagesByPriority(page.childNodes);
|
|
177
|
-
return { ...page, childNodes: pagesByPriority };
|
|
178
|
-
}
|
|
179
|
-
return page;
|
|
180
|
-
});
|
|
181
|
-
return pagesByPriority;
|
|
182
|
-
}
|
|
183
233
|
function moveRootPageDown(pagesByPriority) {
|
|
184
234
|
const rootPage = pagesByPriority[0];
|
|
185
235
|
const pagesWithRootMovedDown = rootPage.childNodes;
|
|
@@ -198,9 +248,9 @@ const SidebarPlugin = {
|
|
|
198
248
|
console.log('[Mosaic] SidebarPlugin - likely you have a directory without an index file');
|
|
199
249
|
return;
|
|
200
250
|
}
|
|
201
|
-
const
|
|
202
|
-
addNavigationToFrontmatter(
|
|
203
|
-
const pagesWithRootMovedDown = moveRootPageDown(
|
|
251
|
+
const sortedSidebarData = sortSidebarData(sidebarData);
|
|
252
|
+
addNavigationToFrontmatter(sortedSidebarData);
|
|
253
|
+
const pagesWithRootMovedDown = moveRootPageDown(sortedSidebarData);
|
|
204
254
|
await mutableFilesystem.promises.writeFile(sidebarFilePath, JSON.stringify({ pages: pagesWithRootMovedDown }));
|
|
205
255
|
addSidebarDataToFrontmatter(pages, rootDir);
|
|
206
256
|
}));
|
|
@@ -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,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,YAAY,CAAC,IAAI;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,UAAU,GAAG,UAAU,CAAC;AACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"SidebarPlugin.js","sourceRoot":"","sources":["../src/SidebarPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SortConfig } from '@jpmorganchase/mosaic-schemas';
|
|
2
|
+
declare type FieldData = string | number;
|
|
3
|
+
interface SortConfigWithValue extends SortConfig {
|
|
4
|
+
fieldData: FieldData;
|
|
5
|
+
}
|
|
6
|
+
export interface SidebarDataNode {
|
|
7
|
+
id: string;
|
|
8
|
+
fullPath: string;
|
|
9
|
+
name: string;
|
|
10
|
+
priority?: number;
|
|
11
|
+
data: {
|
|
12
|
+
level: number;
|
|
13
|
+
link: string;
|
|
14
|
+
};
|
|
15
|
+
childNodes: SidebarDataNode[];
|
|
16
|
+
sharedSortConfig?: SortConfigWithValue;
|
|
17
|
+
}
|
|
18
|
+
export declare function sortSidebarData(sidebarData: SidebarDataNode[]): SidebarDataNode[];
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const isNumber = (fieldData) => typeof fieldData === 'number';
|
|
2
|
+
function doSort(a, b) {
|
|
3
|
+
if (isNumber(a) && isNumber(b)) {
|
|
4
|
+
return a - b;
|
|
5
|
+
}
|
|
6
|
+
if (a > b) {
|
|
7
|
+
return 1;
|
|
8
|
+
}
|
|
9
|
+
if (a < b) {
|
|
10
|
+
return -1;
|
|
11
|
+
}
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
|
14
|
+
function sortBySharedSortConfig(pageA, pageB) {
|
|
15
|
+
if (pageA.sharedSortConfig === undefined || pageB.sharedSortConfig === undefined) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
if (pageA.sharedSortConfig?.arrange === 'asc') {
|
|
19
|
+
return doSort(pageA.sharedSortConfig.fieldData, pageB.sharedSortConfig.fieldData);
|
|
20
|
+
}
|
|
21
|
+
return doSort(pageB.sharedSortConfig.fieldData, pageA.sharedSortConfig.fieldData);
|
|
22
|
+
}
|
|
23
|
+
export function sortSidebarData(sidebarData) {
|
|
24
|
+
const pagesByPriority = sidebarData.map(page => {
|
|
25
|
+
if (page.childNodes?.length > 1) {
|
|
26
|
+
const sortedChildNodes = page.childNodes.sort((pageA, pageB) => (pageB.priority ? pageB.priority : -1) - (pageA.priority ? pageA.priority : -1) ||
|
|
27
|
+
sortBySharedSortConfig(pageA, pageB));
|
|
28
|
+
sortSidebarData(page.childNodes);
|
|
29
|
+
return { ...page, childNodes: sortedChildNodes };
|
|
30
|
+
}
|
|
31
|
+
return page;
|
|
32
|
+
});
|
|
33
|
+
return pagesByPriority;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sortSidebarData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortSidebarData.js","sourceRoot":"","sources":["../../src/utils/sortSidebarData.ts"],"names":[],"mappings":"AAiBA,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAuB,EAAE,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC;AAE9F,SAAS,MAAM,CAAC,CAAY,EAAE,CAAY;IACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC,CAAC;KACX;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAsB,EAAE,KAAsB;IAC5E,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAChF,OAAO,CAAC,CAAC;KACV;IAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,OAAO,KAAK,KAAK,EAAE;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;KACnF;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA8B;IAC5D,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;YAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAC3C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CACvC,CAAC;YACF,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;SAClD;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,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.54",
|
|
4
4
|
"author": "",
|
|
5
5
|
"description": "Mosaic plugins for core file system",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@apidevtools/json-schema-ref-parser": "^10.1.0",
|
|
41
|
-
"@jpmorganchase/mosaic-schemas": "^0.1.0-beta.
|
|
42
|
-
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.
|
|
43
|
-
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.
|
|
44
|
-
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.
|
|
45
|
-
"@jpmorganchase/mosaic-types": "^0.1.0-beta.
|
|
41
|
+
"@jpmorganchase/mosaic-schemas": "^0.1.0-beta.54",
|
|
42
|
+
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.54",
|
|
43
|
+
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.54",
|
|
44
|
+
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.54",
|
|
45
|
+
"@jpmorganchase/mosaic-types": "^0.1.0-beta.54",
|
|
46
46
|
"@types/github-slugger": "^1.3.0",
|
|
47
47
|
"@vcarl/remark-headings": "^0.1.0",
|
|
48
48
|
"check-links": "^2.0.0",
|