@jpmorganchase/mosaic-plugins 0.1.0-beta.8 → 0.1.0-beta.81

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.
Files changed (80) hide show
  1. package/dist/$AliasPlugin.d.ts +10 -0
  2. package/dist/$AliasPlugin.js +49 -228
  3. package/dist/$AliasPlugin.js.map +1 -1
  4. package/dist/$CodeModPlugin.d.ts +7 -0
  5. package/dist/$CodeModPlugin.js +18 -118
  6. package/dist/$CodeModPlugin.js.map +1 -1
  7. package/dist/$RefPlugin.d.ts +31 -0
  8. package/dist/$RefPlugin.js +123 -451
  9. package/dist/$RefPlugin.js.map +1 -1
  10. package/dist/$TagPlugin.d.ts +28 -0
  11. package/dist/$TagPlugin.js +51 -234
  12. package/dist/$TagPlugin.js.map +1 -1
  13. package/dist/BreadcrumbsPlugin.d.ts +19 -0
  14. package/dist/BreadcrumbsPlugin.js +87 -112
  15. package/dist/BreadcrumbsPlugin.js.map +1 -1
  16. package/dist/BrokenLinksPlugin.d.ts +10 -0
  17. package/dist/BrokenLinksPlugin.js +80 -0
  18. package/dist/BrokenLinksPlugin.js.map +1 -0
  19. package/dist/FragmentPlugin.d.ts +3 -0
  20. package/dist/FragmentPlugin.js +61 -0
  21. package/dist/FragmentPlugin.js.map +1 -0
  22. package/dist/LazyPagePlugin.d.ts +14 -0
  23. package/dist/LazyPagePlugin.js +50 -254
  24. package/dist/LazyPagePlugin.js.map +1 -1
  25. package/dist/PagesWithoutFileExtPlugin.d.ts +9 -0
  26. package/dist/PagesWithoutFileExtPlugin.js +20 -118
  27. package/dist/PagesWithoutFileExtPlugin.js.map +1 -1
  28. package/dist/PropsTablePlugin.d.ts +6 -0
  29. package/dist/PropsTablePlugin.js +88 -0
  30. package/dist/PropsTablePlugin.js.map +1 -0
  31. package/dist/PublicAssetsPlugin.d.ts +18 -0
  32. package/dist/PublicAssetsPlugin.js +28 -0
  33. package/dist/PublicAssetsPlugin.js.map +1 -0
  34. package/dist/ReadingTimePlugin.d.ts +10 -0
  35. package/dist/ReadingTimePlugin.js +39 -0
  36. package/dist/ReadingTimePlugin.js.map +1 -0
  37. package/dist/SearchIndexPlugin.d.ts +56 -0
  38. package/dist/SearchIndexPlugin.js +154 -0
  39. package/dist/SearchIndexPlugin.js.map +1 -0
  40. package/dist/SharedConfigPlugin.d.ts +14 -0
  41. package/dist/SharedConfigPlugin.js +129 -168
  42. package/dist/SharedConfigPlugin.js.map +1 -1
  43. package/dist/SidebarPlugin.d.ts +45 -0
  44. package/dist/SidebarPlugin.js +285 -324
  45. package/dist/SidebarPlugin.js.map +1 -1
  46. package/dist/SiteMapPlugin.d.ts +9 -0
  47. package/dist/SiteMapPlugin.js +23 -91
  48. package/dist/SiteMapPlugin.js.map +1 -1
  49. package/dist/TableOfContentsPlugin.d.ts +20 -0
  50. package/dist/TableOfContentsPlugin.js +44 -0
  51. package/dist/TableOfContentsPlugin.js.map +1 -0
  52. package/dist/utils/PluginError.d.ts +7 -0
  53. package/dist/utils/PluginError.js +13 -0
  54. package/dist/utils/PluginError.js.map +1 -0
  55. package/dist/utils/createPageTest.d.ts +1 -0
  56. package/dist/utils/createPageTest.js +8 -0
  57. package/dist/utils/createPageTest.js.map +1 -0
  58. package/dist/utils/mergePageContent.d.ts +16 -0
  59. package/dist/utils/mergePageContent.js +23 -0
  60. package/dist/utils/mergePageContent.js.map +1 -0
  61. package/dist/utils/normaliseRefs.d.ts +1 -0
  62. package/dist/utils/normaliseRefs.js +56 -275
  63. package/dist/utils/normaliseRefs.js.map +1 -1
  64. package/dist/utils/sortSidebarData.d.ts +29 -0
  65. package/dist/utils/sortSidebarData.js +47 -0
  66. package/dist/utils/sortSidebarData.js.map +1 -0
  67. package/package.json +41 -19
  68. package/CHANGELOG.md +0 -93
  69. package/dist/LocalFolderSavePlugin.js +0 -165
  70. package/dist/LocalFolderSavePlugin.js.map +0 -1
  71. package/dist/NextPrevPagePlugin.js +0 -173
  72. package/dist/NextPrevPagePlugin.js.map +0 -1
  73. package/dist/ReadingTimePlugin.mjs +0 -119
  74. package/dist/ReadingTimePlugin.mjs.map +0 -1
  75. package/dist/SearchIndexPlugin.mjs +0 -268
  76. package/dist/SearchIndexPlugin.mjs.map +0 -1
  77. package/dist/TableOfContentsPlugin.mjs +0 -131
  78. package/dist/TableOfContentsPlugin.mjs.map +0 -1
  79. package/dist/__tests__/BreadcrumbsPlugin.test.js +0 -160
  80. package/dist/__tests__/BreadcrumbsPlugin.test.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface BrokenLinksPluginPage extends Page {
3
+ }
4
+ interface BrokenLinksPluginOptions {
5
+ baseUrl: string;
6
+ skipUrlPatterns?: Array<string | RegExp>;
7
+ proxyEndpoint?: string;
8
+ }
9
+ declare const BrokenLinksPlugin: PluginType<BrokenLinksPluginPage, BrokenLinksPluginOptions>;
10
+ export default BrokenLinksPlugin;
@@ -0,0 +1,80 @@
1
+ import path from 'node:path';
2
+ import { remark } from 'remark';
3
+ import remarkMdx from 'remark-mdx';
4
+ import checkLinks from 'check-links';
5
+ import { visit } from 'unist-util-visit';
6
+ import proxyAgentPkg from 'https-proxy-agent';
7
+ const { HttpsProxyAgent } = proxyAgentPkg;
8
+ async function checkPageLinks(ast, options, fullPath, headings) {
9
+ const urlToNodes = {};
10
+ const aggregate = node => {
11
+ const { url: urlFromNode } = node;
12
+ if (!urlFromNode)
13
+ return;
14
+ const isExternalUrl = /^(https?:\/\/)/.test(urlFromNode);
15
+ const url = isExternalUrl
16
+ ? // full urls including internal and external
17
+ new URL(urlFromNode)
18
+ : // handles relative links
19
+ new URL(`${path.posix.resolve(path.posix.dirname(fullPath), urlFromNode)}`, options.baseUrl);
20
+ if (!isExternalUrl && url.hash !== '') {
21
+ const isValidHeadingLink = headings.findIndex(heading => heading.replace(/\W+/g, '-').toLowerCase() === url.hash.substring(1).toLowerCase()) !== -1;
22
+ if (isValidHeadingLink) {
23
+ // link points to a heading on the page
24
+ return;
25
+ }
26
+ }
27
+ if (options.skipUrlPatterns &&
28
+ options.skipUrlPatterns.some(skipPattern => new RegExp(skipPattern).test(url.toString()))) {
29
+ return;
30
+ }
31
+ if (!urlToNodes[url.toString()]) {
32
+ urlToNodes[url.toString()] = [];
33
+ }
34
+ urlToNodes[url.toString()].push(node);
35
+ };
36
+ visit(ast, ['link', 'image', 'definition'], aggregate);
37
+ const links = Object.keys(urlToNodes);
38
+ const checkLinksOptions = options.proxyEndpoint
39
+ ? {
40
+ agent: {
41
+ https: new HttpsProxyAgent(options.proxyEndpoint)
42
+ }
43
+ }
44
+ : {};
45
+ const results = await checkLinks(links, checkLinksOptions);
46
+ links.forEach(link => {
47
+ const result = results[link];
48
+ if (result.status !== 'dead' && result.status !== 'invalid') {
49
+ return;
50
+ }
51
+ const nodes = urlToNodes[link];
52
+ if (!nodes)
53
+ return;
54
+ console.group(`[Mosaic] Broken links found in ${fullPath}`);
55
+ for (const node of nodes) {
56
+ console.log(`Link to ${link} is dead`, node);
57
+ }
58
+ console.groupEnd();
59
+ });
60
+ }
61
+ async function findPageHeadings(ast) {
62
+ const headings = [];
63
+ visit(ast, ['heading'], node => {
64
+ headings.push(node.children[0]?.value);
65
+ });
66
+ return headings;
67
+ }
68
+ const processor = remark().use(remarkMdx);
69
+ const BrokenLinksPlugin = {
70
+ async $afterSource(pages, _, options) {
71
+ pages.forEach(async (page) => {
72
+ const ast = await processor.parse(page.content);
73
+ const headings = await findPageHeadings(ast);
74
+ await checkPageLinks(ast, options, page.fullPath, headings);
75
+ });
76
+ return pages;
77
+ }
78
+ };
79
+ export default BrokenLinksPlugin;
80
+ //# sourceMappingURL=BrokenLinksPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrokenLinksPlugin.js","sourceRoot":"","sources":["../src/BrokenLinksPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ declare const FragmentPlugin: PluginType;
3
+ export default FragmentPlugin;
@@ -0,0 +1,61 @@
1
+ import path from 'node:path';
2
+ import { remark } from 'remark';
3
+ import remarkMdx from 'remark-mdx';
4
+ import remarkDirective from 'remark-directive';
5
+ import { visit } from 'unist-util-visit';
6
+ import PluginError from './utils/PluginError.js';
7
+ import { createPageTest } from './utils/createPageTest.js';
8
+ function processFragments(tree, pages, isNonHiddenPage, fullPath) {
9
+ visit(tree, (node, index, parent) => {
10
+ if (node.type === 'containerDirective' ||
11
+ node.type === 'leafDirective' ||
12
+ node.type === 'textDirective') {
13
+ if (node.name !== 'fragment')
14
+ return;
15
+ const attributes = node.attributes ?? {};
16
+ const { src } = attributes;
17
+ if (!src) {
18
+ console.error("Fragment directive requires a 'src' attribute. Skipping.");
19
+ return;
20
+ }
21
+ const fragmentFullPath = path.posix.join(path.dirname(fullPath), src);
22
+ const isHidden = !isNonHiddenPage(fragmentFullPath);
23
+ const fragmentPage = pages.find(page => page.fullPath === fragmentFullPath);
24
+ if (isHidden || !fragmentPage) {
25
+ console.warn(`Invalid file reference: '${node.attributes.src}'. Skipping.`);
26
+ }
27
+ else {
28
+ // Create a new node with the content from fragmentPage.content
29
+ const newNode = {
30
+ type: 'html',
31
+ value: fragmentPage.content
32
+ };
33
+ // Replace the original node with the newNode in the tree
34
+ parent.children.splice(index, 1, newNode);
35
+ }
36
+ }
37
+ });
38
+ }
39
+ const processor = remark().use(remarkMdx).use(remarkDirective);
40
+ const FragmentPlugin = {
41
+ async $afterSource(pages, { ignorePages, pageExtensions }) {
42
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
43
+ for (const page of pages) {
44
+ try {
45
+ const { fullPath } = page;
46
+ if (!isNonHiddenPage(fullPath)) {
47
+ continue;
48
+ }
49
+ const tree = processor.parse(page.content);
50
+ processFragments(tree, pages, isNonHiddenPage, page.fullPath);
51
+ page.content = processor.stringify(tree);
52
+ }
53
+ catch (e) {
54
+ throw new PluginError(e.message, page.fullPath);
55
+ }
56
+ }
57
+ return pages;
58
+ }
59
+ };
60
+ export default FragmentPlugin;
61
+ //# sourceMappingURL=FragmentPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FragmentPlugin.js","sourceRoot":"","sources":["../src/FragmentPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface LazyPagePluginPage extends Page {
3
+ aliases: {
4
+ [key: string]: Set<string>;
5
+ };
6
+ hddPaths: {
7
+ [key: string]: string;
8
+ };
9
+ }
10
+ interface LazyPagePluginOptions {
11
+ cacheDir?: string;
12
+ }
13
+ declare const LazyPagePlugin: PluginType<LazyPagePluginPage, LazyPagePluginOptions>;
14
+ export default LazyPagePlugin;
@@ -1,264 +1,60 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
8
- }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _asyncToGenerator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- function _objectWithoutProperties(source, excluded) {
31
- if (source == null) return {};
32
- var target = _objectWithoutPropertiesLoose(source, excluded);
33
- var key, i;
34
- if (Object.getOwnPropertySymbols) {
35
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
36
- for(i = 0; i < sourceSymbolKeys.length; i++){
37
- key = sourceSymbolKeys[i];
38
- if (excluded.indexOf(key) >= 0) continue;
39
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
40
- target[key] = source[key];
41
- }
42
- }
43
- return target;
44
- }
45
- function _objectWithoutPropertiesLoose(source, excluded) {
46
- if (source == null) return {};
47
- var target = {};
48
- var sourceKeys = Object.keys(source);
49
- var key, i;
50
- for(i = 0; i < sourceKeys.length; i++){
51
- key = sourceKeys[i];
52
- if (excluded.indexOf(key) >= 0) continue;
53
- target[key] = source[key];
54
- }
55
- return target;
56
- }
57
- import regeneratorRuntime from "regenerator-runtime";
58
- import fs from "fs";
59
- import fsExtra from "fs-extra";
60
- import merge from "lodash/merge";
61
- import escapeRegExp from "lodash/escapeRegExp";
62
- import path from "path";
63
- function createPageTest(ignorePages, pageExtensions) {
64
- var extTest = new RegExp("".concat(pageExtensions.map(escapeRegExp).join("|"), "$"));
65
- var ignoreTest = new RegExp("".concat(ignorePages.map(escapeRegExp).join("|"), "$"));
66
- return function(file) {
67
- return !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith(".");
68
- };
69
- }
1
+ import fs from 'fs';
2
+ import fsExtra from 'fs-extra';
3
+ import path from 'path';
4
+ import { mergePageContent } from './utils/mergePageContent.js';
5
+ import { createPageTest } from './utils/createPageTest.js';
70
6
  function createFileGlob(url, pageExtensions) {
71
7
  if (pageExtensions.length === 1) {
72
- return "".concat(url).concat(pageExtensions[0]);
8
+ return `${url}${pageExtensions[0]}`;
73
9
  }
74
- return "".concat(url, "{").concat(pageExtensions.join(","), "}");
10
+ return `${url}{${pageExtensions.join(',')}}`;
75
11
  }
76
- var LazyPagePlugin = {
77
- afterUpdate: function afterUpdate(mutableFilesystem, param) {
78
- var ignorePages = param.ignorePages, config = param.config, pageExtensions = param.pageExtensions, serialiser = param.serialiser;
79
- return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
80
- var isNonHiddenPage;
81
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
82
- while(1)switch(_ctx.prev = _ctx.next){
83
- case 0:
84
- isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
85
- // This adds a hook that triggers everytime a non-cached page is read from the filesystem.
86
- mutableFilesystem.__internal_do_not_use_addReadFileHook(function() {
87
- var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(pagePath, fileData) {
88
- var currentPage, page, completePage;
89
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
90
- while(1)switch(_ctx.prev = _ctx.next){
91
- case 0:
92
- if (!isNonHiddenPage(pagePath)) {
93
- _ctx.next = 17;
94
- break;
95
- }
96
- _ctx.next = 3;
97
- return serialiser.deserialise(pagePath, fileData);
98
- case 3:
99
- currentPage = _ctx.sent;
100
- if (!config.data.hddPaths[pagePath]) {
101
- _ctx.next = 17;
102
- break;
103
- }
104
- _ctx.t0 = serialiser;
105
- _ctx.t1 = pagePath;
106
- _ctx.next = 9;
107
- return fs.promises.readFile(config.data.hddPaths[pagePath]);
108
- case 9:
109
- _ctx.t2 = _ctx.sent;
110
- _ctx.next = 12;
111
- return _ctx.t0.deserialise.call(_ctx.t0, _ctx.t1, _ctx.t2);
112
- case 12:
113
- page = _ctx.sent;
114
- _ctx.next = 15;
115
- return serialiser.serialise(pagePath, merge(page, currentPage, {
116
- content: page.content
117
- }));
118
- case 15:
119
- completePage = _ctx.sent;
120
- return _ctx.abrupt("return", completePage);
121
- case 17:
122
- return _ctx.abrupt("return", fileData);
123
- case 18:
124
- case "end":
125
- return _ctx.stop();
126
- }
127
- }, _callee);
128
- }));
129
- return function(pagePath, fileData) {
130
- return _ref.apply(this, arguments);
131
- };
132
- }());
133
- case 2:
134
- case "end":
135
- return _ctx.stop();
12
+ const LazyPagePlugin = {
13
+ async afterUpdate(mutableFilesystem, { ignorePages, config, pageExtensions, serialiser }) {
14
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
15
+ // This adds a hook that triggers every time a non-cached page is read from the filesystem.
16
+ mutableFilesystem.__internal_do_not_use_addReadFileHook(async (pagePath, fileData) => {
17
+ // If this is a 'page' - read the original file from disk and try to inject anything that's missing.
18
+ if (isNonHiddenPage(pagePath)) {
19
+ const currentPage = await serialiser.deserialise(pagePath, fileData);
20
+ if (config.data.hddPaths?.[pagePath]) {
21
+ const page = await serialiser.deserialise(pagePath, await fs.promises.readFile(config.data.hddPaths[pagePath]));
22
+ const mergedPage = mergePageContent(page, currentPage);
23
+ const completePage = await serialiser.serialise(pagePath, mergePageContent(mergedPage, { content: page.content }));
24
+ return completePage;
136
25
  }
137
- }, _callee);
138
- }))();
26
+ }
27
+ return fileData;
28
+ });
139
29
  },
140
- $beforeSend: function $beforeSend(mutableFilesystem, param, options) {
141
- var config = param.config, serialiser = param.serialiser, ignorePages = param.ignorePages, pageExtensions = param.pageExtensions;
142
- return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
143
- var hddPaths, originalDiskSize, newDiskSize, allPages, baseDir, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _ref, filePath, rawPage, page, content, pageRest, redactedPage, reduction;
144
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
145
- while(1)switch(_ctx.prev = _ctx.next){
146
- case 0:
147
- hddPaths = {};
148
- originalDiskSize = 0;
149
- newDiskSize = 0;
150
- _ctx.next = 5;
151
- return mutableFilesystem.promises.glob(createFileGlob("**", pageExtensions), {
152
- ignore: ignorePages.map(function(ignore) {
153
- return "**/".concat(ignore);
154
- }),
155
- cwd: "/",
156
- onlyFiles: true
157
- });
158
- case 5:
159
- allPages = _ctx.sent;
160
- baseDir = path.join(process.cwd(), options.cacheDir || ".mosaic-lazy-page-plugin-cache");
161
- _ctx.next = 9;
162
- return fsExtra.ensureDir(baseDir);
163
- case 9:
164
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
165
- _ctx.prev = 10;
166
- _iterator = allPages[Symbol.iterator]();
167
- case 12:
168
- if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
169
- _ctx.next = 40;
170
- break;
171
- }
172
- _ref = _step.value;
173
- filePath = _ref;
174
- _ctx.next = 17;
175
- return mutableFilesystem.promises.readFile(String(filePath));
176
- case 17:
177
- rawPage = _ctx.sent;
178
- _ctx.next = 20;
179
- return serialiser.deserialise(String(filePath), rawPage);
180
- case 20:
181
- page = _ctx.sent;
182
- originalDiskSize += rawPage.length;
183
- _ctx.next = 24;
184
- return fs.promises.mkdir(path.dirname(path.join(baseDir, String(filePath))), {
185
- recursive: true
186
- });
187
- case 24:
188
- _ctx.t0 = fs.promises;
189
- _ctx.t1 = path.join(baseDir, String(filePath));
190
- _ctx.next = 28;
191
- return serialiser.serialise(String(filePath), page);
192
- case 28:
193
- _ctx.t2 = _ctx.sent;
194
- _ctx.next = 31;
195
- return _ctx.t0.writeFile.call(_ctx.t0, _ctx.t1, _ctx.t2);
196
- case 31:
197
- content = page.content, pageRest = _objectWithoutProperties(page, [
198
- "content"
199
- ]);
200
- hddPaths[String(filePath)] = path.join(baseDir, String(filePath));
201
- _ctx.next = 35;
202
- return serialiser.serialise(String(filePath), pageRest);
203
- case 35:
204
- redactedPage = _ctx.sent;
205
- newDiskSize += redactedPage.length;
206
- case 37:
207
- _iteratorNormalCompletion = true;
208
- _ctx.next = 12;
209
- break;
210
- case 40:
211
- _ctx.next = 46;
212
- break;
213
- case 42:
214
- _ctx.prev = 42;
215
- _ctx.t3 = _ctx["catch"](10);
216
- _didIteratorError = true;
217
- _iteratorError = _ctx.t3;
218
- case 46:
219
- _ctx.prev = 46;
220
- _ctx.prev = 47;
221
- if (!_iteratorNormalCompletion && _iterator.return != null) {
222
- _iterator.return();
223
- }
224
- case 49:
225
- _ctx.prev = 49;
226
- if (!_didIteratorError) {
227
- _ctx.next = 52;
228
- break;
229
- }
230
- throw _iteratorError;
231
- case 52:
232
- return _ctx.finish(49);
233
- case 53:
234
- return _ctx.finish(46);
235
- case 54:
236
- config.setData({
237
- hddPaths: hddPaths
238
- });
239
- reduction = originalDiskSize - newDiskSize;
240
- console.info("[Mosaic] LazyPagePlugin moved ".concat((reduction / originalDiskSize * 100).toFixed(2), "% of virtual filesystem content to the hard disk. This reduced the virtual filesystem size from ").concat((originalDiskSize / 1000000).toFixed(2), "mb to ").concat((newDiskSize / 1000000).toFixed(2), "mb (yay!)"));
241
- case 57:
242
- case "end":
243
- return _ctx.stop();
244
- }
245
- }, _callee, null, [
246
- [
247
- 10,
248
- 42,
249
- 46,
250
- 54
251
- ],
252
- [
253
- 47,
254
- ,
255
- 49,
256
- 53
257
- ]
258
- ]);
259
- }))();
30
+ async $beforeSend(mutableFilesystem, { config, serialiser, ignorePages, pageExtensions }, options) {
31
+ const hddPaths = {};
32
+ let originalDiskSize = 0;
33
+ let newDiskSize = 0;
34
+ const allPages = await mutableFilesystem.promises.glob(createFileGlob('**', pageExtensions), {
35
+ ignore: ignorePages.map(ignore => `**/${ignore}`),
36
+ cwd: '/',
37
+ onlyFiles: true
38
+ });
39
+ const baseDir = path.join(process.cwd(), options.cacheDir || '.mosaic-lazy-page-plugin-cache');
40
+ await fsExtra.ensureDir(baseDir);
41
+ for (const filePath of allPages) {
42
+ const rawPage = await mutableFilesystem.promises.readFile(String(filePath));
43
+ const page = await serialiser.deserialise(String(filePath), rawPage);
44
+ originalDiskSize += rawPage.length;
45
+ await fs.promises.mkdir(path.dirname(path.join(baseDir, String(filePath))), {
46
+ recursive: true
47
+ });
48
+ await fs.promises.writeFile(path.join(baseDir, String(filePath)), await serialiser.serialise(String(filePath), page));
49
+ const { content, ...pageRest } = page;
50
+ hddPaths[String(filePath)] = path.join(baseDir, String(filePath));
51
+ const redactedPage = await serialiser.serialise(String(filePath), pageRest);
52
+ newDiskSize += redactedPage.length;
53
+ }
54
+ config.setData({ hddPaths });
55
+ const reduction = originalDiskSize - newDiskSize;
56
+ console.info(`[Mosaic] LazyPagePlugin moved ${((reduction / originalDiskSize) * 100).toFixed(2)}% of virtual filesystem content to the hard disk. This reduced the virtual filesystem size from ${(originalDiskSize / 1000000).toFixed(2)}mb to ${(newDiskSize / 1000000).toFixed(2)}mb (yay!)`);
260
57
  }
261
58
  };
262
59
  export default LazyPagePlugin;
263
-
264
60
  //# sourceMappingURL=LazyPagePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/LazyPagePlugin.ts"],"sourcesContent":["import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';\nimport fs from 'fs';\nimport fsExtra from 'fs-extra';\nimport merge from 'lodash/merge';\nimport escapeRegExp from 'lodash/escapeRegExp';\nimport path from 'path';\nimport { TDataOut } from 'memfs/lib/encoding';\n\nfunction createPageTest(ignorePages, pageExtensions) {\n const extTest = new RegExp(`${pageExtensions.map(escapeRegExp).join('|')}$`);\n const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp).join('|')}$`);\n return file =>\n !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');\n}\n\nfunction createFileGlob(url, pageExtensions) {\n if (pageExtensions.length === 1) {\n return `${url}${pageExtensions[0]}`;\n }\n return `${url}{${pageExtensions.join(',')}}`;\n}\n\ninterface LazyPagePluginPage extends Page {\n aliases: { [key: string]: Set<string> };\n hddPaths: { [key: string]: string };\n}\ninterface LazyPagePluginOptions {\n cacheDir?: string;\n}\n\nconst LazyPagePlugin: PluginType<LazyPagePluginPage, LazyPagePluginOptions> = {\n async afterUpdate(mutableFilesystem, { ignorePages, config, pageExtensions, serialiser }) {\n const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);\n\n // This adds a hook that triggers everytime a non-cached page is read from the filesystem.\n mutableFilesystem.__internal_do_not_use_addReadFileHook(\n async (pagePath: string, fileData: TDataOut) => {\n // If this is a 'page' - read the original file from disk and try to inject anything that's missing.\n if (isNonHiddenPage(pagePath)) {\n const currentPage = await serialiser.deserialise(pagePath, fileData);\n if (config.data.hddPaths[pagePath]) {\n const page = await serialiser.deserialise(\n pagePath,\n await fs.promises.readFile(config.data.hddPaths[pagePath])\n );\n const completePage = await serialiser.serialise(\n pagePath,\n merge(page, currentPage, { content: page.content })\n );\n return completePage;\n }\n }\n return fileData;\n }\n );\n },\n async $beforeSend(\n mutableFilesystem,\n { config, serialiser, ignorePages, pageExtensions },\n options\n ) {\n const hddPaths = {};\n let originalDiskSize = 0;\n let newDiskSize = 0;\n const allPages = await mutableFilesystem.promises.glob(createFileGlob('**', pageExtensions), {\n ignore: ignorePages.map(ignore => `**/${ignore}`),\n cwd: '/',\n onlyFiles: true\n });\n const baseDir = path.join(process.cwd(), options.cacheDir || '.mosaic-lazy-page-plugin-cache');\n await fsExtra.ensureDir(baseDir);\n for (const filePath of allPages) {\n const rawPage = await mutableFilesystem.promises.readFile(String(filePath));\n const page = await serialiser.deserialise(String(filePath), rawPage);\n originalDiskSize += rawPage.length;\n await fs.promises.mkdir(path.dirname(path.join(baseDir, String(filePath))), {\n recursive: true\n });\n await fs.promises.writeFile(\n path.join(baseDir, String(filePath)),\n await serialiser.serialise(String(filePath), page)\n );\n const { content, ...pageRest } = page;\n hddPaths[String(filePath)] = path.join(baseDir, String(filePath));\n const redactedPage = await serialiser.serialise(String(filePath), pageRest);\n newDiskSize += redactedPage.length;\n }\n\n config.setData({ hddPaths });\n\n const reduction = originalDiskSize - newDiskSize;\n console.info(\n `[Mosaic] LazyPagePlugin moved ${((reduction / originalDiskSize) * 100).toFixed(\n 2\n )}% of virtual filesystem content to the hard disk. This reduced the virtual filesystem size from ${(\n originalDiskSize / 1000000\n ).toFixed(2)}mb to ${(newDiskSize / 1000000).toFixed(2)}mb (yay!)`\n );\n }\n};\n\nexport default LazyPagePlugin;\n"],"names":["fs","fsExtra","merge","escapeRegExp","path","createPageTest","ignorePages","pageExtensions","extTest","RegExp","map","join","ignoreTest","file","test","basename","startsWith","createFileGlob","url","length","LazyPagePlugin","afterUpdate","mutableFilesystem","config","serialiser","isNonHiddenPage","__internal_do_not_use_addReadFileHook","pagePath","fileData","currentPage","page","completePage","deserialise","data","hddPaths","promises","readFile","serialise","content","$beforeSend","options","originalDiskSize","newDiskSize","allPages","baseDir","filePath","rawPage","pageRest","redactedPage","reduction","glob","ignore","cwd","onlyFiles","process","cacheDir","ensureDir","String","mkdir","dirname","recursive","writeFile","setData","console","info","toFixed"],"mappings":"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"}
1
+ {"version":3,"file":"LazyPagePlugin.js","sourceRoot":"","sources":["../src/LazyPagePlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ /**
3
+ * Plugin that creates aliases without the file extension for every page emitted by the source.
4
+ * This allows pages to be retrieved from the filesystem without specifying `.mdx` (or whatever file extension is specified in `options.stripExt`).
5
+ * The plugin also modifies the `route` to point to the shorter alias. Friendly fullPaths are the shortest possible paths that
6
+ * will point to the page (see `Page` docs)
7
+ */
8
+ declare const PagesWithoutFileExtPlugin: PluginType;
9
+ export default PagesWithoutFileExtPlugin;