@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 @@
1
+ export default function normaliseRefs(filepath: any, refs: any, filesystem: any, pageExtensions: any, ignorePages: any): Promise<{}>;
@@ -1,83 +1,66 @@
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 fast_glob_1 = __importDefault(require("fast-glob"));
17
- const set_1 = __importDefault(require("lodash/set"));
1
+ import path from 'path';
2
+ import glob from 'fast-glob';
3
+ import { set } from 'lodash-es';
18
4
  function createFileGlob(url, pageExtensions) {
19
5
  if (pageExtensions.length === 1) {
20
6
  return `${url}${pageExtensions[0]}`;
21
7
  }
22
8
  return `${url}{${pageExtensions.join(',')}}`;
23
9
  }
24
- function normaliseRefs(filepath, refs, filesystem, pageExtensions, ignorePages) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const configWithoutGlobs = {};
27
- for (let i = 0; i < refs.length; i++) {
28
- const ref = refs[i];
29
- const [url, fragment = ''] = ref.$$value.split('#');
30
- if (!url) {
31
- continue;
10
+ export default async function normaliseRefs(filepath, refs, filesystem, pageExtensions, ignorePages) {
11
+ const configWithoutGlobs = {};
12
+ for (let i = 0; i < refs.length; i++) {
13
+ const ref = refs[i];
14
+ const [url, fragment = ''] = ref.$$value.split('#');
15
+ if (!url) {
16
+ continue;
17
+ }
18
+ const fullUrl = path.posix.resolve(path.posix.dirname(filepath), url);
19
+ if (!glob.isDynamicPattern(url)) {
20
+ if (!(await filesystem.promises.exists(fullUrl))) {
21
+ throw new Error(`A \`$ref\` for '${filepath}' pointed to page '${fullUrl}' - which could not be found.`);
32
22
  }
33
- const fullUrl = path_1.default.resolve(path_1.default.dirname(filepath), url);
34
- if (!fast_glob_1.default.isDynamicPattern(url)) {
35
- if (!(yield filesystem.promises.exists(fullUrl))) {
36
- throw new Error(`A \`$ref\` for '${filepath}' pointed to page '${fullUrl}' - which could not be found.`);
37
- }
38
- const refRealPath = yield filesystem.promises.realpath(fullUrl
39
- //path.resolve(path.dirname(filepath), url)
40
- );
41
- const stat = yield filesystem.promises.stat(refRealPath);
42
- // Turn directory refs into full index paths
43
- // TODO: But DO we want to do this?
44
- if (stat.isDirectory()) {
45
- // && !/\/index(\.\w{1,4})?$/.test(url)) {
46
- (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), {
47
- $ref: `${yield filesystem.promises.realpath(path_1.default.join(refRealPath, 'index'))}#${fragment}`
48
- });
49
- }
50
- else {
51
- (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), {
52
- $ref: `${refRealPath}#${fragment}`
53
- });
54
- }
55
- continue;
23
+ const refRealPath = await filesystem.promises.realpath(fullUrl
24
+ //path.resolve(path.dirname(filepath), url)
25
+ );
26
+ const stat = await filesystem.promises.stat(refRealPath);
27
+ // Turn directory refs into full index paths
28
+ // TODO: But DO we want to do this?
29
+ if (stat.isDirectory()) {
30
+ // && !/\/index(\.\w{1,4})?$/.test(url)) {
31
+ set(configWithoutGlobs, ref.$$path.slice(0, -1), {
32
+ $ref: `${await filesystem.promises.realpath(path.posix.join(refRealPath, 'index'))}#${fragment}`
33
+ });
56
34
  }
57
- try {
58
- let globResolvedRefs =
59
- // If the pattern doesn't have an explicit file extension - then we'll make it just return pages
60
- yield filesystem.promises.glob(!/\/[^/]+\.\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url, {
61
- ignore: [filepath, ...ignorePages.map(ignore => `**/${ignore}`)],
62
- cwd: path_1.default.dirname(filepath),
63
- absolute: true
35
+ else {
36
+ set(configWithoutGlobs, ref.$$path.slice(0, -1), {
37
+ $ref: `${refRealPath}#${fragment}`
64
38
  });
65
- // Use a set so we de-dupe any symlinks that point to the same page
66
- const resolvedRefs = new Set();
67
- for (const value of globResolvedRefs) {
68
- const refRealPath = yield filesystem.promises.realpath(path_1.default.resolve(filepath, value));
69
- if (refRealPath !== (yield filesystem.promises.realpath(filepath))) {
70
- resolvedRefs.add(`${refRealPath}#${fragment}`);
71
- }
72
- }
73
- (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), Array.from(resolvedRefs).map($ref => ({ $ref })));
74
39
  }
75
- catch (e) {
76
- throw e;
40
+ continue;
41
+ }
42
+ try {
43
+ let globResolvedRefs =
44
+ // If the pattern doesn't have an explicit file extension - then we'll make it just return pages
45
+ await filesystem.promises.glob(!/\/[^/]+\.\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url, {
46
+ ignore: [filepath, ...ignorePages.map(ignore => `**/${ignore}`)],
47
+ cwd: path.dirname(filepath),
48
+ absolute: true
49
+ });
50
+ // Use a set so we de-dupe any symlinks that point to the same page
51
+ const resolvedRefs = new Set();
52
+ for (const value of globResolvedRefs) {
53
+ const refRealPath = await filesystem.promises.realpath(path.posix.resolve(filepath, value));
54
+ if (refRealPath !== (await filesystem.promises.realpath(filepath))) {
55
+ resolvedRefs.add(`${refRealPath}#${fragment}`);
56
+ }
77
57
  }
58
+ set(configWithoutGlobs, ref.$$path.slice(0, -1), Array.from(resolvedRefs).map($ref => ({ $ref })));
78
59
  }
79
- return configWithoutGlobs;
80
- });
60
+ catch (e) {
61
+ throw e;
62
+ }
63
+ }
64
+ return configWithoutGlobs;
81
65
  }
82
- exports.default = normaliseRefs;
83
66
  //# sourceMappingURL=normaliseRefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normaliseRefs.js","sourceRoot":"","sources":["../../src/utils/normaliseRefs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normaliseRefs.js","sourceRoot":"","sources":["../../src/utils/normaliseRefs.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,49 +1,71 @@
1
1
  {
2
2
  "name": "@jpmorganchase/mosaic-plugins",
3
- "version": "0.1.0-beta.7",
3
+ "version": "0.1.0-beta.70",
4
4
  "author": "",
5
5
  "description": "Mosaic plugins for core file system",
6
6
  "license": "Apache-2.0",
7
- "main": "./dist/index.js",
7
+ "type": "module",
8
+ "exports": {
9
+ "./*": {
10
+ "types": "./dist/*.d.ts",
11
+ "import": "./dist/*.js",
12
+ "node": "./dist/*.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./PluginError": {
16
+ "types": "./dist/utils/PluginError.d.ts",
17
+ "import": "./dist/utils/PluginError.js",
18
+ "node": "./dist/utils/PluginError.js"
19
+ }
20
+ },
8
21
  "engines": {
9
- "node": ">= 12.0.0"
22
+ "node": ">=16.10.0 || >=18.0.0"
10
23
  },
11
24
  "files": [
12
25
  "dist"
13
26
  ],
14
27
  "scripts": {
15
- "build": "yarn clean && tsc && swc src -d dist && renamer --find \".mjs.js\" --replace \".mjs\" \"dist/*.mjs.js\" && renamer --find \".mjs.js.map\" --replace \".mjs.map\" \"dist/*.mjs.js.map\"",
16
- "clean": "rm -fr dist"
28
+ "build": "tsc",
29
+ "clean": "rm -fr dist",
30
+ "lint": "eslint --ignore-pattern \"**/__tests__/**\""
17
31
  },
18
32
  "repository": {
19
33
  "type": "git",
20
- "url": "git@github.com:jpmorganchase/mosaic.git"
34
+ "url": "git@github.com:jpmorganchase/mosaic.git",
35
+ "directory": "packages/plugins"
21
36
  },
22
37
  "devDependencies": {
23
- "@swc/cli": "^0.1.55",
24
- "@swc/core": "^1.2.237",
25
- "@types/fs-extra": "^9.0.13",
26
- "renamer": "^4.0.0"
38
+ "@types/fs-extra": "^9.0.13"
27
39
  },
28
40
  "dependencies": {
29
- "@apidevtools/json-schema-ref-parser": "^9.0.9",
30
- "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.7",
31
- "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.7",
32
- "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.7",
33
- "@jpmorganchase/mosaic-types": "^0.1.0-beta.7",
41
+ "@apidevtools/json-schema-ref-parser": "^10.1.0",
42
+ "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.70",
43
+ "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.70",
44
+ "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.70",
45
+ "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.70",
46
+ "@jpmorganchase/mosaic-types": "^0.1.0-beta.70",
34
47
  "@types/github-slugger": "^1.3.0",
35
48
  "@vcarl/remark-headings": "^0.1.0",
49
+ "check-links": "^2.0.0",
50
+ "deepmerge": "^4.3.1",
36
51
  "fs-extra": "^10.1.0",
37
52
  "github-slugger": "^1.4.0",
38
- "lodash": "^4.17.21",
39
- "memfs": "^3.3.0",
53
+ "https-proxy-agent": "^5.0.1",
54
+ "lodash-es": "^4.17.21",
55
+ "memfs": "^3.4.12",
56
+ "react-docgen-typescript": "^2.2.2",
57
+ "react-pro-sidebar": "^1.0.0",
40
58
  "reading-time": "^1.5.0",
59
+ "remark": "^14.0.2",
60
+ "remark-directive": "^2.0.1",
61
+ "remark-gfm": "^3.0.1",
41
62
  "remark-mdx": "^2.1.5",
42
63
  "remark-parse": "^10.0.1",
43
64
  "remark-stringify": "^10.0.2",
44
65
  "rxjs": "^7.5.5",
45
66
  "unified": "^10.1.2",
46
67
  "unist-util-visit": "^4.1.1",
47
- "uuid": "^7.0.3"
68
+ "uuid": "^7.0.3",
69
+ "vfile-reporter": "^7.0.5"
48
70
  }
49
71
  }
package/CHANGELOG.md DELETED
@@ -1,79 +0,0 @@
1
- # @jpmorganchase/mosaic-plugins
2
-
3
- ## 0.1.0-beta.7
4
-
5
- ### Minor Changes
6
-
7
- - 46adaec: Initial release of theme and client side search
8
-
9
- We are iterating towards deploying our site code.
10
-
11
- This release includes
12
-
13
- - initial work for client-side search support
14
- - Mosaic theme.
15
-
16
- ### Patch Changes
17
-
18
- - Updated dependencies [46adaec]
19
- - @jpmorganchase/mosaic-serialisers@0.1.0-beta.7
20
- - @jpmorganchase/mosaic-source-git-repo@0.1.0-beta.7
21
- - @jpmorganchase/mosaic-source-local-folder@0.1.0-beta.7
22
- - @jpmorganchase/mosaic-types@0.1.0-beta.7
23
-
24
- ## 0.1.0-beta.6
25
-
26
- ### Patch Changes
27
-
28
- - c103b24: Release fixes for snapshot serve
29
- - Updated dependencies [c103b24]
30
- - @jpmorganchase/mosaic-types@0.1.0-beta.6
31
-
32
- ## 0.1.0-beta.5
33
-
34
- ### Patch Changes
35
-
36
- - 61a246c: This releases add support for generate / build and serve snapshots
37
- - Updated dependencies [61a246c]
38
- - @jpmorganchase/mosaic-types@0.1.0-beta.5
39
-
40
- ## 0.1.0-beta.4
41
-
42
- ### Patch Changes
43
-
44
- - bd285df: added dist to package.json
45
- - Updated dependencies [bd285df]
46
- - @jpmorganchase/mosaic-types@0.1.0-beta.4
47
-
48
- ## 0.1.0-beta.3
49
-
50
- ### Patch Changes
51
-
52
- - 457df5e: switch to public package
53
- - Updated dependencies [457df5e]
54
- - @jpmorganchase/mosaic-types@0.1.0-beta.3
55
-
56
- ## 0.1.0-beta.2
57
-
58
- ### Patch Changes
59
-
60
- - e1bbbe7: Initial release of Mosaic Core file-system.
61
-
62
- Mosaic is a content aggregating service which pulls content from heterogeneous data sources.
63
-
64
- - 4b2bc51: pipped to 0.1.0-beta.1 for publishing to NPM
65
- - Updated dependencies [e1bbbe7]
66
- - Updated dependencies [4b2bc51]
67
- - @jpmorganchase/mosaic-types@0.1.0-beta.2
68
-
69
- ## 0.1.0
70
-
71
- ### Patch Changes
72
-
73
- - e1bbbe7: Initial release of Mosaic Core file-system.
74
-
75
- Mosaic is a content aggregating service which pulls content from heterogeneous data sources.
76
-
77
- - Updated dependencies [e1bbbe7]
78
- - Updated dependencies [bbc853c]
79
- - @jpmorganchase/mosaic-types@0.1.0
@@ -1,48 +0,0 @@
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 __rest = (this && this.__rest) || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
- t[p] = s[p];
15
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
- t[p[i]] = s[p[i]];
19
- }
20
- return t;
21
- };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const path_1 = __importDefault(require("path"));
27
- const fs_1 = __importDefault(require("fs"));
28
- const mdx_1 = __importDefault(require("@jpmorganchase/mosaic-serialisers/dist/mdx"));
29
- const LocalFolderSavePlugin = {
30
- saveContent(filePath, data, sourceOptions, { namespace }) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- const { markdown } = data;
33
- const { rootDir, prefixDir } = sourceOptions;
34
- if (namespace !== 'local') {
35
- // indicate to the Plugin Runner that no save happened
36
- return false;
37
- }
38
- const pathOnDisk = path_1.default.posix.join(rootDir, filePath.replace(new RegExp(`${prefixDir}/`), ''));
39
- const rawPage = yield fs_1.default.promises.readFile(pathOnDisk);
40
- const _a = yield mdx_1.default.deserialise(pathOnDisk, rawPage), { content } = _a, metadata = __rest(_a, ["content"]);
41
- const updatedPage = Object.assign(Object.assign({}, metadata), { content: markdown });
42
- yield fs_1.default.promises.writeFile(pathOnDisk, yield mdx_1.default.serialise(pathOnDisk, updatedPage));
43
- return true;
44
- });
45
- }
46
- };
47
- exports.default = LocalFolderSavePlugin;
48
- //# sourceMappingURL=LocalFolderSavePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LocalFolderSavePlugin.js","sourceRoot":"","sources":["../src/LocalFolderSavePlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAGpB,qFAAuF;AAMvF,MAAM,qBAAqB,GAAe;IAClC,WAAW,CACf,QAAQ,EACR,IAA+B,EAC/B,aAAuC,EACvC,EAAE,SAAS,EAAE;;YAEb,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;YAE7C,IAAI,SAAS,KAAK,OAAO,EAAE;gBACzB,sDAAsD;gBACtD,OAAO,KAAK,CAAC;aACd;YAED,MAAM,UAAU,GAAG,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/F,MAAM,OAAO,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,KAA2B,MAAM,aAAc,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,EAAhF,EAAE,OAAO,OAAuE,EAAlE,QAAQ,cAAtB,WAAwB,CAAwD,CAAC;YACvF,MAAM,WAAW,mCAAQ,QAAQ,KAAE,OAAO,EAAE,QAAQ,GAAE,CAAC;YAEvD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,UAAU,EACV,MAAM,aAAc,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CACxD,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;CACF,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
@@ -1,63 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const lodash_1 = require("lodash");
13
- function createFileGlob(url, pageExtensions) {
14
- if (pageExtensions.length === 1) {
15
- return `${url}${pageExtensions[0]}`;
16
- }
17
- return `${url}{${pageExtensions.join(',')}}`;
18
- }
19
- function createSortFn(pageExtensions, { sortBy: _sortBy, indexFirst }) {
20
- const indexRegExp = indexFirst && new RegExp(`index${pageExtensions.map(lodash_1.escapeRegExp).join('|')}$`);
21
- // TODO: Switch out the algorithm here, based on `sortBy`
22
- return function sortFn(fullPathA, fullPathB) {
23
- // Always pin /index to the front
24
- if (indexFirst && indexRegExp.test(fullPathA)) {
25
- return -1;
26
- }
27
- return fullPathA.localeCompare(fullPathB);
28
- };
29
- }
30
- /**
31
- * Sorts the pages in a folder alphabetically and then embeds a `navigation` property to the metadata with ordered
32
- * next/prev pages
33
- */
34
- const NextPrevPlugin = {
35
- $beforeSend(mutableFilesystem, { config, pageExtensions, ignorePages }, { indexFirst, sortBy }) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const pageDirs = (yield mutableFilesystem.promises.glob('**', {
38
- onlyDirectories: true,
39
- ignore: ignorePages.map(ignore => `**/${ignore}`),
40
- cwd: '/'
41
- }));
42
- for (const dirName of pageDirs) {
43
- const pages = (yield mutableFilesystem.promises.glob(createFileGlob('*', pageExtensions), {
44
- onlyFiles: true,
45
- cwd: dirName,
46
- ignore: ignorePages
47
- })).sort(createSortFn(pageExtensions, { indexFirst, sortBy }));
48
- for (let i = 0; i < pages.length; i++) {
49
- if (i > 0) {
50
- config.setRef(pages[i], ['navigation', 'prev', 'title', '$ref'], `${pages[i - 1]}#/title`);
51
- config.setRef(pages[i], ['navigation', 'prev', 'fullPath', '$ref'], `${pages[i - 1]}#/route`);
52
- }
53
- if (i < pages.length - 1) {
54
- config.setRef(pages[i], ['navigation', 'next', 'title', '$ref'], `${pages[i + 1]}#/title`);
55
- config.setRef(pages[i], ['navigation', 'next', 'fullPath', '$ref'], `${pages[i + 1]}#/route`);
56
- }
57
- }
58
- }
59
- });
60
- }
61
- };
62
- exports.default = NextPrevPlugin;
63
- //# sourceMappingURL=NextPrevPagePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NextPrevPagePlugin.js","sourceRoot":"","sources":["../src/NextPrevPagePlugin.ts"],"names":[],"mappings":"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"}
@@ -1,119 +0,0 @@
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
- import regeneratorRuntime from "regenerator-runtime";
31
- import getReadingTime from "reading-time";
32
- import markdown from "remark-parse";
33
- import { unified } from "unified";
34
- import { visit } from "unist-util-visit";
35
- /**
36
- * Calculates reading time for pages and adds to frontmatter
37
- */ var ReadingTimePlugin = {
38
- $afterSource: function $afterSource(pages) {
39
- return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
40
- var processor, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, page, tree, textContent;
41
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
42
- while(1)switch(_ctx.prev = _ctx.next){
43
- case 0:
44
- processor = unified().use(markdown);
45
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
46
- _ctx.prev = 2;
47
- _iterator = pages[Symbol.iterator]();
48
- case 4:
49
- if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
50
- _ctx.next = 15;
51
- break;
52
- }
53
- page = _step.value;
54
- _ctx.next = 8;
55
- return processor.parse(page.content);
56
- case 8:
57
- tree = _ctx.sent;
58
- textContent = "";
59
- visit(tree, function(node) {
60
- return node.type === "text" || node.type === "code";
61
- }, function(node) {
62
- textContent += node.value;
63
- });
64
- page.readingTime = getReadingTime(textContent);
65
- case 12:
66
- _iteratorNormalCompletion = true;
67
- _ctx.next = 4;
68
- break;
69
- case 15:
70
- _ctx.next = 21;
71
- break;
72
- case 17:
73
- _ctx.prev = 17;
74
- _ctx.t0 = _ctx["catch"](2);
75
- _didIteratorError = true;
76
- _iteratorError = _ctx.t0;
77
- case 21:
78
- _ctx.prev = 21;
79
- _ctx.prev = 22;
80
- if (!_iteratorNormalCompletion && _iterator.return != null) {
81
- _iterator.return();
82
- }
83
- case 24:
84
- _ctx.prev = 24;
85
- if (!_didIteratorError) {
86
- _ctx.next = 27;
87
- break;
88
- }
89
- throw _iteratorError;
90
- case 27:
91
- return _ctx.finish(24);
92
- case 28:
93
- return _ctx.finish(21);
94
- case 29:
95
- return _ctx.abrupt("return", pages);
96
- case 30:
97
- case "end":
98
- return _ctx.stop();
99
- }
100
- }, _callee, null, [
101
- [
102
- 2,
103
- 17,
104
- 21,
105
- 29
106
- ],
107
- [
108
- 22,
109
- ,
110
- 24,
111
- 28
112
- ]
113
- ]);
114
- }))();
115
- }
116
- };
117
- export default ReadingTimePlugin;
118
-
119
- //# sourceMappingURL=ReadingTimePlugin.mjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ReadingTimePlugin.mjs.ts"],"sourcesContent":["import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';\nimport getReadingTime from 'reading-time';\nimport markdown from 'remark-parse';\nimport { unified } from 'unified';\nimport { visit } from 'unist-util-visit';\nimport type { Node } from 'unist';\n\ntype LeafNode = Node & {\n value?: string;\n};\n\ninterface ReadingTimePluginPage extends Page {\n readingTime?: ReturnType<typeof getReadingTime>;\n}\n\n/**\n * Calculates reading time for pages and adds to frontmatter\n */\nconst ReadingTimePlugin: PluginType<ReadingTimePluginPage> = {\n async $afterSource(pages) {\n const processor = unified().use(markdown);\n for (const page of pages) {\n const tree = await processor.parse(page.content);\n let textContent = '';\n\n visit(\n tree,\n node => node.type === 'text' || node.type === 'code',\n (node: LeafNode) => {\n textContent += node.value;\n }\n );\n page.readingTime = getReadingTime(textContent);\n }\n\n return pages;\n }\n};\n\nexport default ReadingTimePlugin;\n"],"names":["getReadingTime","markdown","unified","visit","ReadingTimePlugin","$afterSource","pages","processor","page","tree","textContent","use","parse","content","node","type","value","readingTime"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAOA,cAAc,MAAM,cAAc,CAAC;AAC1C,OAAOC,QAAQ,MAAM,cAAc,CAAC;AACpC,SAASC,OAAO,QAAQ,SAAS,CAAC;AAClC,SAASC,KAAK,QAAQ,kBAAkB,CAAC;AAWzC;;CAEC,GACD,IAAMC,iBAAiB,GAAsC;IACrDC,YAAY,EAAlB,SAAMA,YAAY,CAACC,KAAK;eAAE,wDAAA,mBAAA;gBAClBC,SAAS,EACV,yBAAU,EAAV,iBAAU,EAAV,cAAU,EAAV,SAAU,EAAV,KAAU,EAAJC,IAAI,EACPC,IAAI,EACNC,WAAW;;;;wBAHXH,SAAS,GAAGL,OAAO,EAAE,CAACS,GAAG,CAACV,QAAQ,CAAC,CAAC;wBACrC,yBAAU,SAAV,iBAAU,UAAV,cAAU;;wBAAV,SAAU,GAAIK,KAAK;;4BAAnB,yBAAU,IAAV,KAAU,GAAV,SAAU;;;;wBAAJE,IAAI,GAAV,KAAU,MAAA;;+BACMD,SAAS,CAACK,KAAK,CAACJ,IAAI,CAACK,OAAO,CAAC;;wBAA1CJ,IAAI,YAAsC,CAAA;wBAC5CC,WAAW,GAAG,EAAE,CAAC;wBAErBP,KAAK,CACHM,IAAI,EACJK,SAAAA,IAAI;mCAAIA,IAAI,CAACC,IAAI,KAAK,MAAM,IAAID,IAAI,CAACC,IAAI,KAAK,MAAM;yBAAA,EACpD,SAACD,IAAc,EAAK;4BAClBJ,WAAW,IAAII,IAAI,CAACE,KAAK,CAAC;yBAC3B,CACF,CAAC;wBACFR,IAAI,CAACS,WAAW,GAAGjB,cAAc,CAACU,WAAW,CAAC,CAAC;;wBAX5C,yBAAU;;;;;;;;;wBAAV,iBAAU;wBAAV,cAAU;;;;6BAAV,yBAAU,IAAV,SAAU;4BAAV,SAAU;;;;4BAAV,CAAA,iBAAU;;;;8BAAV,cAAU;;;;;;qDAcRJ,KAAK;;;;;;;;;;;;;;;;;;;SACb,EAAA;KAAA;CACF,AAAC;AAEF,eAAeF,iBAAiB,CAAC"}