@jpmorganchase/mosaic-plugins 0.1.0-beta.7 → 0.1.0-beta.70

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 (75) hide show
  1. package/dist/$AliasPlugin.d.ts +10 -0
  2. package/dist/$AliasPlugin.js +37 -44
  3. package/dist/$AliasPlugin.js.map +1 -1
  4. package/dist/$CodeModPlugin.d.ts +7 -0
  5. package/dist/$CodeModPlugin.js +16 -26
  6. package/dist/$CodeModPlugin.js.map +1 -1
  7. package/dist/$RefPlugin.d.ts +31 -0
  8. package/dist/$RefPlugin.js +112 -106
  9. package/dist/$RefPlugin.js.map +1 -1
  10. package/dist/$TagPlugin.d.ts +28 -0
  11. package/dist/$TagPlugin.js +26 -42
  12. package/dist/$TagPlugin.js.map +1 -1
  13. package/dist/BreadcrumbsPlugin.d.ts +19 -0
  14. package/dist/BreadcrumbsPlugin.js +82 -33
  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 +7 -0
  20. package/dist/FragmentPlugin.js +92 -0
  21. package/dist/FragmentPlugin.js.map +1 -0
  22. package/dist/LazyPagePlugin.d.ts +14 -0
  23. package/dist/LazyPagePlugin.js +49 -77
  24. package/dist/LazyPagePlugin.js.map +1 -1
  25. package/dist/PagesWithoutFileExtPlugin.d.ts +9 -0
  26. package/dist/PagesWithoutFileExtPlugin.js +17 -27
  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 +36 -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 +128 -32
  42. package/dist/SharedConfigPlugin.js.map +1 -1
  43. package/dist/SidebarPlugin.d.ts +44 -0
  44. package/dist/SidebarPlugin.js +235 -88
  45. package/dist/SidebarPlugin.js.map +1 -1
  46. package/dist/SiteMapPlugin.d.ts +9 -0
  47. package/dist/SiteMapPlugin.js +20 -34
  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/mergePageContent.d.ts +16 -0
  56. package/dist/utils/mergePageContent.js +23 -0
  57. package/dist/utils/mergePageContent.js.map +1 -0
  58. package/dist/utils/normaliseRefs.d.ts +1 -0
  59. package/dist/utils/normaliseRefs.js +52 -69
  60. package/dist/utils/normaliseRefs.js.map +1 -1
  61. package/dist/utils/sortSidebarData.d.ts +19 -0
  62. package/dist/utils/sortSidebarData.js +35 -0
  63. package/dist/utils/sortSidebarData.js.map +1 -0
  64. package/package.json +40 -18
  65. package/CHANGELOG.md +0 -79
  66. package/dist/LocalFolderSavePlugin.js +0 -48
  67. package/dist/LocalFolderSavePlugin.js.map +0 -1
  68. package/dist/NextPrevPagePlugin.js +0 -63
  69. package/dist/NextPrevPagePlugin.js.map +0 -1
  70. package/dist/ReadingTimePlugin.mjs +0 -119
  71. package/dist/ReadingTimePlugin.mjs.map +0 -1
  72. package/dist/SearchIndexPlugin.mjs +0 -268
  73. package/dist/SearchIndexPlugin.mjs.map +0 -1
  74. package/dist/TableOfContentsPlugin.mjs +0 -131
  75. package/dist/TableOfContentsPlugin.mjs.map +0 -1
@@ -0,0 +1,10 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface AliasPluginPage extends Page {
3
+ aliases?: string[];
4
+ }
5
+ /**
6
+ * Plugin that scrapes `aliases` from page metadata and also applies all aliases stored in `config.data.aliases`
7
+ * Other plugins can use `setAliases` to apply new aliases, as long as they call it before this plugin has reaches `$beforeSend`
8
+ */
9
+ declare const $AliasPlugin: PluginType<AliasPluginPage>;
10
+ export default $AliasPlugin;
@@ -1,34 +1,21 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- const lodash_1 = require("lodash");
1
+ import path from 'path';
2
+ import { escapeRegExp } from 'lodash-es';
3
+ import PluginError from './utils/PluginError.js';
17
4
  function createPageTest(ignorePages, pageExtensions) {
18
- const extTest = new RegExp(`${pageExtensions.map(lodash_1.escapeRegExp).join('|')}$`);
19
- const ignoreTest = new RegExp(`${ignorePages.map(lodash_1.escapeRegExp).join('|')}$`);
20
- return file => !ignoreTest.test(file) && extTest.test(file) && !path_1.default.basename(file).startsWith('.');
5
+ const extTest = new RegExp(`${pageExtensions.map(escapeRegExp).join('|')}$`);
6
+ const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp).join('|')}$`);
7
+ return file => !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');
21
8
  }
22
9
  /**
23
10
  * Plugin that scrapes `aliases` from page metadata and also applies all aliases stored in `config.data.aliases`
24
11
  * Other plugins can use `setAliases` to apply new aliases, as long as they call it before this plugin has reaches `$beforeSend`
25
12
  */
26
13
  const $AliasPlugin = {
27
- $afterSource(pages, { config, ignorePages, pageExtensions }) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
30
- // Group together all aliases defined in the frontmatter and store them in the alias config object
31
- for (const page of pages) {
14
+ async $afterSource(pages, { config, ignorePages, pageExtensions }) {
15
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
16
+ // Group together all aliases defined in the frontmatter and store them in the alias config object
17
+ for (const page of pages) {
18
+ try {
32
19
  if (!isNonHiddenPage(page.fullPath)) {
33
20
  continue;
34
21
  }
@@ -37,37 +24,43 @@ const $AliasPlugin = {
37
24
  }
38
25
  delete page.aliases;
39
26
  }
40
- return pages;
41
- });
42
- },
43
- $beforeSend(mutableFilesystem, { config }) {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- // Prevent any more aliases being set after this lifecycle has been called - as they won't take effect
46
- config.setAliases = () => {
47
- throw new Error('Cannot set aliases after `$AliasPlugin` has reached `$beforeSend` lifecycle phase.');
48
- };
49
- if (!config.data.aliases) {
50
- return;
27
+ catch (e) {
28
+ throw new PluginError(e.message, page.fullPath);
51
29
  }
52
- for (const fullPath in config.data.aliases) {
30
+ }
31
+ return pages;
32
+ },
33
+ async $beforeSend(mutableFilesystem, { config }) {
34
+ // Prevent any more aliases being set after this lifecycle has been called - as they won't take effect
35
+ config.setAliases = () => {
36
+ throw new Error('Cannot set aliases after `$AliasPlugin` has reached `$beforeSend` lifecycle phase.');
37
+ };
38
+ if (!config.data.aliases) {
39
+ return;
40
+ }
41
+ for (const fullPath in config.data.aliases) {
42
+ try {
53
43
  for (const alias of config.data.aliases[fullPath]) {
54
- const aliasPath = path_1.default.resolve(path_1.default.dirname(fullPath), alias).toLowerCase();
55
- const aliasDir = path_1.default.dirname(aliasPath);
56
- if (!(yield mutableFilesystem.promises.exists(aliasDir))) {
57
- yield mutableFilesystem.promises.mkdir(aliasDir, {
44
+ const aliasPath = path.posix.resolve(path.dirname(fullPath), alias).toLowerCase();
45
+ const aliasDir = path.dirname(aliasPath);
46
+ if (!(await mutableFilesystem.promises.exists(aliasDir))) {
47
+ await mutableFilesystem.promises.mkdir(aliasDir, {
58
48
  recursive: true
59
49
  });
60
50
  }
61
- if (!(yield mutableFilesystem.promises.exists(aliasPath))) {
62
- yield mutableFilesystem.promises.symlink(fullPath, aliasPath);
51
+ if (!(await mutableFilesystem.promises.exists(aliasPath))) {
52
+ await mutableFilesystem.promises.symlink(fullPath, aliasPath);
63
53
  }
64
54
  else {
65
55
  console.warn(`Alias '${aliasPath}' already exists. Is there a duplicate alias, or a page with the same name but different file extensions?`);
66
56
  }
67
57
  }
68
58
  }
69
- });
59
+ catch (e) {
60
+ throw new PluginError(e.message, fullPath);
61
+ }
62
+ }
70
63
  }
71
64
  };
72
- exports.default = $AliasPlugin;
65
+ export default $AliasPlugin;
73
66
  //# sourceMappingURL=$AliasPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"$AliasPlugin.js","sourceRoot":"","sources":["../src/$AliasPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,mCAAsC;AAGtC,SAAS,cAAc,CAAC,WAAW,EAAE,cAAc;IACjD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAY,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,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAMD;;;GAGG;AACH,MAAM,YAAY,GAAgC;IAC1C,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;;YAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAEpE,kGAAkG;YAClG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACnC,SAAS;iBACV;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;iBAChD;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAEK,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE;;YAC7C,sGAAsG;YACtG,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;gBACvB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;YACJ,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBACxB,OAAO;aACR;YACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACjD,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC5E,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzC,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;wBACxD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;4BAC/C,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAC;qBACJ;oBACD,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;wBACzD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;qBAC/D;yBAAM;wBACL,OAAO,CAAC,IAAI,CACV,UAAU,SAAS,2GAA2G,CAC/H,CAAC;qBACH;iBACF;aACF;QACH,CAAC;KAAA;CACF,CAAC;AAEF,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"$AliasPlugin.js","sourceRoot":"","sources":["../src/$AliasPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface CodeModPluginPage extends Page {
3
+ frameOverrides?: Record<string, unknown>;
4
+ sharedConfig?: Record<string, unknown>;
5
+ }
6
+ declare const $CodeModPlugin: PluginType<CodeModPluginPage>;
7
+ export default $CodeModPlugin;
@@ -1,29 +1,16 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const lodash_1 = require("lodash");
16
- const path_1 = __importDefault(require("path"));
1
+ import { escapeRegExp } from 'lodash-es';
2
+ import path from 'path';
3
+ import PluginError from './utils/PluginError.js';
17
4
  function createPageTest(ignorePages, pageExtensions) {
18
- const extTest = new RegExp(`${pageExtensions.map(lodash_1.escapeRegExp).join('|')}$`);
19
- const ignoreTest = new RegExp(`${ignorePages.map(lodash_1.escapeRegExp).join('|')}$`);
20
- return file => !ignoreTest.test(file) && extTest.test(file) && !path_1.default.basename(file).startsWith('.');
5
+ const extTest = new RegExp(`${pageExtensions.map(escapeRegExp).join('|')}$`);
6
+ const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp).join('|')}$`);
7
+ return file => !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');
21
8
  }
22
9
  const $CodeModPlugin = {
23
- $afterSource(pages, { ignorePages, pageExtensions }) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
26
- for (const page of pages) {
10
+ async $afterSource(pages, { ignorePages, pageExtensions }) {
11
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
12
+ for (const page of pages) {
13
+ try {
27
14
  if (!isNonHiddenPage(page.fullPath)) {
28
15
  continue;
29
16
  }
@@ -32,9 +19,12 @@ const $CodeModPlugin = {
32
19
  page.frameOverrides = { $ref: '#/sharedConfig' };
33
20
  }
34
21
  }
35
- return pages;
36
- });
22
+ catch (e) {
23
+ throw new PluginError(e.message, page.fullPath);
24
+ }
25
+ }
26
+ return pages;
37
27
  }
38
28
  };
39
- exports.default = $CodeModPlugin;
29
+ export default $CodeModPlugin;
40
30
  //# sourceMappingURL=$CodeModPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"$CodeModPlugin.js","sourceRoot":"","sources":["../src/$CodeModPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,mCAAsC;AACtC,gDAAwB;AAExB,SAAS,cAAc,CAAC,WAAW,EAAE,cAAc;IACjD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAY,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,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAOD,MAAM,cAAc,GAAkC;IAC9C,YAAY,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;;YACvD,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACnC,SAAS;iBACV;gBACD,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;oBACxC,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;iBAClD;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;CACF,CAAC;AAEF,kBAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"$CodeModPlugin.js","sourceRoot":"","sources":["../src/$CodeModPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,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;AAOD,MAAM,cAAc,GAAkC;IACpD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;QACvD,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI;gBACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACnC,SAAS;iBACV;gBACD,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;oBACxC,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;iBAClD;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACjD;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface RefsPluginConfigData {
3
+ refs: {
4
+ [key: string]: {
5
+ $$path: string[];
6
+ $$value: string;
7
+ }[];
8
+ };
9
+ globalRefs: {
10
+ [key: string]: {
11
+ $$path: string[];
12
+ $$value: string;
13
+ }[];
14
+ };
15
+ subscribedTags: string[];
16
+ }
17
+ interface RefsPluginPage {
18
+ fullPath: string;
19
+ refs: {
20
+ [key: string]: {
21
+ $$path: string[];
22
+ $$value: string;
23
+ }[];
24
+ };
25
+ }
26
+ /**
27
+ * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.
28
+ * Other plugins can use `setRef` to apply new refs, as long as they call it before this plugin has reaches `$beforeSend`
29
+ */
30
+ declare const $RefPlugin: PluginType<RefsPluginPage, unknown, RefsPluginConfigData>;
31
+ export default $RefPlugin;
@@ -1,45 +1,46 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- const reduce_1 = __importDefault(require("lodash/reduce"));
17
- const omit_1 = __importDefault(require("lodash/omit"));
18
- const merge_1 = __importDefault(require("lodash/merge"));
19
- const escapeRegExp_1 = __importDefault(require("lodash/escapeRegExp"));
20
- const json_schema_ref_parser_1 = __importDefault(require("@apidevtools/json-schema-ref-parser"));
21
- const normaliseRefs_1 = __importDefault(require("./utils/normaliseRefs"));
1
+ import path from 'node:path';
2
+ import os from 'node:os';
3
+ import { reduce, omit, escapeRegExp } from 'lodash-es';
4
+ import { $RefParser } from '@apidevtools/json-schema-ref-parser';
5
+ import deepmerge from 'deepmerge';
6
+ import normaliseRefs from './utils/normaliseRefs.js';
7
+ import PluginError from './utils/PluginError.js';
8
+ import { mergePageContent } from './utils/mergePageContent.js';
9
+ const isWindows = /^win/.test(os.platform());
10
+ const windowsDrivePattern = /^([a-z]):/i;
11
+ /**
12
+ * The JSON Schema Ref parser turns refs into URLs.
13
+ * When running on Windows it adds in the drive letter to the beginning of the resolved ref filepath
14
+ *
15
+ * WE DON"T WANT THIS
16
+ *
17
+ * Regardless of platform, Mosaic uses an in-memory fs so we don't need drive letters.
18
+ * We need the path as it is in the mosaic fs.
19
+ */
20
+ function normaliseWindowsPath(url) {
21
+ const drivePart = windowsDrivePattern.exec(url)?.[0];
22
+ return drivePart ? url.slice(drivePart.length) : url;
23
+ }
22
24
  function createRefResolver(normalisedRefs, serialiser, mutableFilesystem) {
23
25
  return {
24
26
  file: {
25
27
  canRead: true,
26
28
  order: 1,
27
- read(file, callback) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- try {
30
- const refedPage = normalisedRefs[file.url] ||
31
- (yield serialiser.deserialise(file.url, yield mutableFilesystem.promises.readFile(file.url)));
32
- return callback(null, (0, omit_1.default)(refedPage, 'content'));
33
- }
34
- catch (e) {
35
- return callback(e, null);
36
- }
37
- });
29
+ async read(file, callback) {
30
+ try {
31
+ const filePath = isWindows ? normaliseWindowsPath(file.url) : file.url;
32
+ const refedPage = normalisedRefs[filePath] ||
33
+ (await serialiser.deserialise(filePath, await mutableFilesystem.promises.readFile(filePath)));
34
+ return callback(null, omit(refedPage, 'content'));
35
+ }
36
+ catch (e) {
37
+ return callback(e, null);
38
+ }
38
39
  }
39
40
  }
40
41
  };
41
42
  }
42
- const findKeys = (obj, targetProp, pathParts = []) => (0, reduce_1.default)(obj, (found, value, key) => {
43
+ const findKeys = (obj, targetProp, pathParts = []) => reduce(obj, (found, value, key) => {
43
44
  if (key === targetProp) {
44
45
  return found.concat([[pathParts.concat(String(key)), value]]);
45
46
  }
@@ -50,95 +51,100 @@ const findKeys = (obj, targetProp, pathParts = []) => (0, reduce_1.default)(obj,
50
51
  return found;
51
52
  }, []);
52
53
  function createPageTest(ignorePages, pageExtensions) {
53
- const extTest = new RegExp(`${pageExtensions.map(escapeRegExp_1.default).join('|')}$`);
54
- const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp_1.default).join('|')}$`);
55
- return file => !ignoreTest.test(file) && extTest.test(file) && !path_1.default.basename(file).startsWith('.');
54
+ const extTest = new RegExp(`${pageExtensions.map(escapeRegExp).join('|')}$`);
55
+ const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp).join('|')}$`);
56
+ return file => !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');
56
57
  }
57
58
  /**
58
59
  * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.
59
60
  * Other plugins can use `setRef` to apply new refs, as long as they call it before this plugin has reaches `$beforeSend`
60
61
  */
61
62
  const $RefPlugin = {
62
- afterUpdate(mutableFilesystem, { ignorePages, globalFilesystem, serialiser, pageExtensions, globalConfig }) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- mutableFilesystem.__internal_do_not_use_addReadFileHook((pagePath, fileData) => __awaiter(this, void 0, void 0, function* () {
65
- if (globalConfig.data.globalRefs[pagePath]) {
66
- const normalisedRef = (0, merge_1.default)(yield serialiser.deserialise(pagePath, fileData), yield (0, normaliseRefs_1.default)(String(pagePath), globalConfig.data.globalRefs[pagePath], globalFilesystem, pageExtensions, ignorePages));
67
- const resolve = createRefResolver({
68
- [pagePath]: normalisedRef
69
- }, serialiser, globalFilesystem);
70
- const refParser = new json_schema_ref_parser_1.default();
71
- try {
72
- const resolved = yield refParser.dereference(String(pagePath), normalisedRef, {
73
- resolve,
74
- dereference: { circular: false }
75
- });
76
- const serialisedPage = yield serialiser.serialise(pagePath, (0, merge_1.default)(normalisedRef, resolved));
77
- return serialisedPage;
78
- }
79
- catch (e) {
80
- console.warn(`Error resolving ref(s) for page '${pagePath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
81
- throw e;
82
- }
63
+ async afterUpdate(mutableFilesystem, { ignorePages, globalFilesystem, serialiser, pageExtensions, globalConfig }) {
64
+ mutableFilesystem.__internal_do_not_use_addReadFileHook(async (pagePath, fileData) => {
65
+ if (globalConfig.data.globalRefs[pagePath]) {
66
+ const expandedRefs = await normaliseRefs(String(pagePath), globalConfig.data.globalRefs[pagePath], globalFilesystem, pageExtensions, ignorePages);
67
+ const page = await serialiser.deserialise(pagePath, fileData);
68
+ const normalisedRef = mergePageContent(page, expandedRefs);
69
+ const resolve = createRefResolver({
70
+ [pagePath]: normalisedRef
71
+ }, serialiser, globalFilesystem);
72
+ const refParser = new $RefParser();
73
+ try {
74
+ const resolved = await refParser.dereference(String(pagePath), normalisedRef, {
75
+ resolve,
76
+ dereference: { circular: false }
77
+ });
78
+ const serialisedPage = await serialiser.serialise(pagePath, {
79
+ ...normalisedRef,
80
+ ...resolved
81
+ });
82
+ return serialisedPage;
83
83
  }
84
- return fileData;
85
- }));
84
+ catch (e) {
85
+ console.warn(`Error resolving ref(s) for page '${pagePath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
86
+ throw new PluginError(e.message, page.fullPath);
87
+ }
88
+ }
89
+ return fileData;
86
90
  });
87
91
  },
88
- $beforeSend(mutableFilesystem, { config, serialiser, pageExtensions, ignorePages }) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- // Prevent any more refs being set after this lifecycle has been called - as they won't take effect
91
- config.setRef = () => {
92
- throw new Error('Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.');
93
- };
94
- const normalisedRefs = {};
95
- if (config.data.refs) {
96
- // First pass of refs, normalises any $ref entries to expand wildcards
97
- for (const fullPath in config.data.refs) {
98
- const page = yield serialiser.deserialise(fullPath, yield mutableFilesystem.promises.readFile(fullPath));
99
- normalisedRefs[fullPath] = (0, merge_1.default)(page, yield (0, normaliseRefs_1.default)(String(fullPath), config.data.refs[fullPath], mutableFilesystem, pageExtensions, ignorePages));
92
+ async $beforeSend(mutableFilesystem, { config, serialiser, pageExtensions, ignorePages }) {
93
+ // Prevent any more refs being set after this lifecycle has been called - as they won't take effect
94
+ config.setRef = () => {
95
+ throw new Error('Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.');
96
+ };
97
+ const normalisedRefs = {};
98
+ if (config.data.refs) {
99
+ // First pass of refs, normalises any $ref entries to expand wildcards
100
+ for (const fullPath in config.data.refs) {
101
+ const page = await serialiser.deserialise(fullPath, await mutableFilesystem.promises.readFile(fullPath));
102
+ try {
103
+ const expandedRefs = await normaliseRefs(String(fullPath), config.data.refs[fullPath], mutableFilesystem, pageExtensions, ignorePages);
104
+ normalisedRefs[fullPath] = deepmerge(page, expandedRefs);
100
105
  }
101
- const resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);
102
- const refParser = new json_schema_ref_parser_1.default();
103
- // Second pass of refs, resolves the refs
104
- for (const fullPath in normalisedRefs) {
105
- const page = normalisedRefs[fullPath];
106
- try {
107
- const resolved = yield refParser.dereference(String(fullPath), page, {
108
- resolve,
109
- dereference: { circular: false }
110
- });
111
- normalisedRefs[fullPath] = Object.assign(Object.assign({}, page), resolved);
112
- }
113
- catch (e) {
114
- console.warn(`Error resolving ref(s) for page '${fullPath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
115
- throw e;
116
- }
106
+ catch (e) {
107
+ throw new PluginError(e.message, page.fullPath);
117
108
  }
118
- // Third pass, write out the files
119
- for (const fullPath in normalisedRefs) {
120
- yield mutableFilesystem.promises.writeFile(fullPath, yield serialiser.serialise(fullPath, normalisedRefs[fullPath]));
109
+ }
110
+ const resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);
111
+ const refParser = new $RefParser();
112
+ // Second pass of refs, resolves the refs
113
+ for (const fullPath in normalisedRefs) {
114
+ const page = normalisedRefs[fullPath];
115
+ try {
116
+ const resolved = await refParser.dereference(String(fullPath), page, {
117
+ resolve,
118
+ dereference: { circular: false }
119
+ });
120
+ normalisedRefs[fullPath] = { ...page, ...resolved };
121
+ }
122
+ catch (e) {
123
+ console.warn(`Error resolving ref(s) for page '${fullPath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
124
+ throw new PluginError(e.message, page.fullPath);
121
125
  }
122
126
  }
123
- });
127
+ // Third pass, write out the files
128
+ for (const fullPath in normalisedRefs) {
129
+ await mutableFilesystem.promises.writeFile(fullPath, await serialiser.serialise(fullPath, normalisedRefs[fullPath]));
130
+ }
131
+ }
124
132
  },
125
- $afterSource(pages, { config, ignorePages, pageExtensions }) {
126
- return __awaiter(this, void 0, void 0, function* () {
127
- const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
128
- for (const page of pages) {
129
- if (!isNonHiddenPage(page.fullPath)) {
130
- continue;
131
- }
132
- const refs = findKeys(page, '$ref');
133
- if (refs.length) {
134
- for (const ref of refs) {
135
- config.setRef(page.fullPath, ...ref);
136
- }
133
+ async $afterSource(pages, { config, ignorePages, pageExtensions }) {
134
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
135
+ for (const page of pages) {
136
+ if (!isNonHiddenPage(page.fullPath)) {
137
+ continue;
138
+ }
139
+ const refs = findKeys(page, '$ref');
140
+ if (refs.length) {
141
+ for (const ref of refs) {
142
+ config.setRef(page.fullPath, ...ref);
137
143
  }
138
144
  }
139
- return pages;
140
- });
145
+ }
146
+ return pages;
141
147
  }
142
148
  };
143
- exports.default = $RefPlugin;
149
+ export default $RefPlugin;
144
150
  //# sourceMappingURL=$RefPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"$RefPlugin.js","sourceRoot":"","sources":["../src/$RefPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"$RefPlugin.js","sourceRoot":"","sources":["../src/$RefPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';
2
+ interface TagPluginPage extends Page {
3
+ tags?: string[];
4
+ }
5
+ interface TagPluginConfigData {
6
+ tagRefs: {
7
+ [key: string]: {
8
+ $$path: string[];
9
+ $$value: string[];
10
+ }[];
11
+ };
12
+ globalRefs: {
13
+ [key: string]: {
14
+ $$path: string[];
15
+ $$value: string[];
16
+ }[];
17
+ };
18
+ subscribedTags: string[];
19
+ }
20
+ /**
21
+ * Plugin that scrapes `$tag` from page metadata and also applies all aliases stored in `config.data.tags`.
22
+ * Tags ultimately resolve down into refs, but are different from normal refs, in that they are applied to the
23
+ * union filesystem (all merged filesystems), not to the individual source filesystem that they were defined on.
24
+ * Other plugins can use `setData()` and modify the `tags` property, to apply new global refs, as long as
25
+ * they do so before this plugin has reaches `$beforeSend`
26
+ */
27
+ declare const $TagPlugin: PluginType<TagPluginPage, unknown, TagPluginConfigData>;
28
+ export default $TagPlugin;