@jpmorganchase/mosaic-plugins 0.1.0-beta.46 → 0.1.0-beta.48
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,11 +1,21 @@
|
|
|
1
|
-
import path from 'path';
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { escapeRegExp } from 'lodash-es';
|
|
2
3
|
import PluginError from './utils/PluginError.js';
|
|
4
|
+
const createPageTest = (ignorePages, pageExtensions) => {
|
|
5
|
+
const extTest = new RegExp(`${pageExtensions.map(ext => escapeRegExp(ext)).join('|')}$`);
|
|
6
|
+
const ignoreTest = new RegExp(`${ignorePages.map(ignore => escapeRegExp(ignore)).join('|')}$`);
|
|
7
|
+
return file => !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');
|
|
8
|
+
};
|
|
3
9
|
/**
|
|
4
10
|
* Calculates breadcrumbs for pages then embeds a `breadcrumbs` property to the metadata
|
|
5
11
|
*/
|
|
6
12
|
const BreadcrumbsPlugin = {
|
|
7
|
-
async $afterSource(pages,
|
|
13
|
+
async $afterSource(pages, { ignorePages, pageExtensions }, options) {
|
|
14
|
+
const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
|
|
8
15
|
for (const page of pages) {
|
|
16
|
+
if (!isNonHiddenPage(page.fullPath)) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
9
19
|
try {
|
|
10
20
|
const breadcrumbs = [];
|
|
11
21
|
let currentPage = page;
|
|
@@ -35,6 +45,40 @@ const BreadcrumbsPlugin = {
|
|
|
35
45
|
}
|
|
36
46
|
}
|
|
37
47
|
return pages;
|
|
48
|
+
},
|
|
49
|
+
async afterUpdate(mutableFilesystem, { serialiser, globalFilesystem, ignorePages }, options) {
|
|
50
|
+
const pages = (await mutableFilesystem.promises.glob('**', {
|
|
51
|
+
onlyFiles: true,
|
|
52
|
+
ignore: ignorePages.map(ignore => `**/${ignore}`),
|
|
53
|
+
cwd: '/'
|
|
54
|
+
}));
|
|
55
|
+
if (pages.length > 0) {
|
|
56
|
+
let updatedBreadcrumbs = [];
|
|
57
|
+
const { breadcrumbs } = await serialiser.deserialise(pages[0], await mutableFilesystem.promises.readFile(pages[0]));
|
|
58
|
+
// the root breadcrumb is the first breadcrumb for all pages in a source. It is essentially the "first" page in a source
|
|
59
|
+
const rootBreadcrumb = breadcrumbs?.[0] || undefined;
|
|
60
|
+
if (rootBreadcrumb) {
|
|
61
|
+
let parentDir = path.posix.join(path.posix.dirname(rootBreadcrumb.id), '../');
|
|
62
|
+
while (parentDir !== '/') {
|
|
63
|
+
const parentDirIndex = path.posix.join(parentDir, options.indexPageName);
|
|
64
|
+
// check for this file in the global fs so we have a holistic view of all site pages
|
|
65
|
+
if (await globalFilesystem.promises.exists(parentDirIndex)) {
|
|
66
|
+
const { breadcrumbs: parentDirBreadcrumbs } = await serialiser.deserialise(rootBreadcrumb.id, await globalFilesystem.promises.readFile(parentDirIndex));
|
|
67
|
+
updatedBreadcrumbs = parentDirBreadcrumbs;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
parentDir = path.posix.join(path.posix.dirname(parentDirIndex), '../');
|
|
71
|
+
}
|
|
72
|
+
if (updatedBreadcrumbs.length > 0) {
|
|
73
|
+
for (const pagePath of pages) {
|
|
74
|
+
const page = await serialiser.deserialise(pagePath, await mutableFilesystem.promises.readFile(pagePath));
|
|
75
|
+
// append the parent breadcrumbs **before** the current breadcrumbs
|
|
76
|
+
page.breadcrumbs = [...updatedBreadcrumbs, ...page.breadcrumbs];
|
|
77
|
+
await mutableFilesystem.promises.writeFile(pagePath, await serialiser.serialise(pagePath, page));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
38
82
|
}
|
|
39
83
|
};
|
|
40
84
|
export default BreadcrumbsPlugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbsPlugin.js","sourceRoot":"","sources":["../src/BreadcrumbsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BreadcrumbsPlugin.js","sourceRoot":"","sources":["../src/BreadcrumbsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAGjD,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,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,CAAC;AAaF;;GAEG;AACH,MAAM,iBAAiB,GAAgE;IACrF,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,OAAO;QAChE,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACnC,SAAS;aACV;YACD,IAAI;gBACF,MAAM,WAAW,GAAsB,EAAE,CAAC;gBAC1C,IAAI,WAAW,GAAG,IAAI,CAAC;gBACvB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/E,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBAE3D,OAAO,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,kBAAkB,EAAE;oBAC3E,WAAW,CAAC,OAAO,CAAC;wBAClB,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,WAAW,CAAC,KAAK;wBACtD,IAAI,EAAE,WAAW,CAAC,KAAK;wBACvB,EAAE,EAAE,WAAW,CAAC,QAAQ;qBACzB,CAAC,CAAC;oBAEH,WAAW,GAAG,KAAK,CAAC,IAAI;oBACtB,2DAA2D;oBAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAC5E,CAAC;oBACF,IAAI,WAAW,EAAE;wBACf,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;qBACrF;iBACF;gBAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,uCAAuC;oBACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjE,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;iBACtC;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACjD;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,OAAO;QACzF,MAAM,KAAK,GAAG,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YACzD,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC;YACjD,GAAG,EAAE,GAAG;SACT,CAAC,CAAa,CAAC;QAEhB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,IAAI,kBAAkB,GAAG,EAAE,CAAC;YAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAClD,KAAK,CAAC,CAAC,CAAC,EACR,MAAM,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;YAEF,yHAAyH;YACzH,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YAErD,IAAI,cAAc,EAAE;gBAClB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE9E,OAAO,SAAS,KAAK,GAAG,EAAE;oBACxB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;oBAEzE,oFAAoF;oBACpF,IAAI,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;wBAC1D,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CACxE,cAAc,CAAC,EAAE,EACjB,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CACzD,CAAC;wBACF,kBAAkB,GAAG,oBAAoB,CAAC;wBAC1C,MAAM;qBACP;oBACD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;iBACxE;gBAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;wBAC5B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CACvC,QAAQ,EACR,MAAM,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACpD,CAAC;wBAEF,mEAAmE;wBACnE,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;wBAChE,MAAM,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CACxC,QAAQ,EACR,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC3C,CAAC;qBACH;iBACF;aACF;SACF;IACH,CAAC;CACF,CAAC;AAEF,eAAe,iBAAiB,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.48",
|
|
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.48",
|
|
42
|
+
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.48",
|
|
43
|
+
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.48",
|
|
44
|
+
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.48",
|
|
45
|
+
"@jpmorganchase/mosaic-types": "^0.1.0-beta.48",
|
|
46
46
|
"@types/github-slugger": "^1.3.0",
|
|
47
47
|
"@vcarl/remark-headings": "^0.1.0",
|
|
48
48
|
"check-links": "^2.0.0",
|